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/BbPopover.md
CHANGED
|
@@ -1,592 +1,629 @@
|
|
|
1
1
|
# BbPopover
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Agent Contract
|
|
4
|
+
|
|
5
|
+
- Safety level: **Consumer API**
|
|
6
|
+
- Group: **Overlay**
|
|
7
|
+
- Description: Anchors floating content to reference elements.
|
|
8
|
+
- Usage rule: Prefer this component for consumer-facing implementations.
|
|
9
|
+
- Implementation source (only when the contract below is not enough): [source/BbPopover.md](./source/BbPopover.md)
|
|
10
|
+
|
|
11
|
+
## Usage & Guidelines
|
|
12
|
+
|
|
13
|
+
### When to use
|
|
14
|
+
|
|
15
|
+
Reach for `BbPopover` when you need a **small floating panel with interactive
|
|
16
|
+
content** anchored to a trigger: a quick-settings form, a notifications list, a
|
|
17
|
+
mini picker, an inline detail card. It opens on click and stays open — the user
|
|
18
|
+
can click, type, and toggle inside it — dismissing only on an outside click or
|
|
19
|
+
`Escape`.
|
|
20
|
+
|
|
21
|
+
Pick a sibling when the shape is more specific:
|
|
22
|
+
|
|
23
|
+
- A one-line non-interactive hint on hover/focus → `BbTooltip`. Richer field
|
|
24
|
+
help with links or actions still belongs in a popover (see below).
|
|
25
|
+
- A standard list of actions (a menu) → `BbDropdown`.
|
|
26
|
+
- A searchable option list bound to a value → `BbSelect` / `BbSelectPopover`.
|
|
27
|
+
- A focused, page-blocking task → `BbDialog`; supplementary side content →
|
|
28
|
+
`BbOffCanvas`.
|
|
29
|
+
|
|
30
|
+
`BbPopover` is a lightweight floating panel, **not** a blocking modal: it does
|
|
31
|
+
not dim or lock the page, and an outside click dismisses it. If the surface must
|
|
32
|
+
own the user's attention until resolved, that is `BbDialog`.
|
|
33
|
+
|
|
34
|
+
### Activator and content
|
|
35
|
+
|
|
36
|
+
Render your trigger in the `activator` slot and **spread its `props`** onto the
|
|
37
|
+
element — that is the whole contract. `props` carries the accessibility
|
|
38
|
+
attributes (`aria-expanded`, `aria-controls`, `aria-haspopup="dialog"`), the
|
|
39
|
+
element `id`, the `disabled` state, the positioning `ref`, and the open/close
|
|
40
|
+
handler for whichever `trigger` is active. Miss the spread and the popover has
|
|
41
|
+
no anchor and no way to open.
|
|
42
|
+
|
|
43
|
+
The `activator` slot scope also exposes `isOpen`, `placement` and `disabled` so
|
|
44
|
+
the trigger can react (rotate a chevron, swap a label). The `default` slot
|
|
45
|
+
receives `close` (plus `open`, `placement`, `disabled`) so controls inside can
|
|
46
|
+
dismiss the panel.
|
|
47
|
+
|
|
48
|
+
**Quick display settings**
|
|
4
49
|
|
|
5
50
|
```vue
|
|
6
51
|
<template>
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
name="activator"
|
|
10
|
-
v-bind="{
|
|
11
|
-
props: activatorProps,
|
|
12
|
-
disabled: !!disabled,
|
|
13
|
-
isOpen,
|
|
14
|
-
placement,
|
|
15
|
-
}"
|
|
16
|
-
/>
|
|
17
|
-
|
|
18
|
-
<CommonPopover
|
|
19
|
-
:id="popoverId"
|
|
20
|
-
ref="popoverRef"
|
|
21
|
-
v-model="isOpen"
|
|
22
|
-
:anchor="effectiveAnchor"
|
|
23
|
-
:aria-labelledby="hasOpenedOnce ? activatorId : undefined"
|
|
24
|
-
:arrow-padding="arrowPadding"
|
|
25
|
-
:boundary="boundary"
|
|
26
|
-
class="bb-popover"
|
|
27
|
-
:class="`bb-popover--${theme}`"
|
|
28
|
-
dialog
|
|
29
|
-
:eager="eager"
|
|
30
|
-
:offset="offset"
|
|
31
|
-
:hide-arrow="placement === 'cursor'"
|
|
32
|
-
:padding="padding"
|
|
33
|
-
:placement="placement === 'cursor' ? 'bottom-start' : placement"
|
|
34
|
-
:scrollable="scrollable"
|
|
35
|
-
:style="{ width: parsedWidth }"
|
|
36
|
-
:transition-duration="transitionDuration"
|
|
37
|
-
v-bind="$attrs"
|
|
52
|
+
<div
|
|
53
|
+
class="flex max-w-sm items-center justify-between gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
38
54
|
>
|
|
39
|
-
<
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
viewBox="0 0 24 24"
|
|
50
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
55
|
+
<div class="min-w-0">
|
|
56
|
+
<p class="truncate text-sm font-medium">Invoices</p>
|
|
57
|
+
<p class="truncate text-xs text-gray-500">24 open · last synced 2m ago</p>
|
|
58
|
+
</div>
|
|
59
|
+
<BbPopover :width="240">
|
|
60
|
+
<template #activator="{ props }">
|
|
61
|
+
<BbButton
|
|
62
|
+
v-bind="props"
|
|
63
|
+
prepend:icon="lucide:sliders-horizontal"
|
|
64
|
+
variant="outline"
|
|
51
65
|
>
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
66
|
+
Display
|
|
67
|
+
</BbButton>
|
|
68
|
+
</template>
|
|
69
|
+
<template #default>
|
|
70
|
+
<div class="grid gap-3">
|
|
71
|
+
<BbSwitch v-model="compact" label="Compact rows" />
|
|
72
|
+
<BbSwitch v-model="avatars" label="Show avatars" />
|
|
73
|
+
</div>
|
|
74
|
+
</template>
|
|
75
|
+
</BbPopover>
|
|
76
|
+
</div>
|
|
77
|
+
</template>
|
|
78
|
+
|
|
79
|
+
<script setup lang="ts">
|
|
80
|
+
import { ref } from 'vue';
|
|
81
|
+
import { BbButton, BbPopover, BbSwitch } from 'bitboss-ui';
|
|
82
|
+
|
|
83
|
+
const compact = ref(true);
|
|
84
|
+
const avatars = ref(false);
|
|
85
|
+
</script>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### A mini-form popover
|
|
89
|
+
|
|
90
|
+
The most common interactive popover is a small form that commits on save and
|
|
91
|
+
uses the slot's `close` to dismiss. Keep the primary action gated on validity,
|
|
92
|
+
keep Cancel always live, and close only after the write. This companion renames
|
|
93
|
+
a record and closes itself on save via the `close` callback.
|
|
94
|
+
|
|
95
|
+
**Rename in a popover**
|
|
96
|
+
|
|
97
|
+
```vue
|
|
98
|
+
<template>
|
|
99
|
+
<div
|
|
100
|
+
class="flex max-w-sm items-center justify-between gap-2 rounded-[var(--bb-radius)] border p-3"
|
|
101
|
+
>
|
|
102
|
+
<div class="min-w-0">
|
|
103
|
+
<p class="truncate text-sm font-medium">{{ name }}</p>
|
|
104
|
+
<p class="truncate text-xs text-gray-500">Shared report · edited today</p>
|
|
105
|
+
</div>
|
|
106
|
+
<BbPopover :width="260">
|
|
107
|
+
<template #activator="{ props }">
|
|
108
|
+
<BbButton
|
|
109
|
+
v-bind="props"
|
|
110
|
+
aria-label="Rename"
|
|
111
|
+
icon="lucide:pencil"
|
|
112
|
+
size="sm"
|
|
113
|
+
variant="ghost"
|
|
114
|
+
/>
|
|
115
|
+
</template>
|
|
116
|
+
<template #default="{ close }">
|
|
117
|
+
<form class="grid gap-3" @submit.prevent="() => save(close)">
|
|
118
|
+
<BbTextInput
|
|
119
|
+
v-model="draft"
|
|
120
|
+
compact
|
|
121
|
+
label="Name"
|
|
122
|
+
placeholder="Report name"
|
|
57
123
|
/>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
124
|
+
<div class="flex justify-end gap-2">
|
|
125
|
+
<BbButton type="button" variant="ghost" @click="close">
|
|
126
|
+
Cancel
|
|
127
|
+
</BbButton>
|
|
128
|
+
<BbButton :disabled="!draft.trim()" type="submit" variant="primary">
|
|
129
|
+
Save
|
|
130
|
+
</BbButton>
|
|
131
|
+
</div>
|
|
132
|
+
</form>
|
|
133
|
+
</template>
|
|
134
|
+
</BbPopover>
|
|
135
|
+
</div>
|
|
68
136
|
</template>
|
|
69
137
|
|
|
70
138
|
<script setup lang="ts">
|
|
71
|
-
import {
|
|
72
|
-
import {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
BbPopoverSlots,
|
|
84
|
-
PopoverTrigger,
|
|
85
|
-
} from './types';
|
|
86
|
-
|
|
87
|
-
const props = withDefaults(defineProps<BbPopoverProps>(), {
|
|
88
|
-
arrowPadding: 10,
|
|
89
|
-
offset: 3,
|
|
90
|
-
padding: 10,
|
|
91
|
-
placement: 'bottom',
|
|
92
|
-
restoreFocus: true,
|
|
93
|
-
scrollable: false,
|
|
94
|
-
showClose: true,
|
|
95
|
-
theme: 'default',
|
|
96
|
-
transitionDuration: 300,
|
|
97
|
-
trigger: 'click',
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
const emit = defineEmits<BbPopoverEvents>();
|
|
101
|
-
|
|
102
|
-
defineSlots<BbPopoverSlots>();
|
|
103
|
-
|
|
104
|
-
defineOptions({ inheritAttrs: false });
|
|
105
|
-
|
|
106
|
-
// --- Core state ---
|
|
107
|
-
|
|
108
|
-
const { t } = useLocale();
|
|
109
|
-
const { id } = useId();
|
|
110
|
-
const activatorId = props.id ?? id.value;
|
|
111
|
-
const popoverId = `bbp_${activatorId}`;
|
|
112
|
-
|
|
113
|
-
const activatorEl = ref<HTMLElement>();
|
|
114
|
-
const popoverRef = useTemplateRef('popoverRef');
|
|
115
|
-
const popoverEl = computed(() => extractDomContainer(popoverRef.value));
|
|
116
|
-
|
|
117
|
-
const isOpen = defineModel<boolean>({ default: false });
|
|
118
|
-
const hasOpenedOnce = useUntil(isOpen);
|
|
119
|
-
const hasExternalActivator = computed(() => props.activator != null);
|
|
120
|
-
|
|
121
|
-
const triggers = computed(() => {
|
|
122
|
-
const raw = props.trigger;
|
|
123
|
-
return new Set(Array.isArray(raw) ? raw : [raw]);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
const createVirtualElement = (x: number, y: number) => ({
|
|
127
|
-
getBoundingClientRect: () => ({
|
|
128
|
-
x,
|
|
129
|
-
y,
|
|
130
|
-
width: 0,
|
|
131
|
-
height: 0,
|
|
132
|
-
top: y,
|
|
133
|
-
left: x,
|
|
134
|
-
right: x,
|
|
135
|
-
bottom: y,
|
|
136
|
-
toJSON() {
|
|
137
|
-
return this;
|
|
138
|
-
},
|
|
139
|
-
}),
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
const cursorAnchor = ref<ReturnType<typeof createVirtualElement> | null>(null);
|
|
143
|
-
|
|
144
|
-
const effectiveAnchor = computed(() =>
|
|
145
|
-
props.placement === 'cursor' && cursorAnchor.value
|
|
146
|
-
? cursorAnchor.value
|
|
147
|
-
: activatorEl.value
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
// --- Long-press (mobile equivalent of contextMenu) ---
|
|
151
|
-
|
|
152
|
-
const LONG_PRESS_DELAY = 500;
|
|
153
|
-
const LONG_PRESS_MOVE_THRESHOLD = 10;
|
|
154
|
-
let longPressTimer: ReturnType<typeof setTimeout> | undefined;
|
|
155
|
-
let longPressOrigin: { x: number; y: number } | null = null;
|
|
156
|
-
let longPressTriggered = false;
|
|
157
|
-
|
|
158
|
-
const clearLongPress = () => {
|
|
159
|
-
clearTimeout(longPressTimer);
|
|
160
|
-
longPressOrigin = null;
|
|
139
|
+
import { ref } from 'vue';
|
|
140
|
+
import { BbButton, BbPopover, BbTextInput } from 'bitboss-ui';
|
|
141
|
+
|
|
142
|
+
const name = ref('Q3 report');
|
|
143
|
+
const draft = ref(name.value);
|
|
144
|
+
|
|
145
|
+
/** Commit the draft name, then dismiss via the slot `close`. */
|
|
146
|
+
const save = (close: () => void) => {
|
|
147
|
+
const next = draft.value.trim();
|
|
148
|
+
if (!next) return;
|
|
149
|
+
name.value = next;
|
|
150
|
+
close();
|
|
161
151
|
};
|
|
152
|
+
</script>
|
|
153
|
+
```
|
|
162
154
|
|
|
163
|
-
|
|
155
|
+
### An anchored profile card
|
|
164
156
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
157
|
+
The read-only counterpart is a **detail card** anchored to an identity — click a
|
|
158
|
+
member's name in a comment or an activity feed and see who they are without
|
|
159
|
+
leaving the page (the GitHub-hovercard pattern, click-triggered here because a
|
|
160
|
+
popover opens on click). `placement="bottom-start"` aligns the card's edge with
|
|
161
|
+
the name, and the panel is pure content: any navigation ("View profile") is an
|
|
162
|
+
`href`, never an `@click`.
|
|
168
163
|
|
|
169
|
-
|
|
170
|
-
const active = triggers.value;
|
|
171
|
-
return {
|
|
172
|
-
'aria-expanded': hasOpenedOnce.value ? isOpen.value : undefined,
|
|
173
|
-
'aria-controls': hasOpenedOnce.value ? popoverId : undefined,
|
|
174
|
-
'aria-haspopup': 'dialog' as const,
|
|
175
|
-
id: activatorId,
|
|
176
|
-
disabled: !!props.disabled,
|
|
177
|
-
ref: setActivatorRef,
|
|
178
|
-
...(active.has('click') ? { onClick: toggle } : {}),
|
|
179
|
-
...(active.has('contextMenu')
|
|
180
|
-
? {
|
|
181
|
-
onContextmenu: onContextMenu,
|
|
182
|
-
onPointerdown: onPointerDown,
|
|
183
|
-
onPointermove: onPointerMove,
|
|
184
|
-
onPointerup: onPointerUp,
|
|
185
|
-
onPointercancel: onPointerUp,
|
|
186
|
-
}
|
|
187
|
-
: {}),
|
|
188
|
-
};
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
// Sync external activator prop to internal ref
|
|
192
|
-
watch(
|
|
193
|
-
() => props.activator,
|
|
194
|
-
(val) => {
|
|
195
|
-
if (val) setActivatorRef(val);
|
|
196
|
-
},
|
|
197
|
-
{ immediate: true }
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
// Attach trigger listeners for external activators
|
|
201
|
-
watch(
|
|
202
|
-
[activatorEl, triggers] as const,
|
|
203
|
-
([el, active], _, onCleanup) => {
|
|
204
|
-
if (!el || !hasExternalActivator.value) return;
|
|
205
|
-
|
|
206
|
-
const removers: (() => void)[] = [];
|
|
207
|
-
|
|
208
|
-
if (active.has('click')) {
|
|
209
|
-
el.addEventListener('click', toggle);
|
|
210
|
-
removers.push(() => el.removeEventListener('click', toggle));
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
if (active.has('contextMenu')) {
|
|
214
|
-
el.addEventListener('contextmenu', onContextMenu);
|
|
215
|
-
el.addEventListener('pointerdown', onPointerDown);
|
|
216
|
-
el.addEventListener('pointermove', onPointerMove);
|
|
217
|
-
el.addEventListener('pointerup', onPointerUp);
|
|
218
|
-
el.addEventListener('pointercancel', onPointerUp);
|
|
219
|
-
removers.push(() => {
|
|
220
|
-
el.removeEventListener('contextmenu', onContextMenu);
|
|
221
|
-
el.removeEventListener('pointerdown', onPointerDown);
|
|
222
|
-
el.removeEventListener('pointermove', onPointerMove);
|
|
223
|
-
el.removeEventListener('pointerup', onPointerUp);
|
|
224
|
-
el.removeEventListener('pointercancel', onPointerUp);
|
|
225
|
-
clearLongPress();
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
el.setAttribute('aria-haspopup', 'dialog');
|
|
230
|
-
|
|
231
|
-
onCleanup(() => {
|
|
232
|
-
removers.forEach((fn) => fn());
|
|
233
|
-
el.removeAttribute('aria-expanded');
|
|
234
|
-
el.removeAttribute('aria-controls');
|
|
235
|
-
el.removeAttribute('aria-haspopup');
|
|
236
|
-
});
|
|
237
|
-
},
|
|
238
|
-
{ immediate: true }
|
|
239
|
-
);
|
|
240
|
-
|
|
241
|
-
// Sync aria-expanded for external activators
|
|
242
|
-
watch(
|
|
243
|
-
[activatorEl, isOpen, hasOpenedOnce] as const,
|
|
244
|
-
([el, open, opened]) => {
|
|
245
|
-
if (!el || !hasExternalActivator.value || !opened) return;
|
|
246
|
-
el.setAttribute('id', activatorId);
|
|
247
|
-
el.setAttribute('aria-expanded', String(open));
|
|
248
|
-
el.setAttribute('aria-controls', popoverId);
|
|
249
|
-
},
|
|
250
|
-
{ immediate: true }
|
|
251
|
-
);
|
|
252
|
-
|
|
253
|
-
// Close when activator scrolls out of view
|
|
254
|
-
useIntersectionObserver(
|
|
255
|
-
activatorEl,
|
|
256
|
-
([{ intersectionRatio }]) => {
|
|
257
|
-
if (intersectionRatio !== 1 && isOpen.value) close();
|
|
258
|
-
},
|
|
259
|
-
{ threshold: [0, 1] }
|
|
260
|
-
);
|
|
261
|
-
|
|
262
|
-
// --- Open / Close logic ---
|
|
263
|
-
|
|
264
|
-
const onDocumentClick = (event: MouseEvent) => {
|
|
265
|
-
const target = event.target;
|
|
266
|
-
if (!(target instanceof Node)) return;
|
|
267
|
-
|
|
268
|
-
const isInsidePopover = popoverEl.value?.contains(target);
|
|
269
|
-
const isInsideActivator = activatorEl.value?.contains(target);
|
|
270
|
-
|
|
271
|
-
if (!isInsidePopover && !isInsideActivator) {
|
|
272
|
-
close();
|
|
273
|
-
}
|
|
274
|
-
};
|
|
164
|
+
**Member profile card**
|
|
275
165
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
166
|
+
```vue
|
|
167
|
+
<template>
|
|
168
|
+
<div
|
|
169
|
+
class="max-w-md rounded-[var(--bb-radius)] border p-3 text-sm text-gray-500"
|
|
170
|
+
>
|
|
171
|
+
Deploy of
|
|
172
|
+
<span class="font-medium text-[var(--bb-text)]">invoice-export</span>
|
|
173
|
+
approved by
|
|
174
|
+
<BbPopover placement="bottom-start" :width="280">
|
|
175
|
+
<template #activator="{ props }">
|
|
176
|
+
<BbBaseButton
|
|
177
|
+
v-bind="props"
|
|
178
|
+
class="font-medium text-inherit underline decoration-dotted underline-offset-2"
|
|
179
|
+
>
|
|
180
|
+
{{ member.name }}
|
|
181
|
+
</BbBaseButton>
|
|
182
|
+
</template>
|
|
183
|
+
<div class="grid gap-3">
|
|
184
|
+
<div class="flex items-center gap-2.5">
|
|
185
|
+
<BbAvatar :alt="member.name" size="xl">
|
|
186
|
+
<span>{{ member.initials }}</span>
|
|
187
|
+
</BbAvatar>
|
|
188
|
+
<div class="min-w-0">
|
|
189
|
+
<div class="truncate text-sm font-medium text-[var(--bb-text)]">
|
|
190
|
+
{{ member.name }}
|
|
191
|
+
</div>
|
|
192
|
+
<div class="truncate text-xs text-gray-500">{{ member.role }}</div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
<div class="grid gap-1 text-xs text-gray-500">
|
|
196
|
+
<div class="flex items-center gap-1.5">
|
|
197
|
+
<BbIcon icon="lucide:mail" size="xs" />
|
|
198
|
+
<span class="truncate">{{ member.email }}</span>
|
|
199
|
+
</div>
|
|
200
|
+
<div class="flex items-center gap-1.5">
|
|
201
|
+
<BbIcon icon="lucide:map-pin" size="xs" />
|
|
202
|
+
<span>{{ member.location }}</span>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
<BbButton
|
|
206
|
+
class="w-full"
|
|
207
|
+
href="#profile-maria-bianchi"
|
|
208
|
+
prepend:icon="lucide:external-link"
|
|
209
|
+
variant="outline"
|
|
210
|
+
>
|
|
211
|
+
View profile
|
|
212
|
+
</BbButton>
|
|
213
|
+
</div>
|
|
214
|
+
</BbPopover>
|
|
215
|
+
2 hours ago.
|
|
216
|
+
</div>
|
|
217
|
+
</template>
|
|
282
218
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
219
|
+
<script setup lang="ts">
|
|
220
|
+
import {
|
|
221
|
+
BbAvatar,
|
|
222
|
+
BbBaseButton,
|
|
223
|
+
BbButton,
|
|
224
|
+
BbIcon,
|
|
225
|
+
BbPopover,
|
|
226
|
+
} from 'bitboss-ui';
|
|
227
|
+
|
|
228
|
+
const member = {
|
|
229
|
+
name: 'Maria Bianchi',
|
|
230
|
+
initials: 'MB',
|
|
231
|
+
role: 'Platform engineer · Infra',
|
|
232
|
+
email: 'maria.bianchi@acme.dev',
|
|
233
|
+
location: 'Milan, Italy (UTC+2)',
|
|
287
234
|
};
|
|
235
|
+
</script>
|
|
236
|
+
```
|
|
288
237
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
238
|
+
### Inline field help
|
|
239
|
+
|
|
240
|
+
For a one-line non-interactive hint, prefer `BbTooltip`. Reach for a popover
|
|
241
|
+
when the explanation needs room — a short paragraph plus a docs link, related
|
|
242
|
+
actions, or anything the user might click. Pair an icon-only ghost activator
|
|
243
|
+
(`aria-label` required) with the field it explains; keep the panel narrow and
|
|
244
|
+
dismissible.
|
|
245
|
+
|
|
246
|
+
**Field help with a docs link**
|
|
294
247
|
|
|
295
|
-
|
|
296
|
-
|
|
248
|
+
```vue
|
|
249
|
+
<template>
|
|
250
|
+
<div class="grid max-w-sm gap-3 rounded-[var(--bb-radius)] border p-3">
|
|
251
|
+
<div class="flex flex-col gap-0.5">
|
|
252
|
+
<p class="text-sm font-medium">Invoice retention</p>
|
|
253
|
+
<p class="text-xs text-gray-500">
|
|
254
|
+
How long paid invoices stay searchable in the workspace.
|
|
255
|
+
</p>
|
|
256
|
+
</div>
|
|
257
|
+
<div class="flex items-end gap-1.5">
|
|
258
|
+
<BbTextInput
|
|
259
|
+
v-model="days"
|
|
260
|
+
class="min-w-0 flex-1"
|
|
261
|
+
compact
|
|
262
|
+
label="Retention period"
|
|
263
|
+
>
|
|
264
|
+
<template #suffix>days</template>
|
|
265
|
+
</BbTextInput>
|
|
266
|
+
<BbPopover placement="top-end" :width="260">
|
|
267
|
+
<template #activator="{ props }">
|
|
268
|
+
<BbButton
|
|
269
|
+
v-bind="props"
|
|
270
|
+
aria-label="About retention period"
|
|
271
|
+
class="shrink-0"
|
|
272
|
+
icon="lucide:circle-question-mark"
|
|
273
|
+
variant="ghost"
|
|
274
|
+
/>
|
|
275
|
+
</template>
|
|
276
|
+
<div class="grid gap-2 text-sm">
|
|
277
|
+
<p class="m-0 font-medium">Retention period</p>
|
|
278
|
+
<p class="m-0 text-xs text-gray-500">
|
|
279
|
+
Paid invoices older than this window are archived and drop out of
|
|
280
|
+
search. Drafts and unpaid invoices are never archived by retention.
|
|
281
|
+
</p>
|
|
282
|
+
<BbButton
|
|
283
|
+
class="justify-start"
|
|
284
|
+
href="#docs-retention"
|
|
285
|
+
prepend:icon="lucide:book-open"
|
|
286
|
+
size="sm"
|
|
287
|
+
variant="ghost"
|
|
288
|
+
>
|
|
289
|
+
Read the retention guide
|
|
290
|
+
</BbButton>
|
|
291
|
+
</div>
|
|
292
|
+
</BbPopover>
|
|
293
|
+
</div>
|
|
294
|
+
</div>
|
|
295
|
+
</template>
|
|
297
296
|
|
|
298
|
-
|
|
299
|
-
|
|
297
|
+
<script setup lang="ts">
|
|
298
|
+
import { ref } from 'vue';
|
|
299
|
+
import { BbButton, BbPopover, BbTextInput } from 'bitboss-ui';
|
|
300
300
|
|
|
301
|
-
|
|
301
|
+
const days = ref('90');
|
|
302
|
+
</script>
|
|
303
|
+
```
|
|
302
304
|
|
|
303
|
-
|
|
304
|
-
props.focusTarget ??
|
|
305
|
-
(props.showClose
|
|
306
|
-
? '.bb-popover__close'
|
|
307
|
-
: '[tabindex]:not([tabindex="-1"]), button, a, input, select, textarea');
|
|
308
|
-
const focusTarget = popoverEl.value?.querySelector(focusSelector);
|
|
305
|
+
### Placement, offset and boundary
|
|
309
306
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
307
|
+
`placement` positions the panel around the activator — the `top` / `right` /
|
|
308
|
+
`bottom` / `left` families, each with `-start` / `-end` alignment variants
|
|
309
|
+
(e.g. `bottom-start`). It defaults to `bottom`. The panel **auto-flips** to stay
|
|
310
|
+
in view near a viewport edge, so pick the placement that reads best in the
|
|
311
|
+
common case and let it correct itself.
|
|
313
312
|
|
|
314
|
-
|
|
315
|
-
};
|
|
313
|
+
Fine-tune the geometry with:
|
|
316
314
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
if (longPressTriggered) {
|
|
323
|
-
longPressTriggered = false;
|
|
324
|
-
event.preventDefault();
|
|
325
|
-
event.stopPropagation();
|
|
326
|
-
return;
|
|
327
|
-
}
|
|
328
|
-
event.stopImmediatePropagation();
|
|
329
|
-
if (props.placement === 'cursor') {
|
|
330
|
-
cursorAnchor.value = createVirtualElement(event.clientX, event.clientY);
|
|
331
|
-
}
|
|
332
|
-
await openPopover();
|
|
333
|
-
};
|
|
315
|
+
- `offset` — gap (px) between the activator and the panel (default `3`).
|
|
316
|
+
- `padding` — minimum gap (px) the panel keeps from the page edge (default
|
|
317
|
+
`10`).
|
|
318
|
+
- `boundary` — an element, ref, or CSS selector that constrains the panel so it
|
|
319
|
+
never escapes a scrolling region or sidebar.
|
|
334
320
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
event.stopPropagation();
|
|
339
|
-
if (props.placement === 'cursor') {
|
|
340
|
-
cursorAnchor.value = createVirtualElement(event.clientX, event.clientY);
|
|
341
|
-
if (isOpen.value) return;
|
|
342
|
-
}
|
|
343
|
-
if (isOpen.value) close();
|
|
344
|
-
else openPopover();
|
|
345
|
-
};
|
|
321
|
+
`BbPopover` is a floating **panel**, not a speech bubble — it never renders an
|
|
322
|
+
arrow. Reach for `BbTooltip` when you want an arrow pointing back at the trigger
|
|
323
|
+
for a one-line, non-interactive hint.
|
|
346
324
|
|
|
347
|
-
|
|
348
|
-
if (props.disabled || event.pointerType === 'mouse') return;
|
|
349
|
-
longPressTriggered = false;
|
|
350
|
-
longPressOrigin = { x: event.clientX, y: event.clientY };
|
|
351
|
-
longPressTimer = setTimeout(() => {
|
|
352
|
-
longPressTriggered = true;
|
|
353
|
-
if (props.placement === 'cursor' && longPressOrigin) {
|
|
354
|
-
cursorAnchor.value = createVirtualElement(
|
|
355
|
-
longPressOrigin.x,
|
|
356
|
-
longPressOrigin.y
|
|
357
|
-
);
|
|
358
|
-
}
|
|
359
|
-
longPressOrigin = null;
|
|
360
|
-
openPopover();
|
|
361
|
-
}, LONG_PRESS_DELAY);
|
|
362
|
-
};
|
|
325
|
+
**Placement around the trigger**
|
|
363
326
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
327
|
+
```vue
|
|
328
|
+
<div class="flex flex-wrap gap-2">
|
|
329
|
+
<BbPopover
|
|
330
|
+
v-for="side in ['top', 'right', 'bottom', 'left']"
|
|
331
|
+
:key="side"
|
|
332
|
+
:placement="side"
|
|
333
|
+
:width="150"
|
|
334
|
+
>
|
|
335
|
+
<template #activator="{ props }">
|
|
336
|
+
<BbButton v-bind="props" variant="outline">{{ side }}</BbButton>
|
|
337
|
+
</template>
|
|
338
|
+
<div class="text-sm">Placed <strong>{{ side }}</strong></div>
|
|
339
|
+
</BbPopover>
|
|
340
|
+
</div>
|
|
341
|
+
```
|
|
372
342
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
343
|
+
### Header, footer and scrollable content
|
|
344
|
+
|
|
345
|
+
Tall content (a notifications feed, a long list) should set `scrollable`: it
|
|
346
|
+
caps the panel to the available viewport height and scrolls the body internally.
|
|
347
|
+
Pin a title in the `header` slot and actions in the `footer` slot — both stay
|
|
348
|
+
put outside the scroll region, with their own padding and dividers, so you never
|
|
349
|
+
need `sticky` hacks. This companion left-aligns its rows with the `justify-start`
|
|
350
|
+
utility (BbButton centers labels by default).
|
|
376
351
|
|
|
377
|
-
|
|
378
|
-
if (!isOpen.value) return;
|
|
352
|
+
**A notifications popover**
|
|
379
353
|
|
|
380
|
-
|
|
381
|
-
|
|
354
|
+
```vue
|
|
355
|
+
<template>
|
|
356
|
+
<div
|
|
357
|
+
class="flex max-w-sm items-center justify-between gap-3 rounded-[var(--bb-radius)] border p-3"
|
|
358
|
+
>
|
|
359
|
+
<div class="min-w-0">
|
|
360
|
+
<p class="truncate text-sm font-medium">Acme Studio</p>
|
|
361
|
+
<p class="truncate text-xs text-gray-500">Workspace · Billing</p>
|
|
362
|
+
</div>
|
|
363
|
+
<BbPopover scrollable :width="300">
|
|
364
|
+
<template #activator="{ props }">
|
|
365
|
+
<BbButton
|
|
366
|
+
v-bind="props"
|
|
367
|
+
aria-label="Notifications"
|
|
368
|
+
icon="lucide:bell"
|
|
369
|
+
size="sm"
|
|
370
|
+
variant="ghost"
|
|
371
|
+
/>
|
|
372
|
+
</template>
|
|
373
|
+
<template #header>
|
|
374
|
+
<strong class="text-sm">Notifications</strong>
|
|
375
|
+
</template>
|
|
376
|
+
<template #default="{ close }">
|
|
377
|
+
<div class="grid gap-1">
|
|
378
|
+
<BbButton
|
|
379
|
+
v-for="item in items"
|
|
380
|
+
:key="item.id"
|
|
381
|
+
class="justify-start"
|
|
382
|
+
:href="`#notification-${item.id}`"
|
|
383
|
+
size="sm"
|
|
384
|
+
:variant="item.read ? 'ghost' : 'secondary'"
|
|
385
|
+
@click="close"
|
|
386
|
+
>
|
|
387
|
+
{{ item.title }}
|
|
388
|
+
</BbButton>
|
|
389
|
+
</div>
|
|
390
|
+
</template>
|
|
391
|
+
<template #footer>
|
|
392
|
+
<div class="flex justify-end">
|
|
393
|
+
<BbButton
|
|
394
|
+
prepend:icon="lucide:check"
|
|
395
|
+
size="sm"
|
|
396
|
+
variant="ghost"
|
|
397
|
+
@click="markAllRead"
|
|
398
|
+
>
|
|
399
|
+
Mark all as read
|
|
400
|
+
</BbButton>
|
|
401
|
+
</div>
|
|
402
|
+
</template>
|
|
403
|
+
</BbPopover>
|
|
404
|
+
</div>
|
|
405
|
+
</template>
|
|
382
406
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
407
|
+
<script setup lang="ts">
|
|
408
|
+
import { reactive } from 'vue';
|
|
409
|
+
import { BbButton, BbPopover } from 'bitboss-ui';
|
|
386
410
|
|
|
387
|
-
|
|
411
|
+
type Notification = {
|
|
412
|
+
id: number;
|
|
413
|
+
title: string;
|
|
414
|
+
read: boolean;
|
|
388
415
|
};
|
|
389
416
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
computed(() => (needsReactiveWidth.value ? activatorEl.value : undefined)),
|
|
400
|
-
{ width: 0, height: 0 },
|
|
401
|
-
{ box: 'border-box' }
|
|
402
|
-
);
|
|
403
|
-
|
|
404
|
-
const parsedWidth = computed(() => {
|
|
405
|
-
if (!props.width) return undefined;
|
|
406
|
-
|
|
407
|
-
const { value, unit } = parseWidthString(props.width);
|
|
408
|
-
if (unit === '%' && activatorEl.value) {
|
|
409
|
-
return `${activatorWidth.value * (value / 100)}px`;
|
|
410
|
-
}
|
|
411
|
-
return `${value}px`;
|
|
412
|
-
});
|
|
413
|
-
|
|
414
|
-
// --- Public API ---
|
|
415
|
-
|
|
416
|
-
defineExpose({
|
|
417
|
-
/** Opens the popover programmatically */
|
|
418
|
-
show: openPopover,
|
|
419
|
-
/** Closes the popover programmatically */
|
|
420
|
-
close,
|
|
421
|
-
/** Whether the popover is currently open */
|
|
422
|
-
isOpen: computed(() => isOpen.value),
|
|
423
|
-
});
|
|
417
|
+
const items = reactive<Notification[]>([
|
|
418
|
+
{ id: 1, title: 'Invoice #INV-2043 was paid', read: false },
|
|
419
|
+
{ id: 2, title: 'Maria commented on “Q3 report”', read: false },
|
|
420
|
+
{ id: 3, title: 'Your export is ready to download', read: true },
|
|
421
|
+
]);
|
|
422
|
+
|
|
423
|
+
const markAllRead = () => {
|
|
424
|
+
items.forEach((item) => (item.read = true));
|
|
425
|
+
};
|
|
424
426
|
</script>
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### Triggers and cursor anchoring
|
|
425
430
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
431
|
+
`trigger` chooses the interaction: `'click'` (default), `'contextMenu'`
|
|
432
|
+
(right-click on desktop, long-press on mobile), or an array to combine them.
|
|
433
|
+
Pair `contextMenu` with `placement="cursor"` to anchor the panel at the pointer
|
|
434
|
+
— a context surface for richer, interactive content. (For a plain list of
|
|
435
|
+
actions, reach for `BbDropdown` instead.)
|
|
436
|
+
|
|
437
|
+
**Right-click for a context panel**
|
|
438
|
+
|
|
439
|
+
```vue
|
|
440
|
+
<div class="max-w-sm">
|
|
441
|
+
<BbPopover placement="cursor" trigger="contextMenu" :width="200">
|
|
442
|
+
<template #activator="{ props }">
|
|
443
|
+
<button
|
|
444
|
+
v-bind="props"
|
|
445
|
+
type="button"
|
|
446
|
+
class="grid h-24 w-full place-items-center rounded-[var(--bb-radius)] border border-dashed text-sm text-gray-500"
|
|
447
|
+
>
|
|
448
|
+
Right-click anywhere here
|
|
449
|
+
</button>
|
|
450
|
+
</template>
|
|
451
|
+
<template #default="{ close }">
|
|
452
|
+
<div class="grid gap-1">
|
|
453
|
+
<BbButton class="justify-start" size="sm" variant="ghost" @click="close">Preview</BbButton>
|
|
454
|
+
<BbButton class="justify-start" href="#rename" size="sm" variant="ghost" @click="close">Rename</BbButton>
|
|
455
|
+
</div>
|
|
456
|
+
</template>
|
|
457
|
+
</BbPopover>
|
|
458
|
+
</div>
|
|
429
459
|
```
|
|
430
460
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
```ts
|
|
434
|
-
import type { CommonProps } from '@/types/CommonProps';
|
|
435
|
-
|
|
436
|
-
export type PopoverTrigger = 'click' | 'contextMenu';
|
|
437
|
-
|
|
438
|
-
export type BbPopoverProps = Pick<
|
|
439
|
-
CommonProps,
|
|
440
|
-
| 'arrowPadding'
|
|
441
|
-
| 'closeLabel'
|
|
442
|
-
| 'block'
|
|
443
|
-
| 'disabled'
|
|
444
|
-
| 'eager'
|
|
445
|
-
| 'id'
|
|
446
|
-
| 'offset'
|
|
447
|
-
| 'padding'
|
|
448
|
-
| 'showClose'
|
|
449
|
-
| 'theme'
|
|
450
|
-
| 'transitionDuration'
|
|
451
|
-
> & {
|
|
452
|
-
/**
|
|
453
|
-
* Position of the popover relative to the activator.
|
|
454
|
-
* Use `'cursor'` to anchor at the mouse/touch coordinates (hides arrow).
|
|
455
|
-
*
|
|
456
|
-
* @defaultValue `'bottom'`
|
|
457
|
-
*/
|
|
458
|
-
placement?: CommonProps['placement'] | 'cursor';
|
|
459
|
-
/**
|
|
460
|
-
* External activator element or component ref.
|
|
461
|
-
* When provided, the activator slot is not rendered and click events
|
|
462
|
-
* are attached programmatically to the referenced element.
|
|
463
|
-
*/
|
|
464
|
-
activator?: HTMLElement | Record<string, any> | null;
|
|
465
|
-
/**
|
|
466
|
-
* Constrains the popover within a bounding element.
|
|
467
|
-
* When provided, the popover will not overflow this container's bounds (e.g. a sidebar).
|
|
468
|
-
* Accepts an HTMLElement, a Vue component ref, or a CSS selector string.
|
|
469
|
-
*/
|
|
470
|
-
boundary?: HTMLElement | Record<string, any> | string | null;
|
|
471
|
-
/**
|
|
472
|
-
* Selector for the element that receives focus after opening.
|
|
473
|
-
* Defaults to the close button, or first focusable element if no close button.
|
|
474
|
-
*/
|
|
475
|
-
focusTarget?: string;
|
|
476
|
-
/**
|
|
477
|
-
* Whether to restore focus to the activator when closed.
|
|
478
|
-
*
|
|
479
|
-
* @defaultValue `true`
|
|
480
|
-
*/
|
|
481
|
-
restoreFocus?: boolean;
|
|
482
|
-
/**
|
|
483
|
-
* Theme class applied to the popover container.
|
|
484
|
-
*
|
|
485
|
-
* @deprecated Use a CSS class on the component instead.
|
|
486
|
-
* @defaultValue `'default'`
|
|
487
|
-
*/
|
|
488
|
-
theme?: string;
|
|
489
|
-
/**
|
|
490
|
-
* Interaction(s) that open the popover.
|
|
491
|
-
* Accepts a single trigger or an array to combine them.
|
|
492
|
-
* - `'click'` — left-click / tap (default)
|
|
493
|
-
* - `'contextMenu'` — right-click on desktop, long-press on mobile
|
|
494
|
-
*
|
|
495
|
-
* @defaultValue `'click'`
|
|
496
|
-
*/
|
|
497
|
-
trigger?: PopoverTrigger | PopoverTrigger[];
|
|
498
|
-
/**
|
|
499
|
-
* Caps the popover height to the available viewport space and enables internal scrolling.
|
|
500
|
-
*
|
|
501
|
-
* @defaultValue `false`
|
|
502
|
-
*/
|
|
503
|
-
scrollable?: boolean;
|
|
504
|
-
/**
|
|
505
|
-
* Width of the popover. Accepts pixels or percentage (relative to activator width).
|
|
506
|
-
*/
|
|
507
|
-
width?: number | string;
|
|
508
|
-
};
|
|
461
|
+
### External activator
|
|
509
462
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
};
|
|
463
|
+
When the trigger already exists elsewhere (a toolbar button, a table cell), pass
|
|
464
|
+
it as the `activator` prop instead of using the slot — the listeners and ARIA
|
|
465
|
+
are attached to that element directly, so you don't spread `props`. This needs a
|
|
466
|
+
template ref, so it is a **static** snippet (a live fence has no `<script>` to
|
|
467
|
+
declare the ref):
|
|
516
468
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
ref: (reference: unknown) => void;
|
|
527
|
-
};
|
|
528
|
-
/** Whether the popover is globally disabled. */
|
|
529
|
-
disabled: boolean;
|
|
530
|
-
/** Whether the popover is currently open. */
|
|
531
|
-
isOpen: boolean;
|
|
532
|
-
/** The current placement of the popover panel. */
|
|
533
|
-
placement: BbPopoverProps['placement'];
|
|
534
|
-
};
|
|
469
|
+
```vue
|
|
470
|
+
<template>
|
|
471
|
+
<BbButton ref="triggerRef" icon="lucide:settings">Options</BbButton>
|
|
472
|
+
<BbPopover :activator="triggerRef">
|
|
473
|
+
<div class="grid gap-1">
|
|
474
|
+
<BbSwitch v-model="notify" label="Email me" />
|
|
475
|
+
</div>
|
|
476
|
+
</BbPopover>
|
|
477
|
+
</template>
|
|
535
478
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
close: () => void;
|
|
540
|
-
/** Whether the popover is globally disabled. */
|
|
541
|
-
disabled: boolean;
|
|
542
|
-
/** Whether the popover is currently open. */
|
|
543
|
-
open: boolean;
|
|
544
|
-
/** The current placement of the popover panel. */
|
|
545
|
-
placement: BbPopoverProps['placement'];
|
|
546
|
-
};
|
|
479
|
+
<script setup lang="ts">
|
|
480
|
+
import { ref } from 'vue';
|
|
481
|
+
import { BbButton, BbPopover, BbSwitch } from 'bitboss-ui';
|
|
547
482
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
*/
|
|
552
|
-
activator?: (props: BbPopoverActivatorSlotProps) => any;
|
|
553
|
-
/**
|
|
554
|
-
* The popover body content rendered inside the floating panel.
|
|
555
|
-
*/
|
|
556
|
-
default?: (props: BbPopoverDefaultSlotProps) => any;
|
|
557
|
-
};
|
|
483
|
+
const triggerRef = ref();
|
|
484
|
+
const notify = ref(true);
|
|
485
|
+
</script>
|
|
558
486
|
```
|
|
559
487
|
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
488
|
+
The `activator` prop accepts an `HTMLElement` or a component ref; BbPopover
|
|
489
|
+
resolves the underlying element, wires `click` / `contextMenu` listeners, and
|
|
490
|
+
sets `aria-haspopup` / `aria-expanded` / `aria-controls` on it.
|
|
491
|
+
|
|
492
|
+
### Width and sizing
|
|
493
|
+
|
|
494
|
+
`width` accepts pixels (`:width="240"`) or a percentage relative to the
|
|
495
|
+
activator's width — `width="100%"` matches the trigger exactly, handy for
|
|
496
|
+
select-like panels; only the `%` form tracks the activator on resize. With no
|
|
497
|
+
`width` the panel sizes to its content. `scrollable` (above) is what bounds the
|
|
498
|
+
height; without it a tall panel grows freely.
|
|
499
|
+
|
|
500
|
+
### Lifecycle, focus and lazy content
|
|
501
|
+
|
|
502
|
+
- Four lifecycle events fire, matching `BbDialog`/`BbOffCanvas`: `show` as the
|
|
503
|
+
panel starts opening and `shown` after it has opened and focus has moved inside;
|
|
504
|
+
`hide` as it starts closing and `hidden` after it has closed and focus has
|
|
505
|
+
returned to the activator.
|
|
506
|
+
- Focus moves into the panel on open (first focusable element) and returns to
|
|
507
|
+
the activator on close; `focus-target` (a CSS selector) overrides where it
|
|
508
|
+
first lands.
|
|
509
|
+
- Content is **lazy** — the body renders on first open. Set `eager` to render it
|
|
510
|
+
up front (pre-measure a chart, let tests query it closed).
|
|
511
|
+
- `transition-duration` (ms) times the open/close animation.
|
|
512
|
+
- For imperative open/close, use `v-model`: write `true` to open and `false` to
|
|
513
|
+
close, and the popover writes it back on every dismiss (outside click, Escape,
|
|
514
|
+
backdrop) — the self-correcting two-way model `BbDialog`/`BbOffCanvas` use.
|
|
515
|
+
There is no template-ref `show()`/`close()` API; the boolean model is it.
|
|
516
|
+
|
|
517
|
+
### Top layer: escaping overflow and z-index
|
|
518
|
+
|
|
519
|
+
The floating panel opens in the browser **top layer** (a native `<dialog>`), so
|
|
520
|
+
it paints above every `z-index`, sticky header, `overflow: hidden` clip, or
|
|
521
|
+
transformed ancestor — there is nothing to z-index-manage, and a popover inside
|
|
522
|
+
a scrolling card or table cell is not clipped by it. A popover, select, or
|
|
523
|
+
tooltip opened from **inside** a `BbDialog` / `BbOffCanvas` also layers correctly
|
|
524
|
+
above that surface with no extra wiring. In tests, query the panel via
|
|
525
|
+
`document.body` (the open panel carries both classes on one element —
|
|
526
|
+
`.bb-popover.bb-common-popover--open`) after `attachTo: document.body`.
|
|
527
|
+
|
|
528
|
+
The popover closes automatically if its activator scrolls out of view — it is
|
|
529
|
+
tethered to the trigger, not left floating over the page.
|
|
530
|
+
|
|
531
|
+
### Adaptive: a bottom sheet on mobile
|
|
532
|
+
|
|
533
|
+
By default (`config.adaptive`, `true` out of the box) a popover opened on a small
|
|
534
|
+
viewport (below `config.mobileMaxWidth`, 768px) renders as a bottom-anchored,
|
|
535
|
+
draggable `BbOffCanvas` sheet instead of a floating panel — better ergonomics
|
|
536
|
+
for thumbs. The surface is **latched when the popover opens** and stays fixed for
|
|
537
|
+
that session, so a mid-session resize never swaps panel ↔ sheet.
|
|
538
|
+
|
|
539
|
+
- The `header`, `default`, and `footer` slots carry over to the sheet unchanged.
|
|
540
|
+
- `width` is **ignored** in sheet mode (a sheet sizes itself); tune the sheet
|
|
541
|
+
with `off-canvas-props` (merged over the defaults `direction: 'bottom'`,
|
|
542
|
+
`size: 'auto'`, `draggable: true`).
|
|
543
|
+
- `:adaptive="false"` keeps the floating panel everywhere; a bare `adaptive`
|
|
544
|
+
forces the sheet on regardless of the global config.
|
|
545
|
+
|
|
546
|
+
Leave `adaptive` unset unless the project asks otherwise — the tri-state default
|
|
547
|
+
falls back to `config.adaptive`.
|
|
548
|
+
|
|
549
|
+
### Works well with
|
|
550
|
+
|
|
551
|
+
- `BbButton` — the natural activator; spread the slot `props` onto it.
|
|
552
|
+
- `BbSwitch`, `BbCheckbox`, `BbTextInput` — the interactive controls a popover
|
|
553
|
+
exists to hold; wire the `default` slot's `close` to commit-and-dismiss.
|
|
554
|
+
- `BbDialog` / `BbOffCanvas` — a popover opened from inside either layers above
|
|
555
|
+
it correctly; reach for those instead when the content is a full task.
|
|
556
|
+
- `BbDropdown` — when the panel is really just a menu of actions, use the
|
|
557
|
+
dropdown; a popover is for interactive content.
|
|
558
|
+
|
|
559
|
+
### Gotchas & anti-patterns
|
|
560
|
+
|
|
561
|
+
- **Don't forget to spread `props`** onto the activator (or pass an `activator`
|
|
562
|
+
ref) — without it there is no anchor, no ARIA, and no open handler.
|
|
563
|
+
- **Don't put a blocking task in a popover** — it doesn't lock the page and
|
|
564
|
+
dismisses on outside click; use `BbDialog`.
|
|
565
|
+
- **Don't reach for a popover when you mean a menu** — a plain list of actions is
|
|
566
|
+
`BbDropdown`.
|
|
567
|
+
- **Don't set `width` and expect it on mobile** — the adaptive sheet ignores it;
|
|
568
|
+
size the sheet with `off-canvas-props`.
|
|
569
|
+
- **Don't query popover content before first open** unless `eager` — the body is
|
|
570
|
+
lazy.
|
|
571
|
+
- **Don't hand-roll cursor positioning** — `placement="cursor"` anchors at the
|
|
572
|
+
pointer for you.
|
|
573
|
+
|
|
574
|
+
### Accessibility
|
|
575
|
+
|
|
576
|
+
- Always spread the `activator` slot's `props` onto your trigger (or pass an
|
|
577
|
+
`activator`); that is what publishes `aria-expanded` / `aria-controls` /
|
|
578
|
+
`aria-haspopup` and makes the trigger operable by keyboard.
|
|
579
|
+
- Focus moves into the panel on open and returns to the activator on close;
|
|
580
|
+
`focus-target` overrides where it lands first.
|
|
581
|
+
- The popover is a floating panel, not a modal — it does not trap focus or lock
|
|
582
|
+
the page behind it. For a blocking task, use `BbDialog`.
|
|
583
|
+
- Give an icon-only activator its own `aria-label`; the popover does not name it.
|
|
584
|
+
|
|
585
|
+
## v-model
|
|
586
|
+
|
|
587
|
+
- `v-model` — type: `boolean \| undefined`
|
|
588
|
+
|
|
589
|
+
## Props
|
|
590
|
+
|
|
591
|
+
| Prop | Type | Default | Required | Description |
|
|
592
|
+
| --- | --- | --- | --- | --- |
|
|
593
|
+
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the activator slot is not rendered and click events are attached programmatically to the referenced element. |
|
|
594
|
+
| `adaptive` | `boolean \| undefined` | `undefined` | | On mobile viewports (below `config.mobileMaxWidth`), render the popover as a bottom-anchored, auto-sized off-canvas sheet instead of a floating panel. The `header`, `default` and `footer` slots are forwarded to the sheet. The `width` prop i… |
|
|
595
|
+
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element. When provided, the popover will not overflow this container's bounds (e.g. a sidebar). Accepts an HTMLElement, a Vue component ref, or a CSS selector string. |
|
|
596
|
+
| `disabled` | `boolean \| undefined` | | | Disables the component. |
|
|
597
|
+
| `eager` | `boolean \| undefined` | | | Prevents rendering content before it's made visible. |
|
|
598
|
+
| `focusTarget` | `string \| undefined` | | | Selector for the element that receives focus after opening. Defaults to the first focusable element inside the popover. |
|
|
599
|
+
| `id` | `string \| undefined` | | | The identifier of the component. |
|
|
600
|
+
| `modelValue` | `boolean \| undefined` | `false` | | |
|
|
601
|
+
| `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Overrides forwarded to the underlying `BbOffCanvas` when `adaptive` renders the sheet on mobile. Merged over the adaptive defaults (`direction: 'bottom'`, `size: 'auto'`, `draggable: true`). Ignored when `adaptive` is `false`. |
|
|
602
|
+
| `offset` | `number \| undefined` | `3` | | Space the floating container will maintain from the activator. |
|
|
603
|
+
| `padding` | `number \| undefined` | `10` | | Minimum empty space to keep from the edge of the page. |
|
|
604
|
+
| `placement` | `Placement \| "cursor" \| undefined` | `"bottom"` | | Position of the popover relative to the activator. Use `'cursor'` to anchor at the mouse/touch coordinates (hides arrow). |
|
|
605
|
+
| `scrollable` | `boolean \| undefined` | `false` | | Caps the popover height to the available viewport space and enables internal scrolling. Useful for tall content like filter panels. Not recommended for atomic popovers (calendars, color pickers). |
|
|
606
|
+
| `transitionDuration` | `number \| undefined` | `transitions.medium` | | How long the transition has to last in milliseconds. |
|
|
607
|
+
| `trigger` | `PopoverTrigger \| PopoverTrigger[] \| undefined` | `"click"` | | Interaction(s) that open the popover. Accepts a single trigger or an array to combine them. - `'click'` — left-click / tap (default) - `'contextMenu'` — right-click on desktop, long-press on mobile |
|
|
608
|
+
| `width` | `string \| number \| undefined` | | | Width of the popover. Accepts pixels or percentage (relative to activator width). |
|
|
609
|
+
|
|
610
|
+
## Events
|
|
611
|
+
|
|
612
|
+
- `hidden` — `(event: "hidden"): void`
|
|
613
|
+
- `hide` — `(event: "hide"): void`
|
|
614
|
+
- `show` — `(event: "show"): void`
|
|
615
|
+
- `shown` — `(event: "shown"): void`
|
|
616
|
+
- `update:modelValue` — `(event: "update:modelValue", value: boolean): void`
|
|
617
|
+
|
|
618
|
+
## Slots
|
|
619
|
+
|
|
620
|
+
- `activator` — scope: `BbPopoverActivatorSlotProps` — The element that triggers the popover to open. Spread `props` onto your trigger element.
|
|
621
|
+
- `default` — scope: `BbPopoverDefaultSlotProps` — The popover body content rendered inside the floating panel.
|
|
622
|
+
- `footer` — scope: `BbPopoverDefaultSlotProps` — Content pinned to the bottom of the panel, outside the scroll region. Stays visible while the body scrolls (when `scrollable`) and carries its own padding and top divider, so footer actions need no negative-margin or `sticky` workarounds.
|
|
623
|
+
- `header` — scope: `BbPopoverDefaultSlotProps` — Content pinned to the top of the panel, outside the scroll region. Stays visible while the body scrolls (when `scrollable`) and carries its own padding and bottom divider, so a title or search field needs no negative-margin or `sticky` work…
|
|
624
|
+
|
|
625
|
+
## See Also
|
|
626
|
+
|
|
627
|
+
- [BbTooltip](./BbTooltip.md) — Displays contextual helper text on interaction.
|
|
628
|
+
- [BbDialog](./BbDialog.md) — Presents modal dialogs for focused user interactions.
|
|
629
|
+
- [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content.
|