bitboss-ui 3.0.0-beta.21 → 3.0.0-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -3
- package/bin/bitboss-ui-mcp.mjs +419 -9
- package/bin/bitboss-ui.mjs +293 -22
- package/dist/ai/BbAccordion.md +21 -23
- package/dist/ai/BbAlert.md +6 -12
- package/dist/ai/BbAvatar.md +60 -24
- package/dist/ai/BbBadge.md +12 -20
- package/dist/ai/BbBaseButton.md +14 -16
- package/dist/ai/BbBaseCheckboxIcon.md +6 -10
- package/dist/ai/BbBaseRadioIcon.md +6 -10
- package/dist/ai/BbBaseSwitchIcon.md +5 -9
- package/dist/ai/BbBreadcrumbs.md +23 -34
- package/dist/ai/BbButton.md +35 -47
- package/dist/ai/BbCheckbox.md +21 -37
- package/dist/ai/BbCheckboxGroup.md +13 -13
- package/dist/ai/BbCollapsible.md +14 -26
- package/dist/ai/BbColorInput.md +13 -23
- package/dist/ai/BbColorPalette.md +23 -35
- package/dist/ai/BbConfirm.md +17 -32
- package/dist/ai/BbDatePickerInput.md +15 -21
- package/dist/ai/BbDialog.md +159 -62
- package/dist/ai/BbDropdown.md +21 -25
- package/dist/ai/BbDropdownButton.md +13 -30
- package/dist/ai/BbDropzone.md +9 -11
- package/dist/ai/BbIcon.md +44 -33
- package/dist/ai/BbIndicator.md +2 -2
- package/dist/ai/BbNumberInput.md +18 -20
- package/dist/ai/BbOffCanvas.md +42 -42
- package/dist/ai/BbPagination.md +21 -23
- package/dist/ai/BbPopover.md +15 -17
- package/dist/ai/BbProgress.md +40 -51
- package/dist/ai/BbRadio.md +9 -9
- package/dist/ai/BbRadioGroup.md +7 -11
- package/dist/ai/BbRating.md +8 -12
- package/dist/ai/BbSelect.md +32 -36
- package/dist/ai/BbSelectPopover.md +19 -31
- package/dist/ai/BbSlider.md +15 -19
- package/dist/ai/BbSmoothHeight.md +16 -31
- package/dist/ai/BbSpinner.md +118 -74
- package/dist/ai/BbSwitch.md +25 -18
- package/dist/ai/BbSwitchGroup.md +9 -14
- package/dist/ai/BbTable.md +102 -55
- package/dist/ai/BbTabs.md +59 -82
- package/dist/ai/BbTag.md +12 -23
- package/dist/ai/BbTextInput.md +20 -26
- package/dist/ai/BbTextarea.md +28 -34
- package/dist/ai/BbToast.md +14 -34
- package/dist/ai/BbTooltip.md +22 -20
- package/dist/ai/BbTree.md +46 -72
- package/dist/ai/changelog.json +169 -62
- package/dist/ai/components.json +1467 -9
- package/dist/ai/composables/useConfirm.md +5 -2
- package/dist/ai/composables/useToast.md +4 -2
- package/dist/ai/guides/agent-contract.md +7 -4
- package/dist/ai/guides/ai-router.md +37 -22
- package/dist/ai/guides/component-picker.md +23 -18
- package/dist/ai/guides/design-language.md +141 -13
- package/dist/ai/guides/design-tokens.md +29 -4
- package/dist/ai/guides/icons-policy.md +46 -21
- package/dist/ai/guides/installation-and-plugin-setup.md +253 -17
- package/dist/ai/guides/migration/components/bb-rating.md +26 -1
- package/dist/ai/guides/migration/components/bb-tooltip.md +18 -0
- package/dist/ai/guides/migration/v2-to-v3.md +50 -23
- package/dist/ai/index.md +1 -1
- package/dist/ai/recipes/inertia/approvals-inbox.md +3 -3
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/inertia/onboarding.md +2 -2
- package/dist/ai/recipes/inertia/ownership-atlas.md +6 -6
- package/dist/ai/recipes/inertia/record-form.md +5 -5
- package/dist/ai/recipes/inertia/records-workspace.md +4 -4
- package/dist/ai/recipes/inertia/upload-center.md +6 -6
- package/dist/ai/recipes/inertia/wizard-form.md +5 -5
- package/dist/ai/recipes/nuxt/approvals-inbox.md +3 -3
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/nuxt/onboarding.md +2 -2
- package/dist/ai/recipes/nuxt/record-form.md +5 -5
- package/dist/ai/recipes/nuxt/records-workspace.md +4 -4
- package/dist/ai/recipes/nuxt/upload-center.md +6 -6
- package/dist/ai/recipes/nuxt/wizard-form.md +5 -5
- package/dist/ai/recipes/vue/approvals-inbox.md +3 -3
- package/dist/ai/recipes/vue/inline-edit-workspace.md +2 -2
- package/dist/ai/recipes/vue/onboarding.md +2 -2
- package/dist/ai/recipes/vue/record-form.md +10 -10
- package/dist/ai/recipes/vue/records-workspace.md +4 -4
- package/dist/ai/recipes/vue/upload-center.md +6 -6
- package/dist/ai/recipes/vue/wizard-form.md +5 -5
- package/dist/ai/source/BbBadge.md +1 -1
- package/dist/ai/source/BbBaseCheckbox.md +1 -1
- package/dist/ai/source/BbBaseDatePicker.md +5 -5
- package/dist/ai/source/BbBaseDatePickerInput.md +2 -2
- package/dist/ai/source/BbBaseRadio.md +1 -1
- package/dist/ai/source/BbBaseRating.md +5 -5
- package/dist/ai/source/BbBaseSelect.md +1 -1
- package/dist/ai/source/BbBaseSlider.md +5 -5
- package/dist/ai/source/BbBaseSwitch.md +1 -1
- package/dist/ai/source/BbBaseTimePickerInput.md +1 -1
- package/dist/ai/source/BbBreadcrumbs.md +20 -1
- package/dist/ai/source/BbButton.md +2 -2
- package/dist/ai/source/BbDialog.md +39 -8
- package/dist/ai/source/BbDropdown.md +1 -1
- package/dist/ai/source/BbDropzone.md +5 -5
- package/dist/ai/source/BbIcon.md +23 -10
- package/dist/ai/source/BbOffCanvas.md +50 -28
- package/dist/ai/source/BbPagination.md +2 -2
- package/dist/ai/source/BbPopover.md +12 -1
- package/dist/ai/source/BbSelectPopover.md +45 -7
- package/dist/ai/source/BbSpinner.md +2 -2
- package/dist/ai/source/BbTable.md +11 -11
- package/dist/ai/source/BbTooltip.md +57 -10
- package/dist/ai/source/ChipsBox.md +1 -1
- package/dist/ai/source/CommaBox.md +1 -1
- package/dist/ai/source/GuidesComponent.md +14 -7
- package/dist/ai/source/OptionsContainer.md +1 -1
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +1 -1
- package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +71 -71
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +102 -97
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +58 -58
- package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +33 -35
- package/dist/components/BbIcon/iconCache.d.ts +30 -0
- package/dist/components/BbIcon/iconCache.js +21 -3
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +57 -56
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +138 -138
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +43 -43
- package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbSpinner/types.d.ts +1 -1
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/BbTable/BbTableDataRow.js +2 -2
- package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +62 -62
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +81 -78
- package/dist/components/BbTooltip/types.d.ts +8 -1
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/composables/useConfirm.d.ts +22 -0
- package/dist/composables/useConfirm.js +43 -40
- package/dist/composables/useSafeAreaInternal.js +1 -1
- package/dist/composables/useToast.d.ts +16 -0
- package/dist/composables/useToast.js +20 -16
- package/dist/composables/useViewportWidth.d.ts +20 -6
- package/dist/composables/useViewportWidth.js +8 -7
- package/dist/icon-scan.d.ts +276 -0
- package/dist/icon-scan.js +485 -0
- package/dist/icons-whitelist.d.ts +5 -4
- package/dist/llms-full.txt +1979 -1527
- package/dist/llms-medium.txt +461 -74
- package/dist/llms.txt +1 -1
- package/dist/nuxt.js +10 -7
- package/dist/plugin.js +1 -0
- package/dist/runtime/nuxt-plugin.js +2 -1
- package/dist/styles.css +1 -1
- package/dist/types/Config.d.ts +18 -0
- package/dist/utils/cssLayers.d.ts +91 -0
- package/dist/utils/cssLayers.js +43 -0
- package/dist/utils/injectLibraryStyles.d.ts +3 -1
- package/dist/utils/injectLibraryStyles.js +24 -23
- package/dist/vite-plugin.d.ts +74 -11
- package/dist/vite.js +292 -253
- package/llms.txt +1 -1
- package/package.json +7 -5
- package/scripts/lib/ensure-manifest.mjs +28 -5
- package/scripts/lib/eslint-plugin.d.ts +35 -0
- package/scripts/lib/eslint-plugin.mjs +299 -3
- package/scripts/lib/hand-roll-hints.mjs +50 -6
- package/scripts/lib/html-attributes.mjs +42 -0
- package/scripts/lib/mcp-config.mjs +38 -34
- package/scripts/lib/public-type-exports.mjs +246 -0
- package/scripts/lib/validate-bb-markup.mjs +205 -12
package/dist/ai/BbSelect.md
CHANGED
|
@@ -43,12 +43,12 @@ object.
|
|
|
43
43
|
|
|
44
44
|
```vue
|
|
45
45
|
<template>
|
|
46
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
46
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
47
47
|
<div class="flex items-baseline justify-between gap-2">
|
|
48
48
|
<h3 class="text-sm font-medium">ISSUE-1842</h3>
|
|
49
|
-
<span class="text-xs text-
|
|
49
|
+
<span class="text-xs text-(--bb-text-muted)">In progress</span>
|
|
50
50
|
</div>
|
|
51
|
-
<p class="text-xs text-
|
|
51
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
52
52
|
Wire invoice PDF export for the Milan office.
|
|
53
53
|
</p>
|
|
54
54
|
<BbSelect
|
|
@@ -198,10 +198,10 @@ model to `[]` (or `null` in single mode).
|
|
|
198
198
|
|
|
199
199
|
```vue
|
|
200
200
|
<template>
|
|
201
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
201
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
202
202
|
<div>
|
|
203
203
|
<h3 class="text-sm font-medium">Warehouse coverage</h3>
|
|
204
|
-
<p class="text-xs text-
|
|
204
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
205
205
|
Cap at 3 hubs for the pilot route.
|
|
206
206
|
</p>
|
|
207
207
|
</div>
|
|
@@ -241,12 +241,10 @@ const cities = ref<string[]>(['ber', 'mil']);
|
|
|
241
241
|
|
|
242
242
|
```vue
|
|
243
243
|
<template>
|
|
244
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
244
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
245
245
|
<div>
|
|
246
246
|
<h3 class="text-sm font-medium">Email digests</h3>
|
|
247
|
-
<p class="text-xs text-
|
|
248
|
-
Who gets the Monday summary?
|
|
249
|
-
</p>
|
|
247
|
+
<p class="text-xs text-(--bb-text-muted)">Who gets the Monday summary?</p>
|
|
250
248
|
</div>
|
|
251
249
|
<BbSelect
|
|
252
250
|
v-model="recipients"
|
|
@@ -293,10 +291,10 @@ v-model is yours:
|
|
|
293
291
|
|
|
294
292
|
```vue
|
|
295
293
|
<template>
|
|
296
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
294
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
297
295
|
<div>
|
|
298
296
|
<h3 class="text-sm font-medium">Incident alerts</h3>
|
|
299
|
-
<p class="text-xs text-
|
|
297
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
300
298
|
Where should paging go when severity is high?
|
|
301
299
|
</p>
|
|
302
300
|
</div>
|
|
@@ -352,10 +350,10 @@ is yours:
|
|
|
352
350
|
|
|
353
351
|
```vue
|
|
354
352
|
<template>
|
|
355
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
353
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
356
354
|
<div>
|
|
357
355
|
<h3 class="text-sm font-medium">Lisbon half-day</h3>
|
|
358
|
-
<p class="text-xs text-
|
|
356
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
359
357
|
Build a route under about four hours.
|
|
360
358
|
</p>
|
|
361
359
|
</div>
|
|
@@ -372,7 +370,7 @@ is yours:
|
|
|
372
370
|
>
|
|
373
371
|
<template #header="{ clear }">
|
|
374
372
|
<div
|
|
375
|
-
class="flex w-full items-center justify-between gap-2 px-1 text-xs text-
|
|
373
|
+
class="flex w-full items-center justify-between gap-2 px-1 text-xs text-(--bb-text-muted)"
|
|
376
374
|
>
|
|
377
375
|
<span>{{ summary }}</span>
|
|
378
376
|
<BbButton
|
|
@@ -449,10 +447,10 @@ on your setup:
|
|
|
449
447
|
|
|
450
448
|
```vue
|
|
451
449
|
<template>
|
|
452
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
450
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
453
451
|
<div>
|
|
454
452
|
<h3 class="text-sm font-medium">Shipping destination</h3>
|
|
455
|
-
<p class="text-xs text-
|
|
453
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
456
454
|
Search by city or country name.
|
|
457
455
|
</p>
|
|
458
456
|
</div>
|
|
@@ -507,10 +505,10 @@ short version:
|
|
|
507
505
|
|
|
508
506
|
```vue
|
|
509
507
|
<template>
|
|
510
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
508
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
511
509
|
<div>
|
|
512
510
|
<h3 class="text-sm font-medium">Pull request reviewers</h3>
|
|
513
|
-
<p class="text-xs text-
|
|
511
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
514
512
|
Search the directory; picks stay pinned.
|
|
515
513
|
</p>
|
|
516
514
|
</div>
|
|
@@ -665,10 +663,10 @@ options to look, so you have to say so:
|
|
|
665
663
|
|
|
666
664
|
```vue
|
|
667
665
|
<template>
|
|
668
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
666
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
669
667
|
<div>
|
|
670
668
|
<h3 class="text-sm font-medium">Invoice filters</h3>
|
|
671
|
-
<p class="text-xs text-
|
|
669
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
672
670
|
Office location, or every office.
|
|
673
671
|
</p>
|
|
674
672
|
</div>
|
|
@@ -682,7 +680,7 @@ options to look, so you have to say so:
|
|
|
682
680
|
placeholder="Select location…"
|
|
683
681
|
prefill
|
|
684
682
|
/>
|
|
685
|
-
<p class="text-xs text-
|
|
683
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
686
684
|
Filtering by:
|
|
687
685
|
<strong>{{ location === null ? 'All locations' : location }}</strong>
|
|
688
686
|
</p>
|
|
@@ -776,10 +774,10 @@ cleaned up automatically. Details in the Coherence playbook.
|
|
|
776
774
|
|
|
777
775
|
```vue
|
|
778
776
|
<template>
|
|
779
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
777
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
780
778
|
<div>
|
|
781
779
|
<h3 class="text-sm font-medium">Shipping address</h3>
|
|
782
|
-
<p class="text-xs text-
|
|
780
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
783
781
|
City options follow the chosen region.
|
|
784
782
|
</p>
|
|
785
783
|
</div>
|
|
@@ -864,10 +862,10 @@ no watcher, no manual reset:
|
|
|
864
862
|
|
|
865
863
|
```vue
|
|
866
864
|
<template>
|
|
867
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
865
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
868
866
|
<div>
|
|
869
867
|
<h3 class="text-sm font-medium">Review request</h3>
|
|
870
|
-
<p class="text-xs text-
|
|
868
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
871
869
|
Reviewers must belong to the selected project.
|
|
872
870
|
</p>
|
|
873
871
|
</div>
|
|
@@ -953,10 +951,10 @@ This is the idiomatic pattern for closed-but-growable vocabularies.
|
|
|
953
951
|
|
|
954
952
|
```vue
|
|
955
953
|
<template>
|
|
956
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
954
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
957
955
|
<div>
|
|
958
956
|
<h3 class="text-sm font-medium">Issue labels</h3>
|
|
959
|
-
<p class="text-xs text-
|
|
957
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
960
958
|
Add from the list, or invent one with Enter.
|
|
961
959
|
</p>
|
|
962
960
|
</div>
|
|
@@ -1024,12 +1022,10 @@ lists window per row) or pre-chunk the data into smaller groups.
|
|
|
1024
1022
|
|
|
1025
1023
|
```vue
|
|
1026
1024
|
<template>
|
|
1027
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
1025
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
1028
1026
|
<div>
|
|
1029
1027
|
<h3 class="text-sm font-medium">Invite teammate</h3>
|
|
1030
|
-
<p class="text-xs text-
|
|
1031
|
-
Roles grouped by department.
|
|
1032
|
-
</p>
|
|
1028
|
+
<p class="text-xs text-(--bb-text-muted)">Roles grouped by department.</p>
|
|
1033
1029
|
</div>
|
|
1034
1030
|
<BbSelect
|
|
1035
1031
|
v-model="role"
|
|
@@ -1044,7 +1040,7 @@ lists window per row) or pre-chunk the data into smaller groups.
|
|
|
1044
1040
|
>
|
|
1045
1041
|
<template #group="{ text, length }">
|
|
1046
1042
|
<div
|
|
1047
|
-
class="flex items-center justify-between px-2 text-xs font-semibold text-
|
|
1043
|
+
class="flex items-center justify-between px-2 text-xs font-semibold text-(--bb-text-muted)"
|
|
1048
1044
|
>
|
|
1049
1045
|
<span>{{ text }}</span>
|
|
1050
1046
|
<span>{{ length }}</span>
|
|
@@ -1092,10 +1088,10 @@ compact control, so it keeps the compact rows on every device — turning
|
|
|
1092
1088
|
|
|
1093
1089
|
```vue
|
|
1094
1090
|
<template>
|
|
1095
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
1091
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
1096
1092
|
<div class="flex items-baseline justify-between gap-2">
|
|
1097
1093
|
<h3 class="text-sm font-medium">Code review</h3>
|
|
1098
|
-
<span class="text-xs text-
|
|
1094
|
+
<span class="text-xs text-(--bb-text-muted)">PR #842</span>
|
|
1099
1095
|
</div>
|
|
1100
1096
|
<BbSelect
|
|
1101
1097
|
v-model="assignee"
|
|
@@ -1110,7 +1106,7 @@ compact control, so it keeps the compact rows on every device — turning
|
|
|
1110
1106
|
<span class="flex w-full items-center gap-2">
|
|
1111
1107
|
<BbAvatar :alt="text" size="32">{{ item.initials }}</BbAvatar>
|
|
1112
1108
|
<span class="min-w-0 flex-1 truncate">{{ text }}</span>
|
|
1113
|
-
<span class="shrink-0 text-xs text-
|
|
1109
|
+
<span class="shrink-0 text-xs text-(--bb-text-muted)">{{
|
|
1114
1110
|
item.role
|
|
1115
1111
|
}}</span>
|
|
1116
1112
|
</span>
|
|
@@ -1175,7 +1171,7 @@ once the chips outgrow the field — keep chips compact, or raise
|
|
|
1175
1171
|
|
|
1176
1172
|
```vue
|
|
1177
1173
|
<template>
|
|
1178
|
-
<div class="grid max-w-sm gap-3 rounded-
|
|
1174
|
+
<div class="grid max-w-sm gap-3 rounded-(--bb-radius) border p-3">
|
|
1179
1175
|
<BbSelect
|
|
1180
1176
|
v-model="tags"
|
|
1181
1177
|
clearable
|
|
@@ -94,9 +94,9 @@ code, and it does not change meaning the day the array becomes a provider.)
|
|
|
94
94
|
```vue
|
|
95
95
|
<template>
|
|
96
96
|
<div
|
|
97
|
-
class="flex max-w-sm items-center gap-1.5 rounded-
|
|
97
|
+
class="flex max-w-sm items-center gap-1.5 rounded-(--bb-radius) border p-2"
|
|
98
98
|
>
|
|
99
|
-
<span class="pr-1 text-xs font-medium text-
|
|
99
|
+
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)"
|
|
100
100
|
>Assignee</span
|
|
101
101
|
>
|
|
102
102
|
<BbSelectPopover
|
|
@@ -164,11 +164,9 @@ summarise the selection — a count, a chip cluster, an avatar stack — from
|
|
|
164
164
|
```vue
|
|
165
165
|
<template>
|
|
166
166
|
<div
|
|
167
|
-
class="flex max-w-sm items-center gap-1.5 rounded-
|
|
167
|
+
class="flex max-w-sm items-center gap-1.5 rounded-(--bb-radius) border p-2"
|
|
168
168
|
>
|
|
169
|
-
<span class="pr-1 text-xs font-medium text-
|
|
170
|
-
>Filters</span
|
|
171
|
-
>
|
|
169
|
+
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)">Filters</span>
|
|
172
170
|
<BbSelectPopover
|
|
173
171
|
v-model="reviewers"
|
|
174
172
|
compact
|
|
@@ -234,11 +232,9 @@ height wins everywhere.
|
|
|
234
232
|
```vue
|
|
235
233
|
<template>
|
|
236
234
|
<div
|
|
237
|
-
class="flex max-w-sm items-center gap-1.5 rounded-
|
|
235
|
+
class="flex max-w-sm items-center gap-1.5 rounded-(--bb-radius) border p-2"
|
|
238
236
|
>
|
|
239
|
-
<span class="pr-1 text-xs font-medium text-
|
|
240
|
-
>Owner</span
|
|
241
|
-
>
|
|
237
|
+
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)">Owner</span>
|
|
242
238
|
<BbSelectPopover
|
|
243
239
|
v-model="owner"
|
|
244
240
|
compact
|
|
@@ -318,11 +314,9 @@ resolvable even when later responses omit them.
|
|
|
318
314
|
```vue
|
|
319
315
|
<template>
|
|
320
316
|
<div
|
|
321
|
-
class="flex max-w-sm items-center gap-1.5 rounded-
|
|
317
|
+
class="flex max-w-sm items-center gap-1.5 rounded-(--bb-radius) border p-2"
|
|
322
318
|
>
|
|
323
|
-
<span class="pr-1 text-xs font-medium text-
|
|
324
|
-
>Trip</span
|
|
325
|
-
>
|
|
319
|
+
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)">Trip</span>
|
|
326
320
|
<BbSelectPopover
|
|
327
321
|
v-model="destination"
|
|
328
322
|
compact
|
|
@@ -492,11 +486,9 @@ every row its own model.
|
|
|
492
486
|
```vue
|
|
493
487
|
<template>
|
|
494
488
|
<div
|
|
495
|
-
class="flex max-w-md flex-wrap items-center gap-1.5 rounded-
|
|
489
|
+
class="flex max-w-md flex-wrap items-center gap-1.5 rounded-(--bb-radius) border p-2"
|
|
496
490
|
>
|
|
497
|
-
<span class="pr-1 text-xs font-medium text-
|
|
498
|
-
>Filters</span
|
|
499
|
-
>
|
|
491
|
+
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)">Filters</span>
|
|
500
492
|
<BbSelectPopover
|
|
501
493
|
v-model="project"
|
|
502
494
|
compact
|
|
@@ -638,7 +630,7 @@ row, including the hundreds nobody ever opens.
|
|
|
638
630
|
<template>
|
|
639
631
|
<div class="flex max-w-xl flex-col gap-1.5">
|
|
640
632
|
<div
|
|
641
|
-
class="overflow-hidden rounded-
|
|
633
|
+
class="overflow-hidden rounded-(--bb-radius) border border-(--bb-border)"
|
|
642
634
|
>
|
|
643
635
|
<BbTable
|
|
644
636
|
caption="Tickets — edit statuses, then Save the batch"
|
|
@@ -694,7 +686,7 @@ row, including the hundreds nobody ever opens.
|
|
|
694
686
|
<BbButton :disabled="!dirtyCount" size="sm" @click="save">
|
|
695
687
|
Save{{ dirtyCount ? ` (${dirtyCount})` : '' }}
|
|
696
688
|
</BbButton>
|
|
697
|
-
<span class="text-xs text-
|
|
689
|
+
<span class="text-xs text-(--bb-text-muted)">
|
|
698
690
|
Edits live in a draft map keyed by row id — the map is the save payload.
|
|
699
691
|
Rows are never mutated, so nothing is lost on a refetch.
|
|
700
692
|
</span>
|
|
@@ -909,11 +901,9 @@ option. Identical to `BbSelect`, anchored to your trigger.
|
|
|
909
901
|
```vue
|
|
910
902
|
<template>
|
|
911
903
|
<div
|
|
912
|
-
class="flex max-w-sm items-center gap-1.5 rounded-
|
|
904
|
+
class="flex max-w-sm items-center gap-1.5 rounded-(--bb-radius) border p-2"
|
|
913
905
|
>
|
|
914
|
-
<span class="pr-1 text-xs font-medium text-
|
|
915
|
-
>Role</span
|
|
916
|
-
>
|
|
906
|
+
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)">Role</span>
|
|
917
907
|
<BbSelectPopover
|
|
918
908
|
v-model="role"
|
|
919
909
|
compact
|
|
@@ -937,7 +927,7 @@ option. Identical to `BbSelect`, anchored to your trigger.
|
|
|
937
927
|
</template>
|
|
938
928
|
<template #group="{ text, length }">
|
|
939
929
|
<div
|
|
940
|
-
class="flex items-center justify-between px-2 text-xs font-medium text-
|
|
930
|
+
class="flex items-center justify-between px-2 text-xs font-medium text-(--bb-text-muted)"
|
|
941
931
|
>
|
|
942
932
|
<span>{{ text }}</span>
|
|
943
933
|
<span>{{ length }}</span>
|
|
@@ -980,9 +970,9 @@ their string equivalents `loading-text` / `no-data-text`.
|
|
|
980
970
|
```vue
|
|
981
971
|
<template>
|
|
982
972
|
<div
|
|
983
|
-
class="flex max-w-sm items-center gap-1.5 rounded-
|
|
973
|
+
class="flex max-w-sm items-center gap-1.5 rounded-(--bb-radius) border p-2"
|
|
984
974
|
>
|
|
985
|
-
<span class="pr-1 text-xs font-medium text-
|
|
975
|
+
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)"
|
|
986
976
|
>Destination</span
|
|
987
977
|
>
|
|
988
978
|
<BbSelectPopover
|
|
@@ -1058,11 +1048,9 @@ when the option list is short enough to just scroll.
|
|
|
1058
1048
|
```vue
|
|
1059
1049
|
<template>
|
|
1060
1050
|
<div
|
|
1061
|
-
class="flex max-w-sm items-center gap-1.5 rounded-
|
|
1051
|
+
class="flex max-w-sm items-center gap-1.5 rounded-(--bb-radius) border p-2"
|
|
1062
1052
|
>
|
|
1063
|
-
<span class="pr-1 text-xs font-medium text-
|
|
1064
|
-
>Status</span
|
|
1065
|
-
>
|
|
1053
|
+
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)">Status</span>
|
|
1066
1054
|
<BbSelectPopover
|
|
1067
1055
|
v-model="status"
|
|
1068
1056
|
compact
|
package/dist/ai/BbSlider.md
CHANGED
|
@@ -35,7 +35,7 @@ so the current number is legible.
|
|
|
35
35
|
```vue
|
|
36
36
|
<div class="w-full max-w-sm">
|
|
37
37
|
<BbSlider v-model="state.volume" label="Volume" :min="0" :max="100" :step="5" />
|
|
38
|
-
<p class="text-sm text-
|
|
38
|
+
<p class="text-sm text-(--bb-text-muted)">{{ state.volume ?? 0 }}%</p>
|
|
39
39
|
</div>
|
|
40
40
|
```
|
|
41
41
|
|
|
@@ -57,12 +57,12 @@ have to reason about which handle is which.
|
|
|
57
57
|
```vue
|
|
58
58
|
<template>
|
|
59
59
|
<div
|
|
60
|
-
class="flex w-full max-w-sm flex-col gap-2 rounded-
|
|
60
|
+
class="flex w-full max-w-sm flex-col gap-2 rounded-(--bb-radius) border p-4"
|
|
61
61
|
>
|
|
62
62
|
<div class="flex items-baseline justify-between gap-2">
|
|
63
63
|
<p class="text-sm font-medium">Price</p>
|
|
64
64
|
<p
|
|
65
|
-
class="text-xs
|
|
65
|
+
class="text-xs text-(--bb-text-muted) tabular-nums"
|
|
66
66
|
data-testid="range"
|
|
67
67
|
>
|
|
68
68
|
€{{ price[0] }} – €{{ price[1] }}
|
|
@@ -77,9 +77,7 @@ have to reason about which handle is which.
|
|
|
77
77
|
range
|
|
78
78
|
:step="50"
|
|
79
79
|
/>
|
|
80
|
-
<p class="text-xs text-
|
|
81
|
-
324 stays in this range
|
|
82
|
-
</p>
|
|
80
|
+
<p class="text-xs text-(--bb-text-muted)">324 stays in this range</p>
|
|
83
81
|
</div>
|
|
84
82
|
</template>
|
|
85
83
|
<script setup lang="ts">
|
|
@@ -111,7 +109,7 @@ match the step's resolution (e.g. `:step="0.001"` needs
|
|
|
111
109
|
```vue
|
|
112
110
|
<div class="w-full max-w-sm">
|
|
113
111
|
<BbSlider v-model="state.opacity" label="Layer opacity" :min="0" :max="1" :step="0.05" />
|
|
114
|
-
<p class="text-sm text-
|
|
112
|
+
<p class="text-sm text-(--bb-text-muted)">{{ (state.opacity ?? 0).toFixed(2) }}</p>
|
|
115
113
|
</div>
|
|
116
114
|
```
|
|
117
115
|
|
|
@@ -128,17 +126,15 @@ mode (they early-return), so don't build a stepper around a range slider.
|
|
|
128
126
|
```vue
|
|
129
127
|
<template>
|
|
130
128
|
<div
|
|
131
|
-
class="flex w-full max-w-sm flex-col gap-3 rounded-
|
|
129
|
+
class="flex w-full max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-4"
|
|
132
130
|
>
|
|
133
131
|
<div class="flex items-baseline justify-between gap-2">
|
|
134
132
|
<div>
|
|
135
133
|
<p class="text-sm font-medium">Playback volume</p>
|
|
136
|
-
<p class="text-xs text-
|
|
137
|
-
Speaker · MacBook Pro
|
|
138
|
-
</p>
|
|
134
|
+
<p class="text-xs text-(--bb-text-muted)">Speaker · MacBook Pro</p>
|
|
139
135
|
</div>
|
|
140
136
|
<p
|
|
141
|
-
class="text-xs
|
|
137
|
+
class="text-xs text-(--bb-text-muted) tabular-nums"
|
|
142
138
|
data-testid="value"
|
|
143
139
|
>
|
|
144
140
|
{{ volume }}%
|
|
@@ -239,7 +235,7 @@ it. (Use `thumb:lower` / `thumb:higher` to target one handle of a range.)
|
|
|
239
235
|
<BbSlider v-model="zoom" label="Zoom" :max="200" :min="0" :step="10">
|
|
240
236
|
<template #thumb="{ value, focused }">
|
|
241
237
|
<span
|
|
242
|
-
class="absolute -top-7 left-1/2 -translate-x-1/2 rounded-
|
|
238
|
+
class="absolute -top-7 left-1/2 -translate-x-1/2 rounded-(--bb-radius-sm) bg-(--bb-primary) px-1.5 py-0.5 text-xs text-(--bb-primary-fg) transition-opacity"
|
|
243
239
|
:class="focused ? 'opacity-100' : 'opacity-0'"
|
|
244
240
|
>{{ value ?? 0 }}%</span
|
|
245
241
|
>
|
|
@@ -267,12 +263,12 @@ slider clamps and snaps whatever the field emits.
|
|
|
267
263
|
```vue
|
|
268
264
|
<template>
|
|
269
265
|
<div
|
|
270
|
-
class="flex w-full max-w-sm flex-col gap-3 rounded-
|
|
266
|
+
class="flex w-full max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-4"
|
|
271
267
|
>
|
|
272
268
|
<div class="flex items-baseline justify-between gap-2">
|
|
273
269
|
<div>
|
|
274
270
|
<p class="text-sm font-medium">Monthly spend limit</p>
|
|
275
|
-
<p class="text-xs text-
|
|
271
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
276
272
|
API usage pauses once the cap is reached.
|
|
277
273
|
</p>
|
|
278
274
|
</div>
|
|
@@ -350,11 +346,11 @@ is a screen-level decision, not a per-control one.
|
|
|
350
346
|
```vue
|
|
351
347
|
<template>
|
|
352
348
|
<div
|
|
353
|
-
class="flex w-full max-w-sm flex-col gap-3 rounded-
|
|
349
|
+
class="flex w-full max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-4"
|
|
354
350
|
>
|
|
355
351
|
<div>
|
|
356
352
|
<p class="text-sm font-medium">Display</p>
|
|
357
|
-
<p class="text-xs text-
|
|
353
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
358
354
|
Applies to this display only.
|
|
359
355
|
</p>
|
|
360
356
|
</div>
|
|
@@ -368,7 +364,7 @@ is a screen-level decision, not a per-control one.
|
|
|
368
364
|
:step="5"
|
|
369
365
|
/>
|
|
370
366
|
<p
|
|
371
|
-
class="text-xs
|
|
367
|
+
class="text-xs text-(--bb-text-muted) tabular-nums"
|
|
372
368
|
data-testid="brightness"
|
|
373
369
|
>
|
|
374
370
|
{{ brightness }}%
|
|
@@ -384,7 +380,7 @@ is a screen-level decision, not a per-control one.
|
|
|
384
380
|
:step="5"
|
|
385
381
|
/>
|
|
386
382
|
<p
|
|
387
|
-
class="text-xs
|
|
383
|
+
class="text-xs text-(--bb-text-muted) tabular-nums"
|
|
388
384
|
data-testid="warmth"
|
|
389
385
|
>
|
|
390
386
|
{{ warmth }}%
|
|
@@ -59,13 +59,11 @@ also catches text reflow, images loading, and window-resize-driven wrapping.
|
|
|
59
59
|
|
|
60
60
|
```vue
|
|
61
61
|
<template>
|
|
62
|
-
<div
|
|
63
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
64
|
-
>
|
|
62
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
65
63
|
<div class="flex items-start justify-between gap-3">
|
|
66
64
|
<div class="flex flex-col gap-0.5">
|
|
67
65
|
<p class="text-sm font-medium">Acme Pro</p>
|
|
68
|
-
<p class="text-xs text-
|
|
66
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
69
67
|
$29 / month · billed annually
|
|
70
68
|
</p>
|
|
71
69
|
</div>
|
|
@@ -81,7 +79,7 @@ also catches text reflow, images loading, and window-resize-driven wrapping.
|
|
|
81
79
|
<BbSmoothHeight>
|
|
82
80
|
<ul
|
|
83
81
|
v-if="showDetails"
|
|
84
|
-
class="flex flex-col gap-1.5 text-sm text-
|
|
82
|
+
class="flex flex-col gap-1.5 text-sm text-(--bb-text-muted)"
|
|
85
83
|
>
|
|
86
84
|
<li v-for="perk in perks" :key="perk">{{ perk }}</li>
|
|
87
85
|
</ul>
|
|
@@ -116,12 +114,10 @@ controls above and the actions below stay put while the middle animates.
|
|
|
116
114
|
|
|
117
115
|
```vue
|
|
118
116
|
<template>
|
|
119
|
-
<div
|
|
120
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
121
|
-
>
|
|
117
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
122
118
|
<div class="flex flex-col gap-0.5">
|
|
123
119
|
<p class="text-sm font-medium">Billing details</p>
|
|
124
|
-
<p class="text-xs text-
|
|
120
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
125
121
|
Acme Studio · next invoice Jul 31, 2026
|
|
126
122
|
</p>
|
|
127
123
|
</div>
|
|
@@ -163,7 +159,7 @@ controls above and the actions below stay put while the middle animates.
|
|
|
163
159
|
label="IBAN"
|
|
164
160
|
placeholder="DE89 3704 0044 0532 0130 00"
|
|
165
161
|
/>
|
|
166
|
-
<p class="text-xs text-
|
|
162
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
167
163
|
We will email a SEPA mandate to finance@acme.dev for approval.
|
|
168
164
|
</p>
|
|
169
165
|
</div>
|
|
@@ -213,9 +209,7 @@ strategy covers all of it, including results wrapping onto more lines.
|
|
|
213
209
|
|
|
214
210
|
```vue
|
|
215
211
|
<template>
|
|
216
|
-
<div
|
|
217
|
-
class="flex max-w-sm flex-col gap-2 rounded-[var(--bb-radius)] border p-3"
|
|
218
|
-
>
|
|
212
|
+
<div class="flex max-w-sm flex-col gap-2 rounded-(--bb-radius) border p-3">
|
|
219
213
|
<BbTextInput
|
|
220
214
|
v-model="query"
|
|
221
215
|
compact
|
|
@@ -228,7 +222,7 @@ strategy covers all of it, including results wrapping onto more lines.
|
|
|
228
222
|
<BbSmoothHeight>
|
|
229
223
|
<div
|
|
230
224
|
v-if="loading"
|
|
231
|
-
class="flex items-center gap-2 px-1 py-2 text-sm text-
|
|
225
|
+
class="flex items-center gap-2 px-1 py-2 text-sm text-(--bb-text-muted)"
|
|
232
226
|
role="status"
|
|
233
227
|
>
|
|
234
228
|
<BbSpinner size="sm" /> Searching…
|
|
@@ -240,15 +234,12 @@ strategy covers all of it, including results wrapping onto more lines.
|
|
|
240
234
|
class="flex items-baseline justify-between gap-3 px-1 py-1.5 text-sm"
|
|
241
235
|
>
|
|
242
236
|
<a class="truncate font-medium" :href="page.href">{{ page.title }}</a>
|
|
243
|
-
<span class="shrink-0 text-xs text-
|
|
237
|
+
<span class="shrink-0 text-xs text-(--bb-text-muted)">{{
|
|
244
238
|
page.section
|
|
245
239
|
}}</span>
|
|
246
240
|
</li>
|
|
247
241
|
</ul>
|
|
248
|
-
<p
|
|
249
|
-
v-else-if="query"
|
|
250
|
-
class="px-1 py-2 text-sm text-[color:var(--bb-text-muted)]"
|
|
251
|
-
>
|
|
242
|
+
<p v-else-if="query" class="px-1 py-2 text-sm text-(--bb-text-muted)">
|
|
252
243
|
No pages match “{{ query }}”.
|
|
253
244
|
</p>
|
|
254
245
|
</BbSmoothHeight>
|
|
@@ -321,15 +312,11 @@ class swaps or text edits drive the height.
|
|
|
321
312
|
|
|
322
313
|
```vue
|
|
323
314
|
<template>
|
|
324
|
-
<div
|
|
325
|
-
class="flex max-w-sm flex-col gap-2 rounded-[var(--bb-radius)] border p-3"
|
|
326
|
-
>
|
|
315
|
+
<div class="flex max-w-sm flex-col gap-2 rounded-(--bb-radius) border p-3">
|
|
327
316
|
<div class="flex items-center justify-between gap-3">
|
|
328
317
|
<div class="flex flex-col gap-0.5">
|
|
329
318
|
<p class="text-sm font-medium">Recent activity</p>
|
|
330
|
-
<p class="text-xs text-
|
|
331
|
-
Q3 launch · Acme Studio
|
|
332
|
-
</p>
|
|
319
|
+
<p class="text-xs text-(--bb-text-muted)">Q3 launch · Acme Studio</p>
|
|
333
320
|
</div>
|
|
334
321
|
<div class="flex gap-1.5">
|
|
335
322
|
<BbButton size="sm" variant="ghost" @click="removeEntry">
|
|
@@ -350,7 +337,7 @@ class swaps or text edits drive the height.
|
|
|
350
337
|
class="flex items-baseline justify-between gap-3 py-2 text-sm first:pt-0 last:pb-0"
|
|
351
338
|
>
|
|
352
339
|
<span>{{ entry.text }}</span>
|
|
353
|
-
<span class="shrink-0 text-xs text-
|
|
340
|
+
<span class="shrink-0 text-xs text-(--bb-text-muted)">{{
|
|
354
341
|
entry.when
|
|
355
342
|
}}</span>
|
|
356
343
|
</li>
|
|
@@ -417,12 +404,10 @@ on the fly.
|
|
|
417
404
|
|
|
418
405
|
```vue
|
|
419
406
|
<template>
|
|
420
|
-
<div
|
|
421
|
-
class="flex max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
422
|
-
>
|
|
407
|
+
<div class="flex max-w-sm flex-col gap-3 rounded-(--bb-radius) border p-3">
|
|
423
408
|
<div class="flex flex-col gap-0.5">
|
|
424
409
|
<p class="text-sm font-medium">Release checklist</p>
|
|
425
|
-
<p class="text-xs text-
|
|
410
|
+
<p class="text-xs text-(--bb-text-muted)">
|
|
426
411
|
v2.4.0 · ship window Fri Jul 24
|
|
427
412
|
</p>
|
|
428
413
|
</div>
|
|
@@ -431,7 +416,7 @@ on the fly.
|
|
|
431
416
|
<ul class="flex flex-col gap-1.5 text-sm">
|
|
432
417
|
<li>Design review signed off</li>
|
|
433
418
|
<li>Ship the release notes</li>
|
|
434
|
-
<li v-if="expanded" class="text-
|
|
419
|
+
<li v-if="expanded" class="text-(--bb-text-muted)">
|
|
435
420
|
Notify the changelog subscribers
|
|
436
421
|
</li>
|
|
437
422
|
</ul>
|