bitboss-ui 2.1.135 → 3.0.0-alpha.4
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/LICENSE +21 -0
- package/README.md +274 -24
- package/bin/bitboss-ui-mcp.mjs +662 -0
- package/bin/bitboss-ui.mjs +710 -0
- package/bin/bitboss-ui.node.test.mjs +113 -0
- package/dist/ai/BbAccordion.md +528 -113
- package/dist/ai/BbAlert.md +380 -197
- package/dist/ai/BbAsterisk.md +46 -0
- package/dist/ai/BbAvatar.md +458 -178
- package/dist/ai/BbBadge.md +697 -225
- package/dist/ai/BbBadgeButton.md +54 -0
- package/dist/ai/BbBaseButton.md +491 -0
- package/dist/ai/BbBaseCheckbox.md +49 -0
- package/dist/ai/BbBaseCheckboxGroup.md +64 -0
- package/dist/ai/BbBaseCheckboxIcon.md +176 -0
- package/dist/ai/BbBaseColorInput.md +64 -0
- package/dist/ai/BbBaseColorPalette.md +39 -0
- package/dist/ai/BbBaseDatePicker.md +42 -0
- package/dist/ai/BbBaseDatePickerInput.md +73 -0
- package/dist/ai/BbBaseInputContainer.md +48 -0
- package/dist/ai/BbBaseNumberInput.md +71 -0
- package/dist/ai/BbBaseRadio.md +46 -0
- package/dist/ai/BbBaseRadioGroup.md +64 -0
- package/dist/ai/BbBaseRadioIcon.md +191 -0
- package/dist/ai/BbBaseRating.md +51 -0
- package/dist/ai/BbBaseSelect.md +88 -0
- package/dist/ai/BbBaseSlider.md +56 -0
- package/dist/ai/BbBaseSwitch.md +49 -0
- package/dist/ai/BbBaseSwitchGroup.md +64 -0
- package/dist/ai/BbBaseSwitchIcon.md +186 -0
- package/dist/ai/BbBaseTag.md +68 -0
- package/dist/ai/BbBaseTextInput.md +75 -0
- package/dist/ai/BbBaseTextarea.md +62 -0
- package/dist/ai/BbBaseTimePickerInput.md +62 -0
- package/dist/ai/BbBreadcrumbs.md +553 -503
- package/dist/ai/BbButton.md +841 -636
- package/dist/ai/BbCheckbox.md +585 -254
- package/dist/ai/BbCheckboxGroup.md +573 -361
- package/dist/ai/BbCollapsible.md +425 -103
- package/dist/ai/BbColorInput.md +536 -323
- package/dist/ai/BbColorPalette.md +569 -330
- package/dist/ai/BbConfirm.md +659 -136
- package/dist/ai/BbConfirmPortal.md +28 -0
- package/dist/ai/BbDatePicker.md +244 -0
- package/dist/ai/BbDatePickerInput.md +720 -388
- package/dist/ai/BbDialog.md +778 -99
- package/dist/ai/BbDropdown.md +1072 -763
- package/dist/ai/BbDropdownButton.md +525 -614
- package/dist/ai/BbDropdownGroup.md +34 -0
- package/dist/ai/BbDropzone.md +1206 -436
- package/dist/ai/BbForm.md +239 -0
- package/dist/ai/BbIcon.md +382 -212
- package/dist/ai/BbIndicator.md +283 -0
- package/dist/ai/BbNumberInput.md +717 -355
- package/dist/ai/BbOffCanvas.md +897 -498
- package/dist/ai/BbPagination.md +489 -535
- package/dist/ai/BbPopover.md +591 -546
- package/dist/ai/BbProgress.md +462 -69
- package/dist/ai/BbRadio.md +352 -229
- package/dist/ai/BbRadioGroup.md +437 -353
- package/dist/ai/BbRating.md +372 -225
- package/dist/ai/BbSelect.md +1399 -536
- package/dist/ai/BbSelectPopover.md +1255 -1578
- package/dist/ai/BbSlider.md +500 -256
- package/dist/ai/BbSmoothHeight.md +485 -139
- package/dist/ai/BbSpinner.md +718 -131
- package/dist/ai/BbSwitch.md +573 -119
- package/dist/ai/BbSwitchGroup.md +521 -214
- package/dist/ai/BbTable.md +1996 -2365
- package/dist/ai/BbTabs.md +1147 -0
- package/dist/ai/BbTabsList.md +29 -0
- package/dist/ai/BbTabsPanes.md +27 -0
- package/dist/ai/BbTabsRoot.md +57 -0
- package/dist/ai/BbTag.md +416 -292
- package/dist/ai/BbTextInput.md +878 -333
- package/dist/ai/BbTextarea.md +850 -255
- package/dist/ai/BbTimePicker.md +231 -0
- package/dist/ai/BbTimePickerInput.md +200 -0
- package/dist/ai/BbToast.md +669 -196
- package/dist/ai/BbToastPortal.md +28 -0
- package/dist/ai/BbTooltip.md +453 -346
- package/dist/ai/BbTree.md +993 -234
- package/dist/ai/ChipsBox.md +27 -199
- package/dist/ai/ClearableButton.md +21 -55
- package/dist/ai/CommaBox.md +25 -200
- package/dist/ai/CommonInputWrapper.md +42 -0
- package/dist/ai/CommonPopover.md +30 -510
- package/dist/ai/ErrorIcon.md +19 -56
- package/dist/ai/FlatListBox.md +35 -379
- package/dist/ai/GroupedListBox.md +37 -535
- package/dist/ai/GuidesComponent.md +21 -0
- package/dist/ai/ListBox.md +38 -231
- package/dist/ai/OptionsContainer.md +34 -253
- package/dist/ai/WarningIcon.md +21 -0
- package/dist/ai/components.json +15897 -0
- package/dist/ai/composables/useBbConfig.md +80 -0
- package/dist/ai/composables/useBbFormContext.md +110 -0
- package/dist/ai/composables/useBbTableContext.md +167 -0
- package/dist/ai/composables/useBbTabsContext.md +118 -0
- package/dist/ai/composables/useBroadcastChannelInstance.md +97 -0
- package/dist/ai/composables/useConfirm.md +313 -0
- package/dist/ai/composables/useCountdown.md +86 -0
- package/dist/ai/composables/useId.md +60 -0
- package/dist/ai/composables/useMobile.md +85 -0
- package/dist/ai/composables/useToast.md +238 -0
- package/dist/ai/guides/agent-contract.md +165 -0
- package/dist/ai/guides/ai-router.md +113 -0
- package/dist/ai/guides/app-layout.md +318 -0
- package/dist/ai/guides/coherence-playbook.md +136 -0
- package/dist/ai/guides/component-picker.md +236 -0
- package/dist/ai/guides/design-language.md +478 -0
- package/dist/ai/guides/design-tokens.md +450 -0
- package/dist/ai/guides/fetch-items-playbook.md +161 -0
- package/dist/ai/guides/floating-bottom-panel.md +130 -0
- package/dist/ai/guides/icons-policy.md +257 -0
- package/dist/ai/guides/inertia-helpers.md +1443 -0
- package/dist/ai/guides/inline-edit-playbook.md +267 -0
- package/dist/ai/guides/installation-and-plugin-setup.md +440 -0
- package/dist/ai/guides/migration/components/bb-alert.md +37 -0
- package/dist/ai/guides/migration/components/bb-avatar.md +24 -0
- package/dist/ai/guides/migration/components/bb-badge.md +110 -0
- package/dist/ai/guides/migration/components/bb-breadcrumbs.md +26 -0
- package/dist/ai/guides/migration/components/bb-button.md +55 -0
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +54 -0
- package/dist/ai/guides/migration/components/bb-checkbox.md +45 -0
- package/dist/ai/guides/migration/components/bb-chip.md +35 -0
- package/dist/ai/guides/migration/components/bb-collapsible.md +26 -0
- package/dist/ai/guides/migration/components/bb-color-input.md +23 -0
- package/dist/ai/guides/migration/components/bb-color-palette.md +31 -0
- package/dist/ai/guides/migration/components/bb-date-picker-input.md +84 -0
- package/dist/ai/guides/migration/components/bb-dialog.md +46 -0
- package/dist/ai/guides/migration/components/bb-dropdown-button.md +31 -0
- package/dist/ai/guides/migration/components/bb-dropdown.md +36 -0
- package/dist/ai/guides/migration/components/bb-dropzone.md +27 -0
- package/dist/ai/guides/migration/components/bb-icon.md +27 -0
- package/dist/ai/guides/migration/components/bb-offcanvas.md +63 -0
- package/dist/ai/guides/migration/components/bb-pagination.md +24 -0
- package/dist/ai/guides/migration/components/bb-popover.md +52 -0
- package/dist/ai/guides/migration/components/bb-rating.md +24 -0
- package/dist/ai/guides/migration/components/bb-select-popover.md +59 -0
- package/dist/ai/guides/migration/components/bb-select.md +69 -0
- package/dist/ai/guides/migration/components/bb-slider.md +25 -0
- package/dist/ai/guides/migration/components/bb-smooth-height.md +45 -0
- package/dist/ai/guides/migration/components/bb-spinner.md +23 -0
- package/dist/ai/guides/migration/components/bb-table.md +66 -0
- package/dist/ai/guides/migration/components/bb-tabs.md +47 -0
- package/dist/ai/guides/migration/components/bb-tag.md +29 -0
- package/dist/ai/guides/migration/components/bb-text-input.md +37 -0
- package/dist/ai/guides/migration/components/bb-toast.md +47 -0
- package/dist/ai/guides/migration/components/bb-tooltip.md +34 -0
- package/dist/ai/guides/migration/components/bb-tree.md +77 -0
- package/dist/ai/guides/migration/components/use-confirm.md +46 -0
- package/dist/ai/guides/migration/v2-to-v3.md +649 -0
- package/dist/ai/guides/options-items-playbook.md +222 -0
- package/dist/ai/guides/page-shell.md +113 -0
- package/dist/ai/guides/validated-forms.md +177 -0
- package/dist/ai/index.md +158 -32
- package/dist/ai/recipes/inertia/approvals-inbox.md +1635 -0
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +1765 -0
- package/dist/ai/recipes/inertia/layout-scaffold.md +385 -0
- package/dist/ai/recipes/inertia/onboarding.md +1791 -0
- package/dist/ai/recipes/inertia/ownership-atlas.md +1327 -0
- package/dist/ai/recipes/inertia/record-form.md +1489 -0
- package/dist/ai/recipes/inertia/records-workspace.md +1416 -0
- package/dist/ai/recipes/inertia/upload-center.md +2003 -0
- package/dist/ai/recipes/inertia/wizard-form.md +1500 -0
- package/dist/ai/recipes/nuxt/approvals-inbox.md +1578 -0
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +1703 -0
- package/dist/ai/recipes/nuxt/layout-scaffold.md +385 -0
- package/dist/ai/recipes/nuxt/onboarding.md +1724 -0
- package/dist/ai/recipes/nuxt/record-form.md +1502 -0
- package/dist/ai/recipes/nuxt/records-workspace.md +1329 -0
- package/dist/ai/recipes/nuxt/upload-center.md +1886 -0
- package/dist/ai/recipes/nuxt/wizard-form.md +1509 -0
- package/dist/ai/recipes/vue/approvals-inbox.md +1496 -0
- package/dist/ai/recipes/vue/inline-edit-workspace.md +1594 -0
- package/dist/ai/recipes/vue/layout-scaffold.md +385 -0
- package/dist/ai/recipes/vue/onboarding.md +1679 -0
- package/dist/ai/recipes/vue/record-form.md +1586 -0
- package/dist/ai/recipes/vue/records-workspace.md +1245 -0
- package/dist/ai/recipes/vue/upload-center.md +1845 -0
- package/dist/ai/recipes/vue/wizard-form.md +1441 -0
- package/dist/ai/source/BbAccordion.md +123 -0
- package/dist/ai/source/BbAlert.md +401 -0
- package/dist/ai/source/BbAsterisk.md +32 -0
- package/dist/ai/source/BbAvatar.md +258 -0
- package/dist/ai/source/BbBadge.md +560 -0
- package/dist/ai/source/BbBadgeButton.md +490 -0
- package/dist/ai/source/BbBaseButton.md +682 -0
- package/dist/ai/source/BbBaseCheckbox.md +461 -0
- package/dist/ai/source/BbBaseCheckboxGroup.md +554 -0
- package/dist/ai/source/BbBaseCheckboxIcon.md +201 -0
- package/dist/ai/source/BbBaseColorInput.md +416 -0
- package/dist/ai/source/BbBaseColorPalette.md +934 -0
- package/dist/ai/source/BbBaseDatePicker.md +1001 -0
- package/dist/ai/source/BbBaseDatePickerInput.md +1785 -0
- package/dist/ai/source/BbBaseInputContainer.md +1210 -0
- package/dist/ai/source/BbBaseNumberInput.md +617 -0
- package/dist/ai/source/BbBaseRadio.md +377 -0
- package/dist/ai/source/BbBaseRadioGroup.md +533 -0
- package/dist/ai/source/BbBaseRadioIcon.md +153 -0
- package/dist/ai/source/BbBaseRating.md +573 -0
- package/dist/ai/source/BbBaseSelect.md +898 -0
- package/dist/ai/source/BbBaseSlider.md +1085 -0
- package/dist/ai/source/BbBaseSwitch.md +246 -0
- package/dist/ai/source/BbBaseSwitchGroup.md +302 -0
- package/dist/ai/source/BbBaseSwitchIcon.md +206 -0
- package/dist/ai/source/BbBaseTag.md +694 -0
- package/dist/ai/source/BbBaseTextInput.md +511 -0
- package/dist/ai/source/BbBaseTextarea.md +480 -0
- package/dist/ai/source/BbBaseTimePickerInput.md +1031 -0
- package/dist/ai/source/BbBreadcrumbs.md +815 -0
- package/dist/ai/source/BbButton.md +1006 -0
- package/dist/ai/source/BbCheckbox.md +326 -0
- package/dist/ai/source/BbCheckboxGroup.md +419 -0
- package/dist/ai/source/BbCollapsible.md +137 -0
- package/dist/ai/source/BbColorInput.md +322 -0
- package/dist/ai/source/BbColorPalette.md +371 -0
- package/dist/ai/source/BbConfirm.md +193 -0
- package/dist/ai/source/BbConfirmPortal.md +74 -0
- package/dist/ai/source/BbDatePicker.md +729 -0
- package/dist/ai/source/BbDatePickerInput.md +525 -0
- package/dist/ai/source/BbDialog.md +818 -0
- package/dist/ai/source/BbDropdown.md +2387 -0
- package/dist/ai/source/BbDropdownButton.md +315 -0
- package/dist/ai/source/BbDropdownGroup.md +1259 -0
- package/dist/ai/source/BbDropzone.md +864 -0
- package/dist/ai/source/BbForm.md +100 -0
- package/dist/ai/source/BbIcon.md +214 -0
- package/dist/ai/source/BbIndicator.md +298 -0
- package/dist/ai/source/BbNumberInput.md +374 -0
- package/dist/ai/source/BbOffCanvas.md +1266 -0
- package/dist/ai/source/BbPagination.md +835 -0
- package/dist/ai/source/BbPopover.md +860 -0
- package/dist/ai/source/BbProgress.md +140 -0
- package/dist/ai/source/BbRadio.md +303 -0
- package/dist/ai/source/BbRadioGroup.md +420 -0
- package/dist/ai/source/BbRating.md +369 -0
- package/dist/ai/source/BbSelect.md +688 -0
- package/dist/ai/source/BbSelectPopover.md +2234 -0
- package/dist/ai/source/BbSlider.md +378 -0
- package/dist/ai/source/BbSmoothHeight.md +265 -0
- package/dist/ai/source/BbSpinner.md +127 -0
- package/dist/ai/source/BbSwitch.md +175 -0
- package/dist/ai/source/BbSwitchGroup.md +240 -0
- package/dist/ai/source/BbTable.md +3433 -0
- package/dist/ai/source/BbTabs.md +403 -0
- package/dist/ai/source/BbTabsList.md +578 -0
- package/dist/ai/source/BbTabsPanes.md +368 -0
- package/dist/ai/source/BbTabsRoot.md +372 -0
- package/dist/ai/source/BbTag.md +390 -0
- package/dist/ai/source/BbTextInput.md +352 -0
- package/dist/ai/source/BbTextarea.md +337 -0
- package/dist/ai/source/BbTimePicker.md +595 -0
- package/dist/ai/source/BbTimePickerInput.md +376 -0
- package/dist/ai/source/BbToast.md +525 -0
- package/dist/ai/source/BbToastPortal.md +482 -0
- package/dist/ai/source/BbTooltip.md +522 -0
- package/dist/ai/source/BbTree.md +323 -0
- package/dist/ai/source/ChipsBox.md +201 -0
- package/dist/ai/source/ClearableButton.md +70 -0
- package/dist/ai/source/CommaBox.md +202 -0
- package/dist/ai/source/CommonInputWrapper.md +554 -0
- package/dist/ai/source/CommonPopover.md +616 -0
- package/dist/ai/source/ErrorIcon.md +43 -0
- package/dist/ai/source/FlatListBox.md +396 -0
- package/dist/ai/source/GroupedListBox.md +540 -0
- package/dist/ai/source/GuidesComponent.md +383 -0
- package/dist/ai/source/ListBox.md +238 -0
- package/dist/ai/source/OptionsContainer.md +191 -0
- package/dist/ai/source/WarningIcon.md +47 -0
- package/dist/alert-variants.d.ts +19 -0
- package/dist/assets/css/reset.css_inline.js +4 -0
- package/dist/assets/svgs/alert.svg_raw.js +4 -0
- package/dist/assets/svgs/calendar.svg_raw.js +4 -0
- package/dist/assets/svgs/check_stroke.svg_raw.js +4 -0
- package/dist/assets/svgs/chevron_down.svg_raw.js +4 -0
- package/dist/assets/svgs/chevron_right.svg_raw.js +4 -0
- package/dist/assets/svgs/clear.svg_raw.js +4 -0
- package/dist/assets/svgs/clock.svg_raw.js +4 -0
- package/dist/assets/svgs/error.svg_raw.js +4 -0
- package/dist/assets/svgs/search.svg_raw.js +4 -0
- package/dist/assets/svgs/sort.svg_raw.js +4 -0
- package/dist/assets/svgs/spinner.svg_raw.js +4 -0
- package/dist/assets/svgs/user.svg_raw.js +4 -0
- package/dist/badge-variants.d.ts +19 -0
- package/dist/button-variants.d.ts +21 -0
- package/dist/components/BbAccordion/BbAccordion.vue.d.ts +9 -3
- package/dist/components/BbAccordion/BbAccordion.vue.js +6 -0
- package/dist/components/BbAccordion/BbAccordion.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/components/BbAccordion/types.d.ts +12 -8
- package/dist/components/BbAlert/BbAlert.vue.d.ts +12 -3
- package/dist/components/BbAlert/BbAlert.vue.js +6 -0
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/components/BbAlert/types.d.ts +56 -12
- package/dist/components/BbAsterisk/BbAsterisk.vue.d.ts +3 -0
- package/dist/components/BbAsterisk/BbAsterisk.vue.js +6 -0
- package/dist/components/BbAsterisk/BbAsterisk.vue_vue_type_script_setup_true_lang.js +13 -0
- package/dist/components/BbAvatar/BbAvatar.vue.d.ts +5 -0
- package/dist/components/BbAvatar/BbAvatar.vue.js +6 -0
- package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/components/BbAvatar/types.d.ts +6 -5
- package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +3 -0
- package/dist/components/BbBadge/BadgeAppendIcon.vue.js +5 -0
- package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +22 -0
- package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +15 -0
- package/dist/components/BbBadge/BadgeBodyContent.vue.js +5 -0
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/BbBadge/BbBadge.vue.d.ts +8 -1
- package/dist/components/BbBadge/BbBadge.vue.js +6 -0
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/components/BbBadge/BbBadgeButton.vue.d.ts +12 -0
- package/dist/components/BbBadge/BbBadgeButton.vue.js +5 -0
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/components/BbBadge/badgeButtonContext.d.ts +27 -0
- package/dist/components/BbBadge/badgeButtonContext.js +5 -0
- package/dist/components/BbBadge/types.d.ts +61 -16
- package/dist/components/BbBaseButton/BbBaseButton.vue.d.ts +13 -0
- package/dist/components/BbBaseButton/BbBaseButton.vue.js +6 -0
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +171 -0
- package/dist/components/BbBaseButton/RouterComponent.vue.js +5 -0
- package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/BbBaseButton/types.d.ts +191 -0
- package/dist/components/BbBaseButton/types.js +33 -0
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue.d.ts +40 -0
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue.js +6 -0
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +145 -0
- package/dist/components/BbBaseCheckbox/types.d.ts +224 -0
- package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue.d.ts +19 -0
- package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue.js +6 -0
- package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +190 -0
- package/dist/components/BbBaseCheckboxGroup/types.d.ts +257 -0
- package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.d.ts +4 -0
- package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.js +6 -0
- package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/components/BbBaseCheckboxIcon/types.d.ts +47 -0
- package/dist/components/BbBaseColorInput/BbBaseColorInput.vue.d.ts +42 -0
- package/dist/components/BbBaseColorInput/BbBaseColorInput.vue.js +6 -0
- package/dist/components/BbBaseColorInput/BbBaseColorInput.vue_vue_type_script_setup_true_lang.js +178 -0
- package/dist/components/BbBaseColorInput/types.d.ts +210 -0
- package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue.d.ts +13 -0
- package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue.js +6 -0
- package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue_vue_type_script_setup_true_lang.js +395 -0
- package/dist/components/BbBaseColorPalette/types.d.ts +40 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue.js +6 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +300 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +44 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.js +5 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +310 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue.d.ts +5 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue.js +5 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue.d.ts +5 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue.js +5 -0
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/components/BbBaseDatePicker/typeahead.d.ts +112 -0
- package/dist/components/BbBaseDatePicker/typeahead.js +37 -0
- package/dist/components/BbBaseDatePicker/types.d.ts +97 -0
- package/dist/components/BbBaseDatePicker/useDatePickerContext.d.ts +58 -0
- package/dist/components/BbBaseDatePicker/useDatePickerContext.js +11 -0
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +30 -0
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.js +6 -0
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +716 -0
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue.d.ts +30 -0
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue.js +6 -0
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue_vue_type_script_setup_true_lang.js +204 -0
- package/dist/components/BbBaseDatePickerInput/types.d.ts +311 -0
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +17 -0
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.js +6 -0
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +191 -0
- package/dist/components/BbBaseInputContainer/types.d.ts +197 -0
- package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue.d.ts +52 -0
- package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue.js +6 -0
- package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue_vue_type_script_setup_true_lang.js +215 -0
- package/dist/components/BbBaseNumberInput/types.d.ts +211 -0
- package/dist/components/BbBaseRadio/BbBaseRadio.vue.d.ts +33 -0
- package/dist/components/BbBaseRadio/BbBaseRadio.vue.js +6 -0
- package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/components/BbBaseRadio/types.d.ts +179 -0
- package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue.d.ts +19 -0
- package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue.js +6 -0
- package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +177 -0
- package/dist/components/BbBaseRadioGroup/types.d.ts +223 -0
- package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.d.ts +4 -0
- package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.js +6 -0
- package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/BbBaseRadioIcon/types.d.ts +41 -0
- package/dist/components/BbBaseRating/BbBaseRating.vue.d.ts +38 -0
- package/dist/components/BbBaseRating/BbBaseRating.vue.js +6 -0
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +184 -0
- package/dist/components/BbBaseRating/types.d.ts +168 -0
- package/dist/components/BbBaseSelect/BbBaseSelect.vue.d.ts +19 -0
- package/dist/components/BbBaseSelect/BbBaseSelect.vue.js +6 -0
- package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +307 -0
- package/dist/components/BbBaseSelect/types.d.ts +297 -0
- package/dist/components/BbBaseSlider/BbBaseSlider.vue.d.ts +35 -0
- package/dist/components/BbBaseSlider/BbBaseSlider.vue.js +6 -0
- package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +324 -0
- package/dist/components/BbBaseSlider/types.d.ts +200 -0
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue.d.ts +35 -0
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue.js +6 -0
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +146 -0
- package/dist/components/BbBaseSwitch/types.d.ts +10 -0
- package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue.d.ts +19 -0
- package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue.js +6 -0
- package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +190 -0
- package/dist/components/BbBaseSwitchGroup/types.d.ts +8 -0
- package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.d.ts +4 -0
- package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.js +6 -0
- package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/BbBaseSwitchIcon/types.d.ts +48 -0
- package/dist/components/BbBaseTag/BbBaseTag.vue.d.ts +50 -0
- package/dist/components/BbBaseTag/BbBaseTag.vue.js +6 -0
- package/dist/components/BbBaseTag/BbBaseTag.vue_vue_type_script_setup_true_lang.js +266 -0
- package/dist/components/BbBaseTag/types.d.ts +160 -0
- package/dist/components/BbBaseTextInput/BbBaseTextInput.vue.d.ts +45 -0
- package/dist/components/BbBaseTextInput/BbBaseTextInput.vue.js +6 -0
- package/dist/components/BbBaseTextInput/BbBaseTextInput.vue_vue_type_script_setup_true_lang.js +200 -0
- package/dist/components/BbBaseTextInput/types.d.ts +209 -0
- package/dist/components/BbBaseTextarea/BbBaseTextarea.vue.d.ts +39 -0
- package/dist/components/BbBaseTextarea/BbBaseTextarea.vue.js +6 -0
- package/dist/components/BbBaseTextarea/BbBaseTextarea.vue_vue_type_script_setup_true_lang.js +175 -0
- package/dist/components/BbBaseTextarea/types.d.ts +170 -0
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +27 -0
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.js +6 -0
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +522 -0
- package/dist/components/BbBaseTimePickerInput/types.d.ts +151 -0
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.d.ts +0 -1
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.js +6 -0
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +224 -0
- package/dist/components/BbBreadcrumbs/estimateBreadcrumbItemWidth.js +47 -0
- package/dist/components/BbBreadcrumbs/types.d.ts +37 -22
- package/dist/components/BbButton/BbButton.vue.d.ts +6 -5
- package/dist/components/BbButton/BbButton.vue.js +6 -0
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +181 -0
- package/dist/components/BbButton/types.d.ts +48 -47
- package/dist/components/BbCheckbox/BbCheckbox.vue.d.ts +4 -3
- package/dist/components/BbCheckbox/BbCheckbox.vue.js +6 -0
- package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +146 -0
- package/dist/components/BbCheckbox/types.d.ts +31 -10
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.d.ts +2 -13
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.js +6 -0
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +190 -0
- package/dist/components/BbCheckboxGroup/types.d.ts +51 -23
- package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +2 -1
- package/dist/components/BbCollapsible/BbCollapsible.vue.js +6 -0
- package/dist/components/BbCollapsible/BbCollapsible.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/BbCollapsible/types.d.ts +13 -8
- package/dist/components/BbColorInput/BbColorInput.vue.d.ts +10 -1
- package/dist/components/BbColorInput/BbColorInput.vue.js +6 -0
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +177 -0
- package/dist/components/BbColorInput/types.d.ts +44 -11
- package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +5 -8
- package/dist/components/BbColorPalette/BbColorPalette.vue.js +5 -0
- package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +126 -0
- package/dist/components/BbColorPalette/types.d.ts +71 -52
- package/dist/components/BbConfirm/BbConfirm.vue.js +6 -0
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +138 -0
- package/dist/components/BbConfirm/BbConfirmPortal.vue.d.ts +5 -6
- package/dist/components/BbConfirm/BbConfirmPortal.vue.js +5 -0
- package/dist/components/BbConfirm/BbConfirmPortal.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +37 -0
- package/dist/components/BbDatePicker/BbDatePicker.vue.js +6 -0
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +319 -0
- package/dist/components/BbDatePicker/types.d.ts +159 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +3 -1
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.js +6 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +179 -0
- package/dist/components/BbDatePickerInput/types.d.ts +134 -16
- package/dist/components/BbDialog/BbDialog.vue.d.ts +14 -6
- package/dist/components/BbDialog/BbDialog.vue.js +6 -0
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +214 -0
- package/dist/components/BbDialog/types.d.ts +146 -1
- package/dist/components/BbDialog/useDialogStack.d.ts +5 -0
- package/dist/components/BbDialog/useDialogStack.js +20 -0
- package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +24 -0
- package/dist/components/BbDropdown/AdaptiveDropdown.vue.js +6 -0
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +116 -0
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +14 -7
- package/dist/components/BbDropdown/BbDropdown.vue.js +6 -0
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +561 -0
- package/dist/components/BbDropdown/BbDropdownGroup.vue.d.ts +44 -0
- package/dist/components/BbDropdown/BbDropdownGroup.vue.js +5 -0
- package/dist/components/BbDropdown/BbDropdownGroup.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +31 -0
- package/dist/components/BbDropdown/BbDropdownList.vue.js +6 -0
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +470 -0
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue.d.ts +16 -0
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue.js +5 -0
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +168 -0
- package/dist/components/BbDropdown/normalizeGroups.d.ts +18 -0
- package/dist/components/BbDropdown/normalizeGroups.js +46 -0
- package/dist/components/BbDropdown/types.d.ts +468 -46
- package/dist/components/BbDropdown/types.js +4 -0
- package/dist/components/BbDropdown/useDropdownContext.d.ts +89 -0
- package/dist/components/BbDropdown/useDropdownContext.js +9 -0
- package/dist/components/BbDropdown/useDropdownGroupRegistry.d.ts +108 -0
- package/dist/components/BbDropdown/useDropdownGroupRegistry.js +5 -0
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +3 -3
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.js +6 -0
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +119 -0
- package/dist/components/BbDropdownButton/types.d.ts +47 -52
- package/dist/components/BbDropzone/BbDropzone.vue.d.ts +5 -4
- package/dist/components/BbDropzone/BbDropzone.vue.js +6 -0
- package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +308 -0
- package/dist/components/BbDropzone/types.d.ts +77 -8
- package/dist/components/BbIcon/BbIcon.vue.d.ts +3 -2
- package/dist/components/BbIcon/BbIcon.vue.js +6 -0
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/components/BbIcon/types.d.ts +6 -19
- package/dist/components/BbIndicator/BbIndicator.vue.d.ts +14 -0
- package/dist/components/BbIndicator/BbIndicator.vue.js +6 -0
- package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/components/BbIndicator/types.d.ts +49 -0
- package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +12 -6
- package/dist/components/BbNumberInput/BbNumberInput.vue.js +6 -0
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +194 -0
- package/dist/components/BbNumberInput/types.d.ts +40 -4
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +16 -10
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.js +6 -0
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +284 -0
- package/dist/components/BbOffCanvas/types.d.ts +71 -39
- package/dist/components/BbOffCanvas/useOffCanvasStack.d.ts +25 -0
- package/dist/components/BbOffCanvas/useOffCanvasStack.js +68 -0
- package/dist/components/BbPagination/BbPagination.vue.d.ts +9 -4
- package/dist/components/BbPagination/BbPagination.vue.js +6 -0
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +244 -0
- package/dist/components/BbPagination/paginationFit.d.ts +38 -0
- package/dist/components/BbPagination/paginationFit.js +13 -0
- package/dist/components/BbPagination/types.d.ts +51 -16
- package/dist/components/BbPopover/BbPopover.vue.d.ts +16 -15
- package/dist/components/BbPopover/BbPopover.vue.js +6 -0
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +309 -0
- package/dist/components/BbPopover/escapeStack.d.ts +6 -0
- package/dist/components/BbPopover/escapeStack.js +10 -0
- package/dist/components/BbPopover/types.d.ts +90 -31
- package/dist/components/BbProgress/BbProgress.vue.d.ts +1 -0
- package/dist/components/BbProgress/BbProgress.vue.js +6 -0
- package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/BbProgress/types.d.ts +15 -1
- package/dist/components/BbRadio/BbRadio.vue.d.ts +5 -3
- package/dist/components/BbRadio/BbRadio.vue.js +6 -0
- package/dist/components/BbRadio/BbRadio.vue_vue_type_script_setup_true_lang.js +133 -0
- package/dist/components/BbRadio/types.d.ts +32 -9
- package/dist/components/BbRadioGroup/BbRadioGroup.vue.d.ts +4 -14
- package/dist/components/BbRadioGroup/BbRadioGroup.vue.js +6 -0
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +186 -0
- package/dist/components/BbRadioGroup/types.d.ts +48 -22
- package/dist/components/BbRating/BbRating.vue.d.ts +4 -1
- package/dist/components/BbRating/BbRating.vue.js +6 -0
- package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +150 -0
- package/dist/components/BbRating/types.d.ts +44 -10
- package/dist/components/BbSelect/BbSelect.vue.d.ts +2 -11
- package/dist/components/BbSelect/BbSelect.vue.js +6 -0
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +241 -0
- package/dist/components/BbSelect/types.d.ts +112 -59
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +1 -10
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.js +6 -0
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +639 -0
- package/dist/components/BbSelectPopover/types.d.ts +197 -105
- package/dist/components/BbSlider/BbSlider.vue.d.ts +3 -6
- package/dist/components/BbSlider/BbSlider.vue.js +6 -0
- package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +166 -0
- package/dist/components/BbSlider/types.d.ts +44 -13
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +3 -1
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.js +6 -0
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue_vue_type_script_setup_true_lang.js +79 -0
- package/dist/components/BbSmoothHeight/types.d.ts +17 -2
- package/dist/components/BbSpinner/BbSpinner.vue.d.ts +1 -1
- package/dist/components/BbSpinner/BbSpinner.vue.js +6 -0
- package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/BbSpinner/types.d.ts +10 -3
- package/dist/components/BbSwitch/BbSwitch.vue.d.ts +5 -3
- package/dist/components/BbSwitch/BbSwitch.vue.js +6 -0
- package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +142 -0
- package/dist/components/BbSwitch/types.d.ts +3 -1
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.d.ts +4 -14
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.js +6 -0
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +190 -0
- package/dist/components/BbSwitchGroup/types.d.ts +3 -22
- package/dist/components/BbTable/BbTable.vue.d.ts +58 -31
- package/dist/components/BbTable/BbTable.vue.js +6 -0
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +900 -0
- package/dist/components/BbTable/types.d.ts +213 -37
- package/dist/components/BbTable/utils.d.ts +9 -1
- package/dist/components/BbTable/utils.js +53 -0
- package/dist/components/BbTabs/BbTabs.vue.d.ts +20 -0
- package/dist/components/BbTabs/BbTabs.vue.js +6 -0
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/components/BbTabs/BbTabsList.vue.d.ts +19 -0
- package/dist/components/BbTabs/BbTabsList.vue.js +6 -0
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +123 -0
- package/dist/components/BbTabs/BbTabsPanes.vue.d.ts +16 -0
- package/dist/components/BbTabs/BbTabsPanes.vue.js +6 -0
- package/dist/components/BbTabs/BbTabsPanes.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/components/BbTabs/BbTabsRoot.vue.d.ts +20 -0
- package/dist/components/BbTabs/BbTabsRoot.vue.js +5 -0
- package/dist/components/BbTabs/BbTabsRoot.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/components/BbTabs/types.d.ts +264 -0
- package/dist/components/BbTag/BbTag.vue.d.ts +19 -6
- package/dist/components/BbTag/BbTag.vue.js +6 -0
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +187 -0
- package/dist/components/BbTag/types.d.ts +55 -17
- package/dist/components/BbTextInput/BbTextInput.vue.d.ts +10 -1
- package/dist/components/BbTextInput/BbTextInput.vue.js +6 -0
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +195 -0
- package/dist/components/BbTextInput/types.d.ts +31 -4
- package/dist/components/BbTextarea/BbTextarea.vue.d.ts +10 -1
- package/dist/components/BbTextarea/BbTextarea.vue.js +6 -0
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +178 -0
- package/dist/components/BbTextarea/types.d.ts +33 -2
- package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +33 -0
- package/dist/components/BbTimePicker/BbTimePicker.vue.js +6 -0
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +244 -0
- package/dist/components/BbTimePicker/types.d.ts +133 -0
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.d.ts +25 -0
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.js +6 -0
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +157 -0
- package/dist/components/BbTimePickerInput/types.d.ts +174 -0
- package/dist/components/BbToast/BbToast.vue.d.ts +2 -3
- package/dist/components/BbToast/BbToast.vue.js +6 -0
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +39 -0
- package/dist/components/BbToast/BbToastMessage.vue.d.ts +17 -8
- package/dist/components/BbToast/BbToastMessage.vue.js +5 -0
- package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +170 -0
- package/dist/components/BbToast/BbToastPortal.vue.d.ts +30 -0
- package/dist/components/BbToast/BbToastPortal.vue.js +5 -0
- package/dist/components/BbToast/BbToastPortal.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/components/BbToast/BbToastRegion.vue.d.ts +8 -0
- package/dist/components/BbToast/BbToastRegion.vue.js +5 -0
- package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/components/BbToast/types.d.ts +69 -5
- package/dist/components/BbTooltip/BbTooltip.vue.d.ts +10 -3
- package/dist/components/BbTooltip/BbTooltip.vue.js +6 -0
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +160 -0
- package/dist/components/BbTooltip/types.d.ts +69 -11
- package/dist/components/BbTree/BbTree.vue.d.ts +28 -13
- package/dist/components/BbTree/BbTree.vue.js +6 -0
- package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/components/BbTree/BbTreeLevel.vue.d.ts +19 -0
- package/dist/components/BbTree/BbTreeLevel.vue.js +5 -0
- package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +94 -0
- package/dist/components/BbTree/context.d.ts +17 -0
- package/dist/components/BbTree/context.js +4 -0
- package/dist/components/BbTree/types.d.ts +94 -41
- package/dist/components/ChipsBox/ChipsBox.vue.d.ts +2 -1
- package/dist/components/ChipsBox/ChipsBox.vue.js +5 -0
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +98 -0
- package/dist/components/ChipsBox/types.d.ts +12 -5
- package/dist/components/ClearableButton/ClearableButton.vue.d.ts +2 -1
- package/dist/components/ClearableButton/ClearableButton.vue.js +6 -0
- package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/components/ClearableButton/types.d.ts +7 -1
- package/dist/components/CloseIcon/CloseButton.vue.d.ts +5 -0
- package/dist/components/CloseIcon/CloseButton.vue.js +7 -0
- package/dist/components/CloseIcon/CloseButton.vue_vue_type_script_setup_true_lang.js +23 -0
- package/dist/components/CloseIcon/types.d.ts +2 -0
- package/dist/components/CommaBox/CommaBox.vue.d.ts +2 -1
- package/dist/components/CommaBox/CommaBox.vue.js +6 -0
- package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/components/CommaBox/types.d.ts +6 -7
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.d.ts +19 -0
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.js +6 -0
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/components/CommonInputWrapper/types.d.ts +96 -0
- package/dist/components/CommonPopover/CommonPopover.vue.d.ts +9 -3
- package/dist/components/CommonPopover/CommonPopover.vue.js +6 -0
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +160 -0
- package/dist/components/CommonPopover/types.d.ts +65 -16
- package/dist/components/ErrorIcon/ErrorIcon.vue.d.ts +2 -0
- package/dist/components/ErrorIcon/ErrorIcon.vue.js +6 -0
- package/dist/components/ErrorIcon/ErrorIcon.vue_vue_type_script_setup_true_lang.js +16 -0
- package/dist/components/FlatListBox/FlatListBox.vue.d.ts +2 -5
- package/dist/components/FlatListBox/FlatListBox.vue.js +5 -0
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +167 -0
- package/dist/components/FlatListBox/types.d.ts +1 -1
- package/dist/components/GroupedListBox/GroupedListBox.vue.d.ts +2 -5
- package/dist/components/GroupedListBox/GroupedListBox.vue.js +5 -0
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +218 -0
- package/dist/components/ListBox/ListBox.vue.d.ts +3 -6
- package/dist/components/ListBox/ListBox.vue.js +5 -0
- package/dist/components/ListBox/ListBox.vue_vue_type_script_setup_true_lang.js +112 -0
- package/dist/components/ListBox/types.d.ts +1 -1
- package/dist/components/OptionsContainer/OptionsContainer.vue.d.ts +1 -0
- package/dist/components/OptionsContainer/OptionsContainer.vue.js +5 -0
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/OptionsContainer/types.d.ts +14 -24
- package/dist/components/Transitions/ScaleFade.vue.d.ts +2 -2
- package/dist/components/Transitions/ScaleFade.vue.js +5 -0
- package/dist/components/Transitions/ScaleFade.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/components/Transitions/Slide.vue.d.ts +15 -0
- package/dist/components/Transitions/Slide.vue.js +7 -0
- package/dist/components/Transitions/Slide.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/WarningIcon/WarningIcon.vue.d.ts +5 -0
- package/dist/components/WarningIcon/WarningIcon.vue.js +6 -0
- package/dist/components/WarningIcon/WarningIcon.vue_vue_type_script_setup_true_lang.js +16 -0
- package/dist/components/WarningIcon/types.d.ts +3 -0
- package/dist/composables/__testResets.d.ts +1 -0
- package/dist/composables/useActiveInactiveState.d.ts +4 -0
- package/dist/composables/useActiveInactiveState.js +21 -0
- package/dist/composables/useBaseOptions.d.ts +3 -3
- package/dist/composables/useBaseOptions.js +31 -0
- package/dist/composables/useBbConfig.d.ts +8 -37
- package/dist/composables/useBbConfig.js +5 -0
- package/dist/composables/useBbDropdownContext.d.ts +89 -0
- package/dist/composables/useBbDropdownContext.js +46 -0
- package/dist/composables/useBbFormContext.d.ts +90 -0
- package/dist/composables/useBbFormContext.js +69 -0
- package/dist/composables/useBbTableContext.d.ts +195 -0
- package/dist/composables/useBbTableContext.js +208 -0
- package/dist/composables/useBbTabsContext.d.ts +111 -0
- package/dist/composables/useBbTabsContext.js +225 -0
- package/dist/composables/useBreakpoint.d.ts +13 -0
- package/dist/composables/useBreakpoint.js +39 -0
- package/dist/composables/useBroadcastChannelInstance.d.ts +1 -3
- package/dist/composables/useBroadcastChannelInstance.js +39 -0
- package/dist/composables/useCancelableFunction.js +37 -0
- package/dist/composables/useClosingInert.d.ts +28 -0
- package/dist/composables/useClosingInert.js +23 -0
- package/dist/composables/useCoherence.js +16 -0
- package/dist/composables/useConfirm.d.ts +278 -68
- package/dist/composables/useConfirm.js +130 -0
- package/dist/composables/useCountdown.js +42 -0
- package/dist/composables/useHashedWatcher.d.ts +17 -0
- package/dist/composables/useHashedWatcher.js +14 -0
- package/dist/composables/useId.d.ts +3 -2
- package/dist/composables/useIndexById.js +16 -0
- package/dist/composables/useInertiaPage.d.ts +10 -0
- package/dist/composables/useInertiaPage.js +8 -0
- package/dist/composables/useItemText.js +17 -0
- package/dist/composables/useItemValue.js +9 -0
- package/dist/composables/useItemsGetter.d.ts +1 -1
- package/dist/composables/useItemsGetter.js +30 -0
- package/dist/composables/useListboxFocus.js +66 -0
- package/dist/composables/useLocale.d.ts +1 -1
- package/dist/composables/useLocale.js +11 -0
- package/dist/composables/useLogger.d.ts +1 -1
- package/dist/composables/useLogger.js +10 -0
- package/dist/composables/useMinimalQueue.d.ts +1 -1
- package/dist/composables/useMobile.js +7 -0
- package/dist/composables/useOnFalsy.d.ts +2 -0
- package/dist/composables/useOnFalsy.js +9 -0
- package/dist/composables/useOnTruthy.d.ts +7 -0
- package/dist/composables/useOnTruthy.js +9 -0
- package/dist/composables/usePrefill.d.ts +2 -1
- package/dist/composables/usePrefill.js +24 -0
- package/dist/composables/useQuery.d.ts +15 -3
- package/dist/composables/useQuery.js +42 -0
- package/dist/composables/useRoute.js +11 -0
- package/dist/composables/useRouter.js +8 -0
- package/dist/composables/useSafeArea.d.ts +51 -0
- package/dist/composables/useSafeArea.js +16 -0
- package/dist/composables/useSegmentedFields.d.ts +104 -0
- package/dist/composables/useSegmentedFields.js +159 -0
- package/dist/composables/useTableWidthContext.d.ts +5 -0
- package/dist/composables/useTableWidthContext.js +42 -0
- package/dist/composables/useToast.d.ts +40 -70
- package/dist/composables/useToast.js +58 -0
- package/dist/composables/useTopLayer.d.ts +9 -0
- package/dist/composables/useTopLayer.js +7 -0
- package/dist/composables/useUntil.js +13 -0
- package/dist/composables/useViewportWidth.d.ts +17 -0
- package/dist/composables/useViewportWidth.js +6 -0
- package/dist/confirm-variants.d.ts +17 -0
- package/dist/deprecation/ai-deprecations.json.d.ts +784 -0
- package/dist/deprecation/ai-deprecations.json.js +4 -0
- package/dist/deprecation/removedProps.d.ts +3 -0
- package/dist/deprecation/removedProps.js +13 -0
- package/dist/directives/bbColor.d.ts +65 -0
- package/dist/directives/bbColor.js +24 -0
- package/dist/directives/bbDate.d.ts +66 -0
- package/dist/directives/bbDate.js +24 -0
- package/dist/directives/bbDropdown.d.ts +15 -11
- package/dist/directives/bbDropdown.js +23 -0
- package/dist/directives/bbTime.d.ts +64 -0
- package/dist/directives/bbTime.js +24 -0
- package/dist/directives/bbTooltip.d.ts +16 -11
- package/dist/directives/bbTooltip.js +24 -0
- package/dist/directives/createPopoverDirective.js +54 -0
- package/dist/dropdown-item-variants.d.ts +17 -0
- package/dist/i18n/index.d.ts +51 -3
- package/dist/i18n/index.js +27 -0
- package/dist/i18n/locales/cs.json +115 -0
- package/dist/i18n/locales/da.json +115 -0
- package/dist/i18n/locales/de.json +115 -0
- package/dist/i18n/locales/el.json +115 -0
- package/dist/i18n/locales/en.json +115 -0
- package/dist/i18n/locales/es.json +115 -0
- package/dist/i18n/locales/fi.json +115 -0
- package/dist/i18n/locales/fr.json +115 -0
- package/dist/i18n/locales/hu.json +115 -0
- package/dist/i18n/locales/it.json +115 -0
- package/dist/i18n/locales/ja.json +115 -0
- package/dist/i18n/locales/ko.json +115 -0
- package/dist/i18n/locales/nb.json +115 -0
- package/dist/i18n/locales/nl.json +115 -0
- package/dist/i18n/locales/pl.json +115 -0
- package/dist/i18n/locales/pt.json +115 -0
- package/dist/i18n/locales/ro.json +115 -0
- package/dist/i18n/locales/ru.json +115 -0
- package/dist/i18n/locales/sv.json +115 -0
- package/dist/i18n/locales/tr.json +115 -0
- package/dist/i18n/locales/uk.json +115 -0
- package/dist/i18n/locales/zh-cn.json +115 -0
- package/dist/icons-whitelist.d.ts +8 -0
- package/dist/index.d.ts +96 -79
- package/dist/index.js +76 -82
- package/dist/indicator-variants.d.ts +20 -0
- package/dist/llms-full.txt +79703 -0
- package/dist/llms-medium.txt +1514 -0
- package/dist/llms.txt +105 -0
- package/dist/locale-blueprint.json +141 -0
- package/dist/locale-registry.d.ts +37 -0
- package/dist/nuxt-module.d.ts +3 -0
- package/dist/nuxt.js +19 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.js +22 -0
- package/dist/reset.css +1 -0
- package/dist/reset.d.ts +0 -0
- package/dist/runtime/nuxt-plugin.d.ts +2 -0
- package/dist/runtime/nuxt-plugin.js +24 -0
- package/dist/styles.css +2 -0
- package/dist/styles.d.ts +0 -0
- package/dist/toast-variants.d.ts +20 -0
- package/dist/tooltip-variants.d.ts +17 -0
- package/dist/types/ActionButton.d.ts +32 -0
- package/dist/types/AlertVariant.d.ts +16 -0
- package/dist/types/BadgeVariant.d.ts +16 -0
- package/dist/types/ButtonVariant.d.ts +17 -0
- package/dist/types/Classes.d.ts +1 -1
- package/dist/types/ColumnName.d.ts +1 -1
- package/dist/types/CommonProps.d.ts +68 -277
- package/dist/types/Config.d.ts +84 -0
- package/dist/types/ConfirmVariant.d.ts +15 -0
- package/dist/types/DropdownItemVariant.d.ts +18 -0
- package/dist/types/Icon.d.ts +5 -7
- package/dist/types/IndicatorVariant.d.ts +16 -0
- package/dist/types/InputDirection.d.ts +15 -0
- package/dist/types/ItemAccessor.d.ts +21 -0
- package/dist/types/Placement.d.ts +6 -0
- package/dist/types/ResponsiveSize.d.ts +20 -0
- package/dist/types/SizeScale.d.ts +8 -0
- package/dist/types/ToastVariant.d.ts +17 -0
- package/dist/types/TooltipVariant.d.ts +18 -0
- package/dist/utilities/functions/bytesToUnit.d.ts +2 -0
- package/dist/utilities/functions/bytesToUnit.js +18 -0
- package/dist/utilities/functions/clampPrecision.js +10 -0
- package/dist/utilities/functions/convertDateValue.d.ts +23 -10
- package/dist/utilities/functions/convertDateValue.js +12 -0
- package/dist/utilities/functions/deburr.js +5 -0
- package/dist/utilities/functions/empty.js +5 -0
- package/dist/utilities/functions/flattenTree.d.ts +1 -1
- package/dist/utilities/functions/hash.js +5 -0
- package/dist/utilities/functions/isDateDisabled.d.ts +1 -0
- package/dist/utilities/functions/isDateDisabled.js +20 -0
- package/dist/utilities/functions/isEqual.js +5 -0
- package/dist/utilities/functions/isNotEmpty.js +5 -0
- package/dist/utilities/functions/matchAnyKey.d.ts +1 -1
- package/dist/utilities/functions/matchAnyKey.js +15 -0
- package/dist/utilities/functions/parseSize.d.ts +1 -1
- package/dist/utilities/functions/parseSize.js +15 -0
- package/dist/utilities/functions/percentage.js +11 -0
- package/dist/utilities/functions/pipe.d.ts +1 -1
- package/dist/utilities/functions/reject.d.ts +25 -0
- package/dist/utilities/functions/reject.js +28 -0
- package/dist/utilities/functions/resolveEnumProp.d.ts +19 -0
- package/dist/utilities/functions/resolveEnumProp.js +5 -0
- package/dist/utilities/functions/slotKey.d.ts +13 -0
- package/dist/utilities/functions/slotKey.js +4 -0
- package/dist/utilities/functions/sort.d.ts +2 -2
- package/dist/utilities/functions/sort.js +19 -0
- package/dist/utilities/functions/throttle.js +5 -0
- package/dist/utilities/functions/waitFor.d.ts +9 -2
- package/dist/utilities/functions/waitFor.js +14 -0
- package/dist/utilities/functions/warnRemovedAttrs.d.ts +11 -0
- package/dist/utilities/functions/warnRemovedAttrs.js +20 -0
- package/dist/utilities/functions/when.js +5 -0
- package/dist/utilities/misc/iconsInjectionKey.d.ts +15 -0
- package/dist/utilities/misc/iconsInjectionKey.js +4 -0
- package/dist/utilities/misc/transitions.d.ts +5 -0
- package/dist/utilities/misc/transitions.js +8 -0
- package/dist/utils/injectLibraryStyles.d.ts +6 -0
- package/dist/utils/injectLibraryStyles.js +38 -0
- package/dist/validated/BbCheckbox.vue.d.ts +29 -0
- package/dist/validated/BbCheckbox.vue.js +5 -0
- package/dist/validated/BbCheckbox.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/validated/BbCheckboxGroup.vue.d.ts +34 -0
- package/dist/validated/BbCheckboxGroup.vue.js +5 -0
- package/dist/validated/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +82 -0
- package/dist/validated/BbColorInput.vue.d.ts +36 -0
- package/dist/validated/BbColorInput.vue.js +5 -0
- package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/validated/BbDatePickerInput.vue.d.ts +41 -0
- package/dist/validated/BbDatePickerInput.vue.js +5 -0
- package/dist/validated/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +90 -0
- package/dist/validated/BbDropzone.vue.d.ts +24 -0
- package/dist/validated/BbDropzone.vue.js +5 -0
- package/dist/validated/BbDropzone.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/validated/BbForm.vue.d.ts +28 -0
- package/dist/validated/BbForm.vue.js +5 -0
- package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/validated/BbNumberInput.vue.d.ts +36 -0
- package/dist/validated/BbNumberInput.vue.js +5 -0
- package/dist/validated/BbNumberInput.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/validated/BbRadioGroup.vue.d.ts +34 -0
- package/dist/validated/BbRadioGroup.vue.js +5 -0
- package/dist/validated/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/validated/BbRating.vue.d.ts +30 -0
- package/dist/validated/BbRating.vue.js +5 -0
- package/dist/validated/BbRating.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/validated/BbSelect.vue.d.ts +46 -0
- package/dist/validated/BbSelect.vue.js +5 -0
- package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +109 -0
- package/dist/validated/BbSlider.vue.d.ts +36 -0
- package/dist/validated/BbSlider.vue.js +5 -0
- package/dist/validated/BbSlider.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/validated/BbSwitch.vue.d.ts +29 -0
- package/dist/validated/BbSwitch.vue.js +5 -0
- package/dist/validated/BbSwitch.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/validated/BbSwitchGroup.vue.d.ts +34 -0
- package/dist/validated/BbSwitchGroup.vue.js +5 -0
- package/dist/validated/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +82 -0
- package/dist/validated/BbTag.vue.d.ts +36 -0
- package/dist/validated/BbTag.vue.js +5 -0
- package/dist/validated/BbTag.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/validated/BbTextInput.vue.d.ts +36 -0
- package/dist/validated/BbTextInput.vue.js +5 -0
- package/dist/validated/BbTextInput.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/validated/BbTextarea.vue.d.ts +36 -0
- package/dist/validated/BbTextarea.vue.js +5 -0
- package/dist/validated/BbTextarea.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/validated/BbTimePickerInput.vue.d.ts +37 -0
- package/dist/validated/BbTimePickerInput.vue.js +5 -0
- package/dist/validated/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/validated/index.d.ts +29 -0
- package/dist/validated/useValidatedField.d.ts +93 -0
- package/dist/validated/useValidatedField.js +51 -0
- package/dist/validated.js +21 -0
- package/dist/vite-plugin.d.ts +261 -0
- package/dist/vite.js +603 -0
- package/llms.txt +107 -0
- package/package.json +181 -60
- package/scripts/lib/__fixtures__/validated-manifest.json +65 -0
- package/scripts/lib/ensure-manifest.mjs +39 -0
- package/scripts/lib/eslint-plugin-autofix.node.test.mjs +109 -0
- package/scripts/lib/eslint-plugin-recommended.node.test.mjs +87 -0
- package/scripts/lib/eslint-plugin-slots.node.test.mjs +271 -0
- package/scripts/lib/eslint-plugin.mjs +702 -0
- package/scripts/lib/eslint-plugin.node.test.mjs +193 -0
- package/scripts/lib/html-attributes.mjs +191 -0
- package/scripts/lib/mcp-config.mjs +126 -0
- package/scripts/lib/migrate-fix.mjs +115 -0
- package/scripts/lib/validate-bb-markup.mjs +488 -0
- package/dist/ai/BaseButton.md +0 -449
- package/dist/ai/BaseCheckbox.md +0 -512
- package/dist/ai/BaseCheckboxGroup.md +0 -597
- package/dist/ai/BaseColorInput.md +0 -461
- package/dist/ai/BaseDatePicker.md +0 -739
- package/dist/ai/BaseDatePickerInput.md +0 -1517
- package/dist/ai/BaseDialog.md +0 -610
- package/dist/ai/BaseInputContainer.md +0 -570
- package/dist/ai/BaseNumberInput.md +0 -509
- package/dist/ai/BaseRadio.md +0 -405
- package/dist/ai/BaseRadioGroup.md +0 -535
- package/dist/ai/BaseRating.md +0 -489
- package/dist/ai/BaseSelect.md +0 -1742
- package/dist/ai/BaseSlider.md +0 -871
- package/dist/ai/BaseSwitch.md +0 -322
- package/dist/ai/BaseSwitchGroup.md +0 -298
- package/dist/ai/BaseTag.md +0 -623
- package/dist/ai/BaseTextInput.md +0 -392
- package/dist/ai/BaseTextarea.md +0 -398
- package/dist/ai/BbChip.md +0 -147
- package/dist/ai/BbIntersection.md +0 -120
- package/dist/ai/BbRatio.md +0 -61
- package/dist/ai/BbRows.md +0 -307
- package/dist/ai/BbTab.md +0 -950
- package/dist/ai/CommonInputInnerContainer.md +0 -414
- package/dist/ai/CommonInputOuterContainer.md +0 -55
- package/dist/components/BaseButton/BaseButton.vue.d.ts +0 -14
- package/dist/components/BaseButton/types.d.ts +0 -159
- package/dist/components/BaseCheckbox/BaseCheckbox.vue.d.ts +0 -39
- package/dist/components/BaseCheckbox/types.d.ts +0 -213
- package/dist/components/BaseCheckboxGroup/BaseCheckboxGroup.vue.d.ts +0 -30
- package/dist/components/BaseCheckboxGroup/types.d.ts +0 -282
- package/dist/components/BaseColorInput/BaseColorInput.vue.d.ts +0 -35
- package/dist/components/BaseColorInput/ColorPalette.vue.d.ts +0 -13
- package/dist/components/BaseColorInput/types.d.ts +0 -233
- package/dist/components/BaseDatePicker/BaseDatePickerHeader.vue.d.ts +0 -15
- package/dist/components/BaseDatePicker/BaseDatePickerInputDaySelector.vue.d.ts +0 -58
- package/dist/components/BaseDatePicker/BaseDatePickerMonthSelector.vue.d.ts +0 -12
- package/dist/components/BaseDatePicker/BaseDatePickerYearSelector.vue.d.ts +0 -12
- package/dist/components/BaseDatePicker/types.d.ts +0 -100
- package/dist/components/BaseDatePickerInput/BaseDatePickerInput.vue.d.ts +0 -26
- package/dist/components/BaseDatePickerInput/types.d.ts +0 -206
- package/dist/components/BaseDialog/BaseDialog.vue.d.ts +0 -37
- package/dist/components/BaseDialog/types.d.ts +0 -180
- package/dist/components/BaseInputContainer/BaseInputContainer.vue.d.ts +0 -18
- package/dist/components/BaseInputContainer/types.d.ts +0 -126
- package/dist/components/BaseNumberInput/BaseNumberInput.vue.d.ts +0 -46
- package/dist/components/BaseNumberInput/types.d.ts +0 -191
- package/dist/components/BaseRadio/BaseRadio.vue.d.ts +0 -31
- package/dist/components/BaseRadio/types.d.ts +0 -173
- package/dist/components/BaseRadioGroup/BaseRadioGroup.vue.d.ts +0 -30
- package/dist/components/BaseRadioGroup/types.d.ts +0 -240
- package/dist/components/BaseRating/BaseRating.vue.d.ts +0 -35
- package/dist/components/BaseRating/types.d.ts +0 -144
- package/dist/components/BaseSelect/BaseSelect.vue.d.ts +0 -28
- package/dist/components/BaseSelect/types.d.ts +0 -470
- package/dist/components/BaseSlider/BaseSlider.vue.d.ts +0 -38
- package/dist/components/BaseSlider/types.d.ts +0 -201
- package/dist/components/BaseSwitch/BaseSwitch.vue.d.ts +0 -34
- package/dist/components/BaseSwitch/types.d.ts +0 -25
- package/dist/components/BaseSwitchGroup/BaseSwitchGroup.vue.d.ts +0 -30
- package/dist/components/BaseSwitchGroup/types.d.ts +0 -8
- package/dist/components/BaseTag/BaseTag.vue.d.ts +0 -37
- package/dist/components/BaseTag/types.d.ts +0 -136
- package/dist/components/BaseTextInput/BaseTextInput.vue.d.ts +0 -33
- package/dist/components/BaseTextInput/types.d.ts +0 -166
- package/dist/components/BaseTextarea/BaseTextarea.vue.d.ts +0 -31
- package/dist/components/BaseTextarea/types.d.ts +0 -151
- package/dist/components/BbChip/BbChip.vue.d.ts +0 -17
- package/dist/components/BbChip/types.d.ts +0 -23
- package/dist/components/BbIntersection/BbIntersection.vue.d.ts +0 -23
- package/dist/components/BbIntersection/types.d.ts +0 -36
- package/dist/components/BbRatio/BbRatio.vue.d.ts +0 -14
- package/dist/components/BbRatio/types.d.ts +0 -15
- package/dist/components/BbRows/BbRows.vue.d.ts +0 -62
- package/dist/components/BbRows/types.d.ts +0 -21
- package/dist/components/BbTab/BbTab.vue.d.ts +0 -27
- package/dist/components/BbTab/types.d.ts +0 -186
- package/dist/components/CommonInputInnerContainer/CommonInputInnerContainer.vue.d.ts +0 -15
- package/dist/components/CommonInputInnerContainer/types.d.ts +0 -47
- package/dist/components/CommonInputOuterContainer/CommonInputOuterContainer.vue.d.ts +0 -11
- package/dist/components/CommonInputOuterContainer/types.d.ts +0 -16
- package/dist/composables/useModalsState.d.ts +0 -5
- package/dist/composables/useQueue.d.ts +0 -58
- package/dist/composables/useWizard.d.ts +0 -85
- package/dist/i18n/en.d.ts +0 -67
- package/dist/i18n/it.d.ts +0 -67
- package/dist/index.css +0 -2
- package/dist/index100.js +0 -6
- package/dist/index101.js +0 -300
- package/dist/index102.js +0 -16
- package/dist/index103.js +0 -16
- package/dist/index104.js +0 -27
- package/dist/index109.js +0 -19
- package/dist/index11.js +0 -42
- package/dist/index110.js +0 -12
- package/dist/index111.js +0 -19
- package/dist/index112.js +0 -25
- package/dist/index114.js +0 -7
- package/dist/index115.js +0 -241
- package/dist/index116.js +0 -5
- package/dist/index117.js +0 -42
- package/dist/index118.js +0 -5
- package/dist/index119.js +0 -53
- package/dist/index120.js +0 -5
- package/dist/index121.js +0 -32
- package/dist/index122.js +0 -5
- package/dist/index124.js +0 -52
- package/dist/index125.js +0 -5
- package/dist/index126.js +0 -223
- package/dist/index128.js +0 -6
- package/dist/index129.js +0 -162
- package/dist/index13.js +0 -92
- package/dist/index130.js +0 -25
- package/dist/index131.js +0 -51
- package/dist/index132.js +0 -5
- package/dist/index133.js +0 -607
- package/dist/index135.js +0 -6
- package/dist/index136.js +0 -14
- package/dist/index137.js +0 -153
- package/dist/index139.js +0 -6
- package/dist/index14.js +0 -306
- package/dist/index140.js +0 -224
- package/dist/index141.js +0 -5
- package/dist/index143.js +0 -128
- package/dist/index145.js +0 -6
- package/dist/index146.js +0 -8
- package/dist/index147.js +0 -182
- package/dist/index149.js +0 -6
- package/dist/index15.js +0 -10
- package/dist/index151.js +0 -4
- package/dist/index152.js +0 -95
- package/dist/index154.js +0 -6
- package/dist/index155.js +0 -168
- package/dist/index157.js +0 -6
- package/dist/index158.js +0 -145
- package/dist/index16.js +0 -59
- package/dist/index160.js +0 -6
- package/dist/index161.js +0 -53
- package/dist/index163.js +0 -6
- package/dist/index164.js +0 -16
- package/dist/index166.js +0 -35
- package/dist/index168.js +0 -6
- package/dist/index169.js +0 -89
- package/dist/index171.js +0 -6
- package/dist/index172.js +0 -82
- package/dist/index174.js +0 -6
- package/dist/index175.js +0 -38
- package/dist/index176.js +0 -461
- package/dist/index177.js +0 -28
- package/dist/index178.js +0 -66
- package/dist/index18.js +0 -35
- package/dist/index180.js +0 -162
- package/dist/index181.js +0 -5
- package/dist/index182.js +0 -217
- package/dist/index183.js +0 -5
- package/dist/index184.js +0 -112
- package/dist/index185.js +0 -5
- package/dist/index186.js +0 -459
- package/dist/index188.js +0 -6
- package/dist/index19.js +0 -4
- package/dist/index192.js +0 -268
- package/dist/index194.js +0 -6
- package/dist/index195.js +0 -124
- package/dist/index197.js +0 -6
- package/dist/index198.js +0 -174
- package/dist/index2.js +0 -20
- package/dist/index20.js +0 -9
- package/dist/index200.js +0 -6
- package/dist/index201.js +0 -224
- package/dist/index203.js +0 -6
- package/dist/index204.js +0 -135
- package/dist/index206.js +0 -6
- package/dist/index207.js +0 -5
- package/dist/index208.js +0 -170
- package/dist/index21.js +0 -35
- package/dist/index210.js +0 -6
- package/dist/index211.js +0 -37
- package/dist/index213.js +0 -6
- package/dist/index214.js +0 -63
- package/dist/index216.js +0 -6
- package/dist/index217.js +0 -74
- package/dist/index219.js +0 -6
- package/dist/index22.js +0 -6
- package/dist/index220.js +0 -65
- package/dist/index222.js +0 -6
- package/dist/index223.js +0 -67
- package/dist/index225.js +0 -6
- package/dist/index226.js +0 -41
- package/dist/index228.js +0 -6
- package/dist/index229.js +0 -10
- package/dist/index23.js +0 -7
- package/dist/index230.js +0 -22
- package/dist/index232.js +0 -8
- package/dist/index233.js +0 -297
- package/dist/index235.js +0 -6
- package/dist/index236.js +0 -47
- package/dist/index237.js +0 -165
- package/dist/index239.js +0 -6
- package/dist/index24.js +0 -9
- package/dist/index241.js +0 -159
- package/dist/index243.js +0 -6
- package/dist/index244.js +0 -134
- package/dist/index246.js +0 -6
- package/dist/index247.js +0 -167
- package/dist/index249.js +0 -6
- package/dist/index25.js +0 -24
- package/dist/index250.js +0 -147
- package/dist/index252.js +0 -6
- package/dist/index253.js +0 -35
- package/dist/index255.js +0 -6
- package/dist/index256.js +0 -65
- package/dist/index258.js +0 -6
- package/dist/index259.js +0 -19
- package/dist/index260.js +0 -5
- package/dist/index261.js +0 -160
- package/dist/index263.js +0 -6
- package/dist/index264.js +0 -60
- package/dist/index266.js +0 -6
- package/dist/index267.js +0 -134
- package/dist/index269.js +0 -6
- package/dist/index27.js +0 -4
- package/dist/index271.js +0 -206
- package/dist/index273.js +0 -6
- package/dist/index274.js +0 -85
- package/dist/index275.js +0 -5
- package/dist/index276.js +0 -55
- package/dist/index277.js +0 -5
- package/dist/index278.js +0 -164
- package/dist/index28.js +0 -8
- package/dist/index280.js +0 -6
- package/dist/index281.js +0 -145
- package/dist/index283.js +0 -6
- package/dist/index284.js +0 -11
- package/dist/index285.js +0 -200
- package/dist/index287.js +0 -6
- package/dist/index288.js +0 -241
- package/dist/index29.js +0 -7
- package/dist/index290.js +0 -6
- package/dist/index291.js +0 -21
- package/dist/index293.js +0 -6
- package/dist/index294.js +0 -125
- package/dist/index296.js +0 -6
- package/dist/index297.js +0 -161
- package/dist/index299.js +0 -6
- package/dist/index30.js +0 -118
- package/dist/index300.js +0 -127
- package/dist/index302.js +0 -6
- package/dist/index303.js +0 -20
- package/dist/index305.js +0 -6
- package/dist/index306.js +0 -116
- package/dist/index307.js +0 -5
- package/dist/index308.js +0 -507
- package/dist/index31.js +0 -10
- package/dist/index310.js +0 -6
- package/dist/index311.js +0 -196
- package/dist/index313.js +0 -6
- package/dist/index314.js +0 -142
- package/dist/index316.js +0 -6
- package/dist/index317.js +0 -134
- package/dist/index319.js +0 -6
- package/dist/index32.js +0 -28
- package/dist/index320.js +0 -162
- package/dist/index322.js +0 -6
- package/dist/index323.js +0 -319
- package/dist/index325.js +0 -6
- package/dist/index326.js +0 -40
- package/dist/index327.js +0 -43
- package/dist/index328.js +0 -665
- package/dist/index33.js +0 -5
- package/dist/index330.js +0 -6
- package/dist/index331.js +0 -155
- package/dist/index333.js +0 -6
- package/dist/index334.js +0 -142
- package/dist/index336.js +0 -6
- package/dist/index337.js +0 -155
- package/dist/index339.js +0 -6
- package/dist/index34.js +0 -112
- package/dist/index340.js +0 -58
- package/dist/index341.js +0 -5
- package/dist/index342.js +0 -20
- package/dist/index344.js +0 -6
- package/dist/index345.js +0 -142
- package/dist/index347.js +0 -6
- package/dist/index349.js +0 -109
- package/dist/index351.js +0 -6
- package/dist/index352.js +0 -55
- package/dist/index353.js +0 -24
- package/dist/index354.js +0 -23
- package/dist/index355.js +0 -839
- package/dist/index356.js +0 -474
- package/dist/index357.js +0 -52
- package/dist/index358.js +0 -7
- package/dist/index36.js +0 -6
- package/dist/index38.js +0 -63
- package/dist/index39.js +0 -63
- package/dist/index40.js +0 -9
- package/dist/index42.js +0 -8
- package/dist/index43.js +0 -179
- package/dist/index44.js +0 -21
- package/dist/index46.js +0 -385
- package/dist/index48.js +0 -6
- package/dist/index49.js +0 -33
- package/dist/index5.js +0 -34
- package/dist/index50.js +0 -12
- package/dist/index51.js +0 -8
- package/dist/index52.js +0 -106
- package/dist/index53.js +0 -330
- package/dist/index54.js +0 -97
- package/dist/index55.js +0 -328
- package/dist/index56.js +0 -28
- package/dist/index57.js +0 -102
- package/dist/index58.js +0 -157
- package/dist/index6.js +0 -38
- package/dist/index60.js +0 -6
- package/dist/index61.js +0 -131
- package/dist/index62.js +0 -5
- package/dist/index65.js +0 -35
- package/dist/index66.js +0 -26
- package/dist/index68.js +0 -6
- package/dist/index69.js +0 -54
- package/dist/index7.js +0 -58
- package/dist/index71.js +0 -6
- package/dist/index72.js +0 -14
- package/dist/index74.js +0 -6
- package/dist/index75.js +0 -159
- package/dist/index77.js +0 -6
- package/dist/index78.js +0 -4
- package/dist/index79.js +0 -4
- package/dist/index80.js +0 -54
- package/dist/index81.js +0 -5
- package/dist/index82.js +0 -5
- package/dist/index83.js +0 -141
- package/dist/index85.js +0 -6
- package/dist/index86.js +0 -65
- package/dist/index88.js +0 -6
- package/dist/index89.js +0 -30
- package/dist/index9.js +0 -11
- package/dist/index90.js +0 -19
- package/dist/index91.js +0 -17
- package/dist/index92.js +0 -9
- package/dist/index93.js +0 -34
- package/dist/index95.js +0 -16
- package/dist/index96.js +0 -10
- package/dist/index97.js +0 -18
- package/dist/index98.js +0 -189
- package/dist/types/VoidHtmlElements.d.ts +0 -1
- package/dist/utilities/functions/add.d.ts +0 -1
- package/dist/utilities/functions/booleanishToBoolean.d.ts +0 -6
- package/dist/utilities/functions/capitalize.d.ts +0 -4
- package/dist/utilities/functions/cloneDeep.d.ts +0 -1
- package/dist/utilities/functions/debounce.d.ts +0 -1
- package/dist/utilities/functions/drop.d.ts +0 -1
- package/dist/utilities/functions/exceedsPrecision.d.ts +0 -1
- package/dist/utilities/functions/findRight.d.ts +0 -4
- package/dist/utilities/functions/findRightIndex.d.ts +0 -4
- package/dist/utilities/functions/flow.d.ts +0 -1
- package/dist/utilities/functions/getHueFromRGB.d.ts +0 -9
- package/dist/utilities/functions/groupBy.d.ts +0 -6
- package/dist/utilities/functions/gt.d.ts +0 -7
- package/dist/utilities/functions/hexToRGB.d.ts +0 -7
- package/dist/utilities/functions/hslToHex.d.ts +0 -1
- package/dist/utilities/functions/includes.d.ts +0 -1
- package/dist/utilities/functions/initial.d.ts +0 -1
- package/dist/utilities/functions/isCssColor.d.ts +0 -5
- package/dist/utilities/functions/lt.d.ts +0 -7
- package/dist/utilities/functions/makeUrl.d.ts +0 -1
- package/dist/utilities/functions/mapKeys.d.ts +0 -5
- package/dist/utilities/functions/mapValues.d.ts +0 -1
- package/dist/utilities/functions/matchesPropertyInsensitive.d.ts +0 -1
- package/dist/utilities/functions/max.d.ts +0 -2
- package/dist/utilities/functions/mean.d.ts +0 -4
- package/dist/utilities/functions/merge.d.ts +0 -11
- package/dist/utilities/functions/millisecondsTo.d.ts +0 -1
- package/dist/utilities/functions/negate.d.ts +0 -4
- package/dist/utilities/functions/normalizeItemGroups.d.ts +0 -13
- package/dist/utilities/functions/omit.d.ts +0 -2
- package/dist/utilities/functions/overEvery.d.ts +0 -4
- package/dist/utilities/functions/pick.d.ts +0 -1
- package/dist/utilities/functions/replace.d.ts +0 -1
- package/dist/utilities/functions/replaceInTree.d.ts +0 -4
- package/dist/utilities/functions/retry.d.ts +0 -5
- package/dist/utilities/functions/roundToTheNearest.d.ts +0 -8
- package/dist/utilities/functions/set.d.ts +0 -15
- package/dist/utilities/functions/stub.d.ts +0 -6
- package/dist/utilities/functions/transposePercent.d.ts +0 -9
- package/dist/utilities/functions/tryTo.d.ts +0 -2
- package/dist/utilities/functions/uniqBy.d.ts +0 -1
- /package/dist/{index64.js → _virtual/_plugin-vue_export-helper.js} +0 -0
- /package/dist/components/{BaseButton → BbBaseButton}/RouterComponent.vue.d.ts +0 -0
- /package/dist/components/{BaseDatePicker/BaseDatePicker.vue.d.ts → BbBaseDatePicker/BbBaseDatePicker.vue.d.ts} +0 -0
- /package/dist/{index165.js → composables/useArray.js} +0 -0
- /package/dist/{index17.js → composables/useFrameworkDetection.js} +0 -0
- /package/dist/{index12.js → composables/useId.js} +0 -0
- /package/dist/{index107.js → utilities/functions/chunk.js} +0 -0
- /package/dist/{index8.js → utilities/functions/clamp.js} +0 -0
- /package/dist/{index150.js → utilities/functions/curry.js} +0 -0
- /package/dist/{index45.js → utilities/functions/extractDomContainer.js} +0 -0
- /package/dist/{index270.js → utilities/functions/findInTree.js} +0 -0
- /package/dist/{index348.js → utilities/functions/flattenTree.js} +0 -0
- /package/dist/{index41.js → utilities/functions/get.js} +0 -0
- /package/dist/{index189.js → utilities/functions/head.js} +0 -0
- /package/dist/{index108.js → utilities/functions/identity.js} +0 -0
- /package/dist/{index179.js → utilities/functions/indexBy.js} +0 -0
- /package/dist/{index37.js → utilities/functions/isHex.js} +0 -0
- /package/dist/{index94.js → utilities/functions/isNil.js} +0 -0
- /package/dist/{index26.js → utilities/functions/isNotNil.js} +0 -0
- /package/dist/{index105.js → utilities/functions/last.js} +0 -0
- /package/dist/{index142.js → utilities/functions/noop.js} +0 -0
- /package/dist/{index231.js → utilities/functions/parseWidthString.js} +0 -0
- /package/dist/{index240.js → utilities/functions/pickBy.js} +0 -0
- /package/dist/{index123.js → utilities/functions/range.js} +0 -0
- /package/dist/{index190.js → utilities/functions/snapToStep.js} +0 -0
- /package/dist/{index191.js → utilities/functions/transpose.js} +0 -0
- /package/dist/{index106.js → utilities/functions/validateDateFormat.js} +0 -0
- /package/dist/{index10.js → utilities/functions/wait.js} +0 -0
|
@@ -0,0 +1,1210 @@
|
|
|
1
|
+
# BbBaseInputContainer — Implementation Source
|
|
2
|
+
|
|
3
|
+
> Full implementation for deep dives. For everyday usage read the typed contract: [../BbBaseInputContainer.md](../BbBaseInputContainer.md).
|
|
4
|
+
>
|
|
5
|
+
> Safety level: **Reference Only - Internal** — do not use in consumer-facing code unless explicitly requested.
|
|
6
|
+
|
|
7
|
+
## Template & Script
|
|
8
|
+
|
|
9
|
+
```vue
|
|
10
|
+
<template>
|
|
11
|
+
<div
|
|
12
|
+
class="bb-base-input-container"
|
|
13
|
+
:class="{
|
|
14
|
+
'bb-base-input-container--clearable': props.clearable,
|
|
15
|
+
'bb-base-input-container--description': !!props.description,
|
|
16
|
+
'bb-base-input-container--disabled': props.disabled,
|
|
17
|
+
'bb-base-input-container--errors': hasErrors,
|
|
18
|
+
'bb-base-input-container--warnings': showWarning,
|
|
19
|
+
'bb-base-input-container--has-value': props.hasValue,
|
|
20
|
+
'bb-base-input-container--hint': showHint,
|
|
21
|
+
'bb-base-input-container--loading': props.loading,
|
|
22
|
+
'bb-base-input-container--mobile': props.mobile,
|
|
23
|
+
'bb-base-input-container--compact': props.compact,
|
|
24
|
+
'bb-base-input-container--floating-label': props.labelMode === 'floating',
|
|
25
|
+
'bb-base-input-container--inside-label': props.labelMode === 'inside',
|
|
26
|
+
'bb-base-input-container--readonly': props.readonly,
|
|
27
|
+
}"
|
|
28
|
+
>
|
|
29
|
+
<component :is="tag" v-bind="containerAttributes">
|
|
30
|
+
<component :is="labelTag" v-bind="labelAttributes">
|
|
31
|
+
<slot
|
|
32
|
+
name="label"
|
|
33
|
+
v-bind="{ text: label, hasErrors, hasWarning: showWarning }"
|
|
34
|
+
>{{ label }}</slot
|
|
35
|
+
>
|
|
36
|
+
<span
|
|
37
|
+
v-if="description && !overlayLabelMode"
|
|
38
|
+
:id="descriptionId"
|
|
39
|
+
class="bb-base-input-container__description"
|
|
40
|
+
>{{ description }}</span
|
|
41
|
+
>
|
|
42
|
+
</component>
|
|
43
|
+
<!-- In floating/inside modes the label is an absolutely positioned chip,
|
|
44
|
+
so the description renders as a layout sibling instead of inside it. -->
|
|
45
|
+
<span
|
|
46
|
+
v-if="description && overlayLabelMode"
|
|
47
|
+
:id="descriptionId"
|
|
48
|
+
class="bb-base-input-container__description"
|
|
49
|
+
>{{ description }}</span
|
|
50
|
+
>
|
|
51
|
+
<span v-bind="inputAttributes">
|
|
52
|
+
<slot
|
|
53
|
+
name="input"
|
|
54
|
+
v-bind="{
|
|
55
|
+
id,
|
|
56
|
+
name,
|
|
57
|
+
hasErrors,
|
|
58
|
+
hasWarning: showWarning,
|
|
59
|
+
ariaDescribedby,
|
|
60
|
+
}"
|
|
61
|
+
></slot>
|
|
62
|
+
</span>
|
|
63
|
+
</component>
|
|
64
|
+
<Transition name="hint">
|
|
65
|
+
<span
|
|
66
|
+
v-show="showHint"
|
|
67
|
+
:id="hintId"
|
|
68
|
+
class="bb-base-input-container__hint-wrap"
|
|
69
|
+
>
|
|
70
|
+
<span class="bb-base-input-container__hint-text">{{ hint }}</span>
|
|
71
|
+
</span>
|
|
72
|
+
</Transition>
|
|
73
|
+
<Transition name="errors">
|
|
74
|
+
<!-- Always mounted by design: height is animated via the watcher below,
|
|
75
|
+
not by toggling the element in and out of the DOM. -->
|
|
76
|
+
<!-- eslint-disable-next-line vue/require-toggle-inside-transition -->
|
|
77
|
+
<div
|
|
78
|
+
ref="errorsWrap"
|
|
79
|
+
aria-live="polite"
|
|
80
|
+
class="bb-base-input-container__errors-wrap"
|
|
81
|
+
>
|
|
82
|
+
<!-- The id lives on the CONTENT node, never on the `-wrap`: the wrap is a
|
|
83
|
+
`height: 0; overflow: hidden` animation shell, so describing it would
|
|
84
|
+
point assistive tech at the animation rather than at the copy. -->
|
|
85
|
+
<div
|
|
86
|
+
:id="errorsId"
|
|
87
|
+
ref="errorsContent"
|
|
88
|
+
class="bb-base-input-container__errors"
|
|
89
|
+
>
|
|
90
|
+
<span
|
|
91
|
+
v-for="error in computedErrors"
|
|
92
|
+
:key="error"
|
|
93
|
+
class="bb-base-input-container__error"
|
|
94
|
+
>{{ error }}</span
|
|
95
|
+
>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
</Transition>
|
|
99
|
+
<Transition name="errors">
|
|
100
|
+
<!-- Warning message channel — mirrors the error channel but in amber,
|
|
101
|
+
and collapses to zero height while the error state wins. -->
|
|
102
|
+
<!-- eslint-disable-next-line vue/require-toggle-inside-transition -->
|
|
103
|
+
<div
|
|
104
|
+
ref="warningsWrap"
|
|
105
|
+
aria-live="polite"
|
|
106
|
+
class="bb-base-input-container__warnings-wrap"
|
|
107
|
+
>
|
|
108
|
+
<!-- Same rule as the error channel: id on the content node, not the shell. -->
|
|
109
|
+
<div
|
|
110
|
+
:id="warningsId"
|
|
111
|
+
ref="warningsContent"
|
|
112
|
+
class="bb-base-input-container__warnings"
|
|
113
|
+
>
|
|
114
|
+
<span
|
|
115
|
+
v-for="warning in displayedWarnings"
|
|
116
|
+
:key="warning"
|
|
117
|
+
class="bb-base-input-container__warning"
|
|
118
|
+
>{{ warning }}</span
|
|
119
|
+
>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</Transition>
|
|
123
|
+
</div>
|
|
124
|
+
</template>
|
|
125
|
+
|
|
126
|
+
<script setup lang="ts">
|
|
127
|
+
import { computed, nextTick, ref, watch, type Ref } from 'vue';
|
|
128
|
+
import { deburr } from '@/utilities/functions/deburr';
|
|
129
|
+
import { getAsPercentage } from '@/utilities/functions/percentage';
|
|
130
|
+
import { noop } from '@/utilities/functions/noop';
|
|
131
|
+
import { useId } from '@/composables/useId';
|
|
132
|
+
import { useLogger } from '@/composables/useLogger';
|
|
133
|
+
import type { BaseInputContainerProps, BaseInputContainerSlots } from './types';
|
|
134
|
+
|
|
135
|
+
const props = withDefaults(defineProps<BaseInputContainerProps>(), {
|
|
136
|
+
direction: 'vertical',
|
|
137
|
+
// inputPosition is intentionally NOT defaulted here — see resolvedInputPosition:
|
|
138
|
+
// inputs align left by default and right only when the direction is horizontal.
|
|
139
|
+
labelPosition: 'left',
|
|
140
|
+
labelTag: 'label',
|
|
141
|
+
reverse: false,
|
|
142
|
+
tag: 'span',
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
defineSlots<BaseInputContainerSlots>();
|
|
146
|
+
|
|
147
|
+
const logger = useLogger();
|
|
148
|
+
|
|
149
|
+
// Always provide an id so that inputs can be focussed by clicking oin the label
|
|
150
|
+
const id = props.id || useId().id.value;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Hint management
|
|
154
|
+
*/
|
|
155
|
+
const hintId = computed(() => (props.hint ? `hint_${id}` : undefined));
|
|
156
|
+
const showHint = computed(() => props.showHint && !!props.hint);
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Description management. The description renders below the label (above the
|
|
160
|
+
* field), is always visible (unlike the hint) and is announced together with
|
|
161
|
+
* the hint via aria-describedby.
|
|
162
|
+
*/
|
|
163
|
+
const descriptionId = computed(() =>
|
|
164
|
+
props.description ? `description_${id}` : undefined
|
|
165
|
+
);
|
|
166
|
+
/**
|
|
167
|
+
* Message-channel ids. These sit on the inner CONTENT nodes
|
|
168
|
+
* (`__errors` / `__warnings`), not on the `-wrap` animation shells, so that
|
|
169
|
+
* `aria-describedby` resolves to the actual message text.
|
|
170
|
+
*/
|
|
171
|
+
const errorsId = `errors_${id}`;
|
|
172
|
+
const warningsId = `warnings_${id}`;
|
|
173
|
+
|
|
174
|
+
/** Label modes where the label overlays the field instead of sitting above it. */
|
|
175
|
+
const overlayLabelMode = computed(
|
|
176
|
+
() => props.labelMode === 'floating' || props.labelMode === 'inside'
|
|
177
|
+
);
|
|
178
|
+
// Floating/inside labels are embedded in the field, so those modes force a
|
|
179
|
+
// vertical layout. An 'outside' (or unset) label honors `direction`.
|
|
180
|
+
const resolvedDirection = computed<
|
|
181
|
+
NonNullable<BaseInputContainerProps['direction']>
|
|
182
|
+
>(() => (overlayLabelMode.value ? 'vertical' : props.direction));
|
|
183
|
+
|
|
184
|
+
// A horizontal split (either the `horizontal` keyword or a two-token ratio like
|
|
185
|
+
// `"1 2"`) sits the label and input side-by-side.
|
|
186
|
+
const isHorizontalDirection = computed(() => {
|
|
187
|
+
const d = resolvedDirection.value;
|
|
188
|
+
return d === 'horizontal' || /^[\S]+\s[\S]+$/g.test(d);
|
|
189
|
+
});
|
|
190
|
+
// Inputs align LEFT by default; in a horizontal layout they align RIGHT (next to
|
|
191
|
+
// the left-hand label). An explicit `inputPosition` always wins. Control-first
|
|
192
|
+
// widgets (checkbox/radio/switch/rating) pass `inputPosition: 'left'` to stay left.
|
|
193
|
+
const resolvedInputPosition = computed(
|
|
194
|
+
() => props.inputPosition ?? (isHorizontalDirection.value ? 'right' : 'left')
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
// If no name is passed use a normalized version of the label
|
|
198
|
+
const name = computed(() => {
|
|
199
|
+
if (props.name) return props.name;
|
|
200
|
+
const noAccents = deburr(props.label);
|
|
201
|
+
const nospace = noAccents.replace(/\s+/g, '');
|
|
202
|
+
return nospace.toLowerCase();
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
const containerAttributes = computed(() => {
|
|
206
|
+
const initial: Record<string, any> = {
|
|
207
|
+
class: {
|
|
208
|
+
'bb-base-input-container__layout': true,
|
|
209
|
+
'bb-base-input-container__layout--hidden-label': props.reverse,
|
|
210
|
+
'bb-base-input-container__layout--horizontal':
|
|
211
|
+
resolvedDirection.value !== 'vertical',
|
|
212
|
+
'bb-base-input-container__layout--reverse': props.reverse,
|
|
213
|
+
'bb-base-input-container__layout--vertical':
|
|
214
|
+
resolvedDirection.value === 'vertical',
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
if (props.tag === 'label') initial.for = id;
|
|
218
|
+
return initial;
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
const labelAttributes = computed(() => {
|
|
222
|
+
const initial: Record<string, any> = {
|
|
223
|
+
class: {
|
|
224
|
+
'bb-base-input-container__label': true,
|
|
225
|
+
'bb-base-input-container__label--hidden': props.hideLabel,
|
|
226
|
+
[`bb-base-input-container__label--${props.labelPosition}`]:
|
|
227
|
+
props.labelPosition,
|
|
228
|
+
},
|
|
229
|
+
id: `${id}__label`,
|
|
230
|
+
style: {
|
|
231
|
+
width: widths.value.label,
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
if (props.labelTag === 'label') initial.for = id;
|
|
235
|
+
return initial;
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
const inputAttributes = computed(() => {
|
|
239
|
+
const initial: Record<string, any> = {
|
|
240
|
+
class: {
|
|
241
|
+
'bb-base-input-container__control': true,
|
|
242
|
+
[`bb-base-input-container__control--${resolvedInputPosition.value}`]: true,
|
|
243
|
+
},
|
|
244
|
+
style: {
|
|
245
|
+
width: widths.value.input,
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
return initial;
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
const widths = computed(() => {
|
|
252
|
+
const initial: Record<string, string> = {
|
|
253
|
+
label: 'auto',
|
|
254
|
+
input: 'auto',
|
|
255
|
+
};
|
|
256
|
+
if (resolvedDirection.value === 'auto') {
|
|
257
|
+
noop();
|
|
258
|
+
} else if (resolvedDirection.value === 'vertical') {
|
|
259
|
+
initial.label = initial.input = 100 + '%';
|
|
260
|
+
} else if (resolvedDirection.value === 'horizontal') {
|
|
261
|
+
initial.label = initial.input = 50 + '%';
|
|
262
|
+
} else if (/^[\S]+\s[\S]+$/g.test(resolvedDirection.value)) {
|
|
263
|
+
const [firstLength, secondLength] = resolvedDirection.value
|
|
264
|
+
.split(/\s+/)
|
|
265
|
+
.map((string) => string.length);
|
|
266
|
+
const first =
|
|
267
|
+
getAsPercentage(firstLength, firstLength + secondLength) + '%';
|
|
268
|
+
const second =
|
|
269
|
+
getAsPercentage(secondLength, secondLength + firstLength) + '%';
|
|
270
|
+
if (props.reverse) {
|
|
271
|
+
initial.label = second;
|
|
272
|
+
initial.input = first;
|
|
273
|
+
} else {
|
|
274
|
+
initial.label = first;
|
|
275
|
+
initial.input = second;
|
|
276
|
+
}
|
|
277
|
+
} else {
|
|
278
|
+
logger.warn(
|
|
279
|
+
`Invalid direction: "${resolvedDirection.value}". Expected 'auto', 'vertical', 'horizontal', or a two-token ratio like '1 2'. Falling back to 'auto'.`
|
|
280
|
+
);
|
|
281
|
+
// `initial` is already the auto shape (label/input: 'auto'), so falling
|
|
282
|
+
// through here leaves the layout at the safe default.
|
|
283
|
+
}
|
|
284
|
+
return initial;
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
const computedErrors = computed(() => {
|
|
288
|
+
return props.errors ? ([] as string[]).concat(props.errors) : [];
|
|
289
|
+
});
|
|
290
|
+
const hasErrors = computed(
|
|
291
|
+
() => Boolean(computedErrors.value.length) || props.hasErrors
|
|
292
|
+
);
|
|
293
|
+
const computedWarnings = computed(() => {
|
|
294
|
+
return props.warnings ? ([] as string[]).concat(props.warnings) : [];
|
|
295
|
+
});
|
|
296
|
+
/**
|
|
297
|
+
* Warning chrome/messages yield to errors when both are requested. A non-empty
|
|
298
|
+
* `warnings` list implies the warning state, mirroring how `errors` implies the
|
|
299
|
+
* error state.
|
|
300
|
+
*/
|
|
301
|
+
const showWarning = computed(
|
|
302
|
+
() =>
|
|
303
|
+
(Boolean(props.hasWarning) || Boolean(computedWarnings.value.length)) &&
|
|
304
|
+
!hasErrors.value
|
|
305
|
+
);
|
|
306
|
+
/** Warning messages are suppressed while the field shows the error state. */
|
|
307
|
+
const displayedWarnings = computed(() =>
|
|
308
|
+
showWarning.value ? computedWarnings.value : []
|
|
309
|
+
);
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* `aria-describedby` for the inner control, in spoken order:
|
|
313
|
+
*
|
|
314
|
+
* errors → warnings → description → hint
|
|
315
|
+
*
|
|
316
|
+
* Assistive tech reads the referenced nodes in the order listed, so the list is
|
|
317
|
+
* ordered by urgency for the returning user. Someone who tabs back to a field
|
|
318
|
+
* they already failed needs "must be a valid address" before they need the
|
|
319
|
+
* standing description or the on-focus hint; the messages that changed state are
|
|
320
|
+
* what is new information. Warnings sit second for the same reason (and can only
|
|
321
|
+
* be present when errors are absent — errors suppress them). Description before
|
|
322
|
+
* hint preserves the pre-existing order between those two.
|
|
323
|
+
*
|
|
324
|
+
* A channel is referenced ONLY while it actually has copy:
|
|
325
|
+
* - errors/warnings: gated on a non-empty message list. `hasErrors` /
|
|
326
|
+
* `hasWarning` alone force the *chrome* without producing text, so referencing
|
|
327
|
+
* the (empty) node would describe the control with nothing.
|
|
328
|
+
* - hint: gated on `showHint` — the hint is `v-show`'d (`display: none` when
|
|
329
|
+
* hidden), so describing it while hidden would point at an
|
|
330
|
+
* a11y-tree-detached node.
|
|
331
|
+
*
|
|
332
|
+
* Reactive throughout so it tracks messages, hint and description changes.
|
|
333
|
+
*
|
|
334
|
+
* The `-wrap` elements keep their `aria-live="polite"`. describedby (read on
|
|
335
|
+
* focus) and live (read on mutation) are separate channels and carrying both is
|
|
336
|
+
* the standard pattern, not a duplicate.
|
|
337
|
+
*/
|
|
338
|
+
const ariaDescribedby = computed(
|
|
339
|
+
() =>
|
|
340
|
+
[
|
|
341
|
+
computedErrors.value.length ? errorsId : undefined,
|
|
342
|
+
displayedWarnings.value.length ? warningsId : undefined,
|
|
343
|
+
descriptionId.value,
|
|
344
|
+
showHint.value ? hintId.value : undefined,
|
|
345
|
+
]
|
|
346
|
+
.filter(Boolean)
|
|
347
|
+
.join(' ') || undefined
|
|
348
|
+
);
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Smooth height transition for the message containers
|
|
352
|
+
*/
|
|
353
|
+
const errorsWrap = ref<HTMLElement | null>(null);
|
|
354
|
+
const errorsContent = ref<HTMLElement | null>(null);
|
|
355
|
+
const warningsWrap = ref<HTMLElement | null>(null);
|
|
356
|
+
const warningsContent = ref<HTMLElement | null>(null);
|
|
357
|
+
|
|
358
|
+
// Re-measure when the message list changes; immediate + post flush matches the
|
|
359
|
+
// previous watchPostEffect timing.
|
|
360
|
+
// Deref INSIDE nextTick: on the immediate run the template refs are still null
|
|
361
|
+
// (component not mounted yet), so we must read them after the DOM flush.
|
|
362
|
+
const animateHeight = (
|
|
363
|
+
containerRef: Ref<HTMLElement | null>,
|
|
364
|
+
contentRef: Ref<HTMLElement | null>
|
|
365
|
+
) => {
|
|
366
|
+
nextTick(() => {
|
|
367
|
+
const container = containerRef.value;
|
|
368
|
+
const content = contentRef.value;
|
|
369
|
+
if (container && content) {
|
|
370
|
+
const min = Math.min(content.clientHeight, content.scrollHeight);
|
|
371
|
+
container.style.height = `${min}px`;
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
};
|
|
375
|
+
|
|
376
|
+
watch(computedErrors, () => animateHeight(errorsWrap, errorsContent), {
|
|
377
|
+
immediate: true,
|
|
378
|
+
flush: 'post',
|
|
379
|
+
});
|
|
380
|
+
watch(displayedWarnings, () => animateHeight(warningsWrap, warningsContent), {
|
|
381
|
+
immediate: true,
|
|
382
|
+
flush: 'post',
|
|
383
|
+
});
|
|
384
|
+
</script>
|
|
385
|
+
|
|
386
|
+
<style lang="postcss">
|
|
387
|
+
@import './index.css';
|
|
388
|
+
</style>
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
## Types
|
|
392
|
+
|
|
393
|
+
```ts
|
|
394
|
+
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
395
|
+
import type { InputDirection } from '@/types/InputDirection';
|
|
396
|
+
import type { ContainerTag, LabelTag } from '@/types/CommonProps';
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Wrapper responsible for aligning labels, inputs, hints, and error messages consistently across form controls.
|
|
400
|
+
*/
|
|
401
|
+
export type BaseInputContainerProps = {
|
|
402
|
+
/**
|
|
403
|
+
* Whether the inner control exposes a clear action.
|
|
404
|
+
*/
|
|
405
|
+
clearable?: boolean;
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Apply the compact density variant to the container.
|
|
409
|
+
*/
|
|
410
|
+
compact?: boolean;
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Always-visible descriptive text rendered below the label and above the input, in muted foreground color.
|
|
414
|
+
* When present, its id is exposed to the input slot via `ariaDescribedby`, after any error/warning
|
|
415
|
+
* ids and before the hint id.
|
|
416
|
+
* In `floating` label mode it renders as a single line above the field and the label floats past it;
|
|
417
|
+
* in `inside` label mode it renders as a second single line under the label, growing the field.
|
|
418
|
+
*/
|
|
419
|
+
description?: string;
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Whether the inner control is disabled.
|
|
423
|
+
*/
|
|
424
|
+
disabled?: boolean;
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Controls label/input layout.
|
|
428
|
+
* Accepts `'vertical'`, `'horizontal'`, `'auto'`, or a two-token ratio pattern
|
|
429
|
+
* such as `"xx xxxxx"` that sizes the label/input columns by token length.
|
|
430
|
+
* An unrecognized value warns and falls back to `'auto'`.
|
|
431
|
+
* @defaultValue `'vertical'`
|
|
432
|
+
*/
|
|
433
|
+
direction?: InputDirection;
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Messages displayed beneath the input. Accepts a string or array; values are rendered one per line.
|
|
437
|
+
* They render in an `aria-live="polite"` region (announced when they appear) and, while the list is
|
|
438
|
+
* non-empty, their container id is also exposed to the input slot via `ariaDescribedby` — first in
|
|
439
|
+
* the list — so the reason the field is invalid is re-read whenever the control regains focus.
|
|
440
|
+
*/
|
|
441
|
+
errors?: string | string[];
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* Forces the error state independently of `errors`, useful to pre-style the container.
|
|
445
|
+
*/
|
|
446
|
+
hasErrors?: boolean;
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Warning messages displayed beneath the input, in their own `aria-live`
|
|
450
|
+
* region. Accepts a string or array; values are rendered one per line, in
|
|
451
|
+
* `--bb-warn` amber. A non-empty list implies the warning state (mirroring
|
|
452
|
+
* how `errors` implies the error state); errors suppress warning messages
|
|
453
|
+
* when both are set. While displayed, the container id is also exposed to the
|
|
454
|
+
* input slot via `ariaDescribedby` (after any errors, before description/hint).
|
|
455
|
+
*/
|
|
456
|
+
warnings?: string | string[];
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Forces the warning state independently of `warnings`. Same chrome as
|
|
460
|
+
* errors but with `--bb-warn`; errors take priority when both are set.
|
|
461
|
+
*/
|
|
462
|
+
hasWarning?: boolean;
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Hide the visual label while keeping it available to assistive technology.
|
|
466
|
+
*/
|
|
467
|
+
hideLabel?: boolean;
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Hint text rendered below the input. While shown, its id is exposed to the input slot via
|
|
471
|
+
* `ariaDescribedby` — last in the list, after any error/warning ids and the description id.
|
|
472
|
+
*/
|
|
473
|
+
hint?: string;
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Explicit id for the container and associated input. Falls back to an auto-generated id when omitted.
|
|
477
|
+
*/
|
|
478
|
+
id?: HTMLAttributes['id'];
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Horizontal alignment of the input column when direction is horizontal or custom.
|
|
482
|
+
* Unset, it follows the layout: `'right'` in a horizontal/ratio split (beside
|
|
483
|
+
* the left-hand label), `'left'` otherwise — and `direction` is `'vertical'`
|
|
484
|
+
* by default, so the effective default is `'left'`.
|
|
485
|
+
* @defaultValue `'left'`
|
|
486
|
+
*/
|
|
487
|
+
inputPosition?: 'left' | 'center' | 'right';
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Visible label text for the field. Also used to derive a fallback name.
|
|
491
|
+
*/
|
|
492
|
+
label: string;
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Horizontal alignment for the label column.
|
|
496
|
+
* @defaultValue `'left'`
|
|
497
|
+
*/
|
|
498
|
+
labelPosition?: 'left' | 'center' | 'right';
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* Label rendering mode.
|
|
502
|
+
*/
|
|
503
|
+
labelMode?: 'outside' | 'floating' | 'inside';
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Whether the inner control currently contains a value.
|
|
507
|
+
*/
|
|
508
|
+
hasValue?: boolean;
|
|
509
|
+
|
|
510
|
+
/**
|
|
511
|
+
* Whether the inner control is in a loading state.
|
|
512
|
+
*/
|
|
513
|
+
loading?: boolean;
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* Whether the inner control is in mobile viewport mode.
|
|
517
|
+
*/
|
|
518
|
+
mobile?: boolean;
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* Element used for the label: `label` (default), `legend` inside a
|
|
522
|
+
* `fieldset` container, or `span` when the text must not steal the click
|
|
523
|
+
* because the control already carries its own label.
|
|
524
|
+
* @defaultValue `'label'`
|
|
525
|
+
*/
|
|
526
|
+
labelTag?: LabelTag;
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Explicit name attribute forwarded to the input. When omitted, a slug derived from `label` is used.
|
|
530
|
+
*/
|
|
531
|
+
name?: InputHTMLAttributes['name'];
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* Swap the label and input columns.
|
|
535
|
+
* @defaultValue `false`
|
|
536
|
+
*/
|
|
537
|
+
reverse?: boolean;
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* Whether the inner control is readonly.
|
|
541
|
+
*/
|
|
542
|
+
readonly?: boolean;
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Keep the hint permanently visible, regardless of focus.
|
|
546
|
+
*/
|
|
547
|
+
showHint?: boolean;
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Element used for the inner wrapper: `span` (default) to remain inline,
|
|
551
|
+
* `div` for a block wrapper, `fieldset` for grouped controls (pair it with
|
|
552
|
+
* `labelTag="legend"`), or `label` to make the whole wrapper activate the
|
|
553
|
+
* control.
|
|
554
|
+
* @defaultValue `'span'`
|
|
555
|
+
*/
|
|
556
|
+
tag?: ContainerTag;
|
|
557
|
+
};
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Props exposed by the `input` slot.
|
|
561
|
+
*/
|
|
562
|
+
export type BaseInputContainerInputSlotProps = {
|
|
563
|
+
/**
|
|
564
|
+
* The resolved `id` for the input element; matches the `for` attribute on the label.
|
|
565
|
+
*/
|
|
566
|
+
id: string;
|
|
567
|
+
/**
|
|
568
|
+
* The resolved `name` for the input, derived from the `label` prop when not set explicitly.
|
|
569
|
+
*/
|
|
570
|
+
name: string;
|
|
571
|
+
/**
|
|
572
|
+
* Whether the container is in an error state (from `errors` or `hasErrors` props).
|
|
573
|
+
*/
|
|
574
|
+
hasErrors: boolean;
|
|
575
|
+
/**
|
|
576
|
+
* Whether the container is in a warning state (from `warnings` or
|
|
577
|
+
* `hasWarning`, suppressed when `hasErrors` is true).
|
|
578
|
+
*/
|
|
579
|
+
hasWarning: boolean;
|
|
580
|
+
/**
|
|
581
|
+
* Space-separated ids of every message node that currently has copy, in
|
|
582
|
+
* spoken order: errors, warnings, description, hint. Pass as
|
|
583
|
+
* `aria-describedby` to the inner input. A channel is listed only while it
|
|
584
|
+
* actually has content, so a field with no messages and no description/hint
|
|
585
|
+
* yields `undefined`.
|
|
586
|
+
*/
|
|
587
|
+
ariaDescribedby: string | undefined;
|
|
588
|
+
};
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Props exposed by the `label` slot.
|
|
592
|
+
*/
|
|
593
|
+
export type BaseInputContainerLabelSlotProps = {
|
|
594
|
+
/**
|
|
595
|
+
* The `label` prop value.
|
|
596
|
+
*/
|
|
597
|
+
text: string;
|
|
598
|
+
/**
|
|
599
|
+
* Whether the container is in an error state.
|
|
600
|
+
*/
|
|
601
|
+
hasErrors: boolean;
|
|
602
|
+
/**
|
|
603
|
+
* Whether the container is in a warning state (suppressed when errors win).
|
|
604
|
+
*/
|
|
605
|
+
hasWarning: boolean;
|
|
606
|
+
};
|
|
607
|
+
|
|
608
|
+
export type BaseInputContainerSlots = {
|
|
609
|
+
/**
|
|
610
|
+
* The form control to render, positioned in the input column. Receives pre-computed
|
|
611
|
+
* wiring attributes so the inner input can be correctly associated with the label and hint.
|
|
612
|
+
*/
|
|
613
|
+
input?: (props: BaseInputContainerInputSlotProps) => any;
|
|
614
|
+
/**
|
|
615
|
+
* Replaces the default label text. The outer label element and its `for` association are always rendered.
|
|
616
|
+
*/
|
|
617
|
+
label?: (props: BaseInputContainerLabelSlotProps) => any;
|
|
618
|
+
};
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
## Styles
|
|
622
|
+
|
|
623
|
+
```css
|
|
624
|
+
.bb-base-input-container {
|
|
625
|
+
/*
|
|
626
|
+
* BaseInputContainer stylesheet
|
|
627
|
+
* -------------------------------------------------------------------------
|
|
628
|
+
* This file coordinates the entire field wrapper behavior:
|
|
629
|
+
* - layout orchestration (vertical/horizontal/reverse/custom-width patterns)
|
|
630
|
+
* - label modes (outside/inside/floating)
|
|
631
|
+
* - control alignment and width propagation
|
|
632
|
+
* - hint + error visual containers and transitions
|
|
633
|
+
*
|
|
634
|
+
* Label-specific responsibilities:
|
|
635
|
+
* - default outside label mode
|
|
636
|
+
* - inside label mode
|
|
637
|
+
* - floating label mode
|
|
638
|
+
*
|
|
639
|
+
* Key principle:
|
|
640
|
+
* Label positioning is solved with CSS custom-property "offset accumulators".
|
|
641
|
+
* Each optional UI piece (prefix, suffix, icons, clear button, etc.) can add
|
|
642
|
+
* to left/right offsets. The final offsets drive:
|
|
643
|
+
* - label `left` / `translate`
|
|
644
|
+
* - label `max-width` clamp
|
|
645
|
+
*
|
|
646
|
+
* Why this approach:
|
|
647
|
+
* - keeps logic in CSS (no runtime measurements)
|
|
648
|
+
* - allows mode-specific precedence rules
|
|
649
|
+
* - makes stress cases predictable and composable
|
|
650
|
+
*
|
|
651
|
+
* Important:
|
|
652
|
+
* - This stylesheet intentionally consumes state classes emitted at the
|
|
653
|
+
* outermost container level (e.g. `bb-base-input-container--errors`).
|
|
654
|
+
* - Inner controls inherit behavior through descendant selectors so we keep
|
|
655
|
+
* behavioral flags centralized.
|
|
656
|
+
*/
|
|
657
|
+
display: flex;
|
|
658
|
+
flex-direction: column;
|
|
659
|
+
|
|
660
|
+
/*
|
|
661
|
+
* Compact mode
|
|
662
|
+
* -----------------------------------------------------------------
|
|
663
|
+
* Only remaps spacing/size tokens. Structural behavior remains identical.
|
|
664
|
+
*/
|
|
665
|
+
&.bb-base-input-container--compact {
|
|
666
|
+
/* Swap in the pre-derived compact token (base − 2px). Deriving inline here
|
|
667
|
+
would reference this same property on the same element — a CSS custom-
|
|
668
|
+
property cycle that resolves to invalid, silently killing the tweak. */
|
|
669
|
+
--bb-label-spacing-y: var(--bb-label-spacing-y-compact);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
&.bb-base-input-container--inside-label {
|
|
673
|
+
/*
|
|
674
|
+
* INSIDE LABEL MODE
|
|
675
|
+
* -----------------------------------------------------------------
|
|
676
|
+
* Product rule:
|
|
677
|
+
* - account for left padding + prefix + suffix
|
|
678
|
+
* - ignore icons / clearable / loading / error indicators
|
|
679
|
+
* because they render visually below this label row.
|
|
680
|
+
*/
|
|
681
|
+
position: relative;
|
|
682
|
+
--inside-label-offset-l-prefix: 0px;
|
|
683
|
+
--inside-label-offset-r-suffix: 0px;
|
|
684
|
+
--inside-label-edge-l: var(--bb-input-px);
|
|
685
|
+
--inside-label-edge-r: var(--bb-input-px);
|
|
686
|
+
--inside-label-offset-l: calc(
|
|
687
|
+
var(--inside-label-edge-l) + var(--inside-label-offset-l-prefix)
|
|
688
|
+
);
|
|
689
|
+
--inside-label-offset-r: calc(
|
|
690
|
+
var(--inside-label-edge-r) + var(--inside-label-offset-r-suffix)
|
|
691
|
+
);
|
|
692
|
+
|
|
693
|
+
&:has(.common-input-wrapper__prefix:not(:empty)) {
|
|
694
|
+
/* Prefix neutralizes inner edge padding via negative margins. */
|
|
695
|
+
--inside-label-edge-l: 0px;
|
|
696
|
+
--inside-label-offset-l-prefix: calc(
|
|
697
|
+
var(--bb-input-prefix-w) + var(--bb-input-spacing)
|
|
698
|
+
);
|
|
699
|
+
}
|
|
700
|
+
&:has(.common-input-wrapper__suffix:not(:empty)) {
|
|
701
|
+
/* Suffix follows same edge-cancel pattern on the right side. */
|
|
702
|
+
--inside-label-edge-r: 0px;
|
|
703
|
+
--inside-label-offset-r-suffix: calc(
|
|
704
|
+
var(--bb-input-prefix-w) + var(--bb-input-spacing)
|
|
705
|
+
);
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
&.bb-checkbox-group,
|
|
709
|
+
&.bb-radio-group,
|
|
710
|
+
&.bb-switch-group {
|
|
711
|
+
/*
|
|
712
|
+
* Group controls (checkbox/radio/switch groups) don't have a native
|
|
713
|
+
* input box in inside-label mode, so the layout wrapper becomes the
|
|
714
|
+
* visual container and anchor for the absolute label.
|
|
715
|
+
*/
|
|
716
|
+
.bb-base-input-container__layout {
|
|
717
|
+
border: var(--bb-border-w) solid var(--bb-border);
|
|
718
|
+
border-radius: var(--bb-radius);
|
|
719
|
+
padding: var(--bb-input-px);
|
|
720
|
+
padding-top: calc(var(--bb-label-fs-sm) + var(--bb-input-px));
|
|
721
|
+
position: relative;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
.bb-base-input-container__label {
|
|
725
|
+
left: var(--bb-input-px);
|
|
726
|
+
top: 5px;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
.bb-base-input-container__control {
|
|
730
|
+
translate: 0 5px;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
&.bb-base-input-container--errors {
|
|
734
|
+
.bb-base-input-container__layout {
|
|
735
|
+
border-color: var(--bb-danger);
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
&.bb-base-input-container--warnings {
|
|
740
|
+
.bb-base-input-container__layout {
|
|
741
|
+
border-color: var(--bb-warn);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
/* Label styles */
|
|
747
|
+
.bb-base-input-container__label {
|
|
748
|
+
-webkit-box-orient: vertical;
|
|
749
|
+
/* Keep inside labels single-line and clipped in crowded layouts. */
|
|
750
|
+
display: -webkit-box;
|
|
751
|
+
font-size: var(--bb-label-fs-sm);
|
|
752
|
+
left: var(--inside-label-offset-l);
|
|
753
|
+
-webkit-line-clamp: 1;
|
|
754
|
+
line-height: var(--bb-label-lh-sm);
|
|
755
|
+
max-width: calc(
|
|
756
|
+
100% - var(--inside-label-offset-l) - var(--inside-label-offset-r)
|
|
757
|
+
);
|
|
758
|
+
overflow: hidden;
|
|
759
|
+
position: absolute;
|
|
760
|
+
text-overflow: ellipsis;
|
|
761
|
+
top: 5px;
|
|
762
|
+
z-index: 2;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
&.bb-base-input-container--floating-label {
|
|
767
|
+
/*
|
|
768
|
+
* FLOATING LABEL MODE
|
|
769
|
+
* -----------------------------------------------------------------
|
|
770
|
+
* Label rests centered in the input row, offset to avoid the prefix,
|
|
771
|
+
* prepend-icon, suffix, and any right-side icon.
|
|
772
|
+
* On focus or when a value is present the label rises to the top border.
|
|
773
|
+
*
|
|
774
|
+
* Accumulator pattern:
|
|
775
|
+
* --fl-edge-l / --fl-over-edge-l left inner padding (resting vs. over)
|
|
776
|
+
* --fl-edge-r right inner padding
|
|
777
|
+
* --fl-prefix / --fl-suffix prefix/suffix clearances
|
|
778
|
+
* --fl-prepend-icon prepend-icon clearance (resting only)
|
|
779
|
+
* --fl-icon-r right icon-slot clearance (resting only)
|
|
780
|
+
* --fl-h input height for vertical centering
|
|
781
|
+
* --fl-nudge x nudge for the top-border chip
|
|
782
|
+
*/
|
|
783
|
+
--fl-edge-l: var(--bb-input-px);
|
|
784
|
+
--fl-over-edge-l: var(--bb-input-px);
|
|
785
|
+
--fl-edge-r: var(--bb-input-px);
|
|
786
|
+
--fl-prefix: 0px;
|
|
787
|
+
--fl-prepend-icon: 0px;
|
|
788
|
+
--fl-suffix: 0px;
|
|
789
|
+
--fl-icon-r: 0px;
|
|
790
|
+
--fl-h: var(--bb-input-h);
|
|
791
|
+
--fl-nudge: 2px;
|
|
792
|
+
|
|
793
|
+
--fl-rest-l: calc(
|
|
794
|
+
var(--fl-edge-l) + var(--fl-prefix) + var(--fl-prepend-icon)
|
|
795
|
+
);
|
|
796
|
+
--fl-rest-r: calc(var(--fl-edge-r) + var(--fl-suffix) + var(--fl-icon-r));
|
|
797
|
+
--fl-over-l: calc(var(--fl-over-edge-l) + var(--fl-prefix));
|
|
798
|
+
--fl-over-r: calc(var(--fl-edge-r) + var(--fl-suffix));
|
|
799
|
+
|
|
800
|
+
/* Prepend icon: the icon has margin-left: -input-px * 0.4, so the icon
|
|
801
|
+
starts at input-px * 0.6 from the left edge. Match that for the label
|
|
802
|
+
so it aligns with the visible text start regardless of input-px value. */
|
|
803
|
+
&:has(.common-input-wrapper__prepend-icon) {
|
|
804
|
+
--fl-edge-l: calc(var(--bb-input-px) * 0.6);
|
|
805
|
+
--fl-prepend-icon: calc(var(--bb-input-icon) + var(--bb-input-spacing));
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
/* Prefix: cancel the inner padding; prefix carries its own clearance.
|
|
809
|
+
Declared after prepend-icon so it wins when both are present. */
|
|
810
|
+
&:has(.common-input-wrapper__prefix:not(:empty)) {
|
|
811
|
+
--fl-edge-l: 0px;
|
|
812
|
+
--fl-over-edge-l: 0px;
|
|
813
|
+
--fl-prefix: calc(var(--bb-input-prefix-w) + var(--bb-input-spacing));
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
/* Suffix: cancel the right inner padding; suffix carries its own clearance. */
|
|
817
|
+
&:has(.common-input-wrapper__suffix:not(:empty)) {
|
|
818
|
+
--fl-edge-r: 0px;
|
|
819
|
+
--fl-suffix: calc(var(--bb-input-prefix-w) + var(--bb-input-spacing));
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/* Right icon slot: CommonInputWrapper shows one icon at a time via a
|
|
823
|
+
single fixed-width slot — no mutual exclusion needed, just reserve it
|
|
824
|
+
when any icon source is active. */
|
|
825
|
+
&.bb-base-input-container--clearable,
|
|
826
|
+
&.bb-base-input-container--errors,
|
|
827
|
+
&.bb-base-input-container--warnings,
|
|
828
|
+
&.bb-base-input-container--loading,
|
|
829
|
+
&:has(.common-input-wrapper__icon-spacer:not(:empty)) {
|
|
830
|
+
--fl-icon-r: calc(var(--bb-input-icon) + var(--bb-input-spacing));
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
/* Compact: override input height so vertical centering uses compact value. */
|
|
834
|
+
&.bb-base-input-container--compact {
|
|
835
|
+
--fl-h: var(--bb-input-h-compact);
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
.bb-base-input-container__layout {
|
|
839
|
+
position: relative;
|
|
840
|
+
|
|
841
|
+
.bb-base-input-container__label {
|
|
842
|
+
background-color: transparent;
|
|
843
|
+
display: inline-block;
|
|
844
|
+
/* At rest the label mimics a placeholder: normal label size.
|
|
845
|
+
It shrinks to the small size only when it rises to the border. */
|
|
846
|
+
font-size: var(--bb-label-fs);
|
|
847
|
+
font-weight: var(--bb-label-weight);
|
|
848
|
+
left: 0;
|
|
849
|
+
line-height: 1;
|
|
850
|
+
max-width: calc(100% - var(--fl-rest-l) - var(--fl-rest-r));
|
|
851
|
+
opacity: 0.6;
|
|
852
|
+
overflow: hidden;
|
|
853
|
+
position: absolute;
|
|
854
|
+
text-overflow: ellipsis;
|
|
855
|
+
top: 0;
|
|
856
|
+
transition:
|
|
857
|
+
translate var(--bb-transition-medium) var(--bb-ease),
|
|
858
|
+
font-size var(--bb-transition-medium) var(--bb-ease),
|
|
859
|
+
opacity var(--bb-transition-medium) var(--bb-ease);
|
|
860
|
+
translate: calc(var(--fl-rest-l) + var(--fl-nudge))
|
|
861
|
+
calc(var(--fl-h) / 2 - 50%);
|
|
862
|
+
white-space: nowrap;
|
|
863
|
+
width: fit-content !important;
|
|
864
|
+
z-index: 1;
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
/* Active: label rises to sit on the top border */
|
|
869
|
+
.bb-base-input-container__layout:focus-within
|
|
870
|
+
.bb-base-input-container__label,
|
|
871
|
+
&.bb-base-input-container--has-value .bb-base-input-container__label {
|
|
872
|
+
background-color: var(--bb-panel);
|
|
873
|
+
font-size: var(--bb-label-fs-sm);
|
|
874
|
+
max-width: calc(100% - var(--fl-over-l) - var(--fl-over-r));
|
|
875
|
+
opacity: 1;
|
|
876
|
+
translate: calc(var(--fl-over-l) + var(--fl-nudge)) -50%;
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
/*
|
|
881
|
+
* Fieldset spacing guard
|
|
882
|
+
* -----------------------------------------------------------------
|
|
883
|
+
* Fieldset behaves differently in some flex contexts. This keeps vertical
|
|
884
|
+
* rhythm consistent with other wrapper tags.
|
|
885
|
+
*/
|
|
886
|
+
fieldset.bb-base-input-container__layout {
|
|
887
|
+
> :not(:last-child) {
|
|
888
|
+
margin-bottom: var(--bb-label-spacing-y);
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
.bb-base-input-container__layout {
|
|
893
|
+
/*
|
|
894
|
+
* Layout engine
|
|
895
|
+
* -----------------------------------------------------------------
|
|
896
|
+
* This node controls geometric relationship between label and control.
|
|
897
|
+
* Direction and reverse classes are computed in Vue and mapped here.
|
|
898
|
+
*/
|
|
899
|
+
column-gap: var(--bb-label-spacing-x);
|
|
900
|
+
display: flex;
|
|
901
|
+
margin-bottom: 0;
|
|
902
|
+
row-gap: var(--bb-label-spacing-y);
|
|
903
|
+
transition: margin-bottom var(--bb-transition-fast) var(--bb-ease);
|
|
904
|
+
|
|
905
|
+
&--vertical {
|
|
906
|
+
flex-direction: column;
|
|
907
|
+
&.bb-base-input-container__layout--reverse {
|
|
908
|
+
& > *:first-child {
|
|
909
|
+
order: 2;
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
&--horizontal {
|
|
914
|
+
&.bb-base-input-container__layout--reverse {
|
|
915
|
+
& > *:first-child {
|
|
916
|
+
order: 2;
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
&__label {
|
|
923
|
+
/*
|
|
924
|
+
* Label base typography and alignment variants.
|
|
925
|
+
* Mode-specific overrides (inside/floating) are applied above.
|
|
926
|
+
*/
|
|
927
|
+
color: var(--bb-text);
|
|
928
|
+
display: inline-block;
|
|
929
|
+
font-size: var(--bb-label-fs);
|
|
930
|
+
font-weight: var(--bb-label-weight);
|
|
931
|
+
line-height: var(--bb-label-lh);
|
|
932
|
+
transition-duration: 150ms;
|
|
933
|
+
transition-property: color;
|
|
934
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
935
|
+
|
|
936
|
+
&--left {
|
|
937
|
+
text-align: left;
|
|
938
|
+
}
|
|
939
|
+
&--center {
|
|
940
|
+
text-align: center;
|
|
941
|
+
}
|
|
942
|
+
&--right {
|
|
943
|
+
text-align: right;
|
|
944
|
+
}
|
|
945
|
+
&--hidden {
|
|
946
|
+
border-width: 0 !important;
|
|
947
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
948
|
+
height: 1px !important;
|
|
949
|
+
margin: -1px !important;
|
|
950
|
+
overflow: hidden !important;
|
|
951
|
+
padding: 0 !important;
|
|
952
|
+
position: absolute !important;
|
|
953
|
+
white-space: nowrap !important;
|
|
954
|
+
width: 1px !important;
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
&__control {
|
|
958
|
+
/*
|
|
959
|
+
* Control column wrapper.
|
|
960
|
+
* Width is injected by Vue-computed inline styles based on direction rules.
|
|
961
|
+
*/
|
|
962
|
+
display: grid;
|
|
963
|
+
|
|
964
|
+
&--left {
|
|
965
|
+
justify-items: flex-start;
|
|
966
|
+
}
|
|
967
|
+
&--center {
|
|
968
|
+
justify-items: center;
|
|
969
|
+
}
|
|
970
|
+
&--right {
|
|
971
|
+
justify-items: flex-end;
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
&__description {
|
|
976
|
+
/*
|
|
977
|
+
* Description channel
|
|
978
|
+
* -----------------------------------------------------------------
|
|
979
|
+
* Always-visible field description rendered inside the label/legend
|
|
980
|
+
* element, below the label text and above the field. It resets the
|
|
981
|
+
* label typography and shares the muted-foreground treatment of the
|
|
982
|
+
* hint, but never animates in/out.
|
|
983
|
+
*/
|
|
984
|
+
color: var(--bb-text-muted);
|
|
985
|
+
display: block;
|
|
986
|
+
font-size: 14px;
|
|
987
|
+
font-weight: 400;
|
|
988
|
+
line-height: 18px;
|
|
989
|
+
margin-top: 2px;
|
|
990
|
+
position: relative;
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
/*
|
|
994
|
+
* FLOATING LABEL + DESCRIPTION
|
|
995
|
+
* -----------------------------------------------------------------
|
|
996
|
+
* The description renders as a single in-flow line above the field, and
|
|
997
|
+
* the layout reserves one extra label line above it. The label rests
|
|
998
|
+
* inside the input (translated down past the reserved line, description
|
|
999
|
+
* and row gap) and floats up to the reserved line — the usual float
|
|
1000
|
+
* distance plus one description line of leading.
|
|
1001
|
+
*/
|
|
1002
|
+
&.bb-base-input-container--floating-label.bb-base-input-container--description {
|
|
1003
|
+
/* Sized for the full label font: above the description the floated
|
|
1004
|
+
label acts as an outside label and keeps its normal size. */
|
|
1005
|
+
--fl-label-line: calc(var(--bb-label-fs) + 4px);
|
|
1006
|
+
--fl-desc-lh: 18px;
|
|
1007
|
+
|
|
1008
|
+
.bb-base-input-container__layout {
|
|
1009
|
+
padding-top: var(--fl-label-line);
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
.bb-base-input-container__description {
|
|
1013
|
+
line-height: var(--fl-desc-lh);
|
|
1014
|
+
margin-top: 0;
|
|
1015
|
+
overflow: hidden;
|
|
1016
|
+
text-overflow: ellipsis;
|
|
1017
|
+
white-space: nowrap;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
.bb-base-input-container__layout .bb-base-input-container__label {
|
|
1021
|
+
translate: calc(var(--fl-rest-l) + var(--fl-nudge))
|
|
1022
|
+
calc(
|
|
1023
|
+
var(--fl-label-line) + var(--fl-desc-lh) + var(--bb-label-spacing-y) +
|
|
1024
|
+
var(--fl-h) / 2 - 50%
|
|
1025
|
+
);
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
/* Floated: rises past the description into the reserved top line, where
|
|
1029
|
+
it reads as an outside label — normal font size, no masking chip
|
|
1030
|
+
background (free space, not the input border). */
|
|
1031
|
+
.bb-base-input-container__layout:focus-within
|
|
1032
|
+
.bb-base-input-container__label,
|
|
1033
|
+
&.bb-base-input-container--has-value .bb-base-input-container__label {
|
|
1034
|
+
background-color: transparent;
|
|
1035
|
+
font-size: var(--bb-label-fs);
|
|
1036
|
+
/* Left-aligned with the description, like an outside label — not
|
|
1037
|
+
indented to the border-chip offset. */
|
|
1038
|
+
translate: 0 0;
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
/*
|
|
1043
|
+
* INSIDE LABEL + DESCRIPTION
|
|
1044
|
+
* -----------------------------------------------------------------
|
|
1045
|
+
* The description renders as a second single-line overlay right under
|
|
1046
|
+
* the inside label; the field's clearance grows to two label lines (see
|
|
1047
|
+
* CommonInputWrapper). Anchored like the label: to the container root
|
|
1048
|
+
* for plain inputs, to the bordered layout for group controls.
|
|
1049
|
+
*/
|
|
1050
|
+
&.bb-base-input-container--inside-label.bb-base-input-container--description {
|
|
1051
|
+
.bb-base-input-container__description {
|
|
1052
|
+
font-size: 12px;
|
|
1053
|
+
left: var(--inside-label-offset-l);
|
|
1054
|
+
line-height: var(--bb-label-lh-sm);
|
|
1055
|
+
margin-top: 0;
|
|
1056
|
+
max-width: calc(
|
|
1057
|
+
100% - var(--inside-label-offset-l) - var(--inside-label-offset-r)
|
|
1058
|
+
);
|
|
1059
|
+
overflow: hidden;
|
|
1060
|
+
position: absolute;
|
|
1061
|
+
text-overflow: ellipsis;
|
|
1062
|
+
top: calc(5px + var(--bb-label-lh-sm));
|
|
1063
|
+
white-space: nowrap;
|
|
1064
|
+
z-index: 2;
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
/* Group controls: grow the bordered wrapper by the description line. */
|
|
1068
|
+
&.bb-checkbox-group,
|
|
1069
|
+
&.bb-radio-group,
|
|
1070
|
+
&.bb-switch-group {
|
|
1071
|
+
.bb-base-input-container__layout {
|
|
1072
|
+
padding-top: calc(
|
|
1073
|
+
var(--bb-label-fs-sm) + var(--bb-label-lh-sm) + var(--bb-input-px)
|
|
1074
|
+
);
|
|
1075
|
+
}
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
/* A hidden label collapses the clearance — hide the description too. */
|
|
1079
|
+
&:has(.bb-base-input-container__label--hidden)
|
|
1080
|
+
.bb-base-input-container__description {
|
|
1081
|
+
display: none;
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
&__hint-wrap {
|
|
1085
|
+
/*
|
|
1086
|
+
* Hint channel
|
|
1087
|
+
* -----------------------------------------------------------------
|
|
1088
|
+
* Vue controls mount/unmount, CSS handles the visual treatment.
|
|
1089
|
+
*/
|
|
1090
|
+
color: var(--bb-text-muted);
|
|
1091
|
+
font-size: 14px;
|
|
1092
|
+
line-height: 18px;
|
|
1093
|
+
margin-top: 6px;
|
|
1094
|
+
position: relative;
|
|
1095
|
+
}
|
|
1096
|
+
&__errors-wrap {
|
|
1097
|
+
/*
|
|
1098
|
+
* Error channel container
|
|
1099
|
+
* -----------------------------------------------------------------
|
|
1100
|
+
* Height animation is driven via inline height updates from Vue logic;
|
|
1101
|
+
* CSS provides transition behavior and spacing contract.
|
|
1102
|
+
*/
|
|
1103
|
+
display: block;
|
|
1104
|
+
height: 0;
|
|
1105
|
+
overflow: hidden;
|
|
1106
|
+
transition: height 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
1107
|
+
width: 100%;
|
|
1108
|
+
&.bb-base-input-container__errors-wrap--active {
|
|
1109
|
+
margin-top: 6px;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
&:not(.bb-base-input-container__errors-wrap--active) {
|
|
1113
|
+
margin-top: 0;
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
&__errors {
|
|
1117
|
+
/* Error text stack root */
|
|
1118
|
+
color: var(--bb-danger);
|
|
1119
|
+
display: block;
|
|
1120
|
+
font-size: 14px;
|
|
1121
|
+
line-height: 18px;
|
|
1122
|
+
position: relative;
|
|
1123
|
+
width: 100%;
|
|
1124
|
+
}
|
|
1125
|
+
&__error {
|
|
1126
|
+
/* Each error takes a full row */
|
|
1127
|
+
display: inline-block;
|
|
1128
|
+
width: 100%;
|
|
1129
|
+
}
|
|
1130
|
+
&__warnings-wrap {
|
|
1131
|
+
/*
|
|
1132
|
+
* Warning channel container — mirrors the error channel; height is
|
|
1133
|
+
* animated via inline updates from Vue logic and collapses to 0 while
|
|
1134
|
+
* the error state wins.
|
|
1135
|
+
*/
|
|
1136
|
+
display: block;
|
|
1137
|
+
height: 0;
|
|
1138
|
+
overflow: hidden;
|
|
1139
|
+
transition: height 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
1140
|
+
width: 100%;
|
|
1141
|
+
}
|
|
1142
|
+
&__warnings {
|
|
1143
|
+
/* Warning text stack root */
|
|
1144
|
+
color: var(--bb-warn);
|
|
1145
|
+
display: block;
|
|
1146
|
+
font-size: 14px;
|
|
1147
|
+
line-height: 18px;
|
|
1148
|
+
position: relative;
|
|
1149
|
+
width: 100%;
|
|
1150
|
+
}
|
|
1151
|
+
&__warning {
|
|
1152
|
+
/* Each warning takes a full row */
|
|
1153
|
+
display: inline-block;
|
|
1154
|
+
width: 100%;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
/*
|
|
1158
|
+
* Hint transition primitives
|
|
1159
|
+
* -----------------------------------------------------------------
|
|
1160
|
+
* Grid-row animation avoids abrupt auto-height jumps and keeps opacity sync.
|
|
1161
|
+
*/
|
|
1162
|
+
.hint-enter-active,
|
|
1163
|
+
.hint-leave-active {
|
|
1164
|
+
display: grid;
|
|
1165
|
+
grid-template-rows: 1fr;
|
|
1166
|
+
overflow: hidden;
|
|
1167
|
+
transition:
|
|
1168
|
+
grid-template-rows 200ms ease,
|
|
1169
|
+
opacity 300ms ease,
|
|
1170
|
+
margin-top 200ms ease;
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
.hint-enter-from,
|
|
1174
|
+
.hint-leave-to {
|
|
1175
|
+
grid-template-rows: 0fr;
|
|
1176
|
+
margin-top: 0;
|
|
1177
|
+
opacity: 0;
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
.hint-enter-active > *,
|
|
1181
|
+
.hint-leave-active > * {
|
|
1182
|
+
min-height: 0;
|
|
1183
|
+
transition: opacity 300ms ease;
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1186
|
+
.hint-enter-from > *,
|
|
1187
|
+
.hint-leave-to > * {
|
|
1188
|
+
opacity: 0;
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
/*
|
|
1192
|
+
* Error content transition primitives
|
|
1193
|
+
* -----------------------------------------------------------------
|
|
1194
|
+
* Opacity + slight vertical motion for error text. Container height itself
|
|
1195
|
+
* is animated separately by wrapper logic.
|
|
1196
|
+
*/
|
|
1197
|
+
.errors-content-enter-active,
|
|
1198
|
+
.errors-content-leave-active {
|
|
1199
|
+
transition:
|
|
1200
|
+
opacity 200ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
1201
|
+
transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
.errors-content-enter-from,
|
|
1205
|
+
.errors-content-leave-to {
|
|
1206
|
+
opacity: 0;
|
|
1207
|
+
transform: translateY(-2px);
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
```
|