Skip to content

Commit 2f28f1d

Browse files
authored
Rename availability labels to Shared for (#1257)
1 parent 0d62e2a commit 2f28f1d

15 files changed

Lines changed: 88 additions & 83 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'owox': minor
3+
---
4+
5+
# Availability labels renamed to "Shared for use / reporting / maintenance"
6+
7+
The availability toggle labels throughout the product have been renamed from "Available for use", "Available for reporting", and "Available for maintenance" to "Shared for use", "Shared for reporting", and "Shared for maintenance". The filter option previously labelled "Not available" is now "Not shared". This change makes the language more consistent and better reflects the collaborative sharing intent behind the toggles.

apps/web/e2e/specs/availability.spec.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ async function ensureSectionExpanded(container: Locator, sectionName: string): P
1515
/**
1616
* Get the two availability switches within a container.
1717
* Returns [primarySwitch, maintenanceSwitch] — the first switch is
18-
* "Available for use" (storage/destination) or "Available for reporting" (data-mart),
19-
* the second is always "Available for maintenance".
18+
* "Shared for use" (storage/destination) or "Shared for reporting" (data-mart),
19+
* the second is always "Shared for maintenance".
2020
*/
2121
function getAvailabilitySwitches(container: Locator | Page): [Locator, Locator] {
2222
const switches = container.getByRole('switch');
@@ -46,8 +46,8 @@ test.describe('Storage Availability', () => {
4646
await ensureSectionExpanded(sheet, 'Availability');
4747

4848
// Both labels should be visible
49-
await expect(sheet.getByText('Available for use', { exact: true })).toBeVisible();
50-
await expect(sheet.getByText('Available for maintenance', { exact: true })).toBeVisible();
49+
await expect(sheet.getByText('Shared for use', { exact: true })).toBeVisible();
50+
await expect(sheet.getByText('Shared for maintenance', { exact: true })).toBeVisible();
5151
});
5252

5353
test('availability defaults to use=ON, maintenance=OFF for new storage (AVL-02)', async ({
@@ -76,7 +76,7 @@ test.describe('Storage Availability', () => {
7676

7777
test('availability set via API is reflected in UI (AVL-03)', async ({ page, apiHelpers }) => {
7878
const storage = await apiHelpers.createStorage('GOOGLE_BIGQUERY');
79-
// Set "Available for maintenance" to OFF via API
79+
// Set "Shared for maintenance" to OFF via API
8080
await apiHelpers.setStorageAvailability(storage.id, true, false);
8181

8282
await page.goto('/ui/0/data-storages');
@@ -92,7 +92,7 @@ test.describe('Storage Availability', () => {
9292
// Expand Availability section
9393
await ensureSectionExpanded(sheet, 'Availability');
9494

95-
// "Available for use" should be ON, "Available for maintenance" should be OFF
95+
// "Shared for use" should be ON, "Shared for maintenance" should be OFF
9696
const [useSwitch, maintenanceSwitch] = getAvailabilitySwitches(sheet);
9797
await expect(useSwitch).toHaveAttribute('data-state', 'checked');
9898
await expect(maintenanceSwitch).toHaveAttribute('data-state', 'unchecked');
@@ -116,16 +116,16 @@ test.describe('Destination Availability', () => {
116116
// Expand Availability section
117117
await ensureSectionExpanded(sheet, 'Availability');
118118

119-
await expect(sheet.getByText('Available for use', { exact: true })).toBeVisible();
120-
await expect(sheet.getByText('Available for maintenance', { exact: true })).toBeVisible();
119+
await expect(sheet.getByText('Shared for use', { exact: true })).toBeVisible();
120+
await expect(sheet.getByText('Shared for maintenance', { exact: true })).toBeVisible();
121121
});
122122

123123
test('destination availability set via API is reflected in UI (AVL-05)', async ({
124124
page,
125125
apiHelpers,
126126
}) => {
127127
const dest = await apiHelpers.createDestination('LOOKER_STUDIO', 'Persist Dest');
128-
// Set "Available for use" to OFF via API
128+
// Set "Shared for use" to OFF via API
129129
await apiHelpers.setDestinationAvailability(dest.id, false, true);
130130

131131
await page.goto('/ui/0/data-destinations');
@@ -139,7 +139,7 @@ test.describe('Destination Availability', () => {
139139
// Expand Availability section
140140
await ensureSectionExpanded(sheet, 'Availability');
141141

142-
// "Available for use" should be OFF, "Available for maintenance" should be ON
142+
// "Shared for use" should be OFF, "Shared for maintenance" should be ON
143143
const [useSwitch, maintenanceSwitch] = getAvailabilitySwitches(sheet);
144144
await expect(useSwitch).toHaveAttribute('data-state', 'unchecked');
145145
await expect(maintenanceSwitch).toHaveAttribute('data-state', 'checked');
@@ -161,8 +161,8 @@ test.describe('DataMart Availability', () => {
161161
await expect(page.getByTestId(TESTIDS.datamartTabOverview)).toBeVisible();
162162

163163
await expect(page.getByText('Availability')).toBeVisible();
164-
await expect(page.getByText('Available for reporting', { exact: true })).toBeVisible();
165-
await expect(page.getByText('Available for maintenance', { exact: true })).toBeVisible();
164+
await expect(page.getByText('Shared for reporting', { exact: true })).toBeVisible();
165+
await expect(page.getByText('Shared for maintenance', { exact: true })).toBeVisible();
166166
});
167167

168168
test('DM availability toggle saves immediately without Save button (AVL-07)', async ({
@@ -176,7 +176,7 @@ test.describe('DataMart Availability', () => {
176176
await page.goto(`/ui/0/data-marts/${dm.id}/overview`);
177177
await expect(page.getByTestId(TESTIDS.datamartTabOverview)).toBeVisible();
178178

179-
// Toggle "Available for reporting" OFF (first switch)
179+
// Toggle "Shared for reporting" OFF (first switch)
180180
const [reportingSwitch] = getAvailabilitySwitches(page);
181181
await reportingSwitch.click();
182182

@@ -192,7 +192,7 @@ test.describe('DataMart Availability', () => {
192192
await page.goto(`/ui/0/data-marts/${dm.id}/overview`);
193193
await expect(page.getByTestId(TESTIDS.datamartTabOverview)).toBeVisible();
194194

195-
// Toggle "Available for maintenance" OFF (second switch)
195+
// Toggle "Shared for maintenance" OFF (second switch)
196196
const [, maintenanceSwitch] = getAvailabilitySwitches(page);
197197
await maintenanceSwitch.click();
198198
await expect(page.getByText('Availability updated')).toBeVisible();
@@ -201,11 +201,11 @@ test.describe('DataMart Availability', () => {
201201
await page.reload();
202202
await expect(page.getByTestId(TESTIDS.datamartTabOverview)).toBeVisible();
203203

204-
// "Available for maintenance" should be OFF after reload
204+
// "Shared for maintenance" should be OFF after reload
205205
const [reportingSwitchAfter, maintenanceSwitchAfter] = getAvailabilitySwitches(page);
206206
await expect(maintenanceSwitchAfter).toHaveAttribute('data-state', 'unchecked');
207207

208-
// "Available for reporting" should still be ON
208+
// "Shared for reporting" should still be ON
209209
await expect(reportingSwitchAfter).toHaveAttribute('data-state', 'checked');
210210
});
211211
});

apps/web/src/features/data-destination/edit/components/DataDestinationEditForm/DataDestinationForm.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ export function DataDestinationForm({
335335
<FormSection title='Availability' defaultOpen={false} name='destination-availability'>
336336
<FormItem>
337337
<div className='flex items-center justify-between gap-4'>
338-
<FormLabel>Available for use</FormLabel>
338+
<FormLabel>Shared for use</FormLabel>
339339
<Switch
340340
checked={sharingState.availableForUse}
341341
onCheckedChange={v => {
@@ -349,7 +349,7 @@ export function DataDestinationForm({
349349
<FormDescription>
350350
<Accordion variant='common' type='single' collapsible>
351351
<AccordionItem value='sharing-use-help'>
352-
<AccordionTrigger>What does "Available for use" mean?</AccordionTrigger>
352+
<AccordionTrigger>What does "Shared for use" mean?</AccordionTrigger>
353353
<AccordionContent>
354354
<p>
355355
When enabled, project members can select this destination when configuring
@@ -362,7 +362,7 @@ export function DataDestinationForm({
362362
</FormItem>
363363
<FormItem>
364364
<div className='flex items-center justify-between gap-4'>
365-
<FormLabel>Available for maintenance</FormLabel>
365+
<FormLabel>Shared for maintenance</FormLabel>
366366
<Switch
367367
checked={sharingState.availableForMaintenance}
368368
onCheckedChange={v => {
@@ -377,9 +377,7 @@ export function DataDestinationForm({
377377
<FormDescription>
378378
<Accordion variant='common' type='single' collapsible>
379379
<AccordionItem value='sharing-maintenance-help'>
380-
<AccordionTrigger>
381-
What does "Available for maintenance" mean?
382-
</AccordionTrigger>
380+
<AccordionTrigger>What does "Shared for maintenance" mean?</AccordionTrigger>
383381
<AccordionContent>
384382
<p>
385383
When enabled, project members can copy credentials from this destination,

apps/web/src/features/data-marts/list/components/DataMartTable/columns/columnLabels.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ export const dataMartColumnLabels: Record<DataMartColumnKey, string> = {
1313
[DataMartColumnKey.BUSINESS_OWNERS]: 'Business Owner',
1414
[DataMartColumnKey.TECHNICAL_OWNERS]: 'Technical Owner',
1515
[DataMartColumnKey.CONTEXTS]: 'Contexts',
16-
[DataMartColumnKey.AVAILABLE_FOR_REPORTING]: 'Available for reporting',
17-
[DataMartColumnKey.AVAILABLE_FOR_MAINTENANCE]: 'Available for maintenance',
16+
[DataMartColumnKey.AVAILABLE_FOR_REPORTING]: 'Shared for reporting',
17+
[DataMartColumnKey.AVAILABLE_FOR_MAINTENANCE]: 'Shared for maintenance',
1818
};

apps/web/src/features/data-marts/list/components/DataMartTable/columns/columns.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ export const getDataMartColumns = ({
296296
),
297297
cell: ({ row }) =>
298298
row.original.availableForReporting === true ? (
299-
<Check className='text-muted-foreground h-4 w-4' aria-label='Available for reporting' />
299+
<Check className='text-muted-foreground h-4 w-4' aria-label='Shared for reporting' />
300300
) : (
301301
<div className='text-muted-foreground'></div>
302302
),
@@ -317,7 +317,7 @@ export const getDataMartColumns = ({
317317
),
318318
cell: ({ row }) =>
319319
row.original.availableForMaintenance === true ? (
320-
<Check className='text-muted-foreground h-4 w-4' aria-label='Available for maintenance' />
320+
<Check className='text-muted-foreground h-4 w-4' aria-label='Shared for maintenance' />
321321
) : (
322322
<div className='text-muted-foreground'></div>
323323
),

apps/web/src/features/data-marts/list/components/DataMartTable/components/DataMartsTableFilters.config.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,10 +274,10 @@ export function buildDataMartsTableFilters(
274274
},
275275
buildAvailabilityFilter<DataMartFilterKey>({
276276
id: AdditionalFilterKeys.AVAILABILITY,
277-
firstLabel: 'Available for reporting',
278-
maintenanceLabel: 'Available for maintenance',
279-
bothLabel: 'Available for reporting and maintenance',
280-
noneLabel: 'Not available',
277+
firstLabel: 'Shared for reporting',
278+
maintenanceLabel: 'Shared for maintenance',
279+
bothLabel: 'Shared for reporting and maintenance',
280+
noneLabel: 'Not shared',
281281
}),
282282
];
283283
}

apps/web/src/features/data-storage/edit/components/DataStorageEditForm/DataStorageForm.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ export function DataStorageForm({
401401
<FormSection title='Availability' defaultOpen={false} name='storage-availability'>
402402
<FormItem>
403403
<div className='flex items-center justify-between gap-4'>
404-
<FormLabel>Available for use</FormLabel>
404+
<FormLabel>Shared for use</FormLabel>
405405
<Switch
406406
checked={sharingState.availableForUse}
407407
onCheckedChange={v => {
@@ -416,7 +416,7 @@ export function DataStorageForm({
416416
<Accordion variant='common' type='single' collapsible>
417417
<AccordionItem value='sharing-use-help'>
418418
<AccordionTrigger>
419-
What does &quot;Available for use&quot; mean?
419+
What does &quot;Shared for use&quot; mean?
420420
</AccordionTrigger>
421421
<AccordionContent>
422422
<p>
@@ -431,7 +431,7 @@ export function DataStorageForm({
431431
</FormItem>
432432
<FormItem>
433433
<div className='flex items-center justify-between gap-4'>
434-
<FormLabel>Available for maintenance</FormLabel>
434+
<FormLabel>Shared for maintenance</FormLabel>
435435
<Switch
436436
checked={sharingState.availableForMaintenance}
437437
onCheckedChange={v => {
@@ -446,7 +446,7 @@ export function DataStorageForm({
446446
<Accordion variant='common' type='single' collapsible>
447447
<AccordionItem value='sharing-maintenance-help'>
448448
<AccordionTrigger>
449-
What does &quot;Available for maintenance&quot; mean?
449+
What does &quot;Shared for maintenance&quot; mean?
450450
</AccordionTrigger>
451451
<AccordionContent>
452452
<p>

apps/web/src/features/project-settings/members/components/MemberDetailsSheet/MemberDetailsSheet.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,11 @@ export function MemberDetailsSheet({
223223
<AccordionContent>
224224
<p className='mb-2'>
225225
<strong>Business User</strong> — sees accessible Data Marts and
226-
Reports, creates Reports for Data Marts available for reporting,
226+
Reports, creates Reports for Data Marts shared for reporting,
227227
manages Reports they own (edit, delete, change owners), manages
228-
Report Triggers under their Reports, and uses Destinations
229-
available for use. Cannot create, edit, or delete Data Marts, Data
230-
Mart Triggers, or Storages.
228+
Report Triggers under their Reports, and uses Destinations shared
229+
for use. Cannot create, edit, or delete Data Marts, Data Mart
230+
Triggers, or Storages.
231231
</p>
232232
<p className='mb-2'>
233233
<strong>Technical User</strong> — everything a Business User may

apps/web/src/features/project-settings/members/components/MemberFormFields/MemberFormFields.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@ export function MemberFormFields({
9898
<AccordionContent>
9999
<p className='mb-2'>
100100
<strong>Business User</strong> — sees accessible Data Marts and Reports,
101-
creates Reports for Data Marts available for reporting, manages Reports they
101+
creates Reports for Data Marts shared for reporting, manages Reports they
102102
own (edit, delete, change owners), manages Report Triggers under their
103-
Reports, and uses Destinations available for use. Cannot create, edit, or
103+
Reports, and uses Destinations shared for use. Cannot create, edit, or
104104
delete Data Marts, Data Mart Triggers, or Storages.
105105
</p>
106106
<p className='mb-2'>

apps/web/src/pages/data-marts/edit/DataMartOverviewContent.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ export default function DataMartOverviewContent() {
276276
htmlFor='available-for-maintenance'
277277
className='text-foreground cursor-pointer text-sm font-medium select-none'
278278
>
279-
Available for maintenance
279+
Shared for maintenance
280280
</label>
281281
</div>
282282
<p className='text-muted-foreground text-xs'>
@@ -285,7 +285,7 @@ export default function DataMartOverviewContent() {
285285
<Accordion variant='common' type='single' collapsible>
286286
<AccordionItem value='maintenance-help'>
287287
<AccordionTrigger>
288-
What does &quot;Available for maintenance&quot; mean?
288+
What does &quot;Shared for maintenance&quot; mean?
289289
</AccordionTrigger>
290290
<AccordionContent>
291291
<p>
@@ -311,7 +311,7 @@ export default function DataMartOverviewContent() {
311311
htmlFor='available-for-reporting'
312312
className='text-foreground cursor-pointer text-sm font-medium select-none'
313313
>
314-
Available for reporting
314+
Shared for reporting
315315
</label>
316316
</div>
317317
<p className='text-muted-foreground text-xs'>
@@ -320,7 +320,7 @@ export default function DataMartOverviewContent() {
320320
<Accordion variant='common' type='single' collapsible>
321321
<AccordionItem value='reporting-help'>
322322
<AccordionTrigger>
323-
What does &quot;Available for reporting&quot; mean?
323+
What does &quot;Shared for reporting&quot; mean?
324324
</AccordionTrigger>
325325
<AccordionContent>
326326
<p>

0 commit comments

Comments
 (0)