bitboss-ui 3.0.0-beta.2 → 3.0.0-beta.21
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 +72 -33
- package/dist/ai/BbAccordion.md +3 -3
- package/dist/ai/BbAlert.md +9 -5
- package/dist/ai/BbAsterisk.md +17 -0
- package/dist/ai/BbAvatar.md +12 -3
- package/dist/ai/BbBadge.md +15 -10
- package/dist/ai/BbBadgeButton.md +16 -16
- package/dist/ai/BbBaseButton.md +16 -16
- package/dist/ai/BbBaseCheckbox.md +8 -8
- package/dist/ai/BbBaseCheckboxGroup.md +13 -13
- package/dist/ai/BbBaseCheckboxIcon.md +26 -9
- package/dist/ai/BbBaseColorInput.md +11 -11
- package/dist/ai/BbBaseDatePicker.md +6 -6
- package/dist/ai/BbBaseDatePickerInput.md +15 -15
- package/dist/ai/BbBaseInputContainer.md +12 -12
- package/dist/ai/BbBaseNumberInput.md +8 -8
- package/dist/ai/BbBaseRadio.md +5 -5
- package/dist/ai/BbBaseRadioGroup.md +7 -7
- package/dist/ai/BbBaseRadioIcon.md +25 -9
- package/dist/ai/BbBaseRating.md +5 -5
- package/dist/ai/BbBaseSelect.md +22 -21
- package/dist/ai/BbBaseSlider.md +9 -9
- package/dist/ai/BbBaseSwitch.md +8 -8
- package/dist/ai/BbBaseSwitchGroup.md +13 -13
- package/dist/ai/BbBaseSwitchIcon.md +28 -10
- package/dist/ai/BbBaseTag.md +10 -10
- package/dist/ai/BbBaseTextInput.md +9 -9
- package/dist/ai/BbBaseTextarea.md +9 -9
- package/dist/ai/BbBaseTimePickerInput.md +13 -13
- package/dist/ai/BbBreadcrumbs.md +2 -2
- package/dist/ai/BbButton.md +15 -15
- package/dist/ai/BbCheckbox.md +18 -17
- package/dist/ai/BbCheckboxGroup.md +15 -14
- package/dist/ai/BbCollapsible.md +11 -9
- package/dist/ai/BbColorInput.md +15 -15
- package/dist/ai/BbColorPalette.md +12 -6
- package/dist/ai/BbConfirm.md +12 -5
- package/dist/ai/BbDatePicker.md +13 -13
- package/dist/ai/BbDatePickerInput.md +20 -20
- package/dist/ai/BbDialog.md +78 -12
- package/dist/ai/BbDropdown.md +132 -22
- package/dist/ai/BbDropdownButton.md +12 -12
- package/dist/ai/BbDropdownGroup.md +1 -1
- package/dist/ai/BbDropzone.md +4 -4
- package/dist/ai/BbForm.md +49 -14
- package/dist/ai/BbIcon.md +6 -0
- package/dist/ai/BbIndicator.md +5 -5
- package/dist/ai/BbNumberInput.md +11 -11
- package/dist/ai/BbOffCanvas.md +90 -20
- package/dist/ai/BbPagination.md +3 -3
- package/dist/ai/BbPopover.md +32 -17
- package/dist/ai/BbProgress.md +7 -4
- package/dist/ai/BbRadio.md +16 -15
- package/dist/ai/BbRadioGroup.md +20 -17
- package/dist/ai/BbRating.md +11 -11
- package/dist/ai/BbSelect.md +138 -37
- package/dist/ai/BbSelectPopover.md +40 -41
- package/dist/ai/BbSlider.md +37 -22
- package/dist/ai/BbSmoothHeight.md +1 -1
- package/dist/ai/BbSwitch.md +25 -10
- package/dist/ai/BbSwitchGroup.md +17 -14
- package/dist/ai/BbTable.md +920 -109
- package/dist/ai/BbTabs.md +28 -14
- package/dist/ai/BbTabsList.md +1 -1
- package/dist/ai/BbTabsPanes.md +1 -1
- package/dist/ai/BbTabsRoot.md +10 -10
- package/dist/ai/BbTag.md +14 -14
- package/dist/ai/BbTextInput.md +16 -15
- package/dist/ai/BbTextarea.md +13 -13
- package/dist/ai/BbTimePicker.md +10 -10
- package/dist/ai/BbTimePickerInput.md +17 -17
- package/dist/ai/BbToast.md +1 -1
- package/dist/ai/BbToastPortal.md +1 -1
- package/dist/ai/BbTooltip.md +12 -10
- package/dist/ai/BbTree.md +1 -1
- package/dist/ai/ChipsBox.md +1 -1
- package/dist/ai/CommonInputWrapper.md +10 -10
- package/dist/ai/CommonPopover.md +6 -6
- package/dist/ai/FlatListBox.md +5 -5
- package/dist/ai/GroupedListBox.md +5 -5
- package/dist/ai/ListBox.md +4 -4
- package/dist/ai/OptionsContainer.md +4 -4
- package/dist/ai/changelog.json +128 -2
- package/dist/ai/components.json +917 -100
- package/dist/ai/composables/useBbConfig.md +72 -11
- package/dist/ai/composables/useConfirm.md +5 -3
- package/dist/ai/guides/ai-router.md +9 -4
- package/dist/ai/guides/component-picker.md +18 -18
- package/dist/ai/guides/design-language.md +14 -14
- package/dist/ai/guides/design-tokens.md +25 -18
- package/dist/ai/guides/fetch-items-playbook.md +1 -1
- package/dist/ai/guides/icons-policy.md +11 -5
- package/dist/ai/guides/installation-and-plugin-setup.md +85 -23
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +30 -0
- package/dist/ai/guides/migration/components/bb-checkbox.md +37 -3
- package/dist/ai/guides/migration/components/bb-collapsible.md +5 -5
- package/dist/ai/guides/migration/components/bb-dialog.md +62 -34
- package/dist/ai/guides/migration/components/bb-offcanvas.md +29 -13
- 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-table.md +560 -28
- package/dist/ai/guides/migration/components/bb-text-input.md +6 -6
- package/dist/ai/guides/migration/v2-to-v3.md +260 -89
- package/dist/ai/guides/ssr-prefill.md +120 -0
- package/dist/ai/index.md +10 -9
- package/dist/ai/recipes/inertia/approvals-inbox.md +0 -1
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +0 -1
- package/dist/ai/recipes/inertia/layout-scaffold.md +5 -1
- package/dist/ai/recipes/inertia/ownership-atlas.md +49 -29
- package/dist/ai/recipes/inertia/record-form.md +0 -1
- package/dist/ai/recipes/inertia/records-workspace.md +26 -8
- package/dist/ai/recipes/inertia/upload-center.md +0 -1
- package/dist/ai/recipes/nuxt/approvals-inbox.md +0 -1
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +0 -1
- package/dist/ai/recipes/nuxt/layout-scaffold.md +5 -1
- package/dist/ai/recipes/nuxt/record-form.md +0 -1
- package/dist/ai/recipes/nuxt/records-workspace.md +26 -8
- package/dist/ai/recipes/nuxt/upload-center.md +0 -1
- package/dist/ai/recipes/vue/approvals-inbox.md +0 -1
- package/dist/ai/recipes/vue/inline-edit-workspace.md +0 -1
- package/dist/ai/recipes/vue/layout-scaffold.md +5 -1
- package/dist/ai/recipes/vue/records-workspace.md +26 -8
- package/dist/ai/recipes/vue/upload-center.md +0 -1
- package/dist/ai/source/BbAlert.md +60 -2
- package/dist/ai/source/BbAvatar.md +3 -3
- package/dist/ai/source/BbBadge.md +60 -15
- package/dist/ai/source/BbBadgeButton.md +8 -2
- package/dist/ai/source/BbBaseButton.md +3 -1
- package/dist/ai/source/BbBaseCheckboxGroup.md +6 -2
- package/dist/ai/source/BbBaseDatePicker.md +3 -1
- package/dist/ai/source/BbBaseDatePickerInput.md +5 -1
- package/dist/ai/source/BbBaseInputContainer.md +52 -1
- package/dist/ai/source/BbBaseRadioGroup.md +4 -0
- package/dist/ai/source/BbBaseRating.md +3 -1
- package/dist/ai/source/BbBaseSelect.md +71 -16
- package/dist/ai/source/BbBaseSwitchGroup.md +4 -0
- package/dist/ai/source/BbBaseTimePickerInput.md +5 -1
- package/dist/ai/source/BbBreadcrumbs.md +31 -0
- package/dist/ai/source/BbButton.md +51 -24
- package/dist/ai/source/BbCheckbox.md +15 -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 +175 -19
- package/dist/ai/source/BbDropdown.md +376 -69
- package/dist/ai/source/BbDropdownGroup.md +330 -59
- package/dist/ai/source/BbForm.md +93 -5
- package/dist/ai/source/BbIcon.md +46 -36
- package/dist/ai/source/BbNumberInput.md +3 -4
- package/dist/ai/source/BbOffCanvas.md +474 -194
- package/dist/ai/source/BbPopover.md +24 -17
- package/dist/ai/source/BbProgress.md +2 -2
- package/dist/ai/source/BbRadio.md +15 -1
- package/dist/ai/source/BbRadioGroup.md +3 -1
- package/dist/ai/source/BbSelect.md +50 -2
- package/dist/ai/source/BbSelectPopover.md +171 -23
- package/dist/ai/source/BbSlider.md +3 -4
- package/dist/ai/source/BbSwitch.md +15 -1
- package/dist/ai/source/BbSwitchGroup.md +8 -5
- package/dist/ai/source/BbTable.md +5092 -1446
- 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/ai/source/CommonInputWrapper.md +4 -0
- package/dist/ai/source/CommonPopover.md +6 -0
- package/dist/ai/source/FlatListBox.md +11 -5
- package/dist/ai/source/GroupedListBox.md +7 -5
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +4 -4
- 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/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +22 -16
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +36 -15
- package/dist/components/BbBadge/badgeButtonContext.d.ts +21 -8
- 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/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +30 -28
- package/dist/components/BbBaseCheckboxGroup/types.d.ts +2 -2
- 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 +78 -78
- 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 +138 -138
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +24 -22
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +40 -40
- package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +74 -65
- package/dist/components/BbBaseSelect/types.d.ts +22 -0
- package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +30 -28
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +1 -1
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +104 -104
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +35 -35
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +85 -81
- 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/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +17 -17
- 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 +133 -107
- package/dist/components/BbDialog/types.d.ts +29 -2
- package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +2 -0
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +99 -100
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +2 -2
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +208 -201
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +225 -208
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +21 -21
- package/dist/components/BbDropdown/types.d.ts +20 -5
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +46 -46
- package/dist/components/BbIcon/iconCache.d.ts +33 -0
- package/dist/components/BbIcon/iconCache.js +17 -0
- 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 +254 -208
- package/dist/components/BbOffCanvas/types.d.ts +30 -5
- package/dist/components/BbPagination/BbPagination.vue.d.ts +1 -1
- 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 +27 -23
- package/dist/components/BbSelect/types.d.ts +32 -0
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +221 -213
- 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.d.ts +10 -4
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1433 -600
- package/dist/components/BbTable/BbTableDataRow.d.ts +162 -0
- package/dist/components/BbTable/BbTableDataRow.js +136 -0
- package/dist/components/BbTable/BbTableExpandRow.d.ts +73 -0
- package/dist/components/BbTable/BbTableExpandRow.js +52 -0
- package/dist/components/BbTable/types.d.ts +324 -111
- package/dist/components/BbTable/utils.d.ts +92 -4
- package/dist/components/BbTable/utils.js +71 -36
- 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/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +13 -13
- package/dist/components/BbTooltip/types.d.ts +5 -1
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +17 -17
- package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +83 -83
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +56 -56
- package/dist/composables/useBaseOptions.js +30 -20
- package/dist/composables/useBbConfig.d.ts +27 -6
- package/dist/composables/useBbConfig.js +8 -2
- package/dist/composables/useConfig.d.ts +59 -0
- package/dist/composables/useConfig.js +9 -0
- package/dist/composables/useItemsGetter.d.ts +11 -0
- package/dist/composables/useItemsGetter.js +44 -18
- package/dist/composables/useLocale.js +10 -7
- package/dist/composables/useMobile.js +5 -5
- package/dist/composables/usePrefill.d.ts +21 -2
- package/dist/composables/usePrefill.js +25 -19
- package/dist/composables/useSsrState.d.ts +20 -0
- package/dist/composables/useSsrState.js +13 -0
- package/dist/composables/useTableWidthContext.d.ts +24 -4
- package/dist/composables/useTableWidthContext.js +31 -28
- package/dist/composables/useToast.js +5 -5
- package/dist/deprecation/ai-deprecations.json.d.ts +121 -11
- package/dist/deprecation/ai-deprecations.json.js +1 -1
- package/dist/directives/bbDropdown.d.ts +15 -4
- package/dist/directives/bbDropdown.js +31 -9
- package/dist/directives/createPopoverDirective.d.ts +62 -0
- package/dist/directives/createPopoverDirective.js +63 -23
- package/dist/i18n/locales/cs.json +4 -1
- package/dist/i18n/locales/da.json +4 -1
- package/dist/i18n/locales/de.json +4 -1
- package/dist/i18n/locales/el.json +4 -1
- package/dist/i18n/locales/en.json +4 -1
- package/dist/i18n/locales/es.json +4 -1
- package/dist/i18n/locales/fi.json +4 -1
- package/dist/i18n/locales/fr.json +4 -1
- package/dist/i18n/locales/hu.json +4 -1
- package/dist/i18n/locales/it.json +4 -1
- package/dist/i18n/locales/ja.json +4 -1
- package/dist/i18n/locales/ko.json +4 -1
- package/dist/i18n/locales/nb.json +4 -1
- package/dist/i18n/locales/nl.json +4 -1
- package/dist/i18n/locales/pl.json +4 -1
- package/dist/i18n/locales/pt.json +4 -1
- package/dist/i18n/locales/ro.json +4 -1
- package/dist/i18n/locales/ru.json +4 -1
- package/dist/i18n/locales/sv.json +4 -1
- package/dist/i18n/locales/tr.json +4 -1
- package/dist/i18n/locales/uk.json +4 -1
- package/dist/i18n/locales/zh-cn.json +4 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +69 -67
- package/dist/llms-full.txt +3997 -1458
- package/dist/llms-medium.txt +140 -73
- package/dist/llms.txt +7 -6
- package/dist/locale-blueprint.json +4 -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 +28 -21
- 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/utilities/misc/ssrStateInjectionKey.d.ts +42 -0
- package/dist/utilities/misc/ssrStateInjectionKey.js +4 -0
- package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +45 -27
- package/dist/validated/BbSelect.vue.d.ts +2 -0
- package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/validated/useValidatedField.js +25 -23
- package/dist/vite.js +7 -3
- package/llms.txt +8 -7
- package/package.json +2 -2
- package/scripts/lib/eslint-plugin.d.ts +19 -1
- package/scripts/lib/eslint-plugin.mjs +155 -14
- package/scripts/lib/html-attributes.mjs +91 -0
- package/scripts/lib/validate-bb-markup.mjs +59 -11
- package/dist/assets/svgs/sort.svg_raw.js +0 -4
- package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +0 -3
- package/dist/components/BbBadge/BadgeAppendIcon.vue.js +0 -5
- package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +0 -22
package/dist/ai/BbColorInput.md
CHANGED
|
@@ -496,35 +496,35 @@ const form = useForm({ brandColor: '#4f46e5' });
|
|
|
496
496
|
|
|
497
497
|
| Prop | Type | Default | Required | Description |
|
|
498
498
|
| --- | --- | --- | --- | --- |
|
|
499
|
-
| `adaptive` | `boolean \| undefined` | `
|
|
500
|
-
| `alpha` | `boolean \| undefined` |
|
|
499
|
+
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | When `true`, the color palette opens as a bottom off-canvas sheet on mobile viewports instead of a floating popover; on desktop it stays a popover. Mirrors the adaptive behaviour of `BbSelect`/`BbDatePickerInput`. When unset, falls back to … |
|
|
500
|
+
| `alpha` | `boolean \| undefined` | `false` | | Enable the alpha channel. Shows an opacity slider and uses `#RRGGBBAA` hex8 format. |
|
|
501
501
|
| `append:icon` | `string \| undefined` | | | Name of the icon to be added at the end of the input. |
|
|
502
502
|
| `autocomplete` | `string \| undefined` | | | Guides the browser as to the type of information expected in the field. |
|
|
503
503
|
| `autofocus` | `Booleanish \| undefined` | | | Sets autofocus on page load. |
|
|
504
|
-
| `clearable` | `boolean \| undefined` |
|
|
505
|
-
| `compact` | `boolean \| undefined` |
|
|
504
|
+
| `clearable` | `boolean \| undefined` | `false` | | Displays a clear button when the input has a value and is being interacted with. |
|
|
505
|
+
| `compact` | `boolean \| undefined` | `false` | | Displays the component in a compact version. |
|
|
506
506
|
| `description` | `string \| undefined` | | | Descriptive text displayed below the label and above the input. Unlike the hint it is always visible, and it is linked to the input via `aria-describedby` (after any `errors` / `warnings`, before the `hint`). |
|
|
507
507
|
| `direction` | `InputDirection \| undefined` | | | Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`. |
|
|
508
|
-
| `disabled` | `boolean \| undefined` |
|
|
508
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disables the component. |
|
|
509
509
|
| `errors` | `string \| string[] \| undefined` | | | Can be a string or an array of string containing the messages to display. They render in an `aria-live="polite"` region (announced when they appear) and, while the list is non-empty, are referenced FIRST from the control's `aria-describedby… |
|
|
510
|
-
| `eyeDropper` | `boolean \| undefined` |
|
|
511
|
-
| `hasErrors` | `boolean \| undefined` |
|
|
512
|
-
| `hasWarning` | `boolean \| undefined` |
|
|
513
|
-
| `hideLabel` | `boolean \| undefined` |
|
|
510
|
+
| `eyeDropper` | `boolean \| undefined` | `false` | | Show an eyedropper button to sample any color on screen. Uses the native EyeDropper API — hidden automatically on unsupported browsers. |
|
|
511
|
+
| `hasErrors` | `boolean \| undefined` | `false` | | Define if the component should be in an error state. It usually attaches a CSS class for styling purposes. |
|
|
512
|
+
| `hasWarning` | `boolean \| undefined` | `false` | | Define if the component should be in a warning state. Same chrome as errors with `--bb-warn`; errors take priority. |
|
|
513
|
+
| `hideLabel` | `boolean \| undefined` | `false` | | Visually hides the label of the input while maintaining accessibility. |
|
|
514
514
|
| `hint` | `string \| undefined` | | | Text box to be displayed near the input, usually to indicate instructions. |
|
|
515
515
|
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
516
516
|
| `label` | `string` | | yes | Text content of the label of the element. |
|
|
517
517
|
| `labelMode` | `"floating" \| "outside" \| "inside" \| undefined` | | | Label rendering mode: `outside` places the label above the input, `floating` overlays it on the field and shrinks it when a value is set, `inside` keeps it inside the field. |
|
|
518
518
|
| `labelPosition` | `"left" \| "center" \| "right" \| undefined` | | | Sets the text alignment of the label. |
|
|
519
|
-
| `loading` | `boolean \| undefined` |
|
|
520
|
-
| `modelValue` | `string \| null` |
|
|
519
|
+
| `loading` | `boolean \| undefined` | `false` | | Sets the component in a loading state, usually triggering some visual styles. |
|
|
520
|
+
| `modelValue` | `string \| null` | `null` | yes | Used by v-model. |
|
|
521
521
|
| `name` | `string \| undefined` | | | Defines the name of the input. |
|
|
522
|
-
| `persistentHint` | `boolean \| undefined` |
|
|
522
|
+
| `persistentHint` | `boolean \| undefined` | `false` | | Keeps the hint displayed. |
|
|
523
523
|
| `placeholder` | `string \| undefined` | | | String displayed when there's no data. |
|
|
524
524
|
| `prepend:icon` | `string \| undefined` | | | Name of the icon to be added at the start of the input. |
|
|
525
|
-
| `readonly` | `boolean \| undefined` |
|
|
526
|
-
| `required` | `boolean \| undefined` |
|
|
527
|
-
| `reverse` | `boolean \| undefined` |
|
|
525
|
+
| `readonly` | `boolean \| undefined` | `false` | | Sets the input in a readonly state. |
|
|
526
|
+
| `required` | `boolean \| undefined` | `false` | | Sets the input as required. |
|
|
527
|
+
| `reverse` | `boolean \| undefined` | `false` | | Reverses the layout. Applicable in every direction the order of the label and the input is swapped. |
|
|
528
528
|
| `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 |
|
|
529
529
|
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-text-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are… |
|
|
530
530
|
|
|
@@ -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
|
|
@@ -593,22 +599,22 @@ styling (a caret, a highlight). Two props gate interaction:
|
|
|
593
599
|
| Prop | Type | Default | Required | Description |
|
|
594
600
|
| --- | --- | --- | --- | --- |
|
|
595
601
|
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the `activator` slot is not rendered and click listeners are attached programmatically to the referenced element — mirroring the BbDropdown activator API. |
|
|
596
|
-
| `adaptive` | `boolean \| undefined` | `
|
|
602
|
+
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | When `true`, the palette opens as a bottom off-canvas sheet on mobile viewports instead of a floating popover; on desktop it stays a popover. Mirrors the adaptive behaviour of `BbPopover`/`BbDropdown`/`BbDatePicker`. When unset, falls back … |
|
|
597
603
|
| `alpha` | `boolean \| undefined` | `false` | | Enable the alpha channel. The picker shows an opacity slider and emits `#RRGGBBAA` hex8 values. |
|
|
598
604
|
| `anchor` | `ElementOrComponentRef \| undefined` | | | Element or component ref the popover positions itself relative to. Defaults to the activator element when omitted, allowing the popover to be anchored to a larger container (e.g. the full input row) while a smaller element (e.g. a color dot… |
|
|
599
605
|
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element. Accepts an HTMLElement, a Vue component ref, or a CSS selector string. |
|
|
600
|
-
| `disabled` | `boolean \| undefined` |
|
|
601
|
-
| `disableFlip` | `boolean \| undefined` |
|
|
602
|
-
| `eager` | `boolean \| undefined` |
|
|
606
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disable all interaction (activator and palette). |
|
|
607
|
+
| `disableFlip` | `boolean \| undefined` | `false` | | Disables the automatic flip to the opposite side when the popover would overflow (flipping is on by default). |
|
|
608
|
+
| `eager` | `boolean \| undefined` | `false` | | Prevents rendering content before it's made visible. |
|
|
603
609
|
| `eyeDropper` | `boolean \| undefined` | `false` | | Show an eyedropper button inside the palette to sample any color on screen. Uses the native EyeDropper API — hidden automatically on unsupported browsers. |
|
|
604
610
|
| `label` | `string \| undefined` | | | Accessible label applied to the activator element via `aria-label`. Defaults to the locale string for "Open color picker" when omitted. |
|
|
605
611
|
| `modelValue` | `string \| null` | | yes | v-model: the current color as a `#RRGGBB` hex string (or `#RRGGBBAA` when `alpha` is enabled), or `null` when empty. |
|
|
606
612
|
| `offset` | `number \| undefined` | `4` | | Space the floating container will maintain from the activator. |
|
|
607
613
|
| `padding` | `number \| undefined` | `6` | | Minimum empty space to keep from the edge of the page |
|
|
608
614
|
| `placement` | `Placement \| undefined` | | | Position of the overlay in respect to the related activator. |
|
|
609
|
-
| `readonly` | `boolean \| undefined` |
|
|
615
|
+
| `readonly` | `boolean \| undefined` | `false` | | 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
|
@@ -257,33 +257,33 @@ and digit typeahead; the time rail exposes labelled columns. Always pass a
|
|
|
257
257
|
| --- | --- | --- | --- | --- |
|
|
258
258
|
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the `activator` slot is not rendered and click + ARIA are attached programmatically to the referenced element — mirroring the `BbColorPalette` activator API. |
|
|
259
259
|
| `activeSegment` | `BbDatePickerSegment \| undefined` | | | Which end the time rail edits in range + `type="datetime"` (`v-model:active-segment`). Standalone use manages this internally; an embedding host (the date input) drives it from its focused field. Ignored outside range + datetime. |
|
|
260
|
-
| `adaptive` | `boolean \| undefined` | `
|
|
261
|
-
| `ampm` | `boolean \| undefined` |
|
|
260
|
+
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile, open in a bottom off-canvas sheet instead of a floating popover. When unset, falls back to the global `config.adaptive`. |
|
|
261
|
+
| `ampm` | `boolean \| undefined` | `false` | | 12-hour display with an AM/PM column (requires `type="datetime"`); emits stay 24h. |
|
|
262
262
|
| `anchor` | `ElementOrComponentRef \| undefined` | | | Element or component ref the popover positions itself relative to. Defaults to the activator when omitted (anchor to a larger row while a smaller element stays the click target). |
|
|
263
263
|
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element or CSS selector. |
|
|
264
|
-
| `disabled` | `boolean \| undefined` |
|
|
265
|
-
| `disableFlip` | `boolean \| undefined` |
|
|
266
|
-
| `eager` | `boolean \| undefined` |
|
|
264
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disables the activator and the calendar. |
|
|
265
|
+
| `disableFlip` | `boolean \| undefined` | `false` | | Disable the automatic flip to the opposite side on overflow. |
|
|
266
|
+
| `eager` | `boolean \| undefined` | `false` | | Render popover content before it is first shown. |
|
|
267
267
|
| `firstDayOfWeek` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| undefined` | | | First day of the week (0 = Sunday … 6 = Saturday). |
|
|
268
|
-
| `floating` | `boolean \| undefined` |
|
|
268
|
+
| `floating` | `boolean \| undefined` | `false` | | Emit plain calendar strings instead of zoned ISO instants. Implied (and forced) by `type="month"` and `type="year"`. |
|
|
269
269
|
| `label` | `string \| undefined` | | | Accessible label applied to the activator via `aria-label`. |
|
|
270
270
|
| `max` | `string \| undefined` | | | Maximum selectable value, in this `type`'s shape. A finer bound is accepted and ceiled to the unit, with a warning. |
|
|
271
271
|
| `min` | `string \| undefined` | | | Minimum selectable value, in this `type`'s shape — `YYYY-MM-DD` (`YYYY-MM-DDTHH:mm` with `datetime`, `YYYY-MM` with `month`, `YYYY` with `year`). A finer bound is accepted and floored to the unit, with a warning. |
|
|
272
272
|
| `modelValue` | `string \| string[] \| null` | | yes | v-model value. `null` for empty, a single string for single selection, or a two-element `[start, end]` array when `range` is true. The string shape follows `type`: `YYYY-MM-DD` when `floating` (`YYYY-MM` for `month`, `YYYY` for `year`), oth… |
|
|
273
|
-
| `multiple` | `boolean \| undefined` |
|
|
273
|
+
| `multiple` | `boolean \| undefined` | `false` | | Enables multi-selection: every pick toggles a value in or out of a sorted array, and the panel stays open until it is dismissed. Works in whatever `type` selects — days, months or years — and requires an array `modelValue` (use `[]` for emp… |
|
|
274
274
|
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Extra props forwarded to the `BbOffCanvas` sheet when adaptive on mobile. |
|
|
275
275
|
| `offset` | `number \| undefined` | `4` | | Space the popover keeps from the activator. |
|
|
276
276
|
| `padding` | `number \| undefined` | | | Minimum empty space to keep from the edge of the page. |
|
|
277
277
|
| `placement` | `Placement \| undefined` | | | Position of the popover relative to the activator/anchor. |
|
|
278
|
-
| `range` | `boolean \| undefined` |
|
|
279
|
-
| `readonly` | `boolean \| undefined` |
|
|
280
|
-
| `seconds` | `boolean \| undefined` |
|
|
278
|
+
| `range` | `boolean \| undefined` | `false` | | Enables range selection (`[start, end]`). |
|
|
279
|
+
| `readonly` | `boolean \| undefined` | `false` | | Prevents opening while keeping the activator visible. |
|
|
280
|
+
| `seconds` | `boolean \| undefined` | `false` | | Adds the seconds column (requires `type="datetime"`). |
|
|
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
|
-
| `step` | `number \| undefined` |
|
|
282
|
+
| `step` | `number \| undefined` | `1` | | 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
|
-
| `utc` | `boolean \| undefined` |
|
|
286
|
+
| `utc` | `boolean \| undefined` | `false` | | Emit UTC (`...Z`) instead of the local offset. Ignored with `floating`, and therefore with `type="month"`/`type="year"`. |
|
|
287
287
|
|
|
288
288
|
## Events
|
|
289
289
|
|
|
@@ -702,49 +702,49 @@ label>')` matches nothing; query each segment by its own label instead. See
|
|
|
702
702
|
|
|
703
703
|
| Prop | Type | Default | Required | Description |
|
|
704
704
|
| --- | --- | --- | --- | --- |
|
|
705
|
-
| `adaptive` | `boolean \| undefined` | `
|
|
706
|
-
| `ampm` | `boolean \| undefined` |
|
|
705
|
+
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile the calendar opens inside a bottom off-canvas sheet instead of a floating popover, mirroring the adaptive behaviour of `BbPopover`/`BbSelect`. When unset, falls back to the global `config.adaptive`. |
|
|
706
|
+
| `ampm` | `boolean \| undefined` | `false` | | 12-hour display with an AM/PM segment (requires `type="datetime"`). Purely a field-composition concern: `modelValue` and the `time` model stay 24-hour regardless. Type `A`/`P` (or ArrowUp/Down) to set the meridiem. |
|
|
707
707
|
| `append:icon` | `string \| undefined` | | | Name of the icon to be added at the end of the input. |
|
|
708
708
|
| `autocomplete` | `string \| undefined` | | | Guides the browser as to the type of information expected in the field. |
|
|
709
709
|
| `autofocus` | `Booleanish \| undefined` | | | Sets autofocus on page load. |
|
|
710
|
-
| `clearable` | `boolean \| undefined` |
|
|
711
|
-
| `compact` | `boolean \| undefined` |
|
|
710
|
+
| `clearable` | `boolean \| undefined` | `false` | | Displays a clear button when the input has a value and is being interacted with. |
|
|
711
|
+
| `compact` | `boolean \| undefined` | `false` | | Sets the component in a compact state. |
|
|
712
712
|
| `description` | `string \| undefined` | | | Descriptive text displayed below the label and above the input. Unlike the hint it is always visible, and it is linked to the input via `aria-describedby` (after any `errors` / `warnings`, before the `hint`). |
|
|
713
713
|
| `direction` | `InputDirection \| undefined` | | | Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`. |
|
|
714
714
|
| `disableCalendar` | `boolean \| "mobile" \| "desktop" \| undefined` | | | Disables the calendar: hides the trigger button and prevents the popover from opening. Use `'desktop'` to disable it on desktop only (keeping the calendar for mobile, complementing `disableWriting: 'mobile'`) or `'mobile'` to disable it on … |
|
|
715
|
-
| `disabled` | `boolean \| undefined` |
|
|
716
|
-
| `disableWriting` | `boolean \| "mobile" \| "desktop" \| undefined` |
|
|
715
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disables the component. |
|
|
716
|
+
| `disableWriting` | `boolean \| "mobile" \| "desktop" \| undefined` | `false` | | Disables typing into the input. Use `'mobile'` to disable typing only on mobile, `'desktop'` to disable typing only on desktop. |
|
|
717
717
|
| `errors` | `string \| string[] \| undefined` | | | Can be a string or an array of string containing the messages to display. They render in an `aria-live="polite"` region (announced when they appear) and, while the list is non-empty, are referenced FIRST from the control's `aria-describedby… |
|
|
718
718
|
| `firstDayOfWeek` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| undefined` | | | Defines the first day of the week with `0` meaning Sunday and `6` meaning Saturday. |
|
|
719
|
-
| `floating` | `boolean \| undefined` |
|
|
720
|
-
| `hasErrors` | `boolean \| undefined` |
|
|
721
|
-
| `hasWarning` | `boolean \| undefined` |
|
|
722
|
-
| `hideLabel` | `boolean \| undefined` |
|
|
719
|
+
| `floating` | `boolean \| undefined` | `false` | | If true the date will have a format YYYY-MM-DD instead of the default ISO string. |
|
|
720
|
+
| `hasErrors` | `boolean \| undefined` | `false` | | Define if the component should be in an error state. It usually attaches a CSS class for styling purposes. |
|
|
721
|
+
| `hasWarning` | `boolean \| undefined` | `false` | | Define if the component should be in a warning state. Same chrome as errors with `--bb-warn`; errors take priority. |
|
|
722
|
+
| `hideLabel` | `boolean \| undefined` | `false` | | Visually hides the label of the input while maintaining accessibility. |
|
|
723
723
|
| `hint` | `string \| undefined` | | | Text box to be displayed near the input, usually to indicate instructions. |
|
|
724
724
|
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
725
725
|
| `label` | `string` | | yes | Text content of the label of the element. |
|
|
726
726
|
| `labelMode` | `"floating" \| "outside" \| "inside" \| undefined` | | | Label rendering mode. |
|
|
727
727
|
| `labelPosition` | `"left" \| "center" \| "right" \| undefined` | | | Sets the text alignment of the label. |
|
|
728
|
-
| `loading` | `boolean \| undefined` |
|
|
728
|
+
| `loading` | `boolean \| undefined` | `false` | | Sets the component in a loading state, usually triggering some visual styles. |
|
|
729
729
|
| `max` | `string \| undefined` | | | Maximum selectable date in `YYYY-MM-DD` format — or, with `type="datetime"`, `YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values outside both patterns throw during setup to surface configuration mistakes. |
|
|
730
730
|
| `min` | `string \| undefined` | | | Minimum selectable date in `YYYY-MM-DD` format — or, with `type="datetime"`, `YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values outside both patterns throw during setup to surface configuration mistakes. |
|
|
731
731
|
| `modelValue` | `string \| string[] \| null` | | yes | Used by v-model. Can be null, a single string, or an array of strings based on whether a range or single date is needed. |
|
|
732
732
|
| `name` | `string \| undefined` | | | Defines the name of the input. |
|
|
733
733
|
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Extra props forwarded to the `BbOffCanvas` sheet when `adaptive` is active on mobile (e.g. `title`, `size`, `persistent`). |
|
|
734
|
-
| `persistentHint` | `boolean \| undefined` |
|
|
734
|
+
| `persistentHint` | `boolean \| undefined` | `false` | | Keeps the hint displayed. |
|
|
735
735
|
| `placeholder` | `string \| undefined` | | | String displayed when there's no data. |
|
|
736
736
|
| `prepend:icon` | `string \| undefined` | | | Name of the icon to be added at the start of the input. |
|
|
737
|
-
| `range` | `boolean \| undefined` |
|
|
738
|
-
| `readonly` | `boolean \| undefined` |
|
|
739
|
-
| `required` | `boolean \| undefined` |
|
|
740
|
-
| `reverse` | `boolean \| undefined` |
|
|
741
|
-
| `seconds` | `boolean \| undefined` |
|
|
737
|
+
| `range` | `boolean \| undefined` | `false` | | Selects a range of dates between two dates. It selects all of the days between start and end. |
|
|
738
|
+
| `readonly` | `boolean \| undefined` | `false` | | Sets the input in a readonly state. |
|
|
739
|
+
| `required` | `boolean \| undefined` | `false` | | Sets the input as required. |
|
|
740
|
+
| `reverse` | `boolean \| undefined` | `false` | | Reverses the layout. Applicable in every direction the order of the label and the input is swapped. |
|
|
741
|
+
| `seconds` | `boolean \| undefined` | `false` | | Adds the seconds segment (requires `type="datetime"`). Without it, an incoming value carrying seconds displays truncated and is left untouched until the user commits an edit, at which point seconds zero out. |
|
|
742
742
|
| `selectable` | `((date: string) => boolean) \| undefined` | | | Function that accepts a `string` object and returns a boolean. `false` meaning the date cannot be selected. |
|
|
743
|
-
| `step` | `number \| undefined` |
|
|
743
|
+
| `step` | `number \| undefined` | `1` | | Minute granularity for the calendar's minute column and arrow stepping (requires `type="datetime"`). Constrains what the component produces, never what it accepts: a typed off-grid value (e.g. `10:07` with `step: 15`) is emitted verbatim, a… |
|
|
744
744
|
| `time` | `string \| string[] \| null \| undefined` | | | Companion model for the time part (`v-model:time`), always 24-hour `HH:mm` / `HH:mm:ss` regardless of display. With `floating` it is the only carrier of the time; otherwise it mirrors the time inside `modelValue` (same digits) and writing i… |
|
|
745
745
|
| `transitionDuration` | `number \| undefined` | | | Transition duration, in milliseconds, for the popover appearance. |
|
|
746
|
-
| `type` | `DatePickerType \| undefined` |
|
|
747
|
-
| `utc` | `boolean \| undefined` |
|
|
746
|
+
| `type` | `DatePickerType \| undefined` | `'date'` | | What the field edits, and therefore its segments and emitted shape. - `date` (default) — `DD/MM/YYYY`. - `datetime` — adds the time segments and the calendar's time rail. - `month` — `MM/YYYY`, emitting `YYYY-MM`. - `year` — `YYYY`, emittin… |
|
|
747
|
+
| `utc` | `boolean \| undefined` | `false` | | Emits values as UTC ISO strings (`...Z`) instead of ISO strings carrying the local offset (`...+01:00`). Emission-only: incoming values are parsed identically either way, so the prop can be added or removed without touching stored values. F… |
|
|
748
748
|
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-text-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. While displayed they are… |
|
|
749
749
|
|
|
750
750
|
## Events
|
package/dist/ai/BbDialog.md
CHANGED
|
@@ -186,6 +186,65 @@ Use the `title` slot to restyle just the title text — it stays wired to
|
|
|
186
186
|
removes the whole header (the close button then floats over the body corner
|
|
187
187
|
unless `hide-close`), and you own the accessible name.
|
|
188
188
|
|
|
189
|
+
Add `description` for one muted line under the title — the dialog's subtitle,
|
|
190
|
+
and the only thing `aria-describedby` points at:
|
|
191
|
+
|
|
192
|
+
**A described dialog**
|
|
193
|
+
|
|
194
|
+
```vue
|
|
195
|
+
<template>
|
|
196
|
+
<div
|
|
197
|
+
class="flex w-full max-w-sm flex-col gap-3 rounded-[var(--bb-radius)] border p-4"
|
|
198
|
+
>
|
|
199
|
+
<div>
|
|
200
|
+
<p class="m-0 text-sm font-medium">INV-2044</p>
|
|
201
|
+
<p class="m-0 text-xs text-[color:var(--bb-text-muted)]">
|
|
202
|
+
Northwind Traders · €1,280.00 · paid
|
|
203
|
+
</p>
|
|
204
|
+
</div>
|
|
205
|
+
<div>
|
|
206
|
+
<BbButton
|
|
207
|
+
prepend:icon="lucide:trash-2"
|
|
208
|
+
variant="outline"
|
|
209
|
+
@click="open = true"
|
|
210
|
+
>
|
|
211
|
+
Delete invoice
|
|
212
|
+
</BbButton>
|
|
213
|
+
</div>
|
|
214
|
+
</div>
|
|
215
|
+
<BbDialog
|
|
216
|
+
v-model="open"
|
|
217
|
+
description="This permanently removes the invoice and its payment history."
|
|
218
|
+
title="Delete invoice INV-2044"
|
|
219
|
+
>
|
|
220
|
+
<p class="m-0">
|
|
221
|
+
Anything that does not fit in one line belongs here, in the body — which
|
|
222
|
+
is deliberately not what <code>aria-describedby</code> points at.
|
|
223
|
+
</p>
|
|
224
|
+
<template #footer>
|
|
225
|
+
<div class="flex justify-end gap-2">
|
|
226
|
+
<BbButton variant="ghost" @click="open = false">Cancel</BbButton>
|
|
227
|
+
<BbButton variant="destructive" @click="open = false">Delete</BbButton>
|
|
228
|
+
</div>
|
|
229
|
+
</template>
|
|
230
|
+
</BbDialog>
|
|
231
|
+
</template>
|
|
232
|
+
|
|
233
|
+
<script setup lang="ts">
|
|
234
|
+
import { ref } from 'vue';
|
|
235
|
+
import { BbButton, BbDialog } from 'bitboss-ui';
|
|
236
|
+
|
|
237
|
+
const open = ref(false);
|
|
238
|
+
</script>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Keep it to a sentence; the detail belongs in the body, which is deliberately
|
|
242
|
+
**not** described (pointing `aria-describedby` at arbitrary markup makes a
|
|
243
|
+
screen reader read a whole form as the dialog's description). Use the
|
|
244
|
+
`description` slot when the line needs markup — it receives the prop as `text`.
|
|
245
|
+
A dialog with no `description` keeps its original single-row header, so nothing
|
|
246
|
+
shifts unless you opt in.
|
|
247
|
+
|
|
189
248
|
Prefer `title` (or the `title` slot) for the standard header. The `header` slot
|
|
190
249
|
replaces the entire header on both surfaces — you own the close control and must
|
|
191
250
|
wire `titleId` for `aria-labelledby`. Give your root element `flex-1` so it fills
|
|
@@ -355,10 +414,13 @@ Every dismissal path is governed by two props:
|
|
|
355
414
|
- `disabled` — same guard, different intent: the surface is busy (a save in
|
|
356
415
|
flight). Combine with disabling your footer actions.
|
|
357
416
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
the
|
|
361
|
-
|
|
417
|
+
The header **close button bypasses `persistent`, but respects `disabled`**
|
|
418
|
+
(`BbDialog.vue:471-477`): while `disabled` is set the × plays the same deny
|
|
419
|
+
nudge as the backdrop and does not close. So for the common case — a dialog
|
|
420
|
+
that must stay put while a save is in flight — `disabled` alone is enough and
|
|
421
|
+
you keep the ×. Reach for `hide-close` only when the dialog must be resolved
|
|
422
|
+
from the footer _permanently_; pair it with `persistent` and keep a visible
|
|
423
|
+
Cancel so users are never trapped.
|
|
362
424
|
|
|
363
425
|
Backdrop clicks are drag-protected: a text selection that starts inside the
|
|
364
426
|
dialog and releases over the backdrop does not close it — only a genuine click
|
|
@@ -759,6 +821,8 @@ default falls back to `config.adaptive`.
|
|
|
759
821
|
- The dialog is a true modal (`showModal()`): the browser contains focus within
|
|
760
822
|
it, the page behind is inert, and focus returns to the trigger when it
|
|
761
823
|
closes. `focus-target` only chooses where focus **starts**.
|
|
824
|
+
- `description` is what `aria-describedby` points at, so the dialog announces
|
|
825
|
+
its purpose and not just its name. Nothing else is described — see above.
|
|
762
826
|
- The header close button carries a localized `aria-label` out of the box
|
|
763
827
|
(`config.locale`).
|
|
764
828
|
- Don't lean on `persistent` to trap users. Keep a visible way out (a Cancel or
|
|
@@ -772,19 +836,20 @@ default falls back to `config.adaptive`.
|
|
|
772
836
|
|
|
773
837
|
| Prop | Type | Default | Required | Description |
|
|
774
838
|
| --- | --- | --- | --- | --- |
|
|
775
|
-
| `adaptive` | `boolean \| undefined` | `
|
|
776
|
-
| `
|
|
777
|
-
| `
|
|
839
|
+
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | Adapt the surface to the viewport: render as a `BbOffCanvas` drawer on mobile instead of a centered dialog. The surface is resolved when the dialog opens and stays fixed for that session: resizing across the mobile breakpoint while open nev… |
|
|
840
|
+
| `description` | `string \| undefined` | | | One short line under the title, in the header — the shadcn `DialogDescription` shape: same block as the title, lower hierarchy, muted. It is also what `aria-describedby` points at. That wiring was dropped in v3 along with the old `descripti… |
|
|
841
|
+
| `disabled` | `boolean \| undefined` | `false` | | Disable EVERY user-initiated dismissal: backdrop click, Escape AND the header close (×) button (denied attempts play the deny nudge). Use it while an operation is in flight (e.g. a save) so the dialog cannot be dismissed mid-work. Compare `… |
|
|
842
|
+
| `eager` | `boolean \| undefined` | `false` | | Render dialog content immediately instead of waiting for the first open. |
|
|
778
843
|
| `focusTarget` | `string \| undefined` | | | CSS selector of the element to focus after opening. Defaults to the first tabbable element. |
|
|
779
844
|
| `fullscreen` | `boolean \| "mobile" \| undefined` | | | Display the dialog fullscreen. Use `'mobile'` to restrict fullscreen to small devices. |
|
|
780
|
-
| `hideClose` | `boolean \| undefined` |
|
|
845
|
+
| `hideClose` | `boolean \| undefined` | `false` | | 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
846
|
| `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 (`
|
|
783
|
-
| `persistent` | `boolean \| undefined` |
|
|
847
|
+
| `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 (… |
|
|
848
|
+
| `persistent` | `boolean \| undefined` | `false` | | 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
849
|
| `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
850
|
| `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
851
|
| `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` | `
|
|
852
|
+
| `transitionDuration` | `number \| undefined` | `250` | | Controls the duration of the open and close animations. |
|
|
788
853
|
|
|
789
854
|
## Events
|
|
790
855
|
|
|
@@ -797,9 +862,10 @@ default falls back to `config.adaptive`.
|
|
|
797
862
|
## Slots
|
|
798
863
|
|
|
799
864
|
- `default` — scope: `BbDialogDefaultSlotProps` — Primary body content of the dialog, rendered in the scrollable body area.
|
|
865
|
+
- `description` — scope: `BbDialogDescriptionSlotProps` — Replaces the description text under the title. Renders the header even when `title` and `description` are unset — a slotted description is a description, the same rule `#title` follows.
|
|
800
866
|
- `footer` — scope: `object` — Content rendered in the dialog footer, below the body area. Typically used for action buttons.
|
|
801
867
|
- `header` — scope: `BbDialogHeaderSlotProps` — Replaces the entire dialog header section (title + close button) on both surfaces — the desktop `<dialog>` and the mobile off-canvas. Because it replaces the default close (✕), the slot owns closing: render your own control wired to the `cl…
|
|
802
|
-
- `title` — scope: `BbDialogTitleSlotProps` — Replaces the default title text inside the header. Remains linked to the dialog through `aria-labelledby`.
|
|
868
|
+
- `title` — scope: `BbDialogTitleSlotProps` — Replaces the default title text inside the header. Remains linked to the dialog through `aria-labelledby`. Providing this slot renders the header even when `title` is unset — a slotted title is a title.
|
|
803
869
|
|
|
804
870
|
## See Also
|
|
805
871
|
|