bitboss-ui 3.0.0-beta.47 → 3.0.0-beta.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -7
- package/bin/bitboss-ui-mcp.mjs +15 -3
- package/bin/bitboss-ui.mjs +167 -14
- package/dist/ai/BbAccordion.md +1 -1
- package/dist/ai/BbAvatar.md +1 -1
- package/dist/ai/BbBreadcrumbs.md +65 -65
- package/dist/ai/BbButton.md +28 -8
- package/dist/ai/BbCheckbox.md +0 -2
- package/dist/ai/BbCheckboxGroup.md +13 -20
- package/dist/ai/BbCollapsible.md +1 -1
- package/dist/ai/BbColorPalette.md +1 -1
- package/dist/ai/BbConfirm.md +8 -0
- package/dist/ai/BbConfirmPortal.md +1 -1
- package/dist/ai/BbDatePickerInput.md +4 -2
- package/dist/ai/BbDialog.md +1 -8
- package/dist/ai/BbDropdown.md +231 -220
- package/dist/ai/BbDropdownButton.md +65 -65
- package/dist/ai/BbDropdownGroup.md +2 -2
- package/dist/ai/BbDropzone.md +10 -10
- package/dist/ai/BbForm.md +43 -52
- package/dist/ai/BbHoverCard.md +19 -7
- package/dist/ai/BbHoverCardPortal.md +1 -1
- package/dist/ai/BbNumberInput.md +88 -21
- package/dist/ai/BbPopover.md +47 -40
- package/dist/ai/BbPopoverPortal.md +1 -1
- package/dist/ai/BbProgress.md +48 -22
- package/dist/ai/BbRadioGroup.md +13 -19
- package/dist/ai/BbSelect.md +16 -36
- package/dist/ai/BbSelectPopover.md +14 -30
- package/dist/ai/BbSmoothHeight.md +0 -2
- package/dist/ai/BbSwitchGroup.md +13 -20
- package/dist/ai/BbTable.md +11 -10
- package/dist/ai/BbTabs.md +107 -106
- package/dist/ai/BbTabsList.md +2 -2
- package/dist/ai/BbTabsPanels.md +1 -1
- package/dist/ai/BbTabsRoot.md +3 -3
- package/dist/ai/BbTooltip.md +29 -13
- package/dist/ai/BbTree.md +14 -11
- package/dist/ai/CommonPopover.md +1 -1
- package/dist/ai/changelog.json +297 -6
- package/dist/ai/components.json +50 -45
- package/dist/ai/composables/useBbDropdownContext.md +16 -16
- package/dist/ai/composables/useBbFormField.md +5 -1
- package/dist/ai/composables/useBbTabsContext.md +14 -14
- package/dist/ai/guides/agent-contract.md +27 -27
- package/dist/ai/guides/ai-router.md +1 -1
- package/dist/ai/guides/component-picker.md +3 -3
- package/dist/ai/guides/fetch-items-playbook.md +1 -1
- package/dist/ai/guides/icons-policy.md +10 -10
- package/dist/ai/guides/inertia-helpers.md +120 -67
- package/dist/ai/guides/installation-and-plugin-setup.md +45 -15
- package/dist/ai/guides/migration/components/bb-breadcrumbs.md +3 -2
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -16
- package/dist/ai/guides/migration/components/bb-dropdown-button.md +9 -8
- package/dist/ai/guides/migration/components/bb-dropdown.md +15 -14
- package/dist/ai/guides/migration/components/bb-radio-group.md +2 -1
- package/dist/ai/guides/migration/components/bb-select-popover.md +6 -1
- package/dist/ai/guides/migration/components/bb-select.md +10 -2
- package/dist/ai/guides/migration/components/bb-switch-group.md +2 -1
- package/dist/ai/guides/migration/components/bb-tabs.md +9 -8
- package/dist/ai/guides/migration/components/bb-tooltip.md +1 -1
- package/dist/ai/guides/migration/v2-to-v3.md +143 -28
- package/dist/ai/guides/migration/v3-beta-css-classes.md +29 -27
- package/dist/ai/guides/migration/v3-beta-tooling.md +11 -0
- package/dist/ai/guides/options-items-playbook.md +30 -24
- package/dist/ai/guides/passthrough.md +4 -4
- package/dist/ai/guides/preset-components.md +18 -3
- package/dist/ai/guides/typescript-generic-components.md +1 -1
- package/dist/ai/guides/validated-forms.md +11 -22
- package/dist/ai/guides/validation-providers.md +4 -3
- package/dist/ai/helpers/inertia/manifest.json +636 -0
- package/dist/ai/helpers/inertia/types.ts +15 -0
- package/dist/ai/helpers/inertia/useAsyncFn.ts +110 -0
- package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +102 -0
- package/dist/ai/helpers/inertia/useDeleteCmd.ts +30 -0
- package/dist/ai/helpers/inertia/useHasChanged.ts +36 -0
- package/dist/ai/helpers/inertia/useIndexById.ts +23 -0
- package/dist/ai/helpers/inertia/useLazyProp.ts +148 -0
- package/dist/ai/helpers/inertia/useLazyPropGetter.ts +50 -0
- package/dist/ai/helpers/inertia/useLoading.ts +20 -0
- package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +88 -0
- package/dist/ai/helpers/inertia/usePromiseForm.ts +62 -0
- package/dist/ai/helpers/inertia/useProp.ts +63 -0
- package/dist/ai/helpers/inertia/useQuery.ts +19 -0
- package/dist/ai/helpers/inertia/useQueryObject.ts +116 -0
- package/dist/ai/helpers/inertia/useResourceContext.ts +69 -0
- package/dist/ai/helpers/inertia/useRouteQuery.ts +54 -0
- package/dist/ai/helpers/inertia/useScreenSizes.ts +23 -0
- package/dist/ai/helpers/inertia/useTableContext.ts +34 -0
- package/dist/ai/helpers/inertia/useTableSelectionContext.ts +48 -0
- package/dist/ai/helpers/inertia/useUntil.ts +33 -0
- package/dist/ai/helpers/inertia/utils.ts +24 -0
- package/dist/ai/index.md +6 -6
- package/dist/ai/manifest/components/BbAccordion.json +1 -1
- package/dist/ai/manifest/components/BbBreadcrumbs.json +10 -6
- package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
- package/dist/ai/manifest/components/BbButton.json +2 -1
- package/dist/ai/manifest/components/BbButton.tree.json +1 -1
- package/dist/ai/manifest/components/BbCheckboxGroup.json +2 -2
- package/dist/ai/manifest/components/BbCollapsible.json +1 -1
- package/dist/ai/manifest/components/BbColorPalette.json +1 -1
- package/dist/ai/manifest/components/BbConfirmPortal.json +5 -2
- package/dist/ai/manifest/components/BbDropdown.json +23 -20
- package/dist/ai/manifest/components/BbDropdown.tree.json +2 -2
- package/dist/ai/manifest/components/BbDropdownButton.json +22 -19
- package/dist/ai/manifest/components/BbDropdownButton.tree.json +1 -1
- package/dist/ai/manifest/components/BbDropdownGroup.json +2 -2
- package/dist/ai/manifest/components/BbForm.json +1 -0
- package/dist/ai/manifest/components/BbHoverCard.json +1 -1
- package/dist/ai/manifest/components/BbHoverCardPortal.json +2 -2
- package/dist/ai/manifest/components/BbNumberInput.json +6 -1
- package/dist/ai/manifest/components/BbNumberInput.tree.json +2 -1
- package/dist/ai/manifest/components/BbPopover.json +2 -1
- package/dist/ai/manifest/components/BbPopoverPortal.json +2 -2
- package/dist/ai/manifest/components/BbProgress.json +6 -6
- package/dist/ai/manifest/components/BbProgress.tree.json +1 -0
- package/dist/ai/manifest/components/BbRadioGroup.json +2 -2
- package/dist/ai/manifest/components/BbSelect.json +2 -2
- package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
- package/dist/ai/manifest/components/BbSelectPopover.json +2 -2
- package/dist/ai/manifest/components/BbSelectPopover.tree.json +1 -1
- package/dist/ai/manifest/components/BbSwitchGroup.json +2 -2
- package/dist/ai/manifest/components/BbTabs.json +8 -7
- package/dist/ai/manifest/components/BbTabsList.json +3 -3
- package/dist/ai/manifest/components/BbTabsPanels.json +1 -1
- package/dist/ai/manifest/components/BbTabsRoot.json +6 -5
- package/dist/ai/manifest/components/BbTag.tree.json +1 -1
- package/dist/ai/manifest/components/BbTooltip.json +2 -2
- package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
- package/dist/ai/manifest/components/CommonPopover.json +1 -1
- package/dist/ai/manifest/index.json +2 -2
- package/dist/ai/manifest/meta.json +5 -0
- package/dist/ai/manifest/types.advanced.json +10 -9
- package/dist/ai/manifest/types.api.json +8 -5
- package/dist/ai/manifest/types.wrapper.json +1 -0
- package/dist/ai/recipes/inertia/approvals-inbox.md +16 -18
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +23 -33
- package/dist/ai/recipes/inertia/layout-scaffold.md +16 -16
- package/dist/ai/recipes/inertia/onboarding.md +6 -10
- package/dist/ai/recipes/inertia/ownership-atlas.md +15 -18
- package/dist/ai/recipes/inertia/record-form.md +11 -11
- package/dist/ai/recipes/inertia/records-workspace.md +38 -41
- package/dist/ai/recipes/inertia/settings-workspace.md +26 -38
- package/dist/ai/recipes/inertia/upload-center.md +31 -39
- package/dist/ai/recipes/inertia/wizard-form.md +10 -19
- package/dist/ai/recipes/nuxt/approvals-inbox.md +7 -8
- package/dist/ai/recipes/nuxt/inline-edit-workspace.md +14 -24
- package/dist/ai/recipes/nuxt/layout-scaffold.md +16 -16
- package/dist/ai/recipes/nuxt/onboarding.md +2 -6
- package/dist/ai/recipes/nuxt/ownership-atlas.md +7 -9
- package/dist/ai/recipes/nuxt/record-form.md +5 -5
- package/dist/ai/recipes/nuxt/records-workspace.md +29 -31
- package/dist/ai/recipes/nuxt/settings-workspace.md +22 -34
- package/dist/ai/recipes/nuxt/upload-center.md +22 -29
- package/dist/ai/recipes/nuxt/wizard-form.md +3 -11
- package/dist/ai/recipes/vue/approvals-inbox.md +7 -8
- package/dist/ai/recipes/vue/inline-edit-workspace.md +14 -24
- package/dist/ai/recipes/vue/layout-scaffold.md +16 -16
- package/dist/ai/recipes/vue/onboarding.md +2 -6
- package/dist/ai/recipes/vue/ownership-atlas.md +7 -9
- package/dist/ai/recipes/vue/record-form.md +5 -5
- package/dist/ai/recipes/vue/records-workspace.md +29 -31
- package/dist/ai/recipes/vue/settings-workspace.md +22 -34
- package/dist/ai/recipes/vue/upload-center.md +22 -29
- package/dist/ai/recipes/vue/wizard-form.md +3 -11
- package/dist/ai/source/BbAccordion.md +1 -1
- package/dist/ai/source/BbAlert.md +3 -3
- package/dist/ai/source/BbBadge.md +14 -10
- package/dist/ai/source/BbBadgeButton.md +17 -12
- package/dist/ai/source/BbBaseButton.md +1 -1
- package/dist/ai/source/BbBaseRadioIcon.md +1 -0
- package/dist/ai/source/BbBaseSwitchIcon.md +1 -0
- package/dist/ai/source/BbBreadcrumbs.md +63 -42
- package/dist/ai/source/BbButton.md +84 -38
- package/dist/ai/source/BbCalendar.md +17 -16
- package/dist/ai/source/BbCheckbox.md +3 -2
- package/dist/ai/source/BbCheckboxGroup.md +11 -4
- package/dist/ai/source/BbCollapsible.md +2 -1
- package/dist/ai/source/BbColorInput.md +10 -9
- package/dist/ai/source/BbColorPalette.md +2 -1
- package/dist/ai/source/BbConfirm.md +18 -1
- package/dist/ai/source/BbConfirmPortal.md +20 -6
- package/dist/ai/source/BbDatePicker.md +2 -2
- package/dist/ai/source/BbDatePickerInput.md +47 -20
- package/dist/ai/source/BbDialog.md +5 -5
- package/dist/ai/source/BbDropdown.md +231 -158
- package/dist/ai/source/BbDropdownButton.md +19 -12
- package/dist/ai/source/BbDropdownGroup.md +127 -93
- package/dist/ai/source/BbForm.md +25 -1
- package/dist/ai/source/BbHoverCard.md +30 -3
- package/dist/ai/source/BbHoverCardPortal.md +18 -3
- package/dist/ai/source/BbIndicator.md +4 -0
- package/dist/ai/source/BbNumberInput.md +855 -19
- package/dist/ai/source/BbOffCanvas.md +27 -11
- package/dist/ai/source/BbPagination.md +3 -3
- package/dist/ai/source/BbPopover.md +185 -12
- package/dist/ai/source/BbPopoverPortal.md +30 -3
- package/dist/ai/source/BbProgress.md +82 -18
- package/dist/ai/source/BbRadioGroup.md +12 -5
- package/dist/ai/source/BbRating.md +11 -9
- package/dist/ai/source/BbSelect.md +16 -10
- package/dist/ai/source/BbSelectPopover.md +29 -23
- package/dist/ai/source/BbSlider.md +12 -6
- package/dist/ai/source/BbSwitch.md +3 -2
- package/dist/ai/source/BbSwitchGroup.md +5 -2
- package/dist/ai/source/BbTable.md +102 -18
- package/dist/ai/source/BbTabs.md +30 -24
- package/dist/ai/source/BbTabsList.md +29 -23
- package/dist/ai/source/BbTabsPanels.md +29 -23
- package/dist/ai/source/BbTabsRoot.md +28 -22
- package/dist/ai/source/BbTag.md +10 -9
- package/dist/ai/source/BbTextInput.md +5 -4
- package/dist/ai/source/BbTextarea.md +6 -5
- package/dist/ai/source/BbTimePicker.md +1 -1
- package/dist/ai/source/BbTimePickerInput.md +46 -9
- package/dist/ai/source/BbToast.md +10 -7
- package/dist/ai/source/BbToastPortal.md +10 -7
- package/dist/ai/source/BbTooltip.md +88 -11
- package/dist/ai/source/BbTree.md +21 -3
- package/dist/ai/source/CommonField.md +6 -4
- package/dist/ai/source/CommonFieldInput.md +15 -10
- package/dist/ai/source/CommonPopover.md +8 -1
- package/dist/ai/source/CommonTimeSelector.md +5 -4
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +10 -8
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +45 -45
- package/dist/components/BbBreadcrumbs/types.d.ts +25 -17
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +88 -70
- package/dist/components/BbButton/toggleRoving.d.ts +6 -0
- package/dist/components/BbButton/toggleRoving.js +45 -0
- package/dist/components/BbButton/types.d.ts +12 -4
- package/dist/components/BbButton/types.js +5 -1
- package/dist/components/BbCalendar/BbCalendar.vue_vue_type_script_setup_true_lang.js +178 -178
- package/dist/components/BbCalendar/CalendarMonthPanel.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/components/BbCalendar/CalendarYearPanel.vue_vue_type_script_setup_true_lang.js +28 -28
- package/dist/components/BbCalendar/useCalendarGrid.js +141 -139
- package/dist/components/BbCalendar/useDayjsLocale.d.ts +38 -15
- package/dist/components/BbCalendar/useDayjsLocale.js +31 -30
- package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +48 -48
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +81 -80
- package/dist/components/BbCheckboxGroup/types.d.ts +6 -2
- package/dist/components/BbCollapsible/types.d.ts +2 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +69 -69
- package/dist/components/BbColorPalette/types.d.ts +2 -1
- package/dist/components/BbConfirm/BbConfirmPortal.vue.d.ts +2 -5
- package/dist/components/BbConfirm/types.d.ts +15 -0
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +363 -349
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +91 -86
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +298 -289
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +322 -356
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +17 -15
- package/dist/components/BbDropdown/DropdownRow.vue.d.ts +40 -0
- package/dist/components/BbDropdown/DropdownRow.vue.js +5 -0
- package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/BbDropdown/normalizeGroups.d.ts +8 -2
- package/dist/components/BbDropdown/normalizeGroups.js +60 -46
- package/dist/components/BbDropdown/types.d.ts +120 -88
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +11 -2
- package/dist/components/BbDropdownButton/types.d.ts +2 -2
- package/dist/components/BbForm/BbForm.vue.d.ts +9 -0
- package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +114 -105
- package/dist/components/BbForm/BbFormCustomField.js +1 -1
- package/dist/components/BbForm/bindFormField.js +2 -1
- package/dist/components/BbForm/formFields.d.ts +5 -0
- package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +145 -142
- package/dist/components/BbHoverCard/BbHoverCardPortal.vue.d.ts +2 -2
- package/dist/components/BbHoverCard/types.d.ts +14 -1
- package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +0 -1
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +452 -125
- package/dist/components/BbNumberInput/numberDisplay.d.ts +256 -0
- package/dist/components/BbNumberInput/numberDisplay.js +499 -0
- package/dist/components/BbNumberInput/types.d.ts +54 -1
- package/dist/components/BbNumberInput/warroom/corpus.d.ts +58 -0
- package/dist/components/BbNumberInput/warroom/currency-verify.rows.d.ts +28 -0
- package/dist/components/BbNumberInput/warroom/currency.rows.d.ts +2 -0
- package/dist/components/BbNumberInput/warroom/harness.d.ts +217 -0
- package/dist/components/BbNumberInput/warroom/oracle.d.ts +150 -0
- package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/components/BbPopover/BbPopover.vue.d.ts +1 -0
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +207 -162
- package/dist/components/BbPopover/BbPopoverPortal.vue.d.ts +2 -2
- package/dist/components/BbPopover/types.d.ts +26 -1
- package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +15 -7
- package/dist/components/BbProgress/types.d.ts +23 -7
- package/dist/components/BbProgress/types.js +1 -1
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +102 -101
- package/dist/components/BbRadioGroup/types.d.ts +6 -2
- package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +63 -63
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +156 -154
- package/dist/components/BbSelect/types.d.ts +6 -2
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/BbSelectPopover/types.d.ts +6 -2
- package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +153 -153
- package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +62 -62
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +131 -130
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +711 -676
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/BbTabs/types.d.ts +28 -22
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +76 -76
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +58 -58
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +82 -82
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +246 -236
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +99 -86
- package/dist/components/BbTooltip/tooltipWarmup.d.ts +23 -0
- package/dist/components/BbTooltip/tooltipWarmup.js +7 -0
- package/dist/components/BbTooltip/types.d.ts +10 -3
- package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +29 -21
- package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +10 -7
- package/dist/components/CommonFieldInput/CommonFieldInput.vue_vue_type_script_setup_true_lang.js +37 -36
- package/dist/components/CommonPopover/types.d.ts +2 -1
- package/dist/components/CommonTimeSelector/CommonTimeSelector.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/composables/formSubmitLock.d.ts +6 -0
- package/dist/composables/formSubmitLock.js +4 -0
- package/dist/composables/useBaseOptions.d.ts +7 -1
- package/dist/composables/useBaseOptions.js +32 -32
- package/dist/composables/useBbDropdownContext.d.ts +8 -8
- package/dist/composables/useBbFormField.d.ts +9 -0
- package/dist/composables/useBbFormField.js +5 -3
- package/dist/composables/useBbTabsContext.d.ts +10 -10
- package/dist/composables/useBbTabsContext.js +18 -18
- package/dist/composables/useFormBinding.d.ts +11 -0
- package/dist/composables/useFormBinding.js +15 -13
- package/dist/composables/useItemText.d.ts +5 -1
- package/dist/composables/useItemText.js +8 -3
- package/dist/composables/useItemValue.d.ts +5 -1
- package/dist/composables/useItemValue.js +8 -3
- package/dist/composables/useLocale.js +10 -9
- package/dist/deprecation/ai-deprecations.json.d.ts +130 -0
- package/dist/deprecation/ai-deprecations.json.js +1 -1
- package/dist/deprecation/removedProps.js +1 -1
- package/dist/directives/bbDropdown.js +1 -1
- package/dist/directives/directivePortal.d.ts +13 -7
- package/dist/directives/directivePortal.js +1 -4
- package/dist/i18n/index.d.ts +7 -12
- package/dist/i18n/locales/cs.json +11 -14
- package/dist/i18n/locales/da.json +13 -16
- package/dist/i18n/locales/de-CH.json +137 -0
- package/dist/i18n/locales/de.json +14 -17
- package/dist/i18n/locales/el.json +10 -13
- package/dist/i18n/locales/en-GB.json +137 -0
- package/dist/i18n/locales/en.json +8 -11
- package/dist/i18n/locales/es-MX.json +137 -0
- package/dist/i18n/locales/es.json +16 -19
- package/dist/i18n/locales/fi.json +8 -11
- package/dist/i18n/locales/fr.json +23 -26
- package/dist/i18n/locales/hu.json +8 -11
- package/dist/i18n/locales/it.json +12 -15
- package/dist/i18n/locales/ja.json +13 -16
- package/dist/i18n/locales/ko.json +10 -13
- package/dist/i18n/locales/nb.json +13 -16
- package/dist/i18n/locales/nl.json +21 -24
- package/dist/i18n/locales/pl.json +10 -13
- package/dist/i18n/locales/{pt.json → pt-BR.json} +19 -22
- package/dist/i18n/locales/pt-PT.json +137 -0
- package/dist/i18n/locales/ro.json +22 -25
- package/dist/i18n/locales/ru.json +11 -14
- package/dist/i18n/locales/sv.json +16 -19
- package/dist/i18n/locales/tr.json +14 -17
- package/dist/i18n/locales/uk.json +11 -14
- package/dist/i18n/locales/{zh-cn.json → zh-CN.json} +10 -13
- package/dist/i18n/locales/zh-HK.json +137 -0
- package/dist/i18n/locales/zh-TW.json +137 -0
- package/dist/i18n/regionHints.d.ts +16 -0
- package/dist/i18n/regionHints.js +49 -0
- package/dist/i18n/regions.d.ts +286 -0
- package/dist/i18n/regions.js +265 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/llms-full.txt +1914 -1714
- package/dist/llms-medium.txt +76 -46
- package/dist/llms.txt +7 -7
- package/dist/locale-blueprint.json +16 -13
- package/dist/styles.css +2 -2
- package/dist/types/passthrough.d.ts +1 -1
- package/dist/types/ptComponentMap.d.ts +2 -2
- package/dist/utilities/functions/slotKey.d.ts +2 -2
- package/dist/utils/versionCheck.js +1 -1
- package/dist/vite-plugin.d.ts +22 -19
- package/dist/vite.js +309 -297
- package/llms.txt +7 -7
- package/package.json +5 -3
- package/scripts/lib/agent-manifest.mjs +2 -1
- package/scripts/lib/eslint-disable.mjs +17 -4
- package/scripts/lib/eslint-plugin.d.ts +9 -1
- package/scripts/lib/eslint-plugin.mjs +256 -6
- package/scripts/lib/helper-canon.mjs +176 -0
- package/scripts/lib/helpers-add.mjs +1303 -0
- package/scripts/lib/local-components.mjs +33 -4
- package/scripts/lib/locale-check.mjs +165 -0
- package/scripts/lib/portal-names.mjs +458 -0
- package/scripts/lib/redundant-item-accessor.mjs +398 -0
- package/scripts/lib/renamed-item-field.mjs +343 -0
- package/scripts/lib/slot-key.mjs +2 -2
- package/scripts/lib/slot-renames.mjs +1 -1
- package/scripts/lib/unimported-components.mjs +5 -2
- package/scripts/lib/validate-bb-markup.mjs +123 -56
- package/dist/i18n/index.js +0 -27
package/dist/ai/BbSelect.md
CHANGED
|
@@ -100,18 +100,14 @@ Prefer a sibling when the shape is simpler:
|
|
|
100
100
|
|
|
101
101
|
### Map options with `item-text` and `item-value`
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
`
|
|
105
|
-
`
|
|
103
|
+
**`{ label, value }` and `{ text, value }` items work as they are; any other
|
|
104
|
+
shape needs `item-text` / `item-value`.** With neither prop an option reads its
|
|
105
|
+
own `label` (else its own `text`) and its own `value`, whatever it holds (`null`
|
|
106
|
+
included). An object with none of those fields falls back to
|
|
107
|
+
`JSON.stringify(item)` as text and the whole object as value.
|
|
106
108
|
|
|
107
109
|
```vue
|
|
108
|
-
<BbSelect
|
|
109
|
-
v-model="plan"
|
|
110
|
-
label="Plan"
|
|
111
|
-
:items="plans"
|
|
112
|
-
item-text="label"
|
|
113
|
-
item-value="value"
|
|
114
|
-
/>
|
|
110
|
+
<BbSelect v-model="plan" label="Plan" :items="plans" />
|
|
115
111
|
```
|
|
116
112
|
|
|
117
113
|
Pass your domain objects to `items` **as they are** and tell the component which
|
|
@@ -172,8 +168,9 @@ Value-identity rules (shared with every items-driven component — see the
|
|
|
172
168
|
Options and Items playbook):
|
|
173
169
|
|
|
174
170
|
- For primitive `items` (`string[]` / `number[]`) omit both mapping props — the
|
|
175
|
-
value is the primitive itself.
|
|
176
|
-
|
|
171
|
+
value is the primitive itself. `{ label, value }` / `{ text, value }` objects
|
|
172
|
+
need none either; any other object shape needs both (its fallbacks are
|
|
173
|
+
`JSON.stringify(item)` as text and the whole item as value).
|
|
177
174
|
- Matching compares **value hashes** (deep structural equality, not reference
|
|
178
175
|
identity), so object values survive refetches — but prefer primitive ids:
|
|
179
176
|
stable, unique, cheap to submit.
|
|
@@ -187,7 +184,8 @@ Options and Items playbook):
|
|
|
187
184
|
|
|
188
185
|
#### Additional row fields: `item-props`
|
|
189
186
|
|
|
190
|
-
`item-text`
|
|
187
|
+
The option's text and value (from `item-text` / `item-value`, or the item's own
|
|
188
|
+
`label` and `value`) are its label and identity. Anything
|
|
191
189
|
**additional** about a row comes from `item-props`. Select options accept three
|
|
192
190
|
fields:
|
|
193
191
|
|
|
@@ -461,8 +459,6 @@ model to `[]` (or `null` in single mode).
|
|
|
461
459
|
clearable
|
|
462
460
|
compact
|
|
463
461
|
hint="Pick up to 3 cities"
|
|
464
|
-
item-text="label"
|
|
465
|
-
item-value="value"
|
|
466
462
|
:items="options"
|
|
467
463
|
label="Cities"
|
|
468
464
|
:max="3"
|
|
@@ -552,8 +548,6 @@ v-model is yours:
|
|
|
552
548
|
<BbSelect
|
|
553
549
|
v-model="channels"
|
|
554
550
|
compact
|
|
555
|
-
item-text="label"
|
|
556
|
-
item-value="value"
|
|
557
551
|
:items="options"
|
|
558
552
|
label="Notify via"
|
|
559
553
|
:max-selected-labels="2"
|
|
@@ -723,7 +717,6 @@ on your setup:
|
|
|
723
717
|
v-model="city"
|
|
724
718
|
compact
|
|
725
719
|
:filter-by="['label', 'country']"
|
|
726
|
-
item-text="label"
|
|
727
720
|
item-value="id"
|
|
728
721
|
:items="cities"
|
|
729
722
|
label="City"
|
|
@@ -1074,8 +1067,6 @@ options to look, so you have to say so:
|
|
|
1074
1067
|
<BbSelect
|
|
1075
1068
|
v-model="location"
|
|
1076
1069
|
compact
|
|
1077
|
-
item-text="label"
|
|
1078
|
-
item-value="value"
|
|
1079
1070
|
:items="loadLocations"
|
|
1080
1071
|
label="Location"
|
|
1081
1072
|
placeholder="Select location…"
|
|
@@ -1135,8 +1126,6 @@ locations" renders from the first paint:
|
|
|
1135
1126
|
```vue
|
|
1136
1127
|
<BbSelect
|
|
1137
1128
|
v-model="state.location"
|
|
1138
|
-
item-text="label"
|
|
1139
|
-
item-value="value"
|
|
1140
1129
|
:items="[
|
|
1141
1130
|
{ label: 'All locations', value: null },
|
|
1142
1131
|
{ label: 'Milan', value: 'milan' },
|
|
@@ -1203,8 +1192,6 @@ disabled field still submits its value.
|
|
|
1203
1192
|
v-model="province"
|
|
1204
1193
|
clearable
|
|
1205
1194
|
compact
|
|
1206
|
-
item-text="label"
|
|
1207
|
-
item-value="value"
|
|
1208
1195
|
:items="provinces"
|
|
1209
1196
|
label="Province"
|
|
1210
1197
|
placeholder="Pick a province"
|
|
@@ -1217,8 +1204,6 @@ disabled field still submits its value.
|
|
|
1217
1204
|
:disabled="!province"
|
|
1218
1205
|
empty-text="Choose a province first"
|
|
1219
1206
|
enforce-coherence
|
|
1220
|
-
item-text="label"
|
|
1221
|
-
item-value="value"
|
|
1222
1207
|
:items="loadCities"
|
|
1223
1208
|
label="City"
|
|
1224
1209
|
:placeholder="province ? 'Pick a city' : 'Select a province first'"
|
|
@@ -1556,8 +1541,6 @@ lists window per row) or pre-chunk the data into smaller groups.
|
|
|
1556
1541
|
clearable
|
|
1557
1542
|
compact
|
|
1558
1543
|
group-by="department"
|
|
1559
|
-
item-text="label"
|
|
1560
|
-
item-value="value"
|
|
1561
1544
|
:items="roles"
|
|
1562
1545
|
label="Role"
|
|
1563
1546
|
placeholder="Pick a role"
|
|
@@ -1620,8 +1603,6 @@ compact control, so it keeps the compact rows on every device — turning
|
|
|
1620
1603
|
<BbSelect
|
|
1621
1604
|
v-model="assignee"
|
|
1622
1605
|
compact
|
|
1623
|
-
item-text="label"
|
|
1624
|
-
item-value="value"
|
|
1625
1606
|
:items="teammates"
|
|
1626
1607
|
label="Assignee"
|
|
1627
1608
|
placeholder="Choose a teammate"
|
|
@@ -1699,8 +1680,6 @@ once the chips outgrow the field — keep chips compact, or raise
|
|
|
1699
1680
|
<BbSelect
|
|
1700
1681
|
v-model="tags"
|
|
1701
1682
|
clearable
|
|
1702
|
-
item-text="label"
|
|
1703
|
-
item-value="value"
|
|
1704
1683
|
:items="tagItems"
|
|
1705
1684
|
label="Labels"
|
|
1706
1685
|
multiple
|
|
@@ -2080,8 +2059,9 @@ it: [passthrough guide § Typing `pt` in `<script>`](./guides/passthrough.md#typ
|
|
|
2080
2059
|
|
|
2081
2060
|
### Anti-patterns
|
|
2082
2061
|
|
|
2083
|
-
- Pre-mapping
|
|
2084
|
-
|
|
2062
|
+
- Pre-mapping domain rows into `{ label, value }` copies (name their fields with
|
|
2063
|
+
`item-text` / `item-value` instead), or storing whole objects in the model
|
|
2064
|
+
when an id is enough.
|
|
2085
2065
|
- `watch(filter, refetch)` when `dependencies` exists; blind `model = null`
|
|
2086
2066
|
resets when `enforce-coherence` would preserve still-valid values.
|
|
2087
2067
|
- Hand-rolled debounce or loading refs around the provider.
|
|
@@ -2149,8 +2129,8 @@ it: [passthrough guide § Typing `pt` in `<script>`](./guides/passthrough.md#typ
|
|
|
2149
2129
|
| `itemHeight` | `number \| undefined` | `28` | | Height of the options in the listbox (px). Defaults to 28px (24px compact; 44px / 36px on mobile viewports). An explicit value wins on every viewport. |
|
|
2150
2130
|
| `itemProps` | `BbSelectItemProps<T> \| undefined` | | | ADDITIONAL row fields resolved from each item — never its text or value (those stay on `itemText` / `itemValue`). Accepted fields: - `description` — a muted line under the option label. Setting it gives every row a fixed two-line height (the list is virtualized); the description stays on one line and ellipsizes. Announced as the option's description, never part of its name; matched by the search with the text when `filterBy` is empty. - `prepend:icon` — an icon before the label. - `append:icon` — an icon after the label; on the selected row the check takes its place. Either an object with a path or getter per field (`{ description: 'email', 'prepend:icon': 'icon' }`) or a function returning the fields (`(item) => ({ description: item.email })`). Without it no field renders — nothing is read off the item implicitly — and an empty value renders nothing for that item. Never shown in the trigger or the chips. To disable individual options use `selectable`. |
|
|
2151
2131
|
| `items` | `T[] \| ((context: BbSelectItemsContext) => T[] \| Promise<T[]>)` | | yes | The options: an array, or a provider function called with ONE context object and returning the rows, sync or async. The context carries: - `query` — what the user typed, `''` until they type; - `reason` — why this call happened: `'search'` (the user typed, and nothing else), `'initial'` (the first load, on mount or on the first open), `'dependencies'` (a `dependencies` entry or the `items` function changed; a retry arrives this way), `'model'` (the model changed from outside and the options cannot resolve it), `'reopen'` (the panel reopened over a searched list). To resolve the selection by id, branch on `reason !== 'search'`; - `modelValue` — the `v-model` as-is; - `signal` — an `AbortSignal`, aborted when a newer call starts or the component is disposed; pass it to every request. A provider signals a failure by THROWING, never by returning `[]`: the rows are cleared, nothing is pruned, and `#empty` receives the `error` (`failed-text` is shown). A newer call aborts the one in flight, and the aborted call's rejection or resolution is dropped silently. Zero-argument providers keep working. Annotate the parameter `BbSelectItemsContext`. |
|
|
2152
|
-
| `itemText` | `ItemAccessor<T, string> \| undefined` | `JSON.stringify(item)
|
|
2153
|
-
| `itemValue` | `ItemAccessor<T> \| undefined` | `the whole item` | | Defines a path that returns a property of the object to use as value or a function that returns any value. |
|
|
2132
|
+
| `itemText` | `ItemAccessor<T, string> \| undefined` | `own `label`, else `text`, else `JSON.stringify(item)`` | | Defines a path that returns a property of the object to use as text or a function that returns a string. Unset: own `label`, else `text` (`{ label, value }` needs no accessor). |
|
|
2133
|
+
| `itemValue` | `ItemAccessor<T> \| undefined` | `own `value`, else the whole item` | | Defines a path that returns a property of the object to use as value or a function that returns any value. Unset: own `value`, even `null`. |
|
|
2154
2134
|
| `label` | `string` | | yes | Text content of the label of the element. |
|
|
2155
2135
|
| `labelAlign` | `'top'` \| `'center'` \| `'bottom'` | | | Vertical position of the label block in a side-by-side row; not `labelPosition`, the horizontal one. Omitted, the label's first line meets the control's. |
|
|
2156
2136
|
| `labelMode` | `"outside" \| "floating" \| "inside" \| undefined` | | | Label rendering mode. |
|
|
@@ -60,17 +60,14 @@ driving a trigger you render yourself.
|
|
|
60
60
|
|
|
61
61
|
### Map options with `item-text` / `item-value`
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
`
|
|
65
|
-
`
|
|
63
|
+
**`{ label, value }` and `{ text, value }` items work as they are; any other
|
|
64
|
+
shape needs `item-text` / `item-value`.** With neither prop an option reads its
|
|
65
|
+
own `label` (else its own `text`) and its own `value`, whatever it holds (`null`
|
|
66
|
+
included). An object with none of those fields falls back to
|
|
67
|
+
`JSON.stringify(item)` as text and the whole object as value.
|
|
66
68
|
|
|
67
69
|
```vue
|
|
68
|
-
<BbSelectPopover
|
|
69
|
-
v-model="plan"
|
|
70
|
-
:items="plans"
|
|
71
|
-
item-text="label"
|
|
72
|
-
item-value="value"
|
|
73
|
-
/>
|
|
70
|
+
<BbSelectPopover v-model="plan" :items="plans" />
|
|
74
71
|
```
|
|
75
72
|
|
|
76
73
|
Pass your domain objects to `items` as they are and name the display/value
|
|
@@ -78,8 +75,9 @@ fields with `item-text` / `item-value` (dot-paths or extractor functions). The
|
|
|
78
75
|
`v-model` holds the resolved **value**, not the whole object. The value-identity
|
|
79
76
|
rules are the shared ones (see the Options and Items playbook), in brief:
|
|
80
77
|
|
|
81
|
-
- Primitive `items` (`string[]` / `number[]`)
|
|
82
|
-
|
|
78
|
+
- Primitive `items` (`string[]` / `number[]`) and `{ label, value }` /
|
|
79
|
+
`{ text, value }` objects need no mapping props; any other object shape needs
|
|
80
|
+
both.
|
|
83
81
|
- Matching compares **value hashes** (deep structural equality), so object
|
|
84
82
|
values survive refetches — but prefer stable primitive ids.
|
|
85
83
|
- Options resolving to a **duplicate value are silently dropped** (first wins).
|
|
@@ -91,7 +89,8 @@ rules are the shared ones (see the Options and Items playbook), in brief:
|
|
|
91
89
|
|
|
92
90
|
#### Additional row fields: `item-props`
|
|
93
91
|
|
|
94
|
-
`item-text`
|
|
92
|
+
The option's text and value (from `item-text` / `item-value`, or the item's own
|
|
93
|
+
`label` and `value`) are its label and identity. Anything
|
|
95
94
|
**additional** about a row comes from `item-props`. Select options accept three
|
|
96
95
|
fields:
|
|
97
96
|
|
|
@@ -373,8 +372,6 @@ height wins everywhere.
|
|
|
373
372
|
v-model="owner"
|
|
374
373
|
compact
|
|
375
374
|
:item-height="48"
|
|
376
|
-
item-text="label"
|
|
377
|
-
item-value="value"
|
|
378
375
|
:items="people"
|
|
379
376
|
width="240px"
|
|
380
377
|
>
|
|
@@ -460,8 +457,6 @@ and edit forms, `signal`, failure — is in the BbSelect guide.
|
|
|
460
457
|
v-model="destination"
|
|
461
458
|
compact
|
|
462
459
|
empty-text="No city found"
|
|
463
|
-
item-text="label"
|
|
464
|
-
item-value="value"
|
|
465
460
|
:items="searchCities"
|
|
466
461
|
loading-text="Searching…"
|
|
467
462
|
:query-debounce-time="250"
|
|
@@ -800,8 +795,6 @@ row, including the hundreds nobody ever opens.
|
|
|
800
795
|
<BbSelectPopover
|
|
801
796
|
compact
|
|
802
797
|
disable-writing
|
|
803
|
-
item-text="label"
|
|
804
|
-
item-value="value"
|
|
805
798
|
:items="statuses"
|
|
806
799
|
:model-value="valueOf(item, 'status')"
|
|
807
800
|
width="180px"
|
|
@@ -1055,8 +1048,6 @@ option. Identical to `BbSelect`, anchored to your trigger.
|
|
|
1055
1048
|
v-model="role"
|
|
1056
1049
|
compact
|
|
1057
1050
|
group-by="department"
|
|
1058
|
-
item-text="label"
|
|
1059
|
-
item-value="value"
|
|
1060
1051
|
:items="roles"
|
|
1061
1052
|
width="240px"
|
|
1062
1053
|
>
|
|
@@ -1286,14 +1277,7 @@ their string equivalents `loading-text` / `empty-text`.
|
|
|
1286
1277
|
<span class="pr-1 text-xs font-medium text-(--bb-text-muted)"
|
|
1287
1278
|
>Destination</span
|
|
1288
1279
|
>
|
|
1289
|
-
<BbSelectPopover
|
|
1290
|
-
v-model="city"
|
|
1291
|
-
compact
|
|
1292
|
-
item-text="label"
|
|
1293
|
-
item-value="value"
|
|
1294
|
-
:items="cities"
|
|
1295
|
-
width="240px"
|
|
1296
|
-
>
|
|
1280
|
+
<BbSelectPopover v-model="city" compact :items="cities" width="240px">
|
|
1297
1281
|
<template #activator="{ props }">
|
|
1298
1282
|
<BbBadge
|
|
1299
1283
|
append:icon="lucide:chevron-down"
|
|
@@ -1793,8 +1777,8 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
|
|
|
1793
1777
|
| `itemHeight` | `number \| undefined` | `28` | | Height of the options in the listbox (px). Defaults to 28px (24px compact; 44px / 36px on mobile viewports). An explicit value wins on every viewport. |
|
|
1794
1778
|
| `itemProps` | `BbSelectItemProps<Item> \| undefined` | | | ADDITIONAL row fields resolved from each item — never its text or value (those stay on `itemText` / `itemValue`). Accepted fields: - `description` — a muted line under the option label. Setting it gives every row a fixed two-line height (the list is virtualized); the description stays on one line and ellipsizes. Announced as the option's description, never part of its name; matched by the search with the text when `filterBy` is empty. - `prepend:icon` — an icon before the label. - `append:icon` — an icon after the label; on the selected row the check takes its place. Either an object with a path or getter per field (`{ description: 'email', 'prepend:icon': 'icon' }`) or a function returning the fields (`(item) => ({ description: item.email })`). Without it no field renders — nothing is read off the item implicitly — and an empty value renders nothing for that item. Never shown in the trigger or the chips. To disable individual options use `selectable`. |
|
|
1795
1779
|
| `items` | `Item[] \| ((context: BbSelectPopoverItemsContext) => Item[] \| Promise<Item[]>)` | `[]` | yes | The options: an array, or a provider function called with ONE context object and returning the rows, sync or async. The context carries: - `query` — what the user typed, `''` until they type; - `reason` — why this call happened: `'search'` (the user typed, and nothing else), `'initial'` (the first load, on mount or on the first open), `'dependencies'` (a `dependencies` entry or the `items` function changed; a retry arrives this way), `'model'` (the model changed from outside and the options cannot resolve it), `'reopen'` (the panel reopened over a searched list). To resolve the selection by id, branch on `reason !== 'search'`; - `modelValue` — the raw v-model: an array in `multiple` mode, the raw model value (possibly `null`) in single mode; - `signal` — an `AbortSignal`, aborted when a newer call starts or the component is disposed; pass it to every request. A provider signals a failure by THROWING, never by returning `[]`: the rows are cleared, nothing is pruned, and `#empty` receives the `error` (`failed-text` is shown). A newer call aborts the one in flight, and the aborted call's rejection or resolution is dropped silently. Zero-argument providers keep working. Annotate the parameter `BbSelectPopoverItemsContext`. |
|
|
1796
|
-
| `itemText` | `ItemAccessor<Item, string> \| undefined` | `JSON.stringify(item)
|
|
1797
|
-
| `itemValue` | `ItemAccessor<Item> \| undefined` | `the whole item` | | Path to item property for value or function to extract it. |
|
|
1780
|
+
| `itemText` | `ItemAccessor<Item, string> \| undefined` | `own `label`, else `text`, else `JSON.stringify(item)`` | | Path to item property for display text or function to extract it. Unset: own `label`, else `text` (`{ label, value }` needs no accessor). |
|
|
1781
|
+
| `itemValue` | `ItemAccessor<Item> \| undefined` | `own `value`, else the whole item` | | Path to item property for value or function to extract it. Unset: own `value`, even `null`. |
|
|
1798
1782
|
| `loading` | `boolean \| undefined` | `false` | | Display the loading state styles. |
|
|
1799
1783
|
| `loadingText` | `string \| undefined` | | | Message shown while items are being loaded. |
|
|
1800
1784
|
| `max` | `number \| undefined` | `Infinity` | | Maximum number of selectable items (limits selection when `multiple` is true). |
|
|
@@ -125,7 +125,6 @@ controls above and the actions below stay put while the middle animates.
|
|
|
125
125
|
<BbRadioGroup
|
|
126
126
|
v-model="method"
|
|
127
127
|
compact
|
|
128
|
-
item-text="label"
|
|
129
128
|
item-value="id"
|
|
130
129
|
:items="methods"
|
|
131
130
|
legend="Payment method"
|
|
@@ -485,7 +484,6 @@ the box.
|
|
|
485
484
|
<BbRadioGroup
|
|
486
485
|
v-model="method"
|
|
487
486
|
compact
|
|
488
|
-
item-text="label"
|
|
489
487
|
item-value="id"
|
|
490
488
|
:items="methods"
|
|
491
489
|
legend="Payment method"
|
package/dist/ai/BbSwitchGroup.md
CHANGED
|
@@ -67,18 +67,14 @@ Choose on what the flip _means_, not on whether a Save button exists.
|
|
|
67
67
|
|
|
68
68
|
### Items are your domain objects
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
`
|
|
72
|
-
`
|
|
70
|
+
**`{ label, value }` and `{ text, value }` items work as they are; any other
|
|
71
|
+
shape needs `item-text` / `item-value`.** With neither prop an option reads its
|
|
72
|
+
own `label` (else its own `text`) and its own `value`, whatever it holds (`null`
|
|
73
|
+
included). An object with none of those fields falls back to
|
|
74
|
+
`JSON.stringify(item)` as text and the whole object as value.
|
|
73
75
|
|
|
74
76
|
```vue
|
|
75
|
-
<BbSwitchGroup
|
|
76
|
-
v-model="enabled"
|
|
77
|
-
legend="Features"
|
|
78
|
-
:items="options"
|
|
79
|
-
item-text="label"
|
|
80
|
-
item-value="value"
|
|
81
|
-
/>
|
|
77
|
+
<BbSwitchGroup v-model="enabled" legend="Features" :items="options" />
|
|
82
78
|
```
|
|
83
79
|
|
|
84
80
|
`BbSwitchGroup` is items-driven and shares the checkbox group's mapping API.
|
|
@@ -97,7 +93,6 @@ stored value with `item-text` / `item-value` — never pre-map into
|
|
|
97
93
|
v-model="channels"
|
|
98
94
|
compact
|
|
99
95
|
description="Each channel applies the moment you flip it."
|
|
100
|
-
item-text="label"
|
|
101
96
|
item-value="id"
|
|
102
97
|
:items="options"
|
|
103
98
|
legend="Where should we reach you?"
|
|
@@ -138,7 +133,8 @@ keep values unique — prefer stable primitive ids.
|
|
|
138
133
|
|
|
139
134
|
#### Additional row fields: `item-props`
|
|
140
135
|
|
|
141
|
-
`item-text`
|
|
136
|
+
The option's text and value (from `item-text` / `item-value`, or the item's own
|
|
137
|
+
`label` and `value`) are its label and identity. Anything
|
|
142
138
|
**additional** about a row comes from `item-props` — for option groups that is
|
|
143
139
|
one field, `description`: a muted line **under** the switch's label, beside the
|
|
144
140
|
control.
|
|
@@ -406,7 +402,6 @@ explains why:
|
|
|
406
402
|
<div class="grid max-w-sm gap-2 rounded-(--bb-radius) border p-3">
|
|
407
403
|
<BbSwitchGroup
|
|
408
404
|
compact
|
|
409
|
-
item-text="label"
|
|
410
405
|
item-value="id"
|
|
411
406
|
:items="flags"
|
|
412
407
|
legend="Feature flags"
|
|
@@ -503,7 +498,6 @@ involved. See the [fetch-items](../../ai/guides/fetch-items-playbook.md) and
|
|
|
503
498
|
<BbRadioGroup
|
|
504
499
|
v-model="plan"
|
|
505
500
|
compact
|
|
506
|
-
item-text="label"
|
|
507
501
|
item-value="id"
|
|
508
502
|
:items="plans"
|
|
509
503
|
legend="Workspace plan"
|
|
@@ -517,7 +511,6 @@ involved. See the [fetch-items](../../ai/guides/fetch-items-playbook.md) and
|
|
|
517
511
|
:deps-debounce-time="150"
|
|
518
512
|
enforce-coherence
|
|
519
513
|
hint="Channels outside the current plan turn off automatically."
|
|
520
|
-
item-text="label"
|
|
521
514
|
item-value="id"
|
|
522
515
|
:items="loadChannels"
|
|
523
516
|
legend="Alert channels"
|
|
@@ -639,7 +632,6 @@ broadcast over every row, `pt:item:checked` resolves per row.
|
|
|
639
632
|
v-model="channels"
|
|
640
633
|
class="w-full"
|
|
641
634
|
description="Each channel applies the moment you flip it."
|
|
642
|
-
item-text="label"
|
|
643
635
|
item-value="id"
|
|
644
636
|
:items="options"
|
|
645
637
|
legend="Notifications"
|
|
@@ -713,8 +705,9 @@ for a preset that fits any row type (never `<any>`), not an imported
|
|
|
713
705
|
- A `disabled` field on an item object does nothing — it is inert data. Gate
|
|
714
706
|
options with the `selectable` predicate, or disable the whole group with
|
|
715
707
|
`disabled`.
|
|
716
|
-
- Don't pre-map
|
|
717
|
-
`item-text` / `item-value
|
|
708
|
+
- Don't pre-map domain rows into `{ label, value }` copies — pass raw rows and
|
|
709
|
+
resolve with `item-text` / `item-value` (a list that already is
|
|
710
|
+
`{ label, value }` needs neither).
|
|
718
711
|
- A native (non-JS) form post needs `name`: the group generates none, unlike
|
|
719
712
|
`BbRadioGroup`, where the name is what ties the options together. Independent
|
|
720
713
|
switches need no tie, so with `v-model` alone leave it off.
|
|
@@ -771,8 +764,8 @@ for a preset that fits any row type (never `<any>`), not an imported
|
|
|
771
764
|
| `itemProps` | `BbOptionGroupItemProps<T> \| undefined` | | | ADDITIONAL row fields resolved from each item — never its text or value (those stay on `itemText` / `itemValue`). Option groups accept one field: - `description` — a muted line under the option label, beside the control; it may wrap. Either an object with a path or getter per field (`{ description: 'email' }`) or a function returning the fields (`(item) => ({ description: item.email })`). Without it no field renders — an item's own `description` is never read implicitly — and an empty value renders nothing for that item. The description is announced as the option's description, never part of its name. To disable individual options use `selectable`. |
|
|
772
765
|
| `itemReverse` | `boolean \| undefined` | `false` | | Swaps each row's input and label from their natural order (input first), in every `item-layout`. `reverse` swaps the legend and the options instead. |
|
|
773
766
|
| `items` | `T[] \| ((context: BbCheckboxGroupItemsContext) => T[] \| Promise<T[]>)` | | yes | The options: an array, or a provider function called with ONE context object and returning the rows, sync or async. The context carries: - `reason` — why this call happened: `'initial'` (the first load, on mount), `'dependencies'` (a `dependencies` entry or the `items` function changed; a retry arrives this way) or `'model'` (the model changed from outside and the options cannot resolve it). The group has no search field, so it never passes `query`; - `modelValue` — the `v-model` as-is; - `signal` — an `AbortSignal`, aborted when a newer call starts or the group is disposed; pass it to every request. A provider signals a failure by THROWING, never by returning `[]`: the rows are cleared, nothing is pruned, and `#empty` receives the `error` (`failed-text` is shown). Zero-argument providers keep working. Annotate the parameter `BbCheckboxGroupItemsContext` (`BbSwitchGroupItemsContext` on a switch group, the same shape). |
|
|
774
|
-
| `itemText` | `ItemAccessor<T, string> \| undefined` | `JSON.stringify(item)
|
|
775
|
-
| `itemValue` | `ItemAccessor<T> \| undefined` | `the whole item` | | Defines a path that returns a property of the object to use as value or a function that returns any value. |
|
|
767
|
+
| `itemText` | `ItemAccessor<T, string> \| undefined` | `own `label`, else `text`, else `JSON.stringify(item)`` | | Defines a path that returns a property of the object to use as text or a function that returns a string. Unset: own `label`, else `text` (`{ label, value }` needs no accessor). |
|
|
768
|
+
| `itemValue` | `ItemAccessor<T> \| undefined` | `own `value`, else the whole item` | | Defines a path that returns a property of the object to use as value or a function that returns any value. Unset: own `value`, even `null`. |
|
|
776
769
|
| `labelAlign` | `'top'` \| `'center'` \| `'bottom'` | | | Vertical position of the label block in a side-by-side row; not `labelPosition`, the horizontal one. Omitted, the label's first line meets the control's. |
|
|
777
770
|
| `layout` | `FieldLayout \| undefined` | | | How the label and the input sit together: `'vertical'`, `'horizontal'` (50/50), `'auto'`, `'label-fill'` (the label takes the free space, the input keeps its size), `'input-fill'` (the other way round), or a two-word ratio pattern like `'xx xxxxx'`. |
|
|
778
771
|
| `legend` | `string` | | yes | Text content of the legend. |
|
package/dist/ai/BbTable.md
CHANGED
|
@@ -376,7 +376,7 @@ plus `columnKey` (the raw column key) so a table-wide template can branch per
|
|
|
376
376
|
column. When both a per-column and the table-wide slot are provided for the
|
|
377
377
|
same side, the per-column one wins for that column — they never stack. Affixes
|
|
378
378
|
render even beside a full `#<key>:header` replacement (the same rule as
|
|
379
|
-
BbDropdown's `#<
|
|
379
|
+
BbDropdown's `#<value>:prepend/append`). The key always comes first, so a
|
|
380
380
|
column keyed `prepend` still owns `#prepend:header`, and `#header:prepend`
|
|
381
381
|
stays the table-wide slot.
|
|
382
382
|
|
|
@@ -648,7 +648,9 @@ const euro = (value: number) =>
|
|
|
648
648
|
```
|
|
649
649
|
|
|
650
650
|
`#tfoot` stays for footers that are not column-shaped (a note spanning the
|
|
651
|
-
table, a legend).
|
|
651
|
+
table, a legend). Its `role="row"` elements are rows of the table too: the
|
|
652
|
+
table gives each the next `aria-rowindex` after the body and counts them in
|
|
653
|
+
`aria-rowcount` (an `aria-rowindex` you write yourself is kept).
|
|
652
654
|
|
|
653
655
|
### Loading and empty states
|
|
654
656
|
|
|
@@ -2694,8 +2696,6 @@ rollback on failure, and overlay retirement inside the items function.
|
|
|
2694
2696
|
<BbSelectPopover
|
|
2695
2697
|
compact
|
|
2696
2698
|
disable-writing
|
|
2697
|
-
item-text="label"
|
|
2698
|
-
item-value="value"
|
|
2699
2699
|
:items="statuses"
|
|
2700
2700
|
:model-value="valueOf(item, 'status')"
|
|
2701
2701
|
width="170px"
|
|
@@ -3295,10 +3295,11 @@ reader.
|
|
|
3295
3295
|
|
|
3296
3296
|
### Config and platform
|
|
3297
3297
|
|
|
3298
|
-
- **Locale.** The plugin's `locale` (`
|
|
3298
|
+
- **Locale.** The plugin's `locale` (`en`, `it`, `de` or any other shipped locale) drives the built-in strings:
|
|
3299
3299
|
the empty text, the select-all label, the single-select header text, and
|
|
3300
|
-
|
|
3301
|
-
|
|
3300
|
+
each row's accessible selection label ("Select …" in `en`, "… auswählen" in
|
|
3301
|
+
`de`). Override the first three per table via `empty-text` /
|
|
3302
|
+
`select-all-label` / `select-text`, the row label via `accessible-label`.
|
|
3302
3303
|
- **`actions-text` is localized** like the other built-in strings (`it` →
|
|
3303
3304
|
`Azioni`, `en` → `Actions`). Seeing `Actions` in an Italian app means the
|
|
3304
3305
|
plugin is still on the default locale, which is `en` — set the plugin's
|
|
@@ -3649,8 +3650,8 @@ for a preset that fits any row type (never `<any>`), not an imported
|
|
|
3649
3650
|
- `loading-text` is `sr-only` — it is announced, never painted. The visible
|
|
3650
3651
|
loading signal is the skeleton (or your `#loading` slot). It defaults to the
|
|
3651
3652
|
localized `common.loadingText`, so an unset value still announces.
|
|
3652
|
-
- Row selection labels default to
|
|
3653
|
-
|
|
3653
|
+
- Row selection labels default to every cell's content inside the locale's
|
|
3654
|
+
"select" template (`Select {0}`, `{0} auswählen`). `accessible-label` overrides that per row — it is called
|
|
3654
3655
|
`(columns, item)` with the mapped cells (in **render** order — look them up
|
|
3655
3656
|
by `key`, never by position) and the raw record, and whatever it returns
|
|
3656
3657
|
becomes the checkbox's label.
|
|
@@ -3892,7 +3893,7 @@ States are listed in precedence order: when two are on at once and their entries
|
|
|
3892
3893
|
- `tbody` — scope: `object` — Replaces the content of the body row group (`.bb-table__body`). Use when you need full control over the body markup. Provide role-complete rows — `<div role="row">` holding one `<div role="cell">` per column — never a `<tr>`/`<td>`. A full-width cell spans with `grid-column: 1 / -1`.
|
|
3893
3894
|
- `tfoot` — scope: `{ columnCount: number; }` — Fills the footer row group (`.bb-table__foot`). Use when you need a footer. Provide role-complete rows — `<div role="row">` holding `<div role="cell">` elements — never a `<tr>`/`<td>`.
|
|
3894
3895
|
- `thead` — scope: `object` — Replaces the content of the header row group (`.bb-table__head`). Use when you need full control over the header markup. The table is a CSS grid, not a `<table>`: provide role-complete rows — `<div role="row">` holding one `<div role="columnheader">` per column — and never a `<tr>`/`<th>`. Rows are subgrid rows, so each cell lands on the matching column track.
|
|
3895
|
-
- `#<key>` (named from data) — scope: `object` — One column's body cell in every row, by the column `key` through `slotKey`. Scope: `{ item, value, content, selected, expanded, highlighted, classes, sortOrder, toggleSelected, toggleExpanded, toggleHighlighted, expandProps }`. Reserved
|
|
3896
|
+
- `#<key>` (named from data) — scope: `object` — One column's body cell in every row, by the column `key` through `slotKey`. Scope: `{ item, value, content, selected, expanded, highlighted, classes, sortOrder, toggleSelected, toggleExpanded, toggleHighlighted, expandProps }`. Reserved names (their slot is one of this component's own, so an item value or column key spelled like them is an error): `actions`, `empty`, `expand`, `loading`, `select`, `tbody`, `tfoot`, `thead`.
|
|
3896
3897
|
- `#<key>:header` (named from data) — scope: `object` — One column's header content, replacing its label and the built-in sort button. Scope: `{ label, items, sortable, sortOrder, toggleSort, hideColumn, classes }`.
|
|
3897
3898
|
- `#<key>:header:prepend` (named from data) — scope: `BbTableHeaderAffixSlotProps<Item>` — Content before one column's header, keeping the sort button; beats `header:prepend` (they never stack).
|
|
3898
3899
|
- `#<key>:header:append` (named from data) — scope: `BbTableHeaderAffixSlotProps<Item>` — Content after one column's header, keeping the sort button; beats `header:append` (they never stack).
|