bitboss-ui 3.0.0-beta.65 → 3.0.0-beta.67
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 +79 -16
- package/bin/bitboss-ui-mcp.mjs +48 -17
- package/bin/bitboss-ui.mjs +73 -12
- package/dist/_virtual/_plugin-vue_export-helper.js +1 -2
- package/dist/ai/BbAccordion.md +4 -3
- package/dist/ai/BbAlert.md +2 -2
- package/dist/ai/BbAvatar.md +1 -1
- package/dist/ai/BbBadge.md +2 -1
- package/dist/ai/BbBadgeButton.md +6 -5
- package/dist/ai/BbBaseButton.md +26 -21
- package/dist/ai/BbBaseCheckboxIcon.md +1 -0
- package/dist/ai/BbBaseRadioIcon.md +1 -0
- package/dist/ai/BbBaseSwitchIcon.md +1 -0
- package/dist/ai/BbBreadcrumbs.md +9 -1
- package/dist/ai/BbButton.md +74 -22
- package/dist/ai/BbCalendar.md +156 -23
- package/dist/ai/BbCheckbox.md +5 -1
- package/dist/ai/BbCheckboxGroup.md +45 -9
- package/dist/ai/BbColorInput.md +5 -3
- package/dist/ai/BbColorPalette.md +7 -3
- package/dist/ai/BbConfirm.md +38 -81
- package/dist/ai/BbConfirmPortal.md +1 -1
- package/dist/ai/BbDatePicker.md +70 -22
- package/dist/ai/BbDatePickerInput.md +121 -27
- package/dist/ai/BbDialog.md +69 -61
- package/dist/ai/BbDropdown.md +30 -29
- package/dist/ai/BbDropdownButton.md +9 -13
- package/dist/ai/BbDropzone.md +2 -3
- package/dist/ai/BbForm.md +70 -46
- package/dist/ai/BbHost.md +29 -41
- package/dist/ai/BbIcon.md +3 -0
- package/dist/ai/BbNumberInput.md +17 -13
- package/dist/ai/BbOffCanvas.md +21 -14
- package/dist/ai/BbPagination.md +18 -18
- package/dist/ai/BbPopover.md +8 -3
- package/dist/ai/BbPtScope.md +5 -5
- package/dist/ai/BbRadio.md +5 -1
- package/dist/ai/BbRadioGroup.md +45 -8
- package/dist/ai/BbRating.md +5 -4
- package/dist/ai/BbSelect.md +150 -24
- package/dist/ai/BbSelectPopover.md +19 -16
- package/dist/ai/BbSlider.md +6 -4
- package/dist/ai/BbSwitch.md +5 -1
- package/dist/ai/BbTable.md +69 -44
- package/dist/ai/BbTabs.md +128 -64
- package/dist/ai/BbTabsList.md +5 -3
- package/dist/ai/BbTabsPanels.md +3 -1
- package/dist/ai/BbTabsRoot.md +4 -4
- package/dist/ai/BbTag.md +3 -3
- package/dist/ai/BbTextInput.md +23 -9
- package/dist/ai/BbTextarea.md +3 -3
- package/dist/ai/BbTimePicker.md +8 -6
- package/dist/ai/BbTimePickerInput.md +9 -12
- package/dist/ai/BbToast.md +33 -87
- package/dist/ai/BbToastPortal.md +1 -1
- package/dist/ai/BbTooltip.md +2 -2
- package/dist/ai/BbTree.md +2 -2
- package/dist/ai/ChipsBox.md +1 -1
- package/dist/ai/CommonField.md +2 -2
- package/dist/ai/CommonFieldInput.md +2 -1
- package/dist/ai/FlatListBox.md +2 -2
- package/dist/ai/GroupedListBox.md +2 -2
- package/dist/ai/ListBox.md +2 -2
- package/dist/ai/OptionsContainer.md +2 -2
- package/dist/ai/changelog.json +595 -525
- package/dist/ai/components.json +92 -88
- package/dist/ai/composables/useBbConfig.md +2 -2
- package/dist/ai/composables/{useBbDialogContext.md → useBbDialog.md} +18 -18
- package/dist/ai/composables/{useBbDropdownContext.md → useBbDropdown.md} +31 -31
- package/dist/ai/composables/{useBbFormContext.md → useBbForm.md} +11 -11
- package/dist/ai/composables/useBbFormField.md +2 -2
- package/dist/ai/composables/{useBbOffCanvasContext.md → useBbOffCanvas.md} +13 -13
- package/dist/ai/composables/{useBbTableContext.md → useBbTable.md} +20 -20
- package/dist/ai/composables/{useBbTabsContext.md → useBbTabs.md} +12 -12
- package/dist/ai/composables/useConfirm.md +42 -54
- package/dist/ai/composables/useToast.md +9 -26
- package/dist/ai/guides/agent-contract.md +57 -43
- package/dist/ai/guides/ai-router.md +1 -1
- package/dist/ai/guides/app-layout.md +32 -23
- package/dist/ai/guides/coherence-playbook.md +4 -2
- package/dist/ai/guides/component-picker.md +37 -33
- package/dist/ai/guides/design-language.md +51 -14
- package/dist/ai/guides/design-tokens.md +99 -44
- package/dist/ai/guides/eslint-rules.md +8 -4
- package/dist/ai/guides/fetch-items-playbook.md +4 -3
- package/dist/ai/guides/floating-bottom-panel.md +1 -1
- package/dist/ai/guides/icons-policy.md +1 -1
- package/dist/ai/guides/inertia-helpers.md +661 -210
- package/dist/ai/guides/inline-edit-playbook.md +1 -1
- package/dist/ai/guides/installation-and-plugin-setup.md +22 -19
- package/dist/ai/guides/migration/adoption-checklist.md +44 -2
- package/dist/ai/guides/migration/components/bb-dialog.md +13 -13
- package/dist/ai/guides/migration/components/bb-dropdown.md +16 -16
- package/dist/ai/guides/migration/components/bb-host.md +15 -14
- package/dist/ai/guides/migration/components/bb-offcanvas.md +10 -10
- package/dist/ai/guides/migration/components/bb-pagination.md +9 -9
- package/dist/ai/guides/migration/components/bb-select.md +2 -3
- package/dist/ai/guides/migration/components/bb-table.md +15 -15
- package/dist/ai/guides/migration/components/bb-tabs.md +1 -1
- package/dist/ai/guides/migration/from-async-validator.md +9 -9
- package/dist/ai/guides/migration/v2-to-v3.md +206 -13
- package/dist/ai/guides/migration/v3-beta-tooling.md +3 -3
- package/dist/ai/guides/options-items-playbook.md +2 -2
- package/dist/ai/guides/page-shell.md +15 -3
- package/dist/ai/guides/passthrough.md +60 -15
- package/dist/ai/guides/preset-components.md +102 -43
- package/dist/ai/guides/typescript-generic-components.md +21 -5
- package/dist/ai/guides/validated-forms.md +23 -14
- package/dist/ai/guides/validation-libraries.md +11 -13
- package/dist/ai/guides/validation-providers.md +3 -3
- package/dist/ai/helpers/definePreset.json +11 -4
- package/dist/ai/helpers/definePreset.ts +98 -41
- package/dist/ai/helpers/inertia/manifest.json +235 -77
- package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +24 -12
- package/dist/ai/helpers/inertia/usePromiseForm.ts +38 -151
- package/dist/ai/helpers/inertia/usePromiseRouter.ts +295 -0
- package/dist/ai/helpers/inertia/useQueryObject.ts +36 -5
- package/dist/ai/helpers/inertia/useRouteQuery.ts +28 -9
- package/dist/ai/helpers/inertia/utils.ts +53 -10
- package/dist/ai/index.md +15 -15
- package/dist/ai/manifest/common.json +5 -2
- package/dist/ai/manifest/components/BbAccordion.tree.json +3 -1
- package/dist/ai/manifest/components/BbAlert.json +1 -1
- package/dist/ai/manifest/components/BbAvatar.tree.json +1 -1
- package/dist/ai/manifest/components/BbBadge.json +2 -2
- package/dist/ai/manifest/components/BbBadge.tree.json +4 -2
- package/dist/ai/manifest/components/BbBadgeButton.json +11 -6
- package/dist/ai/manifest/components/BbBadgeButton.tree.json +2 -1
- package/dist/ai/manifest/components/BbBaseButton.json +11 -6
- package/dist/ai/manifest/components/BbBaseCheckboxIcon.json +1 -1
- package/dist/ai/manifest/components/BbBaseCheckboxIcon.tree.json +3 -1
- package/dist/ai/manifest/components/BbBaseRadioIcon.json +1 -1
- package/dist/ai/manifest/components/BbBaseRadioIcon.tree.json +3 -1
- package/dist/ai/manifest/components/BbBaseSwitchIcon.json +1 -1
- package/dist/ai/manifest/components/BbBaseSwitchIcon.tree.json +3 -1
- package/dist/ai/manifest/components/BbBreadcrumbs.json +3 -3
- package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +7 -3
- package/dist/ai/manifest/components/BbButton.json +10 -5
- package/dist/ai/manifest/components/BbButton.tree.json +10 -3
- package/dist/ai/manifest/components/BbCalendar.json +29 -26
- package/dist/ai/manifest/components/BbCalendar.tree.json +25 -2
- package/dist/ai/manifest/components/BbCheckbox.json +2 -2
- package/dist/ai/manifest/components/BbCheckbox.tree.json +5 -2
- package/dist/ai/manifest/components/BbCheckboxGroup.json +2 -2
- package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +62 -3
- package/dist/ai/manifest/components/BbCollapsible.json +4 -1
- package/dist/ai/manifest/components/BbColorInput.json +18 -17
- package/dist/ai/manifest/components/BbColorInput.tree.json +5 -3
- package/dist/ai/manifest/components/BbColorPalette.json +4 -1
- package/dist/ai/manifest/components/BbColorPalette.tree.json +7 -2
- package/dist/ai/manifest/components/BbConfirm.json +2 -1
- package/dist/ai/manifest/components/BbConfirm.tree.json +2 -2
- package/dist/ai/manifest/components/BbDatePicker.json +33 -27
- package/dist/ai/manifest/components/BbDatePicker.tree.json +3 -4
- package/dist/ai/manifest/components/BbDatePickerInput.json +38 -35
- package/dist/ai/manifest/components/BbDatePickerInput.tree.json +7 -4
- package/dist/ai/manifest/components/BbDialog.json +4 -4
- package/dist/ai/manifest/components/BbDialog.tree.json +6 -3
- package/dist/ai/manifest/components/BbDropdown.json +11 -11
- package/dist/ai/manifest/components/BbDropdown.tree.json +3 -3
- package/dist/ai/manifest/components/BbDropdownButton.json +13 -8
- package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -3
- package/dist/ai/manifest/components/BbDropzone.json +5 -2
- package/dist/ai/manifest/components/BbForm.json +2 -2
- package/dist/ai/manifest/components/BbHost.json +1 -1
- package/dist/ai/manifest/components/BbHost.tree.json +1 -1
- package/dist/ai/manifest/components/BbHoverCard.json +1 -1
- package/dist/ai/manifest/components/BbNumberInput.json +8 -8
- package/dist/ai/manifest/components/BbNumberInput.tree.json +1 -1
- package/dist/ai/manifest/components/BbOffCanvas.json +4 -4
- package/dist/ai/manifest/components/BbOffCanvas.tree.json +9 -4
- package/dist/ai/manifest/components/BbPagination.json +5 -5
- package/dist/ai/manifest/components/BbPagination.tree.json +3 -2
- package/dist/ai/manifest/components/BbPopover.json +1 -1
- package/dist/ai/manifest/components/BbPopover.tree.json +1 -1
- package/dist/ai/manifest/components/BbProgress.json +4 -1
- package/dist/ai/manifest/components/BbRadio.json +2 -2
- package/dist/ai/manifest/components/BbRadio.tree.json +5 -2
- package/dist/ai/manifest/components/BbRadioGroup.json +6 -6
- package/dist/ai/manifest/components/BbRadioGroup.tree.json +62 -3
- package/dist/ai/manifest/components/BbRating.json +7 -7
- package/dist/ai/manifest/components/BbRating.tree.json +5 -3
- package/dist/ai/manifest/components/BbSelect.json +25 -25
- package/dist/ai/manifest/components/BbSelect.tree.json +3 -3
- package/dist/ai/manifest/components/BbSelectPopover.json +16 -12
- package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
- package/dist/ai/manifest/components/BbSlider.json +14 -14
- package/dist/ai/manifest/components/BbSlider.tree.json +3 -0
- package/dist/ai/manifest/components/BbSmoothHeight.json +4 -1
- package/dist/ai/manifest/components/BbSwitch.json +2 -2
- package/dist/ai/manifest/components/BbSwitch.tree.json +5 -2
- package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
- package/dist/ai/manifest/components/BbSwitchGroup.tree.json +1 -1
- package/dist/ai/manifest/components/BbTable.json +28 -24
- package/dist/ai/manifest/components/BbTable.tree.json +6 -1
- package/dist/ai/manifest/components/BbTabs.json +13 -16
- package/dist/ai/manifest/components/BbTabs.tree.json +4 -1
- package/dist/ai/manifest/components/BbTabsList.json +6 -9
- package/dist/ai/manifest/components/BbTabsList.tree.json +4 -1
- package/dist/ai/manifest/components/BbTabsPanels.json +3 -3
- package/dist/ai/manifest/components/BbTabsPanels.tree.json +4 -1
- package/dist/ai/manifest/components/BbTabsRoot.json +5 -5
- package/dist/ai/manifest/components/BbTag.json +2 -2
- package/dist/ai/manifest/components/BbTag.tree.json +2 -2
- package/dist/ai/manifest/components/BbTextInput.json +4 -4
- package/dist/ai/manifest/components/BbTextInput.tree.json +3 -3
- package/dist/ai/manifest/components/BbTextarea.json +3 -3
- package/dist/ai/manifest/components/BbTextarea.tree.json +1 -1
- package/dist/ai/manifest/components/BbTimePicker.json +10 -7
- package/dist/ai/manifest/components/BbTimePicker.tree.json +5 -3
- package/dist/ai/manifest/components/BbTimePickerInput.json +19 -19
- package/dist/ai/manifest/components/BbTimePickerInput.tree.json +5 -3
- package/dist/ai/manifest/components/BbToast.json +1 -1
- package/dist/ai/manifest/components/BbToast.tree.json +3 -1
- package/dist/ai/manifest/components/BbTooltip.json +3 -0
- package/dist/ai/manifest/components/BbTooltip.tree.json +2 -2
- package/dist/ai/manifest/components/BbTree.json +3 -3
- package/dist/ai/manifest/components/BbTree.tree.json +1 -1
- package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
- package/dist/ai/manifest/components/CommonField.json +2 -2
- package/dist/ai/manifest/components/CommonField.tree.json +1 -0
- package/dist/ai/manifest/components/CommonFieldInput.tree.json +4 -2
- package/dist/ai/manifest/components/CommonPopover.tree.json +3 -0
- package/dist/ai/manifest/components/CommonTimeSelector.tree.json +1 -0
- package/dist/ai/manifest/components/FlatListBox.json +2 -2
- package/dist/ai/manifest/components/GroupedListBox.json +2 -2
- package/dist/ai/manifest/components/ListBox.json +2 -2
- package/dist/ai/manifest/components/OptionsContainer.json +3 -3
- package/dist/ai/manifest/index.json +3 -3
- package/dist/ai/manifest/meta.json +31 -16
- package/dist/ai/manifest/types.advanced.json +17 -13
- package/dist/ai/manifest/types.api.json +2 -2
- package/dist/ai/recipes/inertia/approvals-inbox.md +86 -115
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +112 -120
- package/dist/ai/recipes/inertia/layout-scaffold.md +15 -4
- package/dist/ai/recipes/inertia/onboarding.md +76 -58
- package/dist/ai/recipes/inertia/ownership-atlas.md +74 -105
- package/dist/ai/recipes/inertia/record-form.md +18 -7
- package/dist/ai/recipes/inertia/records-workspace.md +106 -127
- package/dist/ai/recipes/inertia/settings-workspace.md +131 -73
- package/dist/ai/recipes/inertia/upload-center.md +97 -121
- package/dist/ai/recipes/inertia/wizard-form.md +25 -15
- package/dist/ai/recipes/nuxt/approvals-inbox.md +67 -48
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +73 -58
- package/dist/ai/recipes/nuxt/layout-scaffold.md +15 -4
- package/dist/ai/recipes/nuxt/onboarding.md +27 -10
- package/dist/ai/recipes/nuxt/ownership-atlas.md +40 -22
- package/dist/ai/recipes/nuxt/record-form.md +20 -7
- package/dist/ai/recipes/nuxt/records-workspace.md +120 -96
- package/dist/ai/recipes/nuxt/settings-workspace.md +36 -23
- package/dist/ai/recipes/nuxt/upload-center.md +63 -37
- package/dist/ai/recipes/nuxt/wizard-form.md +28 -16
- package/dist/ai/recipes/vue/approvals-inbox.md +74 -46
- package/dist/ai/recipes/vue/inline-edit-workspace.md +83 -56
- package/dist/ai/recipes/vue/layout-scaffold.md +15 -4
- package/dist/ai/recipes/vue/onboarding.md +27 -10
- package/dist/ai/recipes/vue/ownership-atlas.md +40 -22
- package/dist/ai/recipes/vue/record-form.md +20 -7
- package/dist/ai/recipes/vue/records-workspace.md +132 -95
- package/dist/ai/recipes/vue/settings-workspace.md +36 -23
- package/dist/ai/recipes/vue/upload-center.md +73 -37
- package/dist/ai/recipes/vue/wizard-form.md +28 -16
- package/dist/ai/source/BbAccordion.md +36 -6
- package/dist/ai/source/BbAlert.md +11 -5
- package/dist/ai/source/BbAsterisk.md +4 -1
- package/dist/ai/source/BbAvatar.md +12 -6
- package/dist/ai/source/BbBadge.md +72 -21
- package/dist/ai/source/BbBadgeButton.md +71 -18
- package/dist/ai/source/BbBaseButton.md +321 -276
- package/dist/ai/source/BbBaseCheckboxIcon.md +92 -64
- package/dist/ai/source/BbBaseRadioIcon.md +81 -54
- package/dist/ai/source/BbBaseSwitchIcon.md +87 -59
- package/dist/ai/source/BbBreadcrumbs.md +94 -56
- package/dist/ai/source/BbButton.md +180 -31
- package/dist/ai/source/BbCalendar.md +1069 -408
- package/dist/ai/source/BbCheckbox.md +233 -178
- package/dist/ai/source/BbCheckboxGroup.md +36 -21
- package/dist/ai/source/BbCollapsible.md +15 -6
- package/dist/ai/source/BbColorInput.md +142 -38
- package/dist/ai/source/BbColorPalette.md +242 -144
- package/dist/ai/source/BbConfirm.md +25 -7
- package/dist/ai/source/BbConfirmPortal.md +17 -7
- package/dist/ai/source/BbDatePicker.md +302 -178
- package/dist/ai/source/BbDatePickerInput.md +394 -65
- package/dist/ai/source/BbDialog.md +204 -174
- package/dist/ai/source/BbDropdown.md +92 -42
- package/dist/ai/source/BbDropdownButton.md +79 -30
- package/dist/ai/source/BbDropdownGroup.md +53 -15
- package/dist/ai/source/BbDropzone.md +138 -93
- package/dist/ai/source/BbForm.md +18 -7
- package/dist/ai/source/BbHost.md +25 -12
- package/dist/ai/source/BbHoverCard.md +20 -9
- package/dist/ai/source/BbIcon.md +9 -3
- package/dist/ai/source/BbIndicator.md +11 -4
- package/dist/ai/source/BbNumberInput.md +83 -28
- package/dist/ai/source/BbOffCanvas.md +227 -171
- package/dist/ai/source/BbPagination.md +151 -111
- package/dist/ai/source/BbPopover.md +28 -16
- package/dist/ai/source/BbProgress.md +13 -5
- package/dist/ai/source/BbRadio.md +220 -169
- package/dist/ai/source/BbRadioGroup.md +32 -19
- package/dist/ai/source/BbRating.md +208 -154
- package/dist/ai/source/BbSelect.md +133 -35
- package/dist/ai/source/BbSelectPopover.md +462 -371
- package/dist/ai/source/BbSlider.md +308 -217
- package/dist/ai/source/BbSmoothHeight.md +16 -7
- package/dist/ai/source/BbSpinner.md +9 -3
- package/dist/ai/source/BbSwitch.md +95 -17
- package/dist/ai/source/BbSwitchGroup.md +38 -23
- package/dist/ai/source/BbTable.md +641 -423
- package/dist/ai/source/BbTabs.md +120 -62
- package/dist/ai/source/BbTabsList.md +171 -72
- package/dist/ai/source/BbTabsPanels.md +127 -53
- package/dist/ai/source/BbTabsRoot.md +97 -46
- package/dist/ai/source/BbTag.md +58 -24
- package/dist/ai/source/BbTextInput.md +65 -14
- package/dist/ai/source/BbTextarea.md +54 -8
- package/dist/ai/source/BbTimePicker.md +195 -122
- package/dist/ai/source/BbTimePickerInput.md +127 -23
- package/dist/ai/source/BbToast.md +46 -21
- package/dist/ai/source/BbToastPortal.md +47 -22
- package/dist/ai/source/BbTooltip.md +18 -10
- package/dist/ai/source/BbTree.md +26 -6
- package/dist/ai/source/ClearableButton.md +5 -1
- package/dist/ai/source/CommonField.md +67 -11
- package/dist/ai/source/CommonFieldInput.md +61 -27
- package/dist/ai/source/CommonPopover.md +24 -6
- package/dist/ai/source/CommonTimeSelector.md +24 -3
- package/dist/ai/source/ErrorIcon.md +4 -0
- package/dist/ai/source/FlatListBox.md +1 -1
- package/dist/ai/source/GroupedListBox.md +1 -1
- package/dist/ai/source/ListBox.md +10 -2
- package/dist/ai/source/OptionsContainer.md +6 -2
- package/dist/ai/source/WarningIcon.md +4 -0
- package/dist/assets/css/reset.css_inline.js +1 -2
- package/dist/assets/svgs/alert.svg_raw.js +1 -2
- package/dist/assets/svgs/calendar.svg_raw.js +1 -2
- package/dist/assets/svgs/check_stroke.svg_raw.js +1 -2
- package/dist/assets/svgs/chevron_down.svg_raw.js +1 -2
- package/dist/assets/svgs/chevron_right.svg_raw.js +1 -2
- package/dist/assets/svgs/clear.svg_raw.js +1 -2
- package/dist/assets/svgs/clock.svg_raw.js +1 -2
- package/dist/assets/svgs/error.svg_raw.js +1 -2
- package/dist/assets/svgs/search.svg_raw.js +1 -2
- package/dist/assets/svgs/spinner.svg_raw.js +1 -2
- package/dist/assets/svgs/star.svg_raw.js +1 -2
- package/dist/assets/svgs/user.svg_raw.js +1 -2
- package/dist/components/BbAccordion/BbAccordion.vue.d.ts +2 -1
- package/dist/components/BbAccordion/BbAccordion.vue.js +1 -2
- package/dist/components/BbAccordion/BbAccordion.vue_vue_type_script_setup_true_lang.js +21 -22
- package/dist/components/BbAccordion/types.js +1 -2
- package/dist/components/BbAlert/BbAlert.vue.d.ts +2 -1
- package/dist/components/BbAlert/BbAlert.vue.js +1 -2
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +28 -29
- package/dist/components/BbAlert/types.js +1 -2
- package/dist/components/BbAsterisk/BbAsterisk.vue.d.ts +3 -1
- package/dist/components/BbAsterisk/BbAsterisk.vue.js +1 -2
- package/dist/components/BbAsterisk/BbAsterisk.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/BbAsterisk/types.js +1 -2
- package/dist/components/BbAvatar/BbAvatar.vue.d.ts +3 -1
- package/dist/components/BbAvatar/BbAvatar.vue.js +1 -2
- package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +23 -24
- package/dist/components/BbAvatar/types.js +1 -2
- package/dist/components/BbBadge/BadgeBodyContent.vue.js +1 -2
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +13 -14
- package/dist/components/BbBadge/BbBadge.vue.d.ts +5 -3
- package/dist/components/BbBadge/BbBadge.vue.js +1 -2
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +31 -33
- package/dist/components/BbBadge/BbBadgeButton.vue.d.ts +3 -1
- package/dist/components/BbBadge/BbBadgeButton.vue.js +1 -2
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +6 -11
- package/dist/components/BbBadge/badgeButtonContext.js +1 -2
- package/dist/components/BbBadge/types.d.ts +20 -4
- package/dist/components/BbBadge/types.js +7 -2
- package/dist/components/BbBaseButton/BbBaseButton.vue.d.ts +3 -1
- package/dist/components/BbBaseButton/BbBaseButton.vue.js +1 -2
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -90
- package/dist/components/BbBaseButton/RouterComponent.vue.js +1 -2
- package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +8 -9
- package/dist/components/BbBaseButton/types.d.ts +11 -6
- package/dist/components/BbBaseButton/types.js +6 -2
- package/dist/components/BbBaseButton/useLinkState.d.ts +2 -0
- package/dist/components/BbBaseButton/useLinkState.js +24 -24
- package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.d.ts +3 -1
- package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.js +1 -2
- package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue_vue_type_script_setup_true_lang.js +16 -17
- package/dist/components/BbBaseCheckboxIcon/types.d.ts +4 -2
- package/dist/components/BbBaseCheckboxIcon/types.js +3 -3
- package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.d.ts +3 -1
- package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.js +1 -2
- package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue_vue_type_script_setup_true_lang.js +13 -14
- package/dist/components/BbBaseRadioIcon/types.d.ts +4 -2
- package/dist/components/BbBaseRadioIcon/types.js +3 -3
- package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.d.ts +3 -1
- package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.js +1 -2
- package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue_vue_type_script_setup_true_lang.js +15 -16
- package/dist/components/BbBaseSwitchIcon/types.d.ts +4 -2
- package/dist/components/BbBaseSwitchIcon/types.js +3 -3
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.d.ts +3 -1
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.js +1 -2
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +158 -169
- package/dist/components/BbBreadcrumbs/estimateBreadcrumbItemWidth.js +1 -2
- package/dist/components/BbBreadcrumbs/types.d.ts +19 -5
- package/dist/components/BbBreadcrumbs/types.js +8 -3
- package/dist/components/BbButton/BbButton.vue.d.ts +2 -1
- package/dist/components/BbButton/BbButton.vue.js +1 -2
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +96 -97
- package/dist/components/BbButton/toggleRoving.js +2 -3
- package/dist/components/BbButton/types.d.ts +11 -6
- package/dist/components/BbButton/types.js +8 -2
- package/dist/components/BbCalendar/BbCalendar.vue.d.ts +127 -30
- package/dist/components/BbCalendar/BbCalendar.vue.js +1 -2
- package/dist/components/BbCalendar/BbCalendar.vue_vue_type_script_setup_true_lang.js +434 -420
- package/dist/components/BbCalendar/CalendarMonthPanel.vue.js +1 -2
- package/dist/components/BbCalendar/CalendarMonthPanel.vue_vue_type_script_setup_true_lang.js +15 -17
- package/dist/components/BbCalendar/CalendarYearPanel.vue.js +1 -2
- package/dist/components/BbCalendar/CalendarYearPanel.vue_vue_type_script_setup_true_lang.js +55 -57
- package/dist/components/BbCalendar/calendarHost.js +1 -2
- package/dist/components/BbCalendar/types.d.ts +110 -37
- package/dist/components/BbCalendar/types.js +54 -3
- package/dist/components/BbCalendar/useCalendarContext.js +1 -2
- package/dist/components/BbCalendar/useCalendarGrid.d.ts +133 -0
- package/dist/components/BbCalendar/useCalendarGrid.js +201 -204
- package/dist/components/BbCalendar/useDayGrid.d.ts +33 -11
- package/dist/components/BbCalendar/useDayGrid.js +169 -162
- package/dist/components/BbCalendar/useDayjsLocale.d.ts +6 -0
- package/dist/components/BbCalendar/useDayjsLocale.js +10 -4
- package/dist/components/BbCalendar/useToday.js +1 -2
- package/dist/components/BbCheckbox/BbCheckbox.vue.d.ts +4 -2
- package/dist/components/BbCheckbox/BbCheckbox.vue.js +1 -2
- package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +109 -116
- package/dist/components/BbCheckbox/types.d.ts +4 -2
- package/dist/components/BbCheckbox/types.js +3 -3
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.d.ts +345 -2
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.js +1 -2
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +126 -132
- package/dist/components/BbCheckboxGroup/types.d.ts +12 -6
- package/dist/components/BbCheckboxGroup/types.js +8 -9
- package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +3 -1
- package/dist/components/BbCollapsible/BbCollapsible.vue.js +1 -2
- package/dist/components/BbCollapsible/BbCollapsible.vue_vue_type_script_setup_true_lang.js +9 -10
- package/dist/components/BbCollapsible/types.js +1 -2
- package/dist/components/BbColorInput/BbColorInput.vue.d.ts +8 -5
- package/dist/components/BbColorInput/BbColorInput.vue.js +1 -2
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +171 -151
- package/dist/components/BbColorInput/types.d.ts +28 -11
- package/dist/components/BbColorInput/types.js +18 -9
- package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +7 -5
- package/dist/components/BbColorPalette/BbColorPalette.vue.js +1 -2
- package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +212 -219
- package/dist/components/BbColorPalette/types.d.ts +12 -4
- package/dist/components/BbColorPalette/types.js +4 -3
- package/dist/components/BbConfirm/BbConfirm.vue.js +1 -2
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +111 -100
- package/dist/components/BbConfirm/BbConfirmHost.js +9 -10
- package/dist/components/BbConfirm/BbConfirmPortal.vue.js +1 -2
- package/dist/components/BbConfirm/BbConfirmPortal.vue_vue_type_script_setup_true_lang.js +2 -3
- package/dist/components/BbConfirm/confirmEntry.js +1 -2
- package/dist/components/BbConfirm/types.d.ts +8 -4
- package/dist/components/BbConfirm/types.js +3 -3
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +162 -41
- package/dist/components/BbDatePicker/BbDatePicker.vue.js +1 -2
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +167 -219
- package/dist/components/BbDatePicker/types.d.ts +69 -25
- package/dist/components/BbDatePicker/types.js +6 -3
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +395 -37
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.js +1 -2
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +485 -597
- package/dist/components/BbDatePickerInput/dateFieldLayout.js +1 -2
- package/dist/components/BbDatePickerInput/types.d.ts +92 -22
- package/dist/components/BbDatePickerInput/types.js +67 -7
- package/dist/components/BbDialog/BbDialog.vue.d.ts +7 -6
- package/dist/components/BbDialog/BbDialog.vue.js +1 -2
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +233 -238
- package/dist/components/BbDialog/types.d.ts +12 -10
- package/dist/components/BbDialog/types.js +3 -3
- package/dist/components/BbDialog/useDialogStack.d.ts +2 -0
- package/dist/components/BbDialog/useDialogStack.js +7 -4
- package/dist/components/BbDropdown/AdaptiveDropdown.vue.js +1 -2
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +58 -59
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +8 -6
- package/dist/components/BbDropdown/BbDropdown.vue.js +1 -2
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +306 -340
- package/dist/components/BbDropdown/BbDropdownGroup.vue.js +1 -2
- package/dist/components/BbDropdown/BbDropdownGroup.vue_vue_type_script_setup_true_lang.js +19 -22
- package/dist/components/BbDropdown/BbDropdownList.vue.js +1 -2
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +340 -357
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue.js +1 -2
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +127 -127
- package/dist/components/BbDropdown/DropdownRow.vue.js +1 -2
- package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +21 -22
- package/dist/components/BbDropdown/normalizeGroups.js +11 -12
- package/dist/components/BbDropdown/types.d.ts +25 -9
- package/dist/components/BbDropdown/types.js +28 -2
- package/dist/components/BbDropdown/useDropdownContext.js +2 -3
- package/dist/components/BbDropdown/useDropdownGroupRegistry.d.ts +1 -1
- package/dist/components/BbDropdown/useDropdownGroupRegistry.js +1 -2
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +6 -4
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.js +1 -2
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +65 -68
- package/dist/components/BbDropdownButton/types.d.ts +16 -5
- package/dist/components/BbDropdownButton/types.js +17 -12
- package/dist/components/BbDropzone/BbDropzone.vue.d.ts +65 -22
- package/dist/components/BbDropzone/BbDropzone.vue.js +1 -2
- package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +141 -150
- package/dist/components/BbDropzone/types.d.ts +19 -5
- package/dist/components/BbDropzone/types.js +8 -2
- package/dist/components/BbForm/BbForm.vue.d.ts +52 -4
- package/dist/components/BbForm/BbForm.vue.js +1 -2
- package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +154 -159
- package/dist/components/BbForm/BbFormCustomField.js +2 -3
- package/dist/components/BbForm/bindFormField.js +2 -3
- package/dist/components/BbForm/formFields.js +1 -2
- package/dist/components/BbForm/formSchema.js +15 -53
- package/dist/components/BbHost/BbHost.vue.js +1 -2
- package/dist/components/BbHost/BbHost.vue_vue_type_script_setup_true_lang.js +20 -25
- package/dist/components/BbHost/BbHostOpening.js +12 -14
- package/dist/components/BbHoverCard/BbHoverCard.vue.d.ts +5 -4
- package/dist/components/BbHoverCard/BbHoverCard.vue.js +1 -2
- package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +160 -165
- package/dist/components/BbHoverCard/BbHoverCardPortal.vue.js +1 -2
- package/dist/components/BbHoverCard/BbHoverCardPortal.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/BbHoverCard/hoverCardFocus.js +1 -2
- package/dist/components/BbHoverCard/types.js +1 -2
- package/dist/components/BbIcon/BbIcon.vue.d.ts +3 -1
- package/dist/components/BbIcon/BbIcon.vue.js +1 -2
- package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +24 -25
- package/dist/components/BbIcon/iconCache.js +1 -2
- package/dist/components/BbIcon/types.js +1 -2
- package/dist/components/BbIndicator/BbIndicator.vue.d.ts +3 -1
- package/dist/components/BbIndicator/BbIndicator.vue.js +1 -2
- package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +9 -10
- package/dist/components/BbIndicator/types.js +1 -2
- package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +6 -3
- package/dist/components/BbNumberInput/BbNumberInput.vue.js +1 -2
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +336 -369
- package/dist/components/BbNumberInput/numberDisplay.js +1 -2
- package/dist/components/BbNumberInput/platform.js +1 -2
- package/dist/components/BbNumberInput/types.d.ts +29 -6
- package/dist/components/BbNumberInput/types.js +11 -10
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +6 -5
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.js +1 -2
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +347 -373
- package/dist/components/BbOffCanvas/hostCloseLabel.js +1 -2
- package/dist/components/BbOffCanvas/sheetAttrs.d.ts +9 -0
- package/dist/components/BbOffCanvas/sheetAttrs.js +9 -0
- package/dist/components/BbOffCanvas/sheetSnap.js +3 -8
- package/dist/components/BbOffCanvas/types.d.ts +12 -10
- package/dist/components/BbOffCanvas/types.js +3 -3
- package/dist/components/BbOffCanvas/useOffCanvasStack.d.ts +2 -0
- package/dist/components/BbOffCanvas/useOffCanvasStack.js +8 -5
- package/dist/components/BbPagination/BbPagination.vue.d.ts +2 -1
- package/dist/components/BbPagination/BbPagination.vue.js +1 -2
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +84 -85
- package/dist/components/BbPagination/paginationFit.js +0 -1
- package/dist/components/BbPagination/types.d.ts +17 -9
- package/dist/components/BbPagination/types.js +4 -3
- package/dist/components/BbPopover/BbPopover.vue.d.ts +5 -4
- package/dist/components/BbPopover/BbPopover.vue.js +1 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +139 -157
- package/dist/components/BbPopover/BbPopoverPortal.vue.js +1 -2
- package/dist/components/BbPopover/BbPopoverPortal.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/BbPopover/types.js +1 -2
- package/dist/components/BbProgress/BbProgress.vue.d.ts +6 -1
- package/dist/components/BbProgress/BbProgress.vue.js +1 -2
- package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +16 -17
- package/dist/components/BbProgress/types.js +1 -2
- package/dist/components/BbPtScope/BbPtScope.vue.js +1 -2
- package/dist/components/BbPtScope/BbPtScope.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/BbRadio/BbRadio.vue.d.ts +4 -2
- package/dist/components/BbRadio/BbRadio.vue.js +1 -2
- package/dist/components/BbRadio/BbRadio.vue_vue_type_script_setup_true_lang.js +46 -50
- package/dist/components/BbRadio/types.d.ts +4 -2
- package/dist/components/BbRadio/types.js +3 -3
- package/dist/components/BbRadioGroup/BbRadioGroup.vue.d.ts +299 -1
- package/dist/components/BbRadioGroup/BbRadioGroup.vue.js +1 -2
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +178 -184
- package/dist/components/BbRadioGroup/types.d.ts +12 -6
- package/dist/components/BbRadioGroup/types.js +8 -9
- package/dist/components/BbRating/BbRating.vue.d.ts +4 -2
- package/dist/components/BbRating/BbRating.vue.js +1 -2
- package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +143 -155
- package/dist/components/BbRating/types.d.ts +15 -5
- package/dist/components/BbRating/types.js +10 -3
- package/dist/components/BbSelect/BbSelect.vue.d.ts +553 -4
- package/dist/components/BbSelect/BbSelect.vue.js +1 -2
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +173 -205
- package/dist/components/BbSelect/types.d.ts +41 -7
- package/dist/components/BbSelect/types.js +17 -2
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +103 -3
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.js +1 -2
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +571 -630
- package/dist/components/BbSelectPopover/knownItems.js +1 -2
- package/dist/components/BbSelectPopover/sheetChipAttrs.js +1 -2
- package/dist/components/BbSelectPopover/types.d.ts +29 -7
- package/dist/components/BbSelectPopover/types.js +9 -3
- package/dist/components/BbSlider/BbSlider.vue.d.ts +136 -33
- package/dist/components/BbSlider/BbSlider.vue.js +1 -2
- package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +213 -235
- package/dist/components/BbSlider/types.d.ts +32 -7
- package/dist/components/BbSlider/types.js +10 -3
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +3 -1
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.js +1 -2
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue_vue_type_script_setup_true_lang.js +14 -21
- package/dist/components/BbSmoothHeight/types.js +1 -2
- package/dist/components/BbSpinner/BbSpinner.vue.d.ts +3 -1
- package/dist/components/BbSpinner/BbSpinner.vue.js +1 -2
- package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +14 -15
- package/dist/components/BbSpinner/types.js +1 -2
- package/dist/components/BbSwitch/BbSwitch.vue.d.ts +4 -2
- package/dist/components/BbSwitch/BbSwitch.vue.js +1 -2
- package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +110 -117
- package/dist/components/BbSwitch/types.d.ts +21 -2
- package/dist/components/BbSwitch/types.js +8 -5
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.d.ts +145 -1
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.js +1 -2
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +155 -160
- package/dist/components/BbSwitchGroup/types.d.ts +11 -4
- package/dist/components/BbSwitchGroup/types.js +4 -5
- package/dist/components/BbTable/BbTable.vue.d.ts +5 -2
- package/dist/components/BbTable/BbTable.vue.js +1 -2
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1143 -1301
- package/dist/components/BbTable/BbTableDataRow.js +1 -2
- package/dist/components/BbTable/BbTableEdgeRow.js +1 -2
- package/dist/components/BbTable/BbTableExpandRow.js +1 -2
- package/dist/components/BbTable/BbTableSelectToggle.js +17 -18
- package/dist/components/BbTable/gridWidgets.js +2 -7
- package/dist/components/BbTable/measuredFloors.js +67 -65
- package/dist/components/BbTable/textRuler.d.ts +3 -1
- package/dist/components/BbTable/textRuler.js +40 -39
- package/dist/components/BbTable/types.d.ts +54 -9
- package/dist/components/BbTable/types.js +45 -3
- package/dist/components/BbTable/useRowReorder.js +179 -203
- package/dist/components/BbTable/utils.d.ts +9 -2
- package/dist/components/BbTable/utils.js +66 -72
- package/dist/components/BbTabs/BbTabs.vue.d.ts +103 -2
- package/dist/components/BbTabs/BbTabs.vue.js +1 -2
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +26 -30
- package/dist/components/BbTabs/BbTabsList.vue.d.ts +11 -1
- package/dist/components/BbTabs/BbTabsList.vue.js +1 -2
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +112 -107
- package/dist/components/BbTabs/BbTabsPanels.vue.d.ts +9 -1
- package/dist/components/BbTabs/BbTabsPanels.vue.js +1 -2
- package/dist/components/BbTabs/BbTabsPanels.vue_vue_type_script_setup_true_lang.js +22 -22
- package/dist/components/BbTabs/BbTabsRoot.vue.js +1 -2
- package/dist/components/BbTabs/BbTabsRoot.vue_vue_type_script_setup_true_lang.js +6 -7
- package/dist/components/BbTabs/tablistName.js +1 -2
- package/dist/components/BbTabs/types.d.ts +71 -33
- package/dist/components/BbTabs/types.js +11 -3
- package/dist/components/BbTag/BbTag.vue.d.ts +5 -2
- package/dist/components/BbTag/BbTag.vue.js +1 -2
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +218 -243
- package/dist/components/BbTag/types.d.ts +22 -12
- package/dist/components/BbTag/types.js +19 -9
- package/dist/components/BbTextInput/BbTextInput.vue.d.ts +209 -2
- package/dist/components/BbTextInput/BbTextInput.vue.js +1 -2
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +136 -142
- package/dist/components/BbTextInput/types.d.ts +17 -5
- package/dist/components/BbTextInput/types.js +22 -12
- package/dist/components/BbTextarea/BbTextarea.vue.d.ts +207 -2
- package/dist/components/BbTextarea/BbTextarea.vue.js +1 -2
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +142 -144
- package/dist/components/BbTextarea/types.d.ts +17 -5
- package/dist/components/BbTextarea/types.js +22 -12
- package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +84 -38
- package/dist/components/BbTimePicker/BbTimePicker.vue.js +1 -2
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +166 -171
- package/dist/components/BbTimePicker/types.d.ts +31 -7
- package/dist/components/BbTimePicker/types.js +4 -3
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.d.ts +272 -33
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.js +1 -2
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +295 -327
- package/dist/components/BbTimePickerInput/types.d.ts +45 -9
- package/dist/components/BbTimePickerInput/types.js +17 -7
- package/dist/components/BbToast/BbToast.vue.js +1 -2
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +12 -17
- package/dist/components/BbToast/BbToastMessage.vue.js +1 -2
- package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +72 -74
- package/dist/components/BbToast/BbToastPortal.vue.js +1 -2
- package/dist/components/BbToast/BbToastPortal.vue_vue_type_script_setup_true_lang.js +2 -3
- package/dist/components/BbToast/BbToastRegion.vue.js +1 -2
- package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +27 -28
- package/dist/components/BbToast/types.d.ts +17 -5
- package/dist/components/BbToast/types.js +12 -13
- package/dist/components/BbTooltip/BbTooltip.vue.d.ts +3 -2
- package/dist/components/BbTooltip/BbTooltip.vue.js +1 -2
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +69 -70
- package/dist/components/BbTooltip/tooltipWarmup.js +0 -1
- package/dist/components/BbTooltip/types.js +1 -2
- package/dist/components/BbTree/BbTree.vue.d.ts +2 -3
- package/dist/components/BbTree/BbTree.vue.js +1 -2
- package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +28 -27
- package/dist/components/BbTree/BbTreeLevel.vue.js +1 -2
- package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +12 -20
- package/dist/components/BbTree/context.js +1 -2
- package/dist/components/BbTree/types.d.ts +13 -3
- package/dist/components/BbTree/types.js +4 -3
- package/dist/components/ChipsBox/ChipsBox.vue.js +1 -2
- package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +24 -26
- package/dist/components/ClearableButton/ClearableButton.vue.d.ts +3 -1
- package/dist/components/ClearableButton/ClearableButton.vue.js +1 -2
- package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/CloseIcon/CloseButton.vue.d.ts +3 -1
- package/dist/components/CloseIcon/CloseButton.vue.js +2 -3
- package/dist/components/CloseIcon/CloseButton.vue_vue_type_script_setup_true_lang.js +3 -4
- package/dist/components/CommaBox/CommaBox.vue.js +1 -2
- package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +20 -22
- package/dist/components/CommonField/CommonField.vue.d.ts +3 -1
- package/dist/components/CommonField/CommonField.vue.js +1 -2
- package/dist/components/CommonField/CommonField.vue_vue_type_script_setup_true_lang.js +78 -73
- package/dist/components/CommonField/types.d.ts +2 -2
- package/dist/components/CommonFieldInput/CommonFieldInput.vue.d.ts +5 -3
- package/dist/components/CommonFieldInput/CommonFieldInput.vue.js +1 -2
- package/dist/components/CommonFieldInput/CommonFieldInput.vue_vue_type_script_setup_true_lang.js +20 -21
- package/dist/components/CommonPopover/CommonPopover.vue.d.ts +5 -4
- package/dist/components/CommonPopover/CommonPopover.vue.js +1 -2
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +90 -89
- package/dist/components/CommonTimeSelector/CommonTimeSelector.vue.js +1 -2
- package/dist/components/CommonTimeSelector/CommonTimeSelector.vue_vue_type_script_setup_true_lang.js +29 -38
- package/dist/components/CommonTimeSelector/useMeridiem.js +1 -2
- package/dist/components/ErrorIcon/ErrorIcon.vue.d.ts +3 -1
- package/dist/components/ErrorIcon/ErrorIcon.vue.js +1 -2
- package/dist/components/ErrorIcon/ErrorIcon.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/FlatListBox/FlatListBox.vue.js +1 -2
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +87 -94
- package/dist/components/FlatListBox/types.d.ts +1 -1
- package/dist/components/GroupedListBox/GroupedListBox.vue.js +1 -2
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +55 -62
- package/dist/components/GroupedListBox/types.d.ts +1 -1
- package/dist/components/ListBox/ListBox.vue.d.ts +1 -1
- package/dist/components/ListBox/ListBox.vue.js +1 -2
- package/dist/components/ListBox/ListBox.vue_vue_type_script_setup_true_lang.js +21 -22
- package/dist/components/ListBox/types.d.ts +1 -1
- package/dist/components/OptionsContainer/OptionsContainer.vue.d.ts +1 -1
- package/dist/components/OptionsContainer/OptionsContainer.vue.js +1 -2
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +23 -27
- package/dist/components/OptionsContainer/types.d.ts +1 -1
- package/dist/components/Transitions/ScaleFade.vue.js +1 -2
- package/dist/components/Transitions/ScaleFade.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/Transitions/Slide.vue.d.ts +1 -1
- package/dist/components/Transitions/Slide.vue.js +4 -5
- package/dist/components/Transitions/Slide.vue_vue_type_script_setup_true_lang.js +4 -5
- package/dist/components/WarningIcon/WarningIcon.vue.d.ts +3 -1
- package/dist/components/WarningIcon/WarningIcon.vue.js +1 -2
- package/dist/components/WarningIcon/WarningIcon.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/composables/autoHost.d.ts +22 -0
- package/dist/composables/autoHost.js +19 -0
- package/dist/composables/formSubmitLock.js +1 -2
- package/dist/composables/hostOpenings.d.ts +3 -3
- package/dist/composables/hostOpenings.js +7 -12
- package/dist/composables/hostRegistry.d.ts +10 -2
- package/dist/composables/hostRegistry.js +6 -5
- package/dist/composables/overlayRegistry.d.ts +1 -1
- package/dist/composables/overlayRegistry.js +4 -5
- package/dist/composables/ssrMarker.js +1 -2
- package/dist/composables/useActiveInactiveState.js +1 -2
- package/dist/composables/useArray.js +1 -2
- package/dist/composables/useBaseOptions.js +19 -20
- package/dist/composables/useBbConfig.js +1 -2
- package/dist/composables/{useBbDialogContext.d.ts → useBbDialog.d.ts} +9 -9
- package/dist/composables/{useBbDialogContext.js → useBbDialog.js} +19 -23
- package/dist/composables/{useBbDropdownContext.d.ts → useBbDropdown.d.ts} +14 -14
- package/dist/composables/{useBbDropdownContext.js → useBbDropdown.js} +4 -5
- package/dist/composables/{useBbFormContext.d.ts → useBbForm.d.ts} +8 -8
- package/dist/composables/{useBbFormContext.js → useBbForm.js} +8 -12
- package/dist/composables/useBbFormField.js +1 -2
- package/dist/composables/useBbOffCanvas.d.ts +23 -0
- package/dist/composables/useBbOffCanvas.js +7 -0
- package/dist/composables/{useBbTableContext.d.ts → useBbTable.d.ts} +29 -29
- package/dist/composables/{useBbTableContext.js → useBbTable.js} +3 -4
- package/dist/composables/{useBbTabsContext.d.ts → useBbTabs.d.ts} +19 -3
- package/dist/composables/useBbTabs.js +254 -0
- package/dist/composables/useBodyScrollLock.js +1 -2
- package/dist/composables/useBreakpoint.js +1 -2
- package/dist/composables/useCancelableFunction.js +1 -2
- package/dist/composables/useCharacterCounter.js +2 -3
- package/dist/composables/useChoiceIndicator.js +4 -9
- package/dist/composables/useClosingInert.js +3 -8
- package/dist/composables/useCoarsePointer.js +1 -2
- package/dist/composables/useCoherence.js +1 -2
- package/dist/composables/useConfig.js +1 -2
- package/dist/composables/useConfirm.d.ts +28 -31
- package/dist/composables/useConfirm.js +8 -9
- package/dist/composables/useCountdown.js +6 -7
- package/dist/composables/useEscapeStackEntry.js +1 -2
- package/dist/composables/useFormBinding.js +6 -9
- package/dist/composables/useFrameworkDetection.js +1 -2
- package/dist/composables/useHashedWatcher.js +1 -2
- package/dist/composables/useHydrated.js +1 -2
- package/dist/composables/useId.js +1 -2
- package/dist/composables/useImeDismissBlur.js +2 -7
- package/dist/composables/useIndexById.js +1 -2
- package/dist/composables/useInertiaPage.js +1 -2
- package/dist/composables/useItemText.js +3 -3
- package/dist/composables/useItemValue.js +1 -2
- package/dist/composables/useItemsGetter.js +12 -19
- package/dist/composables/useKeyboardInset.js +0 -1
- package/dist/composables/useListboxFocus.js +1 -2
- package/dist/composables/useLocale.js +7 -8
- package/dist/composables/useLogger.js +1 -2
- package/dist/composables/useMobile.js +1 -2
- package/dist/composables/useOnDemandOpener.d.ts +4 -4
- package/dist/composables/useOnDemandOpener.js +12 -13
- package/dist/composables/useOnFalsy.js +1 -2
- package/dist/composables/useOnTruthy.js +1 -2
- package/dist/composables/useOverlayNavigation.js +6 -11
- package/dist/composables/useOverlayYield.js +1 -2
- package/dist/composables/usePassthrough.js +207 -123
- package/dist/composables/usePrefill.js +11 -16
- package/dist/composables/useQuery.js +9 -22
- package/dist/composables/useRefusedCloseAnnouncement.js +1 -2
- package/dist/composables/useRoute.js +1 -2
- package/dist/composables/useRouter.js +1 -2
- package/dist/composables/useSafeArea.js +10 -11
- package/dist/composables/useSafeAreaInternal.js +4 -5
- package/dist/composables/useSegmentedFields.js +5 -17
- package/dist/composables/useServerPrefetch.js +1 -2
- package/dist/composables/useSheetSurface.js +1 -2
- package/dist/composables/useSsrState.js +1 -2
- package/dist/composables/useTableWidthContext.js +2 -3
- package/dist/composables/useToast.d.ts +4 -5
- package/dist/composables/useToast.js +4 -5
- package/dist/composables/useToggleInput.js +1 -2
- package/dist/composables/useTopLayer.js +1 -2
- package/dist/composables/useTypeahead.js +0 -1
- package/dist/composables/useUntil.js +1 -2
- package/dist/composables/useUrlQueryParam.d.ts +1 -1
- package/dist/composables/useUrlQueryParam.js +1 -2
- package/dist/composables/useViewportWidth.js +2 -3
- package/dist/deprecation/ai-deprecations.json.js +1 -2
- package/dist/deprecation/removedProps.js +1 -2
- package/dist/directives/bbColor.js +7 -8
- package/dist/directives/bbDate.js +7 -8
- package/dist/directives/bbDialog.d.ts +1 -1
- package/dist/directives/bbDialog.js +1 -2
- package/dist/directives/bbDropdown.js +14 -15
- package/dist/directives/bbHoverCard.js +8 -9
- package/dist/directives/bbOffCanvas.d.ts +1 -1
- package/dist/directives/bbOffCanvas.js +1 -2
- package/dist/directives/bbPopover.js +12 -13
- package/dist/directives/bbTime.js +7 -8
- package/dist/directives/bbTooltip.js +1 -2
- package/dist/directives/createPopoverDirective.js +6 -17
- package/dist/directives/directivePortal.js +1 -2
- package/dist/directives/overlayTrigger.js +20 -21
- package/dist/directives/renderingInstance.js +4 -8
- package/dist/i18n/locales/cs.json +8 -1
- package/dist/i18n/locales/da.json +8 -1
- package/dist/i18n/locales/de-CH.json +8 -1
- package/dist/i18n/locales/de.json +8 -1
- package/dist/i18n/locales/el.json +8 -1
- package/dist/i18n/locales/en-GB.json +8 -1
- package/dist/i18n/locales/en.json +8 -1
- package/dist/i18n/locales/es-MX.json +8 -1
- package/dist/i18n/locales/es.json +8 -1
- package/dist/i18n/locales/fi.json +8 -1
- package/dist/i18n/locales/fr.json +8 -1
- package/dist/i18n/locales/hu.json +8 -1
- package/dist/i18n/locales/it.json +8 -1
- package/dist/i18n/locales/ja.json +8 -1
- package/dist/i18n/locales/ko.json +8 -1
- package/dist/i18n/locales/nb.json +8 -1
- package/dist/i18n/locales/nl.json +8 -1
- package/dist/i18n/locales/pl.json +8 -1
- package/dist/i18n/locales/pt-BR.json +8 -1
- package/dist/i18n/locales/pt-PT.json +8 -1
- package/dist/i18n/locales/ro.json +8 -1
- package/dist/i18n/locales/ru.json +8 -1
- package/dist/i18n/locales/sv.json +8 -1
- package/dist/i18n/locales/tr.json +8 -1
- package/dist/i18n/locales/uk.json +8 -1
- package/dist/i18n/locales/zh-CN.json +8 -1
- package/dist/i18n/locales/zh-HK.json +8 -1
- package/dist/i18n/locales/zh-TW.json +8 -1
- package/dist/i18n/regionHints.js +1 -2
- package/dist/i18n/regions.js +1 -2
- package/dist/icon-scan.js +6 -11
- package/dist/index.d.ts +15 -15
- package/dist/index.js +88 -88
- package/dist/llms-full.txt +4886 -2972
- package/dist/llms-medium.txt +170 -112
- package/dist/llms.txt +12 -12
- package/dist/locale-blueprint.json +8 -1
- package/dist/nuxt-auto-imports.js +7 -8
- package/dist/nuxt.js +21 -22
- package/dist/passthrough-deduper.js +1 -2
- package/dist/plugin.js +24 -23
- package/dist/project-dts.js +1 -2
- package/dist/runtime/nuxt-plugin.js +39 -38
- package/dist/styles.css +2 -2
- package/dist/types/AlertVariant.js +1 -2
- package/dist/types/BadgeVariant.js +1 -2
- package/dist/types/ButtonVariant.js +1 -2
- package/dist/types/CheckboxVariant.js +1 -2
- package/dist/types/ConfirmVariant.js +1 -2
- package/dist/types/DatePickerType.d.ts +10 -5
- package/dist/types/DatePickerType.js +3 -4
- package/dist/types/DropdownItemVariant.js +1 -2
- package/dist/types/FieldLayout.js +1 -2
- package/dist/types/IndicatorVariant.js +1 -2
- package/dist/types/InputVariant.js +1 -2
- package/dist/types/RadioVariant.js +1 -2
- package/dist/types/ShapeErased.d.ts +15 -0
- package/dist/types/TabsVariant.js +1 -2
- package/dist/types/ToastVariant.js +1 -2
- package/dist/types/TooltipVariant.js +1 -2
- package/dist/types/fallthrough.d.ts +134 -0
- package/dist/types/passthrough.d.ts +112 -2
- package/dist/types/passthrough.js +19 -13
- package/dist/types/ptComponentMap.d.ts +31 -31
- package/dist/utilities/functions/animationsSettled.js +1 -2
- package/dist/utilities/functions/bytesToUnit.js +1 -2
- package/dist/utilities/functions/chunk.js +1 -2
- package/dist/utilities/functions/clamp.js +1 -2
- package/dist/utilities/functions/clampPrecision.js +1 -2
- package/dist/utilities/functions/convertDateValue.d.ts +5 -2
- package/dist/utilities/functions/convertDateValue.js +19 -13
- package/dist/utilities/functions/curry.js +1 -2
- package/dist/utilities/functions/deburr.js +1 -2
- package/dist/utilities/functions/elementLabel.js +1 -2
- package/dist/utilities/functions/empty.js +1 -2
- package/dist/utilities/functions/extractDomContainer.js +1 -2
- package/dist/utilities/functions/findInTree.js +1 -2
- package/dist/utilities/functions/flattenTree.js +1 -2
- package/dist/utilities/functions/get.js +1 -2
- package/dist/utilities/functions/hasVnodeListener.js +1 -2
- package/dist/utilities/functions/hash.js +1 -2
- package/dist/utilities/functions/head.js +1 -2
- package/dist/utilities/functions/identity.js +1 -2
- package/dist/utilities/functions/indexBy.js +1 -2
- package/dist/utilities/functions/isDateDisabled.js +23 -19
- package/dist/utilities/functions/isEqual.js +1 -2
- package/dist/utilities/functions/isHex.js +1 -2
- package/dist/utilities/functions/isImeComposing.js +1 -2
- package/dist/utilities/functions/isNil.js +1 -2
- package/dist/utilities/functions/isNotEmpty.js +1 -2
- package/dist/utilities/functions/isNotNil.js +1 -2
- package/dist/utilities/functions/isTextEntry.js +1 -2
- package/dist/utilities/functions/isoWeek.d.ts +36 -0
- package/dist/utilities/functions/isoWeek.js +21 -0
- package/dist/utilities/functions/itemProps.js +1 -2
- package/dist/utilities/functions/last.js +1 -2
- package/dist/utilities/functions/matchAnyKey.js +1 -2
- package/dist/utilities/functions/noop.js +1 -2
- package/dist/utilities/functions/normalizeDateBound.d.ts +11 -5
- package/dist/utilities/functions/normalizeDateBound.js +6 -5
- package/dist/utilities/functions/parsePaginationNumber.js +1 -2
- package/dist/utilities/functions/parseSize.js +1 -2
- package/dist/utilities/functions/parseWidthString.js +1 -2
- package/dist/utilities/functions/percentage.js +1 -2
- package/dist/utilities/functions/pickBy.js +1 -2
- package/dist/utilities/functions/range.js +1 -2
- package/dist/utilities/functions/readableValue.js +1 -2
- package/dist/utilities/functions/reject.js +1 -2
- package/dist/utilities/functions/resolveEnumProp.js +1 -2
- package/dist/utilities/functions/responsiveDefault.js +1 -2
- package/dist/utilities/functions/settlesVisible.js +1 -2
- package/dist/utilities/functions/slotKey.js +1 -2
- package/dist/utilities/functions/snapToStep.js +1 -2
- package/dist/utilities/functions/sort.js +1 -2
- package/dist/utilities/functions/throttle.js +1 -2
- package/dist/utilities/functions/toggleInput.js +1 -2
- package/dist/utilities/functions/transpose.js +1 -2
- package/dist/utilities/functions/validateDateFormat.js +1 -2
- package/dist/utilities/functions/wait.js +1 -2
- package/dist/utilities/functions/waitFor.js +2 -7
- package/dist/utilities/functions/warnRemovedAttrs.js +2 -5
- package/dist/utilities/functions/when.js +1 -2
- package/dist/utilities/misc/autofocus.js +1 -2
- package/dist/utilities/misc/iconsInjectionKey.js +1 -2
- package/dist/utilities/misc/listboxMetrics.js +1 -2
- package/dist/utilities/misc/maskaDataOptions.d.ts +12 -0
- package/dist/utilities/misc/maskaDataOptions.js +36 -0
- package/dist/utilities/misc/pageText.d.ts +16 -0
- package/dist/utilities/misc/pageText.js +10 -0
- package/dist/utilities/misc/ssrStateInjectionKey.js +1 -2
- package/dist/utilities/misc/ssrValue.js +1 -2
- package/dist/utilities/misc/transitions.js +1 -2
- package/dist/utils/copyData.js +1 -2
- package/dist/utils/cssLayers.js +1 -2
- package/dist/utils/focusVisibility.js +1 -2
- package/dist/utils/injectLibraryStyles.js +3 -12
- package/dist/utils/overlayEscapeStack.js +1 -2
- package/dist/utils/overlaySurfaceIsolation.js +1 -2
- package/dist/utils/passthrough.js +2 -3
- package/dist/utils/ptScope.js +1 -2
- package/dist/utils/versionCheck.js +2 -3
- package/dist/vite-plugin.d.ts +1 -1
- package/dist/vite.js +364 -437
- package/llms.txt +12 -12
- package/package.json +14 -10
- package/scripts/lib/adoption-checklist.json +3 -2
- package/scripts/lib/check-queue.mjs +102 -0
- package/scripts/lib/consumer-install.mjs +64 -0
- package/scripts/lib/css-class-surface.mjs +39 -3
- package/scripts/lib/css-comment-text.mjs +16 -0
- package/scripts/lib/eslint-disable.mjs +9 -1
- package/scripts/lib/eslint-plugin.d.ts +7 -1
- package/scripts/lib/eslint-plugin.mjs +286 -7
- package/scripts/lib/form-v-model.mjs +2 -2
- package/scripts/lib/helper-canon.mjs +34 -2
- package/scripts/lib/helpers-add.mjs +80 -13
- package/scripts/lib/hidden-label-placeholder.mjs +151 -0
- package/scripts/lib/html-attributes.mjs +82 -0
- package/scripts/lib/idiom-scan.mjs +175 -2
- package/scripts/lib/mcp-config.mjs +1 -1
- package/scripts/lib/pack.mjs +55 -0
- package/scripts/lib/portal-names.mjs +3 -3
- package/scripts/lib/prefer-v-bb-dialog.mjs +1 -1
- package/scripts/lib/quiet-gate.mjs +385 -0
- package/scripts/lib/reactive-v-model.mjs +11 -5
- package/scripts/lib/tab-links.mjs +209 -0
- package/scripts/lib/token-color-mix.mjs +114 -0
- package/scripts/lib/toolchain-check.mjs +34 -3
- package/scripts/lib/unstyled-variants.mjs +57 -0
- package/scripts/lib/validate-bb-markup.mjs +149 -4
- package/dist/composables/useBbOffCanvasContext.d.ts +0 -23
- package/dist/composables/useBbOffCanvasContext.js +0 -8
- package/dist/composables/useBbTabsContext.js +0 -252
|
@@ -52,9 +52,7 @@ label state) · [Page Shell](../../guides/page-shell.md) ·
|
|
|
52
52
|
[Floating Bottom Panel](../../guides/floating-bottom-panel.md).
|
|
53
53
|
|
|
54
54
|
From the [Inertia Helpers](../../guides/inertia-helpers.md) toolkit, installed
|
|
55
|
-
with `npx bitboss-ui add useProp useQuery useQueryObject useResourceContext useTableContext`.
|
|
56
|
-
`<BbHost />` mounted once in the
|
|
57
|
-
`createInertiaApp` render root — never in a page.
|
|
55
|
+
with `npx bitboss-ui add usePromiseRouter useProp useQuery useQueryObject useResourceContext useRouteQuery useTableContext`.
|
|
58
56
|
|
|
59
57
|
Controller: `Inertia::render('BacklogWorkspace/Index', ['issues' => …, 'tabCounts'
|
|
60
58
|
=> …, 'team' => …])` — `issues` is a standard Laravel paginator
|
|
@@ -105,11 +103,11 @@ peek so opening it is never a page visit.
|
|
|
105
103
|
prop; `useTableContext('issues')` turns it into `items` +
|
|
106
104
|
`totalItems`/`page`/`perPage` (URL-backed) + `selected`/`unselected`/`all`
|
|
107
105
|
(select-all-across-pages), and `BbTable` binds directly to that handle.
|
|
108
|
-
- **Filters mirror into the URL with `useQueryObject`;
|
|
109
|
-
|
|
110
|
-
(`only: ['issues', 'tabCounts']`);
|
|
111
|
-
|
|
112
|
-
of filtered, paginated truth.
|
|
106
|
+
- **Filters mirror into the URL with `useQueryObject`; the sprint strip is a
|
|
107
|
+
real visit.** Typing in a pill filter performs a partial Inertia visit
|
|
108
|
+
(`only: ['issues', 'tabCounts']`); the sprint strip (a `BbRadioGroup` with
|
|
109
|
+
the tabs look) is the `?tab=` query through `useRouteQuery`, with the same
|
|
110
|
+
`only` list. The server is the single source of filtered, paginated truth.
|
|
113
111
|
- **Options resolve once, at page level.** Status and priority are static
|
|
114
112
|
module-level catalogs (fifty rows, zero requests); the assignee picker
|
|
115
113
|
shares **one** query provider across every row — filtering the `team` page
|
|
@@ -151,7 +149,7 @@ needs a modal to edit.
|
|
|
151
149
|
| --- | ------------------------ | ---------------------------------- | ------------------------------------------------------- |
|
|
152
150
|
| 1 | New issue | topbar, the page's one `primary` | navigation (`/issues/new`) |
|
|
153
151
|
| 2 | Page search | topbar right | `filters.search` → `useQueryObject` partial visit |
|
|
154
|
-
| 3 | Switch sprint tab |
|
|
152
|
+
| 3 | Switch sprint tab | status strip with live counts | `useRouteQuery` partial visit |
|
|
155
153
|
| 4 | Filter by status | rail pill | `BbSelectPopover` multiple over the static catalog |
|
|
156
154
|
| 5 | Filter by priority | rail pill | `BbSelectPopover` multiple over the static catalog |
|
|
157
155
|
| 6 | Filter by assignee | rail pill | the shared people provider, single select |
|
|
@@ -257,8 +255,7 @@ import {
|
|
|
257
255
|
type InjectionKey,
|
|
258
256
|
type Ref,
|
|
259
257
|
} from 'vue';
|
|
260
|
-
import {
|
|
261
|
-
import type { RequestPayload } from '@inertiajs/core';
|
|
258
|
+
import { usePage } from '@inertiajs/vue3';
|
|
262
259
|
import {
|
|
263
260
|
useConfirm,
|
|
264
261
|
useToast,
|
|
@@ -274,9 +271,11 @@ import {
|
|
|
274
271
|
type TableContext,
|
|
275
272
|
} from '@/composables/inertia-helpers/useTableContext';
|
|
276
273
|
import { useQueryObject } from '@/composables/inertia-helpers/useQueryObject';
|
|
274
|
+
import { useRouteQuery } from '@/composables/inertia-helpers/useRouteQuery';
|
|
277
275
|
import { useQuery } from '@/composables/inertia-helpers/useQuery';
|
|
278
276
|
import { useProp } from '@/composables/inertia-helpers/useProp';
|
|
279
277
|
import type { Issue, IssuePriority, IssueStatus, Member } from '@/types';
|
|
278
|
+
import { usePromiseRouter } from '@/composables/inertia-helpers/usePromiseRouter';
|
|
280
279
|
|
|
281
280
|
/**
|
|
282
281
|
* What the peek sidebar can show. Clicking an issue ref pushes one of these.
|
|
@@ -300,7 +299,7 @@ export type IssuePatch = Partial<
|
|
|
300
299
|
export type EditableKey = keyof IssuePatch;
|
|
301
300
|
|
|
302
301
|
export interface BacklogFilters {
|
|
303
|
-
search: string;
|
|
302
|
+
search: string | null;
|
|
304
303
|
status: IssueStatus[];
|
|
305
304
|
priority: IssuePriority[];
|
|
306
305
|
/** The whole member, not an id — the pill labels itself with zero fetches. */
|
|
@@ -425,40 +424,27 @@ const toArray = (value: unknown): string[] | null => {
|
|
|
425
424
|
return Array.isArray(value) ? value.map(String) : String(value).split(',');
|
|
426
425
|
};
|
|
427
426
|
|
|
428
|
-
/**
|
|
429
|
-
* Inertia's callback-based visit, wrapped as a promise — so every context
|
|
430
|
-
* action stays `async`, exactly like the Vue/Nuxt versions. Always a
|
|
431
|
-
* partial reload; field saves pass just `['issues']`, everything else
|
|
432
|
-
* refreshes the tab counts too.
|
|
433
|
-
*/
|
|
434
|
-
const visit = (
|
|
435
|
-
method: 'post' | 'patch' | 'delete',
|
|
436
|
-
url: string,
|
|
437
|
-
// Inertia's own payload type — strings/numbers/booleans/arrays/files.
|
|
438
|
-
// (`Record<string, unknown>` does not satisfy it.)
|
|
439
|
-
data: RequestPayload = {},
|
|
440
|
-
only: readonly string[] = RELOAD_PROPS
|
|
441
|
-
): Promise<void> =>
|
|
442
|
-
new Promise((resolve, reject) => {
|
|
443
|
-
router.visit(url, {
|
|
444
|
-
method,
|
|
445
|
-
data,
|
|
446
|
-
only: [...only],
|
|
447
|
-
preserveScroll: true,
|
|
448
|
-
preserveState: true,
|
|
449
|
-
onSuccess: () => resolve(),
|
|
450
|
-
onError: (errors) => reject(errors),
|
|
451
|
-
// Cut short (cancelled, or interrupted by another visit): resolves,
|
|
452
|
-
// the caller moves on (a dialog closes). Ended with neither callback
|
|
453
|
-
// (a 500, a network error): rejects with no field errors. Both are
|
|
454
|
-
// no-ops once settled.
|
|
455
|
-
onFinish: (visit) =>
|
|
456
|
-
visit.cancelled || visit.interrupted ? resolve() : reject({}),
|
|
457
|
-
});
|
|
458
|
-
});
|
|
459
|
-
|
|
460
427
|
export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
428
|
+
// Every write of the page: a promise the buttons spin on, reloading the
|
|
429
|
+
// page's props in place.
|
|
430
|
+
const { patch, post, remove } = usePromiseRouter({
|
|
431
|
+
only: [...RELOAD_PROPS],
|
|
432
|
+
preserveScroll: true,
|
|
433
|
+
preserveState: true,
|
|
434
|
+
});
|
|
461
435
|
const { toast } = useToast();
|
|
436
|
+
// A write that fails tells the user and reads as not done. The helpers
|
|
437
|
+
// reject (the error bag on a 422, an Error otherwise) instead of hiding a
|
|
438
|
+
// failure, so no caller sees an `Uncaught (in promise)` (Inertia helpers
|
|
439
|
+
// guide § usePromiseRouter).
|
|
440
|
+
const orToast = (write: Promise<boolean>) =>
|
|
441
|
+
write.catch(() => {
|
|
442
|
+
toast({
|
|
443
|
+
title: 'That did not go through. Try again.',
|
|
444
|
+
variant: 'destructive',
|
|
445
|
+
});
|
|
446
|
+
return false;
|
|
447
|
+
});
|
|
462
448
|
const { confirm } = useConfirm();
|
|
463
449
|
|
|
464
450
|
// -- Coopt the specific contexts: once, here, for the whole page. ----------
|
|
@@ -500,7 +486,7 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
500
486
|
|
|
501
487
|
const hasActiveFilters = computed(
|
|
502
488
|
() =>
|
|
503
|
-
filters.search
|
|
489
|
+
!!filters.search ||
|
|
504
490
|
filters.status.length > 0 ||
|
|
505
491
|
filters.priority.length > 0 ||
|
|
506
492
|
filters.assignee !== null
|
|
@@ -512,9 +498,13 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
512
498
|
filters.assignee = null;
|
|
513
499
|
};
|
|
514
500
|
|
|
515
|
-
// Tab:
|
|
516
|
-
//
|
|
517
|
-
|
|
501
|
+
// Tab: the `?tab=` query itself. A pick is a partial-reload visit
|
|
502
|
+
// (replace, preserveState / preserveScroll) that keeps the other query
|
|
503
|
+
// keys, and the value follows the URL, so it changes as the visit lands.
|
|
504
|
+
const tab = useRouteQuery('tab', 'current', {
|
|
505
|
+
transform: (value) => value as SprintTab,
|
|
506
|
+
visitOptions: { only: [...RELOAD_PROPS] },
|
|
507
|
+
});
|
|
518
508
|
const tabCounts = useProp<Record<SprintTab, number>>('tabCounts');
|
|
519
509
|
|
|
520
510
|
const refreshKey = ref(0);
|
|
@@ -524,16 +514,16 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
524
514
|
const failed = ref(new Set<string>());
|
|
525
515
|
|
|
526
516
|
const valueOf = <K extends EditableKey>(issue: Issue, key: K): Issue[K] => {
|
|
527
|
-
const
|
|
528
|
-
// `key in
|
|
517
|
+
const overlay = pending[issue.id];
|
|
518
|
+
// `key in overlay`, not `overlay[key] ?? issue[key]`: null is a legitimate
|
|
529
519
|
// committed value here (a cleared estimate), and `??` would drop that
|
|
530
520
|
// overlay and show the stale row value while the save runs.
|
|
531
|
-
return
|
|
521
|
+
return overlay && key in overlay ? (overlay[key] as Issue[K]) : issue[key];
|
|
532
522
|
};
|
|
533
523
|
|
|
534
524
|
const isSaving = (issue: Issue, key: EditableKey): boolean => {
|
|
535
|
-
const
|
|
536
|
-
return
|
|
525
|
+
const overlay = pending[issue.id];
|
|
526
|
+
return overlay !== undefined && key in overlay;
|
|
537
527
|
};
|
|
538
528
|
|
|
539
529
|
/** Human labels for the editable fields — used in the autosave/undo toasts. */
|
|
@@ -573,11 +563,31 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
573
563
|
const flag = `${issue.id}:${key}`;
|
|
574
564
|
(pending[issue.id] ??= {})[key] = value; // optimistic: the UI moves NOW
|
|
575
565
|
failed.value.delete(flag);
|
|
566
|
+
// Rollback: drop just this field, the row shows the server's value.
|
|
567
|
+
const drop = () => {
|
|
568
|
+
const overlay = pending[issue.id];
|
|
569
|
+
if (overlay) {
|
|
570
|
+
delete overlay[key];
|
|
571
|
+
if (!Object.keys(overlay).length) delete pending[issue.id];
|
|
572
|
+
}
|
|
573
|
+
};
|
|
576
574
|
try {
|
|
577
575
|
// One visit is both the PATCH and the reload — the redirect back
|
|
578
576
|
// re-renders `issues`. Do NOT retire the overlay here: the watcher
|
|
579
577
|
// below drops it once the server's own data carries the value.
|
|
580
|
-
|
|
578
|
+
if (
|
|
579
|
+
!(await patch(
|
|
580
|
+
`/issues/${issue.id}`,
|
|
581
|
+
{ [key]: value },
|
|
582
|
+
{ only: ['issues'] }
|
|
583
|
+
))
|
|
584
|
+
) {
|
|
585
|
+
// Not confirmed (a newer edit interrupted it): show what the
|
|
586
|
+
// server holds rather than a value nothing will confirm.
|
|
587
|
+
drop();
|
|
588
|
+
refreshKey.value++;
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
581
591
|
refreshKey.value++; // the peek re-fetches its JSON detail
|
|
582
592
|
// Auto-undo: soft confirmation the edit can reverse in one click.
|
|
583
593
|
toast({
|
|
@@ -596,12 +606,7 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
596
606
|
],
|
|
597
607
|
});
|
|
598
608
|
} catch {
|
|
599
|
-
|
|
600
|
-
const patch = pending[issue.id];
|
|
601
|
-
if (patch) {
|
|
602
|
-
delete patch[key];
|
|
603
|
-
if (!Object.keys(patch).length) delete pending[issue.id];
|
|
604
|
-
}
|
|
609
|
+
drop();
|
|
605
610
|
failed.value.add(flag);
|
|
606
611
|
toast({
|
|
607
612
|
title: `Couldn't save the ${key} of ${issue.ref} — reverted.`,
|
|
@@ -624,14 +629,14 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
624
629
|
// arrival path. A field still in flight is left alone.
|
|
625
630
|
watch(table.items, (rows) => {
|
|
626
631
|
for (const issue of rows) {
|
|
627
|
-
const
|
|
628
|
-
if (!
|
|
629
|
-
for (const field of Object.keys(
|
|
630
|
-
if (JSON.stringify(
|
|
631
|
-
delete
|
|
632
|
+
const overlay = pending[issue.id];
|
|
633
|
+
if (!overlay) continue;
|
|
634
|
+
for (const field of Object.keys(overlay) as EditableKey[]) {
|
|
635
|
+
if (JSON.stringify(overlay[field]) === JSON.stringify(issue[field])) {
|
|
636
|
+
delete overlay[field]; // the server's own data carries it now
|
|
632
637
|
}
|
|
633
638
|
}
|
|
634
|
-
if (!Object.keys(
|
|
639
|
+
if (!Object.keys(overlay).length) delete pending[issue.id];
|
|
635
640
|
}
|
|
636
641
|
});
|
|
637
642
|
|
|
@@ -655,7 +660,7 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
655
660
|
};
|
|
656
661
|
|
|
657
662
|
const duplicateIssue = async (issue: Issue) => {
|
|
658
|
-
await
|
|
663
|
+
if (!(await orToast(post(`/issues/${issue.id}/duplicate`)))) return;
|
|
659
664
|
refresh();
|
|
660
665
|
toast({
|
|
661
666
|
title: `${issue.ref} duplicated.`,
|
|
@@ -664,7 +669,7 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
664
669
|
};
|
|
665
670
|
|
|
666
671
|
const moveToNextSprint = async (issue: Issue) => {
|
|
667
|
-
await
|
|
672
|
+
if (!(await orToast(post(`/issues/${issue.id}/next-sprint`)))) return;
|
|
668
673
|
refresh();
|
|
669
674
|
toast({
|
|
670
675
|
title: `${issue.ref} moved to Sprint 25.`,
|
|
@@ -681,7 +686,7 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
681
686
|
no: 'Cancel',
|
|
682
687
|
});
|
|
683
688
|
if (!ok) return;
|
|
684
|
-
await
|
|
689
|
+
if (!(await orToast(remove(`/issues/${issue.id}`)))) return;
|
|
685
690
|
refresh();
|
|
686
691
|
toast({
|
|
687
692
|
title: `${issue.ref} deleted.`,
|
|
@@ -705,7 +710,12 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
705
710
|
|
|
706
711
|
const bulkStatus = async (status: IssueStatus) => {
|
|
707
712
|
const count = selectedCount.value;
|
|
708
|
-
|
|
713
|
+
if (
|
|
714
|
+
!(await orToast(
|
|
715
|
+
patch('/issues/bulk/status', { ...bulkPayload(), status })
|
|
716
|
+
))
|
|
717
|
+
)
|
|
718
|
+
return;
|
|
709
719
|
table.resetSelection();
|
|
710
720
|
refresh();
|
|
711
721
|
const label = STATUS_OPTIONS.find((o) => o.value === status)?.label;
|
|
@@ -717,10 +727,15 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
717
727
|
|
|
718
728
|
const bulkAssign = async (assignee: Member) => {
|
|
719
729
|
const count = selectedCount.value;
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
730
|
+
if (
|
|
731
|
+
!(await orToast(
|
|
732
|
+
patch('/issues/bulk/assign', {
|
|
733
|
+
...bulkPayload(),
|
|
734
|
+
assignee: assignee.id,
|
|
735
|
+
})
|
|
736
|
+
))
|
|
737
|
+
)
|
|
738
|
+
return;
|
|
724
739
|
table.resetSelection();
|
|
725
740
|
refresh();
|
|
726
741
|
toast({
|
|
@@ -731,7 +746,8 @@ export function provideBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
731
746
|
|
|
732
747
|
const bulkMoveToNextSprint = async () => {
|
|
733
748
|
const count = selectedCount.value;
|
|
734
|
-
await
|
|
749
|
+
if (!(await orToast(post('/issues/bulk/next-sprint', bulkPayload()))))
|
|
750
|
+
return;
|
|
735
751
|
table.resetSelection();
|
|
736
752
|
refresh();
|
|
737
753
|
toast({
|
|
@@ -822,45 +838,30 @@ export function useBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
822
838
|
<div class="flex flex-col gap-3 p-4">
|
|
823
839
|
<FilterRail />
|
|
824
840
|
|
|
825
|
-
<!--
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
`ctx.filters` alive across the visit, so if the href dropped the
|
|
831
|
-
filter query keys the server would render an unfiltered page
|
|
832
|
-
while the (unchanged) filter chips kept claiming the old
|
|
833
|
-
filters still applied. -->
|
|
834
|
-
<BbTabs
|
|
841
|
+
<!-- The sprint filter: one value over one table, so a radio group
|
|
842
|
+
with the tabs look (a tablist would promise panels). `ctx.tab` is
|
|
843
|
+
the `?tab=` query (useRouteQuery): a pick is a partial-reload visit
|
|
844
|
+
with the filters' prop list, keeping the other query keys. -->
|
|
845
|
+
<BbRadioGroup
|
|
835
846
|
v-model="ctx.tab.value"
|
|
836
847
|
compact
|
|
848
|
+
hide-legend
|
|
837
849
|
:items="[
|
|
838
850
|
{
|
|
839
851
|
value: 'backlog',
|
|
840
852
|
label: `Backlog · ${ctx.tabCounts.value.backlog}`,
|
|
841
|
-
href: tabHref('backlog'),
|
|
842
|
-
server: true,
|
|
843
|
-
only: ['issues', 'tabCounts'],
|
|
844
853
|
},
|
|
845
854
|
{
|
|
846
855
|
value: 'current',
|
|
847
856
|
label: `Current sprint · ${ctx.tabCounts.value.current}`,
|
|
848
|
-
href: tabHref('current'),
|
|
849
|
-
server: true,
|
|
850
|
-
only: ['issues', 'tabCounts'],
|
|
851
857
|
},
|
|
852
858
|
{
|
|
853
859
|
value: 'done',
|
|
854
860
|
label: `Done · ${ctx.tabCounts.value.done}`,
|
|
855
|
-
href: tabHref('done'),
|
|
856
|
-
server: true,
|
|
857
|
-
only: ['issues', 'tabCounts'],
|
|
858
861
|
},
|
|
859
862
|
]"
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
preserve-state
|
|
863
|
-
replace
|
|
863
|
+
legend="Sprint"
|
|
864
|
+
variant="pill"
|
|
864
865
|
/>
|
|
865
866
|
|
|
866
867
|
<!-- No dependencies/items-fn: `issues` is a page prop, and selection
|
|
@@ -997,14 +998,12 @@ import {
|
|
|
997
998
|
BbIcon,
|
|
998
999
|
BbButton,
|
|
999
1000
|
BbPagination,
|
|
1001
|
+
BbRadioGroup,
|
|
1000
1002
|
BbTable,
|
|
1001
|
-
BbTabs,
|
|
1002
1003
|
BbTextInput,
|
|
1003
1004
|
} from 'bitboss-ui';
|
|
1004
|
-
import qs from 'query-string';
|
|
1005
1005
|
import PageShell from '@/components/layout/PageShell.vue';
|
|
1006
|
-
import {
|
|
1007
|
-
import { provideBacklogWorkspace, type SprintTab } from './context';
|
|
1006
|
+
import { provideBacklogWorkspace } from './context';
|
|
1008
1007
|
import AssigneeCell from './AssigneeCell.vue';
|
|
1009
1008
|
import EditableTitleCell from './EditableTitleCell.vue';
|
|
1010
1009
|
import EstimateCell from './EstimateCell.vue';
|
|
@@ -1018,13 +1017,6 @@ import type { Issue } from '@/types';
|
|
|
1018
1017
|
|
|
1019
1018
|
const ctx = provideBacklogWorkspace();
|
|
1020
1019
|
|
|
1021
|
-
// Merge `tab` into the *current* query instead of replacing it: `useQuery()`
|
|
1022
|
-
// reads the live URL, which already carries every filter `useQueryObject`
|
|
1023
|
-
// mirrored there, so switching tabs keeps `search`/`status`/`priority`/
|
|
1024
|
-
// `assignee` intact instead of silently resetting the results to unfiltered.
|
|
1025
|
-
const tabHref = (tab: SprintTab): string =>
|
|
1026
|
-
`/sprints/24?${qs.stringify({ ...useQuery(), tab }, { arrayFormat: 'comma' })}`;
|
|
1027
|
-
|
|
1028
1020
|
// Row highlight tracks the open peek — the peeked row stays marked, and
|
|
1029
1021
|
// highlighting a row opens its peek; clearing the highlight closes it.
|
|
1030
1022
|
const highlightedIssue = computed<string | null>({
|
|
@@ -1778,23 +1770,23 @@ const longDate = (value: string) =>
|
|
|
1778
1770
|
ingested rows is the choke point for every arrival path. The comment above
|
|
1779
1771
|
it ships with the recipe on purpose: this is the autosave bug everyone writes
|
|
1780
1772
|
once.
|
|
1781
|
-
-
|
|
1773
|
+
- **`usePromiseRouter` is the promise-wrapped router-visit pattern** from
|
|
1782
1774
|
the records workspace: it turns Inertia's `onSuccess`/`onError` callbacks
|
|
1783
1775
|
into a promise so `persistField` and every discrete action stay `async`
|
|
1784
1776
|
functions — identical call sites to the Vue/Nuxt recipes. Field saves
|
|
1785
1777
|
reload only `['issues']` (the hottest path on the page); discrete and bulk
|
|
1786
1778
|
actions reload `tabCounts` too, because they move issues between tabs.
|
|
1787
|
-
- **One watcher for filters, one
|
|
1779
|
+
- **One watcher for filters, one query ref for the tab.**
|
|
1788
1780
|
`useQueryObject(..., { only: ['issues', 'tabCounts'] })` over a URL-shaped
|
|
1789
|
-
projection of `filters` is the
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
replacing it
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1781
|
+
projection of `filters` is the
|
|
1782
|
+
entire filter-to-URL wiring; the tab is `useRouteQuery('tab', …)` with
|
|
1783
|
+
the same `only: ['issues', 'tabCounts']`, so a pick is a
|
|
1784
|
+
partial-reloaded visit too — one source of server truth, reached two
|
|
1785
|
+
ways. `useRouteQuery` writes `tab` into the current query rather than
|
|
1786
|
+
replacing it, so the active filters ride along (`preserve-state` keeps
|
|
1787
|
+
this page instance and `ctx.filters` alive across the visit, and a
|
|
1788
|
+
dropped filter key would leave the chips claiming filters the result no
|
|
1789
|
+
longer has).
|
|
1798
1790
|
- **Bulk actions carry the full select-all-across-pages payload**
|
|
1799
1791
|
(`ids`/`all`/`unselected`) — never just an enumerated id list that
|
|
1800
1792
|
silently drops rows outside the current page.
|
|
@@ -514,6 +514,11 @@ menu while free space sits unused in the middle. Give the trail
|
|
|
514
514
|
`shrink-0` to its siblings so they stay content-sized — the same contract
|
|
515
515
|
the `BbBreadcrumbs` guide documents for exactly this row.
|
|
516
516
|
|
|
517
|
+
**The page owns one `<h1>`.** When the topbar's breadcrumb is the visible
|
|
518
|
+
title, the page still names itself: put `<h1 class="sr-only">Invoices</h1>`
|
|
519
|
+
first in the page body, so a screen reader's heading list starts with the
|
|
520
|
+
page, not with a section.
|
|
521
|
+
|
|
517
522
|
```vue
|
|
518
523
|
<template>
|
|
519
524
|
<PageShell>
|
|
@@ -530,7 +535,8 @@ the `BbBreadcrumbs` guide documents for exactly this row.
|
|
|
530
535
|
</div>
|
|
531
536
|
</template>
|
|
532
537
|
|
|
533
|
-
<!-- default slot: the page body -->
|
|
538
|
+
<!-- default slot: the page body, its one h1 first -->
|
|
539
|
+
<h1 class="sr-only">Invoices</h1>
|
|
534
540
|
<!-- The shipped `--highlighted` tint already marks the current row;
|
|
535
541
|
`row-class` is how this page says WHY it is current (the open peek)
|
|
536
542
|
and how you override the look. See the BbTable guide's Row highlight
|
|
@@ -711,9 +717,12 @@ from the app entry (`import '@/components/layout/workspace-surfaces.css'` in
|
|
|
711
717
|
}
|
|
712
718
|
.plain-link:hover,
|
|
713
719
|
.plain-link:focus-visible {
|
|
714
|
-
outline: none;
|
|
715
720
|
text-decoration-color: currentColor;
|
|
716
721
|
}
|
|
722
|
+
/* BbBaseButton draws a transparent outline: the keyboard focus colours it. */
|
|
723
|
+
.plain-link:focus-visible {
|
|
724
|
+
outline-color: var(--bb-ring);
|
|
725
|
+
}
|
|
717
726
|
|
|
718
727
|
.row-danger {
|
|
719
728
|
background: color-mix(in oklab, var(--bb-danger) 6%, var(--bb-panel));
|
|
@@ -781,5 +790,7 @@ scrolling away" symptom.
|
|
|
781
790
|
|
|
782
791
|
The `#sidebar` slot **is** the drawer. Putting a `BbOffCanvas` inside it gives
|
|
783
792
|
you two stacked drawers with two close buttons. Pick one: the PageShell stack
|
|
784
|
-
for
|
|
785
|
-
|
|
793
|
+
for a record whose detail fits the narrow column (it does not cover the page,
|
|
794
|
+
and moving between records stays smooth), or a standalone `BbOffCanvas` for a
|
|
795
|
+
detail that needs more room (a wide form, a table, a long editor) and for
|
|
796
|
+
chrome that is not about the current page (mobile nav, global filters).
|