bitboss-ui 3.0.0-beta.63 → 3.0.0-beta.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -20
- package/bin/bitboss-ui.mjs +73 -7
- package/dist/ai/BbAlert.md +10 -1
- package/dist/ai/BbBadge.md +35 -3
- package/dist/ai/BbBadgeButton.md +4 -2
- package/dist/ai/BbBaseButton.md +9 -3
- package/dist/ai/BbBreadcrumbs.md +2 -2
- package/dist/ai/BbButton.md +113 -8
- package/dist/ai/BbCheckbox.md +1 -1
- package/dist/ai/BbCheckboxGroup.md +94 -6
- package/dist/ai/BbColorInput.md +4 -1
- package/dist/ai/BbColorPalette.md +2 -1
- package/dist/ai/BbConfirm.md +7 -3
- package/dist/ai/BbDatePicker.md +2 -1
- package/dist/ai/BbDatePickerInput.md +4 -1
- package/dist/ai/BbDialog.md +12 -11
- package/dist/ai/BbDropdown.md +189 -38
- package/dist/ai/BbDropdownButton.md +27 -7
- package/dist/ai/BbForm.md +55 -22
- package/dist/ai/BbHost.md +2 -2
- package/dist/ai/BbHoverCard.md +7 -3
- package/dist/ai/BbIcon.md +12 -6
- package/dist/ai/BbIndicator.md +11 -1
- package/dist/ai/BbNumberInput.md +4 -1
- package/dist/ai/BbOffCanvas.md +37 -3
- package/dist/ai/BbPopover.md +2 -1
- package/dist/ai/BbRadio.md +1 -1
- package/dist/ai/BbRadioGroup.md +102 -10
- package/dist/ai/BbSelect.md +52 -17
- package/dist/ai/BbSelectPopover.md +93 -26
- package/dist/ai/BbSwitch.md +1 -1
- package/dist/ai/BbSwitchGroup.md +30 -3
- package/dist/ai/BbTable.md +17 -10
- package/dist/ai/BbTabs.md +8 -3
- package/dist/ai/BbTabsList.md +4 -1
- package/dist/ai/BbTag.md +5 -2
- package/dist/ai/BbTextInput.md +4 -1
- package/dist/ai/BbTextarea.md +4 -1
- package/dist/ai/BbTimePicker.md +2 -1
- package/dist/ai/BbTimePickerInput.md +4 -1
- package/dist/ai/BbToast.md +9 -3
- package/dist/ai/BbTooltip.md +71 -9
- package/dist/ai/ChipsBox.md +1 -1
- package/dist/ai/CommonField.md +1 -1
- package/dist/ai/OptionsContainer.md +42 -0
- package/dist/ai/changelog.json +416 -6
- package/dist/ai/components.json +50 -48
- package/dist/ai/composables/useConfirm.md +39 -1
- package/dist/ai/design-tokens.json +6 -6
- package/dist/ai/guides/agent-contract.md +2 -2
- package/dist/ai/guides/ai-router.md +24 -23
- package/dist/ai/guides/app-layout.md +5 -0
- package/dist/ai/guides/component-picker.md +9 -2
- package/dist/ai/guides/design-language.md +24 -24
- package/dist/ai/guides/design-tokens.md +15 -8
- package/dist/ai/guides/icons-policy.md +9 -2
- package/dist/ai/guides/inertia-helpers.md +79 -49
- package/dist/ai/guides/installation-and-plugin-setup.md +12 -2
- package/dist/ai/guides/migration/adoption-checklist.md +235 -0
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -15
- package/dist/ai/guides/migration/components/bb-dialog.md +9 -9
- package/dist/ai/guides/migration/components/bb-dropdown.md +7 -2
- package/dist/ai/guides/migration/components/bb-popover.md +4 -2
- package/dist/ai/guides/migration/components/bb-select.md +19 -0
- package/dist/ai/guides/migration/components/bb-table.md +1 -0
- package/dist/ai/guides/migration/components/bb-toast.md +4 -0
- package/dist/ai/guides/migration/components/bb-tooltip.md +15 -12
- package/dist/ai/guides/migration/components/use-confirm.md +25 -2
- package/dist/ai/guides/migration/v2-to-v3.md +163 -9
- package/dist/ai/guides/migration/v3-beta-css-classes.md +7 -3
- package/dist/ai/guides/options-items-playbook.md +2 -1
- package/dist/ai/guides/passthrough.md +147 -85
- package/dist/ai/guides/preset-components.md +140 -15
- package/dist/ai/helpers/definePreset.json +7 -0
- package/dist/ai/helpers/definePreset.ts +123 -11
- package/dist/ai/helpers/inertia/manifest.json +15 -9
- package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +4 -4
- package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +39 -24
- package/dist/ai/helpers/inertia/useRouteQuery.ts +10 -4
- package/dist/ai/index.md +1 -0
- package/dist/ai/manifest/common.json +0 -1
- package/dist/ai/manifest/components/BbAlert.json +7 -2
- package/dist/ai/manifest/components/BbBadge.json +13 -4
- package/dist/ai/manifest/components/BbBadge.tree.json +2 -0
- package/dist/ai/manifest/components/BbBadgeButton.json +4 -2
- package/dist/ai/manifest/components/BbBaseButton.json +4 -2
- package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
- package/dist/ai/manifest/components/BbButton.json +14 -3
- package/dist/ai/manifest/components/BbButton.tree.json +5 -1
- package/dist/ai/manifest/components/BbCheckboxGroup.json +13 -8
- package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +11 -1
- package/dist/ai/manifest/components/BbColorInput.json +18 -15
- package/dist/ai/manifest/components/BbColorPalette.json +1 -1
- package/dist/ai/manifest/components/BbConfirm.json +4 -2
- package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
- package/dist/ai/manifest/components/BbDatePicker.json +1 -1
- package/dist/ai/manifest/components/BbDatePickerInput.json +17 -14
- package/dist/ai/manifest/components/BbDialog.tree.json +2 -1
- package/dist/ai/manifest/components/BbDropdown.json +24 -19
- package/dist/ai/manifest/components/BbDropdown.tree.json +9 -2
- package/dist/ai/manifest/components/BbDropdownButton.json +33 -20
- package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
- package/dist/ai/manifest/components/BbForm.json +2 -2
- package/dist/ai/manifest/components/BbHost.tree.json +1 -1
- package/dist/ai/manifest/components/BbHoverCard.json +1 -1
- package/dist/ai/manifest/components/BbIndicator.json +8 -2
- package/dist/ai/manifest/components/BbNumberInput.json +5 -2
- package/dist/ai/manifest/components/BbOffCanvas.json +2 -2
- package/dist/ai/manifest/components/BbOffCanvas.tree.json +1 -1
- package/dist/ai/manifest/components/BbPopover.json +1 -1
- package/dist/ai/manifest/components/BbRadioGroup.json +17 -12
- package/dist/ai/manifest/components/BbRadioGroup.tree.json +8 -1
- package/dist/ai/manifest/components/BbSelect.json +21 -18
- package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
- package/dist/ai/manifest/components/BbSelectPopover.json +10 -10
- package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
- package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
- package/dist/ai/manifest/components/BbSwitchGroup.tree.json +3 -1
- package/dist/ai/manifest/components/BbTable.tree.json +14 -1
- package/dist/ai/manifest/components/BbTabs.json +9 -6
- package/dist/ai/manifest/components/BbTabs.tree.json +1 -1
- package/dist/ai/manifest/components/BbTabsList.json +6 -3
- package/dist/ai/manifest/components/BbTag.json +19 -16
- package/dist/ai/manifest/components/BbTag.tree.json +1 -1
- package/dist/ai/manifest/components/BbTextInput.json +6 -3
- package/dist/ai/manifest/components/BbTextarea.json +6 -3
- package/dist/ai/manifest/components/BbTimePicker.json +1 -1
- package/dist/ai/manifest/components/BbTimePickerInput.json +10 -7
- package/dist/ai/manifest/components/BbToast.json +7 -2
- package/dist/ai/manifest/components/BbToast.tree.json +4 -2
- package/dist/ai/manifest/components/BbTooltip.json +6 -5
- package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
- package/dist/ai/manifest/components/CommonField.json +1 -1
- package/dist/ai/manifest/components/OptionsContainer.json +3 -1
- package/dist/ai/manifest/components/OptionsContainer.tree.json +38 -0
- package/dist/ai/manifest/index.json +3 -3
- package/dist/ai/manifest/meta.json +5 -3
- package/dist/ai/manifest/types.advanced.json +5 -2
- package/dist/ai/manifest/types.api.json +9 -7
- package/dist/ai/recipes/inertia/layout-scaffold.md +19 -6
- package/dist/ai/recipes/inertia/records-workspace.md +49 -13
- package/dist/ai/recipes/nuxt/layout-scaffold.md +19 -6
- package/dist/ai/recipes/nuxt/records-workspace.md +42 -12
- package/dist/ai/recipes/vue/layout-scaffold.md +19 -6
- package/dist/ai/recipes/vue/records-workspace.md +42 -12
- package/dist/ai/source/BbAlert.md +94 -76
- package/dist/ai/source/BbBadge.md +174 -72
- package/dist/ai/source/BbBadgeButton.md +130 -65
- package/dist/ai/source/BbBaseButton.md +46 -124
- package/dist/ai/source/BbBaseCheckboxIcon.md +38 -0
- package/dist/ai/source/BbBaseRadioIcon.md +18 -0
- package/dist/ai/source/BbBaseSwitchIcon.md +51 -0
- package/dist/ai/source/BbButton.md +153 -36
- package/dist/ai/source/BbCheckboxGroup.md +142 -18
- package/dist/ai/source/BbColorInput.md +240 -204
- package/dist/ai/source/BbColorPalette.md +7 -4
- package/dist/ai/source/BbConfirm.md +34 -11
- package/dist/ai/source/BbConfirmPortal.md +24 -9
- package/dist/ai/source/BbDatePicker.md +11 -7
- package/dist/ai/source/BbDatePickerInput.md +306 -269
- package/dist/ai/source/BbDialog.md +49 -14
- package/dist/ai/source/BbDropdown.md +314 -197
- package/dist/ai/source/BbDropdownButton.md +197 -31
- package/dist/ai/source/BbDropdownGroup.md +274 -176
- package/dist/ai/source/BbForm.md +50 -6
- package/dist/ai/source/BbHoverCard.md +12 -5
- package/dist/ai/source/BbIcon.md +4 -3
- package/dist/ai/source/BbIndicator.md +73 -52
- package/dist/ai/source/BbNumberInput.md +293 -257
- package/dist/ai/source/BbOffCanvas.md +55 -29
- package/dist/ai/source/BbPopover.md +14 -10
- package/dist/ai/source/BbRadioGroup.md +413 -297
- package/dist/ai/source/BbSelect.md +549 -435
- package/dist/ai/source/BbSelectPopover.md +128 -33
- package/dist/ai/source/BbSwitchGroup.md +70 -10
- package/dist/ai/source/BbTable.md +369 -37
- package/dist/ai/source/BbTabs.md +115 -39
- package/dist/ai/source/BbTabsList.md +106 -38
- package/dist/ai/source/BbTabsPanels.md +96 -36
- package/dist/ai/source/BbTabsRoot.md +96 -36
- package/dist/ai/source/BbTag.md +267 -233
- package/dist/ai/source/BbTextInput.md +261 -225
- package/dist/ai/source/BbTextarea.md +251 -215
- package/dist/ai/source/BbTimePicker.md +11 -7
- package/dist/ai/source/BbTimePickerInput.md +257 -220
- package/dist/ai/source/BbToast.md +73 -32
- package/dist/ai/source/BbToastPortal.md +65 -30
- package/dist/ai/source/BbTooltip.md +148 -113
- package/dist/ai/source/CommonPopover.md +6 -1
- package/dist/ai/source/FlatListBox.md +19 -9
- package/dist/ai/source/GroupedListBox.md +19 -9
- package/dist/ai/source/OptionsContainer.md +25 -9
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +61 -36
- package/dist/components/BbAlert/types.d.ts +9 -5
- package/dist/components/BbAlert/types.js +8 -3
- package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +3 -3
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +26 -17
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +103 -50
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +20 -15
- package/dist/components/BbBadge/badgeButtonContext.d.ts +12 -1
- package/dist/components/BbBadge/types.d.ts +45 -15
- package/dist/components/BbBadge/types.js +12 -3
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -126
- package/dist/components/BbBaseButton/types.d.ts +23 -4
- package/dist/components/BbBaseButton/types.js +7 -1
- package/dist/components/BbBaseButton/useLinkState.d.ts +41 -0
- package/dist/components/BbBaseButton/useLinkState.js +70 -0
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +130 -74
- package/dist/components/BbButton/types.d.ts +50 -13
- package/dist/components/BbButton/types.js +10 -3
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +148 -95
- package/dist/components/BbCheckboxGroup/types.d.ts +34 -11
- package/dist/components/BbCheckboxGroup/types.js +9 -4
- package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +1 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +134 -93
- package/dist/components/BbColorInput/types.d.ts +11 -4
- package/dist/components/BbColorInput/types.js +9 -3
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +82 -59
- package/dist/components/BbConfirm/types.d.ts +9 -4
- package/dist/components/BbConfirm/types.js +8 -3
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +68 -67
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +1 -1
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +259 -215
- package/dist/components/BbDatePickerInput/types.d.ts +12 -5
- package/dist/components/BbDatePickerInput/types.js +9 -3
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +223 -219
- package/dist/components/BbDialog/useDialogStack.d.ts +1 -1
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +104 -89
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +323 -285
- package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +411 -319
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +100 -98
- package/dist/components/BbDropdown/DropdownRow.vue.d.ts +4 -3
- package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +49 -28
- package/dist/components/BbDropdown/normalizeGroups.d.ts +6 -0
- package/dist/components/BbDropdown/normalizeGroups.js +21 -15
- package/dist/components/BbDropdown/types.d.ts +59 -12
- package/dist/components/BbDropdown/types.js +16 -3
- package/dist/components/BbDropdown/useDropdownContext.d.ts +6 -0
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +2 -1
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +179 -68
- package/dist/components/BbDropdownButton/types.d.ts +44 -16
- package/dist/components/BbDropdownButton/types.js +28 -3
- package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +111 -89
- package/dist/components/BbForm/formSchema.d.ts +13 -0
- package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +100 -100
- package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +40 -25
- package/dist/components/BbIndicator/types.d.ts +9 -5
- package/dist/components/BbIndicator/types.js +8 -3
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +243 -202
- package/dist/components/BbNumberInput/types.d.ts +12 -5
- package/dist/components/BbNumberInput/types.js +9 -3
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +401 -399
- package/dist/components/BbOffCanvas/types.d.ts +6 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +81 -80
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +158 -105
- package/dist/components/BbRadioGroup/types.d.ts +21 -7
- package/dist/components/BbRadioGroup/types.js +9 -4
- package/dist/components/BbSelect/BbSelect.vue.d.ts +4 -3
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +181 -137
- package/dist/components/BbSelect/types.d.ts +36 -22
- package/dist/components/BbSelect/types.js +22 -3
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +4 -4
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +543 -532
- package/dist/components/BbSelectPopover/knownItems.d.ts +5 -0
- package/dist/components/BbSelectPopover/types.d.ts +46 -12
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbSwitchGroup/types.d.ts +14 -4
- package/dist/components/BbSwitchGroup/types.js +8 -3
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1102 -995
- package/dist/components/BbTable/estimatedFloors.golden.d.ts +25 -0
- package/dist/components/BbTable/measuredFloors.d.ts +46 -0
- package/dist/components/BbTable/measuredFloors.js +322 -0
- package/dist/components/BbTable/measuredFloorsTestKit.d.ts +27 -0
- package/dist/components/BbTable/textRuler.d.ts +71 -0
- package/dist/components/BbTable/textRuler.js +121 -0
- package/dist/components/BbTable/utils.d.ts +113 -6
- package/dist/components/BbTable/utils.js +118 -65
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +53 -35
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +62 -45
- package/dist/components/BbTabs/types.d.ts +26 -11
- package/dist/components/BbTabs/types.js +23 -8
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +205 -164
- package/dist/components/BbTag/types.d.ts +11 -4
- package/dist/components/BbTag/types.js +9 -3
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +98 -57
- package/dist/components/BbTextInput/types.d.ts +12 -5
- package/dist/components/BbTextInput/types.js +9 -3
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +137 -96
- package/dist/components/BbTextarea/types.d.ts +12 -5
- package/dist/components/BbTextarea/types.js +9 -3
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +105 -104
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +241 -197
- package/dist/components/BbTimePickerInput/types.d.ts +12 -5
- package/dist/components/BbTimePickerInput/types.js +9 -3
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +74 -32
- package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +47 -47
- package/dist/components/BbToast/types.d.ts +10 -5
- package/dist/components/BbToast/types.js +18 -3
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +85 -71
- package/dist/components/BbTooltip/types.d.ts +13 -8
- package/dist/components/BbTooltip/types.js +8 -3
- package/dist/components/CommonField/CommonField.vue.d.ts +1 -1
- package/dist/components/CommonPopover/CommonPopover.vue.d.ts +1 -1
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +69 -69
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +53 -50
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +146 -143
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/components/OptionsContainer/types.d.ts +14 -3
- package/dist/composables/useBbFormContext.d.ts +4 -3
- package/dist/composables/useBbTabsContext.js +99 -85
- package/dist/composables/useChoiceIndicator.d.ts +58 -0
- package/dist/composables/useChoiceIndicator.js +197 -0
- package/dist/composables/useConfirm.d.ts +4 -4
- package/dist/composables/usePassthrough.d.ts +54 -1
- package/dist/composables/usePassthrough.js +100 -71
- package/dist/directives/bbTooltip.d.ts +12 -6
- package/dist/directives/createPopoverDirective.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/llms-full.txt +2300 -543
- package/dist/llms-medium.txt +71 -53
- package/dist/llms.txt +2 -1
- package/dist/passthrough-deduper.js +6 -3
- package/dist/project-dts.d.ts +24 -0
- package/dist/project-dts.js +43 -17
- package/dist/styles.css +2 -2
- package/dist/types/AlertVariant.d.ts +14 -0
- package/dist/types/AlertVariant.js +9 -0
- package/dist/types/BadgeVariant.d.ts +14 -0
- package/dist/types/BadgeVariant.js +9 -0
- package/dist/types/ButtonVariant.d.ts +16 -0
- package/dist/types/ButtonVariant.js +11 -0
- package/dist/types/CheckboxVariant.d.ts +38 -0
- package/dist/types/CheckboxVariant.js +4 -0
- package/dist/types/CommonProps.d.ts +4 -3
- package/dist/types/Config.d.ts +7 -0
- package/dist/types/ConfirmVariant.d.ts +12 -0
- package/dist/types/ConfirmVariant.js +4 -0
- package/dist/types/DropdownItemVariant.d.ts +12 -0
- package/dist/types/DropdownItemVariant.js +4 -0
- package/dist/types/IndicatorVariant.d.ts +15 -0
- package/dist/types/IndicatorVariant.js +10 -0
- package/dist/types/InputVariant.d.ts +13 -0
- package/dist/types/InputVariant.js +8 -0
- package/dist/types/RadioVariant.d.ts +38 -0
- package/dist/types/RadioVariant.js +4 -0
- package/dist/types/TabsVariant.d.ts +13 -0
- package/dist/types/TabsVariant.js +8 -0
- package/dist/types/ToastVariant.d.ts +15 -0
- package/dist/types/ToastVariant.js +10 -0
- package/dist/types/TooltipVariant.d.ts +12 -0
- package/dist/types/TooltipVariant.js +4 -0
- package/dist/types/passthrough.d.ts +83 -15
- package/dist/types/passthrough.js +2 -2
- package/dist/types/ptComponentMap.d.ts +35 -23
- package/dist/utilities/functions/extractDomContainer.d.ts +20 -1
- package/dist/utilities/functions/extractDomContainer.js +8 -3
- package/dist/utils/focusVisibility.d.ts +6 -0
- package/dist/utils/focusVisibility.js +4 -1
- package/dist/utils/passthroughDeduper.d.ts +14 -0
- package/dist/utils/versionCheck.js +1 -1
- package/dist/vite-plugin.d.ts +64 -7
- package/dist/vite.js +385 -259
- package/llms.txt +2 -1
- package/package.json +3 -3
- package/scripts/lib/adoption-checklist.json +312 -0
- package/scripts/lib/eslint-plugin.d.ts +13 -0
- package/scripts/lib/eslint-plugin.mjs +75 -11
- package/scripts/lib/idiom-scan.mjs +65 -0
- package/scripts/lib/mcp-config.mjs +203 -9
- package/scripts/lib/migrate-fix.mjs +42 -1
- package/scripts/lib/project-variant-dts.mjs +18 -0
- package/scripts/lib/validate-bb-markup.mjs +99 -2
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
'bb-offcanvas--swipe-exit': swipeExiting,
|
|
29
29
|
'bb-offcanvas--instant-stack': instantStack,
|
|
30
30
|
'bb-offcanvas--covered': isCovered,
|
|
31
|
-
'bb-offcanvas--
|
|
31
|
+
'bb-offcanvas--above': isStackedAbove,
|
|
32
32
|
'bb-offcanvas--has-handle': draggable,
|
|
33
33
|
'bb-offcanvas--no-header': !renderHeader(),
|
|
34
34
|
'bb-offcanvas--keyboard': keyboardInset > 0,
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
'bb-offcanvas--snap-low': isBelowTopStop(),
|
|
37
37
|
'bb-offcanvas--snap-settling': snapMotion === 'settle',
|
|
38
38
|
'bb-offcanvas--snap-instant': snapMotion === 'instant',
|
|
39
|
-
[`bb-offcanvas--${
|
|
39
|
+
[`bb-offcanvas--${side}`]: true,
|
|
40
40
|
},
|
|
41
41
|
].flat()
|
|
42
42
|
"
|
|
@@ -229,12 +229,14 @@ import { useLogger } from '@/composables/useLogger';
|
|
|
229
229
|
import { useMobile } from '@/composables/useMobile';
|
|
230
230
|
import { viewportWidth, viewportHeight } from '@/composables/useViewportWidth';
|
|
231
231
|
import { useBreakpoint } from '@/composables/useBreakpoint';
|
|
232
|
+
import { hydrationGate } from '@/composables/useHydrated';
|
|
232
233
|
import { useUntil } from '../../composables/useUntil';
|
|
233
234
|
import { removedPropsFor } from '@/deprecation/removedProps';
|
|
234
235
|
import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
|
|
235
236
|
import { wait } from '@/utilities/functions/wait';
|
|
236
237
|
import { animationsSettled } from '@/utilities/functions/animationsSettled';
|
|
237
238
|
import { transitions } from '@/utilities/misc/transitions';
|
|
239
|
+
import { firstFocusableMatch } from '@/utils/focusVisibility';
|
|
238
240
|
import { overlaySurfaceIsolation } from '@/utils/overlaySurfaceIsolation';
|
|
239
241
|
import { useConfig } from '@/composables/useConfig';
|
|
240
242
|
import CloseButton from '../CloseIcon/CloseButton.vue';
|
|
@@ -256,6 +258,7 @@ import {
|
|
|
256
258
|
type BbOffCanvasProps,
|
|
257
259
|
type BbOffCanvasEvents,
|
|
258
260
|
type BbOffCanvasSlots,
|
|
261
|
+
type OffCanvasSide,
|
|
259
262
|
type Sizes,
|
|
260
263
|
} from './types';
|
|
261
264
|
import { usePassthrough } from '@/composables/usePassthrough';
|
|
@@ -545,9 +548,7 @@ const removeEscapeListener = () => {
|
|
|
545
548
|
|
|
546
549
|
const focusDialogTarget = () => {
|
|
547
550
|
if (!props.focusTarget) return;
|
|
548
|
-
|
|
549
|
-
if (!(element instanceof HTMLElement)) return;
|
|
550
|
-
element.focus();
|
|
551
|
+
firstFocusableMatch(dialog.value, props.focusTarget)?.focus();
|
|
551
552
|
};
|
|
552
553
|
|
|
553
554
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
@@ -572,6 +573,7 @@ const handleKeyDown = (e: KeyboardEvent) => {
|
|
|
572
573
|
let releaseTopLayer: (() => void) | null = null;
|
|
573
574
|
const toggleDialog = async (value: boolean) => {
|
|
574
575
|
if (value) {
|
|
576
|
+
side.value = resolveResponsive(props.side);
|
|
575
577
|
emit('show');
|
|
576
578
|
openedTimes.value++;
|
|
577
579
|
addEscapeListener();
|
|
@@ -752,6 +754,25 @@ const denyClose = ref(false);
|
|
|
752
754
|
|
|
753
755
|
const { isMobile } = useMobile();
|
|
754
756
|
const { resolve: resolveResponsive } = useBreakpoint();
|
|
757
|
+
|
|
758
|
+
/**
|
|
759
|
+
* The side of the current opening (Q76.12 a). A per-breakpoint `side` is
|
|
760
|
+
* resolved when the panel opens and then FROZEN: an open panel never swings
|
|
761
|
+
* on a resize; the next opening resolves it again. Everything that reads the
|
|
762
|
+
* side (the side class the CSS keys off: the slide, insets, rounding; the
|
|
763
|
+
* drag axis; the stack; the snap) reads this. A new `side` value from the
|
|
764
|
+
* author still applies at once.
|
|
765
|
+
*/
|
|
766
|
+
const side = ref<OffCanvasSide>(resolveResponsive(props.side));
|
|
767
|
+
watch(
|
|
768
|
+
() => JSON.stringify(props.side),
|
|
769
|
+
() => (side.value = resolveResponsive(props.side))
|
|
770
|
+
);
|
|
771
|
+
// Before hydration the width is the server's answer (`ssrViewportWidth`),
|
|
772
|
+
// not a measurement: a panel opened then (open on load) takes the real one
|
|
773
|
+
// as the gate opens, before its first paint.
|
|
774
|
+
watch(hydrationGate, () => (side.value = resolveResponsive(props.side)));
|
|
775
|
+
|
|
755
776
|
const isFullscreen = computed(
|
|
756
777
|
() =>
|
|
757
778
|
props.fullscreen === true ||
|
|
@@ -775,11 +796,11 @@ const {
|
|
|
775
796
|
|
|
776
797
|
/** Axis the panel travels along: horizontal for left/right, vertical otherwise. */
|
|
777
798
|
const dragAxis = computed<'x' | 'y'>(() =>
|
|
778
|
-
|
|
799
|
+
side.value === 'left' || side.value === 'right' ? 'x' : 'y'
|
|
779
800
|
);
|
|
780
801
|
/** +1 when the panel exits toward the positive axis end (right / bottom). */
|
|
781
802
|
const closeSign = computed(() =>
|
|
782
|
-
|
|
803
|
+
side.value === 'right' || side.value === 'bottom' ? 1 : -1
|
|
783
804
|
);
|
|
784
805
|
|
|
785
806
|
/**
|
|
@@ -819,7 +840,7 @@ const enterStack = () => {
|
|
|
819
840
|
pushStack(
|
|
820
841
|
registeredStack,
|
|
821
842
|
stackId,
|
|
822
|
-
|
|
843
|
+
side.value,
|
|
823
844
|
measureSize(),
|
|
824
845
|
props.stackGap
|
|
825
846
|
);
|
|
@@ -847,17 +868,17 @@ const isCovered = computed(() => {
|
|
|
847
868
|
/**
|
|
848
869
|
* Dim per panel, blur on the bottom-most. Every open offcanvas paints its own
|
|
849
870
|
* dim backdrop, so a child darkens the panels beneath it and that dim fades in
|
|
850
|
-
* and out with the child alone. Panels above the bottom-most are `--
|
|
851
|
-
* its own dim (`--bb-overlay-
|
|
871
|
+
* and out with the child alone. Panels above the bottom-most are `--above`:
|
|
872
|
+
* its own dim (`--bb-overlay-above`) and no `backdrop-filter`. The bottom
|
|
852
873
|
* panel keeps its blur and full dim untouched while panels open and close
|
|
853
874
|
* above it — no handoff, so nothing beneath brightens or re-blurs as the pile
|
|
854
875
|
* shrinks, and the pile costs one blur pass however deep it goes. Keyed off
|
|
855
|
-
* the global open order, not the `stack` name. Mirrors `bb-dialog--
|
|
876
|
+
* the global open order, not the `stack` name. Mirrors `bb-dialog--above`.
|
|
856
877
|
*
|
|
857
878
|
* Latched through the close: a closing panel leaves `openOrder` at
|
|
858
879
|
* close-START (so the parent un-covers and un-pushes at once, see
|
|
859
880
|
* `toggleDialog`) but keeps painting its backdrop for the whole fade, so it
|
|
860
|
-
* must keep its `--
|
|
881
|
+
* must keep its `--above` dress until it is gone — otherwise the blur and
|
|
861
882
|
* the full dim would snap onto it, over the parent, for the length of the
|
|
862
883
|
* fade. The live order rules while registered; the last registered answer
|
|
863
884
|
* rules while still visible after leaving.
|
|
@@ -878,11 +899,11 @@ const isStackedAbove = computed(() => {
|
|
|
878
899
|
|
|
879
900
|
// Re-register if the `stack` name, `direction` or `stackGap` changes while open,
|
|
880
901
|
// so the registry's bookkeeping (order, direction, size, gap) stays in sync.
|
|
881
|
-
watch([stackName, () =>
|
|
902
|
+
watch([stackName, () => side.value, () => props.stackGap], ([name]) => {
|
|
882
903
|
if (registeredStack === null) return;
|
|
883
904
|
removeStack(registeredStack, stackId);
|
|
884
905
|
registeredStack = name;
|
|
885
|
-
pushStack(name, stackId,
|
|
906
|
+
pushStack(name, stackId, side.value, measureSize(), props.stackGap);
|
|
886
907
|
});
|
|
887
908
|
|
|
888
909
|
/** Page margin a dialog keeps from the viewport edge (mirrors `--page-padding`). */
|
|
@@ -922,7 +943,7 @@ let prevPeerCount = 0;
|
|
|
922
943
|
const isBehindSameDirectionPeer = () => {
|
|
923
944
|
const list = stacks.value[stackName.value];
|
|
924
945
|
if (!list) return false;
|
|
925
|
-
const chain = list.filter((entry) => entry.direction ===
|
|
946
|
+
const chain = list.filter((entry) => entry.direction === side.value);
|
|
926
947
|
const selfIndex = chain.findIndex((entry) => entry.id === stackId);
|
|
927
948
|
return selfIndex !== -1 && selfIndex !== chain.length - 1;
|
|
928
949
|
};
|
|
@@ -1020,7 +1041,7 @@ watch(
|
|
|
1020
1041
|
{ flush: 'post' }
|
|
1021
1042
|
);
|
|
1022
1043
|
|
|
1023
|
-
watch([() => props.draggable, () =>
|
|
1044
|
+
watch([() => props.draggable, () => side.value, isVisible] as const, () =>
|
|
1024
1045
|
syncBodyDismissTouchAction()
|
|
1025
1046
|
);
|
|
1026
1047
|
|
|
@@ -1057,11 +1078,11 @@ const applyDismissTransform = () => {
|
|
|
1057
1078
|
const el = dialog.value;
|
|
1058
1079
|
if (!el) return;
|
|
1059
1080
|
el.style.transform =
|
|
1060
|
-
|
|
1081
|
+
side.value === 'bottom'
|
|
1061
1082
|
? 'translate3d(0, 100%, 0)'
|
|
1062
|
-
:
|
|
1083
|
+
: side.value === 'top'
|
|
1063
1084
|
? 'translate3d(0, -100%, 0)'
|
|
1064
|
-
:
|
|
1085
|
+
: side.value === 'left'
|
|
1065
1086
|
? 'translate3d(-100%, 0, 0)'
|
|
1066
1087
|
: 'translate3d(100%, 0, 0)';
|
|
1067
1088
|
};
|
|
@@ -1261,7 +1282,7 @@ const { lengthX, lengthY } = useSwipe(dialog, {
|
|
|
1261
1282
|
|
|
1262
1283
|
const snapActive = computed(
|
|
1263
1284
|
() =>
|
|
1264
|
-
|
|
1285
|
+
side.value === 'bottom' &&
|
|
1265
1286
|
props.draggable &&
|
|
1266
1287
|
!isFullscreen.value &&
|
|
1267
1288
|
!!props.snapPoints?.length
|
|
@@ -1708,6 +1729,9 @@ import type { BbSnapPoint } from './sheetSnap';
|
|
|
1708
1729
|
export type { Sizes, BbSnapPoint };
|
|
1709
1730
|
type OffCanvasSize = NonNullable<Size<Sizes>['size']> | 'auto';
|
|
1710
1731
|
|
|
1732
|
+
/** The viewport edge a `BbOffCanvas` docks to. */
|
|
1733
|
+
export type OffCanvasSide = 'left' | 'top' | 'right' | 'bottom';
|
|
1734
|
+
|
|
1711
1735
|
/**
|
|
1712
1736
|
* Passthrough parts of `BbOffCanvas` (plans/passthrough/BbOffCanvas.md).
|
|
1713
1737
|
*
|
|
@@ -1894,11 +1918,13 @@ export type BbOffCanvasProps = {
|
|
|
1894
1918
|
*/
|
|
1895
1919
|
transitionDuration?: number;
|
|
1896
1920
|
/**
|
|
1897
|
-
* Which viewport edge the offcanvas docks to (and slides in from).
|
|
1921
|
+
* Which viewport edge the offcanvas docks to (and slides in from). Also a
|
|
1922
|
+
* per-breakpoint map (e.g. `{ default: 'bottom', md: 'right' }`), resolved
|
|
1923
|
+
* when the panel opens: an open panel keeps its side through a resize.
|
|
1898
1924
|
*
|
|
1899
1925
|
* @defaultValue `'left'`
|
|
1900
1926
|
*/
|
|
1901
|
-
side?: 'left' | 'top' | 'right' | 'bottom'
|
|
1927
|
+
side?: Responsive<'left' | 'top' | 'right' | 'bottom'>;
|
|
1902
1928
|
};
|
|
1903
1929
|
|
|
1904
1930
|
export type BbOffCanvasEvents = {
|
|
@@ -2170,7 +2196,7 @@ export type BbOffCanvasSlots = {
|
|
|
2170
2196
|
/* A `covered` panel (another open panel sits on top) drops its `will-change`
|
|
2171
2197
|
layer, since it can't be dragged. Must follow `--visible` to win the
|
|
2172
2198
|
equal-specificity `will-change`. Its backdrop is untouched: which panel
|
|
2173
|
-
paints the backdrop is decided by `--
|
|
2199
|
+
paints the backdrop is decided by `--above` below. */
|
|
2174
2200
|
&.bb-offcanvas--covered {
|
|
2175
2201
|
will-change: auto;
|
|
2176
2202
|
}
|
|
@@ -2553,17 +2579,17 @@ export type BbOffCanvasSlots = {
|
|
|
2553
2579
|
dim, so a child darkens the parent beneath it, and that dim fades in and
|
|
2554
2580
|
out with the child alone: the bottom panel's backdrop is never handed
|
|
2555
2581
|
off while panels come and go above it, so nothing beneath brightens or
|
|
2556
|
-
re-blurs mid-close. Panels above the first are `--
|
|
2557
|
-
(`--bb-overlay-
|
|
2582
|
+
re-blurs mid-close. Panels above the first are `--above`: their own dim
|
|
2583
|
+
(`--bb-overlay-above`, the same as `--bb-overlay` by default; `transparent`
|
|
2558
2584
|
collapses the pile to a single dim) and NO filter, because stacked
|
|
2559
2585
|
`backdrop-filter`s each reblur the whole scene and choke the GPU past a
|
|
2560
2586
|
handful, and a blur that moved between layers would snap. Opacity is
|
|
2561
2587
|
left to `--open` / `--swipe-exit`, which is what lets the stacked dim
|
|
2562
|
-
fade. Mirrors `bb-dialog--
|
|
2563
|
-
&.bb-offcanvas--
|
|
2588
|
+
fade. Mirrors `bb-dialog--above`. */
|
|
2589
|
+
&.bb-offcanvas--above::backdrop {
|
|
2564
2590
|
-webkit-backdrop-filter: none;
|
|
2565
2591
|
backdrop-filter: none;
|
|
2566
|
-
background-color: var(--bb-overlay-
|
|
2592
|
+
background-color: var(--bb-overlay-above);
|
|
2567
2593
|
}
|
|
2568
2594
|
|
|
2569
2595
|
&.bb-offcanvas--deny-close {
|
|
@@ -2588,7 +2614,7 @@ export type BbOffCanvasSlots = {
|
|
|
2588
2614
|
&::backdrop {
|
|
2589
2615
|
/* Keep blur subtle to reduce GPU cost while softening page content. The
|
|
2590
2616
|
blur and the full dim belong to the bottom-most open panel only — see
|
|
2591
|
-
`--
|
|
2617
|
+
the `--above` rule above. */
|
|
2592
2618
|
-webkit-backdrop-filter: blur(var(--bb-overlay-blur, 2px));
|
|
2593
2619
|
backdrop-filter: blur(var(--bb-overlay-blur, 2px));
|
|
2594
2620
|
background-color: var(--bb-overlay);
|
|
@@ -179,7 +179,12 @@ import { useConfig } from '@/composables/useConfig';
|
|
|
179
179
|
import CommonPopover from '../CommonPopover/CommonPopover.vue';
|
|
180
180
|
import type { CommonPopoverAvailableSpace } from '../CommonPopover/types';
|
|
181
181
|
import BbOffCanvas from '../BbOffCanvas/BbOffCanvas.vue';
|
|
182
|
-
import {
|
|
182
|
+
import {
|
|
183
|
+
domElement,
|
|
184
|
+
extractDomContainer,
|
|
185
|
+
extractHtmlContainer,
|
|
186
|
+
type DomHost,
|
|
187
|
+
} from '@/utilities/functions/extractDomContainer';
|
|
183
188
|
import { parseWidthString } from '@/utilities/functions/parseWidthString';
|
|
184
189
|
import { removedPropsFor } from '@/deprecation/removedProps';
|
|
185
190
|
import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
|
|
@@ -191,6 +196,7 @@ import {
|
|
|
191
196
|
type PopoverTrigger,
|
|
192
197
|
} from './types';
|
|
193
198
|
import { usePassthrough } from '@/composables/usePassthrough';
|
|
199
|
+
import { firstFocusableMatch } from '@/utils/focusVisibility';
|
|
194
200
|
import { withoutClass, withoutPt } from '@/utils/passthrough';
|
|
195
201
|
import { BB_OFF_CANVAS_PT } from '../BbOffCanvas/types';
|
|
196
202
|
import { transitions } from '@/utilities/misc/transitions';
|
|
@@ -232,7 +238,7 @@ const { id } = useId();
|
|
|
232
238
|
const activatorId = props.id ?? id.value;
|
|
233
239
|
const popoverId = `bbp_${activatorId}`;
|
|
234
240
|
|
|
235
|
-
const activatorEl = ref<
|
|
241
|
+
const activatorEl = ref<DomHost>();
|
|
236
242
|
/**
|
|
237
243
|
* The id the panel is labelled by. An external activator that already has an
|
|
238
244
|
* id keeps it (like BbDropdown and BbSelectPopover): overwriting it broke the
|
|
@@ -243,7 +249,7 @@ const labelledById = computed(
|
|
|
243
249
|
() => (hasExternalActivator.value && activatorEl.value?.id) || activatorId
|
|
244
250
|
);
|
|
245
251
|
const popoverRef = useTemplateRef('popover-ref');
|
|
246
|
-
const popoverEl = computed(() =>
|
|
252
|
+
const popoverEl = computed(() => extractHtmlContainer(popoverRef.value));
|
|
247
253
|
|
|
248
254
|
const hasOpenedOnce = useUntil(isOpen);
|
|
249
255
|
const hasExternalActivator = computed(() => props.activator != null);
|
|
@@ -444,7 +450,7 @@ watch(
|
|
|
444
450
|
|
|
445
451
|
// Close when activator scrolls out of view
|
|
446
452
|
useIntersectionObserver(
|
|
447
|
-
activatorEl,
|
|
453
|
+
() => domElement(activatorEl.value),
|
|
448
454
|
([{ intersectionRatio }]) => {
|
|
449
455
|
// A modal sheet is detached from the activator's position, so it must not
|
|
450
456
|
// close just because the activator scrolls out of view.
|
|
@@ -678,11 +684,7 @@ const runOpenEffects = async () => {
|
|
|
678
684
|
const focusSelector =
|
|
679
685
|
props.focusTarget ??
|
|
680
686
|
'[tabindex]:not([tabindex="-1"]), button, a, input, select, textarea';
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
if (focusTarget instanceof HTMLElement) {
|
|
684
|
-
focusTarget.focus();
|
|
685
|
-
}
|
|
687
|
+
firstFocusableMatch(popoverEl.value, focusSelector)?.focus();
|
|
686
688
|
};
|
|
687
689
|
|
|
688
690
|
const runCloseEffects = () => {
|
|
@@ -874,7 +876,9 @@ const needsReactiveWidth = computed(() => {
|
|
|
874
876
|
});
|
|
875
877
|
|
|
876
878
|
const { width: activatorWidth } = useElementSize(
|
|
877
|
-
computed(() =>
|
|
879
|
+
computed(() =>
|
|
880
|
+
domElement(needsReactiveWidth.value ? activatorEl.value : undefined)
|
|
881
|
+
),
|
|
878
882
|
{ width: 0, height: 0 },
|
|
879
883
|
{ box: 'border-box' }
|
|
880
884
|
);
|