bitboss-ui 3.0.0-beta.12 → 3.0.0-beta.15
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/dist/ai/BbAccordion.md +2 -2
- package/dist/ai/BbAlert.md +8 -4
- package/dist/ai/BbAsterisk.md +17 -0
- package/dist/ai/BbAvatar.md +12 -3
- package/dist/ai/BbBadge.md +3 -3
- package/dist/ai/BbBadgeButton.md +1 -1
- package/dist/ai/BbBaseButton.md +1 -1
- package/dist/ai/BbBaseCheckboxGroup.md +1 -1
- package/dist/ai/BbBaseCheckboxIcon.md +19 -2
- package/dist/ai/BbBaseRadioIcon.md +19 -3
- package/dist/ai/BbBaseSwitchGroup.md +1 -1
- package/dist/ai/BbBaseSwitchIcon.md +21 -3
- package/dist/ai/BbBreadcrumbs.md +1 -1
- package/dist/ai/BbButton.md +1 -1
- package/dist/ai/BbCheckbox.md +8 -7
- package/dist/ai/BbCheckboxGroup.md +5 -4
- package/dist/ai/BbCollapsible.md +10 -8
- package/dist/ai/BbColorPalette.md +7 -1
- package/dist/ai/BbConfirm.md +12 -5
- package/dist/ai/BbDatePicker.md +1 -1
- package/dist/ai/BbDialog.md +9 -6
- package/dist/ai/BbDropdown.md +118 -14
- package/dist/ai/BbDropdownButton.md +2 -2
- package/dist/ai/BbDropdownGroup.md +1 -1
- package/dist/ai/BbForm.md +49 -14
- package/dist/ai/BbIcon.md +6 -0
- package/dist/ai/BbIndicator.md +2 -2
- package/dist/ai/BbOffCanvas.md +6 -5
- package/dist/ai/BbPopover.md +29 -14
- package/dist/ai/BbProgress.md +6 -3
- package/dist/ai/BbRadio.md +8 -7
- package/dist/ai/BbRadioGroup.md +10 -7
- package/dist/ai/BbSelect.md +8 -4
- package/dist/ai/BbSelectPopover.md +1 -1
- package/dist/ai/BbSlider.md +24 -9
- package/dist/ai/BbSmoothHeight.md +1 -1
- package/dist/ai/BbSwitch.md +2 -0
- package/dist/ai/BbSwitchGroup.md +7 -4
- package/dist/ai/BbTabs.md +20 -6
- package/dist/ai/BbTabsList.md +1 -1
- package/dist/ai/BbTabsPanes.md +1 -1
- package/dist/ai/BbTabsRoot.md +2 -2
- package/dist/ai/BbTag.md +1 -1
- package/dist/ai/BbTextInput.md +4 -3
- package/dist/ai/BbTextarea.md +1 -1
- package/dist/ai/BbTimePicker.md +1 -1
- package/dist/ai/BbToast.md +1 -1
- package/dist/ai/BbToastPortal.md +1 -1
- package/dist/ai/BbTooltip.md +9 -7
- package/dist/ai/CommonPopover.md +1 -1
- package/dist/ai/FlatListBox.md +1 -1
- package/dist/ai/GroupedListBox.md +1 -1
- package/dist/ai/changelog.json +14 -2
- package/dist/ai/components.json +180 -43
- package/dist/ai/composables/useBbConfig.md +31 -11
- package/dist/ai/composables/useConfirm.md +5 -3
- package/dist/ai/guides/icons-policy.md +4 -2
- package/dist/ai/guides/installation-and-plugin-setup.md +59 -8
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +30 -0
- package/dist/ai/guides/migration/components/bb-checkbox.md +2 -1
- package/dist/ai/guides/migration/components/bb-collapsible.md +5 -5
- package/dist/ai/guides/migration/components/bb-dialog.md +7 -5
- package/dist/ai/guides/migration/components/bb-offcanvas.md +18 -3
- package/dist/ai/guides/migration/components/bb-rating.md +8 -2
- package/dist/ai/guides/migration/components/bb-select.md +5 -2
- package/dist/ai/guides/migration/components/bb-text-input.md +6 -6
- package/dist/ai/guides/migration/v2-to-v3.md +75 -4
- package/dist/ai/index.md +6 -6
- package/dist/ai/source/BbAlert.md +60 -2
- package/dist/ai/source/BbAvatar.md +3 -3
- package/dist/ai/source/BbBadge.md +8 -2
- package/dist/ai/source/BbBadgeButton.md +8 -2
- package/dist/ai/source/BbBaseButton.md +3 -1
- package/dist/ai/source/BbBaseCheckboxGroup.md +1 -1
- package/dist/ai/source/BbBaseDatePicker.md +3 -1
- package/dist/ai/source/BbBaseDatePickerInput.md +5 -1
- package/dist/ai/source/BbBaseInputContainer.md +26 -1
- package/dist/ai/source/BbBaseRating.md +3 -1
- package/dist/ai/source/BbBaseTimePickerInput.md +5 -1
- package/dist/ai/source/BbCheckboxGroup.md +2 -1
- package/dist/ai/source/BbCollapsible.md +7 -1
- package/dist/ai/source/BbColorInput.md +3 -4
- package/dist/ai/source/BbColorPalette.md +3 -4
- package/dist/ai/source/BbDatePicker.md +5 -1
- package/dist/ai/source/BbDatePickerInput.md +5 -1
- package/dist/ai/source/BbDialog.md +27 -3
- package/dist/ai/source/BbDropdown.md +130 -20
- package/dist/ai/source/BbDropdownGroup.md +116 -11
- package/dist/ai/source/BbForm.md +93 -5
- package/dist/ai/source/BbIcon.md +3 -2
- package/dist/ai/source/BbNumberInput.md +3 -4
- package/dist/ai/source/BbOffCanvas.md +22 -5
- package/dist/ai/source/BbPopover.md +16 -9
- package/dist/ai/source/BbRadioGroup.md +3 -1
- package/dist/ai/source/BbSelect.md +3 -1
- package/dist/ai/source/BbSelectPopover.md +3 -1
- package/dist/ai/source/BbSlider.md +3 -4
- package/dist/ai/source/BbSwitchGroup.md +8 -5
- package/dist/ai/source/BbTable.md +333 -178
- package/dist/ai/source/BbTabs.md +6 -7
- package/dist/ai/source/BbTabsList.md +6 -7
- package/dist/ai/source/BbTabsPanes.md +6 -7
- package/dist/ai/source/BbTabsRoot.md +6 -7
- package/dist/ai/source/BbTag.md +3 -4
- package/dist/ai/source/BbTextInput.md +3 -4
- package/dist/ai/source/BbTextarea.md +3 -4
- package/dist/ai/source/BbTimePicker.md +4 -1
- package/dist/ai/source/BbTimePickerInput.md +5 -1
- package/dist/ai/source/BbToast.md +3 -1
- package/dist/ai/source/BbTooltip.md +5 -1
- package/dist/components/BbAlert/types.d.ts +10 -1
- package/dist/components/BbAvatar/BbAvatar.vue.d.ts +1 -1
- package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +33 -33
- package/dist/components/BbBadge/types.d.ts +8 -2
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +47 -47
- package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +14 -14
- package/dist/components/BbBaseCheckboxGroup/types.d.ts +1 -1
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +167 -167
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +9 -9
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +79 -79
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +64 -64
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +1 -1
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +139 -139
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +41 -41
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +1 -1
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +105 -105
- package/dist/components/BbCheckboxGroup/types.d.ts +2 -1
- package/dist/components/BbCollapsible/types.d.ts +7 -1
- package/dist/components/BbColorInput/BbColorInput.vue.d.ts +1 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +18 -18
- package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +2 -2
- package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +50 -50
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +100 -100
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +21 -21
- package/dist/components/BbDialog/BbDialog.vue.d.ts +1 -1
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +105 -100
- package/dist/components/BbDialog/types.d.ts +1 -1
- package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +2 -0
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +95 -76
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +2 -2
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +180 -174
- package/dist/components/BbDropdown/types.d.ts +13 -1
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +33 -33
- package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +1 -1
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +166 -161
- package/dist/components/BbPopover/BbPopover.vue.d.ts +2 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +149 -146
- package/dist/components/BbPopover/types.d.ts +3 -2
- package/dist/components/BbRadioGroup/types.d.ts +3 -1
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +22 -22
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +209 -209
- package/dist/components/BbSlider/BbSlider.vue.d.ts +1 -1
- package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +20 -20
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +661 -677
- package/dist/components/BbTable/BbTableDataRow.d.ts +15 -4
- package/dist/components/BbTable/BbTableDataRow.js +2 -4
- package/dist/components/BbTable/BbTableExpandRow.d.ts +73 -0
- package/dist/components/BbTable/BbTableExpandRow.js +52 -0
- package/dist/components/BbTable/utils.js +0 -1
- package/dist/components/BbTabs/types.d.ts +0 -8
- package/dist/components/BbTag/BbTag.vue.d.ts +1 -1
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +18 -18
- package/dist/components/BbTextInput/BbTextInput.vue.d.ts +1 -1
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +18 -18
- package/dist/components/BbTextarea/BbTextarea.vue.d.ts +1 -1
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +54 -54
- package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +1 -1
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +80 -80
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +61 -61
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +17 -17
- package/dist/components/BbTooltip/types.d.ts +5 -1
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +6 -6
- package/dist/composables/useBaseOptions.js +1 -1
- package/dist/composables/useBbConfig.d.ts +21 -6
- package/dist/composables/useBbConfig.js +10 -3
- package/dist/composables/useConfig.d.ts +50 -0
- package/dist/composables/useConfig.js +9 -0
- package/dist/composables/useLocale.js +10 -7
- package/dist/composables/useMobile.js +5 -5
- package/dist/composables/useToast.js +5 -5
- package/dist/deprecation/ai-deprecations.json.d.ts +110 -0
- package/dist/deprecation/ai-deprecations.json.js +1 -1
- package/dist/directives/bbDropdown.d.ts +10 -4
- package/dist/directives/bbDropdown.js +7 -7
- package/dist/index.d.ts +1 -1
- package/dist/llms-full.txt +743 -230
- package/dist/llms-medium.txt +64 -13
- package/dist/llms.txt +1 -1
- package/dist/nuxt-auto-imports.d.ts +100 -0
- package/dist/nuxt-auto-imports.js +55 -0
- package/dist/nuxt-module.d.ts +22 -1
- package/dist/nuxt.js +22 -8
- package/dist/plugin.d.ts +10 -1
- package/dist/plugin.js +20 -19
- package/dist/runtime/nuxt-plugin.js +5 -5
- package/dist/styles.css +1 -1
- package/dist/utilities/misc/listboxMetrics.d.ts +3 -3
- package/dist/utilities/misc/listboxMetrics.js +2 -2
- package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +45 -27
- package/dist/validated/useValidatedField.js +25 -23
- package/llms.txt +1 -1
- package/package.json +1 -1
package/dist/ai/BbAccordion.md
CHANGED
|
@@ -532,7 +532,7 @@ is generated for you.
|
|
|
532
532
|
| `eager` | `boolean \| undefined` | | | Prevents rendering content before it's made visible. |
|
|
533
533
|
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
534
534
|
| `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to trigger opening / closing the collapsible. An accordion with no `v-model` starts closed. |
|
|
535
|
-
| `transitionDuration` | `number \| undefined` | `
|
|
535
|
+
| `transitionDuration` | `number \| undefined` | `250` | | How long the transition has to last in milliseconds |
|
|
536
536
|
|
|
537
537
|
## Events
|
|
538
538
|
|
|
@@ -546,4 +546,4 @@ is generated for you.
|
|
|
546
546
|
## See Also
|
|
547
547
|
|
|
548
548
|
- [BbCollapsible](./BbCollapsible.md) — Toggles visibility of collapsible content blocks.
|
|
549
|
-
- [BbTabs](./BbTabs.md) — Switches between tabbed content views (shadcn-like strip;
|
|
549
|
+
- [BbTabs](./BbTabs.md) — Switches between tabbed content views (shadcn-like strip; the co-located BbTabsRoot / BbTabsList / BbTabsPanes exports enable split layouts).
|
package/dist/ai/BbAlert.md
CHANGED
|
@@ -139,8 +139,12 @@ Bind `v-model` when the visibility matters to you:
|
|
|
139
139
|
</p>
|
|
140
140
|
</div>
|
|
141
141
|
|
|
142
|
+
<!--
|
|
143
|
+
`v-model` alone owns the dismissal, so the alert plays its own leave
|
|
144
|
+
transition. Pairing it with a `v-if` on the SAME element unmounts the
|
|
145
|
+
node the instant the model flips and the animation never runs.
|
|
146
|
+
-->
|
|
142
147
|
<BbAlert
|
|
143
|
-
v-if="showBanner"
|
|
144
148
|
v-model="showBanner"
|
|
145
149
|
close-label="Dismiss email verification reminder"
|
|
146
150
|
icon="lucide:mail"
|
|
@@ -149,7 +153,7 @@ Bind `v-model` when the visibility matters to you:
|
|
|
149
153
|
variant="primary"
|
|
150
154
|
/>
|
|
151
155
|
<BbButton
|
|
152
|
-
v-
|
|
156
|
+
v-if="!showBanner"
|
|
153
157
|
prepend:icon="lucide:mail"
|
|
154
158
|
variant="ghost"
|
|
155
159
|
@click="showBanner = true"
|
|
@@ -399,7 +403,7 @@ const publish = () => {
|
|
|
399
403
|
| `role` | `"alert" \| "status" \| undefined` | | | Accessibility role for the alert container. Defaults to `'alert'` for destructive/warning variants, otherwise `'status'`. |
|
|
400
404
|
| `text` | `string \| undefined` | | | Text content of the alert body. |
|
|
401
405
|
| `title` | `string \| undefined` | | | Text content of the alert title. |
|
|
402
|
-
| `transitionDuration` | `number \| undefined` | `
|
|
406
|
+
| `transitionDuration` | `number \| undefined` | `250` | | Transition duration in milliseconds for enter/leave. |
|
|
403
407
|
| `variant` | `keyof AlertVariantRegistry \| undefined` | `"outline"` | | Visual variant of the alert. |
|
|
404
408
|
|
|
405
409
|
## Events
|
|
@@ -414,4 +418,4 @@ const publish = () => {
|
|
|
414
418
|
|
|
415
419
|
## See Also
|
|
416
420
|
|
|
417
|
-
- [BbToast](./BbToast.md) — Shows transient notification messages.
|
|
421
|
+
- [BbToast](./BbToast.md) — Shows transient notification messages (includes the co-located BbToastPortal export).
|
package/dist/ai/BbAsterisk.md
CHANGED
|
@@ -33,6 +33,23 @@ you compose a bespoke label outside those controls.
|
|
|
33
33
|
Wrap it in an element with your own spacing if the default `margin-inline-start`
|
|
34
34
|
doesn't suit the layout; the glyph inherits nothing else from its surroundings.
|
|
35
35
|
|
|
36
|
+
### It is `aria-hidden` — the control carries the requirement
|
|
37
|
+
|
|
38
|
+
The span renders `aria-hidden="true"`, so **screen readers never announce it**.
|
|
39
|
+
That is deliberate: an asterisk read aloud as "star" is noise, and a marker
|
|
40
|
+
placed in a label is not a reliable way to convey a requirement. What actually
|
|
41
|
+
carries mandatoriness to assistive tech is the **`required` attribute on the
|
|
42
|
+
control** — which the library sets from your `required` prop.
|
|
43
|
+
|
|
44
|
+
The practical consequence: the marker is a _visual_ affordance only, and
|
|
45
|
+
`required` is the real thing. Never ship a field that shows the asterisk
|
|
46
|
+
without `required` (sighted users see a requirement that assistive tech cannot
|
|
47
|
+
perceive), and never assume the asterisk is doing accessibility work.
|
|
48
|
+
|
|
49
|
+
`showAsterisk` on the validated controls is also gated on the plugin option, so
|
|
50
|
+
with `requiredAsterisk: false` there is no way to render the marker through
|
|
51
|
+
them at all — placing `BbAsterisk` by hand is then the only route.
|
|
52
|
+
|
|
36
53
|
## Props
|
|
37
54
|
|
|
38
55
|
- None.
|
package/dist/ai/BbAvatar.md
CHANGED
|
@@ -83,8 +83,17 @@ not hero examples.
|
|
|
83
83
|
The fallback surface is **always painted with the primary design token** —
|
|
84
84
|
`--bb-primary` behind, `--bb-primary-fg` for the initials/icon, the same
|
|
85
85
|
pairing as a primary button — so initials stay legible in light and dark and
|
|
86
|
-
every avatar matches your theme automatically.
|
|
87
|
-
|
|
86
|
+
every avatar matches your theme automatically.
|
|
87
|
+
|
|
88
|
+
There is no tinting **prop**, but there are three component locals on
|
|
89
|
+
`.bb-avatar` for the cases the theme cannot cover — a per-tenant or
|
|
90
|
+
per-user colour: `--bg-color` (fallback surface, defaults to `--bb-primary`),
|
|
91
|
+
`--text-color` (initials, `--bb-primary-fg`) and `--default-icon-color` (the
|
|
92
|
+
placeholder glyph). Set them on the avatar or on a class you put on it:
|
|
93
|
+
|
|
94
|
+
```vue
|
|
95
|
+
<BbAvatar text="Acme Studio" :style="{ '--bg-color': tenant.color }" />
|
|
96
|
+
```
|
|
88
97
|
|
|
89
98
|
**The size scale**
|
|
90
99
|
|
|
@@ -512,4 +521,4 @@ available in visible text or an adjacent label.
|
|
|
512
521
|
|
|
513
522
|
## See Also
|
|
514
523
|
|
|
515
|
-
- [BbBadge](./BbBadge.md) — Displays compact status
|
|
524
|
+
- [BbBadge](./BbBadge.md) — Displays a compact inline status counter or label. It sits in the flow — for a bubble or dot anchored OVER another element, use BbIndicator (includes the co-located BbBadgeButton export).
|
package/dist/ai/BbBadge.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Safety level: **Consumer API**
|
|
6
6
|
- Group: **Feedback**
|
|
7
|
-
- Description: Displays compact status
|
|
7
|
+
- Description: Displays a compact inline status counter or label. It sits in the flow — for a bubble or dot anchored OVER another element, use BbIndicator (includes the co-located BbBadgeButton export).
|
|
8
8
|
- Usage rule: Prefer this component for consumer-facing implementations.
|
|
9
9
|
- Implementation source (only when the contract below is not enough): [source/BbBadge.md](./source/BbBadge.md)
|
|
10
10
|
|
|
@@ -715,7 +715,7 @@ selectors like `.bb-badge > .bb-badge__content`, which no longer match.
|
|
|
715
715
|
| --- | --- | --- | --- | --- |
|
|
716
716
|
| `append:icon` | `string \| undefined` | | | Icon rendered after the label. On a `clearable` badge it shares the trailing slot with the clear button: the icon shows at rest and the clear button reveals over it on hover/focus. |
|
|
717
717
|
| `clearable` | `boolean \| undefined` | | | Renders a trailing clear button and emits `click:clear` when pressed — turns the badge into a dismissible token (the pattern formerly served by `BbChip`). |
|
|
718
|
-
| `clearableLabel` | `string \| undefined` | | | Accessible label for the clear button.
|
|
718
|
+
| `clearableLabel` | `string \| undefined` | | | Accessible label for the clear button. Rarely needed: unset, the name is **composed** from the localized `badge.clearLabel` verb and the badge's own text — "Remove Italy", not a bare "Remove" — which is already the right name in almost ever… |
|
|
719
719
|
| `icon` | `string \| undefined` | | | Renders an icon-only badge. When set, `prepend:icon` / `append:icon` are ignored and the default slot becomes the badge's visually hidden accessible label — always provide it. |
|
|
720
720
|
| `loading` | `boolean \| undefined` | | | Shows a spinner in place of the leftmost icon, mirroring `BbButton`: it replaces the `icon` glyph or the `prepend:icon` when one is set; when the `append:icon` is the sole icon it replaces that instead (e.g. a select-activator chevron while… |
|
|
721
721
|
| `prepend:icon` | `string \| undefined` | | | Icon rendered before the label. |
|
|
@@ -732,6 +732,6 @@ selectors like `.bb-badge > .bb-badge__content`, which no longer match.
|
|
|
732
732
|
|
|
733
733
|
## See Also
|
|
734
734
|
|
|
735
|
-
- [BbIndicator](./BbIndicator.md) — Anchors a notification bubble (count/short text) or a dot over a wrapped element
|
|
735
|
+
- [BbIndicator](./BbIndicator.md) — Anchors a notification bubble (count/short text) or a dot over a wrapped element.
|
|
736
736
|
- [BbAvatar](./BbAvatar.md) — Displays an avatar and has a fallback content slot.
|
|
737
737
|
- [BbBadgeButton](./BbBadgeButton.md) — Makes a badge's body interactive: slotted as a direct child of BbBadge it renders the badge body as a real button/link with full BbBaseButton parity, leaving `clearable` free to remain a separate control.
|
package/dist/ai/BbBadgeButton.md
CHANGED
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
|
|
64
64
|
## See Also
|
|
65
65
|
|
|
66
|
-
- [BbBadge](./BbBadge.md) — Displays compact status
|
|
66
|
+
- [BbBadge](./BbBadge.md) — Displays a compact inline status counter or label. It sits in the flow — for a bubble or dot anchored OVER another element, use BbIndicator (includes the co-located BbBadgeButton export).
|
|
67
67
|
- [BbBaseButton](./BbBaseButton.md) — Unstyled button/link primitive: element resolution (button/anchor/router link) and the full navigation engine, with no visual chrome. Use for any clickable or navigable surface that is not a variant-first BbButton — cards, list rows, custom links.
|
package/dist/ai/BbBaseButton.md
CHANGED
|
@@ -510,4 +510,4 @@ const sent = ref(false);
|
|
|
510
510
|
|
|
511
511
|
- [BbButton](./BbButton.md) — Button with loading state, tooltip, and icon support.
|
|
512
512
|
- [BbDropdownButton](./BbDropdownButton.md) — A button with primary action and all other actions collected in a dropdown.
|
|
513
|
-
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content.
|
|
513
|
+
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content (includes the co-located BbDropdownGroup export, which is how a selectable group is bound).
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
|
|
45
45
|
- `active` — `(e: "active"): void` — Emitted when the group becomes active (focus/click enters it).
|
|
46
46
|
- `blur` — `(e: "blur", event: FocusEvent): void` — Emitted when one of the generated checkbox inputs loses focus. Forwards the original DOM `FocusEvent`.
|
|
47
|
-
- `change` — `(e: "change", event: Event): void` — Emitted when
|
|
47
|
+
- `change` — `(e: "change", event: Event): void` — Emitted when an option is toggled. Forwards the original DOM `Event` from the checkbox input.
|
|
48
48
|
- `click` — `(e: "click", event: MouseEvent): void` — Emitted when one of the generated checkbox inputs is clicked. Forwards the original DOM `MouseEvent`.
|
|
49
49
|
- `focus` — `(e: "focus", event: FocusEvent): void` — Emitted when one of the generated checkbox inputs receives focus. Forwards the original DOM `FocusEvent`.
|
|
50
50
|
- `inactive` — `(e: "inactive"): void` — Emitted when focus/click moves outside the group after it was active. Useful for validation-on-blur flows at group level.
|
|
@@ -110,8 +110,8 @@ const selected = ref<string[]>(['email']);
|
|
|
110
110
|
|
|
111
111
|
### Styling
|
|
112
112
|
|
|
113
|
-
The glyph owns its own tokens, so restyle it by overriding CSS custom
|
|
114
|
-
on
|
|
113
|
+
The glyph owns its own tokens, so restyle it by overriding CSS custom
|
|
114
|
+
properties on it:
|
|
115
115
|
|
|
116
116
|
- `--size` — box edge length (default `16px`)
|
|
117
117
|
- `--r` — corner radius (default `4px`)
|
|
@@ -119,6 +119,23 @@ on the element (or an ancestor — they inherit):
|
|
|
119
119
|
- `--check-color` — checkmark stroke (default `--bb-primary-fg`)
|
|
120
120
|
- `--ring-color` — focus ring color
|
|
121
121
|
|
|
122
|
+
**On the element itself, not an ancestor.** Each of these is declared on the
|
|
123
|
+
glyph's own class, and a declaration on the element always beats one inherited
|
|
124
|
+
from an ancestor — so `--size` set on a wrapper `div` is simply ignored
|
|
125
|
+
(verified: the glyph stays 16px). Target the glyph class, or pass a `style` /
|
|
126
|
+
`class` that lands on it:
|
|
127
|
+
|
|
128
|
+
```css
|
|
129
|
+
/* works */
|
|
130
|
+
.bb-base-checkbox-icon {
|
|
131
|
+
--size: 20px;
|
|
132
|
+
}
|
|
133
|
+
/* does nothing */
|
|
134
|
+
.my-form {
|
|
135
|
+
--size: 20px;
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
122
139
|
**Bigger, rounder, recolored**
|
|
123
140
|
|
|
124
141
|
```vue
|
|
@@ -130,14 +130,30 @@ const selected = ref('team');
|
|
|
130
130
|
|
|
131
131
|
### Styling
|
|
132
132
|
|
|
133
|
-
Restyle by overriding the glyph's CSS custom properties on
|
|
134
|
-
ancestor — they inherit):
|
|
133
|
+
Restyle by overriding the glyph's CSS custom properties on it:
|
|
135
134
|
|
|
136
135
|
- `--size` — ring diameter (default `16px`)
|
|
137
|
-
- `--space` — gap between ring and dot when checked (default `
|
|
136
|
+
- `--space` — gap between ring and dot when checked (default `2px`)
|
|
138
137
|
- `--color` — dot color (default `--bb-primary`)
|
|
139
138
|
- `--ring-color` — focus ring color
|
|
140
139
|
|
|
140
|
+
**On the element itself, not an ancestor.** Each of these is declared on the
|
|
141
|
+
glyph's own class, and a declaration on the element always beats one inherited
|
|
142
|
+
from an ancestor — so `--size` set on a wrapper `div` is simply ignored
|
|
143
|
+
(verified: the glyph stays at its 16px default). Target the glyph class, or pass a `style` /
|
|
144
|
+
`class` that lands on it:
|
|
145
|
+
|
|
146
|
+
```css
|
|
147
|
+
/* works */
|
|
148
|
+
.bb-base-radio-icon {
|
|
149
|
+
--size: 20px;
|
|
150
|
+
}
|
|
151
|
+
/* does nothing */
|
|
152
|
+
.my-form {
|
|
153
|
+
--size: 20px;
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
141
157
|
**Bigger and recolored**
|
|
142
158
|
|
|
143
159
|
```vue
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
|
|
45
45
|
- `active` — `(e: "active"): void` — Emitted when the group becomes active (focus/click enters it).
|
|
46
46
|
- `blur` — `(e: "blur", event: FocusEvent): void` — Emitted when one of the generated checkbox inputs loses focus. Forwards the original DOM `FocusEvent`.
|
|
47
|
-
- `change` — `(e: "change", event: Event): void` — Emitted when
|
|
47
|
+
- `change` — `(e: "change", event: Event): void` — Emitted when an option is toggled. Forwards the original DOM `Event` from the checkbox input.
|
|
48
48
|
- `click` — `(e: "click", event: MouseEvent): void` — Emitted when one of the generated checkbox inputs is clicked. Forwards the original DOM `MouseEvent`.
|
|
49
49
|
- `focus` — `(e: "focus", event: FocusEvent): void` — Emitted when one of the generated checkbox inputs receives focus. Forwards the original DOM `FocusEvent`.
|
|
50
50
|
- `inactive` — `(e: "inactive"): void` — Emitted when focus/click moves outside the group after it was active. Useful for validation-on-blur flows at group level.
|
|
@@ -120,15 +120,33 @@ const state = reactive<Record<string, boolean>>({
|
|
|
120
120
|
|
|
121
121
|
### Styling
|
|
122
122
|
|
|
123
|
-
Restyle by overriding the glyph's CSS custom properties on
|
|
124
|
-
ancestor — they inherit):
|
|
123
|
+
Restyle by overriding the glyph's CSS custom properties on it:
|
|
125
124
|
|
|
126
125
|
- `--w` / `--h` — track width / height (default `32px` / `18px`)
|
|
127
126
|
- `--thumb` — thumb diameter (default `16px`)
|
|
128
127
|
- `--color` — track fill when checked (default `--bb-primary`)
|
|
129
|
-
- `--bg-color` — track fill when off (default `--bb-
|
|
128
|
+
- `--bg-color` — track fill when off (default `--bb-track`)
|
|
130
129
|
- `--radius` — track/thumb rounding (default `999px`)
|
|
131
130
|
|
|
131
|
+
**On the element itself, not an ancestor.** Each of these is declared on the
|
|
132
|
+
glyph's own class, and a declaration on the element always beats one inherited
|
|
133
|
+
from an ancestor — so `--w` set on a wrapper `div` is simply ignored
|
|
134
|
+
(verified: the glyph keeps its shipped size). Target the glyph class, or pass a `style` /
|
|
135
|
+
`class` that lands on it:
|
|
136
|
+
|
|
137
|
+
```css
|
|
138
|
+
/* works */
|
|
139
|
+
.bb-base-switch-icon {
|
|
140
|
+
--w: 40px;
|
|
141
|
+
--h: 22px;
|
|
142
|
+
--thumb: 18px;
|
|
143
|
+
}
|
|
144
|
+
/* does nothing */
|
|
145
|
+
.my-form {
|
|
146
|
+
--w: 40px;
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
132
150
|
**Larger and recolored**
|
|
133
151
|
|
|
134
152
|
```vue
|
package/dist/ai/BbBreadcrumbs.md
CHANGED
|
@@ -582,4 +582,4 @@ overflow calculation runs after hydration once real widths exist.
|
|
|
582
582
|
## See Also
|
|
583
583
|
|
|
584
584
|
- [BbBaseButton](./BbBaseButton.md) — Unstyled button/link primitive: element resolution (button/anchor/router link) and the full navigation engine, with no visual chrome. Use for any clickable or navigable surface that is not a variant-first BbButton — cards, list rows, custom links.
|
|
585
|
-
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content.
|
|
585
|
+
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content (includes the co-located BbDropdownGroup export, which is how a selectable group is bound).
|
package/dist/ai/BbButton.md
CHANGED
|
@@ -945,5 +945,5 @@ Anti-patterns:
|
|
|
945
945
|
|
|
946
946
|
- [BbBaseButton](./BbBaseButton.md) — Unstyled button/link primitive: element resolution (button/anchor/router link) and the full navigation engine, with no visual chrome. Use for any clickable or navigable surface that is not a variant-first BbButton — cards, list rows, custom links.
|
|
947
947
|
- [BbDropdownButton](./BbDropdownButton.md) — A button with primary action and all other actions collected in a dropdown.
|
|
948
|
-
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content.
|
|
948
|
+
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content (includes the co-located BbDropdownGroup export, which is how a selectable group is bound).
|
|
949
949
|
- [BbConfirm](./BbConfirm.md) — Prompts users to confirm or cancel critical actions (includes co-located BbConfirmPortal export).
|
package/dist/ai/BbCheckbox.md
CHANGED
|
@@ -476,11 +476,12 @@ const toggleAll = (checked: boolean) => {
|
|
|
476
476
|
two-token pattern like `"x xxxxxxx"` splits proportionally by token length —
|
|
477
477
|
the first token sizes the **visually first** element, the second the other.
|
|
478
478
|
- The box renders **before** the label by default — the conventional checkbox
|
|
479
|
-
arrangement. Setting `reverse` swaps the label in front of the box.
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
479
|
+
arrangement. Setting `reverse` swaps the label in front of the box. It is an
|
|
480
|
+
ordinary opt-in boolean: unset and `:reverse="false"` both give box-first,
|
|
481
|
+
`reverse` gives label-first. (There _is_ an internal negation in the source,
|
|
482
|
+
but it exists to cancel `BbBaseInputContainer`'s own polarity, so it is
|
|
483
|
+
invisible from outside. Earlier revisions of this guide described that
|
|
484
|
+
negation as a consumer-facing quirk — it is not.)
|
|
484
485
|
- `input-position` / `label-position` (`'left' | 'center' | 'right'`) align box
|
|
485
486
|
and label text inside their columns — useful with percentage directions.
|
|
486
487
|
- `hide-label` keeps the label for screen readers but hides it visually — only
|
|
@@ -522,8 +523,8 @@ input on mount — use sparingly.
|
|
|
522
523
|
use `disabled` (see the readonly-vs-disabled section).
|
|
523
524
|
- Unchecked boxes post nothing in classic forms; use `submit-when-false` when
|
|
524
525
|
the backend expects an explicit "no".
|
|
525
|
-
- `reverse`
|
|
526
|
-
`:reverse="false"`
|
|
526
|
+
- `reverse` is an opt-in, not a toggle you turn off: unset already means
|
|
527
|
+
box-first. Setting `:reverse="false"` is legal but says nothing.
|
|
527
528
|
- `checked` + `v-model` together fight each other; pick one source of truth.
|
|
528
529
|
|
|
529
530
|
### Accessibility
|
|
@@ -449,7 +449,7 @@ enforcement can empty the array but never throws.
|
|
|
449
449
|
Per-option, `#label` replaces an option's text (receives `{ item, text, checked }`)
|
|
450
450
|
and `#icon` replaces the **entire box visual** for that option (you then own its
|
|
451
451
|
checked/focus/error styling). `#legend` replaces the fieldset legend
|
|
452
|
-
(`{ text, hasErrors }`). `#prepend` / `#append` inject content inside the options
|
|
452
|
+
(`{ text, hasErrors, hasWarning }`; the validated wrapper adds `showAsterisk`). `#prepend` / `#append` inject content inside the options
|
|
453
453
|
container, before the first / after the last box.
|
|
454
454
|
|
|
455
455
|
### Events and focus
|
|
@@ -457,7 +457,8 @@ container, before the first / after the last box.
|
|
|
457
457
|
`update:modelValue` (the `v-model` channel) carries the full array — it is the
|
|
458
458
|
only source of selection truth. The native `blur`, `change`, `click`, `focus`,
|
|
459
459
|
`input`, `keydown`, `mousedown`, `mouseup` events are re-emitted with their raw
|
|
460
|
-
payloads, plus
|
|
460
|
+
payloads, plus the pair `active` (focus enters the group — it is what drives
|
|
461
|
+
the hint's show/hide internally) and `inactive` (focus leaves); listen to those
|
|
461
462
|
for analytics or side effects, never to compute selection yourself. `autofocus`
|
|
462
463
|
focuses the first option on mount — use sparingly.
|
|
463
464
|
|
|
@@ -537,7 +538,7 @@ focuses the first option on mount — use sparingly.
|
|
|
537
538
|
| `itemText` | `ItemAccessor<T, string> \| undefined` | | | Defines a path that returns a property of the object to use as text or a function that returns a string. |
|
|
538
539
|
| `itemValue` | `ItemAccessor<T> \| undefined` | | | Defines a path that returns a property of the object to use as value or a function that returns any value. |
|
|
539
540
|
| `legend` | `string` | | yes | Text content of the legend. |
|
|
540
|
-
| `legendMode` | `"outside" \| "inside" \| undefined` | | | Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow; `'inside'` overlays the legend inside the fieldset border. Floating mode is not supported for
|
|
541
|
+
| `legendMode` | `"outside" \| "inside" \| undefined` | | | Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow; `'inside'` overlays the legend inside the fieldset border. Floating mode is not supported for option groups (checkbox, radio or switch) — there is … |
|
|
541
542
|
| `legendPosition` | `"left" \| "center" \| "right" \| undefined` | | | Sets the text alignment of the label. |
|
|
542
543
|
| `loadingText` | `string \| undefined` | | | String displayed while items are being loaded. |
|
|
543
544
|
| `max` | `number \| undefined` | | | Maximum number of selected items. |
|
|
@@ -556,7 +557,7 @@ focuses the first option on mount — use sparingly.
|
|
|
556
557
|
|
|
557
558
|
- `active` — `(e: "active"): void` — Emitted when the group becomes active (focus/click enters it).
|
|
558
559
|
- `blur` — `(e: "blur", event: FocusEvent): void` — Emitted when one of the generated checkbox inputs loses focus. Forwards the original DOM `FocusEvent`.
|
|
559
|
-
- `change` — `(e: "change", event: Event): void` — Emitted when
|
|
560
|
+
- `change` — `(e: "change", event: Event): void` — Emitted when an option is toggled. Forwards the original DOM `Event` from the checkbox input.
|
|
560
561
|
- `click` — `(e: "click", event: MouseEvent): void` — Emitted when one of the generated checkbox inputs is clicked. Forwards the original DOM `MouseEvent`.
|
|
561
562
|
- `focus` — `(e: "focus", event: FocusEvent): void` — Emitted when one of the generated checkbox inputs receives focus. Forwards the original DOM `FocusEvent`.
|
|
562
563
|
- `inactive` — `(e: "inactive"): void` — Emitted when focus/click moves outside the group after it was active. Useful for validation-on-blur flows at group level.
|
package/dist/ai/BbCollapsible.md
CHANGED
|
@@ -27,7 +27,7 @@ Pick the neighbour that fits instead when you can:
|
|
|
27
27
|
async panels, wizard steps) → **`BbSmoothHeight`** (`./BbSmoothHeight.md`) —
|
|
28
28
|
it has no hidden state, it only animates height.
|
|
29
29
|
|
|
30
|
-
The whole API: `modelValue` (
|
|
30
|
+
The whole API: `modelValue` (boolean, defaults `false`), `eager`, `transition-duration`,
|
|
31
31
|
and one default slot. There are no events — see "You own the state" below.
|
|
32
32
|
|
|
33
33
|
### Advanced options in a form
|
|
@@ -124,13 +124,14 @@ const includeDrafts = ref(false);
|
|
|
124
124
|
|
|
125
125
|
### You own the state (one-way model)
|
|
126
126
|
|
|
127
|
-
`modelValue` is a **
|
|
127
|
+
`modelValue` is a **one-way** prop and the component never writes it back:
|
|
128
128
|
`BbCollapsible` emits no events and has nothing to emit — it cannot close or
|
|
129
129
|
open itself. `v-model` works purely as a prop binding; every change comes from
|
|
130
130
|
your trigger. Two consequences:
|
|
131
131
|
|
|
132
|
-
- Initialize the boolean explicitly (`const open = ref(false)`)
|
|
133
|
-
is
|
|
132
|
+
- Initialize the boolean explicitly (`const open = ref(false)`). Omitting the
|
|
133
|
+
binding is legal — it defaults to `false`, i.e. closed, and **nothing warns**
|
|
134
|
+
— so a forgotten `v-model` looks like a collapsible that will not open.
|
|
134
135
|
- Don't listen for `update:modelValue` on it; put side effects on the trigger
|
|
135
136
|
that flips the state.
|
|
136
137
|
|
|
@@ -405,8 +406,9 @@ const active = ref<DetailTab | null>('specs');
|
|
|
405
406
|
`BbAccordion`, which wires all of it.
|
|
406
407
|
- **Don't use it as a pure height animator** — if nothing is ever hidden,
|
|
407
408
|
`BbSmoothHeight` is the right tool.
|
|
408
|
-
- **Initialize the model** —
|
|
409
|
-
|
|
409
|
+
- **Initialize the model** — an omitted or `undefined` binding silently
|
|
410
|
+
behaves as closed and does **not** warn, so a missing `v-model` presents as
|
|
411
|
+
"the collapsible is broken" rather than as a mistake.
|
|
410
412
|
|
|
411
413
|
### Accessibility
|
|
412
414
|
|
|
@@ -423,8 +425,8 @@ const active = ref<DetailTab | null>('specs');
|
|
|
423
425
|
| Prop | Type | Default | Required | Description |
|
|
424
426
|
| --- | --- | --- | --- | --- |
|
|
425
427
|
| `eager` | `boolean \| undefined` | | | Prevents rendering content before it's made visible. |
|
|
426
|
-
| `modelValue` | `boolean` | `false` |
|
|
427
|
-
| `transitionDuration` | `number \| undefined` | `
|
|
428
|
+
| `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to trigger opening / closing the collapsible. Optional, matching the runtime: `withDefaults` supplies `false`, so an omitted binding renders closed and Vue never warns. It was typed required while carrying that default, whic… |
|
|
429
|
+
| `transitionDuration` | `number \| undefined` | `250` | | How long the transition has to last in milliseconds |
|
|
428
430
|
|
|
429
431
|
## Events
|
|
430
432
|
|
|
@@ -53,6 +53,12 @@ prop), so always initialise it; `null` is the correct "no color yet" value.
|
|
|
53
53
|
`null` renders an "empty" trigger (nothing painted) and is what you get when
|
|
54
54
|
nothing is chosen yet.
|
|
55
55
|
|
|
56
|
+
**The palette never emits `null`** — every selection is a concrete hex — so
|
|
57
|
+
`null` is an _inbound_ value only. Once the user picks a colour there is no
|
|
58
|
+
built-in way back to empty: clearing is the consumer's job (set the model to
|
|
59
|
+
`null` yourself from a Clear button). Don't write an `update:modelValue`
|
|
60
|
+
handler that branches on `null`; that branch is dead code.
|
|
61
|
+
|
|
56
62
|
The label manager below embraces the emit frequency instead of fighting it: the
|
|
57
63
|
chip repaints on every drag frame (cheap — it's one style binding), while the
|
|
58
64
|
_persistence_ is debounced behind a short timer, so only the trailing edge of a
|
|
@@ -608,7 +614,7 @@ styling (a caret, a highlight). Two props gate interaction:
|
|
|
608
614
|
| `placement` | `Placement \| undefined` | | | Position of the overlay in respect to the related activator. |
|
|
609
615
|
| `readonly` | `boolean \| undefined` | | | Prevent opening the palette while keeping the activator visible. |
|
|
610
616
|
| `swatches` | `boolean \| string[][] \| undefined` | | | Controls swatches display in the picker: - `true` — show the built-in Material-palette swatches - `string[][]` — show custom swatches (each inner array = a column of shades) - `false` / omitted — no swatches section |
|
|
611
|
-
| `transitionDuration` | `number \| undefined` | `
|
|
617
|
+
| `transitionDuration` | `number \| undefined` | `250` | | How long the transition has to last in milliseconds |
|
|
612
618
|
|
|
613
619
|
## Events
|
|
614
620
|
|
package/dist/ai/BbConfirm.md
CHANGED
|
@@ -34,8 +34,12 @@ first — this is that gate.
|
|
|
34
34
|
Mount `<BbConfirm />` **exactly once, at the app root** (`App.vue` under Vue,
|
|
35
35
|
`app.vue` under Nuxt, the `createInertiaApp` render root under Inertia) — a
|
|
36
36
|
single instance serves the whole app, and `confirm()` can then be called from
|
|
37
|
-
anywhere, components and stores alike. Calls queue
|
|
38
|
-
|
|
37
|
+
anywhere, components and stores alike. **Calls do not queue — a new
|
|
38
|
+
`confirm()` supersedes the open one**, and the superseded promise settles
|
|
39
|
+
`false` (an implicit dismiss; no callback runs). So two `confirm()` calls in a
|
|
40
|
+
row show only the second, and the first silently answers "no". If you need both
|
|
41
|
+
questions asked, `await` the first before opening the second.
|
|
42
|
+
Mounting a second host renders every dialog twice
|
|
39
43
|
(nothing warns you). Mounting none is worse: `await confirm(...)` never settles
|
|
40
44
|
and the caller hangs.
|
|
41
45
|
|
|
@@ -376,7 +380,7 @@ the peek closes. For app-lifetime confirms that survive any unmount, call
|
|
|
376
380
|
`useConfirm()` outside a component scope (app setup, a store, module level).
|
|
377
381
|
|
|
378
382
|
`useConfirm()` also returns `dismissAll()` — an imperative escape hatch that
|
|
379
|
-
quietly dismisses the open dialog
|
|
383
|
+
quietly dismisses the open dialog regardless of owner, for
|
|
380
384
|
app-level events like logout or a global error boundary.
|
|
381
385
|
|
|
382
386
|
The classic case for `persistent` is the unsaved-changes prompt: an accidental
|
|
@@ -638,8 +642,11 @@ standard footer and resolve from inside the slot with its `yes` / `no` helpers.
|
|
|
638
642
|
|
|
639
643
|
### Gotchas and anti-patterns
|
|
640
644
|
|
|
641
|
-
- **Don't hand-build a yes/no dialog** out of `BbDialog` + buttons —
|
|
642
|
-
|
|
645
|
+
- **Don't hand-build a yes/no dialog** out of `BbDialog` + buttons — busy
|
|
646
|
+
states, dismissal semantics, ownership and focus handling already live here.
|
|
647
|
+
- **Don't fire two `confirm()` calls without awaiting the first.** The second
|
|
648
|
+
supersedes the first, which settles `false` — so a "delete these two things"
|
|
649
|
+
flow written as two un-awaited confirms deletes nothing and asks once.
|
|
643
650
|
- **Don't forget the `await`** — `confirm(...)` without it never gates
|
|
644
651
|
anything.
|
|
645
652
|
- **Don't call `close()` to "cancel"** a dialog whose buttons haven't run —
|
package/dist/ai/BbDatePicker.md
CHANGED
|
@@ -281,7 +281,7 @@ and digit typeahead; the time rail exposes labelled columns. Always pass a
|
|
|
281
281
|
| `selectable` | `((date: string) => boolean) \| undefined` | | | Predicate invoked per candidate; return `false` to disable it. Receives the value in this `type`'s shape — `YYYY-MM` under `month`, `YYYY` under `year`. |
|
|
282
282
|
| `step` | `number \| undefined` | | | Minute-column granularity and arrow stepping (requires `type="datetime"`). |
|
|
283
283
|
| `time` | `string \| string[] \| null \| undefined` | | | Companion time model (`v-model:time`), 24-hour `HH:mm` / `HH:mm:ss`. With `floating` it is the only carrier of the time; otherwise it mirrors the time inside `modelValue`. Requires `type="datetime"`. |
|
|
284
|
-
| `transitionDuration` | `number \| undefined` | `
|
|
284
|
+
| `transitionDuration` | `number \| undefined` | `250` | | Popover/sheet transition duration in milliseconds. |
|
|
285
285
|
| `type` | `DatePickerType \| undefined` | `"date"` | | What the picker selects, and therefore what it emits. - `date` (default) — a day. - `datetime` — a day plus a time rail beside the calendar. Non-floating values carry the time inside `modelValue`; with `floating` the time travels only throu… |
|
|
286
286
|
| `utc` | `boolean \| undefined` | | | Emit UTC (`...Z`) instead of the local offset. Ignored with `floating`, and therefore with `type="month"`/`type="year"`. |
|
|
287
287
|
|
package/dist/ai/BbDialog.md
CHANGED
|
@@ -355,10 +355,13 @@ Every dismissal path is governed by two props:
|
|
|
355
355
|
- `disabled` — same guard, different intent: the surface is busy (a save in
|
|
356
356
|
flight). Combine with disabling your footer actions.
|
|
357
357
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
the
|
|
361
|
-
|
|
358
|
+
The header **close button bypasses `persistent`, but respects `disabled`**
|
|
359
|
+
(`BbDialog.vue:471-477`): while `disabled` is set the × plays the same deny
|
|
360
|
+
nudge as the backdrop and does not close. So for the common case — a dialog
|
|
361
|
+
that must stay put while a save is in flight — `disabled` alone is enough and
|
|
362
|
+
you keep the ×. Reach for `hide-close` only when the dialog must be resolved
|
|
363
|
+
from the footer _permanently_; pair it with `persistent` and keep a visible
|
|
364
|
+
Cancel so users are never trapped.
|
|
362
365
|
|
|
363
366
|
Backdrop clicks are drag-protected: a text selection that starts inside the
|
|
364
367
|
dialog and releases over the backdrop does not close it — only a genuine click
|
|
@@ -779,12 +782,12 @@ default falls back to `config.adaptive`.
|
|
|
779
782
|
| `fullscreen` | `boolean \| "mobile" \| undefined` | | | Display the dialog fullscreen. Use `'mobile'` to restrict fullscreen to small devices. |
|
|
780
783
|
| `hideClose` | `boolean \| undefined` | | | Hide the default close (×) button. The button is shown by default; set this to remove it (e.g. for a `persistent` dialog you don't want dismissible — the × otherwise still closes a persistent dialog). |
|
|
781
784
|
| `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to open / close the dialog. A dialog with no `v-model` starts closed. |
|
|
782
|
-
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Overrides merged over the offcanvas (mobile) surface's props. The drawer defaults to a bottom, draggable, content-sized sheet (`
|
|
785
|
+
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Overrides merged over the offcanvas (mobile) surface's props. The drawer defaults to a bottom, draggable, content-sized sheet (`side: 'bottom'`, `draggable: true`, `size: 'auto'`); use this to override those, set other drawer-only options (… |
|
|
783
786
|
| `persistent` | `boolean \| undefined` | | | Prevent closing via outside clicks or Escape key. The header close (×) button STILL closes a persistent dialog — that is the documented escape hatch; combine with `hideClose` to remove it, or use `disabled` to block every dismissal. Program… |
|
|
784
787
|
| `size` | `Responsive<NonNullable<number \| ({ size?: any; } & string) \| keyof Sizes \| undefined>> \| undefined` | `"sm"` | | Controls the maximum width of the dialog. Accepts named presets from `'xs'` to `'2xl'`, a custom CSS width string, or a numeric pixel value — or a per-breakpoint map (e.g. `{ default: 'sm', lg: 'lg' }`) to switch width responsively. |
|
|
785
788
|
| `stack` | `string \| undefined` | | | Name of the stack this dialog belongs to. Dialogs sharing the same `stack` value replace one another: only the most recently opened stays visible while the others in the stack are hidden beneath it. Dialogs in different stacks — or with no … |
|
|
786
789
|
| `title` | `string \| undefined` | | | Title text announced to assistive technologies. If omitted, no header is rendered (unless a `header` slot is supplied) and accessibility must be handled manually. |
|
|
787
|
-
| `transitionDuration` | `number \| undefined` | `
|
|
790
|
+
| `transitionDuration` | `number \| undefined` | `250` | | Controls the duration of the open and close animations. |
|
|
788
791
|
|
|
789
792
|
## Events
|
|
790
793
|
|