bitboss-ui 3.0.0-beta.4 → 3.0.0-beta.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +317 -98
- package/bin/bitboss-ui-mcp.mjs +1566 -75
- package/bin/bitboss-ui.mjs +716 -72
- package/dist/ai/BbAccordion.md +178 -56
- package/dist/ai/BbAlert.md +140 -28
- package/dist/ai/BbAsterisk.md +61 -4
- package/dist/ai/BbAvatar.md +194 -53
- package/dist/ai/BbBadge.md +250 -50
- package/dist/ai/BbBadgeButton.md +74 -21
- package/dist/ai/BbBaseButton.md +132 -51
- package/dist/ai/BbBaseCheckboxIcon.md +118 -26
- package/dist/ai/BbBaseRadioIcon.md +115 -26
- package/dist/ai/BbBaseSwitchIcon.md +123 -28
- package/dist/ai/BbBreadcrumbs.md +221 -51
- package/dist/ai/BbButton.md +389 -107
- package/dist/ai/BbCalendar.md +667 -0
- package/dist/ai/BbCheckbox.md +242 -80
- package/dist/ai/BbCheckboxGroup.md +575 -66
- package/dist/ai/BbCollapsible.md +158 -39
- package/dist/ai/BbColorInput.md +322 -82
- package/dist/ai/BbColorPalette.md +261 -61
- package/dist/ai/BbConfirm.md +220 -51
- package/dist/ai/BbConfirmPortal.md +1 -1
- package/dist/ai/BbDatePicker.md +272 -37
- package/dist/ai/BbDatePickerInput.md +321 -92
- package/dist/ai/BbDialog.md +492 -87
- package/dist/ai/BbDropdown.md +1182 -104
- package/dist/ai/BbDropdownButton.md +239 -61
- package/dist/ai/BbDropdownGroup.md +5 -5
- package/dist/ai/BbDropzone.md +140 -36
- package/dist/ai/BbForm.md +1165 -40
- package/dist/ai/BbIcon.md +100 -33
- package/dist/ai/BbIndicator.md +79 -12
- package/dist/ai/BbNumberInput.md +257 -87
- package/dist/ai/BbOffCanvas.md +396 -91
- package/dist/ai/BbPagination.md +199 -32
- package/dist/ai/BbPopover.md +219 -54
- package/dist/ai/BbProgress.md +137 -71
- package/dist/ai/BbPtScope.md +136 -0
- package/dist/ai/BbRadio.md +234 -43
- package/dist/ai/BbRadioGroup.md +529 -91
- package/dist/ai/BbRating.md +243 -61
- package/dist/ai/BbSelect.md +690 -120
- package/dist/ai/BbSelectPopover.md +434 -122
- package/dist/ai/BbSlider.md +275 -79
- package/dist/ai/BbSmoothHeight.md +142 -34
- package/dist/ai/BbSpinner.md +179 -81
- package/dist/ai/BbSwitch.md +249 -63
- package/dist/ai/BbSwitchGroup.md +394 -65
- package/dist/ai/BbTable.md +1666 -222
- package/dist/ai/BbTabs.md +898 -178
- package/dist/ai/BbTabsList.md +81 -7
- package/dist/ai/BbTabsPanels.md +77 -0
- package/dist/ai/BbTabsRoot.md +16 -15
- package/dist/ai/BbTag.md +256 -76
- package/dist/ai/BbTextInput.md +480 -102
- package/dist/ai/BbTextarea.md +310 -96
- package/dist/ai/BbTimePicker.md +159 -24
- package/dist/ai/BbTimePickerInput.md +277 -46
- package/dist/ai/BbToast.md +286 -40
- package/dist/ai/BbToastPortal.md +3 -3
- package/dist/ai/BbTooltip.md +187 -34
- package/dist/ai/BbTree.md +260 -85
- package/dist/ai/ChipsBox.md +43 -2
- package/dist/ai/ClearableButton.md +12 -0
- package/dist/ai/CommaBox.md +2 -1
- package/dist/ai/CommonField.md +63 -0
- package/dist/ai/CommonFieldInput.md +90 -0
- package/dist/ai/CommonPopover.md +17 -12
- package/dist/ai/CommonTimeSelector.md +63 -0
- package/dist/ai/ErrorIcon.md +20 -0
- package/dist/ai/FlatListBox.md +41 -11
- package/dist/ai/GroupedListBox.md +42 -12
- package/dist/ai/ListBox.md +46 -11
- package/dist/ai/OptionsContainer.md +13 -10
- package/dist/ai/WarningIcon.md +20 -0
- package/dist/ai/changelog.json +4025 -141
- package/dist/ai/components.json +51872 -10136
- package/dist/ai/composables/useBbConfig.md +72 -11
- package/dist/ai/composables/useBbDropdownContext.md +168 -0
- package/dist/ai/composables/useBbFormContext.md +51 -24
- package/dist/ai/composables/useBbFormField.md +134 -0
- package/dist/ai/composables/useBbTableContext.md +41 -19
- package/dist/ai/composables/useConfirm.md +16 -8
- package/dist/ai/composables/useCountdown.md +1 -1
- package/dist/ai/composables/useId.md +10 -10
- package/dist/ai/composables/useMobile.md +17 -10
- package/dist/ai/composables/useToast.md +25 -19
- package/dist/ai/design-tokens.json +940 -0
- package/dist/ai/design-tokens.manifest.yaml +175 -0
- package/dist/ai/guides/agent-contract.md +168 -22
- package/dist/ai/guides/ai-router.md +79 -40
- package/dist/ai/guides/app-layout.md +8 -4
- package/dist/ai/guides/coherence-playbook.md +8 -8
- package/dist/ai/guides/component-picker.md +42 -34
- package/dist/ai/guides/design-language.md +274 -97
- package/dist/ai/guides/design-tokens.md +493 -105
- package/dist/ai/guides/fetch-items-playbook.md +22 -16
- package/dist/ai/guides/icons-policy.md +67 -35
- package/dist/ai/guides/inertia-helpers.md +4 -1
- package/dist/ai/guides/inline-edit-playbook.md +13 -6
- package/dist/ai/guides/installation-and-plugin-setup.md +817 -73
- package/dist/ai/guides/migration/components/bb-accordion.md +37 -0
- package/dist/ai/guides/migration/components/bb-alert.md +2 -2
- package/dist/ai/guides/migration/components/bb-avatar.md +13 -14
- package/dist/ai/guides/migration/components/bb-badge.md +5 -5
- package/dist/ai/guides/migration/components/bb-breadcrumbs.md +9 -8
- package/dist/ai/guides/migration/components/bb-button.md +80 -20
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +116 -29
- package/dist/ai/guides/migration/components/bb-checkbox.md +53 -10
- package/dist/ai/guides/migration/components/bb-chip.md +6 -6
- package/dist/ai/guides/migration/components/bb-collapsible.md +5 -5
- package/dist/ai/guides/migration/components/bb-color-input.md +5 -5
- package/dist/ai/guides/migration/components/bb-color-palette.md +16 -9
- package/dist/ai/guides/migration/components/bb-date-picker-input.md +45 -35
- package/dist/ai/guides/migration/components/bb-dialog.md +69 -36
- package/dist/ai/guides/migration/components/bb-dropdown-button.md +7 -1
- package/dist/ai/guides/migration/components/bb-dropdown.md +31 -8
- package/dist/ai/guides/migration/components/bb-dropzone.md +8 -0
- package/dist/ai/guides/migration/components/bb-icon.md +7 -7
- package/dist/ai/guides/migration/components/bb-intersection.md +1 -1
- package/dist/ai/guides/migration/components/bb-offcanvas.md +29 -31
- package/dist/ai/guides/migration/components/bb-pagination.md +10 -0
- package/dist/ai/guides/migration/components/bb-popover.md +19 -11
- package/dist/ai/guides/migration/components/bb-radio-group.md +14 -0
- package/dist/ai/guides/migration/components/bb-rating.md +61 -24
- package/dist/ai/guides/migration/components/bb-select-popover.md +9 -1
- package/dist/ai/guides/migration/components/bb-select.md +21 -4
- package/dist/ai/guides/migration/components/bb-slider.md +14 -6
- package/dist/ai/guides/migration/components/bb-switch-group.md +14 -0
- package/dist/ai/guides/migration/components/bb-table.md +574 -33
- package/dist/ai/guides/migration/components/bb-tabs.md +91 -41
- package/dist/ai/guides/migration/components/bb-tag.md +9 -7
- package/dist/ai/guides/migration/components/bb-text-input.md +12 -12
- package/dist/ai/guides/migration/components/bb-toast.md +2 -2
- package/dist/ai/guides/migration/components/bb-tooltip.md +18 -0
- package/dist/ai/guides/migration/components/bb-tree.md +11 -9
- package/dist/ai/guides/migration/components/use-confirm.md +9 -1
- package/dist/ai/guides/migration/v2-to-v3.md +828 -240
- package/dist/ai/guides/migration/v3-beta-css-classes.md +751 -0
- package/dist/ai/guides/migration/v3-beta-tooling.md +119 -0
- package/dist/ai/guides/options-items-playbook.md +161 -12
- package/dist/ai/guides/page-shell.md +1 -1
- package/dist/ai/guides/passthrough.md +958 -0
- package/dist/ai/guides/preset-components.md +361 -0
- package/dist/ai/guides/ssr-prefill.md +127 -0
- package/dist/ai/guides/validated-forms.md +466 -55
- package/dist/ai/guides/validation-libraries.md +171 -0
- package/dist/ai/guides/validation-providers.md +113 -0
- package/dist/ai/index.md +45 -44
- package/dist/ai/recipes/inertia/approvals-inbox.md +26 -10
- package/dist/ai/recipes/inertia/command-palette.md +2 -2
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +46 -30
- package/dist/ai/recipes/inertia/layout-scaffold.md +6 -2
- package/dist/ai/recipes/inertia/onboarding.md +30 -8
- package/dist/ai/recipes/inertia/ownership-atlas.md +72 -49
- package/dist/ai/recipes/inertia/record-form.md +53 -19
- package/dist/ai/recipes/inertia/records-workspace.md +201 -49
- package/dist/ai/recipes/inertia/settings-workspace.md +3809 -0
- package/dist/ai/recipes/inertia/upload-center.md +54 -43
- package/dist/ai/recipes/inertia/wizard-form.md +98 -14
- package/dist/ai/recipes/nuxt/approvals-inbox.md +26 -10
- package/dist/ai/recipes/nuxt/command-palette.md +2 -2
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +68 -52
- package/dist/ai/recipes/nuxt/layout-scaffold.md +6 -2
- package/dist/ai/recipes/nuxt/onboarding.md +30 -8
- package/dist/ai/recipes/nuxt/record-form.md +66 -22
- package/dist/ai/recipes/nuxt/records-workspace.md +199 -48
- package/dist/ai/recipes/nuxt/settings-workspace.md +3898 -0
- package/dist/ai/recipes/nuxt/upload-center.md +52 -41
- package/dist/ai/recipes/nuxt/wizard-form.md +98 -14
- package/dist/ai/recipes/vue/approvals-inbox.md +28 -12
- package/dist/ai/recipes/vue/command-palette.md +2 -2
- package/dist/ai/recipes/vue/inline-edit-workspace.md +69 -53
- package/dist/ai/recipes/vue/layout-scaffold.md +6 -2
- package/dist/ai/recipes/vue/onboarding.md +32 -8
- package/dist/ai/recipes/vue/record-form.md +81 -54
- package/dist/ai/recipes/vue/records-workspace.md +198 -49
- package/dist/ai/recipes/vue/settings-workspace.md +3836 -0
- package/dist/ai/recipes/vue/upload-center.md +53 -42
- package/dist/ai/recipes/vue/wizard-form.md +97 -14
- package/dist/ai/source/BbAccordion.md +90 -24
- package/dist/ai/source/BbAlert.md +209 -62
- package/dist/ai/source/BbAsterisk.md +54 -4
- package/dist/ai/source/BbAvatar.md +73 -16
- package/dist/ai/source/BbBadge.md +265 -97
- package/dist/ai/source/BbBadgeButton.md +218 -79
- package/dist/ai/source/BbBaseButton.md +108 -12
- package/dist/ai/source/BbBaseCheckboxIcon.md +151 -36
- package/dist/ai/source/BbBaseRadioIcon.md +121 -17
- package/dist/ai/source/BbBaseSwitchIcon.md +138 -28
- package/dist/ai/source/BbBreadcrumbs.md +363 -69
- package/dist/ai/source/BbButton.md +563 -174
- package/dist/ai/source/BbCalendar.md +1744 -0
- package/dist/ai/source/BbCheckbox.md +470 -68
- package/dist/ai/source/BbCheckboxGroup.md +976 -95
- package/dist/ai/source/BbCollapsible.md +96 -8
- package/dist/ai/source/BbColorInput.md +597 -67
- package/dist/ai/source/BbColorPalette.md +1284 -65
- package/dist/ai/source/BbConfirm.md +149 -7
- package/dist/ai/source/BbConfirmPortal.md +89 -3
- package/dist/ai/source/BbDatePicker.md +527 -381
- package/dist/ai/source/BbDatePickerInput.md +2015 -118
- package/dist/ai/source/BbDialog.md +531 -64
- package/dist/ai/source/BbDropdown.md +885 -175
- package/dist/ai/source/BbDropdownButton.md +377 -79
- package/dist/ai/source/BbDropdownGroup.md +687 -96
- package/dist/ai/source/BbDropzone.md +140 -31
- package/dist/ai/source/BbForm.md +875 -17
- package/dist/ai/source/BbIcon.md +130 -52
- package/dist/ai/source/BbIndicator.md +117 -60
- package/dist/ai/source/BbNumberInput.md +667 -84
- package/dist/ai/source/BbOffCanvas.md +1007 -261
- package/dist/ai/source/BbPagination.md +203 -31
- package/dist/ai/source/BbPopover.md +267 -90
- package/dist/ai/source/BbProgress.md +88 -26
- package/dist/ai/source/BbPtScope.md +54 -0
- package/dist/ai/source/BbRadio.md +388 -58
- package/dist/ai/source/BbRadioGroup.md +940 -109
- package/dist/ai/source/BbRating.md +736 -84
- package/dist/ai/source/BbSelect.md +1096 -96
- package/dist/ai/source/BbSelectPopover.md +807 -114
- package/dist/ai/source/BbSlider.md +1390 -98
- package/dist/ai/source/BbSmoothHeight.md +48 -2
- package/dist/ai/source/BbSpinner.md +62 -6
- package/dist/ai/source/BbSwitch.md +297 -60
- package/dist/ai/source/BbSwitchGroup.md +761 -83
- package/dist/ai/source/BbTable.md +6950 -1864
- package/dist/ai/source/BbTabs.md +368 -111
- package/dist/ai/source/BbTabsList.md +503 -146
- package/dist/ai/source/BbTabsPanels.md +625 -0
- package/dist/ai/source/BbTabsRoot.md +319 -100
- package/dist/ai/source/BbTag.md +796 -87
- package/dist/ai/source/BbTextInput.md +497 -68
- package/dist/ai/source/BbTextarea.md +550 -65
- package/dist/ai/source/BbTimePicker.md +395 -69
- package/dist/ai/source/BbTimePickerInput.md +1233 -106
- package/dist/ai/source/BbToast.md +250 -74
- package/dist/ai/source/BbToastPortal.md +210 -66
- package/dist/ai/source/BbTooltip.md +181 -30
- package/dist/ai/source/BbTree.md +76 -11
- package/dist/ai/source/ChipsBox.md +25 -5
- package/dist/ai/source/CommaBox.md +21 -6
- package/dist/ai/source/{BbBaseInputContainer.md → CommonField.md} +467 -250
- package/dist/ai/source/CommonFieldInput.md +848 -0
- package/dist/ai/source/CommonPopover.md +116 -30
- package/dist/ai/source/CommonTimeSelector.md +726 -0
- package/dist/ai/source/ErrorIcon.md +2 -2
- package/dist/ai/source/FlatListBox.md +188 -17
- package/dist/ai/source/GroupedListBox.md +236 -44
- package/dist/ai/source/GuidesComponent.md +14 -7
- package/dist/ai/source/ListBox.md +46 -8
- package/dist/ai/source/OptionsContainer.md +288 -60
- package/dist/ai/source/WarningIcon.md +2 -2
- package/dist/assets/css/reset.css_inline.js +1 -1
- package/dist/assets/svgs/star.svg_raw.js +4 -0
- package/dist/components/BbAccordion/BbAccordion.vue_vue_type_script_setup_true_lang.js +49 -32
- package/dist/components/BbAccordion/types.d.ts +35 -3
- package/dist/components/BbAccordion/types.js +11 -0
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +46 -30
- package/dist/components/BbAlert/types.d.ts +37 -3
- package/dist/components/BbAlert/types.js +13 -0
- package/dist/components/BbAsterisk/BbAsterisk.vue.d.ts +3 -1
- package/dist/components/BbAsterisk/BbAsterisk.vue_vue_type_script_setup_true_lang.js +23 -8
- package/dist/components/BbAsterisk/types.d.ts +18 -0
- package/dist/components/BbAsterisk/types.js +7 -0
- package/dist/components/BbAvatar/BbAvatar.vue.d.ts +1 -1
- package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +57 -44
- package/dist/components/BbAvatar/types.d.ts +23 -0
- package/dist/components/BbAvatar/types.js +7 -0
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +24 -18
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +96 -53
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +27 -8
- package/dist/components/BbBadge/badgeButtonContext.d.ts +25 -8
- package/dist/components/BbBadge/types.d.ts +46 -3
- package/dist/components/BbBadge/types.js +13 -0
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +109 -96
- package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +11 -11
- package/dist/components/BbBaseButton/types.d.ts +33 -3
- package/dist/components/BbBaseButton/types.js +9 -2
- package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue_vue_type_script_setup_true_lang.js +50 -18
- package/dist/components/BbBaseCheckboxIcon/types.d.ts +31 -2
- package/dist/components/BbBaseCheckboxIcon/types.js +8 -0
- package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue_vue_type_script_setup_true_lang.js +45 -15
- package/dist/components/BbBaseRadioIcon/types.d.ts +31 -2
- package/dist/components/BbBaseRadioIcon/types.js +8 -0
- package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue_vue_type_script_setup_true_lang.js +48 -16
- package/dist/components/BbBaseSwitchIcon/types.d.ts +31 -2
- package/dist/components/BbBaseSwitchIcon/types.js +8 -0
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +187 -132
- package/dist/components/BbBreadcrumbs/types.d.ts +45 -3
- package/dist/components/BbBreadcrumbs/types.js +12 -0
- package/dist/components/BbButton/BbButton.vue.d.ts +5 -0
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +107 -81
- package/dist/components/BbButton/types.d.ts +113 -2
- package/dist/components/BbButton/types.js +12 -0
- package/dist/components/BbCalendar/BbCalendar.vue.d.ts +34 -0
- package/dist/components/BbCalendar/BbCalendar.vue.js +6 -0
- package/dist/components/BbCalendar/BbCalendar.vue_vue_type_script_setup_true_lang.js +608 -0
- package/dist/components/BbCalendar/CalendarMonthPanel.vue.js +5 -0
- package/dist/components/BbCalendar/CalendarMonthPanel.vue_vue_type_script_setup_true_lang.js +124 -0
- package/dist/components/BbCalendar/CalendarYearPanel.vue.js +5 -0
- package/dist/components/BbCalendar/CalendarYearPanel.vue_vue_type_script_setup_true_lang.js +126 -0
- package/dist/components/BbCalendar/calendarHost.d.ts +29 -0
- package/dist/components/BbCalendar/calendarHost.js +10 -0
- package/dist/components/BbCalendar/types.d.ts +225 -0
- package/dist/components/BbCalendar/types.js +29 -0
- package/dist/components/{BbBaseDatePicker/useDatePickerContext.d.ts → BbCalendar/useCalendarContext.d.ts} +10 -7
- package/dist/components/BbCalendar/useCalendarContext.js +11 -0
- package/dist/components/BbCalendar/useCalendarGrid.d.ts +208 -0
- package/dist/components/BbCalendar/useCalendarGrid.js +274 -0
- package/dist/components/BbCalendar/useDayGrid.d.ts +79 -0
- package/dist/components/BbCalendar/useDayGrid.js +204 -0
- package/dist/components/BbCalendar/useToday.d.ts +23 -0
- package/dist/components/BbCalendar/useToday.js +21 -0
- package/dist/components/BbCheckbox/BbCheckbox.vue.d.ts +7 -7
- package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +214 -72
- package/dist/components/BbCheckbox/types.d.ts +180 -13
- package/dist/components/BbCheckbox/types.js +8 -0
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.d.ts +15 -3
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +338 -90
- package/dist/components/BbCheckboxGroup/types.d.ts +195 -20
- package/dist/components/BbCheckboxGroup/types.js +10 -0
- package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +2 -1
- package/dist/components/BbCollapsible/BbCollapsible.vue_vue_type_script_setup_true_lang.js +41 -19
- package/dist/components/BbCollapsible/types.d.ts +44 -1
- package/dist/components/BbCollapsible/types.js +7 -0
- package/dist/components/BbColorInput/BbColorInput.vue.d.ts +17 -7
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +330 -86
- package/dist/components/BbColorInput/types.d.ts +230 -12
- package/dist/components/BbColorInput/types.js +24 -0
- package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +10 -2
- package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +515 -108
- package/dist/components/BbColorPalette/types.d.ts +76 -7
- package/dist/components/BbColorPalette/types.js +12 -0
- package/dist/components/BbConfirm/BbConfirm.vue.d.ts +2 -1
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +125 -76
- package/dist/components/BbConfirm/BbConfirmPortal.vue.d.ts +1 -0
- package/dist/components/BbConfirm/types.d.ts +49 -0
- package/dist/components/BbConfirm/types.js +17 -0
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +16 -10
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +320 -223
- package/dist/components/BbDatePicker/types.d.ts +111 -17
- package/dist/components/BbDatePicker/types.js +33 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +16 -4
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +1172 -87
- package/dist/components/BbDatePickerInput/types.d.ts +224 -19
- package/dist/components/BbDatePickerInput/types.js +39 -0
- package/dist/components/BbDialog/BbDialog.vue.d.ts +3 -3
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +227 -136
- package/dist/components/BbDialog/types.d.ts +92 -3
- package/dist/components/BbDialog/types.js +16 -0
- package/dist/components/BbDialog/useDialogStack.d.ts +12 -0
- package/dist/components/BbDialog/useDialogStack.js +9 -2
- package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +2 -0
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +108 -96
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +10 -2
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +337 -268
- package/dist/components/BbDropdown/BbDropdownGroup.vue.d.ts +5 -1
- package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +8 -2
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +377 -293
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +129 -118
- package/dist/components/BbDropdown/normalizeGroups.js +55 -31
- package/dist/components/BbDropdown/types.d.ts +288 -30
- package/dist/components/BbDropdown/types.js +21 -2
- package/dist/components/BbDropdown/useDropdownContext.d.ts +10 -4
- package/dist/components/BbDropdown/useDropdownGroupRegistry.d.ts +1 -0
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +18 -3
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +172 -40
- package/dist/components/BbDropdownButton/types.d.ts +137 -8
- package/dist/components/BbDropdownButton/types.js +35 -0
- package/dist/components/BbDropzone/BbDropzone.vue.d.ts +2 -2
- package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +186 -144
- package/dist/components/BbDropzone/types.d.ts +38 -4
- package/dist/components/BbDropzone/types.js +16 -0
- package/dist/components/BbForm/BbForm.vue.d.ts +94 -0
- package/dist/{validated → components/BbForm}/BbForm.vue.js +1 -1
- package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +317 -0
- package/dist/components/BbForm/BbFormCustomField.d.ts +14 -0
- package/dist/components/BbForm/BbFormCustomField.js +43 -0
- package/dist/components/BbForm/bindFormField.d.ts +16 -0
- package/dist/components/BbForm/bindFormField.js +85 -0
- package/dist/components/BbForm/formFields.d.ts +64 -0
- package/dist/components/BbForm/formFields.js +11 -0
- package/dist/components/BbForm/formSchema.d.ts +56 -0
- package/dist/components/BbForm/formSchema.js +196 -0
- package/dist/components/BbForm/standardSchema.d.ts +59 -0
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +58 -48
- package/dist/components/BbIcon/iconCache.d.ts +63 -0
- package/dist/components/BbIcon/iconCache.js +35 -0
- package/dist/components/BbIcon/types.d.ts +22 -2
- package/dist/components/BbIcon/types.js +7 -0
- package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +34 -21
- package/dist/components/BbIndicator/types.d.ts +24 -0
- package/dist/components/BbIndicator/types.js +7 -0
- package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +12 -8
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +308 -85
- package/dist/components/BbNumberInput/types.d.ts +201 -18
- package/dist/components/BbNumberInput/types.js +8 -0
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +3 -3
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +311 -210
- package/dist/components/BbOffCanvas/types.d.ts +79 -6
- package/dist/components/BbOffCanvas/types.js +15 -0
- package/dist/components/BbPagination/BbPagination.vue.d.ts +2 -2
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +125 -90
- package/dist/components/BbPagination/types.d.ts +38 -0
- package/dist/components/BbPagination/types.js +13 -0
- package/dist/components/BbPopover/BbPopover.vue.d.ts +4 -4
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +219 -179
- package/dist/components/BbPopover/types.d.ts +51 -5
- package/dist/components/BbPopover/types.js +14 -0
- package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +29 -16
- package/dist/components/BbProgress/types.d.ts +25 -0
- package/dist/components/BbProgress/types.js +7 -0
- package/dist/components/BbPtScope/BbPtScope.vue.d.ts +12 -0
- package/dist/components/BbPtScope/BbPtScope.vue.js +5 -0
- package/dist/components/BbPtScope/BbPtScope.vue_vue_type_script_setup_true_lang.js +13 -0
- package/dist/components/BbPtScope/types.d.ts +15 -0
- package/dist/components/BbRadio/BbRadio.vue.d.ts +7 -7
- package/dist/components/BbRadio/BbRadio.vue_vue_type_script_setup_true_lang.js +172 -59
- package/dist/components/BbRadio/types.d.ts +152 -13
- package/dist/components/BbRadio/types.js +8 -0
- package/dist/components/BbRadioGroup/BbRadioGroup.vue.d.ts +14 -2
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +319 -92
- package/dist/components/BbRadioGroup/types.d.ts +198 -22
- package/dist/components/BbRadioGroup/types.js +10 -0
- package/dist/components/BbRating/BbRating.vue.d.ts +10 -8
- package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +259 -78
- package/dist/components/BbRating/types.d.ts +174 -13
- package/dist/components/BbRating/types.js +21 -0
- package/dist/components/BbSelect/BbSelect.vue.d.ts +17 -3
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +553 -83
- package/dist/components/BbSelect/types.d.ts +235 -20
- package/dist/components/BbSelect/types.js +41 -0
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +15 -1
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +541 -391
- package/dist/components/BbSelectPopover/types.d.ts +124 -8
- package/dist/components/BbSelectPopover/types.js +24 -0
- package/dist/components/BbSlider/BbSlider.vue.d.ts +13 -8
- package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +472 -96
- package/dist/components/BbSlider/types.d.ts +202 -13
- package/dist/components/BbSlider/types.js +26 -0
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue_vue_type_script_setup_true_lang.js +60 -48
- package/dist/components/BbSmoothHeight/types.d.ts +19 -0
- package/dist/components/BbSmoothHeight/types.js +7 -0
- package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +27 -14
- package/dist/components/BbSpinner/types.d.ts +22 -1
- package/dist/components/BbSpinner/types.js +7 -0
- package/dist/components/BbSwitch/BbSwitch.vue.d.ts +7 -7
- package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +220 -78
- package/dist/components/BbSwitch/types.d.ts +25 -10
- package/dist/components/BbSwitch/types.js +5 -0
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.d.ts +14 -2
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +338 -90
- package/dist/components/BbSwitchGroup/types.d.ts +30 -7
- package/dist/components/BbSwitchGroup/types.js +5 -0
- package/dist/components/BbTable/BbTable.vue.d.ts +27 -6
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +2013 -685
- package/dist/components/BbTable/BbTableDataRow.d.ts +196 -0
- package/dist/components/BbTable/BbTableDataRow.js +151 -0
- package/dist/components/BbTable/BbTableExpandRow.d.ts +84 -0
- package/dist/components/BbTable/BbTableExpandRow.js +62 -0
- package/dist/components/BbTable/BbTableSelectToggle.d.ts +120 -0
- package/dist/components/BbTable/BbTableSelectToggle.js +122 -0
- package/dist/components/BbTable/gridWidgets.d.ts +30 -0
- package/dist/components/BbTable/gridWidgets.js +14 -0
- package/dist/components/BbTable/types.d.ts +473 -123
- package/dist/components/BbTable/types.js +31 -0
- package/dist/components/BbTable/utils.d.ts +145 -4
- package/dist/components/BbTable/utils.js +154 -37
- package/dist/components/BbTabs/BbTabs.vue.d.ts +3 -1
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +62 -26
- package/dist/components/BbTabs/BbTabsList.vue.d.ts +3 -10
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +143 -81
- package/dist/components/BbTabs/BbTabsPanels.vue.d.ts +12 -0
- package/dist/components/{BbBaseSwitch/BbBaseSwitch.vue.js → BbTabs/BbTabsPanels.vue.js} +2 -2
- package/dist/components/BbTabs/BbTabsPanels.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/components/BbTabs/BbTabsRoot.vue.d.ts +3 -1
- package/dist/components/BbTabs/BbTabsRoot.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/BbTabs/types.d.ts +183 -23
- package/dist/components/BbTabs/types.js +34 -0
- package/dist/components/BbTag/BbTag.vue.d.ts +13 -10
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +383 -92
- package/dist/components/BbTag/types.d.ts +139 -14
- package/dist/components/BbTag/types.js +22 -0
- package/dist/components/BbTextInput/BbTextInput.vue.d.ts +10 -8
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +257 -84
- package/dist/components/BbTextInput/types.d.ts +168 -13
- package/dist/components/BbTextInput/types.js +8 -0
- package/dist/components/BbTextarea/BbTextarea.vue.d.ts +7 -7
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +291 -94
- package/dist/components/BbTextarea/types.d.ts +158 -14
- package/dist/components/BbTextarea/types.js +8 -0
- package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +12 -4
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +199 -122
- package/dist/components/BbTimePicker/types.d.ts +94 -7
- package/dist/components/BbTimePicker/types.js +18 -0
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.d.ts +14 -4
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +749 -86
- package/dist/components/BbTimePickerInput/types.d.ts +171 -22
- package/dist/components/BbTimePickerInput/types.js +25 -0
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +63 -25
- package/dist/components/BbToast/BbToastMessage.vue.d.ts +4 -1
- package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +79 -76
- package/dist/components/BbToast/BbToastPortal.vue.d.ts +1 -0
- package/dist/components/BbToast/BbToastRegion.vue.d.ts +4 -1
- package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +72 -64
- package/dist/components/BbToast/types.d.ts +54 -1
- package/dist/components/BbToast/types.js +28 -0
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +104 -87
- package/dist/components/BbTooltip/types.d.ts +40 -2
- package/dist/components/BbTooltip/types.js +7 -0
- package/dist/components/BbTree/BbTree.vue.d.ts +15 -3
- package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +51 -29
- package/dist/components/BbTree/BbTreeLevel.vue.d.ts +1 -1
- package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +17 -16
- package/dist/components/BbTree/context.d.ts +9 -1
- package/dist/components/BbTree/types.d.ts +40 -5
- package/dist/components/BbTree/types.js +7 -0
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +46 -44
- package/dist/components/ChipsBox/types.d.ts +7 -0
- package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +11 -7
- package/dist/components/CommaBox/types.d.ts +7 -0
- package/dist/components/{BbBaseInputContainer/BbBaseInputContainer.vue.d.ts → CommonField/CommonField.vue.d.ts} +5 -5
- package/dist/components/{BbBaseRadio/BbBaseRadio.vue.js → CommonField/CommonField.vue.js} +2 -2
- package/dist/components/CommonField/CommonField.vue_vue_type_script_setup_true_lang.js +189 -0
- package/dist/components/CommonField/messageHeightMatrix.d.ts +2 -0
- package/dist/components/{BbBaseInputContainer → CommonField}/types.d.ts +52 -16
- package/dist/components/{CommonInputWrapper/CommonInputWrapper.vue.d.ts → CommonFieldInput/CommonFieldInput.vue.d.ts} +5 -4
- package/dist/components/{BbBaseRadioGroup/BbBaseRadioGroup.vue.js → CommonFieldInput/CommonFieldInput.vue.js} +2 -2
- package/dist/components/CommonFieldInput/CommonFieldInput.vue_vue_type_script_setup_true_lang.js +120 -0
- package/dist/components/CommonFieldInput/boxBorderMatrix.d.ts +10 -0
- package/dist/components/{CommonInputWrapper → CommonFieldInput}/types.d.ts +27 -8
- package/dist/components/CommonPopover/CommonPopover.vue.d.ts +11 -2
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +76 -63
- package/dist/components/CommonPopover/types.d.ts +27 -8
- package/dist/components/{BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue.d.ts → CommonTimeSelector/CommonTimeSelector.vue.d.ts} +21 -2
- package/dist/components/{BbBaseColorPalette/BbBaseColorPalette.vue.js → CommonTimeSelector/CommonTimeSelector.vue.js} +2 -2
- package/dist/components/CommonTimeSelector/CommonTimeSelector.vue_vue_type_script_setup_true_lang.js +232 -0
- package/dist/components/CommonTimeSelector/types.d.ts +6 -0
- package/dist/components/FlatListBox/FlatListBox.vue.d.ts +5 -1
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +165 -95
- package/dist/components/FlatListBox/types.d.ts +24 -2
- package/dist/components/GroupedListBox/GroupedListBox.vue.d.ts +5 -1
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +217 -134
- package/dist/components/GroupedListBox/types.d.ts +24 -2
- package/dist/components/ListBox/ListBox.vue.d.ts +5 -1
- package/dist/components/ListBox/ListBox.vue_vue_type_script_setup_true_lang.js +95 -69
- package/dist/components/ListBox/types.d.ts +24 -2
- package/dist/components/OptionsContainer/OptionsContainer.vue.d.ts +1 -1
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +109 -37
- package/dist/components/OptionsContainer/types.d.ts +53 -9
- package/dist/components/Transitions/ScaleFade.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/Transitions/Slide.vue.js +1 -1
- package/dist/composables/useBaseOptions.d.ts +12 -1
- package/dist/composables/useBaseOptions.js +77 -37
- package/dist/composables/useBbConfig.d.ts +27 -6
- package/dist/composables/useBbConfig.js +8 -2
- package/dist/composables/useBbDropdownContext.d.ts +5 -0
- package/dist/composables/useBbFormContext.d.ts +131 -8
- package/dist/composables/useBbFormContext.js +49 -30
- package/dist/composables/useBbFormField.d.ts +40 -0
- package/dist/composables/useBbFormField.js +39 -0
- package/dist/composables/useBbTableContext.d.ts +45 -1
- package/dist/composables/useBbTableContext.js +93 -87
- package/dist/composables/useBbTabsContext.d.ts +15 -9
- package/dist/composables/useBbTabsContext.js +121 -90
- package/dist/composables/useClosingInert.d.ts +4 -4
- package/dist/composables/useCoarsePointer.js +7 -10
- package/dist/composables/useCoherence.js +1 -1
- package/dist/composables/useConfig.d.ts +59 -0
- package/dist/composables/useConfig.js +15 -0
- package/dist/composables/useConfirm.d.ts +39 -7
- package/dist/composables/useConfirm.js +50 -41
- package/dist/composables/useEscapeStackEntry.d.ts +13 -0
- package/dist/composables/useEscapeStackEntry.js +16 -0
- package/dist/composables/useFormBinding.d.ts +116 -0
- package/dist/composables/useFormBinding.js +34 -0
- package/dist/composables/useHydrated.d.ts +18 -0
- package/dist/composables/useHydrated.js +13 -7
- package/dist/composables/useId.d.ts +4 -3
- package/dist/composables/useId.js +1 -7
- package/dist/composables/useItemsGetter.d.ts +11 -0
- package/dist/composables/useItemsGetter.js +44 -18
- package/dist/composables/useKeyboardInset.d.ts +28 -0
- package/dist/composables/useKeyboardInset.js +32 -0
- package/dist/composables/useLocale.js +10 -7
- package/dist/composables/useMobile.js +7 -10
- package/dist/composables/usePassthrough.d.ts +228 -0
- package/dist/composables/usePassthrough.js +247 -0
- package/dist/composables/usePrefill.d.ts +22 -2
- package/dist/composables/usePrefill.js +35 -19
- package/dist/composables/useSafeAreaInternal.js +1 -1
- package/dist/composables/useSegmentedFields.d.ts +2 -2
- package/dist/composables/useSsrState.d.ts +20 -0
- package/dist/composables/useSsrState.js +13 -0
- package/dist/composables/useTableWidthContext.d.ts +24 -4
- package/dist/composables/useTableWidthContext.js +31 -28
- package/dist/composables/useToast.d.ts +18 -1
- package/dist/composables/useToast.js +31 -18
- package/dist/composables/useToggleInput.d.ts +44 -0
- package/dist/composables/useToggleInput.js +39 -0
- package/dist/composables/useViewportWidth.d.ts +5 -25
- package/dist/composables/useViewportWidth.js +14 -7
- package/dist/deprecation/ai-deprecations.json.d.ts +1977 -289
- package/dist/deprecation/ai-deprecations.json.js +1 -1
- package/dist/deprecation/removedProps.js +9 -4
- package/dist/directives/bbDropdown.d.ts +15 -4
- package/dist/directives/bbDropdown.js +31 -9
- package/dist/directives/bbTooltip.d.ts +6 -0
- package/dist/directives/createPopoverDirective.d.ts +62 -0
- package/dist/directives/createPopoverDirective.js +92 -37
- package/dist/i18n/index.d.ts +10 -16
- package/dist/i18n/locales/cs.json +9 -5
- package/dist/i18n/locales/da.json +9 -5
- package/dist/i18n/locales/de.json +9 -5
- package/dist/i18n/locales/el.json +9 -5
- package/dist/i18n/locales/en.json +9 -5
- package/dist/i18n/locales/es.json +9 -5
- package/dist/i18n/locales/fi.json +9 -5
- package/dist/i18n/locales/fr.json +9 -5
- package/dist/i18n/locales/hu.json +9 -5
- package/dist/i18n/locales/it.json +9 -5
- package/dist/i18n/locales/ja.json +9 -5
- package/dist/i18n/locales/ko.json +9 -5
- package/dist/i18n/locales/nb.json +9 -5
- package/dist/i18n/locales/nl.json +9 -5
- package/dist/i18n/locales/pl.json +9 -5
- package/dist/i18n/locales/pt.json +9 -5
- package/dist/i18n/locales/ro.json +9 -5
- package/dist/i18n/locales/ru.json +9 -5
- package/dist/i18n/locales/sv.json +9 -5
- package/dist/i18n/locales/tr.json +9 -5
- package/dist/i18n/locales/uk.json +9 -5
- package/dist/i18n/locales/zh-cn.json +9 -5
- package/dist/icon-scan.d.ts +276 -0
- package/dist/icon-scan.js +485 -0
- package/dist/icons-whitelist.d.ts +5 -4
- package/dist/index.d.ts +40 -21
- package/dist/index.js +78 -71
- package/dist/llms-full.txt +61164 -27972
- package/dist/llms-medium.txt +1482 -366
- package/dist/llms.txt +32 -15
- package/dist/locale-blueprint.json +9 -5
- package/dist/nuxt-auto-imports.d.ts +76 -0
- package/dist/nuxt-auto-imports.js +32 -0
- package/dist/nuxt-module.d.ts +30 -15
- package/dist/nuxt.js +35 -9
- package/dist/passthrough-deduper.js +5 -0
- package/dist/plugin.d.ts +10 -1
- package/dist/plugin.js +29 -19
- package/dist/project-dts.d.ts +84 -0
- package/dist/project-dts.js +170 -0
- package/dist/reset.css +1 -1
- package/dist/runtime/nuxt-plugin.js +34 -21
- package/dist/styles.css +3 -2
- package/dist/types/AlertVariant.d.ts +10 -1
- package/dist/types/BadgeVariant.d.ts +16 -5
- package/dist/types/ButtonVariant.d.ts +12 -1
- package/dist/types/ColumnName.d.ts +30 -3
- package/dist/types/CommonProps.d.ts +2 -2
- package/dist/types/Config.d.ts +94 -1
- package/dist/types/ConfirmVariant.d.ts +8 -1
- package/dist/types/DropdownItemVariant.d.ts +8 -1
- package/dist/types/FieldLayout.d.ts +32 -0
- package/dist/types/IndicatorVariant.d.ts +11 -1
- package/dist/types/InputVariant.d.ts +30 -0
- package/dist/types/ItemProps.d.ts +50 -0
- package/dist/types/Option.d.ts +6 -0
- package/dist/types/PtScope.d.ts +15 -0
- package/dist/types/RegistryKey.d.ts +10 -0
- package/dist/types/TabsVariant.d.ts +25 -0
- package/dist/types/ToastVariant.d.ts +12 -2
- package/dist/types/TooltipVariant.d.ts +8 -1
- package/dist/types/passthrough.d.ts +362 -0
- package/dist/types/passthrough.js +78 -0
- package/dist/types/ptComponentMap.d.ts +62 -0
- package/dist/utilities/functions/hasVnodeListener.d.ts +16 -0
- package/dist/utilities/functions/hasVnodeListener.js +12 -0
- package/dist/utilities/functions/isImeComposing.d.ts +7 -0
- package/dist/utilities/functions/isImeComposing.js +4 -0
- package/dist/utilities/functions/itemProps.d.ts +46 -0
- package/dist/utilities/functions/itemProps.js +47 -0
- package/dist/utilities/functions/slotKey.d.ts +13 -8
- package/dist/utilities/functions/slotKey.js +78 -2
- package/dist/utilities/functions/snapToStep.js +2 -1
- package/dist/utilities/functions/toggleInput.d.ts +98 -0
- package/dist/utilities/functions/toggleInput.js +56 -0
- package/dist/utilities/functions/warnRemovedAttrs.d.ts +27 -1
- package/dist/utilities/functions/warnRemovedAttrs.js +75 -14
- package/dist/utilities/misc/listboxMetrics.d.ts +9 -3
- package/dist/utilities/misc/listboxMetrics.js +5 -2
- package/dist/utilities/misc/ssrStateInjectionKey.d.ts +42 -0
- package/dist/utilities/misc/ssrStateInjectionKey.js +4 -0
- package/dist/utils/cssLayers.d.ts +91 -0
- package/dist/utils/cssLayers.js +43 -0
- package/dist/utils/injectLibraryStyles.d.ts +3 -1
- package/dist/utils/injectLibraryStyles.js +24 -23
- package/dist/utils/overlayEscapeStack.d.ts +10 -0
- package/dist/utils/overlayEscapeStack.js +5 -3
- package/dist/utils/passthrough.d.ts +67 -0
- package/dist/utils/passthrough.js +100 -0
- package/dist/utils/passthroughDeduper.d.ts +2 -0
- package/dist/utils/ptScope.d.ts +8 -0
- package/dist/utils/ptScope.js +4 -0
- package/dist/utils/versionCheck.d.ts +19 -0
- package/dist/utils/versionCheck.js +18 -0
- package/dist/vite-plugin.d.ts +301 -53
- package/dist/vite.js +547 -375
- package/llms.txt +33 -16
- package/package.json +49 -27
- package/scripts/lib/check-fix.mjs +129 -0
- package/scripts/lib/component-attr-targets.ts +123 -0
- package/scripts/lib/component-tree.ts +648 -0
- package/scripts/lib/css-class-check.mjs +326 -0
- package/scripts/lib/css-class-surface.mjs +292 -0
- package/scripts/lib/css-color-resolve.mjs +172 -0
- package/scripts/lib/css-local-check.mjs +267 -0
- package/scripts/lib/design-token-manifest.mjs +499 -0
- package/scripts/lib/doc-sections.mjs +248 -0
- package/scripts/lib/ensure-manifest.mjs +28 -5
- package/scripts/lib/eslint-disable.mjs +141 -0
- package/scripts/lib/eslint-plugin.d.ts +64 -1
- package/scripts/lib/eslint-plugin.mjs +1285 -30
- package/scripts/lib/hand-imported-styles.mjs +326 -0
- package/scripts/lib/hand-roll-hints.mjs +50 -6
- package/scripts/lib/html-attributes.mjs +353 -0
- package/scripts/lib/local-components.mjs +177 -0
- package/scripts/lib/mcp-config.mjs +87 -58
- package/scripts/lib/migrate-fix.mjs +62 -3
- package/scripts/lib/project-variant-dts.mjs +122 -0
- package/scripts/lib/public-type-exports.mjs +273 -0
- package/scripts/lib/slot-key.mjs +147 -0
- package/scripts/lib/slot-renames.mjs +46 -0
- package/scripts/lib/squashed-slot-words.mjs +133 -0
- package/scripts/lib/validate-bb-markup.mjs +2213 -76
- package/scripts/lib/wrapper-props.mjs +188 -0
- package/dist/ai/BbBaseCheckbox.md +0 -49
- package/dist/ai/BbBaseCheckboxGroup.md +0 -64
- package/dist/ai/BbBaseColorInput.md +0 -65
- package/dist/ai/BbBaseColorPalette.md +0 -39
- package/dist/ai/BbBaseDatePicker.md +0 -43
- package/dist/ai/BbBaseDatePickerInput.md +0 -73
- package/dist/ai/BbBaseInputContainer.md +0 -48
- package/dist/ai/BbBaseNumberInput.md +0 -71
- package/dist/ai/BbBaseRadio.md +0 -46
- package/dist/ai/BbBaseRadioGroup.md +0 -64
- package/dist/ai/BbBaseRating.md +0 -52
- package/dist/ai/BbBaseSelect.md +0 -88
- package/dist/ai/BbBaseSlider.md +0 -56
- package/dist/ai/BbBaseSwitch.md +0 -49
- package/dist/ai/BbBaseSwitchGroup.md +0 -64
- package/dist/ai/BbBaseTag.md +0 -68
- package/dist/ai/BbBaseTextInput.md +0 -75
- package/dist/ai/BbBaseTextarea.md +0 -62
- package/dist/ai/BbBaseTimePickerInput.md +0 -62
- package/dist/ai/BbTabsPanes.md +0 -27
- package/dist/ai/CommonInputWrapper.md +0 -42
- package/dist/ai/source/BbBaseCheckbox.md +0 -461
- package/dist/ai/source/BbBaseCheckboxGroup.md +0 -554
- package/dist/ai/source/BbBaseColorInput.md +0 -431
- package/dist/ai/source/BbBaseColorPalette.md +0 -942
- package/dist/ai/source/BbBaseDatePicker.md +0 -1448
- package/dist/ai/source/BbBaseDatePickerInput.md +0 -1940
- package/dist/ai/source/BbBaseNumberInput.md +0 -617
- package/dist/ai/source/BbBaseRadio.md +0 -381
- package/dist/ai/source/BbBaseRadioGroup.md +0 -539
- package/dist/ai/source/BbBaseRating.md +0 -607
- package/dist/ai/source/BbBaseSelect.md +0 -945
- package/dist/ai/source/BbBaseSlider.md +0 -1144
- package/dist/ai/source/BbBaseSwitch.md +0 -246
- package/dist/ai/source/BbBaseSwitchGroup.md +0 -302
- package/dist/ai/source/BbBaseTag.md +0 -694
- package/dist/ai/source/BbBaseTextInput.md +0 -511
- package/dist/ai/source/BbBaseTextarea.md +0 -504
- package/dist/ai/source/BbBaseTimePickerInput.md +0 -1037
- package/dist/ai/source/BbTabsPanes.md +0 -377
- package/dist/ai/source/CommonInputWrapper.md +0 -584
- package/dist/alert-variants.d.ts +0 -19
- package/dist/assets/svgs/sort.svg_raw.js +0 -4
- package/dist/badge-variants.d.ts +0 -19
- package/dist/button-variants.d.ts +0 -21
- package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +0 -3
- package/dist/components/BbBadge/BadgeAppendIcon.vue.js +0 -5
- package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +0 -22
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue.d.ts +0 -40
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue.js +0 -6
- package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +0 -145
- package/dist/components/BbBaseCheckbox/types.d.ts +0 -224
- package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue.d.ts +0 -19
- package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue.js +0 -6
- package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +0 -190
- package/dist/components/BbBaseCheckboxGroup/types.d.ts +0 -257
- package/dist/components/BbBaseColorInput/BbBaseColorInput.vue.d.ts +0 -43
- package/dist/components/BbBaseColorInput/BbBaseColorInput.vue.js +0 -6
- package/dist/components/BbBaseColorInput/BbBaseColorInput.vue_vue_type_script_setup_true_lang.js +0 -184
- package/dist/components/BbBaseColorInput/types.d.ts +0 -219
- package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue.d.ts +0 -13
- package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue_vue_type_script_setup_true_lang.js +0 -395
- package/dist/components/BbBaseColorPalette/types.d.ts +0 -40
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue.d.ts +0 -20
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue.js +0 -6
- package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +0 -407
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +0 -47
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.js +0 -5
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +0 -318
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue.js +0 -5
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +0 -115
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue.js +0 -5
- package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue_vue_type_script_setup_true_lang.js +0 -116
- package/dist/components/BbBaseDatePicker/types.d.ts +0 -108
- package/dist/components/BbBaseDatePicker/useDatePickerContext.js +0 -11
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +0 -31
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.js +0 -6
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +0 -737
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue.js +0 -6
- package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue_vue_type_script_setup_true_lang.js +0 -204
- package/dist/components/BbBaseDatePickerInput/types.d.ts +0 -325
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.js +0 -6
- package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +0 -190
- package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue.d.ts +0 -52
- package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue.js +0 -6
- package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue_vue_type_script_setup_true_lang.js +0 -215
- package/dist/components/BbBaseNumberInput/types.d.ts +0 -211
- package/dist/components/BbBaseRadio/BbBaseRadio.vue.d.ts +0 -33
- package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +0 -113
- package/dist/components/BbBaseRadio/types.d.ts +0 -179
- package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue.d.ts +0 -19
- package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +0 -179
- package/dist/components/BbBaseRadioGroup/types.d.ts +0 -223
- package/dist/components/BbBaseRating/BbBaseRating.vue.d.ts +0 -38
- package/dist/components/BbBaseRating/BbBaseRating.vue.js +0 -6
- package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +0 -192
- package/dist/components/BbBaseRating/types.d.ts +0 -176
- package/dist/components/BbBaseSelect/BbBaseSelect.vue.d.ts +0 -19
- package/dist/components/BbBaseSelect/BbBaseSelect.vue.js +0 -6
- package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +0 -311
- package/dist/components/BbBaseSelect/types.d.ts +0 -297
- package/dist/components/BbBaseSlider/BbBaseSlider.vue.d.ts +0 -35
- package/dist/components/BbBaseSlider/BbBaseSlider.vue.js +0 -6
- package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +0 -340
- package/dist/components/BbBaseSlider/types.d.ts +0 -200
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue.d.ts +0 -35
- package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +0 -146
- package/dist/components/BbBaseSwitch/types.d.ts +0 -10
- package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue.d.ts +0 -19
- package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue.js +0 -6
- package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +0 -190
- package/dist/components/BbBaseSwitchGroup/types.d.ts +0 -8
- package/dist/components/BbBaseTag/BbBaseTag.vue.d.ts +0 -50
- package/dist/components/BbBaseTag/BbBaseTag.vue.js +0 -6
- package/dist/components/BbBaseTag/BbBaseTag.vue_vue_type_script_setup_true_lang.js +0 -266
- package/dist/components/BbBaseTag/types.d.ts +0 -160
- package/dist/components/BbBaseTextInput/BbBaseTextInput.vue.d.ts +0 -45
- package/dist/components/BbBaseTextInput/BbBaseTextInput.vue.js +0 -6
- package/dist/components/BbBaseTextInput/BbBaseTextInput.vue_vue_type_script_setup_true_lang.js +0 -200
- package/dist/components/BbBaseTextInput/types.d.ts +0 -209
- package/dist/components/BbBaseTextarea/BbBaseTextarea.vue.d.ts +0 -39
- package/dist/components/BbBaseTextarea/BbBaseTextarea.vue.js +0 -6
- package/dist/components/BbBaseTextarea/BbBaseTextarea.vue_vue_type_script_setup_true_lang.js +0 -187
- package/dist/components/BbBaseTextarea/types.d.ts +0 -170
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +0 -27
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.js +0 -6
- package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +0 -519
- package/dist/components/BbBaseTimePickerInput/types.d.ts +0 -151
- package/dist/components/BbTabs/BbTabsPanes.vue.d.ts +0 -16
- package/dist/components/BbTabs/BbTabsPanes.vue.js +0 -6
- package/dist/components/BbTabs/BbTabsPanes.vue_vue_type_script_setup_true_lang.js +0 -35
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.js +0 -6
- package/dist/components/CommonInputWrapper/CommonInputWrapper.vue_vue_type_script_setup_true_lang.js +0 -107
- package/dist/confirm-variants.d.ts +0 -17
- package/dist/dropdown-item-variants.d.ts +0 -17
- package/dist/indicator-variants.d.ts +0 -20
- package/dist/locale-registry.d.ts +0 -37
- package/dist/toast-variants.d.ts +0 -20
- package/dist/tooltip-variants.d.ts +0 -17
- package/dist/types/InputDirection.d.ts +0 -15
- package/dist/validated/BbCheckbox.vue.d.ts +0 -29
- package/dist/validated/BbCheckbox.vue.js +0 -5
- package/dist/validated/BbCheckbox.vue_vue_type_script_setup_true_lang.js +0 -75
- package/dist/validated/BbCheckboxGroup.vue.d.ts +0 -34
- package/dist/validated/BbCheckboxGroup.vue.js +0 -5
- package/dist/validated/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +0 -82
- package/dist/validated/BbColorInput.vue.d.ts +0 -37
- package/dist/validated/BbColorInput.vue.js +0 -5
- package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +0 -75
- package/dist/validated/BbDatePickerInput.vue.d.ts +0 -41
- package/dist/validated/BbDatePickerInput.vue.js +0 -5
- package/dist/validated/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +0 -90
- package/dist/validated/BbDropzone.vue.d.ts +0 -24
- package/dist/validated/BbDropzone.vue.js +0 -5
- package/dist/validated/BbDropzone.vue_vue_type_script_setup_true_lang.js +0 -45
- package/dist/validated/BbForm.vue.d.ts +0 -28
- package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +0 -42
- package/dist/validated/BbNumberInput.vue.d.ts +0 -36
- package/dist/validated/BbNumberInput.vue.js +0 -5
- package/dist/validated/BbNumberInput.vue_vue_type_script_setup_true_lang.js +0 -72
- package/dist/validated/BbRadioGroup.vue.d.ts +0 -34
- package/dist/validated/BbRadioGroup.vue.js +0 -5
- package/dist/validated/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +0 -78
- package/dist/validated/BbRating.vue.d.ts +0 -30
- package/dist/validated/BbRating.vue.js +0 -5
- package/dist/validated/BbRating.vue_vue_type_script_setup_true_lang.js +0 -63
- package/dist/validated/BbSelect.vue.d.ts +0 -46
- package/dist/validated/BbSelect.vue.js +0 -5
- package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +0 -109
- package/dist/validated/BbSlider.vue.d.ts +0 -36
- package/dist/validated/BbSlider.vue.js +0 -5
- package/dist/validated/BbSlider.vue_vue_type_script_setup_true_lang.js +0 -69
- package/dist/validated/BbSwitch.vue.d.ts +0 -29
- package/dist/validated/BbSwitch.vue.js +0 -5
- package/dist/validated/BbSwitch.vue_vue_type_script_setup_true_lang.js +0 -75
- package/dist/validated/BbSwitchGroup.vue.d.ts +0 -34
- package/dist/validated/BbSwitchGroup.vue.js +0 -5
- package/dist/validated/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +0 -82
- package/dist/validated/BbTag.vue.d.ts +0 -36
- package/dist/validated/BbTag.vue.js +0 -5
- package/dist/validated/BbTag.vue_vue_type_script_setup_true_lang.js +0 -72
- package/dist/validated/BbTextInput.vue.d.ts +0 -36
- package/dist/validated/BbTextInput.vue.js +0 -5
- package/dist/validated/BbTextInput.vue_vue_type_script_setup_true_lang.js +0 -72
- package/dist/validated/BbTextarea.vue.d.ts +0 -36
- package/dist/validated/BbTextarea.vue.js +0 -5
- package/dist/validated/BbTextarea.vue_vue_type_script_setup_true_lang.js +0 -70
- package/dist/validated/BbTimePickerInput.vue.d.ts +0 -37
- package/dist/validated/BbTimePickerInput.vue.js +0 -5
- package/dist/validated/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +0 -81
- package/dist/validated/index.d.ts +0 -43
- package/dist/validated/useValidatedField.d.ts +0 -93
- package/dist/validated/useValidatedField.js +0 -51
- package/dist/validated.js +0 -21
- /package/dist/components/{BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue.d.ts → BbCalendar/CalendarMonthPanel.vue.d.ts} +0 -0
- /package/dist/components/{BbBaseDatePicker/BbBaseDatePickerYearSelector.vue.d.ts → BbCalendar/CalendarYearPanel.vue.d.ts} +0 -0
- /package/dist/{components/BbBaseDatePicker/typeahead.d.ts → composables/useTypeahead.d.ts} +0 -0
- /package/dist/{components/BbBaseDatePicker/typeahead.js → composables/useTypeahead.js} +0 -0
|
@@ -6,91 +6,166 @@
|
|
|
6
6
|
|
|
7
7
|
```vue
|
|
8
8
|
<template>
|
|
9
|
-
<
|
|
9
|
+
<CommonField
|
|
10
10
|
:id="id"
|
|
11
11
|
class="bb-textarea"
|
|
12
12
|
:clearable="isClearable"
|
|
13
13
|
:compact="compact"
|
|
14
14
|
:description="description"
|
|
15
|
-
:direction="direction"
|
|
16
15
|
:disabled="disabled"
|
|
17
|
-
:errors="
|
|
16
|
+
:errors="fieldErrors"
|
|
18
17
|
:has-errors="hasErrors"
|
|
19
18
|
:has-value="hasValue"
|
|
20
|
-
:has-
|
|
19
|
+
:has-warnings="hasWarnings"
|
|
21
20
|
:hide-label="hideLabel"
|
|
22
21
|
:hint="hint"
|
|
23
22
|
:label="label"
|
|
24
23
|
:label-mode="resolvedLabelMode"
|
|
25
24
|
:label-position="labelPosition"
|
|
25
|
+
:layout="layout"
|
|
26
26
|
:loading="loading"
|
|
27
|
-
:model-value="modelValue"
|
|
28
27
|
:name="name"
|
|
28
|
+
:passthrough="passthrough"
|
|
29
29
|
:readonly="readonly"
|
|
30
30
|
:reverse="reverse"
|
|
31
|
+
:show-asterisk="showAsterisk"
|
|
31
32
|
:show-hint="showHint"
|
|
32
33
|
:warnings="warnings"
|
|
34
|
+
v-bind="passthrough.forwardAttrs"
|
|
33
35
|
>
|
|
34
36
|
<template #label="data"><slot name="label" v-bind="data"></slot></template>
|
|
35
|
-
<template
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
<template v-if="$slots.description" #description="data"
|
|
38
|
+
><slot name="description" v-bind="data"></slot
|
|
39
|
+
></template>
|
|
40
|
+
<template
|
|
41
|
+
#input="{
|
|
42
|
+
id: fieldId,
|
|
43
|
+
hasErrors: fieldHasErrors,
|
|
44
|
+
hasWarnings: fieldHasWarnings,
|
|
45
|
+
ariaDescribedby,
|
|
46
|
+
ariaLabelledby,
|
|
47
|
+
}"
|
|
48
|
+
>
|
|
49
|
+
<CommonFieldInput
|
|
38
50
|
:append:icon="props['append:icon']"
|
|
39
|
-
|
|
40
|
-
:
|
|
41
|
-
|
|
42
|
-
|
|
51
|
+
class="bb-textarea__field"
|
|
52
|
+
:class="{
|
|
53
|
+
'bb-textarea__field--auto-grow': autoGrow,
|
|
54
|
+
}"
|
|
43
55
|
:clearable="clearable"
|
|
44
56
|
:compact="compact"
|
|
45
57
|
:disabled="disabled"
|
|
46
|
-
:has-errors="
|
|
47
|
-
:has-
|
|
58
|
+
:has-errors="fieldHasErrors"
|
|
59
|
+
:has-value="hasValue"
|
|
60
|
+
:has-warnings="fieldHasWarnings"
|
|
48
61
|
:loading="loading"
|
|
49
|
-
:
|
|
50
|
-
:name="name"
|
|
51
|
-
:placeholder="placeholder"
|
|
62
|
+
:passthrough="passthrough"
|
|
52
63
|
:prepend:icon="props['prepend:icon']"
|
|
53
64
|
:readonly="readonly"
|
|
54
|
-
:
|
|
55
|
-
:
|
|
56
|
-
|
|
65
|
+
:reserve-append-space="clearable"
|
|
66
|
+
:variant="variant"
|
|
67
|
+
@click:clear="emit('update:modelValue', emptyValue())"
|
|
57
68
|
>
|
|
58
|
-
<template #
|
|
59
|
-
<template #append><slot name="append" /></template>
|
|
69
|
+
<template #prepend:outer><slot name="prepend:outer"></slot></template>
|
|
60
70
|
<template #prepend><slot name="prepend" /></template>
|
|
61
|
-
<template #
|
|
62
|
-
<
|
|
63
|
-
|
|
64
|
-
|
|
71
|
+
<template v-if="$slots.prefix" #prefix><slot name="prefix" /></template>
|
|
72
|
+
<BbSmoothHeight :disabled="!autoGrow" tag="span">
|
|
73
|
+
<!-- eslint-disable vue/attributes-order -- `pt` binds LAST so a consumer listener runs after ours (PASSTHROUGH.md T17) -->
|
|
74
|
+
<textarea
|
|
75
|
+
:id="fieldId"
|
|
76
|
+
ref="textarea"
|
|
77
|
+
:aria-describedby="ariaDescribedby"
|
|
78
|
+
:aria-disabled="disabled || undefined"
|
|
79
|
+
:aria-invalid="fieldHasErrors || undefined"
|
|
80
|
+
:aria-labelledby="ariaLabelledby"
|
|
81
|
+
:aria-readonly="readonly || undefined"
|
|
82
|
+
:autocomplete="autocomplete"
|
|
83
|
+
:autofocus="autofocus"
|
|
84
|
+
class="bb-textarea__input scrollbar-border"
|
|
85
|
+
:disabled="disabled"
|
|
86
|
+
:name="name"
|
|
87
|
+
:placeholder="placeholder"
|
|
88
|
+
:readonly="readonly"
|
|
89
|
+
:required="fieldRequired"
|
|
90
|
+
:rows="rows"
|
|
91
|
+
:value="modelValueWithDefault"
|
|
92
|
+
@input="onInput"
|
|
93
|
+
@keydown="onKeydown"
|
|
94
|
+
v-bind="mergeProps(passthrough.controlAttrs, inputBindings)"
|
|
95
|
+
></textarea>
|
|
96
|
+
<!-- eslint-enable vue/attributes-order -->
|
|
97
|
+
</BbSmoothHeight>
|
|
98
|
+
<template #append><slot name="append" /></template>
|
|
99
|
+
<template v-if="$slots.suffix" #suffix><slot name="suffix" /></template>
|
|
100
|
+
<template #append:outer><slot name="append:outer"></slot></template>
|
|
101
|
+
</CommonFieldInput>
|
|
65
102
|
</template>
|
|
66
|
-
</
|
|
103
|
+
</CommonField>
|
|
67
104
|
</template>
|
|
68
105
|
|
|
69
106
|
<script setup lang="ts">
|
|
70
|
-
import {
|
|
71
|
-
import
|
|
72
|
-
import
|
|
73
|
-
|
|
107
|
+
import { removedPropsFor } from '@/deprecation/removedProps';
|
|
108
|
+
import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
|
|
109
|
+
import {
|
|
110
|
+
computed,
|
|
111
|
+
mergeProps,
|
|
112
|
+
nextTick,
|
|
113
|
+
onMounted,
|
|
114
|
+
ref,
|
|
115
|
+
useAttrs,
|
|
116
|
+
watch,
|
|
117
|
+
} from 'vue';
|
|
118
|
+
import { useResizeObserver } from '@vueuse/core';
|
|
119
|
+
import CommonField from '../CommonField/CommonField.vue';
|
|
120
|
+
import CommonFieldInput from '../CommonFieldInput/CommonFieldInput.vue';
|
|
121
|
+
import BbSmoothHeight from '../BbSmoothHeight/BbSmoothHeight.vue';
|
|
122
|
+
import { useConfig } from '@/composables/useConfig';
|
|
123
|
+
import { useFormBinding } from '@/composables/useFormBinding';
|
|
124
|
+
import {
|
|
125
|
+
formControlPtActive,
|
|
126
|
+
TEXT_CONTROL_NATIVE_ATTRS,
|
|
127
|
+
usePassthrough,
|
|
128
|
+
} from '@/composables/usePassthrough';
|
|
74
129
|
import { isNotEmpty } from '@/utilities/functions/isNotEmpty';
|
|
75
|
-
import
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
130
|
+
import {
|
|
131
|
+
BB_TEXTAREA_PT,
|
|
132
|
+
type BbTextareaProps,
|
|
133
|
+
type BbTextareaEvents,
|
|
134
|
+
type BbTextareaSlots,
|
|
79
135
|
} from './types';
|
|
80
|
-
export type { BbTextareaProps, BbTextareaEvents, BbTextareaSlots };
|
|
81
136
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const emit = defineEmits<BbTextareaEvents>();
|
|
137
|
+
defineOptions({ inheritAttrs: false });
|
|
138
|
+
const declaredProps = defineProps<BbTextareaProps>();
|
|
85
139
|
|
|
140
|
+
const declaredEmit = defineEmits<BbTextareaEvents>();
|
|
86
141
|
defineSlots<BbTextareaSlots>();
|
|
142
|
+
// Inside a BbForm the field joins it (Q54.4): `props` / `emit` are bound.
|
|
143
|
+
const {
|
|
144
|
+
props,
|
|
145
|
+
emit,
|
|
146
|
+
showAsterisk,
|
|
147
|
+
errors: fieldErrors,
|
|
148
|
+
required: fieldRequired,
|
|
149
|
+
} = useFormBinding(declaredProps, declaredEmit, {
|
|
150
|
+
componentName: 'BbTextarea',
|
|
151
|
+
identifierFallback: () => declaredProps.label,
|
|
152
|
+
leaveOn: 'blur',
|
|
153
|
+
});
|
|
154
|
+
if (process.env.NODE_ENV !== 'production')
|
|
155
|
+
warnRemovedAttrs('BbTextarea', removedPropsFor('BbTextarea'));
|
|
156
|
+
const config = useConfig();
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* What the field emits once emptied (typed empty or cleared): `null` by
|
|
160
|
+
* default, or `''` through `formControls.textareaNullValue`. Read per emit.
|
|
161
|
+
*/
|
|
162
|
+
const emptyValue = () => config.formControls?.textareaNullValue ?? null;
|
|
163
|
+
export type { BbTextareaProps, BbTextareaEvents, BbTextareaSlots };
|
|
87
164
|
|
|
88
165
|
const active = ref(false);
|
|
89
166
|
const showHint = computed(() => props.persistentHint || active.value);
|
|
90
|
-
const isClearable = computed(
|
|
91
|
-
() => Boolean(props.clearable) && isNotEmpty(props.modelValue)
|
|
92
|
-
);
|
|
93
167
|
const hasValue = computed(() => isNotEmpty(props.modelValue));
|
|
168
|
+
const isClearable = computed(() => Boolean(props.clearable) && hasValue.value);
|
|
94
169
|
// Same label-mode resolution as BbTextInput/BbNumberInput — honor the prop, else
|
|
95
170
|
// fall back to the library default.
|
|
96
171
|
const resolvedLabelMode = computed(
|
|
@@ -98,8 +173,97 @@ const resolvedLabelMode = computed(
|
|
|
98
173
|
);
|
|
99
174
|
|
|
100
175
|
/**
|
|
101
|
-
*
|
|
176
|
+
* Passthrough (plans/passthrough/BbTextarea.md). The frame binds `root` /
|
|
177
|
+
* `label` / `description` / `message` / `hint`, the box row binds `box` /
|
|
178
|
+
* `icon` / `spinner` / `prefix` / `suffix` / `clear`, and `input` lands on the
|
|
179
|
+
* native textarea below. `hasValue` follows this control's own notion of a
|
|
180
|
+
* value.
|
|
102
181
|
*/
|
|
182
|
+
const passthrough = usePassthrough({
|
|
183
|
+
component: 'BbTextarea',
|
|
184
|
+
attrs: useAttrs(),
|
|
185
|
+
controlAttrs: TEXT_CONTROL_NATIVE_ATTRS,
|
|
186
|
+
props,
|
|
187
|
+
parts: BB_TEXTAREA_PT.parts,
|
|
188
|
+
states: BB_TEXTAREA_PT.states,
|
|
189
|
+
active: formControlPtActive(props, () => hasValue.value),
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
// `rows` + `auto-grow` are compatible: `rows` seeds the starting/minimum height
|
|
193
|
+
// (a floor the field never shrinks below) and auto-grow expands from there. See
|
|
194
|
+
// computeTextareaHeight below.
|
|
195
|
+
|
|
196
|
+
const textarea = ref<HTMLTextAreaElement | null>(null);
|
|
197
|
+
|
|
198
|
+
// Allow modelvalue to be reset to null
|
|
199
|
+
const modelValueWithDefault = computed(() => props.modelValue ?? '');
|
|
200
|
+
onMounted(() => {
|
|
201
|
+
if (props.autoGrow) {
|
|
202
|
+
computeTextareaHeight();
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
watch(
|
|
206
|
+
() => props.modelValue,
|
|
207
|
+
() => {
|
|
208
|
+
if (props.autoGrow) {
|
|
209
|
+
nextTick(computeTextareaHeight);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
watch(
|
|
214
|
+
() => props.autoGrow,
|
|
215
|
+
(isAutoGrow) => {
|
|
216
|
+
if (isAutoGrow) {
|
|
217
|
+
nextTick(computeTextareaHeight);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
resetTextareaHeight();
|
|
222
|
+
}
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
// Re-measure only for EXTERNALLY caused resizes (container width change,
|
|
226
|
+
// zoom, font load). computeTextareaHeight itself resizes the element, so
|
|
227
|
+
// without the size check every keystroke's measure retriggered the observer
|
|
228
|
+
// into a second, redundant reset-and-measure pass.
|
|
229
|
+
useResizeObserver(textarea, () => {
|
|
230
|
+
if (!props.autoGrow) return;
|
|
231
|
+
if (lastMeasuredSize && textarea.value) {
|
|
232
|
+
const rect = textarea.value.getBoundingClientRect();
|
|
233
|
+
if (
|
|
234
|
+
Math.abs(rect.width - lastMeasuredSize.width) < 0.5 &&
|
|
235
|
+
Math.abs(rect.height - lastMeasuredSize.height) < 0.5
|
|
236
|
+
) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
computeTextareaHeight();
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
// `input` and `keydown` stop at the textarea (an Enter must not reach an
|
|
244
|
+
// ancestor's key handler); consumers receive only the component events.
|
|
245
|
+
// `input` is emitted BEFORE `update:modelValue`.
|
|
246
|
+
function onInput(event: Event): void {
|
|
247
|
+
event.stopPropagation();
|
|
248
|
+
if (event.target instanceof HTMLTextAreaElement) {
|
|
249
|
+
const value = event.target.value;
|
|
250
|
+
const normalizedValue = value === '' ? emptyValue() : value;
|
|
251
|
+
emit('input', event);
|
|
252
|
+
emit('update:modelValue', normalizedValue);
|
|
253
|
+
if (props.autoGrow) {
|
|
254
|
+
computeTextareaHeight();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
function onKeydown(event: KeyboardEvent): void {
|
|
259
|
+
event.stopPropagation();
|
|
260
|
+
if (event.target instanceof HTMLTextAreaElement) {
|
|
261
|
+
emit('keydown', event);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Native DOM events are re-emitted as component events; `focus` / `blur` also
|
|
266
|
+
// drive the hint. `input` and `keydown` are bound separately above.
|
|
103
267
|
const eventListeners = {
|
|
104
268
|
onBlur: (event: FocusEvent) => {
|
|
105
269
|
active.value = false;
|
|
@@ -111,8 +275,6 @@ const eventListeners = {
|
|
|
111
275
|
active.value = true;
|
|
112
276
|
emit('focus', event);
|
|
113
277
|
},
|
|
114
|
-
onInput: (event: Event) => emit('input', event),
|
|
115
|
-
onKeydown: (event: KeyboardEvent) => emit('keydown', event),
|
|
116
278
|
onKeyup: (event: KeyboardEvent) => emit('keyup', event),
|
|
117
279
|
onMousedown: (event: MouseEvent) => emit('mousedown', event),
|
|
118
280
|
onMouseup: (event: MouseEvent) => emit('mouseup', event),
|
|
@@ -120,9 +282,50 @@ const eventListeners = {
|
|
|
120
282
|
onCompositionstart: (event: CompositionEvent) =>
|
|
121
283
|
emit('compositionstart', event),
|
|
122
284
|
onCompositionend: (event: CompositionEvent) => emit('compositionend', event),
|
|
123
|
-
'onUpdate:modelValue': (value: string | null) =>
|
|
124
|
-
emit('update:modelValue', value),
|
|
125
285
|
};
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* The native control's whole `v-bind`: the listeners, then `pt:input` LAST —
|
|
289
|
+
* one object, because two `v-bind`s on one element are a duplicate attribute.
|
|
290
|
+
* `mergeProps` keeps the contract: a class appends, an attribute wins, a
|
|
291
|
+
* listener concatenates after ours.
|
|
292
|
+
*/
|
|
293
|
+
const inputBindings = computed(() =>
|
|
294
|
+
passthrough.input
|
|
295
|
+
? mergeProps(eventListeners, passthrough.input)
|
|
296
|
+
: eventListeners
|
|
297
|
+
);
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* The size this component last set/observed on the textarea, recorded after
|
|
301
|
+
* each measure. The ResizeObserver above compares against it so the resize
|
|
302
|
+
* event caused by our own height write doesn't trigger a second measure.
|
|
303
|
+
* Recorded via getBoundingClientRect — the same fractional CSS-pixel basis
|
|
304
|
+
* the comparison reads — and cleared when auto-grow releases the height.
|
|
305
|
+
*/
|
|
306
|
+
let lastMeasuredSize: { width: number; height: number } | null = null;
|
|
307
|
+
|
|
308
|
+
/*
|
|
309
|
+
Reset height then apply scroll height so the field tracks its content. With
|
|
310
|
+
`rows` set we reset to `auto` (not `0`) so the browser's rows-based height acts
|
|
311
|
+
as the minimum floor — the field grows past it but never shrinks below it.
|
|
312
|
+
Without `rows` we reset to `0` and the auto-grow `min-height` in index.css is
|
|
313
|
+
the floor: one line, BbTextInput's height.
|
|
314
|
+
*/
|
|
315
|
+
function computeTextareaHeight() {
|
|
316
|
+
if (!textarea.value) return;
|
|
317
|
+
textarea.value.style.height = props.rows ? 'auto' : '0px';
|
|
318
|
+
|
|
319
|
+
textarea.value.style.height = `${textarea.value.scrollHeight}px`;
|
|
320
|
+
const rect = textarea.value.getBoundingClientRect();
|
|
321
|
+
lastMeasuredSize = { width: rect.width, height: rect.height };
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
function resetTextareaHeight() {
|
|
325
|
+
if (!textarea.value) return;
|
|
326
|
+
textarea.value.style.removeProperty('height');
|
|
327
|
+
lastMeasuredSize = null;
|
|
328
|
+
}
|
|
126
329
|
</script>
|
|
127
330
|
|
|
128
331
|
<style lang="postcss">
|
|
@@ -133,15 +336,56 @@ const eventListeners = {
|
|
|
133
336
|
## Types
|
|
134
337
|
|
|
135
338
|
```ts
|
|
339
|
+
import type { InputVariantType } from '@/types/InputVariant';
|
|
136
340
|
import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
|
|
137
|
-
import type {
|
|
341
|
+
import type { FieldLayout } from '@/types/FieldLayout';
|
|
138
342
|
import type { IconType } from '@/types/Icon';
|
|
139
|
-
import
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
343
|
+
import {
|
|
344
|
+
FORM_CONTROL_PT_STATES,
|
|
345
|
+
TEXT_CONTROL_PT_PARTS,
|
|
346
|
+
type FormControlPtState,
|
|
347
|
+
type PtMap,
|
|
348
|
+
type PtValue,
|
|
349
|
+
type TextControlPtPart,
|
|
350
|
+
} from '@/types/passthrough';
|
|
351
|
+
import type { FormFieldProps } from '@/composables/useFormBinding';
|
|
143
352
|
|
|
353
|
+
/**
|
|
354
|
+
* Passthrough parts of `BbTextarea` (plans/passthrough/BbTextarea.md) — the form-control
|
|
355
|
+
* family vocabulary: `root` (the container), `label`, `description`, `message`, `hint`
|
|
356
|
+
* (the errors / warnings region), `box` (the bordered box), `input` (the
|
|
357
|
+
* native control), `icon` (the prepend + append content icons — a broadcast;
|
|
358
|
+
* the clear button and the error / warning glyphs are chrome), `spinner`
|
|
359
|
+
* (the spinner shown while `loading`),
|
|
360
|
+
* `prefix`, `suffix`.
|
|
361
|
+
*/
|
|
362
|
+
export type BbTextareaPtPart = TextControlPtPart;
|
|
363
|
+
/** Passthrough states of `BbTextarea`: the family's six, true while the matching `--` modifier is on. */
|
|
364
|
+
export type BbTextareaPtState = FormControlPtState;
|
|
365
|
+
/** The runtime lists the resolver is wired with — kept next to the types so the two cannot drift. */
|
|
366
|
+
export const BB_TEXTAREA_PT = {
|
|
367
|
+
parts: TEXT_CONTROL_PT_PARTS,
|
|
368
|
+
states: FORM_CONTROL_PT_STATES,
|
|
369
|
+
} as const satisfies {
|
|
370
|
+
parts: readonly BbTextareaPtPart[];
|
|
371
|
+
states: readonly BbTextareaPtState[];
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
// The passthrough props are a mapped type written INLINE with this
|
|
375
|
+
// component's own unions (Vue's SFC type resolver does not substitute a
|
|
376
|
+
// generic alias's type parameters — plans/PASSTHROUGH.md T20); the test
|
|
377
|
+
// asserts the resolved prop names.
|
|
378
|
+
// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style
|
|
144
379
|
export type BbTextareaProps = {
|
|
380
|
+
[K in
|
|
381
|
+
| `pt:${BbTextareaPtPart}`
|
|
382
|
+
| `pt:${BbTextareaPtPart}:${BbTextareaPtState}`]?: PtValue;
|
|
383
|
+
} & {
|
|
384
|
+
/**
|
|
385
|
+
* Passthrough, object form: `{ box: '…', 'box:errors': '…' }` — the same
|
|
386
|
+
* keys as the `pt:*` attributes without the prefix. See the `pt:<part>` row.
|
|
387
|
+
*/
|
|
388
|
+
pt?: PtMap<BbTextareaPtPart, BbTextareaPtState>;
|
|
145
389
|
/**
|
|
146
390
|
* Name of the icon to be added at the end of the input.
|
|
147
391
|
*/
|
|
@@ -159,7 +403,8 @@ export type BbTextareaProps = {
|
|
|
159
403
|
autofocus?: InputHTMLAttributes['autofocus'];
|
|
160
404
|
|
|
161
405
|
/**
|
|
162
|
-
* Expands the textarea to match its content.
|
|
406
|
+
* Expands the textarea to match its content. Empty, it is one BbTextInput
|
|
407
|
+
* tall (text on the same line); it never shrinks below that, or below `rows`.
|
|
163
408
|
*/
|
|
164
409
|
autoGrow?: boolean;
|
|
165
410
|
|
|
@@ -169,10 +414,32 @@ export type BbTextareaProps = {
|
|
|
169
414
|
clearable?: boolean;
|
|
170
415
|
|
|
171
416
|
/**
|
|
172
|
-
*
|
|
417
|
+
* Compact density. Swaps `--bb-input-h`, `--bb-input-py` and
|
|
418
|
+
* `--bb-label-spacing-y` for their `-compact` twins on the field, so a
|
|
419
|
+
* `--bb-input-h` you set on the component is ignored while `compact` is on:
|
|
420
|
+
* size a compact field with `--bb-input-h-compact` (and
|
|
421
|
+
* `--bb-input-py-compact`) instead.
|
|
173
422
|
*/
|
|
174
423
|
compact?: boolean;
|
|
175
424
|
|
|
425
|
+
/**
|
|
426
|
+
* Visual variant of the field box — the same names and tokens as the
|
|
427
|
+
* `BbButton` variants. Colours only: height, padding and border width are
|
|
428
|
+
* identical across variants, so a form never reflows when one changes.
|
|
429
|
+
* `'ghost'` has no border in any state (errors and warnings show through
|
|
430
|
+
* the icon and the messages); every variant keeps the focus ring.
|
|
431
|
+
* Register extra names with the plugin's `inputVariants` option.
|
|
432
|
+
*
|
|
433
|
+
* `'none'` is a blank starting point: the field keeps its structure and
|
|
434
|
+
* behaviour but takes no look, so your own classes don't fight a built-in
|
|
435
|
+
* one. You then own hover, focus, disabled and the error / warning states.
|
|
436
|
+
* Fine for a one-off; keep inline styling short, and register a real
|
|
437
|
+
* variant (`inputVariants`) when the look recurs.
|
|
438
|
+
*
|
|
439
|
+
* @defaultValue `'outline'`
|
|
440
|
+
*/
|
|
441
|
+
variant?: InputVariantType;
|
|
442
|
+
|
|
176
443
|
/**
|
|
177
444
|
* Descriptive text displayed below the label and above the input. Unlike the hint it is always
|
|
178
445
|
* visible, and it is linked to the input via `aria-describedby` (after any
|
|
@@ -181,10 +448,12 @@ export type BbTextareaProps = {
|
|
|
181
448
|
description?: string;
|
|
182
449
|
|
|
183
450
|
/**
|
|
184
|
-
*
|
|
185
|
-
*
|
|
451
|
+
* How the label and the input sit together: `'vertical'`, `'horizontal'` (50/50),
|
|
452
|
+
* `'auto'`, `'label-fill'` (the label takes the free space, the input keeps
|
|
453
|
+
* its size), `'input-fill'` (the other way round), or a two-word ratio
|
|
454
|
+
* pattern like `'xx xxxxx'`.
|
|
186
455
|
*/
|
|
187
|
-
|
|
456
|
+
layout?: FieldLayout;
|
|
188
457
|
|
|
189
458
|
/**
|
|
190
459
|
* Disables the component.
|
|
@@ -219,7 +488,7 @@ export type BbTextareaProps = {
|
|
|
219
488
|
* Define if the component should be in a warning state.
|
|
220
489
|
* Same chrome as errors with `--bb-warn`; errors take priority.
|
|
221
490
|
*/
|
|
222
|
-
|
|
491
|
+
hasWarnings?: boolean;
|
|
223
492
|
|
|
224
493
|
/**
|
|
225
494
|
* Visually hides the label of the input while maintaining accessibility.
|
|
@@ -232,7 +501,8 @@ export type BbTextareaProps = {
|
|
|
232
501
|
hint?: string;
|
|
233
502
|
|
|
234
503
|
/**
|
|
235
|
-
* The
|
|
504
|
+
* The `id` of the native control; the label's `for` and the description
|
|
505
|
+
* and message ids derive from it. Generated when omitted.
|
|
236
506
|
*/
|
|
237
507
|
id?: HTMLAttributes['id'];
|
|
238
508
|
|
|
@@ -260,7 +530,7 @@ export type BbTextareaProps = {
|
|
|
260
530
|
/**
|
|
261
531
|
* Used by v-model.
|
|
262
532
|
*/
|
|
263
|
-
modelValue
|
|
533
|
+
modelValue?: string | null;
|
|
264
534
|
|
|
265
535
|
/**
|
|
266
536
|
* Defines the name of the input.
|
|
@@ -303,10 +573,75 @@ export type BbTextareaProps = {
|
|
|
303
573
|
* Sets the number of visible text lines for the control.
|
|
304
574
|
*/
|
|
305
575
|
rows?: string | number;
|
|
576
|
+
} & FormFieldProps<string | null>;
|
|
577
|
+
|
|
578
|
+
export type BbTextareaEvents = {
|
|
579
|
+
/**
|
|
580
|
+
* Emitted when the native textarea loses focus.
|
|
581
|
+
* Forwards the original DOM `FocusEvent`.
|
|
582
|
+
*/
|
|
583
|
+
(e: 'blur', event: FocusEvent): void;
|
|
584
|
+
/**
|
|
585
|
+
* Emitted when the native textarea fires a change event.
|
|
586
|
+
* Forwards the original DOM `Event`.
|
|
587
|
+
*/
|
|
588
|
+
(e: 'change', event: Event): void;
|
|
589
|
+
/**
|
|
590
|
+
* Emitted when the textarea receives a click interaction.
|
|
591
|
+
* Forwards the original DOM `MouseEvent`.
|
|
592
|
+
*/
|
|
593
|
+
(e: 'click', event: MouseEvent): void;
|
|
594
|
+
/**
|
|
595
|
+
* Emitted when the native textarea gains focus.
|
|
596
|
+
* Forwards the original DOM `FocusEvent`.
|
|
597
|
+
*/
|
|
598
|
+
(e: 'focus', event: FocusEvent): void;
|
|
599
|
+
/**
|
|
600
|
+
* Emitted on native input events from the textarea.
|
|
601
|
+
* Forwards the original DOM `Event`.
|
|
602
|
+
*/
|
|
603
|
+
(e: 'input', event: Event): void;
|
|
604
|
+
/**
|
|
605
|
+
* Emitted for keyboard interaction on the textarea.
|
|
606
|
+
* Forwards the original DOM `KeyboardEvent`.
|
|
607
|
+
*/
|
|
608
|
+
(e: 'keydown', event: KeyboardEvent): void;
|
|
609
|
+
/**
|
|
610
|
+
* Emitted for keyboard interaction on the textarea.
|
|
611
|
+
* Forwards the original DOM `KeyboardEvent`.
|
|
612
|
+
*/
|
|
613
|
+
(e: 'keyup', event: KeyboardEvent): void;
|
|
614
|
+
/**
|
|
615
|
+
* Emitted when a pointing device button is pressed over the textarea.
|
|
616
|
+
* Forwards the original DOM `MouseEvent`.
|
|
617
|
+
*/
|
|
618
|
+
(e: 'mousedown', event: MouseEvent): void;
|
|
619
|
+
/**
|
|
620
|
+
* Emitted when a pointing device button is released over the textarea.
|
|
621
|
+
* Forwards the original DOM `MouseEvent`.
|
|
622
|
+
*/
|
|
623
|
+
(e: 'mouseup', event: MouseEvent): void;
|
|
624
|
+
/** Native clipboard paste. Forwards the original DOM `ClipboardEvent`. */
|
|
625
|
+
(e: 'paste', event: ClipboardEvent): void;
|
|
626
|
+
/** An IME composition started. Forwards the original DOM `CompositionEvent`. */
|
|
627
|
+
(e: 'compositionstart', event: CompositionEvent): void;
|
|
628
|
+
/** An IME composition ended. Forwards the original DOM `CompositionEvent`. */
|
|
629
|
+
(e: 'compositionend', event: CompositionEvent): void;
|
|
630
|
+
/**
|
|
631
|
+
* Emitted when the value changes. Carries the new text or `null` when cleared.
|
|
632
|
+
*/
|
|
633
|
+
(e: 'update:modelValue', value: string | null): void;
|
|
306
634
|
};
|
|
307
635
|
|
|
308
|
-
/**
|
|
309
|
-
export type
|
|
636
|
+
/** Props exposed by the `description` slot. */
|
|
637
|
+
export type BbTextareaDescriptionSlotProps = {
|
|
638
|
+
/** The `description` prop value (empty when only the slot is provided). */
|
|
639
|
+
text: string;
|
|
640
|
+
/** Whether the field is in an error state. */
|
|
641
|
+
hasErrors: boolean;
|
|
642
|
+
/** Whether the field is in a warning state (suppressed when errors win). */
|
|
643
|
+
hasWarnings: boolean;
|
|
644
|
+
};
|
|
310
645
|
|
|
311
646
|
/** Props exposed by the `label` slot. */
|
|
312
647
|
export type BbTextareaLabelSlotProps = {
|
|
@@ -315,14 +650,43 @@ export type BbTextareaLabelSlotProps = {
|
|
|
315
650
|
/** Whether the textarea is in an error state. */
|
|
316
651
|
hasErrors: boolean;
|
|
317
652
|
/** Whether the textarea is in a warning state (suppressed when errors win). */
|
|
318
|
-
|
|
653
|
+
hasWarnings: boolean;
|
|
319
654
|
};
|
|
320
655
|
|
|
321
|
-
export type BbTextareaSlots =
|
|
656
|
+
export type BbTextareaSlots = {
|
|
657
|
+
/**
|
|
658
|
+
* Content rendered before the entire textarea control, outside the input chrome.
|
|
659
|
+
*/
|
|
660
|
+
'prepend:outer'?: (props: Record<string, never>) => any;
|
|
661
|
+
/**
|
|
662
|
+
* Content rendered before the textarea, at the start of the inner container.
|
|
663
|
+
*/
|
|
664
|
+
prepend?: (props: Record<string, never>) => any;
|
|
665
|
+
/**
|
|
666
|
+
* Content rendered after the textarea, at the end of the inner container.
|
|
667
|
+
*/
|
|
668
|
+
append?: (props: Record<string, never>) => any;
|
|
669
|
+
/**
|
|
670
|
+
* Content rendered after the entire textarea control, outside the input chrome.
|
|
671
|
+
*/
|
|
672
|
+
'append:outer'?: (props: Record<string, never>) => any;
|
|
673
|
+
/**
|
|
674
|
+
* Inline content rendered at the start of the textarea field area, before the text.
|
|
675
|
+
*/
|
|
676
|
+
prefix?: (props: Record<string, never>) => any;
|
|
677
|
+
/**
|
|
678
|
+
* Inline content rendered at the end of the textarea field area, after the text.
|
|
679
|
+
*/
|
|
680
|
+
suffix?: (props: Record<string, never>) => any;
|
|
322
681
|
/**
|
|
323
682
|
* Replaces the default label text rendered above the textarea.
|
|
324
683
|
*/
|
|
325
684
|
label?: (props: BbTextareaLabelSlotProps) => any;
|
|
685
|
+
/**
|
|
686
|
+
* Replaces the description text. Provided alone (no `description` prop) it still
|
|
687
|
+
* renders the description region and wires it into `aria-describedby`.
|
|
688
|
+
*/
|
|
689
|
+
description?: (props: BbTextareaDescriptionSlotProps) => any;
|
|
326
690
|
};
|
|
327
691
|
```
|
|
328
692
|
|
|
@@ -330,8 +694,129 @@ export type BbTextareaSlots = BaseTextareaSlots & {
|
|
|
330
694
|
|
|
331
695
|
```css
|
|
332
696
|
.bb-textarea {
|
|
333
|
-
|
|
697
|
+
/* The box row (`.bb-field-input`) carries the textarea's tokens and scopes
|
|
698
|
+
the rules below, so the compact override can compound with the row's own
|
|
699
|
+
`--compact` modifier on the same node. */
|
|
700
|
+
&__field {
|
|
701
|
+
--min-height: 150px; /* height of the box when the consumer gives no `rows` */
|
|
702
|
+
/* The first text row's height: the tallest of one line plus its vertical
|
|
703
|
+
padding, the input height less its borders, and the icon box. */
|
|
704
|
+
--inner-h: max(
|
|
705
|
+
calc(var(--bb-leading) + var(--bb-input-py) * 2),
|
|
706
|
+
calc(var(--bb-input-h) - 2px),
|
|
707
|
+
var(--bb-input-icon)
|
|
708
|
+
);
|
|
709
|
+
/* Top offset that centres the icons, affixes, spinner and clear button on
|
|
710
|
+
that first row — the shell top-aligns them for a textarea. */
|
|
711
|
+
--floating-py: calc((var(--inner-h) - var(--bb-input-icon)) / 2);
|
|
712
|
+
|
|
713
|
+
&.bb-field-input--compact {
|
|
714
|
+
--floating-py: calc(
|
|
715
|
+
(var(--bb-input-h-compact) - var(--bb-input-icon)) / 2
|
|
716
|
+
);
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
.bb-smooth-height {
|
|
720
|
+
align-self: center;
|
|
721
|
+
flex: 1 1 auto;
|
|
722
|
+
text-align: left;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
.bb-field-input__box {
|
|
726
|
+
align-items: flex-start;
|
|
727
|
+
.bb-clearable-button {
|
|
728
|
+
margin-top: var(--floating-py);
|
|
729
|
+
}
|
|
730
|
+
.bb-spinner {
|
|
731
|
+
margin-top: var(--floating-py);
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
.bb-error-icon,
|
|
735
|
+
.bb-warning-icon {
|
|
736
|
+
margin-top: var(--floating-py);
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
.bb-field-input__prepend-icon,
|
|
740
|
+
.bb-field-input__append-icon {
|
|
741
|
+
margin-top: var(--floating-py);
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
.bb-field-input__prefix,
|
|
745
|
+
.bb-field-input__suffix {
|
|
746
|
+
align-items: flex-start;
|
|
747
|
+
padding-top: var(--floating-py);
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
&__input {
|
|
753
|
+
background-color: transparent;
|
|
754
|
+
outline: none;
|
|
755
|
+
padding-top: calc((var(--bb-input-h) - (var(--bb-input-fs) * 2.35)) / 2);
|
|
756
|
+
resize: vertical;
|
|
334
757
|
width: 100%;
|
|
758
|
+
|
|
759
|
+
&:not([rows]) {
|
|
760
|
+
min-height: var(--min-height);
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
&::-webkit-resizer {
|
|
764
|
+
background:
|
|
765
|
+
linear-gradient(
|
|
766
|
+
135deg,
|
|
767
|
+
transparent 48%,
|
|
768
|
+
var(--bb-border) 48% 56%,
|
|
769
|
+
transparent 56%
|
|
770
|
+
),
|
|
771
|
+
linear-gradient(
|
|
772
|
+
135deg,
|
|
773
|
+
transparent 62%,
|
|
774
|
+
var(--bb-border) 62% 70%,
|
|
775
|
+
transparent 70%
|
|
776
|
+
);
|
|
777
|
+
background-position: right 2px bottom 2px;
|
|
778
|
+
background-repeat: no-repeat;
|
|
779
|
+
background-size: 12px 12px;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
&:hover::-webkit-resizer {
|
|
783
|
+
background:
|
|
784
|
+
linear-gradient(
|
|
785
|
+
135deg,
|
|
786
|
+
transparent 48%,
|
|
787
|
+
var(--bb-primary) 48% 56%,
|
|
788
|
+
transparent 56%
|
|
789
|
+
),
|
|
790
|
+
linear-gradient(
|
|
791
|
+
135deg,
|
|
792
|
+
transparent 62%,
|
|
793
|
+
var(--bb-primary) 62% 70%,
|
|
794
|
+
transparent 70%
|
|
795
|
+
);
|
|
796
|
+
background-position: right 2px bottom 2px;
|
|
797
|
+
background-repeat: no-repeat;
|
|
798
|
+
background-size: 12px 12px;
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
/* Auto-grow starts at BbTextInput's exact height and text position (Q49.11):
|
|
804
|
+
the textarea fills the shell's inner row (`--bb-input-h` less the borders
|
|
805
|
+
and the vertical margins), and a known line box lets the padding centre one
|
|
806
|
+
line in it the way the input centres its text. It grows a line at a time
|
|
807
|
+
and shrinks back to this floor, never below; `rows` still starts taller. */
|
|
808
|
+
.bb-textarea__field--auto-grow {
|
|
809
|
+
.bb-textarea__input {
|
|
810
|
+
--row-h: calc(
|
|
811
|
+
var(--bb-input-h) - var(--bb-border-w) * 2 - var(--bb-input-py) * 2
|
|
812
|
+
);
|
|
813
|
+
line-height: var(--bb-leading);
|
|
814
|
+
min-height: var(--row-h);
|
|
815
|
+
padding-bottom: max(0px, calc((var(--row-h) - var(--bb-leading)) / 2));
|
|
816
|
+
padding-top: max(0px, calc((var(--row-h) - var(--bb-leading)) / 2));
|
|
817
|
+
resize: none;
|
|
818
|
+
/* No baseline gap under it inside BbSmoothHeight's inline wrapper. */
|
|
819
|
+
vertical-align: top;
|
|
335
820
|
}
|
|
336
821
|
}
|
|
337
822
|
```
|