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
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
:layout="layout"
|
|
26
26
|
:name="name"
|
|
27
27
|
:passthrough="passthrough"
|
|
28
|
-
:readonly="
|
|
28
|
+
:readonly="fieldReadonly"
|
|
29
29
|
:reverse="reverse"
|
|
30
30
|
:show-asterisk="showAsterisk"
|
|
31
31
|
:show-hint="showHint"
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
'bb-slider__body--errors': fieldHasErrors,
|
|
53
53
|
'bb-slider__body--warnings':
|
|
54
54
|
Boolean(fieldHasWarnings) && !fieldHasErrors,
|
|
55
|
-
'bb-slider__body--readonly':
|
|
55
|
+
'bb-slider__body--readonly': fieldReadonly,
|
|
56
56
|
}"
|
|
57
57
|
>
|
|
58
58
|
<slot :decrease="decrease" :increase="increase" name="prepend"></slot>
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
:aria-disabled="disabled ? 'true' : undefined"
|
|
129
129
|
:aria-labelledby="thumbLabelledby(fieldId, 'lower')"
|
|
130
130
|
aria-orientation="horizontal"
|
|
131
|
-
:aria-readonly="
|
|
131
|
+
:aria-readonly="fieldReadonly ? 'true' : undefined"
|
|
132
132
|
:aria-valuemax="max"
|
|
133
133
|
:aria-valuemin="min"
|
|
134
134
|
:aria-valuenow="valueNowLower"
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
:aria-disabled="disabled ? 'true' : undefined"
|
|
171
171
|
:aria-labelledby="thumbLabelledby(fieldId, 'higher')"
|
|
172
172
|
aria-orientation="horizontal"
|
|
173
|
-
:aria-readonly="
|
|
173
|
+
:aria-readonly="fieldReadonly ? 'true' : undefined"
|
|
174
174
|
:aria-valuemax="max"
|
|
175
175
|
:aria-valuemin="min"
|
|
176
176
|
:aria-valuenow="valueNowHigher"
|
|
@@ -279,6 +279,7 @@ const {
|
|
|
279
279
|
emit,
|
|
280
280
|
showAsterisk,
|
|
281
281
|
errors: fieldErrors,
|
|
282
|
+
readonly: fieldReadonly,
|
|
282
283
|
} = useFormBinding(declaredProps, declaredEmit, {
|
|
283
284
|
componentName: 'BbSlider',
|
|
284
285
|
identifierFallback: () => declaredProps.label,
|
|
@@ -1494,9 +1495,9 @@ export type BbSliderSlots = {
|
|
|
1494
1495
|
flex-grow: 1;
|
|
1495
1496
|
min-height: calc(var(--control-h) + var(--inside-label-clearance));
|
|
1496
1497
|
min-width: 100px;
|
|
1498
|
+
padding-inline-end: var(--px);
|
|
1499
|
+
padding-inline-start: var(--px);
|
|
1497
1500
|
padding-bottom: var(--py);
|
|
1498
|
-
padding-left: var(--px);
|
|
1499
|
-
padding-right: var(--px);
|
|
1500
1501
|
padding-top: var(--py);
|
|
1501
1502
|
position: relative;
|
|
1502
1503
|
-webkit-touch-callout: none;
|
|
@@ -1524,8 +1525,10 @@ export type BbSliderSlots = {
|
|
|
1524
1525
|
cursor: pointer;
|
|
1525
1526
|
display: block;
|
|
1526
1527
|
height: var(--track);
|
|
1528
|
+
/* stylelint-disable-next-line property-disallowed-list -- geometry: the thumb and fill are placed by physical percentages set in JS */
|
|
1527
1529
|
left: var(--track-inset);
|
|
1528
1530
|
position: absolute;
|
|
1531
|
+
/* stylelint-disable-next-line property-disallowed-list -- geometry: the thumb and fill are placed by physical percentages set in JS */
|
|
1529
1532
|
right: var(--track-inset);
|
|
1530
1533
|
top: var(--centre);
|
|
1531
1534
|
transform: translateY(-50%);
|
|
@@ -1534,11 +1537,14 @@ export type BbSliderSlots = {
|
|
|
1534
1537
|
/* The bar: the selected span, positioned and sized from JS. */
|
|
1535
1538
|
.bb-slider__bar {
|
|
1536
1539
|
background-color: var(--accent);
|
|
1540
|
+
/* stylelint-disable-next-line property-disallowed-list -- geometry: the thumb and fill are placed by physical percentages set in JS */
|
|
1537
1541
|
border-bottom-left-radius: var(--r);
|
|
1542
|
+
/* stylelint-disable-next-line property-disallowed-list -- geometry: the thumb and fill are placed by physical percentages set in JS */
|
|
1538
1543
|
border-top-left-radius: var(--r);
|
|
1539
1544
|
cursor: pointer;
|
|
1540
1545
|
display: block;
|
|
1541
1546
|
height: 100%;
|
|
1547
|
+
/* stylelint-disable-next-line property-disallowed-list -- geometry: the thumb and fill are placed by physical percentages set in JS */
|
|
1542
1548
|
left: 0;
|
|
1543
1549
|
position: absolute;
|
|
1544
1550
|
top: 0;
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
:layout="layout"
|
|
27
27
|
:name="name"
|
|
28
28
|
:passthrough="passthrough"
|
|
29
|
-
:readonly="
|
|
29
|
+
:readonly="fieldReadonly"
|
|
30
30
|
:reverse="reverse"
|
|
31
31
|
:show-asterisk="showAsterisk"
|
|
32
32
|
:show-hint="showHint"
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
:has-errors="!!fieldHasErrors"
|
|
72
72
|
:has-warnings="!!fieldHasWarnings && !fieldHasErrors"
|
|
73
73
|
:indeterminate="!!indeterminate"
|
|
74
|
-
:readonly="!!
|
|
74
|
+
:readonly="!!fieldReadonly"
|
|
75
75
|
v-bind="passthrough.icon"
|
|
76
76
|
/>
|
|
77
77
|
<!-- eslint-enable vue/attributes-order -->
|
|
@@ -137,6 +137,7 @@ const {
|
|
|
137
137
|
showAsterisk,
|
|
138
138
|
errors: fieldErrors,
|
|
139
139
|
ariaRequired: fieldAriaRequired,
|
|
140
|
+
readonly: fieldReadonly,
|
|
140
141
|
} = useFormBinding(declaredProps, declaredEmit, {
|
|
141
142
|
componentName: 'BbSwitch',
|
|
142
143
|
identifierFallback: () => declaredProps.label,
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
:loading="loading"
|
|
30
30
|
:name="name"
|
|
31
31
|
:passthrough="containerPassthrough"
|
|
32
|
-
:readonly="
|
|
32
|
+
:readonly="fieldReadonly"
|
|
33
33
|
:reverse="reverse"
|
|
34
34
|
:show-asterisk="showAsterisk"
|
|
35
35
|
:show-hint="showHint"
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
:has-errors="!!fieldHasErrors"
|
|
113
113
|
:has-warnings="!!fieldHasWarnings && !fieldHasErrors"
|
|
114
114
|
:indeterminate="false"
|
|
115
|
-
:readonly="!!
|
|
115
|
+
:readonly="!!fieldReadonly"
|
|
116
116
|
v-bind="passthrough.part('icon', rowStates, option.item)"
|
|
117
117
|
/>
|
|
118
118
|
<!-- eslint-enable vue/attributes-order -->
|
|
@@ -197,6 +197,7 @@ const {
|
|
|
197
197
|
emit,
|
|
198
198
|
showAsterisk,
|
|
199
199
|
errors: fieldErrors,
|
|
200
|
+
readonly: fieldReadonly,
|
|
200
201
|
} = useFormBinding(declaredProps, declaredEmit, {
|
|
201
202
|
componentName: 'BbSwitchGroup',
|
|
202
203
|
identifierFallback: () => declaredProps.legend,
|
|
@@ -301,6 +302,7 @@ const { options } = useBaseOptions({
|
|
|
301
302
|
itemText: props.itemText as any,
|
|
302
303
|
itemProps: toRef(props, 'itemProps'),
|
|
303
304
|
itemValue: props.itemValue as any,
|
|
305
|
+
optionDefaults: true,
|
|
304
306
|
// A ref, not the setup-time number: a runtime `:max` change must re-gate rows.
|
|
305
307
|
max: toRef(props, 'max'),
|
|
306
308
|
selectable: toRef(props, 'selectable'),
|
|
@@ -639,6 +641,7 @@ export type BbSwitchGroupSlots<T> = {
|
|
|
639
641
|
.bb-switch-group {
|
|
640
642
|
.bb-field__layout--horizontal {
|
|
641
643
|
.bb-field__label {
|
|
644
|
+
/* stylelint-disable-next-line declaration-property-value-disallowed-list -- support: `float: inline-start` needs Chrome 118, above the 114 floor */
|
|
642
645
|
float: left;
|
|
643
646
|
}
|
|
644
647
|
}
|
|
@@ -561,6 +561,7 @@
|
|
|
561
561
|
when there is content, since an empty `rowgroup` fails the required
|
|
562
562
|
owned-elements check. -->
|
|
563
563
|
<div
|
|
564
|
+
ref="footRef"
|
|
564
565
|
class="bb-table__foot"
|
|
565
566
|
:role="slots.tfoot ? 'rowgroup' : undefined"
|
|
566
567
|
v-bind="passthrough.foot"
|
|
@@ -3584,11 +3585,15 @@ watch(
|
|
|
3584
3585
|
{ flush: 'post' }
|
|
3585
3586
|
);
|
|
3586
3587
|
|
|
3587
|
-
/**
|
|
3588
|
+
/**
|
|
3589
|
+
* Builds accessible label for selection controls from row content. The row's
|
|
3590
|
+
* text fills a template (`Select {0}`, `{0} auswählen`, `{0}を選択`), so each
|
|
3591
|
+
* locale puts the verb where its grammar wants it.
|
|
3592
|
+
*/
|
|
3588
3593
|
const getAccessibleLabel = (columns: MappedCell[], item: any) =>
|
|
3589
3594
|
props.accessibleLabel
|
|
3590
3595
|
? props.accessibleLabel(columns, item)
|
|
3591
|
-
:
|
|
3596
|
+
: t('table.select', columns.map((col) => col.content).join(' ')).value;
|
|
3592
3597
|
|
|
3593
3598
|
const containerTag = computed(() => (props.selectable ? 'fieldset' : 'div'));
|
|
3594
3599
|
|
|
@@ -6485,11 +6490,8 @@ const tableBindings = computed(() => {
|
|
|
6485
6490
|
? 'true'
|
|
6486
6491
|
: undefined,
|
|
6487
6492
|
'aria-rowcount':
|
|
6488
|
-
|
|
6489
|
-
?
|
|
6490
|
-
1 +
|
|
6491
|
-
Number(edgeRows.value.first) +
|
|
6492
|
-
Number(edgeRows.value.last)
|
|
6493
|
+
lastBodyRowIndex.value !== undefined
|
|
6494
|
+
? lastBodyRowIndex.value + footRowCount.value
|
|
6493
6495
|
: undefined,
|
|
6494
6496
|
// The grid grammar, delegated: a plain table carries no listener.
|
|
6495
6497
|
...(gridMode.value
|
|
@@ -6593,18 +6595,94 @@ const edgeRowContext = computed<EdgeRowContext>(() => ({
|
|
|
6593
6595
|
* `flatRows`), `last` the table's final row (`aria-rowcount`).
|
|
6594
6596
|
*/
|
|
6595
6597
|
const edgeRowIndex = computed(() => {
|
|
6596
|
-
if (
|
|
6598
|
+
if (lastBodyRowIndex.value === undefined)
|
|
6597
6599
|
return { first: undefined, last: undefined };
|
|
6598
6600
|
const offset = ((contextState.page ?? 1) - 1) * (contextState.perPage ?? 0);
|
|
6599
|
-
return {
|
|
6600
|
-
|
|
6601
|
-
|
|
6602
|
-
|
|
6603
|
-
|
|
6604
|
-
|
|
6605
|
-
|
|
6606
|
-
|
|
6601
|
+
return { first: offset + 2, last: lastBodyRowIndex.value };
|
|
6602
|
+
});
|
|
6603
|
+
|
|
6604
|
+
/**
|
|
6605
|
+
* Q61.10: the `aria-rowindex` of the body's final row, once the pager facts
|
|
6606
|
+
* are known — the header, every item (`totalItems`, not the page or the
|
|
6607
|
+
* virtual window), the edge rows and the open expand rows. Expand rows are
|
|
6608
|
+
* counted where the table knows them: the rows it holds (every row under
|
|
6609
|
+
* `virtual`, this page under pagination). The empty state and the default
|
|
6610
|
+
* skeleton are rows too, numbered from 2, so the count never ends above them.
|
|
6611
|
+
*/
|
|
6612
|
+
const lastBodyRowIndex = computed(() => {
|
|
6613
|
+
if (!hasProvidedAccessibilityData.value || contextState.totalItems == null)
|
|
6614
|
+
return undefined;
|
|
6615
|
+
const items = contextState.totalItems + 1;
|
|
6616
|
+
if (hasTbodySlot.value) return items;
|
|
6617
|
+
if (!options.value.length) {
|
|
6618
|
+
if (!props.loading) return Math.max(items, 2);
|
|
6619
|
+
return slots.loading ? items : Math.max(items, skeletonLength.value + 1);
|
|
6620
|
+
}
|
|
6621
|
+
const expandRows = flatRows.value.length - baseOptions.value.length;
|
|
6622
|
+
return (
|
|
6623
|
+
items +
|
|
6624
|
+
Number(edgeRows.value.first) +
|
|
6625
|
+
Number(edgeRows.value.last) +
|
|
6626
|
+
expandRows
|
|
6627
|
+
);
|
|
6628
|
+
});
|
|
6629
|
+
|
|
6630
|
+
/**
|
|
6631
|
+
* Q61.10: the `#tfoot` rows. They are the consumer's markup, so the table
|
|
6632
|
+
* numbers them after render: each `role="row"` the foot rowgroup owns gets the
|
|
6633
|
+
* next `aria-rowindex` after the body, kept current as the footer's content or
|
|
6634
|
+
* the body's count changes, and counts in `aria-rowcount`. An `aria-rowindex`
|
|
6635
|
+
* the consumer wrote is left alone — a row is the table's to number only while
|
|
6636
|
+
* it carries no index or the one the table last wrote (`stampedFootIndex`).
|
|
6637
|
+
*/
|
|
6638
|
+
const footRef = ref<HTMLElement | null>(null);
|
|
6639
|
+
const footRowCount = ref(0);
|
|
6640
|
+
const stampedFootIndex = new WeakMap<Element, string>();
|
|
6641
|
+
const footRows = (foot: HTMLElement) =>
|
|
6642
|
+
Array.from(foot.querySelectorAll('[role="row"]')).filter(
|
|
6643
|
+
(row) =>
|
|
6644
|
+
row.parentElement?.closest(
|
|
6645
|
+
'[role="rowgroup"], [role="table"], [role="grid"], [role="treegrid"]'
|
|
6646
|
+
) === foot
|
|
6647
|
+
);
|
|
6648
|
+
const syncFootRows = () => {
|
|
6649
|
+
const foot = footRef.value;
|
|
6650
|
+
const rows = foot && slots.tfoot ? footRows(foot) : [];
|
|
6651
|
+
footRowCount.value = rows.length;
|
|
6652
|
+
const last = lastBodyRowIndex.value;
|
|
6653
|
+
rows.forEach((row, index) => {
|
|
6654
|
+
const current = row.getAttribute('aria-rowindex');
|
|
6655
|
+
const ours = current === null || stampedFootIndex.get(row) === current;
|
|
6656
|
+
if (!ours) {
|
|
6657
|
+
stampedFootIndex.delete(row);
|
|
6658
|
+
return;
|
|
6659
|
+
}
|
|
6660
|
+
if (last === undefined) {
|
|
6661
|
+
if (current !== null) row.removeAttribute('aria-rowindex');
|
|
6662
|
+
stampedFootIndex.delete(row);
|
|
6663
|
+
return;
|
|
6664
|
+
}
|
|
6665
|
+
const value = String(last + 1 + index);
|
|
6666
|
+
if (current !== value) row.setAttribute('aria-rowindex', value);
|
|
6667
|
+
stampedFootIndex.set(row, value);
|
|
6668
|
+
});
|
|
6669
|
+
};
|
|
6670
|
+
let footObserver: MutationObserver | undefined;
|
|
6671
|
+
onMounted(() => {
|
|
6672
|
+
syncFootRows();
|
|
6673
|
+
if (!footRef.value || typeof MutationObserver === 'undefined') return;
|
|
6674
|
+
footObserver = new MutationObserver(syncFootRows);
|
|
6675
|
+
// `aria-rowindex` is watched so a consumer re-binding it is seen; the
|
|
6676
|
+
// table's own writes settle on the next pass (the value is already there).
|
|
6677
|
+
footObserver.observe(footRef.value, {
|
|
6678
|
+
childList: true,
|
|
6679
|
+
subtree: true,
|
|
6680
|
+
attributes: true,
|
|
6681
|
+
attributeFilter: ['role', 'aria-rowindex'],
|
|
6682
|
+
});
|
|
6607
6683
|
});
|
|
6684
|
+
watch(lastBodyRowIndex, syncFootRows, { flush: 'post' });
|
|
6685
|
+
onBeforeUnmount(() => footObserver?.disconnect());
|
|
6608
6686
|
|
|
6609
6687
|
/**
|
|
6610
6688
|
* The pins, resolved from keys to RENDERED positions for the sticky pass:
|
|
@@ -8082,12 +8160,14 @@ export type BbTableSlots<Item = any> = BbTableColumnSlots<Item> & {
|
|
|
8082
8160
|
|
|
8083
8161
|
&--align {
|
|
8084
8162
|
&-left {
|
|
8163
|
+
/* stylelint-disable-next-line declaration-property-value-disallowed-list -- geometry: the column `align` prop names a physical side */
|
|
8085
8164
|
text-align: left;
|
|
8086
8165
|
}
|
|
8087
8166
|
&-center {
|
|
8088
8167
|
text-align: center;
|
|
8089
8168
|
}
|
|
8090
8169
|
&-right {
|
|
8170
|
+
/* stylelint-disable-next-line declaration-property-value-disallowed-list -- geometry: the column `align` prop names a physical side */
|
|
8091
8171
|
text-align: right;
|
|
8092
8172
|
}
|
|
8093
8173
|
}
|
|
@@ -8383,11 +8463,13 @@ export type BbTableSlots<Item = any> = BbTableColumnSlots<Item> & {
|
|
|
8383
8463
|
}
|
|
8384
8464
|
[data-pin-edge='left']::after {
|
|
8385
8465
|
background: linear-gradient(to right, var(--cue), transparent);
|
|
8466
|
+
/* stylelint-disable-next-line property-disallowed-list -- geometry: a pinned column side is physical (`pin` names it) */
|
|
8386
8467
|
left: 100%;
|
|
8387
8468
|
width: var(--cue-l);
|
|
8388
8469
|
}
|
|
8389
8470
|
[data-pin-edge='right']::after {
|
|
8390
8471
|
background: linear-gradient(to left, var(--cue), transparent);
|
|
8472
|
+
/* stylelint-disable-next-line property-disallowed-list -- geometry: a pinned column side is physical (`pin` names it) */
|
|
8391
8473
|
right: 100%;
|
|
8392
8474
|
width: var(--cue-r);
|
|
8393
8475
|
}
|
|
@@ -8477,6 +8559,7 @@ export type BbTableSlots<Item = any> = BbTableColumnSlots<Item> & {
|
|
|
8477
8559
|
}
|
|
8478
8560
|
|
|
8479
8561
|
&--right {
|
|
8562
|
+
/* stylelint-disable-next-line declaration-property-value-disallowed-list -- geometry: the column `align` prop names a physical side */
|
|
8480
8563
|
text-align: right;
|
|
8481
8564
|
}
|
|
8482
8565
|
}
|
|
@@ -8704,7 +8787,7 @@ export type BbTableSlots<Item = any> = BbTableColumnSlots<Item> & {
|
|
|
8704
8787
|
font-size: var(--bb-fs);
|
|
8705
8788
|
font-weight: 500;
|
|
8706
8789
|
inset: auto;
|
|
8707
|
-
|
|
8790
|
+
inset-inline-start: 0;
|
|
8708
8791
|
margin: 0;
|
|
8709
8792
|
overflow: visible;
|
|
8710
8793
|
padding: 4px 10px;
|
|
@@ -9043,6 +9126,7 @@ export type BbTableSlots<Item = any> = BbTableColumnSlots<Item> & {
|
|
|
9043
9126
|
}
|
|
9044
9127
|
|
|
9045
9128
|
&--right {
|
|
9129
|
+
/* stylelint-disable-next-line declaration-property-value-disallowed-list -- geometry: the column `align` prop names a physical side */
|
|
9046
9130
|
text-align: right;
|
|
9047
9131
|
}
|
|
9048
9132
|
|
|
@@ -9057,7 +9141,7 @@ export type BbTableSlots<Item = any> = BbTableColumnSlots<Item> & {
|
|
|
9057
9141
|
side rather than a wrapped stack. */
|
|
9058
9142
|
white-space: nowrap;
|
|
9059
9143
|
> *:not(:first-child) {
|
|
9060
|
-
margin-
|
|
9144
|
+
margin-inline-start: var(--actions-spacing);
|
|
9061
9145
|
}
|
|
9062
9146
|
}
|
|
9063
9147
|
}
|
package/dist/ai/source/BbTabs.md
CHANGED
|
@@ -92,13 +92,13 @@ defineSlots<BbTabsSlots<K>>();
|
|
|
92
92
|
|
|
93
93
|
if (process.env.NODE_ENV !== 'production')
|
|
94
94
|
warnRemovedAttrs('BbTabs', removedPropsFor('BbTabs'), {
|
|
95
|
-
slotKeys: () => (props.items ?? []).map((item) => item.
|
|
95
|
+
slotKeys: () => (props.items ?? []).map((item) => item.value),
|
|
96
96
|
family: 'BbTabs',
|
|
97
97
|
});
|
|
98
98
|
|
|
99
99
|
// Untyped view of the received slots: every slot (*:label, panels, wrapper:*)
|
|
100
100
|
// is forwarded verbatim to both subcomponents; each renders only the names
|
|
101
|
-
// it owns, so the fallback chain (`<
|
|
101
|
+
// it owns, so the fallback chain (`<value>:label` → `label` → text) is kept.
|
|
102
102
|
const forwardedSlots = useSlots();
|
|
103
103
|
|
|
104
104
|
const { id, direction, block, compact, disabled } = createTabsContext(
|
|
@@ -246,9 +246,13 @@ export type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & {
|
|
|
246
246
|
*/
|
|
247
247
|
href?: string;
|
|
248
248
|
/**
|
|
249
|
-
*
|
|
249
|
+
* Identifies the tab: what `v-model` holds while it is the active one, the
|
|
250
|
+
* name of its slots (`#<value>` for its panel, `#<value>:label` for its
|
|
251
|
+
* trigger, through `slotKey`) and, with `navigation`, the URL slug.
|
|
250
252
|
*/
|
|
251
|
-
|
|
253
|
+
value: K;
|
|
254
|
+
/** Tabs have no `key` (that is `value`). Guards against the old shape. */
|
|
255
|
+
key?: never;
|
|
252
256
|
/**
|
|
253
257
|
* Label to use as the tab text.
|
|
254
258
|
*/
|
|
@@ -265,7 +269,7 @@ export type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & {
|
|
|
265
269
|
* Passthrough parts of `BbTabs` (plans/passthrough/BbTabs.md). Tabs do not
|
|
266
270
|
* "open", so there is no `open` state.
|
|
267
271
|
*
|
|
268
|
-
* Per-item functions: on the instance, `item` also accepts `({ item, active, … }) => PtValue | false | null | undefined` — `item` is the tab's descriptor (the element of `items`: its `
|
|
272
|
+
* Per-item functions: on the instance, `item` also accepts `({ item, active, … }) => PtValue | false | null | undefined` — `item` is the tab's descriptor (the element of `items`: its `value`, `label`, anything else you put on it), and every state a boolean beside it, on for it (`active`, `disabled`, …) — in the `pt` object or the `:pt:item` attribute, never on a `item:<state>` key and never in the global map or a scope (they ship as JSON). Its result is merged last, after every state entry, through the same deduper; a falsy result leaves the trigger as it was. No other part takes a function. See the passthrough guide, _Per-item functions_.
|
|
269
273
|
*
|
|
270
274
|
* @part root - The tabs' outer element, around the strip and the panels.
|
|
271
275
|
* @part wrapper - The strip's outer element: the `wrapper:prepend` slot, the
|
|
@@ -415,7 +419,9 @@ export type BbTabsRootProps<K extends string = string> =
|
|
|
415
419
|
*/
|
|
416
420
|
disabled?: boolean;
|
|
417
421
|
/**
|
|
418
|
-
*
|
|
422
|
+
* Renders every tab's panel at mount and keeps it mounted, hidden while
|
|
423
|
+
* inactive, instead of only the active one. One tab alone: its item's
|
|
424
|
+
* `eager`.
|
|
419
425
|
*/
|
|
420
426
|
eager?: boolean;
|
|
421
427
|
/**
|
|
@@ -464,9 +470,9 @@ export type BbTabsRootProps<K extends string = string> =
|
|
|
464
470
|
*/
|
|
465
471
|
manualActivation?: boolean;
|
|
466
472
|
/**
|
|
467
|
-
* The
|
|
473
|
+
* The active tab's `value`. Used by v-model.
|
|
468
474
|
*/
|
|
469
|
-
modelValue?: null | BbTabsItem<K>['
|
|
475
|
+
modelValue?: null | BbTabsItem<K>['value'];
|
|
470
476
|
/**
|
|
471
477
|
* Synchronizes the current tab with the URL query parameter.
|
|
472
478
|
*
|
|
@@ -567,8 +573,8 @@ export type BbTabsRootEvents<K extends string = string> = BbTabsEvents<K>;
|
|
|
567
573
|
|
|
568
574
|
/** Props exposed by the per-tab label slots and the generic `label` fallback slot. */
|
|
569
575
|
export type BbTabsSlotProps<K extends string = string> = {
|
|
570
|
-
/** The
|
|
571
|
-
current: BbTabsItem<K>['
|
|
576
|
+
/** The `value` of the currently active tab. */
|
|
577
|
+
current: BbTabsItem<K>['value'] | null;
|
|
572
578
|
/** Zero-based index of the currently active tab. */
|
|
573
579
|
currentIndex: number;
|
|
574
580
|
/** Whether this tab is disabled. */
|
|
@@ -579,10 +585,10 @@ export type BbTabsSlotProps<K extends string = string> = {
|
|
|
579
585
|
isLast: boolean;
|
|
580
586
|
/** Whether this specific tab is currently active. */
|
|
581
587
|
selected: boolean;
|
|
582
|
-
/**
|
|
583
|
-
|
|
584
|
-
/**
|
|
585
|
-
value: BbTabsItem<K>['
|
|
588
|
+
/** This tab's `label`. */
|
|
589
|
+
label: BbTabsItem<K>['label'];
|
|
590
|
+
/** This tab's `value`. */
|
|
591
|
+
value: BbTabsItem<K>['value'];
|
|
586
592
|
/** Navigate to `'first'`, `'previous'`, `'next'`, or `'last'` tab. */
|
|
587
593
|
goTo: (target: 'first' | 'previous' | 'next' | 'last') => void;
|
|
588
594
|
};
|
|
@@ -605,7 +611,7 @@ export type BbTabsScrollSlotProps = {
|
|
|
605
611
|
/**
|
|
606
612
|
* Slots rendered by the tab list (the strip of triggers).
|
|
607
613
|
*
|
|
608
|
-
* @dynamicSlot `<
|
|
614
|
+
* @dynamicSlot `<value>:label` {BbTabsSlotProps<K>} - One tab trigger's label, by the tab's `value` through `slotKey`; beats `label`, which beats the item's `label` text.
|
|
609
615
|
*/
|
|
610
616
|
export type BbTabsListSlots<K extends string = string> = {
|
|
611
617
|
/**
|
|
@@ -617,16 +623,16 @@ export type BbTabsListSlots<K extends string = string> = {
|
|
|
617
623
|
*/
|
|
618
624
|
'wrapper:append'?: (props: BbTabsScrollSlotProps) => any;
|
|
619
625
|
/**
|
|
620
|
-
* Fallback slot used for all tab labels when no per-tab `<
|
|
626
|
+
* Fallback slot used for all tab labels when no per-tab `<value>:label` slot is provided.
|
|
621
627
|
*/
|
|
622
628
|
label?: (props: BbTabsSlotProps<K>) => any;
|
|
623
629
|
} & Record<string, ((props: BbTabsSlotProps<K>) => any) | undefined>;
|
|
624
630
|
|
|
625
631
|
/**
|
|
626
632
|
* Slots rendered by the tab panels — one per tab, keyed by the normalized
|
|
627
|
-
* `slotKey(
|
|
633
|
+
* `slotKey(value)`.
|
|
628
634
|
*
|
|
629
|
-
* @dynamicSlot `<
|
|
635
|
+
* @dynamicSlot `<value>` {BbTabsSlotProps<K>} - One tab's content panel, by the tab's `value` through `slotKey`; no fallback (an empty panel).
|
|
630
636
|
*/
|
|
631
637
|
export type BbTabsPanelsSlots<K extends string = string> = Record<
|
|
632
638
|
string,
|
|
@@ -634,16 +640,16 @@ export type BbTabsPanelsSlots<K extends string = string> = Record<
|
|
|
634
640
|
>;
|
|
635
641
|
|
|
636
642
|
/**
|
|
637
|
-
* @dynamicSlot `<
|
|
638
|
-
* @dynamicSlot `<
|
|
643
|
+
* @dynamicSlot `<value>` {BbTabsSlotProps<K>} - One tab's content panel, by the tab's `value` through `slotKey`; no fallback (an empty panel).
|
|
644
|
+
* @dynamicSlot `<value>:label` {BbTabsSlotProps<K>} - One tab trigger's label, by the tab's `value` through `slotKey`; beats `label`, which beats the item's `label` text.
|
|
639
645
|
*/
|
|
640
646
|
export type BbTabsSlots<K extends string = string> = BbTabsListSlots<K> &
|
|
641
647
|
BbTabsPanelsSlots<K>;
|
|
642
648
|
|
|
643
649
|
/** Props exposed by the `BbTabsRoot` default slot. */
|
|
644
650
|
export type BbTabsRootSlotProps<K extends string = string> = {
|
|
645
|
-
/** The
|
|
646
|
-
current: BbTabsItem<K>['
|
|
651
|
+
/** The `value` of the currently active tab. */
|
|
652
|
+
current: BbTabsItem<K>['value'] | null;
|
|
647
653
|
/** Zero-based index of the currently active tab. */
|
|
648
654
|
currentIndex: number;
|
|
649
655
|
/** Whether the active tab is the first tab. */
|
|
@@ -652,8 +658,8 @@ export type BbTabsRootSlotProps<K extends string = string> = {
|
|
|
652
658
|
isLast: boolean;
|
|
653
659
|
/** Navigate to `'first'`, `'previous'`, `'next'`, or `'last'` tab. */
|
|
654
660
|
goTo: (target: 'first' | 'previous' | 'next' | 'last') => void;
|
|
655
|
-
/** Select a tab by
|
|
656
|
-
select: (
|
|
661
|
+
/** Select a tab by its `value`. */
|
|
662
|
+
select: (value: BbTabsItem<K>['value']) => void;
|
|
657
663
|
};
|
|
658
664
|
|
|
659
665
|
export type BbTabsRootSlots<K extends string = string> = {
|
|
@@ -154,7 +154,7 @@ const context =
|
|
|
154
154
|
|
|
155
155
|
if (process.env.NODE_ENV !== 'production')
|
|
156
156
|
warnRemovedAttrs('BbTabsList', removedPropsFor('BbTabsList'), {
|
|
157
|
-
slotKeys: () => context.items.value.map((item) => item.
|
|
157
|
+
slotKeys: () => context.items.value.map((item) => item.value),
|
|
158
158
|
family: 'BbTabs',
|
|
159
159
|
});
|
|
160
160
|
|
|
@@ -515,9 +515,13 @@ export type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & {
|
|
|
515
515
|
*/
|
|
516
516
|
href?: string;
|
|
517
517
|
/**
|
|
518
|
-
*
|
|
518
|
+
* Identifies the tab: what `v-model` holds while it is the active one, the
|
|
519
|
+
* name of its slots (`#<value>` for its panel, `#<value>:label` for its
|
|
520
|
+
* trigger, through `slotKey`) and, with `navigation`, the URL slug.
|
|
519
521
|
*/
|
|
520
|
-
|
|
522
|
+
value: K;
|
|
523
|
+
/** Tabs have no `key` (that is `value`). Guards against the old shape. */
|
|
524
|
+
key?: never;
|
|
521
525
|
/**
|
|
522
526
|
* Label to use as the tab text.
|
|
523
527
|
*/
|
|
@@ -534,7 +538,7 @@ export type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & {
|
|
|
534
538
|
* Passthrough parts of `BbTabs` (plans/passthrough/BbTabs.md). Tabs do not
|
|
535
539
|
* "open", so there is no `open` state.
|
|
536
540
|
*
|
|
537
|
-
* Per-item functions: on the instance, `item` also accepts `({ item, active, … }) => PtValue | false | null | undefined` — `item` is the tab's descriptor (the element of `items`: its `
|
|
541
|
+
* Per-item functions: on the instance, `item` also accepts `({ item, active, … }) => PtValue | false | null | undefined` — `item` is the tab's descriptor (the element of `items`: its `value`, `label`, anything else you put on it), and every state a boolean beside it, on for it (`active`, `disabled`, …) — in the `pt` object or the `:pt:item` attribute, never on a `item:<state>` key and never in the global map or a scope (they ship as JSON). Its result is merged last, after every state entry, through the same deduper; a falsy result leaves the trigger as it was. No other part takes a function. See the passthrough guide, _Per-item functions_.
|
|
538
542
|
*
|
|
539
543
|
* @part root - The tabs' outer element, around the strip and the panels.
|
|
540
544
|
* @part wrapper - The strip's outer element: the `wrapper:prepend` slot, the
|
|
@@ -684,7 +688,9 @@ export type BbTabsRootProps<K extends string = string> =
|
|
|
684
688
|
*/
|
|
685
689
|
disabled?: boolean;
|
|
686
690
|
/**
|
|
687
|
-
*
|
|
691
|
+
* Renders every tab's panel at mount and keeps it mounted, hidden while
|
|
692
|
+
* inactive, instead of only the active one. One tab alone: its item's
|
|
693
|
+
* `eager`.
|
|
688
694
|
*/
|
|
689
695
|
eager?: boolean;
|
|
690
696
|
/**
|
|
@@ -733,9 +739,9 @@ export type BbTabsRootProps<K extends string = string> =
|
|
|
733
739
|
*/
|
|
734
740
|
manualActivation?: boolean;
|
|
735
741
|
/**
|
|
736
|
-
* The
|
|
742
|
+
* The active tab's `value`. Used by v-model.
|
|
737
743
|
*/
|
|
738
|
-
modelValue?: null | BbTabsItem<K>['
|
|
744
|
+
modelValue?: null | BbTabsItem<K>['value'];
|
|
739
745
|
/**
|
|
740
746
|
* Synchronizes the current tab with the URL query parameter.
|
|
741
747
|
*
|
|
@@ -836,8 +842,8 @@ export type BbTabsRootEvents<K extends string = string> = BbTabsEvents<K>;
|
|
|
836
842
|
|
|
837
843
|
/** Props exposed by the per-tab label slots and the generic `label` fallback slot. */
|
|
838
844
|
export type BbTabsSlotProps<K extends string = string> = {
|
|
839
|
-
/** The
|
|
840
|
-
current: BbTabsItem<K>['
|
|
845
|
+
/** The `value` of the currently active tab. */
|
|
846
|
+
current: BbTabsItem<K>['value'] | null;
|
|
841
847
|
/** Zero-based index of the currently active tab. */
|
|
842
848
|
currentIndex: number;
|
|
843
849
|
/** Whether this tab is disabled. */
|
|
@@ -848,10 +854,10 @@ export type BbTabsSlotProps<K extends string = string> = {
|
|
|
848
854
|
isLast: boolean;
|
|
849
855
|
/** Whether this specific tab is currently active. */
|
|
850
856
|
selected: boolean;
|
|
851
|
-
/**
|
|
852
|
-
|
|
853
|
-
/**
|
|
854
|
-
value: BbTabsItem<K>['
|
|
857
|
+
/** This tab's `label`. */
|
|
858
|
+
label: BbTabsItem<K>['label'];
|
|
859
|
+
/** This tab's `value`. */
|
|
860
|
+
value: BbTabsItem<K>['value'];
|
|
855
861
|
/** Navigate to `'first'`, `'previous'`, `'next'`, or `'last'` tab. */
|
|
856
862
|
goTo: (target: 'first' | 'previous' | 'next' | 'last') => void;
|
|
857
863
|
};
|
|
@@ -874,7 +880,7 @@ export type BbTabsScrollSlotProps = {
|
|
|
874
880
|
/**
|
|
875
881
|
* Slots rendered by the tab list (the strip of triggers).
|
|
876
882
|
*
|
|
877
|
-
* @dynamicSlot `<
|
|
883
|
+
* @dynamicSlot `<value>:label` {BbTabsSlotProps<K>} - One tab trigger's label, by the tab's `value` through `slotKey`; beats `label`, which beats the item's `label` text.
|
|
878
884
|
*/
|
|
879
885
|
export type BbTabsListSlots<K extends string = string> = {
|
|
880
886
|
/**
|
|
@@ -886,16 +892,16 @@ export type BbTabsListSlots<K extends string = string> = {
|
|
|
886
892
|
*/
|
|
887
893
|
'wrapper:append'?: (props: BbTabsScrollSlotProps) => any;
|
|
888
894
|
/**
|
|
889
|
-
* Fallback slot used for all tab labels when no per-tab `<
|
|
895
|
+
* Fallback slot used for all tab labels when no per-tab `<value>:label` slot is provided.
|
|
890
896
|
*/
|
|
891
897
|
label?: (props: BbTabsSlotProps<K>) => any;
|
|
892
898
|
} & Record<string, ((props: BbTabsSlotProps<K>) => any) | undefined>;
|
|
893
899
|
|
|
894
900
|
/**
|
|
895
901
|
* Slots rendered by the tab panels — one per tab, keyed by the normalized
|
|
896
|
-
* `slotKey(
|
|
902
|
+
* `slotKey(value)`.
|
|
897
903
|
*
|
|
898
|
-
* @dynamicSlot `<
|
|
904
|
+
* @dynamicSlot `<value>` {BbTabsSlotProps<K>} - One tab's content panel, by the tab's `value` through `slotKey`; no fallback (an empty panel).
|
|
899
905
|
*/
|
|
900
906
|
export type BbTabsPanelsSlots<K extends string = string> = Record<
|
|
901
907
|
string,
|
|
@@ -903,16 +909,16 @@ export type BbTabsPanelsSlots<K extends string = string> = Record<
|
|
|
903
909
|
>;
|
|
904
910
|
|
|
905
911
|
/**
|
|
906
|
-
* @dynamicSlot `<
|
|
907
|
-
* @dynamicSlot `<
|
|
912
|
+
* @dynamicSlot `<value>` {BbTabsSlotProps<K>} - One tab's content panel, by the tab's `value` through `slotKey`; no fallback (an empty panel).
|
|
913
|
+
* @dynamicSlot `<value>:label` {BbTabsSlotProps<K>} - One tab trigger's label, by the tab's `value` through `slotKey`; beats `label`, which beats the item's `label` text.
|
|
908
914
|
*/
|
|
909
915
|
export type BbTabsSlots<K extends string = string> = BbTabsListSlots<K> &
|
|
910
916
|
BbTabsPanelsSlots<K>;
|
|
911
917
|
|
|
912
918
|
/** Props exposed by the `BbTabsRoot` default slot. */
|
|
913
919
|
export type BbTabsRootSlotProps<K extends string = string> = {
|
|
914
|
-
/** The
|
|
915
|
-
current: BbTabsItem<K>['
|
|
920
|
+
/** The `value` of the currently active tab. */
|
|
921
|
+
current: BbTabsItem<K>['value'] | null;
|
|
916
922
|
/** Zero-based index of the currently active tab. */
|
|
917
923
|
currentIndex: number;
|
|
918
924
|
/** Whether the active tab is the first tab. */
|
|
@@ -921,8 +927,8 @@ export type BbTabsRootSlotProps<K extends string = string> = {
|
|
|
921
927
|
isLast: boolean;
|
|
922
928
|
/** Navigate to `'first'`, `'previous'`, `'next'`, or `'last'` tab. */
|
|
923
929
|
goTo: (target: 'first' | 'previous' | 'next' | 'last') => void;
|
|
924
|
-
/** Select a tab by
|
|
925
|
-
select: (
|
|
930
|
+
/** Select a tab by its `value`. */
|
|
931
|
+
select: (value: BbTabsItem<K>['value']) => void;
|
|
926
932
|
};
|
|
927
933
|
|
|
928
934
|
export type BbTabsRootSlots<K extends string = string> = {
|