bitboss-ui 2.1.134 → 3.0.0-alpha.1
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 +244 -21
- package/bin/bitboss-ui-mcp.mjs +557 -0
- package/bin/bitboss-ui.mjs +626 -0
- package/dist/ai/BbAccordion.md +522 -113
- package/dist/ai/BbAlert.md +377 -197
- package/dist/ai/BbAsterisk.md +46 -0
- package/dist/ai/BbAvatar.md +454 -178
- package/dist/ai/BbBadge.md +695 -225
- package/dist/ai/BbBadgeButton.md +54 -0
- package/dist/ai/BbBaseButton.md +489 -0
- package/dist/ai/BbBaseCheckbox.md +49 -0
- package/dist/ai/BbBaseCheckboxGroup.md +64 -0
- package/dist/ai/BbBaseCheckboxIcon.md +174 -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 +63 -0
- package/dist/ai/BbBaseRadioIcon.md +187 -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 +184 -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 +542 -503
- package/dist/ai/BbButton.md +767 -636
- package/dist/ai/BbCheckbox.md +572 -254
- package/dist/ai/BbCheckboxGroup.md +561 -361
- package/dist/ai/BbCollapsible.md +419 -103
- package/dist/ai/BbColorInput.md +529 -323
- package/dist/ai/BbColorPalette.md +565 -330
- package/dist/ai/BbConfirm.md +612 -136
- package/dist/ai/BbConfirmPortal.md +28 -0
- package/dist/ai/BbDatePicker.md +244 -0
- package/dist/ai/BbDatePickerInput.md +706 -388
- package/dist/ai/BbDialog.md +770 -99
- package/dist/ai/BbDropdown.md +1054 -763
- package/dist/ai/BbDropdownButton.md +511 -615
- package/dist/ai/BbDropdownGroup.md +34 -0
- package/dist/ai/BbDropzone.md +1148 -436
- package/dist/ai/BbForm.md +239 -0
- package/dist/ai/BbIcon.md +379 -212
- package/dist/ai/BbIndicator.md +283 -0
- package/dist/ai/BbNumberInput.md +713 -355
- package/dist/ai/BbOffCanvas.md +875 -498
- package/dist/ai/BbPagination.md +483 -535
- package/dist/ai/BbPopover.md +583 -546
- package/dist/ai/BbProgress.md +456 -69
- package/dist/ai/BbRadio.md +343 -229
- package/dist/ai/BbRadioGroup.md +426 -353
- package/dist/ai/BbRating.md +361 -226
- package/dist/ai/BbSelect.md +1380 -536
- package/dist/ai/BbSelectPopover.md +1240 -1579
- package/dist/ai/BbSlider.md +478 -257
- package/dist/ai/BbSmoothHeight.md +472 -139
- package/dist/ai/BbSpinner.md +718 -131
- package/dist/ai/BbSwitch.md +549 -119
- package/dist/ai/BbSwitchGroup.md +503 -214
- package/dist/ai/BbTable.md +1956 -2358
- package/dist/ai/BbTabs.md +1113 -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 +393 -292
- package/dist/ai/BbTextInput.md +852 -333
- package/dist/ai/BbTextarea.md +836 -255
- package/dist/ai/BbTimePicker.md +231 -0
- package/dist/ai/BbTimePickerInput.md +196 -0
- package/dist/ai/BbToast.md +624 -196
- package/dist/ai/BbToastPortal.md +28 -0
- package/dist/ai/BbTooltip.md +443 -346
- package/dist/ai/BbTree.md +984 -235
- 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 +15883 -0
- package/dist/ai/composables/useBbConfig.md +80 -0
- package/dist/ai/composables/useBbFormContext.md +110 -0
- package/dist/ai/composables/useBbTableContext.md +164 -0
- package/dist/ai/composables/useBbTabsContext.md +118 -0
- package/dist/ai/composables/useBroadcastChannelInstance.md +97 -0
- package/dist/ai/composables/useConfirm.md +306 -0
- package/dist/ai/composables/useCountdown.md +84 -0
- package/dist/ai/composables/useId.md +60 -0
- package/dist/ai/composables/useMobile.md +85 -0
- package/dist/ai/composables/useToast.md +230 -0
- package/dist/ai/guides/agent-contract.md +108 -0
- package/dist/ai/guides/ai-router.md +111 -0
- package/dist/ai/guides/app-layout.md +295 -0
- package/dist/ai/guides/coherence-playbook.md +136 -0
- package/dist/ai/guides/component-picker.md +195 -0
- package/dist/ai/guides/design-language.md +461 -0
- package/dist/ai/guides/design-tokens.md +424 -0
- package/dist/ai/guides/fetch-items-playbook.md +161 -0
- package/dist/ai/guides/floating-bottom-panel.md +191 -0
- package/dist/ai/guides/icons-policy.md +257 -0
- package/dist/ai/guides/inertia-helpers.md +1394 -0
- package/dist/ai/guides/inline-edit-playbook.md +258 -0
- package/dist/ai/guides/installation-and-plugin-setup.md +377 -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-off-canvas.md +25 -0
- package/dist/ai/guides/migration/components/bb-offcanvas.md +54 -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 +58 -0
- package/dist/ai/guides/migration/components/bb-select.md +68 -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 +314 -0
- package/dist/ai/guides/validated-forms.md +177 -0
- package/dist/ai/index.md +156 -32
- package/dist/ai/recipes/inertia/approvals-inbox.md +1598 -0
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +1733 -0
- package/dist/ai/recipes/inertia/onboarding.md +1765 -0
- package/dist/ai/recipes/inertia/ownership-atlas.md +1281 -0
- package/dist/ai/recipes/inertia/record-form.md +1442 -0
- package/dist/ai/recipes/inertia/records-workspace.md +1328 -0
- package/dist/ai/recipes/inertia/upload-center.md +1926 -0
- package/dist/ai/recipes/inertia/wizard-form.md +1477 -0
- package/dist/ai/recipes/nuxt/approvals-inbox.md +1561 -0
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +1690 -0
- package/dist/ai/recipes/nuxt/onboarding.md +1698 -0
- package/dist/ai/recipes/nuxt/record-form.md +1456 -0
- package/dist/ai/recipes/nuxt/records-workspace.md +1314 -0
- package/dist/ai/recipes/nuxt/upload-center.md +1847 -0
- package/dist/ai/recipes/nuxt/wizard-form.md +1486 -0
- package/dist/ai/recipes/vue/approvals-inbox.md +1479 -0
- package/dist/ai/recipes/vue/inline-edit-workspace.md +1581 -0
- package/dist/ai/recipes/vue/onboarding.md +1653 -0
- package/dist/ai/recipes/vue/record-form.md +1540 -0
- package/dist/ai/recipes/vue/records-workspace.md +1230 -0
- package/dist/ai/recipes/vue/upload-center.md +1806 -0
- package/dist/ai/recipes/vue/wizard-form.md +1418 -0
- package/dist/ai/source/BbAccordion.md +122 -0
- package/dist/ai/source/BbAlert.md +396 -0
- package/dist/ai/source/BbAsterisk.md +32 -0
- package/dist/ai/source/BbAvatar.md +256 -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 +459 -0
- package/dist/ai/source/BbBaseCheckboxGroup.md +554 -0
- package/dist/ai/source/BbBaseCheckboxIcon.md +201 -0
- package/dist/ai/source/BbBaseColorInput.md +413 -0
- package/dist/ai/source/BbBaseColorPalette.md +934 -0
- package/dist/ai/source/BbBaseDatePicker.md +1001 -0
- package/dist/ai/source/BbBaseDatePickerInput.md +1781 -0
- package/dist/ai/source/BbBaseInputContainer.md +1148 -0
- package/dist/ai/source/BbBaseNumberInput.md +615 -0
- package/dist/ai/source/BbBaseRadio.md +377 -0
- package/dist/ai/source/BbBaseRadioGroup.md +499 -0
- package/dist/ai/source/BbBaseRadioIcon.md +153 -0
- package/dist/ai/source/BbBaseRating.md +573 -0
- package/dist/ai/source/BbBaseSelect.md +895 -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 +688 -0
- package/dist/ai/source/BbBaseTextInput.md +511 -0
- package/dist/ai/source/BbBaseTextarea.md +480 -0
- package/dist/ai/source/BbBaseTimePickerInput.md +1013 -0
- package/dist/ai/source/BbBreadcrumbs.md +811 -0
- package/dist/ai/source/BbButton.md +990 -0
- package/dist/ai/source/BbCheckbox.md +319 -0
- package/dist/ai/source/BbCheckboxGroup.md +412 -0
- package/dist/ai/source/BbCollapsible.md +133 -0
- package/dist/ai/source/BbColorInput.md +315 -0
- package/dist/ai/source/BbColorPalette.md +361 -0
- package/dist/ai/source/BbConfirm.md +173 -0
- package/dist/ai/source/BbConfirmPortal.md +74 -0
- package/dist/ai/source/BbDatePicker.md +725 -0
- package/dist/ai/source/BbDatePickerInput.md +518 -0
- package/dist/ai/source/BbDialog.md +812 -0
- package/dist/ai/source/BbDropdown.md +2369 -0
- package/dist/ai/source/BbDropdownButton.md +313 -0
- package/dist/ai/source/BbDropdownGroup.md +1249 -0
- package/dist/ai/source/BbDropzone.md +749 -0
- package/dist/ai/source/BbForm.md +100 -0
- package/dist/ai/source/BbIcon.md +212 -0
- package/dist/ai/source/BbIndicator.md +298 -0
- package/dist/ai/source/BbNumberInput.md +365 -0
- package/dist/ai/source/BbOffCanvas.md +1260 -0
- package/dist/ai/source/BbPagination.md +829 -0
- package/dist/ai/source/BbPopover.md +853 -0
- package/dist/ai/source/BbProgress.md +140 -0
- package/dist/ai/source/BbRadio.md +294 -0
- package/dist/ai/source/BbRadioGroup.md +401 -0
- package/dist/ai/source/BbRating.md +362 -0
- package/dist/ai/source/BbSelect.md +681 -0
- package/dist/ai/source/BbSelectPopover.md +2209 -0
- package/dist/ai/source/BbSlider.md +371 -0
- package/dist/ai/source/BbSmoothHeight.md +261 -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 +3348 -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 +383 -0
- package/dist/ai/source/BbTextInput.md +345 -0
- package/dist/ai/source/BbTextarea.md +330 -0
- package/dist/ai/source/BbTimePicker.md +591 -0
- package/dist/ai/source/BbTimePickerInput.md +367 -0
- package/dist/ai/source/BbToast.md +524 -0
- package/dist/ai/source/BbToastPortal.md +482 -0
- package/dist/ai/source/BbTooltip.md +508 -0
- package/dist/ai/source/BbTree.md +319 -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 +606 -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 +12 -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 +18 -0
- package/dist/button-variants.d.ts +15 -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 +10 -7
- 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 +51 -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 +4 -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 +28 -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 +222 -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 +207 -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 +713 -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 +309 -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 +184 -0
- package/dist/components/BbBaseInputContainer/types.d.ts +185 -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 +211 -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 +172 -0
- package/dist/components/BbBaseRadioGroup/types.d.ts +215 -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 +294 -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 +517 -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 +33 -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 +177 -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 +24 -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 +44 -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 +10 -9
- 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 +37 -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 +125 -0
- package/dist/components/BbColorPalette/types.d.ts +66 -53
- package/dist/components/BbConfirm/BbConfirm.vue.js +6 -0
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +130 -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 +155 -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 +127 -16
- package/dist/components/BbDialog/BbDialog.vue.d.ts +8 -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 +18 -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 +560 -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 +27 -0
- package/dist/components/BbDropdown/BbDropdownList.vue.js +6 -0
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +464 -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 +457 -45
- 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 +45 -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 +284 -0
- package/dist/components/BbDropzone/types.d.ts +55 -7
- 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 +31 -4
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +10 -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 +3 -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 +10 -15
- package/dist/components/BbPopover/BbPopover.vue.js +6 -0
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +310 -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 +84 -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 +23 -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 +184 -0
- package/dist/components/BbRadioGroup/types.d.ts +41 -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 +37 -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 +105 -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 +637 -0
- package/dist/components/BbSelectPopover/types.d.ts +189 -102
- 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 +37 -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 +13 -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 +53 -31
- package/dist/components/BbTable/BbTable.vue.js +6 -0
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +889 -0
- package/dist/components/BbTable/types.d.ts +176 -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 +48 -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 +24 -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 +26 -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 +129 -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 +165 -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 +35 -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 +4 -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 +61 -11
- package/dist/components/BbTree/BbTree.vue.d.ts +26 -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 +93 -42
- 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 +3 -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 +61 -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.js +5 -0
- package/dist/components/Transitions/ScaleFade.vue_vue_type_script_setup_true_lang.js +47 -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 +219 -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/useCoherence.js +16 -0
- package/dist/composables/useConfirm.d.ts +257 -67
- package/dist/composables/useConfirm.js +122 -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 +103 -0
- package/dist/composables/useSegmentedFields.js +152 -0
- package/dist/composables/useTableWidthContext.d.ts +5 -0
- package/dist/composables/useTableWidthContext.js +42 -0
- package/dist/composables/useToast.d.ts +17 -73
- package/dist/composables/useToast.js +49 -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 +10 -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/dropdown-item-variants.d.ts +10 -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 +94 -79
- package/dist/index.js +76 -82
- package/dist/indicator-variants.d.ts +13 -0
- package/dist/llms-full.txt +77073 -0
- package/dist/llms-medium.txt +1334 -0
- package/dist/llms.txt +103 -0
- package/dist/locale-blueprint.json +141 -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 +13 -0
- package/dist/tooltip-variants.d.ts +10 -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 +66 -279
- 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 +76 -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 +40 -0
- package/dist/validated/BbDatePickerInput.vue.js +5 -0
- package/dist/validated/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +87 -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 +75 -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 +100 -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 +76 -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 +36 -0
- package/dist/validated/BbTimePickerInput.vue.js +5 -0
- package/dist/validated/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/validated/index.d.ts +29 -0
- package/dist/validated/useValidatedField.d.ts +52 -0
- package/dist/validated/useValidatedField.js +51 -0
- package/dist/validated.js +21 -0
- package/dist/vite-plugin.d.ts +217 -0
- package/dist/vite.js +530 -0
- package/llms.txt +105 -0
- package/package.json +161 -59
- 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.mjs +285 -0
- package/scripts/lib/eslint-plugin.node.test.mjs +161 -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 +421 -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/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/{index352.js → directives/createPopoverDirective.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
package/dist/ai/BbTextInput.md
CHANGED
|
@@ -1,356 +1,875 @@
|
|
|
1
1
|
# BbTextInput
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Agent Contract
|
|
4
|
+
|
|
5
|
+
- Safety level: **Consumer API**
|
|
6
|
+
- Group: **Inputs**
|
|
7
|
+
- Description: Captures single-line text values.
|
|
8
|
+
- Usage rule: Prefer this component for consumer-facing implementations.
|
|
9
|
+
- Implementation source (only when the contract below is not enough): [source/BbTextInput.md](./source/BbTextInput.md)
|
|
10
|
+
|
|
11
|
+
## Usage & Guidelines
|
|
12
|
+
|
|
13
|
+
### When to use
|
|
14
|
+
|
|
15
|
+
Reach for `BbTextInput` for any short, single-line string: names, emails, URLs,
|
|
16
|
+
search boxes, coupon codes. It owns the shared input chrome — label, description,
|
|
17
|
+
hint, validation, affix icons/slots, `clearable`, `loading` and masking — that
|
|
18
|
+
the whole form family builds on.
|
|
19
|
+
|
|
20
|
+
Pick a sibling when the shape of the data is different:
|
|
21
|
+
|
|
22
|
+
- multi-line prose (bios, notes, messages) → `BbTextarea`;
|
|
23
|
+
- numbers with clamping/stepping (quantities, prices) → `BbNumberInput`;
|
|
24
|
+
- calendar dates → `BbDatePickerInput`;
|
|
25
|
+
- choosing from a known set of options → `BbSelect` / `BbRadioGroup`.
|
|
26
|
+
|
|
27
|
+
`v-model` binds a `string | null` — an emptied field emits `null`, never `''`.
|
|
28
|
+
`label` is required (hide it visually with `hideLabel`, never drop it).
|
|
29
|
+
|
|
30
|
+
### Label & label modes
|
|
31
|
+
|
|
32
|
+
`label` names the field and doubles as the default `name` (lowercased,
|
|
33
|
+
accents stripped, spaces removed) — pass `name` explicitly when the value is
|
|
34
|
+
posted to a server.
|
|
35
|
+
|
|
36
|
+
- **`labelMode`** sets where the label sits: `outside` (above the field),
|
|
37
|
+
`floating` (rests inside like a placeholder at reduced opacity, lifts on
|
|
38
|
+
focus/fill) or `inside` (pinned small inside the top of the field). When you
|
|
39
|
+
don't set it, the project-wide `config.defaultInputLabelMode` applies
|
|
40
|
+
(library default: `outside`) — so a project can go all-floating without
|
|
41
|
+
touching call sites.
|
|
42
|
+
- **`labelPosition`** aligns the label text `left` / `center` / `right`.
|
|
43
|
+
- **`hideLabel`** keeps the label for screen readers but removes it visually —
|
|
44
|
+
the right move for search boxes whose design shows only a placeholder.
|
|
45
|
+
- The **`label` slot** replaces the label text and receives
|
|
46
|
+
`{ text, hasErrors }`, e.g. to append a required marker that turns red with
|
|
47
|
+
the error state.
|
|
48
|
+
|
|
49
|
+
Avoid combining `labelMode="floating"` with a `placeholder` — the resting
|
|
50
|
+
label already plays that role and the two would overlap.
|
|
51
|
+
|
|
52
|
+
**The three label modes**
|
|
4
53
|
|
|
5
54
|
```vue
|
|
6
55
|
<template>
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
:show-hint="showHint"
|
|
23
|
-
>
|
|
24
|
-
<template #label="data"><slot name="label" v-bind="data"></slot></template>
|
|
25
|
-
<template #input="{ id, hasErrors, ariaDescribedby }">
|
|
26
|
-
<BaseTextInput
|
|
27
|
-
:id="id"
|
|
28
|
-
:append:icon="props['append:icon']"
|
|
29
|
-
:aria-describedby="ariaDescribedby"
|
|
30
|
-
:autocomplete="autocomplete"
|
|
31
|
-
:autofocus="autofocus"
|
|
32
|
-
:clearable="clearable"
|
|
33
|
-
:compact="compact"
|
|
34
|
-
:disabled="disabled"
|
|
35
|
-
:emit-masked="emitMasked"
|
|
36
|
-
:has-errors="hasErrors"
|
|
37
|
-
:input-mode="inputMode"
|
|
38
|
-
:label-mode="labelMode"
|
|
39
|
-
:loading="loading"
|
|
40
|
-
:mask="mask"
|
|
41
|
-
:model-value="modelValue"
|
|
42
|
-
:name="name"
|
|
43
|
-
:placeholder="placeholder"
|
|
44
|
-
:prepend:icon="props['prepend:icon']"
|
|
45
|
-
:readonly="readonly"
|
|
46
|
-
:required="required"
|
|
47
|
-
:type="type"
|
|
48
|
-
v-bind="eventListeners"
|
|
49
|
-
>
|
|
50
|
-
<template #append-outer><slot name="append-outer" /></template>
|
|
51
|
-
<template #append><slot name="append" /></template>
|
|
52
|
-
<template #prefix><slot name="prefix" /></template>
|
|
53
|
-
<template #suffix><slot name="suffix" /></template>
|
|
54
|
-
<template #prepend><slot name="prepend" /></template>
|
|
55
|
-
<template #prepend-outer><slot name="prepend-outer" /></template>
|
|
56
|
-
</BaseTextInput>
|
|
57
|
-
</template>
|
|
58
|
-
</BaseInputContainer>
|
|
56
|
+
<div class="grid max-w-sm gap-3 rounded-[var(--bb-radius)] border p-4">
|
|
57
|
+
<div>
|
|
58
|
+
<p class="text-sm font-medium">Profile basics</p>
|
|
59
|
+
<p class="text-xs text-gray-500">
|
|
60
|
+
Same field, three label placements — pick one per product.
|
|
61
|
+
</p>
|
|
62
|
+
</div>
|
|
63
|
+
<BbTextInput
|
|
64
|
+
v-model="outside"
|
|
65
|
+
label="Outside (default)"
|
|
66
|
+
placeholder="Display name"
|
|
67
|
+
/>
|
|
68
|
+
<BbTextInput v-model="floating" label="Floating" label-mode="floating" />
|
|
69
|
+
<BbTextInput v-model="inside" label="Inside" label-mode="inside" />
|
|
70
|
+
</div>
|
|
59
71
|
</template>
|
|
72
|
+
<script setup lang="ts">
|
|
73
|
+
import { ref } from 'vue';
|
|
74
|
+
import { BbTextInput } from 'bitboss-ui';
|
|
60
75
|
|
|
76
|
+
const outside = ref<string | null>('Ada Lovelace');
|
|
77
|
+
const floating = ref<string | null>('ada@bitboss.it');
|
|
78
|
+
const inside = ref<string | null>('Bitboss');
|
|
79
|
+
</script>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Custom label via slot**
|
|
83
|
+
|
|
84
|
+
```vue
|
|
85
|
+
<template>
|
|
86
|
+
<div class="grid max-w-sm gap-3 rounded-[var(--bb-radius)] border p-4">
|
|
87
|
+
<div>
|
|
88
|
+
<p class="text-sm font-medium">Workspace settings</p>
|
|
89
|
+
<p class="text-xs text-gray-500">
|
|
90
|
+
Required fields mark the label — keep the accessible name intact.
|
|
91
|
+
</p>
|
|
92
|
+
</div>
|
|
93
|
+
<BbTextInput
|
|
94
|
+
v-model="organization"
|
|
95
|
+
description="Appears on invoices and member invites."
|
|
96
|
+
label="Organization"
|
|
97
|
+
name="organization"
|
|
98
|
+
placeholder="Bitboss"
|
|
99
|
+
>
|
|
100
|
+
<template #label="{ text, hasErrors }">
|
|
101
|
+
{{ text }}
|
|
102
|
+
<span
|
|
103
|
+
:class="hasErrors ? 'text-[color:var(--bb-danger)]' : 'text-gray-500'"
|
|
104
|
+
>
|
|
105
|
+
*
|
|
106
|
+
</span>
|
|
107
|
+
</template>
|
|
108
|
+
</BbTextInput>
|
|
109
|
+
</div>
|
|
110
|
+
</template>
|
|
61
111
|
<script setup lang="ts">
|
|
62
|
-
import { ref
|
|
63
|
-
import
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
BbTextInputProps,
|
|
67
|
-
BbTextInputEvents,
|
|
68
|
-
BbTextInputSlots,
|
|
69
|
-
} from './types';
|
|
70
|
-
|
|
71
|
-
const props = defineProps<BbTextInputProps>();
|
|
72
|
-
|
|
73
|
-
const emit = defineEmits<BbTextInputEvents>();
|
|
74
|
-
|
|
75
|
-
defineSlots<BbTextInputSlots>();
|
|
76
|
-
|
|
77
|
-
const active = ref(false);
|
|
78
|
-
const showHint = computed(() => props.persistentHint || active.value);
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* These events are just propagated
|
|
82
|
-
*/
|
|
83
|
-
const eventListeners = {
|
|
84
|
-
onBlur: (event: FocusEvent) => {
|
|
85
|
-
active.value = false;
|
|
86
|
-
emit('blur', event);
|
|
87
|
-
},
|
|
88
|
-
onChange: (event: Event) => emit('change', event),
|
|
89
|
-
onClick: (event: MouseEvent) => emit('click', event),
|
|
90
|
-
onFocus: (event: FocusEvent) => {
|
|
91
|
-
active.value = true;
|
|
92
|
-
emit('focus', event);
|
|
93
|
-
},
|
|
94
|
-
onInput: (event: Event) => emit('input', event),
|
|
95
|
-
onKeydown: (event: KeyboardEvent) => emit('keydown', event),
|
|
96
|
-
onMousedown: (event: MouseEvent) => emit('mousedown', event),
|
|
97
|
-
onMouseup: (event: MouseEvent) => emit('mouseup', event),
|
|
98
|
-
'onUpdate:modelValue': (value: string | null) =>
|
|
99
|
-
emit('update:modelValue', value),
|
|
100
|
-
};
|
|
112
|
+
import { ref } from 'vue';
|
|
113
|
+
import { BbTextInput } from 'bitboss-ui';
|
|
114
|
+
|
|
115
|
+
const organization = ref<string | null>('Bitboss');
|
|
101
116
|
</script>
|
|
117
|
+
```
|
|
102
118
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
119
|
+
### Description, hint & errors
|
|
120
|
+
|
|
121
|
+
Three messaging surfaces, three jobs:
|
|
122
|
+
|
|
123
|
+
- **`description`** — always-visible muted text between label and field, linked
|
|
124
|
+
via `aria-describedby`. Use for instructions the user needs _before_ typing.
|
|
125
|
+
- **`hint`** — appears below the field while it's focused; `persistentHint`
|
|
126
|
+
keeps it visible. Use for reassurance or format examples.
|
|
127
|
+
- **`errors`** — a string or string array rendered below the field in an
|
|
128
|
+
`aria-live="polite"` region, so new messages are announced. **`hasErrors`**
|
|
129
|
+
flips the visual error state and `aria-invalid` — passing `errors` alone
|
|
130
|
+
already implies the error state, so use `hasErrors` by itself when the
|
|
131
|
+
message lives elsewhere (e.g. a form-level summary).
|
|
132
|
+
- **`warnings`** — the amber counterpart of `errors`: a string or string array
|
|
133
|
+
rendered below the field in its own `aria-live="polite"` region, for a
|
|
134
|
+
valid-but-noteworthy value (unusual, near a limit, soft-flagged) where a hard
|
|
135
|
+
error would overstate the problem. A non-empty `warnings` implies the warning
|
|
136
|
+
state (same as `errors` implies the error state). **`hasWarning`** forces that
|
|
137
|
+
chrome without a message. Either way you get tinted border, focus ring and a
|
|
138
|
+
warning icon in amber (`--bb-warn`) — but, unlike `hasErrors`, **no**
|
|
139
|
+
`aria-invalid`. Errors win when both are set, and the warning messages are
|
|
140
|
+
suppressed, so the field never shows amber and red at once.
|
|
141
|
+
|
|
142
|
+
`required` forwards to the native input for browser validation; your own
|
|
143
|
+
validation layer should still drive `errors`.
|
|
144
|
+
|
|
145
|
+
**The messaging surface, in one field**
|
|
146
|
+
|
|
147
|
+
```vue
|
|
148
|
+
<div class="max-w-sm">
|
|
149
|
+
<BbTextInput
|
|
150
|
+
v-model="state.displayName"
|
|
151
|
+
label="Display name"
|
|
152
|
+
description="This is the name shown on your public profile."
|
|
153
|
+
hint="2–32 characters, letters and spaces."
|
|
154
|
+
persistentHint
|
|
155
|
+
placeholder="Ada Lovelace"
|
|
156
|
+
/>
|
|
157
|
+
</div>
|
|
106
158
|
```
|
|
107
159
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
```ts
|
|
111
|
-
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
112
|
-
import type { MaskInputOptions } from 'maska';
|
|
113
|
-
import type { IconType } from '@/types/Icon';
|
|
114
|
-
import type {
|
|
115
|
-
BaseTextInputEvents,
|
|
116
|
-
BaseTextInputSlots,
|
|
117
|
-
} from '../BaseTextInput/types';
|
|
118
|
-
|
|
119
|
-
export type BbTextInputProps = {
|
|
120
|
-
/**
|
|
121
|
-
* Name of the icon to be added at the end of the input.
|
|
122
|
-
*/
|
|
123
|
-
// eslint-disable-next-line vue/prop-name-casing
|
|
124
|
-
'append:icon'?: IconType;
|
|
125
|
-
/**
|
|
126
|
-
* Guides to the browser as to the type of information expected in the field.
|
|
127
|
-
*/
|
|
128
|
-
autocomplete?: InputHTMLAttributes['autocomplete'];
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Sets autofocus on page load.
|
|
132
|
-
*/
|
|
133
|
-
autofocus?: InputHTMLAttributes['autofocus'];
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Displays a clear button when the input has a value and is being interacted with.
|
|
137
|
-
*/
|
|
138
|
-
clearable?: boolean;
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Displays the component in a compact version.
|
|
142
|
-
*/
|
|
143
|
-
compact?: boolean;
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Direction of the layout of the component. Can either be a predefined value or a
|
|
147
|
-
* pattern separated by a space like `xx xxxxx`.
|
|
148
|
-
*/
|
|
149
|
-
direction?: 'horizontal' | 'vertical' | 'auto' | string;
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Disables the component.
|
|
153
|
-
*/
|
|
154
|
-
disabled?: boolean;
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Emits the masked value of the input.
|
|
158
|
-
*/
|
|
159
|
-
emitMasked?: boolean;
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Can be a string or an array of string containing the messages to display.
|
|
163
|
-
*/
|
|
164
|
-
errors?: string | string[];
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Define if the component should be in an error state.
|
|
168
|
-
* It usually attaches a CSS class for styling purposes.
|
|
169
|
-
*/
|
|
170
|
-
hasErrors?: boolean;
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Visually hides the label of the input while maintaining accessibility.
|
|
174
|
-
*/
|
|
175
|
-
hideLabel?: boolean;
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Text box to be displayed near the input, usually to indicate instructions.
|
|
179
|
-
*/
|
|
180
|
-
hint?: string;
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* The identifier of the component.
|
|
184
|
-
*/
|
|
185
|
-
id?: HTMLAttributes['id'];
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* The inputmode of the input.
|
|
189
|
-
*/
|
|
190
|
-
inputMode?: InputHTMLAttributes['inputmode'];
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Text content of the label of the element.
|
|
194
|
-
*/
|
|
195
|
-
label: string;
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Sets the text alignment of the label.
|
|
199
|
-
*/
|
|
200
|
-
labelPosition?: 'left' | 'center' | 'right';
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Label rendering mode.
|
|
204
|
-
*/
|
|
205
|
-
labelMode?: 'outside' | 'floating' | 'inside';
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Sets the component in a loading state, usually triggering some visual styles.
|
|
209
|
-
*/
|
|
210
|
-
loading?: boolean;
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* The mask to be applied to the input.
|
|
214
|
-
* Please visit https://beholdr.github.io/maska/v3 for syntax examples.
|
|
215
|
-
*/
|
|
216
|
-
mask?: MaskInputOptions;
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Used by v-model.
|
|
220
|
-
*/
|
|
221
|
-
modelValue: string | null;
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Defines the name of the input.
|
|
225
|
-
*/
|
|
226
|
-
name?: InputHTMLAttributes['name'];
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Keeps the hint displayed.
|
|
230
|
-
*/
|
|
231
|
-
persistentHint?: boolean;
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* String displayed when there's no data.
|
|
235
|
-
*/
|
|
236
|
-
placeholder?: InputHTMLAttributes['placeholder'];
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Name of the icon to be added at the start of the input.
|
|
240
|
-
*/
|
|
241
|
-
// eslint-disable-next-line vue/prop-name-casing
|
|
242
|
-
'prepend:icon'?: IconType;
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* Sets the input in a readonly state.
|
|
246
|
-
*/
|
|
247
|
-
readonly?: boolean;
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* Sets the input as required.
|
|
251
|
-
*/
|
|
252
|
-
required?: boolean;
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Reverses the layout. Applicable in every direction the order of the label and
|
|
256
|
-
* the input is swapped.
|
|
257
|
-
*/
|
|
258
|
-
reverse?: boolean;
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Type of the input. Returns the content type of the object.
|
|
262
|
-
*/
|
|
263
|
-
type?: HTMLInputElement['type'];
|
|
264
|
-
};
|
|
160
|
+
**Validation states**
|
|
265
161
|
|
|
266
|
-
|
|
267
|
-
|
|
162
|
+
```vue
|
|
163
|
+
<template>
|
|
164
|
+
<div class="grid max-w-sm gap-3">
|
|
165
|
+
<div class="grid gap-2 rounded-[var(--bb-radius)] border p-3">
|
|
166
|
+
<p class="text-xs font-medium text-gray-500">Invite teammate</p>
|
|
167
|
+
<BbTextInput
|
|
168
|
+
v-model="email"
|
|
169
|
+
compact
|
|
170
|
+
:errors="['Enter a valid email', 'Use your company domain']"
|
|
171
|
+
label="Work email"
|
|
172
|
+
name="email"
|
|
173
|
+
placeholder="ada@bitboss.it"
|
|
174
|
+
prepend:icon="lucide:mail"
|
|
175
|
+
type="email"
|
|
176
|
+
/>
|
|
177
|
+
</div>
|
|
178
|
+
<div class="grid gap-2 rounded-[var(--bb-radius)] border p-3">
|
|
179
|
+
<p class="text-xs font-medium text-gray-500">Non-blocking hint</p>
|
|
180
|
+
<BbTextInput
|
|
181
|
+
v-model="handle"
|
|
182
|
+
compact
|
|
183
|
+
label="Display name"
|
|
184
|
+
name="handle"
|
|
185
|
+
placeholder="ada"
|
|
186
|
+
:warnings="['This name is very short — is it what you meant?']"
|
|
187
|
+
/>
|
|
188
|
+
</div>
|
|
189
|
+
<div class="rounded-[var(--bb-radius)] border px-2 py-1.5">
|
|
190
|
+
<BbTextInput
|
|
191
|
+
v-model="search"
|
|
192
|
+
class="w-full"
|
|
193
|
+
clearable
|
|
194
|
+
compact
|
|
195
|
+
hide-label
|
|
196
|
+
label="Search"
|
|
197
|
+
placeholder="Search projects…"
|
|
198
|
+
prepend:icon="lucide:search"
|
|
199
|
+
type="search"
|
|
200
|
+
/>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</template>
|
|
204
|
+
<script setup lang="ts">
|
|
205
|
+
import { ref } from 'vue';
|
|
206
|
+
import { BbTextInput } from 'bitboss-ui';
|
|
268
207
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
hasErrors: boolean;
|
|
275
|
-
};
|
|
208
|
+
const email = ref<string | null>('ada@');
|
|
209
|
+
const handle = ref<string | null>('ad');
|
|
210
|
+
const search = ref<string | null>('billing');
|
|
211
|
+
</script>
|
|
212
|
+
```
|
|
276
213
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
214
|
+
The second field carries `warnings` — a non-blocking amber hint in an
|
|
215
|
+
`aria-live` region, mirroring `errors`. A non-empty `warnings` lights the state
|
|
216
|
+
on its own (use `hasWarning` to force the chrome without messages). When a field
|
|
217
|
+
has **both** `errors` and `warnings`, errors win: the field shows error chrome
|
|
218
|
+
and only the error messages. The last field shows the common a11y move: a search
|
|
219
|
+
box with a _visually_ hidden label (`hideLabel`) — the accessible name survives
|
|
220
|
+
for screen readers even though the design shows only a placeholder.
|
|
221
|
+
|
|
222
|
+
### Icons, affixes & slots
|
|
223
|
+
|
|
224
|
+
Use `prepend:icon` / `append:icon` for iconography inside the field, and the
|
|
225
|
+
`prefix` / `suffix` slots for short inline text (units, fixed URL segments,
|
|
226
|
+
currency). Affixes are decoration — they never receive focus, so keep
|
|
227
|
+
interactive controls out of them.
|
|
228
|
+
|
|
229
|
+
The append-icon position is shared with the field's status indicators, one at
|
|
230
|
+
a time by priority: **clear button → spinner (`loading`) → error icon
|
|
231
|
+
(`hasErrors`) → your `append:icon`**. The warning icon (`hasWarning`) shares the
|
|
232
|
+
error icon's slot — shown when `hasWarning` is set and there is no error. Don't
|
|
233
|
+
rely on an `append:icon` staying visible on a field that is also `clearable` or
|
|
234
|
+
validated.
|
|
235
|
+
|
|
236
|
+
The full slot ring, inside → out:
|
|
237
|
+
|
|
238
|
+
- `prefix` / `suffix` — styled inline text hugging the typed value;
|
|
239
|
+
- `prepend` / `append` — free-form content inside the input chrome (replaces
|
|
240
|
+
`prefix`/`suffix` when both are given);
|
|
241
|
+
- `prepend-outer` / `append-outer` — content outside the chrome, laid out next
|
|
242
|
+
to the field; the right home for an adjacent button.
|
|
243
|
+
|
|
244
|
+
**Icons and text affixes**
|
|
245
|
+
|
|
246
|
+
```vue
|
|
247
|
+
<template>
|
|
248
|
+
<div class="grid max-w-sm gap-3 rounded-[var(--bb-radius)] border p-4">
|
|
249
|
+
<div>
|
|
250
|
+
<p class="text-sm font-medium">Workspace & billing</p>
|
|
251
|
+
<p class="text-xs text-gray-500">
|
|
252
|
+
Icons and short affixes live inside the chrome; actions sit outside.
|
|
253
|
+
</p>
|
|
254
|
+
</div>
|
|
255
|
+
<BbTextInput
|
|
256
|
+
v-model="site"
|
|
257
|
+
append:icon="lucide:check"
|
|
258
|
+
compact
|
|
259
|
+
label="Workspace URL"
|
|
260
|
+
name="workspace-url"
|
|
261
|
+
>
|
|
262
|
+
<template #prefix>acme.app/</template>
|
|
263
|
+
</BbTextInput>
|
|
264
|
+
<BbTextInput v-model="price" compact label="Seat price" name="price">
|
|
265
|
+
<template #prefix>$</template>
|
|
266
|
+
<template #suffix>USD</template>
|
|
267
|
+
</BbTextInput>
|
|
268
|
+
<BbTextInput
|
|
269
|
+
compact
|
|
270
|
+
label="API key"
|
|
271
|
+
:model-value="apiKey"
|
|
272
|
+
name="api-key"
|
|
273
|
+
readonly
|
|
274
|
+
>
|
|
275
|
+
<template #append-outer>
|
|
276
|
+
<BbButton
|
|
277
|
+
aria-label="Copy API key"
|
|
278
|
+
icon="lucide:copy"
|
|
279
|
+
variant="ghost"
|
|
280
|
+
/>
|
|
281
|
+
</template>
|
|
282
|
+
</BbTextInput>
|
|
283
|
+
</div>
|
|
284
|
+
</template>
|
|
285
|
+
<script setup lang="ts">
|
|
286
|
+
import { ref } from 'vue';
|
|
287
|
+
import { BbButton, BbTextInput } from 'bitboss-ui';
|
|
288
|
+
|
|
289
|
+
const site = ref<string | null>('acme');
|
|
290
|
+
const price = ref<string | null>('49.00');
|
|
291
|
+
const apiKey = 'sk_live_51Hn3x8Kj2';
|
|
292
|
+
</script>
|
|
283
293
|
```
|
|
284
294
|
|
|
285
|
-
|
|
295
|
+
### Clearable & loading
|
|
286
296
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
&.bb-base-input-outer-container--hint {
|
|
292
|
-
}
|
|
293
|
-
.bb-base-input-container {
|
|
294
|
-
&--vertical {
|
|
295
|
-
}
|
|
296
|
-
&--horizontal {
|
|
297
|
-
}
|
|
297
|
+
`clearable` reveals a clear button while the field has a value and is hovered
|
|
298
|
+
or focused; clicking it emits `update:modelValue` with `null` and refocuses the
|
|
299
|
+
input. There is no separate `clear` event — watch the model for `null`. The
|
|
300
|
+
button is suppressed on `disabled`/`readonly` fields.
|
|
298
301
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
&--right {
|
|
305
|
-
}
|
|
306
|
-
&--hidden {
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
&__input {
|
|
310
|
-
&--left {
|
|
311
|
-
}
|
|
312
|
-
&--center {
|
|
313
|
-
}
|
|
314
|
-
&--right {
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.bb-base-text-input {
|
|
318
|
-
display: inline-flex;
|
|
319
|
-
&--disabled {
|
|
320
|
-
}
|
|
321
|
-
&--errors {
|
|
322
|
-
}
|
|
323
|
-
&--loading {
|
|
324
|
-
}
|
|
325
|
-
&--readonly {
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
.bb-common-input-inner-container {
|
|
329
|
-
.bb-base-text-input__input {
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
&__prepend-icon,
|
|
333
|
-
&__append-icon {
|
|
334
|
-
}
|
|
335
|
-
.bb-spinner {
|
|
336
|
-
}
|
|
337
|
-
.bb-error-icon {
|
|
338
|
-
}
|
|
339
|
-
&__prefix,
|
|
340
|
-
&__suffix {
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
}
|
|
302
|
+
`loading` shows a spinner in the append position. It is **visual only** — the
|
|
303
|
+
field stays editable, so pair it with your own guard if the value must not
|
|
304
|
+
change mid-check (e.g. an async username availability call). They compose: a
|
|
305
|
+
clearable field can also be loading.
|
|
345
306
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
307
|
+
The classic pairing is a signup handle checker: debounce keystrokes, flip
|
|
308
|
+
`loading` while the (simulated) availability call runs, then land the result
|
|
309
|
+
in `errors` or `hint`. Because the field stays editable during the check, the
|
|
310
|
+
handler tags each request and drops stale responses. Watching the model —
|
|
311
|
+
rather than listening to `input` — means the clear button's `null` also resets
|
|
312
|
+
the status.
|
|
313
|
+
|
|
314
|
+
**Async username check**
|
|
315
|
+
|
|
316
|
+
```vue
|
|
317
|
+
<template>
|
|
318
|
+
<div class="grid max-w-sm gap-3 rounded-[var(--bb-radius)] border p-4">
|
|
319
|
+
<div>
|
|
320
|
+
<p class="text-sm font-medium">Claim your handle</p>
|
|
321
|
+
<p class="text-xs text-gray-500">
|
|
322
|
+
Debounced check — spinner while pending, hint or error on result.
|
|
323
|
+
</p>
|
|
324
|
+
</div>
|
|
325
|
+
<BbTextInput
|
|
326
|
+
v-model="username"
|
|
327
|
+
clearable
|
|
328
|
+
compact
|
|
329
|
+
:errors="errors"
|
|
330
|
+
:hint="hint"
|
|
331
|
+
label="Username"
|
|
332
|
+
:loading="checking"
|
|
333
|
+
name="username"
|
|
334
|
+
persistent-hint
|
|
335
|
+
placeholder="ada"
|
|
336
|
+
>
|
|
337
|
+
<template #prefix>bitboss.app/</template>
|
|
338
|
+
</BbTextInput>
|
|
339
|
+
</div>
|
|
340
|
+
</template>
|
|
341
|
+
<script setup lang="ts">
|
|
342
|
+
import { ref, watch } from 'vue';
|
|
343
|
+
import { BbTextInput } from 'bitboss-ui';
|
|
344
|
+
|
|
345
|
+
const DEFAULT_HINT = 'Lowercase letters and digits, 3–20 characters.';
|
|
346
|
+
const TAKEN = ['ada', 'grace', 'linus'];
|
|
347
|
+
|
|
348
|
+
const username = ref<string | null>(null);
|
|
349
|
+
const checking = ref(false);
|
|
350
|
+
const errors = ref<string[]>([]);
|
|
351
|
+
const hint = ref(DEFAULT_HINT);
|
|
352
|
+
|
|
353
|
+
// Simulated availability endpoint — deterministic and fast.
|
|
354
|
+
const isTaken = (handle: string) =>
|
|
355
|
+
new Promise<boolean>((resolve) => {
|
|
356
|
+
setTimeout(() => resolve(TAKEN.includes(handle)), 400);
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
let debounceTimer: ReturnType<typeof setTimeout> | undefined;
|
|
360
|
+
let requestId = 0;
|
|
361
|
+
|
|
362
|
+
// Watching the model (instead of @input) also covers the clear button,
|
|
363
|
+
// which emits `null` like any other emptied state.
|
|
364
|
+
watch(username, () => {
|
|
365
|
+
errors.value = [];
|
|
366
|
+
hint.value = DEFAULT_HINT;
|
|
367
|
+
clearTimeout(debounceTimer);
|
|
368
|
+
requestId += 1;
|
|
369
|
+
checking.value = false;
|
|
370
|
+
debounceTimer = setTimeout(async () => {
|
|
371
|
+
const value = username.value?.trim().toLowerCase();
|
|
372
|
+
if (!value) return;
|
|
373
|
+
const id = ++requestId;
|
|
374
|
+
checking.value = true;
|
|
375
|
+
const taken = await isTaken(value);
|
|
376
|
+
// `loading` is only a status light: the field stays editable, so a
|
|
377
|
+
// newer keystroke may have superseded this check — drop stale results.
|
|
378
|
+
if (id !== requestId) return;
|
|
379
|
+
checking.value = false;
|
|
380
|
+
if (taken) {
|
|
381
|
+
errors.value = [`"${value}" is already taken`];
|
|
382
|
+
} else {
|
|
383
|
+
hint.value = `bitboss.app/${value} is available`;
|
|
353
384
|
}
|
|
385
|
+
}, 250);
|
|
386
|
+
});
|
|
387
|
+
</script>
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### Masked input
|
|
391
|
+
|
|
392
|
+
Pass a [maska](https://beholdr.github.io/maska/v3) config to `mask` to format
|
|
393
|
+
as the user types — card numbers, phone numbers, license keys. By default
|
|
394
|
+
`v-model` receives the _unmasked_ value (`'4242424242424242'` for the card
|
|
395
|
+
below); set `emitMasked` to persist the formatted string instead. A fully
|
|
396
|
+
emptied masked field emits `null`, like every other state of this component.
|
|
397
|
+
|
|
398
|
+
The mask is live-reactive: changing the `mask` options at runtime reformats the
|
|
399
|
+
current value, and toggling `emitMasked` re-emits the model in the new format.
|
|
400
|
+
|
|
401
|
+
**Credit-card mask**
|
|
402
|
+
|
|
403
|
+
```vue
|
|
404
|
+
<div class="max-w-sm">
|
|
405
|
+
<BbTextInput
|
|
406
|
+
v-model="state.card"
|
|
407
|
+
label="Card number"
|
|
408
|
+
placeholder="4242 4242 4242 4242"
|
|
409
|
+
prepend:icon="lucide:credit-card"
|
|
410
|
+
:mask="{ mask: '#### #### #### ####' }"
|
|
411
|
+
/>
|
|
412
|
+
</div>
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
Masks are for _formatting_; they don't validate. Keep `errors` in charge of
|
|
416
|
+
telling the user a complete-but-wrong value is invalid.
|
|
417
|
+
|
|
418
|
+
### Type, keyboard & autofill hints
|
|
419
|
+
|
|
420
|
+
`type` forwards any native input type (default `text`): use `email`, `url`,
|
|
421
|
+
`tel`, `search`, `password`. Don't use `type="number"` or `type="date"` — those
|
|
422
|
+
are `BbNumberInput`'s and `BbDatePickerInput`'s jobs.
|
|
423
|
+
|
|
424
|
+
- `autocomplete` passes through to the browser (`"email"`, `"current-password"`,
|
|
425
|
+
`"one-time-code"`, `"off"`…) — set it on every field in auth and checkout
|
|
426
|
+
flows.
|
|
427
|
+
- `inputMode` steers mobile keyboards independently of `type` (e.g.
|
|
428
|
+
`inputMode="numeric"` on a masked code field that must stay `type="text"`).
|
|
429
|
+
- `autofocus` focuses the field on mount; use at most one per view.
|
|
430
|
+
|
|
431
|
+
**An OTP field: text type, numeric keyboard, masked**
|
|
432
|
+
|
|
433
|
+
```vue
|
|
434
|
+
<div class="max-w-sm">
|
|
435
|
+
<BbTextInput
|
|
436
|
+
v-model="state.otp"
|
|
437
|
+
label="Verification code"
|
|
438
|
+
autocomplete="one-time-code"
|
|
439
|
+
inputMode="numeric"
|
|
440
|
+
:mask="{ mask: '### ###' }"
|
|
441
|
+
placeholder="123 456"
|
|
442
|
+
/>
|
|
443
|
+
</div>
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### Events & v-model
|
|
447
|
+
|
|
448
|
+
- `update:modelValue` — every value change; `string`, or `null` when emptied
|
|
449
|
+
(with a mask: the unmasked/masked string per `emitMasked`).
|
|
450
|
+
- `focus` / `blur` — forwarded `FocusEvent`s; they also drive the hint's
|
|
451
|
+
show-on-focus behavior.
|
|
452
|
+
- `input` — every keystroke (raw DOM event); `change` — on commit
|
|
453
|
+
(blur/Enter), the right hook for expensive side effects.
|
|
454
|
+
- `keydown`, `keyup`, `click`, `mousedown`, `mouseup`, `paste`,
|
|
455
|
+
`compositionstart`, `compositionend` — forwarded as-is; `paste` is the hook
|
|
456
|
+
for normalizing pasted content, the composition pair for IME-aware logic.
|
|
457
|
+
|
|
458
|
+
### Disabled & readonly
|
|
459
|
+
|
|
460
|
+
`disabled` greys the field and blocks all interaction (also sets
|
|
461
|
+
`aria-disabled`); `readonly` keeps the value visible, focusable and copyable
|
|
462
|
+
but not editable (`aria-readonly`). Prefer `readonly` for derived or
|
|
463
|
+
provisioned values — screen-reader and keyboard users can still reach them.
|
|
464
|
+
|
|
465
|
+
**Disabled vs readonly**
|
|
466
|
+
|
|
467
|
+
```vue
|
|
468
|
+
<div class="grid max-w-sm gap-4">
|
|
469
|
+
<BbTextInput :model-value="'Business (annual)'" label="Plan (managed by billing)" disabled />
|
|
470
|
+
<BbTextInput :model-value="'eu-west-1'" label="Region" readonly hint="Set at workspace creation." persistentHint />
|
|
471
|
+
</div>
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Density & layout
|
|
475
|
+
|
|
476
|
+
`compact` reduces the control height — apply it per view, not per field, so
|
|
477
|
+
density stays consistent.
|
|
478
|
+
|
|
479
|
+
The API also exposes `direction` (horizontal/pattern layouts), `reverse` and
|
|
480
|
+
`labelPosition`. `direction` works whenever the **resolved** label mode is
|
|
481
|
+
`'outside'` — which is the config default, so it works out of the box. With
|
|
482
|
+
`labelMode="floating"` or `"inside"` (via prop or
|
|
483
|
+
`config.defaultInputLabelMode`) the label is embedded in the field, so those
|
|
484
|
+
modes force the vertical layout and ignore `direction`. The same rule applies
|
|
485
|
+
to `BbNumberInput`, `BbSelect` and `BbDatePickerInput`; `BbTextarea` has no
|
|
486
|
+
label mode at all, so it always honors `direction`.
|
|
487
|
+
|
|
488
|
+
**Horizontal row via direction (outside label)**
|
|
489
|
+
|
|
490
|
+
```vue
|
|
491
|
+
<template>
|
|
492
|
+
<div class="grid max-w-md gap-3 rounded-[var(--bb-radius)] border p-4">
|
|
493
|
+
<div>
|
|
494
|
+
<p class="text-sm font-medium">Billing contact</p>
|
|
495
|
+
<p class="text-xs text-gray-500">
|
|
496
|
+
Outside labels only — horizontal rows keep dense forms scannable.
|
|
497
|
+
</p>
|
|
498
|
+
</div>
|
|
499
|
+
<BbTextInput
|
|
500
|
+
v-model="fullName"
|
|
501
|
+
compact
|
|
502
|
+
direction="horizontal"
|
|
503
|
+
label="Full name"
|
|
504
|
+
name="full-name"
|
|
505
|
+
placeholder="Ada Lovelace"
|
|
506
|
+
/>
|
|
507
|
+
<BbTextInput
|
|
508
|
+
v-model="company"
|
|
509
|
+
compact
|
|
510
|
+
direction="xx xxxxxx"
|
|
511
|
+
label="Company"
|
|
512
|
+
name="company"
|
|
513
|
+
placeholder="Bitboss"
|
|
514
|
+
/>
|
|
515
|
+
</div>
|
|
516
|
+
</template>
|
|
517
|
+
<script setup lang="ts">
|
|
518
|
+
import { ref } from 'vue';
|
|
519
|
+
import { BbTextInput } from 'bitboss-ui';
|
|
520
|
+
|
|
521
|
+
const fullName = ref<string | null>('Ada Lovelace');
|
|
522
|
+
const company = ref<string | null>('Bitboss');
|
|
523
|
+
</script>
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
`direction="horizontal"` splits label and field 50/50; a pattern string like
|
|
527
|
+
`"xx xxxxxx"` sets proportional column widths (here 25% label / 75% field).
|
|
528
|
+
|
|
529
|
+
**Compact density for dense panels**
|
|
530
|
+
|
|
531
|
+
```vue
|
|
532
|
+
<template>
|
|
533
|
+
<div class="grid max-w-sm gap-2 rounded-[var(--bb-radius)] border p-3">
|
|
534
|
+
<div>
|
|
535
|
+
<p class="text-sm font-medium">Merino Tee — Black / M</p>
|
|
536
|
+
<p class="text-xs text-gray-500">Product identifiers · compact density</p>
|
|
537
|
+
</div>
|
|
538
|
+
<BbTextInput
|
|
539
|
+
v-model="sku"
|
|
540
|
+
compact
|
|
541
|
+
label="SKU"
|
|
542
|
+
name="sku"
|
|
543
|
+
placeholder="TSH-BLK-M"
|
|
544
|
+
/>
|
|
545
|
+
<BbTextInput
|
|
546
|
+
v-model="barcode"
|
|
547
|
+
compact
|
|
548
|
+
label="Barcode"
|
|
549
|
+
name="barcode"
|
|
550
|
+
placeholder="0 12345 67890 5"
|
|
551
|
+
/>
|
|
552
|
+
</div>
|
|
553
|
+
</template>
|
|
554
|
+
<script setup lang="ts">
|
|
555
|
+
import { ref } from 'vue';
|
|
556
|
+
import { BbTextInput } from 'bitboss-ui';
|
|
557
|
+
|
|
558
|
+
const sku = ref<string | null>('TSH-BLK-M');
|
|
559
|
+
const barcode = ref<string | null>('0 12345 67890 5');
|
|
560
|
+
</script>
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
### Global config & platforms
|
|
564
|
+
|
|
565
|
+
- `config.defaultInputLabelMode` — project-wide default for `labelMode`
|
|
566
|
+
(also read by `BbNumberInput`, `BbSelect` and `BbDatePickerInput`).
|
|
567
|
+
- The component is a plain controlled `<input>`: SSR-safe in Nuxt, no teleports
|
|
568
|
+
or portals, nothing to hydrate carefully.
|
|
569
|
+
- In Inertia apps, bind server-side validation straight into the field:
|
|
570
|
+
|
|
571
|
+
```vue
|
|
572
|
+
<!-- Inertia: useForm drives value and errors -->
|
|
573
|
+
<BbTextInput
|
|
574
|
+
v-model="form.email"
|
|
575
|
+
label="Email"
|
|
576
|
+
type="email"
|
|
577
|
+
autocomplete="email"
|
|
578
|
+
:errors="form.errors.email"
|
|
579
|
+
:has-errors="!!form.errors.email"
|
|
580
|
+
/>
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
### A composed form
|
|
584
|
+
|
|
585
|
+
The input family shares one chrome, so fields line up cleanly when combined.
|
|
586
|
+
This invoice form pairs `BbTextInput` with `BbTextarea`, `BbNumberInput` and
|
|
587
|
+
`BbDatePickerInput`, and wires a real validation flow: required checks on
|
|
588
|
+
submit, format checks on blur, errors cleared as the user fixes them.
|
|
589
|
+
|
|
590
|
+
**Invoice form with validation**
|
|
591
|
+
|
|
592
|
+
```vue
|
|
593
|
+
<template>
|
|
594
|
+
<form
|
|
595
|
+
class="grid max-w-md gap-3 rounded-[var(--bb-radius)] border p-4"
|
|
596
|
+
novalidate
|
|
597
|
+
@submit.prevent="submit"
|
|
598
|
+
>
|
|
599
|
+
<div>
|
|
600
|
+
<p class="text-sm font-medium">
|
|
601
|
+
Invoice for {{ customer || 'a new client' }}
|
|
602
|
+
</p>
|
|
603
|
+
<p class="text-xs text-gray-500">
|
|
604
|
+
Draft INV-2048 · validate on blur / submit, clear as they type
|
|
605
|
+
</p>
|
|
606
|
+
</div>
|
|
607
|
+
<BbTextInput
|
|
608
|
+
v-model="customer"
|
|
609
|
+
clearable
|
|
610
|
+
compact
|
|
611
|
+
:errors="errors.customer"
|
|
612
|
+
label="Bill to"
|
|
613
|
+
name="customer"
|
|
614
|
+
placeholder="Company or person"
|
|
615
|
+
prepend:icon="lucide:user"
|
|
616
|
+
required
|
|
617
|
+
@input="errors.customer = ''"
|
|
618
|
+
/>
|
|
619
|
+
<BbTextInput
|
|
620
|
+
v-model="email"
|
|
621
|
+
autocomplete="email"
|
|
622
|
+
compact
|
|
623
|
+
:errors="errors.email"
|
|
624
|
+
label="Billing email"
|
|
625
|
+
name="email"
|
|
626
|
+
placeholder="billing@company.com"
|
|
627
|
+
prepend:icon="lucide:mail"
|
|
628
|
+
required
|
|
629
|
+
type="email"
|
|
630
|
+
@blur="validateEmail"
|
|
631
|
+
@input="errors.email = ''"
|
|
632
|
+
/>
|
|
633
|
+
<div class="grid gap-3 sm:grid-cols-2">
|
|
634
|
+
<BbDatePickerInput
|
|
635
|
+
v-model="servicePeriod"
|
|
636
|
+
compact
|
|
637
|
+
label="Service period"
|
|
638
|
+
placeholder="Start → end"
|
|
639
|
+
prepend:icon="lucide:calendar"
|
|
640
|
+
range
|
|
641
|
+
/>
|
|
642
|
+
<BbDatePickerInput
|
|
643
|
+
v-model="dueDate"
|
|
644
|
+
compact
|
|
645
|
+
:errors="errors.dueDate"
|
|
646
|
+
label="Due date"
|
|
647
|
+
:min="today"
|
|
648
|
+
placeholder="YYYY-MM-DD"
|
|
649
|
+
prepend:icon="lucide:calendar"
|
|
650
|
+
@update:model-value="errors.dueDate = ''"
|
|
651
|
+
/>
|
|
652
|
+
</div>
|
|
653
|
+
<div class="grid gap-3 sm:grid-cols-2">
|
|
654
|
+
<BbNumberInput
|
|
655
|
+
v-model="quantity"
|
|
656
|
+
compact
|
|
657
|
+
label="Quantity"
|
|
658
|
+
:max="999"
|
|
659
|
+
:min="1"
|
|
660
|
+
/>
|
|
661
|
+
<BbNumberInput
|
|
662
|
+
v-model="unitPrice"
|
|
663
|
+
compact
|
|
664
|
+
label="Unit price"
|
|
665
|
+
:max-precision="2"
|
|
666
|
+
:min="0"
|
|
667
|
+
>
|
|
668
|
+
<template #prefix>$</template>
|
|
669
|
+
<template #suffix>USD</template>
|
|
670
|
+
</BbNumberInput>
|
|
671
|
+
</div>
|
|
672
|
+
<BbTextarea
|
|
673
|
+
v-model="notes"
|
|
674
|
+
auto-grow
|
|
675
|
+
compact
|
|
676
|
+
hint="Shown at the bottom of the invoice."
|
|
677
|
+
label="Notes"
|
|
678
|
+
persistent-hint
|
|
679
|
+
placeholder="Payment terms, PO number…"
|
|
680
|
+
/>
|
|
681
|
+
<div
|
|
682
|
+
class="flex flex-wrap items-center justify-between gap-2 border-t pt-3"
|
|
683
|
+
>
|
|
684
|
+
<p class="text-sm font-medium">
|
|
685
|
+
{{
|
|
686
|
+
queued ? `Queued — ${formattedTotal}` : `Total due: ${formattedTotal}`
|
|
687
|
+
}}
|
|
688
|
+
</p>
|
|
689
|
+
<BbButton variant="primary" @click="submit">Queue invoice</BbButton>
|
|
690
|
+
</div>
|
|
691
|
+
</form>
|
|
692
|
+
</template>
|
|
693
|
+
<script setup lang="ts">
|
|
694
|
+
import { ref, reactive, computed } from 'vue';
|
|
695
|
+
import dayjs from 'dayjs';
|
|
696
|
+
import {
|
|
697
|
+
BbButton,
|
|
698
|
+
BbTextInput,
|
|
699
|
+
BbTextarea,
|
|
700
|
+
BbNumberInput,
|
|
701
|
+
BbDatePickerInput,
|
|
702
|
+
} from 'bitboss-ui';
|
|
703
|
+
|
|
704
|
+
const customer = ref<string | null>(null);
|
|
705
|
+
const email = ref<string | null>(null);
|
|
706
|
+
const servicePeriod = ref<string[]>([]);
|
|
707
|
+
const dueDate = ref<string | null>(null);
|
|
708
|
+
const quantity = ref<number>(1);
|
|
709
|
+
const unitPrice = ref<number>(1200);
|
|
710
|
+
const notes = ref<string | null>(null);
|
|
711
|
+
const queued = ref(false);
|
|
712
|
+
|
|
713
|
+
const errors = reactive({ customer: '', email: '', dueDate: '' });
|
|
714
|
+
|
|
715
|
+
const today = dayjs().format('YYYY-MM-DD');
|
|
716
|
+
|
|
717
|
+
const isValidEmail = (value: string) =>
|
|
718
|
+
/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value);
|
|
719
|
+
|
|
720
|
+
// Format checks run on blur; required checks only on submit — never while
|
|
721
|
+
// the user is still typing a first attempt.
|
|
722
|
+
const validateEmail = () => {
|
|
723
|
+
if (email.value && !isValidEmail(email.value)) {
|
|
724
|
+
errors.email = 'Enter a valid email address';
|
|
725
|
+
}
|
|
726
|
+
};
|
|
727
|
+
|
|
728
|
+
const submit = () => {
|
|
729
|
+
queued.value = false;
|
|
730
|
+
errors.customer = customer.value ? '' : 'Tell us who to bill';
|
|
731
|
+
errors.email = email.value
|
|
732
|
+
? isValidEmail(email.value)
|
|
733
|
+
? ''
|
|
734
|
+
: 'Enter a valid email address'
|
|
735
|
+
: 'A billing email is required';
|
|
736
|
+
errors.dueDate = dueDate.value ? '' : 'Pick a due date';
|
|
737
|
+
if (!errors.customer && !errors.email && !errors.dueDate) {
|
|
738
|
+
queued.value = true;
|
|
354
739
|
}
|
|
355
|
-
}
|
|
740
|
+
};
|
|
741
|
+
|
|
742
|
+
const formattedTotal = computed(() =>
|
|
743
|
+
new Intl.NumberFormat('en-US', {
|
|
744
|
+
style: 'currency',
|
|
745
|
+
currency: 'USD',
|
|
746
|
+
}).format((quantity.value ?? 0) * (unitPrice.value ?? 0))
|
|
747
|
+
);
|
|
748
|
+
</script>
|
|
356
749
|
```
|
|
750
|
+
|
|
751
|
+
### Works well with
|
|
752
|
+
|
|
753
|
+
- `BbButton` — submit actions; an async `@click` handler gets automatic
|
|
754
|
+
loading state while the save is in flight.
|
|
755
|
+
- `BbSelect` — when a free-text field grows a known option set, switch
|
|
756
|
+
component instead of validating strings.
|
|
757
|
+
- `useToast` — confirm a successful save after the form clears.
|
|
758
|
+
- `BbTooltip` — attach extra context to the label via the `label` slot rather
|
|
759
|
+
than cramming it into `description`.
|
|
760
|
+
- `BbTextarea` / `BbNumberInput` / `BbDatePickerInput` — same chrome, same
|
|
761
|
+
messaging surface; mix freely in one form.
|
|
762
|
+
|
|
763
|
+
### Gotchas & anti-patterns
|
|
764
|
+
|
|
765
|
+
- An emptied field emits `null`, not `''` — write `value ?? ''` when feeding
|
|
766
|
+
APIs that require strings.
|
|
767
|
+
- `direction` is ignored under `labelMode="floating"`/`"inside"` — those modes
|
|
768
|
+
embed the label in the field and force the vertical layout (see _Density &
|
|
769
|
+
layout_).
|
|
770
|
+
- `loading` does not lock the field — it's a status light, not a guard.
|
|
771
|
+
- Don't rebuild the clear button in an `append` slot; `clearable` already
|
|
772
|
+
handles show/hide, clearing and refocusing.
|
|
773
|
+
- Don't put buttons in `prefix`/`suffix` — clicks there focus the input; use
|
|
774
|
+
`append-outer`/`prepend-outer` for interactive neighbors.
|
|
775
|
+
- Don't validate _while_ the user types their first attempt; validate on
|
|
776
|
+
`blur` or submit, then clear errors on `input` (see the invoice example).
|
|
777
|
+
- Masked fields emit the **unmasked** value by default — don't strip
|
|
778
|
+
formatting server-side that was never sent.
|
|
779
|
+
|
|
780
|
+
### Accessibility
|
|
781
|
+
|
|
782
|
+
- Always provide `label`. To hide it visually, use `hideLabel` (keeps the
|
|
783
|
+
accessible name) rather than omitting it.
|
|
784
|
+
- `description` and `hint` are wired to the input through `aria-describedby`;
|
|
785
|
+
`errors` render in an `aria-live="polite"` region so they're announced when
|
|
786
|
+
they appear — keep messages meaningful, not decorative.
|
|
787
|
+
- `hasErrors` (or a non-empty `errors`) sets `aria-invalid` on the native
|
|
788
|
+
input; `disabled`/`readonly` set `aria-disabled`/`aria-readonly`.
|
|
789
|
+
- Prefer real, always-enabled fields; when you must disable one, explain why
|
|
790
|
+
nearby.
|
|
791
|
+
- Icon affixes are decorative and hidden from the accessible name — if an icon
|
|
792
|
+
carries meaning (e.g. "verified"), also say it in `hint` or `description`.
|
|
793
|
+
|
|
794
|
+
## v-model
|
|
795
|
+
|
|
796
|
+
- `v-model` — type: `string \| null`
|
|
797
|
+
|
|
798
|
+
## Props
|
|
799
|
+
|
|
800
|
+
| Prop | Type | Default | Required | Description |
|
|
801
|
+
| --- | --- | --- | --- | --- |
|
|
802
|
+
| `append:icon` | `string \| undefined` | | | Name of the icon to be added at the end of the input. |
|
|
803
|
+
| `autocomplete` | `string \| undefined` | | | Guides to the browser as to the type of information expected in the field. |
|
|
804
|
+
| `autofocus` | `Booleanish \| undefined` | | | Sets autofocus on page load. |
|
|
805
|
+
| `clearable` | `boolean \| undefined` | | | Displays a clear button when the input has a value and is being interacted with. |
|
|
806
|
+
| `compact` | `boolean \| undefined` | | | Displays the component in a compact version. |
|
|
807
|
+
| `description` | `string \| undefined` | | | Descriptive text displayed below the label and above the input. Unlike the hint it is always visible, and it is linked to the input via `aria-describedby`. |
|
|
808
|
+
| `direction` | `InputDirection \| undefined` | | | Direction of the layout of the component. Can either be a predefined value or a pattern separated by a space like `xx xxxxx`. |
|
|
809
|
+
| `disabled` | `boolean \| undefined` | | | Disables the component. |
|
|
810
|
+
| `emitMasked` | `boolean \| undefined` | | | Emits the masked value of the input. |
|
|
811
|
+
| `errors` | `string \| string[] \| undefined` | | | Can be a string or an array of string containing the messages to display. |
|
|
812
|
+
| `hasErrors` | `boolean \| undefined` | | | Define if the component should be in an error state. It usually attaches a CSS class for styling purposes. |
|
|
813
|
+
| `hasWarning` | `boolean \| undefined` | | | Define if the component should be in a warning state. Same chrome as errors with `--bb-warn`; errors take priority. |
|
|
814
|
+
| `hideLabel` | `boolean \| undefined` | | | Visually hides the label of the input while maintaining accessibility. |
|
|
815
|
+
| `hint` | `string \| undefined` | | | Text box to be displayed near the input, usually to indicate instructions. |
|
|
816
|
+
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
817
|
+
| `inputMode` | `"text" \| "search" \| "email" \| "url" \| "tel" \| "none" \| "numeric" \| "decimal" \| undefined` | | | The inputmode of the input. |
|
|
818
|
+
| `label` | `string` | | yes | Text content of the label of the element. |
|
|
819
|
+
| `labelMode` | `"floating" \| "outside" \| "inside" \| undefined` | | | Label rendering mode. |
|
|
820
|
+
| `labelPosition` | `"left" \| "center" \| "right" \| undefined` | | | Sets the text alignment of the label. |
|
|
821
|
+
| `loading` | `boolean \| undefined` | | | Sets the component in a loading state, usually triggering some visual styles. |
|
|
822
|
+
| `mask` | `MaskInputOptions \| undefined` | | | The mask to be applied to the input. Please visit https://beholdr.github.io/maska/v3 for syntax examples. |
|
|
823
|
+
| `modelValue` | `string \| null` | | yes | Used by v-model. |
|
|
824
|
+
| `name` | `string \| undefined` | | | Defines the name of the input. |
|
|
825
|
+
| `persistentHint` | `boolean \| undefined` | | | Keeps the hint displayed. |
|
|
826
|
+
| `placeholder` | `string \| undefined` | | | String displayed when there's no data. |
|
|
827
|
+
| `prepend:icon` | `string \| undefined` | | | Name of the icon to be added at the start of the input. |
|
|
828
|
+
| `readonly` | `boolean \| undefined` | | | Sets the input in a readonly state. |
|
|
829
|
+
| `required` | `boolean \| undefined` | | | Sets the input as required. |
|
|
830
|
+
| `reverse` | `boolean \| undefined` | | | Reverses the layout. Applicable in every direction the order of the label and the input is swapped. |
|
|
831
|
+
| `type` | `"text" \| "search" \| "email" \| "url" \| "tel" \| "password" \| undefined` | | | Type of the input. Restricted to the textual input types this component supports — use `BbNumberInput` for numbers and `BbDatePickerInput` for dates. |
|
|
832
|
+
| `warnings` | `string \| string[] \| undefined` | | | Warning messages to display beneath the field, in their own `aria-live` region and amber (`--bb-warn`). A string or array; a non-empty list implies the warning state. Errors suppress warnings when both are set. |
|
|
833
|
+
|
|
834
|
+
## Events
|
|
835
|
+
|
|
836
|
+
- `blur` — `(event: "blur", event: FocusEvent): void`
|
|
837
|
+
- `change` — `(event: "change", event: Event): void`
|
|
838
|
+
- `click` — `(event: "click", event: MouseEvent): void`
|
|
839
|
+
- `compositionend` — `(event: "compositionend", event: CompositionEvent): void`
|
|
840
|
+
- `compositionstart` — `(event: "compositionstart", event: CompositionEvent): void`
|
|
841
|
+
- `focus` — `(event: "focus", event: FocusEvent): void`
|
|
842
|
+
- `input` — `(event: "input", event: Event): void`
|
|
843
|
+
- `keydown` — `(event: "keydown", event: KeyboardEvent): void`
|
|
844
|
+
- `keyup` — `(event: "keyup", event: KeyboardEvent): void`
|
|
845
|
+
- `mousedown` — `(event: "mousedown", event: MouseEvent): void`
|
|
846
|
+
- `mouseup` — `(event: "mouseup", event: MouseEvent): void`
|
|
847
|
+
- `paste` — `(event: "paste", event: ClipboardEvent): void`
|
|
848
|
+
- `update:modelValue` — `(event: "update:modelValue", value: string \| null): void`
|
|
849
|
+
|
|
850
|
+
## Slots
|
|
851
|
+
|
|
852
|
+
- `append` — scope: `object` — Content rendered after the text input, at the end of the inner container.
|
|
853
|
+
- `append-outer` — scope: `object` — Content rendered after the entire text input control, outside the input chrome.
|
|
854
|
+
- `label` — scope: `BbTextInputLabelSlotProps` — Replaces the default label text rendered above the input.
|
|
855
|
+
- `prefix` — scope: `object` — Inline content rendered at the start of the input field area, before the typed text.
|
|
856
|
+
- `prepend` — scope: `object` — Content rendered before the text input, at the start of the inner container.
|
|
857
|
+
- `prepend-outer` — scope: `object` — Content rendered before the entire text input control, outside the input chrome.
|
|
858
|
+
- `suffix` — scope: `object` — Inline content rendered at the end of the input field area, after the typed text.
|
|
859
|
+
|
|
860
|
+
## Validated variant
|
|
861
|
+
|
|
862
|
+
Importing this component from `bitboss-ui/validated` instead of `bitboss-ui` binds it to a vee-validate field. Same props, same events, same slots — plus the ones below. Requires the `vee-validate` peer dependency and a `<BbForm>` (or `useForm()`) ancestor. Full guide: [validated-forms](./guides/validated-forms.md).
|
|
863
|
+
|
|
864
|
+
| Prop | Type | Description |
|
|
865
|
+
| --- | --- | --- |
|
|
866
|
+
| `rules` | `RuleExpression<string \| null>` | vee-validate rules for this field. |
|
|
867
|
+
| `validateOn` | `ValidateTiming[] \| undefined` | Which interactions trigger validation. Defaults are per-control (e.g. `['blur']` for text inputs, `['inactive']` for pickers/groups). |
|
|
868
|
+
| `vid` | `string \| undefined` | Explicit vee-validate field name. **Usually omit it** — the name is derived automatically from the control's `label`/`legend`. Only set `vid` when that derivation wouldn't be unique (e.g. v-for rows, or array `v-model`s that share a label).… |
|
|
869
|
+
|
|
870
|
+
## See Also
|
|
871
|
+
|
|
872
|
+
- [BbTextarea](./BbTextarea.md) — Captures multi-line text values.
|
|
873
|
+
- [BbNumberInput](./BbNumberInput.md) — Captures and validates numeric form values, emits a number value.
|
|
874
|
+
- [BbColorInput](./BbColorInput.md) — Captures color values through input controls.
|
|
875
|
+
- [BbDatePickerInput](./BbDatePickerInput.md) — Combines date selection with text input behavior.
|