bitboss-ui 3.0.0-beta.47 → 3.0.0-beta.49
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 +24 -7
- package/bin/bitboss-ui-mcp.mjs +15 -3
- package/bin/bitboss-ui.mjs +167 -14
- package/dist/ai/BbAccordion.md +1 -1
- package/dist/ai/BbAvatar.md +1 -1
- package/dist/ai/BbBreadcrumbs.md +65 -65
- package/dist/ai/BbButton.md +28 -8
- package/dist/ai/BbCheckbox.md +0 -2
- package/dist/ai/BbCheckboxGroup.md +13 -20
- package/dist/ai/BbCollapsible.md +1 -1
- package/dist/ai/BbColorPalette.md +1 -1
- package/dist/ai/BbConfirm.md +8 -0
- package/dist/ai/BbConfirmPortal.md +1 -1
- package/dist/ai/BbDatePickerInput.md +4 -2
- package/dist/ai/BbDialog.md +1 -8
- package/dist/ai/BbDropdown.md +231 -220
- package/dist/ai/BbDropdownButton.md +65 -65
- package/dist/ai/BbDropdownGroup.md +2 -2
- package/dist/ai/BbDropzone.md +10 -10
- package/dist/ai/BbForm.md +43 -52
- package/dist/ai/BbHoverCard.md +19 -7
- package/dist/ai/BbHoverCardPortal.md +1 -1
- package/dist/ai/BbNumberInput.md +88 -21
- package/dist/ai/BbPopover.md +47 -40
- package/dist/ai/BbPopoverPortal.md +1 -1
- package/dist/ai/BbProgress.md +48 -22
- package/dist/ai/BbRadioGroup.md +13 -19
- package/dist/ai/BbSelect.md +16 -36
- package/dist/ai/BbSelectPopover.md +14 -30
- package/dist/ai/BbSmoothHeight.md +0 -2
- package/dist/ai/BbSwitchGroup.md +13 -20
- package/dist/ai/BbTable.md +11 -10
- package/dist/ai/BbTabs.md +107 -106
- package/dist/ai/BbTabsList.md +2 -2
- package/dist/ai/BbTabsPanels.md +1 -1
- package/dist/ai/BbTabsRoot.md +3 -3
- package/dist/ai/BbTooltip.md +29 -13
- package/dist/ai/BbTree.md +14 -11
- package/dist/ai/CommonPopover.md +1 -1
- package/dist/ai/changelog.json +297 -6
- package/dist/ai/components.json +50 -45
- package/dist/ai/composables/useBbDropdownContext.md +16 -16
- package/dist/ai/composables/useBbFormField.md +5 -1
- package/dist/ai/composables/useBbTabsContext.md +14 -14
- package/dist/ai/guides/agent-contract.md +27 -27
- package/dist/ai/guides/ai-router.md +1 -1
- package/dist/ai/guides/component-picker.md +3 -3
- package/dist/ai/guides/fetch-items-playbook.md +1 -1
- package/dist/ai/guides/icons-policy.md +10 -10
- package/dist/ai/guides/inertia-helpers.md +120 -67
- package/dist/ai/guides/installation-and-plugin-setup.md +45 -15
- package/dist/ai/guides/migration/components/bb-breadcrumbs.md +3 -2
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -16
- package/dist/ai/guides/migration/components/bb-dropdown-button.md +9 -8
- package/dist/ai/guides/migration/components/bb-dropdown.md +15 -14
- package/dist/ai/guides/migration/components/bb-radio-group.md +2 -1
- package/dist/ai/guides/migration/components/bb-select-popover.md +6 -1
- package/dist/ai/guides/migration/components/bb-select.md +10 -2
- package/dist/ai/guides/migration/components/bb-switch-group.md +2 -1
- package/dist/ai/guides/migration/components/bb-tabs.md +9 -8
- package/dist/ai/guides/migration/components/bb-tooltip.md +1 -1
- package/dist/ai/guides/migration/v2-to-v3.md +143 -28
- package/dist/ai/guides/migration/v3-beta-css-classes.md +29 -27
- package/dist/ai/guides/migration/v3-beta-tooling.md +11 -0
- package/dist/ai/guides/options-items-playbook.md +30 -24
- package/dist/ai/guides/passthrough.md +4 -4
- package/dist/ai/guides/preset-components.md +18 -3
- package/dist/ai/guides/typescript-generic-components.md +1 -1
- package/dist/ai/guides/validated-forms.md +11 -22
- package/dist/ai/guides/validation-providers.md +4 -3
- package/dist/ai/helpers/inertia/manifest.json +636 -0
- package/dist/ai/helpers/inertia/types.ts +15 -0
- package/dist/ai/helpers/inertia/useAsyncFn.ts +110 -0
- package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +102 -0
- package/dist/ai/helpers/inertia/useDeleteCmd.ts +30 -0
- package/dist/ai/helpers/inertia/useHasChanged.ts +36 -0
- package/dist/ai/helpers/inertia/useIndexById.ts +23 -0
- package/dist/ai/helpers/inertia/useLazyProp.ts +148 -0
- package/dist/ai/helpers/inertia/useLazyPropGetter.ts +50 -0
- package/dist/ai/helpers/inertia/useLoading.ts +20 -0
- package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +88 -0
- package/dist/ai/helpers/inertia/usePromiseForm.ts +62 -0
- package/dist/ai/helpers/inertia/useProp.ts +63 -0
- package/dist/ai/helpers/inertia/useQuery.ts +19 -0
- package/dist/ai/helpers/inertia/useQueryObject.ts +116 -0
- package/dist/ai/helpers/inertia/useResourceContext.ts +69 -0
- package/dist/ai/helpers/inertia/useRouteQuery.ts +54 -0
- package/dist/ai/helpers/inertia/useScreenSizes.ts +23 -0
- package/dist/ai/helpers/inertia/useTableContext.ts +34 -0
- package/dist/ai/helpers/inertia/useTableSelectionContext.ts +48 -0
- package/dist/ai/helpers/inertia/useUntil.ts +33 -0
- package/dist/ai/helpers/inertia/utils.ts +24 -0
- package/dist/ai/index.md +6 -6
- package/dist/ai/manifest/components/BbAccordion.json +1 -1
- package/dist/ai/manifest/components/BbBreadcrumbs.json +10 -6
- package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
- package/dist/ai/manifest/components/BbButton.json +2 -1
- package/dist/ai/manifest/components/BbButton.tree.json +1 -1
- package/dist/ai/manifest/components/BbCheckboxGroup.json +2 -2
- package/dist/ai/manifest/components/BbCollapsible.json +1 -1
- package/dist/ai/manifest/components/BbColorPalette.json +1 -1
- package/dist/ai/manifest/components/BbConfirmPortal.json +5 -2
- package/dist/ai/manifest/components/BbDropdown.json +23 -20
- package/dist/ai/manifest/components/BbDropdown.tree.json +2 -2
- package/dist/ai/manifest/components/BbDropdownButton.json +22 -19
- package/dist/ai/manifest/components/BbDropdownButton.tree.json +1 -1
- package/dist/ai/manifest/components/BbDropdownGroup.json +2 -2
- package/dist/ai/manifest/components/BbForm.json +1 -0
- package/dist/ai/manifest/components/BbHoverCard.json +1 -1
- package/dist/ai/manifest/components/BbHoverCardPortal.json +2 -2
- package/dist/ai/manifest/components/BbNumberInput.json +6 -1
- package/dist/ai/manifest/components/BbNumberInput.tree.json +2 -1
- package/dist/ai/manifest/components/BbPopover.json +2 -1
- package/dist/ai/manifest/components/BbPopoverPortal.json +2 -2
- package/dist/ai/manifest/components/BbProgress.json +6 -6
- package/dist/ai/manifest/components/BbProgress.tree.json +1 -0
- package/dist/ai/manifest/components/BbRadioGroup.json +2 -2
- package/dist/ai/manifest/components/BbSelect.json +2 -2
- package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
- package/dist/ai/manifest/components/BbSelectPopover.json +2 -2
- package/dist/ai/manifest/components/BbSelectPopover.tree.json +1 -1
- package/dist/ai/manifest/components/BbSwitchGroup.json +2 -2
- package/dist/ai/manifest/components/BbTabs.json +8 -7
- package/dist/ai/manifest/components/BbTabsList.json +3 -3
- package/dist/ai/manifest/components/BbTabsPanels.json +1 -1
- package/dist/ai/manifest/components/BbTabsRoot.json +6 -5
- package/dist/ai/manifest/components/BbTag.tree.json +1 -1
- package/dist/ai/manifest/components/BbTooltip.json +2 -2
- package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
- package/dist/ai/manifest/components/CommonPopover.json +1 -1
- package/dist/ai/manifest/index.json +2 -2
- package/dist/ai/manifest/meta.json +5 -0
- package/dist/ai/manifest/types.advanced.json +10 -9
- package/dist/ai/manifest/types.api.json +8 -5
- package/dist/ai/manifest/types.wrapper.json +1 -0
- package/dist/ai/recipes/inertia/approvals-inbox.md +16 -18
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +23 -33
- package/dist/ai/recipes/inertia/layout-scaffold.md +16 -16
- package/dist/ai/recipes/inertia/onboarding.md +6 -10
- package/dist/ai/recipes/inertia/ownership-atlas.md +15 -18
- package/dist/ai/recipes/inertia/record-form.md +11 -11
- package/dist/ai/recipes/inertia/records-workspace.md +38 -41
- package/dist/ai/recipes/inertia/settings-workspace.md +26 -38
- package/dist/ai/recipes/inertia/upload-center.md +31 -39
- package/dist/ai/recipes/inertia/wizard-form.md +10 -19
- package/dist/ai/recipes/nuxt/approvals-inbox.md +7 -8
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +14 -24
- package/dist/ai/recipes/nuxt/layout-scaffold.md +16 -16
- package/dist/ai/recipes/nuxt/onboarding.md +2 -6
- package/dist/ai/recipes/nuxt/ownership-atlas.md +7 -9
- package/dist/ai/recipes/nuxt/record-form.md +5 -5
- package/dist/ai/recipes/nuxt/records-workspace.md +29 -31
- package/dist/ai/recipes/nuxt/settings-workspace.md +22 -34
- package/dist/ai/recipes/nuxt/upload-center.md +22 -29
- package/dist/ai/recipes/nuxt/wizard-form.md +3 -11
- package/dist/ai/recipes/vue/approvals-inbox.md +7 -8
- package/dist/ai/recipes/vue/inline-edit-workspace.md +14 -24
- package/dist/ai/recipes/vue/layout-scaffold.md +16 -16
- package/dist/ai/recipes/vue/onboarding.md +2 -6
- package/dist/ai/recipes/vue/ownership-atlas.md +7 -9
- package/dist/ai/recipes/vue/record-form.md +5 -5
- package/dist/ai/recipes/vue/records-workspace.md +29 -31
- package/dist/ai/recipes/vue/settings-workspace.md +22 -34
- package/dist/ai/recipes/vue/upload-center.md +22 -29
- package/dist/ai/recipes/vue/wizard-form.md +3 -11
- package/dist/ai/source/BbAccordion.md +1 -1
- package/dist/ai/source/BbAlert.md +3 -3
- package/dist/ai/source/BbBadge.md +14 -10
- package/dist/ai/source/BbBadgeButton.md +17 -12
- package/dist/ai/source/BbBaseButton.md +1 -1
- package/dist/ai/source/BbBaseRadioIcon.md +1 -0
- package/dist/ai/source/BbBaseSwitchIcon.md +1 -0
- package/dist/ai/source/BbBreadcrumbs.md +63 -42
- package/dist/ai/source/BbButton.md +84 -38
- package/dist/ai/source/BbCalendar.md +17 -16
- package/dist/ai/source/BbCheckbox.md +3 -2
- package/dist/ai/source/BbCheckboxGroup.md +11 -4
- package/dist/ai/source/BbCollapsible.md +2 -1
- package/dist/ai/source/BbColorInput.md +10 -9
- package/dist/ai/source/BbColorPalette.md +2 -1
- package/dist/ai/source/BbConfirm.md +18 -1
- package/dist/ai/source/BbConfirmPortal.md +20 -6
- package/dist/ai/source/BbDatePicker.md +2 -2
- package/dist/ai/source/BbDatePickerInput.md +47 -20
- package/dist/ai/source/BbDialog.md +5 -5
- package/dist/ai/source/BbDropdown.md +231 -158
- package/dist/ai/source/BbDropdownButton.md +19 -12
- package/dist/ai/source/BbDropdownGroup.md +127 -93
- package/dist/ai/source/BbForm.md +25 -1
- package/dist/ai/source/BbHoverCard.md +30 -3
- package/dist/ai/source/BbHoverCardPortal.md +18 -3
- package/dist/ai/source/BbIndicator.md +4 -0
- package/dist/ai/source/BbNumberInput.md +855 -19
- package/dist/ai/source/BbOffCanvas.md +27 -11
- package/dist/ai/source/BbPagination.md +3 -3
- package/dist/ai/source/BbPopover.md +185 -12
- package/dist/ai/source/BbPopoverPortal.md +30 -3
- package/dist/ai/source/BbProgress.md +82 -18
- package/dist/ai/source/BbRadioGroup.md +12 -5
- package/dist/ai/source/BbRating.md +11 -9
- package/dist/ai/source/BbSelect.md +16 -10
- package/dist/ai/source/BbSelectPopover.md +29 -23
- package/dist/ai/source/BbSlider.md +12 -6
- package/dist/ai/source/BbSwitch.md +3 -2
- package/dist/ai/source/BbSwitchGroup.md +5 -2
- package/dist/ai/source/BbTable.md +102 -18
- package/dist/ai/source/BbTabs.md +30 -24
- package/dist/ai/source/BbTabsList.md +29 -23
- package/dist/ai/source/BbTabsPanels.md +29 -23
- package/dist/ai/source/BbTabsRoot.md +28 -22
- package/dist/ai/source/BbTag.md +10 -9
- package/dist/ai/source/BbTextInput.md +5 -4
- package/dist/ai/source/BbTextarea.md +6 -5
- package/dist/ai/source/BbTimePicker.md +1 -1
- package/dist/ai/source/BbTimePickerInput.md +46 -9
- package/dist/ai/source/BbToast.md +10 -7
- package/dist/ai/source/BbToastPortal.md +10 -7
- package/dist/ai/source/BbTooltip.md +88 -11
- package/dist/ai/source/BbTree.md +21 -3
- package/dist/ai/source/CommonField.md +6 -4
- package/dist/ai/source/CommonFieldInput.md +15 -10
- package/dist/ai/source/CommonPopover.md +8 -1
- package/dist/ai/source/CommonTimeSelector.md +5 -4
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +10 -8
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +45 -45
- package/dist/components/BbBreadcrumbs/types.d.ts +25 -17
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +88 -70
- package/dist/components/BbButton/toggleRoving.d.ts +6 -0
- package/dist/components/BbButton/toggleRoving.js +45 -0
- package/dist/components/BbButton/types.d.ts +12 -4
- package/dist/components/BbButton/types.js +5 -1
- package/dist/components/BbCalendar/BbCalendar.vue_vue_type_script_setup_true_lang.js +178 -178
- package/dist/components/BbCalendar/CalendarMonthPanel.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/components/BbCalendar/CalendarYearPanel.vue_vue_type_script_setup_true_lang.js +28 -28
- package/dist/components/BbCalendar/useCalendarGrid.js +141 -139
- package/dist/components/BbCalendar/useDayjsLocale.d.ts +38 -15
- package/dist/components/BbCalendar/useDayjsLocale.js +31 -30
- package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +48 -48
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +81 -80
- package/dist/components/BbCheckboxGroup/types.d.ts +6 -2
- package/dist/components/BbCollapsible/types.d.ts +2 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +69 -69
- package/dist/components/BbColorPalette/types.d.ts +2 -1
- package/dist/components/BbConfirm/BbConfirmPortal.vue.d.ts +2 -5
- package/dist/components/BbConfirm/types.d.ts +15 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +363 -349
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +91 -86
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +298 -289
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +322 -356
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +17 -15
- package/dist/components/BbDropdown/DropdownRow.vue.d.ts +40 -0
- package/dist/components/BbDropdown/DropdownRow.vue.js +5 -0
- package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/BbDropdown/normalizeGroups.d.ts +8 -2
- package/dist/components/BbDropdown/normalizeGroups.js +60 -46
- package/dist/components/BbDropdown/types.d.ts +120 -88
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +11 -2
- package/dist/components/BbDropdownButton/types.d.ts +2 -2
- package/dist/components/BbForm/BbForm.vue.d.ts +9 -0
- package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +114 -105
- package/dist/components/BbForm/BbFormCustomField.js +1 -1
- package/dist/components/BbForm/bindFormField.js +2 -1
- package/dist/components/BbForm/formFields.d.ts +5 -0
- package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +145 -142
- package/dist/components/BbHoverCard/BbHoverCardPortal.vue.d.ts +2 -2
- package/dist/components/BbHoverCard/types.d.ts +14 -1
- package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +0 -1
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +452 -125
- package/dist/components/BbNumberInput/numberDisplay.d.ts +256 -0
- package/dist/components/BbNumberInput/numberDisplay.js +499 -0
- package/dist/components/BbNumberInput/types.d.ts +54 -1
- package/dist/components/BbNumberInput/warroom/corpus.d.ts +58 -0
- package/dist/components/BbNumberInput/warroom/currency-verify.rows.d.ts +28 -0
- package/dist/components/BbNumberInput/warroom/currency.rows.d.ts +2 -0
- package/dist/components/BbNumberInput/warroom/harness.d.ts +217 -0
- package/dist/components/BbNumberInput/warroom/oracle.d.ts +150 -0
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/components/BbPopover/BbPopover.vue.d.ts +1 -0
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +207 -162
- package/dist/components/BbPopover/BbPopoverPortal.vue.d.ts +2 -2
- package/dist/components/BbPopover/types.d.ts +26 -1
- package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +15 -7
- package/dist/components/BbProgress/types.d.ts +23 -7
- package/dist/components/BbProgress/types.js +1 -1
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +102 -101
- package/dist/components/BbRadioGroup/types.d.ts +6 -2
- package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +63 -63
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +156 -154
- package/dist/components/BbSelect/types.d.ts +6 -2
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/BbSelectPopover/types.d.ts +6 -2
- package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +153 -153
- package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +62 -62
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +131 -130
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +711 -676
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbTabs/types.d.ts +28 -22
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +76 -76
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +58 -58
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +82 -82
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +246 -236
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +99 -86
- package/dist/components/BbTooltip/tooltipWarmup.d.ts +23 -0
- package/dist/components/BbTooltip/tooltipWarmup.js +7 -0
- package/dist/components/BbTooltip/types.d.ts +10 -3
- package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +29 -21
- package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +10 -7
- package/dist/components/CommonFieldInput/CommonFieldInput.vue_vue_type_script_setup_true_lang.js +37 -36
- package/dist/components/CommonPopover/types.d.ts +2 -1
- package/dist/components/CommonTimeSelector/CommonTimeSelector.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/composables/formSubmitLock.d.ts +6 -0
- package/dist/composables/formSubmitLock.js +4 -0
- package/dist/composables/useBaseOptions.d.ts +7 -1
- package/dist/composables/useBaseOptions.js +32 -32
- package/dist/composables/useBbDropdownContext.d.ts +8 -8
- package/dist/composables/useBbFormField.d.ts +9 -0
- package/dist/composables/useBbFormField.js +5 -3
- package/dist/composables/useBbTabsContext.d.ts +10 -10
- package/dist/composables/useBbTabsContext.js +18 -18
- package/dist/composables/useFormBinding.d.ts +11 -0
- package/dist/composables/useFormBinding.js +15 -13
- package/dist/composables/useItemText.d.ts +5 -1
- package/dist/composables/useItemText.js +8 -3
- package/dist/composables/useItemValue.d.ts +5 -1
- package/dist/composables/useItemValue.js +8 -3
- package/dist/composables/useLocale.js +10 -9
- package/dist/deprecation/ai-deprecations.json.d.ts +130 -0
- package/dist/deprecation/ai-deprecations.json.js +1 -1
- package/dist/deprecation/removedProps.js +1 -1
- package/dist/directives/bbDropdown.js +1 -1
- package/dist/directives/directivePortal.d.ts +13 -7
- package/dist/directives/directivePortal.js +1 -4
- package/dist/i18n/index.d.ts +7 -12
- package/dist/i18n/locales/cs.json +11 -14
- package/dist/i18n/locales/da.json +13 -16
- package/dist/i18n/locales/de-CH.json +137 -0
- package/dist/i18n/locales/de.json +14 -17
- package/dist/i18n/locales/el.json +10 -13
- package/dist/i18n/locales/en-GB.json +137 -0
- package/dist/i18n/locales/en.json +8 -11
- package/dist/i18n/locales/es-MX.json +137 -0
- package/dist/i18n/locales/es.json +16 -19
- package/dist/i18n/locales/fi.json +8 -11
- package/dist/i18n/locales/fr.json +23 -26
- package/dist/i18n/locales/hu.json +8 -11
- package/dist/i18n/locales/it.json +12 -15
- package/dist/i18n/locales/ja.json +13 -16
- package/dist/i18n/locales/ko.json +10 -13
- package/dist/i18n/locales/nb.json +13 -16
- package/dist/i18n/locales/nl.json +21 -24
- package/dist/i18n/locales/pl.json +10 -13
- package/dist/i18n/locales/{pt.json → pt-BR.json} +19 -22
- package/dist/i18n/locales/pt-PT.json +137 -0
- package/dist/i18n/locales/ro.json +22 -25
- package/dist/i18n/locales/ru.json +11 -14
- package/dist/i18n/locales/sv.json +16 -19
- package/dist/i18n/locales/tr.json +14 -17
- package/dist/i18n/locales/uk.json +11 -14
- package/dist/i18n/locales/{zh-cn.json → zh-CN.json} +10 -13
- package/dist/i18n/locales/zh-HK.json +137 -0
- package/dist/i18n/locales/zh-TW.json +137 -0
- package/dist/i18n/regionHints.d.ts +16 -0
- package/dist/i18n/regionHints.js +49 -0
- package/dist/i18n/regions.d.ts +286 -0
- package/dist/i18n/regions.js +265 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/llms-full.txt +1914 -1714
- package/dist/llms-medium.txt +76 -46
- package/dist/llms.txt +7 -7
- package/dist/locale-blueprint.json +16 -13
- package/dist/styles.css +2 -2
- package/dist/types/passthrough.d.ts +1 -1
- package/dist/types/ptComponentMap.d.ts +2 -2
- package/dist/utilities/functions/slotKey.d.ts +2 -2
- package/dist/utils/versionCheck.js +1 -1
- package/dist/vite-plugin.d.ts +22 -19
- package/dist/vite.js +309 -297
- package/llms.txt +7 -7
- package/package.json +5 -3
- package/scripts/lib/agent-manifest.mjs +2 -1
- package/scripts/lib/eslint-disable.mjs +17 -4
- package/scripts/lib/eslint-plugin.d.ts +9 -1
- package/scripts/lib/eslint-plugin.mjs +256 -6
- package/scripts/lib/helper-canon.mjs +176 -0
- package/scripts/lib/helpers-add.mjs +1303 -0
- package/scripts/lib/local-components.mjs +33 -4
- package/scripts/lib/locale-check.mjs +165 -0
- package/scripts/lib/portal-names.mjs +458 -0
- package/scripts/lib/redundant-item-accessor.mjs +398 -0
- package/scripts/lib/renamed-item-field.mjs +343 -0
- package/scripts/lib/slot-key.mjs +2 -2
- package/scripts/lib/slot-renames.mjs +1 -1
- package/scripts/lib/unimported-components.mjs +5 -2
- package/scripts/lib/validate-bb-markup.mjs +123 -56
- package/dist/i18n/index.js +0 -27
package/dist/ai/BbTooltip.md
CHANGED
|
@@ -131,7 +131,8 @@ bitbossUi({ tooltipVariants: ['info', 'success'] });
|
|
|
131
131
|
The most common real use: a compact row of icon-only actions, each named by a
|
|
132
132
|
tooltip. This companion frames a shared-document chrome — title, muted meta, and
|
|
133
133
|
`size="xs"` ghost buttons grouped with thin dividers. A `:delay="400"` keeps the
|
|
134
|
-
bubbles from flickering while the pointer crosses the dense toolbar
|
|
134
|
+
bubbles from flickering while the pointer crosses the dense toolbar; once one
|
|
135
|
+
hint shows, its neighbours open at once (the skip delay, below).
|
|
135
136
|
|
|
136
137
|
**Icon toolbar with tooltips**
|
|
137
138
|
|
|
@@ -248,10 +249,21 @@ is concerned — the whole label (shortcut included) is flattened into the
|
|
|
248
249
|
|
|
249
250
|
- `placement` — as above; the `top`/`right`/`bottom`/`left` families with
|
|
250
251
|
`-start`/`-end` variants, auto-flipping near an edge.
|
|
251
|
-
- `delay` (ms, default `
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
pointer
|
|
252
|
+
- `delay` (ms, default `100`) holds the tooltip back until the pointer settles,
|
|
253
|
+
so a cursor passing over a row of buttons doesn't flash a bubble at each one;
|
|
254
|
+
raise it on dense toolbars. It delays only the **open**, and only for a
|
|
255
|
+
pointer; the close is always a short debounce (so the pointer can travel from
|
|
256
|
+
the trigger into the bubble without it vanishing).
|
|
257
|
+
- **Keyboard focus shows the hint at once**, whatever `delay` says: a Tab onto a
|
|
258
|
+
control is never an accident.
|
|
259
|
+
- **The skip delay:** while a tooltip shows, or for 300 ms after one closes, the
|
|
260
|
+
next tooltip the pointer reaches opens at once. Run the pointer along a
|
|
261
|
+
toolbar and every hint after the first appears without a wait. It is shared by
|
|
262
|
+
every `BbTooltip` and `v-bb-tooltip`, needs no setup, and leaves hover cards
|
|
263
|
+
alone (they keep their own 350 ms). A tooltip that hid because a menu or
|
|
264
|
+
dialog opened doesn't count.
|
|
265
|
+
- `:delay="0"` shows the tooltip on hover at once (the default before
|
|
266
|
+
3.0.0-beta.49).
|
|
255
267
|
- `width` caps the bubble so long hints wrap instead of stretching across the
|
|
256
268
|
screen. It is a **maximum, not a fixed width** — the bubble still shrinks to
|
|
257
269
|
short text, so a one-line hint never sits in an oversized box. A bare number
|
|
@@ -262,8 +274,10 @@ is concerned — the whole label (shortcut included) is flattened into the
|
|
|
262
274
|
`.bb-tooltip` in your own CSS.
|
|
263
275
|
- `disabled` suppresses the tooltip entirely — and dismisses it if already open,
|
|
264
276
|
so you can bind it to skip a hint when the label is already visible elsewhere.
|
|
265
|
-
-
|
|
266
|
-
`
|
|
277
|
+
- The bubble is **lazy** (its popover and content render on the first open,
|
|
278
|
+
so a closed tooltip costs little in a long table); `eager` renders it up
|
|
279
|
+
front, and `transition-duration` (ms) times the fade. The description screen
|
|
280
|
+
readers hear is there from mount either way.
|
|
267
281
|
|
|
268
282
|
**Delayed, width-capped hint**
|
|
269
283
|
|
|
@@ -508,7 +522,8 @@ type ToolbarAction = {
|
|
|
508
522
|
// Same document-toolbar hints as `IconButtonTooltips.vue`, restyled through
|
|
509
523
|
// passthrough: a muted wash on `pt:panel` (the bubble — default is the
|
|
510
524
|
// inverted primary), `pt:root:open` adds a drop shadow while showing. Hover
|
|
511
|
-
// a glyph to see the pt; delay 400
|
|
525
|
+
// a glyph to see the pt; `delay` 400 (the default is 100) holds the first hint
|
|
526
|
+
// back in a dense toolbar, and the next glyph's hint opens at once (skip delay).
|
|
512
527
|
const actions: ToolbarAction[] = [
|
|
513
528
|
{ label: 'Undo', icon: 'lucide:undo-2' },
|
|
514
529
|
{ label: 'Redo', icon: 'lucide:redo-2' },
|
|
@@ -562,9 +577,10 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
|
|
|
562
577
|
The node it points at is `hidden`: read as the activator's description, never
|
|
563
578
|
as page text of its own, and still read inside an open `BbDialog` (the
|
|
564
579
|
directive's node lives at the end of `<body>`, which a modal makes inert).
|
|
565
|
-
- The tooltip opens on keyboard focus (`:focus-visible
|
|
566
|
-
on blur, mouse-leave, or `Escape`. A mouse click
|
|
567
|
-
already covers the pointer), so it never pops over the
|
|
580
|
+
- The tooltip opens on keyboard focus (`:focus-visible`, at once) and on hover
|
|
581
|
+
(after `delay`), and closes on blur, mouse-leave, or `Escape`. A mouse click
|
|
582
|
+
does not open it (hover already covers the pointer), so it never pops over the
|
|
583
|
+
thing you just clicked.
|
|
568
584
|
- Because the bubble is not focusable and holds no interactive content, never
|
|
569
585
|
place a link or button inside it — use `BbPopover` for that.
|
|
570
586
|
- The tooltip supplements an accessible name; it does not provide one. Icon-only
|
|
@@ -582,9 +598,9 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
|
|
|
582
598
|
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the activator slot is not rendered and event listeners are attached programmatically to the referenced element. |
|
|
583
599
|
| `arrowPadding` | `number \| undefined` | `10` | | Space the arrow will maintain to the edge of the tooltip bubble. Useful when the floating element has border radius so it won't appear broken |
|
|
584
600
|
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the tooltip within a bounding element. When provided, the tooltip will not overflow this container's bounds (e.g. a sidebar). Accepts an HTMLElement, a Vue component ref, or a CSS selector string. |
|
|
585
|
-
| `delay` | `number \| undefined` | `
|
|
601
|
+
| `delay` | `number \| undefined` | `100` | | How long, in milliseconds, a pointer has to rest on the activator before the tooltip shows; it keeps hints from flashing under a pointer passing by. Keyboard focus shows it at once whatever this says, and so does a pointer arriving while another tooltip shows or within 300 ms of one closing (the skip delay, shared by every tooltip). `0` shows it on hover at once. |
|
|
586
602
|
| `disabled` | `boolean \| undefined` | `false` | | Disables the component |
|
|
587
|
-
| `eager` | `boolean \| undefined` | `false` | |
|
|
603
|
+
| `eager` | `boolean \| undefined` | `false` | | Renders the tooltip's popover and content at mount instead of on the first open. The description screen readers hear exists from mount either way. |
|
|
588
604
|
| `hideArrow` | `boolean \| undefined` | `false` | | Hides the tooltip arrow. A tooltip shows its arrow by default (it's the one popover-family surface where an arrow is meaningful — a speech bubble pointing at its anchor); set this to drop it. |
|
|
589
605
|
| `id` | `string \| undefined` | | | Seed for the tooltip's internal id. It is **prefixed** (`bb_<id>`) and set on the inner content element, not on the root — so `document.getElementById(theIdYouPassed)` finds nothing. Pass it to make the generated id stable (SSR snapshots, tests), not to look the element up. |
|
|
590
606
|
| `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to show / hide the tooltip. A tooltip with no `v-model` starts hidden and is driven by hover / focus. |
|
package/dist/ai/BbTree.md
CHANGED
|
@@ -755,10 +755,10 @@ const items = ref<Array<BbTreeItem<FileNode>>>([
|
|
|
755
755
|
|
|
756
756
|
/* Trunk: vertical line continuing past a node while siblings follow. */
|
|
757
757
|
.connector-tree .bb-tree__children > .bb-tree__item:not(:last-child)::before {
|
|
758
|
-
border-
|
|
758
|
+
border-inline-start: 1px solid var(--line);
|
|
759
759
|
bottom: 0;
|
|
760
760
|
content: '';
|
|
761
|
-
|
|
761
|
+
inset-inline-start: calc(var(--indent) / -2);
|
|
762
762
|
position: absolute;
|
|
763
763
|
top: calc(var(--gap) * -1);
|
|
764
764
|
}
|
|
@@ -770,11 +770,11 @@ const items = ref<Array<BbTreeItem<FileNode>>>([
|
|
|
770
770
|
|
|
771
771
|
.connector-tree .bb-tree__children > .bb-tree__item > .bb-tree__row::before {
|
|
772
772
|
border-bottom: 1px solid var(--line);
|
|
773
|
-
border-
|
|
774
|
-
border-
|
|
773
|
+
border-end-start-radius: var(--bb-radius-sm);
|
|
774
|
+
border-inline-start: 1px solid var(--line);
|
|
775
775
|
content: '';
|
|
776
776
|
height: calc(50% + var(--gap));
|
|
777
|
-
|
|
777
|
+
inset-inline-start: calc(var(--indent) / -2);
|
|
778
778
|
position: absolute;
|
|
779
779
|
top: calc(var(--gap) * -1);
|
|
780
780
|
width: calc(var(--indent) / 2);
|
|
@@ -803,10 +803,13 @@ your node markup:
|
|
|
803
803
|
|
|
804
804
|
### Large trees and lazy-loaded branches
|
|
805
805
|
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
806
|
+
A collapsed branch builds its rows the first time it opens and keeps them
|
|
807
|
+
after that (closing hides them by CSS, inert), so a mostly collapsed tree of
|
|
808
|
+
thousands of nodes mounts only what is open. A node you reveal through
|
|
809
|
+
`expandedItems` (a search hit, "expand all") is in the DOM after the next
|
|
810
|
+
tick. There is no virtualization of open branches. For folders of unbounded
|
|
811
|
+
size, don't ship the entire hierarchy up front either: load children when a
|
|
812
|
+
branch first opens. `items` is watched deeply, so appending
|
|
810
813
|
`children` to a node updates the tree in place, and newly appeared branches
|
|
811
814
|
follow the same seeding rules (`expanded: false` keeps them collapsed).
|
|
812
815
|
|
|
@@ -1192,8 +1195,8 @@ States are listed in precedence order: when two are on at once and their entries
|
|
|
1192
1195
|
## Slots
|
|
1193
1196
|
|
|
1194
1197
|
- `default` — scope: `BbTreeNodeSlotProps<Meta>` `{ meta: Meta; item: BbTreeItem<Meta>; parent?: BbTreeItem<Meta>; index: number; depth: number; value: any; expanded: boolean; expandable: boolean; toggleExpanded: () => void; expandProps: BbTreeExpandControllerProps }`
|
|
1195
|
-
- `#<value>` (named from data) — scope: `BbTreeNodeSlotProps<Meta>` — One node, by its resolved `item-value` (string or number) through `slotKey`; beats `<depth>`, which beats `default`. Reserved
|
|
1196
|
-
- `#<depth>` (named from data) — scope: `BbTreeNodeSlotProps<Meta>` — Every node at one depth (`0` = root); a numeric value can share this name. Reserved
|
|
1198
|
+
- `#<value>` (named from data) — scope: `BbTreeNodeSlotProps<Meta>` — One node, by its resolved `item-value` (string or number) through `slotKey`; beats `<depth>`, which beats `default`. Reserved names (their slot is one of this component's own, so an item value or column key spelled like them is an error): `default`.
|
|
1199
|
+
- `#<depth>` (named from data) — scope: `BbTreeNodeSlotProps<Meta>` — Every node at one depth (`0` = root); a numeric value can share this name. Reserved names (their slot is one of this component's own, so an item value or column key spelled like them is an error): `default`.
|
|
1197
1200
|
- `#<value>:children` (named from data) — scope: `BbTreeNodeSlotProps<Meta>` — One node's children container, stopping the recursion there; beats `<depth>:children`. Renders for leaves too.
|
|
1198
1201
|
- `#<depth>:children` (named from data) — scope: `BbTreeNodeSlotProps<Meta>` — The children container of every node at one depth.
|
|
1199
1202
|
|
package/dist/ai/CommonPopover.md
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
| `bubbleAttrs` | `Record<string, unknown> \| ((space: CommonPopoverAvailableSpace) => Record<string, unknown>) \| undefined` | | | Attributes bound on the bubble element (`class`, `style`, `inert`, …), merged after its own `bb-common-popover__bubble` class. Lets the owning component make the bubble its layout container instead of nesting a second box inside it. The function form receives the same free space as the default slot, for attributes that depend on it (a height cap). |
|
|
23
23
|
| `dialog` | `boolean \| undefined` | `false` | | Renders the popover as a `<dialog>` element (modal overlay) instead of a `<span>` with the Popover API. |
|
|
24
24
|
| `disableFlip` | `boolean \| undefined` | `false` | | Disables the automatic flip to the opposite side when the popover would overflow (flipping is on by default). |
|
|
25
|
-
| `eager` | `boolean \| undefined` | `false` | |
|
|
25
|
+
| `eager` | `boolean \| undefined` | `false` | | Renders the bubble's content at mount instead of on the first open. Either way it stays rendered once it has been. |
|
|
26
26
|
| `forceAutoUpdate` | `boolean \| undefined` | `false` | | Keeps floating-ui's `autoUpdate` (scroll/resize/resize-observer tracking) running while the popover is closed. By default the position is only tracked while the popover is open, so idle popovers attach no listeners. Enable this only when the anchor moves while the popover is closed and the next open must be pixel-perfect immediately. |
|
|
27
27
|
| `hideArrow` | `boolean \| undefined` | `false` | | Hides the arrow indicator. |
|
|
28
28
|
| `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to show / hide the bubble. Closed until the owning component opens it. |
|
package/dist/ai/changelog.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 3,
|
|
3
3
|
"library": "bitboss-ui",
|
|
4
|
-
"version": "3.0.0-beta.
|
|
4
|
+
"version": "3.0.0-beta.49",
|
|
5
5
|
"upgrade": "v2-to-v3",
|
|
6
6
|
"guide": "ai/guides/migration/v2-to-v3.md",
|
|
7
7
|
"legend": {
|
|
8
8
|
"id": "the row's stable id: `fNNN` = its row in the register (FOLLOWUPS §F), `css:<class>` = its pair in the class-rename map. Never reused; unchanged when a row is reworded.",
|
|
9
9
|
"breaking": "every BREAKING change of the v2 → v3 line: register renames, then class renames, then behaviour breaks. Features and fixes are not tracked: an empty slice means nothing breaks.",
|
|
10
10
|
"kind": "rename = an old name with a successor, or removed (from → to); behaviour = a change that keeps the name (description says what changed).",
|
|
11
|
-
"surface": "on a rename, what the name is: prop | slot (without the #) | pt (the attribute spelling, camelCase words) | cssVar | class | option (a field of a composable or function argument). Apply a row only on its own surface.",
|
|
11
|
+
"surface": "on a rename, what the name is: prop | slot (without the #) | pt (the attribute spelling, camelCase words) | cssVar | class | option (a field of a composable or function argument) | item (a field of an `items` entry: `items[].key` is a row's, `items[group].key` a dropdown group's). Apply a row only on its own surface.",
|
|
12
12
|
"from / to": "the old and new name, nothing else. to = null: removed with no single successor (the note says what to do). Several names in one cell (`--pad-x / --pad-y` → `--px / --py`) pair in order; `<x>` is one dynamic segment; a class row renames its modifiers too (`.old--x` → `.new--x`).",
|
|
13
13
|
"note": "the prose the register row carries beside the names (a qualifier, the removed-with-hint advice, the modifiers that follow). Absent when there is none.",
|
|
14
14
|
"firstReleasedIn": "the first published version that shipped the change; null = not released yet. Filter with bitboss-ui changelog --since <your version>.",
|
|
@@ -58,7 +58,9 @@
|
|
|
58
58
|
"3.0.0-beta.44",
|
|
59
59
|
"3.0.0-beta.45",
|
|
60
60
|
"3.0.0-beta.46",
|
|
61
|
-
"3.0.0-beta.47"
|
|
61
|
+
"3.0.0-beta.47",
|
|
62
|
+
"3.0.0-beta.48",
|
|
63
|
+
"3.0.0-beta.49"
|
|
62
64
|
],
|
|
63
65
|
"unpublished": [
|
|
64
66
|
"3.0.0-alpha.2",
|
|
@@ -78,15 +80,16 @@
|
|
|
78
80
|
"3.0.0-beta.40"
|
|
79
81
|
],
|
|
80
82
|
"summary": {
|
|
81
|
-
"renames":
|
|
82
|
-
"behaviourBreaks":
|
|
83
|
+
"renames": 220,
|
|
84
|
+
"behaviourBreaks": 187,
|
|
83
85
|
"bySurface": {
|
|
84
86
|
"prop": 15,
|
|
85
87
|
"option": 1,
|
|
86
88
|
"pt": 14,
|
|
87
89
|
"slot": 14,
|
|
90
|
+
"item": 6,
|
|
88
91
|
"cssVar": 32,
|
|
89
|
-
"class":
|
|
92
|
+
"class": 138
|
|
90
93
|
},
|
|
91
94
|
"unreleased": 0
|
|
92
95
|
},
|
|
@@ -784,6 +787,88 @@
|
|
|
784
787
|
"default": "—",
|
|
785
788
|
"firstReleasedIn": "3.0.0-beta.44"
|
|
786
789
|
},
|
|
790
|
+
{
|
|
791
|
+
"id": "f310",
|
|
792
|
+
"kind": "rename",
|
|
793
|
+
"surface": "item",
|
|
794
|
+
"components": [
|
|
795
|
+
"BbDropdown",
|
|
796
|
+
"BbDropdownButton"
|
|
797
|
+
],
|
|
798
|
+
"from": "items[].key",
|
|
799
|
+
"to": "items[].value",
|
|
800
|
+
"since": "2026-10-07, 3.0.0-beta.49 (Q64.2; a row's value is any type, compared by hash: the v-model value, its #<value> slots; v2 rows were { key, text } too)",
|
|
801
|
+
"default": "—",
|
|
802
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"id": "f311",
|
|
806
|
+
"kind": "rename",
|
|
807
|
+
"surface": "item",
|
|
808
|
+
"components": [
|
|
809
|
+
"BbDropdown",
|
|
810
|
+
"BbDropdownButton"
|
|
811
|
+
],
|
|
812
|
+
"from": "items[].text",
|
|
813
|
+
"to": "items[].label",
|
|
814
|
+
"since": "2026-10-07, 3.0.0-beta.49 (Q64.2; BbDropdownButton's main button reads items[0].label)",
|
|
815
|
+
"default": "—",
|
|
816
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
817
|
+
},
|
|
818
|
+
{
|
|
819
|
+
"id": "f312",
|
|
820
|
+
"kind": "rename",
|
|
821
|
+
"surface": "item",
|
|
822
|
+
"components": [
|
|
823
|
+
"BbDropdown",
|
|
824
|
+
"BbDropdownButton"
|
|
825
|
+
],
|
|
826
|
+
"from": "items[group].key",
|
|
827
|
+
"to": "items[group].id",
|
|
828
|
+
"since": "2026-10-07, 3.0.0-beta.49 (Q64.2; the <BbDropdownGroup id> word; groups are v3-only, so beta-only)",
|
|
829
|
+
"default": "—",
|
|
830
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
"id": "f313",
|
|
834
|
+
"kind": "rename",
|
|
835
|
+
"surface": "item",
|
|
836
|
+
"components": [
|
|
837
|
+
"BbTabs",
|
|
838
|
+
"BbTabsRoot"
|
|
839
|
+
],
|
|
840
|
+
"from": "items[].key",
|
|
841
|
+
"to": "items[].value",
|
|
842
|
+
"since": "2026-10-07, 3.0.0-beta.49 (Q64.4; v-model carries it; #<value> / #<value>:label, same characters)",
|
|
843
|
+
"default": "—",
|
|
844
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
845
|
+
},
|
|
846
|
+
{
|
|
847
|
+
"id": "f314",
|
|
848
|
+
"kind": "rename",
|
|
849
|
+
"surface": "item",
|
|
850
|
+
"components": [
|
|
851
|
+
"BbBreadcrumbs"
|
|
852
|
+
],
|
|
853
|
+
"from": "items[].key",
|
|
854
|
+
"to": "items[].value",
|
|
855
|
+
"since": "2026-10-07, 3.0.0-beta.49 (Q64.5; names the crumb's slots; a hidden crumb is a dropdown row)",
|
|
856
|
+
"default": "—",
|
|
857
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
"id": "f315",
|
|
861
|
+
"kind": "rename",
|
|
862
|
+
"surface": "item",
|
|
863
|
+
"components": [
|
|
864
|
+
"BbBreadcrumbs"
|
|
865
|
+
],
|
|
866
|
+
"from": "items[].text",
|
|
867
|
+
"to": "items[].label",
|
|
868
|
+
"since": "2026-10-07, 3.0.0-beta.49 (Q64.5)",
|
|
869
|
+
"default": "—",
|
|
870
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
871
|
+
},
|
|
787
872
|
{
|
|
788
873
|
"id": "f015",
|
|
789
874
|
"kind": "rename",
|
|
@@ -2944,6 +3029,20 @@
|
|
|
2944
3029
|
"firstReleasedIn": "3.0.0-beta.36",
|
|
2945
3030
|
"guide": "ai/guides/migration/v3-beta-css-classes.md"
|
|
2946
3031
|
},
|
|
3032
|
+
{
|
|
3033
|
+
"id": "css:bb-button--active",
|
|
3034
|
+
"kind": "rename",
|
|
3035
|
+
"surface": "class",
|
|
3036
|
+
"components": [
|
|
3037
|
+
".bb-button"
|
|
3038
|
+
],
|
|
3039
|
+
"from": ".bb-button--active",
|
|
3040
|
+
"to": ".bb-button--pressed",
|
|
3041
|
+
"since": "",
|
|
3042
|
+
"default": "",
|
|
3043
|
+
"firstReleasedIn": "3.0.0-beta.48",
|
|
3044
|
+
"guide": "ai/guides/migration/v3-beta-css-classes.md"
|
|
3045
|
+
},
|
|
2947
3046
|
{
|
|
2948
3047
|
"id": "css:bb-commabox-item--focused",
|
|
2949
3048
|
"kind": "rename",
|
|
@@ -5596,6 +5695,198 @@
|
|
|
5596
5695
|
"ruling": "owner 2026-10-06 (Q60.9)",
|
|
5597
5696
|
"guide": "v2-to-v3.md § 6 item 45 + BbTabs.guide.md § Arrow keys on server strips / § Accessibility",
|
|
5598
5697
|
"firstReleasedIn": "3.0.0-beta.47"
|
|
5698
|
+
},
|
|
5699
|
+
{
|
|
5700
|
+
"id": "f306",
|
|
5701
|
+
"kind": "behaviour",
|
|
5702
|
+
"summary": "`v-bb-popover` / `v-bb-hover-card` component portals get no `close`: `emit('close')` closes nothing; use a named portal's slot `close` or the component",
|
|
5703
|
+
"components": [
|
|
5704
|
+
"BbPopover",
|
|
5705
|
+
"BbHoverCard"
|
|
5706
|
+
],
|
|
5707
|
+
"description": "A component portal of v-bb-popover / v-bb-hover-card (v-bb-popover=\"NoteForm\", { portal: NoteForm }) no longer receives an onClose listener, so its emit('close') closes nothing (shipped in 3.0.0-beta.47 for one release). Only a named portal's slot gets close; content that must close its panel becomes a <BbPopoverPortal> / <BbHoverCardPortal> or uses the BbPopover / BbHoverCard component",
|
|
5708
|
+
"ruling": "owner 2026-10-06",
|
|
5709
|
+
"guide": "v2-to-v3.md § 6 item 46 + BbPopover.guide.md / BbHoverCard.guide.md § the directive",
|
|
5710
|
+
"firstReleasedIn": "3.0.0-beta.48"
|
|
5711
|
+
},
|
|
5712
|
+
{
|
|
5713
|
+
"id": "f307",
|
|
5714
|
+
"kind": "behaviour",
|
|
5715
|
+
"summary": "BbButton toggle on: `bb-button--active` → `bb-button--pressed`; new `pt:*:pressed` state",
|
|
5716
|
+
"components": [
|
|
5717
|
+
"BbButton"
|
|
5718
|
+
],
|
|
5719
|
+
"description": "A toggle BbButton (v-model) that is on carries bb-button--pressed, not bb-button--active (no alias): it is pressed (aria-pressed=\"true\"), not \"active\". A rule on .bb-button--active stops matching. Style the on state with the new pt:root:pressed (any part, the state is component-wide), or a selector on .bb-button--pressed / [aria-pressed='true']. There is no active pt state (a pointer press is Tailwind's active: variant) and no current one (activeClass / exactActiveClass)",
|
|
5720
|
+
"ruling": "owner 2026-10-06 (Q60.14, button half)",
|
|
5721
|
+
"guide": "v2-to-v3.md § 6 item 47 + v3-beta-css-classes.md (class row) + BbButton.guide.md § Toggle buttons",
|
|
5722
|
+
"firstReleasedIn": "3.0.0-beta.48"
|
|
5723
|
+
},
|
|
5724
|
+
{
|
|
5725
|
+
"id": "f308",
|
|
5726
|
+
"kind": "behaviour",
|
|
5727
|
+
"summary": "BbTooltip / `v-bb-tooltip`: hover `delay` default 0 → 100 ms; keyboard focus shows at once; 300 ms skip delay between tooltips; `:delay=\"0\"` restores the instant hover open",
|
|
5728
|
+
"components": [
|
|
5729
|
+
"BbTooltip"
|
|
5730
|
+
],
|
|
5731
|
+
"description": "BbTooltip and v-bb-tooltip wait 100 ms on hover before showing (the delay default was 0); keyboard focus shows them at once whatever delay says, and a tooltip the pointer reaches while another shows or within 300 ms of one closing skips its delay (shared by every tooltip, hover cards excluded). A test or flow that hovered and expected the bubble on the next tick waits ~100 ms now; :delay=\"0\" (or { delay: 0 }) restores the instant hover open",
|
|
5732
|
+
"ruling": "owner 2026-10-07 (Q60.22 c)",
|
|
5733
|
+
"guide": "v2-to-v3.md § 6 item 48 + BbTooltip.guide.md § Placement, timing, width and disabling",
|
|
5734
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5735
|
+
},
|
|
5736
|
+
{
|
|
5737
|
+
"id": "f309",
|
|
5738
|
+
"kind": "behaviour",
|
|
5739
|
+
"summary": "Option surfaces read `label` / `text` and `value` by default: `{ label, value }` items need no accessors; a `value` key now becomes the v-model value",
|
|
5740
|
+
"components": [
|
|
5741
|
+
"BbSelect",
|
|
5742
|
+
"BbSelectPopover",
|
|
5743
|
+
"BbRadioGroup",
|
|
5744
|
+
"BbCheckboxGroup",
|
|
5745
|
+
"BbSwitchGroup",
|
|
5746
|
+
"BbDropdown"
|
|
5747
|
+
],
|
|
5748
|
+
"description": "With no item-text / item-value, an option on BbSelect, BbSelectPopover, BbRadioGroup, BbCheckboxGroup, BbSwitchGroup and a mapped BbDropdown group reads its own label (else text) as text and its own value (whatever it holds, null included) as value; before, JSON.stringify(item) and the whole object. Object items with a value key and no item-value now put item.value in v-model (:item-value=\"(item) => item\" keeps the old value). An explicit accessor wins; primitives and BbTable rows unchanged",
|
|
5749
|
+
"ruling": "owner 2026-10-07 (Q60.24)",
|
|
5750
|
+
"guide": "v2-to-v3.md § 6 item 49 + the five guides' items section + options-items-playbook.md",
|
|
5751
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5752
|
+
},
|
|
5753
|
+
{
|
|
5754
|
+
"id": "f316",
|
|
5755
|
+
"kind": "behaviour",
|
|
5756
|
+
"summary": "A single dropdown group with a `null` v-model shows its `value: null` row checked (the None row); a hand-written group's v-model holds row `value`s, not `key` strings",
|
|
5757
|
+
"components": [
|
|
5758
|
+
"BbDropdown",
|
|
5759
|
+
"BbDropdownButton"
|
|
5760
|
+
],
|
|
5761
|
+
"description": "A single-choice BbDropdown / BbDropdownButton group whose v-model is null (or that has no selection) shows its value: null row checked, the \"None\" row, as BbSelect / BbRadioGroup already do (they match by hash); picking it emits null. A hand-written group's v-model holds its rows' values (any type, compared by hash) where it held their key strings",
|
|
5762
|
+
"ruling": "owner 2026-10-07 (Q64.3)",
|
|
5763
|
+
"guide": "v2-to-v3.md § 6 item 50 + components/bb-dropdown.md",
|
|
5764
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5765
|
+
},
|
|
5766
|
+
{
|
|
5767
|
+
"id": "f317",
|
|
5768
|
+
"kind": "behaviour",
|
|
5769
|
+
"summary": "Slots and useBbDropdownContext follow the fields: `{ text }` → `{ label }`; slot `group.key` → `group.id`; `#empty` `groupKey` → `groupId`; context by `id`, `selectedOptions[].label`",
|
|
5770
|
+
"components": [
|
|
5771
|
+
"BbDropdown",
|
|
5772
|
+
"BbDropdownButton",
|
|
5773
|
+
"BbTabs",
|
|
5774
|
+
"BbBreadcrumbs"
|
|
5775
|
+
],
|
|
5776
|
+
"description": "Slot scopes and useBbDropdownContext follow the item fields: the row slots of BbDropdown / BbDropdownButton, BbTabs' #<value>:label / #label and BbBreadcrumbs' crumb slots hand { label } where they handed { text }; a row slot's group carries id (was key); the #loading / #empty slots' groupKey is groupId; useBbDropdownContext keys its groups by id and its selectedOptions[] carry label (was text). A destructured { text } reads undefined, no error",
|
|
5777
|
+
"ruling": "owner 2026-10-07 (Q64.2–Q64.5)",
|
|
5778
|
+
"guide": "v2-to-v3.md § 6 item 51 + components/bb-dropdown.md / bb-tabs.md / bb-breadcrumbs.md",
|
|
5779
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5780
|
+
},
|
|
5781
|
+
{
|
|
5782
|
+
"id": "f318",
|
|
5783
|
+
"kind": "behaviour",
|
|
5784
|
+
"summary": "`bitboss-ui check` kinds: `missing-key` → `missing-value` / `missing-id`, `duplicate-row-text` → `duplicate-row-label`; new `renamed-item-field` (ESLint `no-renamed-item-field`)",
|
|
5785
|
+
"components": [
|
|
5786
|
+
"BbDropdown",
|
|
5787
|
+
"BbDropdownButton"
|
|
5788
|
+
],
|
|
5789
|
+
"description": "bitboss-ui check kinds follow the dropdown fields: missing-key is missing-value (a selectable group's row) or missing-id (a selectable group), duplicate-row-text is duplicate-row-label; the old fields themselves are the new renamed-item-field (check --fix, ESLint bitboss-ui/no-renamed-item-field). A script that matches the old kind names in check --json output needs the new ones (ESLint disable comments name rules, unchanged)",
|
|
5790
|
+
"ruling": "owner 2026-10-07 (Q64.2)",
|
|
5791
|
+
"guide": "v3-beta-tooling.md",
|
|
5792
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5793
|
+
},
|
|
5794
|
+
{
|
|
5795
|
+
"id": "f319",
|
|
5796
|
+
"kind": "behaviour",
|
|
5797
|
+
"summary": "BbPopover is non-modal by default (page stays live, outside click closes and lands, Tab out closes); `modal` restores the modal dialog; the phone sheet stays modal",
|
|
5798
|
+
"components": [
|
|
5799
|
+
"BbPopover"
|
|
5800
|
+
],
|
|
5801
|
+
"description": "BbPopover is a non-modal dialog by default: a role=\"dialog\" panel without aria-modal, the page behind stays clickable, focusable and scrollable, an outside click closes it and still reaches its target (focus stays there), Escape closes it, and Tab past the last control (or Shift+Tab before the first) leaves and closes it. modal (new, default false) restores the modal <dialog> exactly (focus trap, inert page, no scroll). The phone sheet stays modal either way. Applies to v-bb-popover and the popover portals too (modal through the directive's options)",
|
|
5802
|
+
"ruling": "owner 2026-10-07 (Q60.10)",
|
|
5803
|
+
"guide": "v2-to-v3.md § 6 item 52 + BbPopover.guide.md § Accessibility",
|
|
5804
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5805
|
+
},
|
|
5806
|
+
{
|
|
5807
|
+
"id": "f320",
|
|
5808
|
+
"kind": "behaviour",
|
|
5809
|
+
"summary": "BbForm locks while a promise `@submit` runs: joined fields read-only, `type=submit` buttons spin; opt out with `disable-submit-lock`",
|
|
5810
|
+
"components": [
|
|
5811
|
+
"BbForm",
|
|
5812
|
+
"BbButton"
|
|
5813
|
+
],
|
|
5814
|
+
"description": "While a @submit that returned a promise is pending, every field joined to the BbForm is read-only (never disabled; aria-readonly) and every type=\"submit\" BbButton inside spins; both end when it settles. A sync submit never locks. Opt out with disable-submit-lock. A useBbFormField handle gains readonly",
|
|
5815
|
+
"ruling": "owner 2026-10-07 (Q60.17)",
|
|
5816
|
+
"guide": "v2-to-v3.md § 6 item 53 + BbForm.guide.md § While it saves",
|
|
5817
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5818
|
+
},
|
|
5819
|
+
{
|
|
5820
|
+
"id": "f321",
|
|
5821
|
+
"kind": "behaviour",
|
|
5822
|
+
"summary": "Adjacent `group` toggle BbButtons are one Tab stop with ArrowLeft/Right, Home/End inside (roving tabindex); aria-pressed unchanged",
|
|
5823
|
+
"components": [
|
|
5824
|
+
"BbButton"
|
|
5825
|
+
],
|
|
5826
|
+
"description": "Adjacent group toggle BbButtons (each with a v-model, side by side under one parent) are one Tab stop: Tab lands on the pressed button (else the one last focused, else the first), ArrowLeft / ArrowRight (mirrored under dir=\"rtl\", wrapping) and Home / End move focus between them, Space / Enter toggle; disabled and loading buttons are skipped. Each button keeps aria-pressed; group buttons without a v-model, a lone toggle and toggles split by another element keep one Tab stop each. A keyboard test that Tabs through such a set reaches one button, not each",
|
|
5827
|
+
"ruling": "owner 2026-10-07 (Q44.25-001)",
|
|
5828
|
+
"guide": "v2-to-v3.md § 6 item 54 + BbButton.guide.md § Toggle buttons",
|
|
5829
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5830
|
+
},
|
|
5831
|
+
{
|
|
5832
|
+
"id": "f322",
|
|
5833
|
+
"kind": "behaviour",
|
|
5834
|
+
"summary": "BbNumberInput formats live in the locale (`10.005,6`): the DOM text is formatted, paste reads locale grouping and `(1,234.56)` as negative; `disable-formatting` restores the old field",
|
|
5835
|
+
"components": [
|
|
5836
|
+
"BbNumberInput"
|
|
5837
|
+
],
|
|
5838
|
+
"description": "BbNumberInput shows its number the locale's way while the user types (Q60.25: 10005,6 shows 10.005,6 in it, 10,005.6 in en; grouping per CLDR, so it shows 1000 and then 10.000). The DOM text is the formatted one: event.target.value, pt:input listeners and a consumer maxlength / pattern see it. A typed , or . is always the decimal (Q51.2's key-by-key reclassify stays); a pasted number written the locale's way is read that way (it 1.000 pasted is 1000, was 1; en 1,234 pasted is 1234, was 1.234), and a paste keeps only the FIRST number inside the text (Q60.25b round 5 + owner round 7: $1,234.56 - $2,000 is 1234.56, never the digits run together; (1,234.56) is -1234.56, was 1234.56; 1.2E+05 is 120000, was 1.205; 15 m² is 15, was 152). Leading zeros stay while focused (1.|005 Backspace leaves 005); blur rebuilds the text from the model (1,50 → 1,5); a bare - keeps the last valid value in the model instead of emitting null. disable-formatting (new) restores the previous field exactly; min-precision (new, additive) pads decimals",
|
|
5839
|
+
"ruling": "owner 2026-10-07 (Q60.25)",
|
|
5840
|
+
"guide": "v2-to-v3.md § 6 item 55 + BbNumberInput.guide.md § Locale display",
|
|
5841
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5842
|
+
},
|
|
5843
|
+
{
|
|
5844
|
+
"id": "f323",
|
|
5845
|
+
"kind": "behaviour",
|
|
5846
|
+
"summary": "BbNumberInput posts through a hidden input carrying `name` and the raw value; the visible input has no `name` (`form.elements[name]` is the hidden one)",
|
|
5847
|
+
"components": [
|
|
5848
|
+
"BbNumberInput"
|
|
5849
|
+
],
|
|
5850
|
+
"description": "BbNumberInput posts through a hidden input: name moves to a sibling <input type=\"hidden\"> carrying the raw period value (10005.6), and the visible input has no name. form.elements[name], input[name=x] and FormData find the hidden input; a test or script that typed into input[name=x] targets the spinbutton (input[role=\"spinbutton\"]). Not with disable-formatting",
|
|
5851
|
+
"ruling": "owner 2026-10-07 (Q60.25)",
|
|
5852
|
+
"guide": "v2-to-v3.md § 6 item 55 + BbNumberInput.guide.md § Locale display",
|
|
5853
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5854
|
+
},
|
|
5855
|
+
{
|
|
5856
|
+
"id": "f324",
|
|
5857
|
+
"kind": "behaviour",
|
|
5858
|
+
"summary": "BbNumberInput `currency` / `unit` paint the symbol inside the text (`$1,234.50`, `20 kg`); `event.target.value`, `pt:input`, `maxlength` / `pattern` see it; the model stays the number",
|
|
5859
|
+
"components": [
|
|
5860
|
+
"BbNumberInput"
|
|
5861
|
+
],
|
|
5862
|
+
"description": "BbNumberInput currency (new, ISO 4217) / unit (new, an Intl unit) paint the symbol or unit INSIDE the editable text, the locale's way ($1,234.50, 1234,50 €, CHF-1’234.56, 20 kg, 15%): event.target.value, pt:input listeners and a consumer maxlength / pattern see the shell too (a maxlength counts it); Home / End move the caret to the number's edges, never the value; the unit follows the number's plural (1 hr, 2 hrs) and at rest aria-valuetext is the spoken amount (1,234.50 US dollars). unit is typed (BbNumberUnit: kilowatt, square-meter are type errors). The model stays the number (unit=\"percent\" showing 15% is 15); currency sets the decimals unless min-precision / max-precision are set; disable-formatting ignores both",
|
|
5863
|
+
"ruling": "owner 2026-10-07 (Q60.25b)",
|
|
5864
|
+
"guide": "v2-to-v3.md § 6 item 55 + BbNumberInput.guide.md § Currency & unit fields",
|
|
5865
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5866
|
+
},
|
|
5867
|
+
{
|
|
5868
|
+
"id": "f325",
|
|
5869
|
+
"kind": "behaviour",
|
|
5870
|
+
"summary": "BbNumberInput with `max-precision` below 3: a second typed `,` / `.` is refused (`1.234,50` in EUR stays `1,23 €`); at 0 a typed mark refuses later digits (`12,5` is 12)",
|
|
5871
|
+
"components": [
|
|
5872
|
+
"BbNumberInput"
|
|
5873
|
+
],
|
|
5874
|
+
"description": "BbNumberInput with max-precision=\"0\" (and a 0-digit currency, JPY): a typed , or . stays in the text and the digits after it are refused (12,5 is 12, was 125, a 100× amount); blur drops the mark. A paste of 12,5 truncates to 12 (never rounded). With max-precision below 3 (0–2, every currency field) a second typed , / . is refused once a decimal exists (owner: no hold rule): it EUR 1.234,50 stays 1,23 €, en 1,234 is 1.23; Q51.2's reclassify (1.234,56 → 1234.56) works only in fields with 3+ decimals",
|
|
5875
|
+
"ruling": "owner 2026-10-07 (Q60.25b)",
|
|
5876
|
+
"guide": "v2-to-v3.md § 6 item 55 + BbNumberInput.guide.md § Bounds & precision, § Locale display",
|
|
5877
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5878
|
+
},
|
|
5879
|
+
{
|
|
5880
|
+
"id": "f326",
|
|
5881
|
+
"kind": "behaviour",
|
|
5882
|
+
"summary": "BbNumberInput: `-` typed anywhere flips the sign in every field (was only at the start); a digit typed before the minus lands after it",
|
|
5883
|
+
"components": [
|
|
5884
|
+
"BbNumberInput"
|
|
5885
|
+
],
|
|
5886
|
+
"description": "BbNumberInput: - typed anywhere flips the sign (was: only at the start; elsewhere ignored), in every field; the caret stays on its digit, and a digit typed before a negative's minus lands after it (-512, was a broken 5-12). Not with disable-formatting (the old field)",
|
|
5887
|
+
"ruling": "owner 2026-10-07 (Q60.25b)",
|
|
5888
|
+
"guide": "v2-to-v3.md § 6 item 55 + BbNumberInput.guide.md § Locale display",
|
|
5889
|
+
"firstReleasedIn": "3.0.0-beta.49"
|
|
5599
5890
|
}
|
|
5600
5891
|
]
|
|
5601
5892
|
}
|