bitboss-ui 3.0.0-beta.48 → 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 +115 -13
- package/dist/ai/BbAvatar.md +1 -1
- package/dist/ai/BbBreadcrumbs.md +65 -65
- package/dist/ai/BbButton.md +16 -5
- package/dist/ai/BbCheckbox.md +0 -2
- package/dist/ai/BbCheckboxGroup.md +13 -20
- 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 +4 -2
- package/dist/ai/BbNumberInput.md +88 -21
- package/dist/ai/BbPopover.md +29 -23
- 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 +106 -105
- package/dist/ai/BbTabsList.md +2 -2
- package/dist/ai/BbTabsPanels.md +1 -1
- package/dist/ai/BbTabsRoot.md +2 -2
- package/dist/ai/BbTooltip.md +24 -10
- package/dist/ai/BbTree.md +14 -11
- package/dist/ai/changelog.json +256 -5
- package/dist/ai/components.json +36 -34
- 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 +43 -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 +114 -17
- 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 +2 -2
- 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/BbBreadcrumbs.json +10 -6
- package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
- package/dist/ai/manifest/components/BbButton.json +1 -1
- package/dist/ai/manifest/components/BbCheckboxGroup.json +2 -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/BbNumberInput.json +6 -1
- package/dist/ai/manifest/components/BbNumberInput.tree.json +2 -1
- package/dist/ai/manifest/components/BbPopover.json +1 -0
- 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/BbSelectPopover.json +2 -2
- package/dist/ai/manifest/components/BbSwitchGroup.json +2 -2
- package/dist/ai/manifest/components/BbTabs.json +7 -6
- 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 +5 -4
- package/dist/ai/manifest/components/BbTooltip.json +1 -1
- package/dist/ai/manifest/index.json +2 -2
- package/dist/ai/manifest/meta.json +2 -0
- package/dist/ai/manifest/types.advanced.json +10 -9
- package/dist/ai/manifest/types.api.json +5 -4
- 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 +2 -2
- package/dist/ai/source/BbBadgeButton.md +5 -4
- 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 +71 -33
- 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/BbColorInput.md +10 -9
- package/dist/ai/source/BbConfirm.md +1 -1
- package/dist/ai/source/BbConfirmPortal.md +1 -1
- 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 +230 -158
- package/dist/ai/source/BbDropdownButton.md +19 -12
- package/dist/ai/source/BbDropdownGroup.md +126 -93
- package/dist/ai/source/BbForm.md +25 -1
- 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 +152 -8
- package/dist/ai/source/BbPopoverPortal.md +11 -0
- 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 +27 -23
- package/dist/ai/source/BbTabsList.md +26 -22
- package/dist/ai/source/BbTabsPanels.md +26 -22
- package/dist/ai/source/BbTabsRoot.md +25 -21
- 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 +54 -8
- 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 +6 -0
- 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 +84 -71
- package/dist/components/BbButton/toggleRoving.d.ts +6 -0
- package/dist/components/BbButton/toggleRoving.js +45 -0
- package/dist/components/BbButton/types.d.ts +4 -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/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +69 -69
- 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 +119 -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/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 -164
- package/dist/components/BbPopover/types.d.ts +11 -0
- 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 +25 -21
- 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 +102 -97
- package/dist/components/BbTooltip/tooltipWarmup.d.ts +23 -0
- package/dist/components/BbTooltip/tooltipWarmup.js +7 -0
- package/dist/components/BbTooltip/types.d.ts +7 -2
- 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/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/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 +1 -1
- package/dist/index.js +4 -4
- package/dist/llms-full.txt +1785 -1637
- package/dist/llms-medium.txt +74 -46
- package/dist/llms.txt +7 -7
- package/dist/locale-blueprint.json +16 -13
- package/dist/styles.css +2 -2
- package/dist/types/ptComponentMap.d.ts +1 -1
- 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 +12 -4
- package/scripts/lib/eslint-plugin.d.ts +5 -1
- package/scripts/lib/eslint-plugin.mjs +187 -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/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/validate-bb-markup.mjs +123 -56
- package/dist/i18n/index.js +0 -27
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
],
|
|
9
9
|
"nodes": [
|
|
10
10
|
{"name":"BbButton","kind":"public","vocabulary":"BbButton","bindings":[{"part":"root","target":"BbBaseButton"},{"part":"spinner","target":"BbSpinner"},{"part":"icon","target":"BbIcon"},{"part":"text","target":"span.bb-button__text"}],"cssProps":[{"name":"--h-xs","documented":true,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--icon-size-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--px-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--fs-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--r-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--gap-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--h-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--icon-size-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--px-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--fs-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--r-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--gap-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--h-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--icon-size-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--px-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--fs-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--r-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--gap-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--h-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--icon-size-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--px-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--fs-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--r-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--gap-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--h-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--icon-size-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--px-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--fs-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--r-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--gap-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--h-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--icon-size-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--px-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--fs-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--r-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--gap-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--h","documented":true,"readBy":["bb-button","bb-button--icon"]},{"name":"--icon-size","documented":true,"readBy":["bb-button__text","bb-spinner","bb-button__icon","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--px","documented":true,"readBy":["bb-button","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--fs","documented":true,"readBy":["bb-button"]},{"name":"--r","documented":true,"readBy":["bb-button"]},{"name":"--gap","documented":true,"readBy":["bb-button","bb-button__text","bb-spinner"]},{"name":"--bg","documented":true,"readBy":["bb-button"]},{"name":"--bg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg","documented":true,"readBy":["bb-button"]},{"name":"--border-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-size","documented":true,"readBy":["bb-button"]},{"name":"--bw","documented":true,"readBy":["bb-button"]},{"name":"--fg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--fg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--border-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--opacity-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--elev-tier","documented":true,"readBy":["bb-button--primary","bb-button--secondary","bb-button--outline","bb-button--destructive"]},{"name":"--elev","documented":true,"readBy":["bb-button"]}],"children":[{"name":"BbIcon","kind":"public","cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"BbBaseButton","kind":"public","vocabulary":"BbBaseButton","bindings":[{"part":"root","target":"RouterComponent"},{"part":"root","target":"a"},{"part":"root","target":"component"}],"children":[{"name":"RouterComponent","kind":"internal"}]},{"name":"BbSpinner","kind":"public","children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]}]}]},
|
|
11
|
-
{"name":"BbDropdown","kind":"public","vocabulary":"BbDropdown","bindings":[{"part":"panel","target":"CommonPopover"},{"part":"root","target":"CommonPopover"},{"part":"header","target":"div.bb-dropdown__header"},{"part":"list","target":"span.bb-dropdown__list"},{"part":"footer","target":"div.bb-dropdown__footer"}],"cssProps":[{"name":"--bg","documented":false,"readBy":["bb-dropdown__group-search"]},{"name":"--menu-inset","documented":true,"readBy":["bb-common-popover__bubble","bb-dropdown__group-search","bb-dropdown__list","bb-dropdown__placeholder--failed","bb-dropdown__divider"]}],"children":[{"name":"CommonPopover","kind":"internal"},{"name":"BbDropdownList","kind":"internal","children":[{"name":"BbBaseButton","kind":"public","repeated":true},{"name":"BbBadge","kind":"public","vocabulary":"BbBadge","bindings":[{"part":"spinner","target":"BbSpinner"},{"part":"icon","target":"BbIcon"},{"part":"clear","target":"button.bb-badge__clear"}],"cssProps":[{"name":"--bg","documented":true,"readBy":["bb-badge"]},{"name":"--fg","documented":true,"readBy":["bb-badge","bb-badge__clear"]},{"name":"--bw","documented":true,"readBy":["bb-badge","bb-badge__clear"]},{"name":"--border-color","documented":false,"readBy":["bb-badge"]},{"name":"--ring-color","documented":true,"readBy":["bb-badge","bb-badge__clear","bb-badge__body","bb-badge--highlighted"]},{"name":"--ring-size","documented":true,"readBy":["bb-badge","bb-badge__clear","bb-badge__body","bb-badge--highlighted"]},{"name":"--min-size-md","documented":true,"readBy":["bb-badge"]},{"name":"--min-size","documented":true,"readBy":["bb-badge"]},{"name":"--elev","documented":true,"readBy":["bb-badge","bb-badge__clear","bb-badge__body","bb-badge--highlighted"]},{"name":"--r","documented":true,"readBy":["bb-badge","bb-badge__body","bb-badge__trailing","bb-badge__clear"]},{"name":"--fs","documented":true,"readBy":["bb-badge"]},{"name":"--icon-size","documented":true,"readBy":["bb-badge__icon","bb-badge__prepend-icon","bb-badge__append-icon","bb-badge__clear"]},{"name":"--gap","documented":true,"readBy":["bb-badge","bb-badge__body","bb-badge__trailing","bb-badge__clear"]},{"name":"--px","documented":true,"readBy":["bb-badge","bb-badge--icon","bb-badge__prepend-icon","bb-badge__append-icon","bb-badge--clearable"]},{"name":"--clear-size","documented":true,"readBy":["bb-badge__clear","bb-icon"]},{"name":"--bg-disabled","documented":true,"readBy":["bb-badge__body","bb-base-button--disabled","bb-badge--loading"]},{"name":"--fg-disabled","documented":true,"readBy":["bb-badge__body","bb-base-button--disabled","bb-badge--loading"]},{"name":"--border-disabled","documented":true,"readBy":["bb-badge__body","bb-base-button--disabled","bb-badge--loading"]},{"name":"--pad-left","documented":true,"readBy":["bb-badge__body"]},{"name":"--pad-right","documented":false,"readBy":["bb-badge__body","bb-badge__clear"]},{"name":"--size","documented":false}],"children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"BbSpinner","kind":"public","repeated":true},{"name":"BadgeBodyContent","kind":"internal","children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"BbSpinner","kind":"public","repeated":true}]}]},{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"ErrorIcon","kind":"internal","cssProps":[{"name":"--accent","documented":false,"readBy":["bb-error-icon"]}],"children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]}]},{"name":"CommonPopover","kind":"internal","repeated":true},{"name":"BbDropdownList","kind":"internal","repeated":true}]},{"name":"AdaptiveDropdown","kind":"internal","forwards":[{"to":"BbOffCanvas","mapping":"{ header: 'header', footer: 'footer', panel: 'root', sheet: 'root' }"}],"children":[{"name":"BbOffCanvas","kind":"public","vocabulary":"BbOffCanvas","bindings":[{"part":"header","target":"div.bb-offcanvas__header"},{"part":"title","target":"span.bb-offcanvas__title"},{"part":"description","target":"p.bb-offcanvas__description"},{"part":"close","target":"CloseButton"},{"part":"content","target":"div.bb-offcanvas__content"},{"part":"footer","target":"div.bb-offcanvas__footer"}],"cssProps":[{"name":"--translate-x","documented":false,"readBy":["bb-offcanvas"]},{"name":"--translate-y","documented":false,"readBy":["bb-offcanvas"]},{"name":"--translate","documented":false,"readBy":["bb-offcanvas"]},{"name":"--stack-x","documented":true,"readBy":["bb-offcanvas"]},{"name":"--stack-y","documented":false,"readBy":["bb-offcanvas"]},{"name":"--stack-fill","documented":true,"readBy":["bb-offcanvas","bb-offcanvas--right","bb-offcanvas--left","bb-offcanvas--top","bb-offcanvas--bottom"]},{"name":"--stack-transition-duration","documented":true,"readBy":["bb-offcanvas"]},{"name":"--px","documented":true,"readBy":["bb-offcanvas__header","bb-close-button","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--py","documented":false,"readBy":["bb-offcanvas__footer","bb-offcanvas__content","bb-offcanvas__header","bb-close-button"]},{"name":"--handle-w","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--handle-h","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--handle-bg","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--transition-timing-function","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--open"]},{"name":"--bg","documented":false,"readBy":["bb-offcanvas"]},{"name":"--fg","documented":false,"readBy":["bb-offcanvas"]},{"name":"--safe-top","documented":true,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--right","bb-offcanvas--top","bb-offcanvas--fullscreen"]},{"name":"--safe-right","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--right","bb-offcanvas--top","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--safe-bottom","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--right","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--safe-left","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--top","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--inset-top","documented":false,"readBy":["bb-offcanvas__content","bb-offcanvas__header"]},{"name":"--inset-right","documented":false,"readBy":["bb-offcanvas__header","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--inset-bottom","documented":false,"readBy":["bb-offcanvas__footer","bb-offcanvas__content"]},{"name":"--inset-left","documented":false,"readBy":["bb-offcanvas__header","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--close-size","documented":true,"readBy":["bb-close-button"]}],"children":[{"name":"CloseButton","kind":"internal","cssProps":[{"name":"--size","documented":true,"readBy":["bb-close-button"]},{"name":"--p","documented":true,"readBy":["bb-close-button"]}]}]},{"name":"BbSmoothHeight","kind":"public"},{"name":"BbButton","kind":"public","repeated":true,"cssProps":[{"name":"--h-xs","documented":true,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--icon-size-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--px-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--fs-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--r-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--gap-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--h-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--icon-size-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--px-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--fs-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--r-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--gap-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--h-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--icon-size-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--px-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--fs-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--r-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--gap-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--h-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--icon-size-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--px-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--fs-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--r-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--gap-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--h-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--icon-size-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--px-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--fs-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--r-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--gap-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--h-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--icon-size-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--px-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--fs-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--r-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--gap-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--h","documented":true,"readBy":["bb-button","bb-button--icon"]},{"name":"--icon-size","documented":true,"readBy":["bb-button__text","bb-spinner","bb-button__icon","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--px","documented":true,"readBy":["bb-button","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--fs","documented":true,"readBy":["bb-button"]},{"name":"--r","documented":true,"readBy":["bb-button"]},{"name":"--gap","documented":true,"readBy":["bb-button","bb-button__text","bb-spinner"]},{"name":"--bg","documented":true,"readBy":["bb-button"]},{"name":"--bg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg","documented":true,"readBy":["bb-button"]},{"name":"--border-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-size","documented":true,"readBy":["bb-button"]},{"name":"--bw","documented":true,"readBy":["bb-button"]},{"name":"--fg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--fg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--border-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--opacity-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--elev-tier","documented":true,"readBy":["bb-button--primary","bb-button--secondary","bb-button--outline","bb-button--destructive"]},{"name":"--elev","documented":true,"readBy":["bb-button"]}]},{"name":"BbDropdownList","kind":"internal","repeated":true}]},{"name":"DropdownPipelineResolver","kind":"internal"}]}
|
|
11
|
+
{"name":"BbDropdown","kind":"public","vocabulary":"BbDropdown","bindings":[{"part":"panel","target":"CommonPopover"},{"part":"root","target":"CommonPopover"},{"part":"header","target":"div.bb-dropdown__header"},{"part":"list","target":"span.bb-dropdown__list"},{"part":"footer","target":"div.bb-dropdown__footer"}],"cssProps":[{"name":"--bg","documented":false,"readBy":["bb-dropdown__group-search"]},{"name":"--menu-inset","documented":true,"readBy":["bb-common-popover__bubble","bb-dropdown__group-search","bb-dropdown__list","bb-dropdown__placeholder--failed","bb-dropdown__divider"]}],"children":[{"name":"CommonPopover","kind":"internal"},{"name":"BbDropdownList","kind":"internal","children":[{"name":"BbBadge","kind":"public","vocabulary":"BbBadge","bindings":[{"part":"spinner","target":"BbSpinner"},{"part":"icon","target":"BbIcon"},{"part":"clear","target":"button.bb-badge__clear"}],"cssProps":[{"name":"--bg","documented":true,"readBy":["bb-badge"]},{"name":"--fg","documented":true,"readBy":["bb-badge","bb-badge__clear"]},{"name":"--bw","documented":true,"readBy":["bb-badge","bb-badge__clear"]},{"name":"--border-color","documented":false,"readBy":["bb-badge"]},{"name":"--ring-color","documented":true,"readBy":["bb-badge","bb-badge__clear","bb-badge__body","bb-badge--highlighted"]},{"name":"--ring-size","documented":true,"readBy":["bb-badge","bb-badge__clear","bb-badge__body","bb-badge--highlighted"]},{"name":"--min-size-md","documented":true,"readBy":["bb-badge"]},{"name":"--min-size","documented":true,"readBy":["bb-badge"]},{"name":"--elev","documented":true,"readBy":["bb-badge","bb-badge__clear","bb-badge__body","bb-badge--highlighted"]},{"name":"--r","documented":true,"readBy":["bb-badge","bb-badge__body","bb-badge__trailing","bb-badge__clear"]},{"name":"--fs","documented":true,"readBy":["bb-badge"]},{"name":"--icon-size","documented":true,"readBy":["bb-badge__icon","bb-badge__prepend-icon","bb-badge__append-icon","bb-badge__clear"]},{"name":"--gap","documented":true,"readBy":["bb-badge","bb-badge__body","bb-badge__trailing","bb-badge__clear"]},{"name":"--px","documented":true,"readBy":["bb-badge","bb-badge--icon","bb-badge__prepend-icon","bb-badge__append-icon","bb-badge--clearable"]},{"name":"--clear-size","documented":true,"readBy":["bb-badge__clear","bb-icon"]},{"name":"--bg-disabled","documented":true,"readBy":["bb-badge__body","bb-base-button--disabled","bb-badge--loading"]},{"name":"--fg-disabled","documented":true,"readBy":["bb-badge__body","bb-base-button--disabled","bb-badge--loading"]},{"name":"--border-disabled","documented":true,"readBy":["bb-badge__body","bb-base-button--disabled","bb-badge--loading"]},{"name":"--pad-left","documented":true,"readBy":["bb-badge__body"]},{"name":"--pad-right","documented":false,"readBy":["bb-badge__body","bb-badge__clear"]},{"name":"--size","documented":false}],"children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"BbSpinner","kind":"public","repeated":true},{"name":"BadgeBodyContent","kind":"internal","children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"BbSpinner","kind":"public","repeated":true}]}]},{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]},{"name":"ErrorIcon","kind":"internal","cssProps":[{"name":"--accent","documented":false,"readBy":["bb-error-icon"]}],"children":[{"name":"BbIcon","kind":"public","repeated":true,"cssProps":[{"name":"--w","documented":true,"readBy":["bb-icon"]},{"name":"--size","documented":false,"readBy":["bb-icon"]}]}]},{"name":"CommonPopover","kind":"internal","repeated":true},{"name":"BbDropdownList","kind":"internal","repeated":true}]},{"name":"AdaptiveDropdown","kind":"internal","forwards":[{"to":"BbOffCanvas","mapping":"{ header: 'header', footer: 'footer', panel: 'root', sheet: 'root' }"}],"children":[{"name":"BbOffCanvas","kind":"public","vocabulary":"BbOffCanvas","bindings":[{"part":"header","target":"div.bb-offcanvas__header"},{"part":"title","target":"span.bb-offcanvas__title"},{"part":"description","target":"p.bb-offcanvas__description"},{"part":"close","target":"CloseButton"},{"part":"content","target":"div.bb-offcanvas__content"},{"part":"footer","target":"div.bb-offcanvas__footer"}],"cssProps":[{"name":"--translate-x","documented":false,"readBy":["bb-offcanvas"]},{"name":"--translate-y","documented":false,"readBy":["bb-offcanvas"]},{"name":"--translate","documented":false,"readBy":["bb-offcanvas"]},{"name":"--stack-x","documented":true,"readBy":["bb-offcanvas"]},{"name":"--stack-y","documented":false,"readBy":["bb-offcanvas"]},{"name":"--stack-fill","documented":true,"readBy":["bb-offcanvas","bb-offcanvas--right","bb-offcanvas--left","bb-offcanvas--top","bb-offcanvas--bottom"]},{"name":"--stack-transition-duration","documented":true,"readBy":["bb-offcanvas"]},{"name":"--px","documented":true,"readBy":["bb-offcanvas__header","bb-close-button","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--py","documented":false,"readBy":["bb-offcanvas__footer","bb-offcanvas__content","bb-offcanvas__header","bb-close-button"]},{"name":"--handle-w","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--handle-h","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--handle-bg","documented":true,"readBy":["bb-offcanvas__handle"]},{"name":"--transition-timing-function","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--open"]},{"name":"--bg","documented":false,"readBy":["bb-offcanvas"]},{"name":"--fg","documented":false,"readBy":["bb-offcanvas"]},{"name":"--safe-top","documented":true,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--right","bb-offcanvas--top","bb-offcanvas--fullscreen"]},{"name":"--safe-right","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--right","bb-offcanvas--top","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--safe-bottom","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--right","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--safe-left","documented":false,"readBy":["bb-offcanvas","bb-offcanvas--left","bb-offcanvas--top","bb-offcanvas--bottom","bb-offcanvas--fullscreen"]},{"name":"--inset-top","documented":false,"readBy":["bb-offcanvas__content","bb-offcanvas__header"]},{"name":"--inset-right","documented":false,"readBy":["bb-offcanvas__header","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--inset-bottom","documented":false,"readBy":["bb-offcanvas__footer","bb-offcanvas__content"]},{"name":"--inset-left","documented":false,"readBy":["bb-offcanvas__header","bb-offcanvas__content","bb-offcanvas__footer"]},{"name":"--close-size","documented":true,"readBy":["bb-close-button"]}],"children":[{"name":"CloseButton","kind":"internal","cssProps":[{"name":"--size","documented":true,"readBy":["bb-close-button"]},{"name":"--p","documented":true,"readBy":["bb-close-button"]}]}]},{"name":"BbSmoothHeight","kind":"public"},{"name":"BbButton","kind":"public","repeated":true,"cssProps":[{"name":"--h-xs","documented":true,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--icon-size-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--px-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--fs-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--r-xs","documented":false,"readBy":["bb-button","bb-button--xs"]},{"name":"--gap-xs","documented":false,"readBy":["bb-button","bb-button--xs","bb-button--sm-xs","bb-button--md-xs","bb-button--lg-xs","bb-button--xl-xs","bb-button--2xl-xs"]},{"name":"--h-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--icon-size-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--px-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--fs-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--r-sm","documented":false,"readBy":["bb-button","bb-button--sm"]},{"name":"--gap-sm","documented":false,"readBy":["bb-button","bb-button--sm","bb-button--sm-sm","bb-button--md-sm","bb-button--lg-sm","bb-button--xl-sm","bb-button--2xl-sm"]},{"name":"--h-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--icon-size-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--px-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--fs-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--r-md","documented":false,"readBy":["bb-button","bb-button--md"]},{"name":"--gap-md","documented":false,"readBy":["bb-button","bb-button--md","bb-button--sm-md","bb-button--md-md","bb-button--lg-md","bb-button--xl-md","bb-button--2xl-md"]},{"name":"--h-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--icon-size-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--px-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--fs-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--r-lg","documented":false,"readBy":["bb-button","bb-button--lg"]},{"name":"--gap-lg","documented":false,"readBy":["bb-button","bb-button--lg","bb-button--sm-lg","bb-button--md-lg","bb-button--lg-lg","bb-button--xl-lg","bb-button--2xl-lg"]},{"name":"--h-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--icon-size-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--px-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--fs-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--r-xl","documented":false,"readBy":["bb-button","bb-button--xl"]},{"name":"--gap-xl","documented":false,"readBy":["bb-button","bb-button--xl","bb-button--sm-xl","bb-button--md-xl","bb-button--lg-xl","bb-button--xl-xl","bb-button--2xl-xl"]},{"name":"--h-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--icon-size-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--px-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--fs-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--r-2xl","documented":false,"readBy":["bb-button","bb-button--2xl"]},{"name":"--gap-2xl","documented":false,"readBy":["bb-button","bb-button--2xl","bb-button--sm-2xl","bb-button--md-2xl","bb-button--lg-2xl","bb-button--xl-2xl","bb-button--2xl-2xl"]},{"name":"--h","documented":true,"readBy":["bb-button","bb-button--icon"]},{"name":"--icon-size","documented":true,"readBy":["bb-button__text","bb-spinner","bb-button__icon","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--px","documented":true,"readBy":["bb-button","bb-button__prepend-icon","bb-button__append-icon"]},{"name":"--fs","documented":true,"readBy":["bb-button"]},{"name":"--r","documented":true,"readBy":["bb-button"]},{"name":"--gap","documented":true,"readBy":["bb-button","bb-button__text","bb-spinner"]},{"name":"--bg","documented":true,"readBy":["bb-button"]},{"name":"--bg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg","documented":true,"readBy":["bb-button"]},{"name":"--border-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-color","documented":true,"readBy":["bb-button"]},{"name":"--ring-size","documented":true,"readBy":["bb-button"]},{"name":"--bw","documented":true,"readBy":["bb-button"]},{"name":"--fg-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-hover","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--fg-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--border-pressed","documented":true,"readBy":["bb-button","bb-base-button--disabled"]},{"name":"--bg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--fg-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--border-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--opacity-disabled","documented":true,"readBy":["bb-button","bb-base-button--disabled","bb-button--loading"]},{"name":"--elev-tier","documented":true,"readBy":["bb-button--primary","bb-button--secondary","bb-button--outline","bb-button--destructive"]},{"name":"--elev","documented":true,"readBy":["bb-button"]}]},{"name":"BbDropdownList","kind":"internal","repeated":true}]},{"name":"DropdownPipelineResolver","kind":"internal"}]}
|
|
12
12
|
]
|
|
13
13
|
},
|
|
14
14
|
"css": {
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
"contract": "ai/BbDropdownGroup.md",
|
|
8
8
|
"source": "ai/source/BbDropdownGroup.md",
|
|
9
9
|
"props": [
|
|
10
|
-
{"name":"id","type":"string","required":true,"description":"Identifier of the group to bind to — must match the `
|
|
10
|
+
{"name":"id","type":"string","required":true,"description":"Identifier of the group to bind to — must match the `id` of a group\ndeclared in the host `BbDropdown`'s `items`."},
|
|
11
11
|
{"name":"modelValue","type":"any","description":"The group's selection: one value for a single group, an array for a\n`multiple` one. Read by the owning BbDropdown through the group's `id`."}
|
|
12
12
|
],
|
|
13
13
|
"events": [
|
|
14
|
-
{"name":"item:selected","signature":"(value: any): void","description":"The user picked a row, at the click, a pick you then refuse included —\nwith the
|
|
14
|
+
{"name":"item:selected","signature":"(value: any): void","description":"The user picked a row, at the click, a pick you then refuse included —\nwith the row's value (its `item-value` for pipeline groups, else its\n`value`), symmetric with `BbTable`. Your own `v-model` changes fire none."},
|
|
15
15
|
{"name":"item:unselected","signature":"(value: any): void","description":"The user unpicked a row (or a single pick replaced it), with its resolved value."},
|
|
16
16
|
{"name":"update:modelValue","signature":"(value: any): void","description":"The value a user change asks for (a pick, a chip ×, a coherence prune).\nWith a listener the group is controlled: the rows tick when you write the\nvalue, and ignoring it leaves them as they are."}
|
|
17
17
|
],
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
"contract": "ai/BbForm.md",
|
|
8
8
|
"source": "ai/source/BbForm.md",
|
|
9
9
|
"props": [
|
|
10
|
+
{"name":"disableSubmitLock","type":"boolean | undefined","default":"false","description":"Keep the fields editable while a save runs. By default, while a\n`@submit` that returned a promise is pending, every field joined to the\nform is read-only (never disabled: values stay readable and focusable)\nand every `type=\"submit\"` BbButton inside the form shows its spinner;\nboth end when the promise settles. A `@submit` that returns nothing\nnever locks."},
|
|
10
11
|
{"name":"fieldErrors","type":"Record<string, unknown> | null | undefined","description":"A server's validation errors, shown on the fields they name, for as long\nas they are in the object: `form.errors` from Inertia's `useForm()`,\n`$page.props.errors`, a Laravel 422 body you kept in a `ref`. Keys are\nfield paths (`email`, `address.city`, `address[city]`, `lines.0.qty`);\na value is a message or a list of them; a nested object reads as dot\npaths. `null`, `undefined` and anything that is not a message show\nnothing. A key no field on the form has is in `unmatchedErrors`.\n\nThe page owns them: editing the field does not hide its message, the\nnext object you pass does. They never block a submit, and a field's own\nrule errors show first. When new messages arrive after a submit, the\nfirst field that has one takes focus. For a one-off message the form\ndrops once the user edits the field, call `setErrors` instead."},
|
|
11
12
|
{"name":"id","type":"string | undefined","description":"Explicit id, so anything outside the form can read and drive it through\n`useBbFormContext(id)` — a dialog footer's submit button, a page toolbar,\na leave guard. It is also the `<form>`'s own id, so a native\n`<button form=\"id\" type=\"submit\">` outside it submits it. Omit it when the form is self-contained: the slot scope\nalready carries the same state for chrome that lives inside."},
|
|
12
13
|
{"name":"keepValuesOnUnmount","type":"boolean | Ref<boolean, boolean> | undefined","description":"Keep a field's value (and its place in `@submit`) when it unmounts —\nthe `v-if` wizard step you left, a collapsed section. Off, an unmounted\nfield drops out of the values."},
|
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
{"name":"autofocus","type":"Booleanish | undefined","description":"Sets autofocus on page load."},
|
|
13
13
|
{"name":"clearable","type":"boolean | undefined","default":"false","description":"Displays a clear button when the input has a value and is being interacted with."},
|
|
14
14
|
{"name":"compact","type":"boolean | undefined","default":"false","description":"Compact density. Swaps `--bb-input-h`, `--bb-input-py` and\n`--bb-label-spacing-y` for their `-compact` twins on the field, so a\n`--bb-input-h` you set on the component is ignored while `compact` is on:\nsize a compact field with `--bb-input-h-compact` (and\n`--bb-input-py-compact`) instead."},
|
|
15
|
+
{"name":"currency","type":"string | undefined","description":"An ISO 4217 code (`'EUR'`, `'USD'`, `'JPY'`): the field shows the amount\nthe locale's way, symbol included (`1.234,56 €` in Italian, `$1,234.56`\nin English), inside the text, so `#prefix` / `#suffix` stay free. The\nmodel is the number (`1234.56`). The decimals default to the currency's\nown; `minPrecision` / `maxPrecision` win when set. One or the other with\n`unit`."},
|
|
15
16
|
{"name":"description","type":"string | undefined","description":"Descriptive text displayed below the label and above the input. Unlike the hint it is always\nvisible, and it is linked to the input via `aria-describedby` (after any\n`errors` / `warnings`, before the `hint`)."},
|
|
16
17
|
{"name":"disabled","type":"boolean | undefined","default":"false","description":"Disables the component."},
|
|
18
|
+
{"name":"disableFormatting","type":"boolean | undefined","default":"false","description":"Shows the number as typed, with a period decimal and no grouping — the\nfield before Q60.25: no locale display, `name` on the visible input.\nWithout it the field shows the number the locale's way while the user\ntypes (`10.005,6` in Italian), groups it for them, and posts the raw value\n(`10005.6`) through a hidden input carrying `name`."},
|
|
17
19
|
{"name":"errors","type":"string | string[] | undefined","description":"Can be a string or an array of string containing the messages to display.\nThey render in an `aria-live=\"polite\"` region (announced when they appear)\nand, while the list is non-empty, are referenced FIRST from the control's\n`aria-describedby`, so the reason the field is invalid is re-read whenever\nthe control regains focus."},
|
|
18
20
|
{"name":"formless","type":"boolean | undefined","default":"false","description":"Keep this control out of the enclosing `BbForm` entirely: not submitted,\nnot dirty, not reset, not validated. For a control that is not form data\n(a filter, a \"show advanced\" switch)."},
|
|
19
21
|
{"name":"hasErrors","type":"boolean | undefined","default":"false","description":"Define if the component should be in an error state.\nIt usually attaches a CSS class for styling purposes."},
|
|
@@ -29,8 +31,9 @@
|
|
|
29
31
|
{"name":"layout","type":"FieldLayout | undefined","description":"How the label and the input sit together: `'vertical'`, `'horizontal'` (50/50),\n`'auto'`, `'label-fill'` (the label takes the free space, the input keeps\nits size), `'input-fill'` (the other way round), or a two-word ratio\npattern like `'xx xxxxx'`."},
|
|
30
32
|
{"name":"loading","type":"boolean | undefined","default":"false","description":"Sets the component in a loading state, usually triggering some visual styles."},
|
|
31
33
|
{"name":"max","type":"number | undefined","default":"Number.MAX_SAFE_INTEGER","description":"Maximum value cap."},
|
|
32
|
-
{"name":"maxPrecision","type":"number | undefined","default":"8","description":"Maximum precision of the number."},
|
|
34
|
+
{"name":"maxPrecision","type":"number | undefined","default":"8","description":"Maximum precision of the number: fraction digits past it are refused as\ntyped (never rounded). With `currency`, the currency's own digits (`2`\nfor EUR, `0` for JPY, `3` for KWD), or `minPrecision` when that is larger."},
|
|
33
35
|
{"name":"min","type":"number | undefined","default":"Number.MIN_SAFE_INTEGER","description":"Minimum value cap. Applied on blur and on Enter (before a surrounding\nform submits), not while typing, so a value above a `min` greater than 1\ncan be typed digit by digit."},
|
|
36
|
+
{"name":"minPrecision","type":"number | undefined","default":"0","description":"Fraction digits always shown (`2`: `1` shows `1,00`, `1,5` shows `1,50`),\nalso while typing, where the padding zeros are placeholders the user types\nover. The model stays the number (`1.5`). A `minPrecision` above\n`maxPrecision` gives way to it. Applies with `disableFormatting` too\n(the padding only, period decimal). With `currency`, the currency's own\ndigits (`2` for EUR, `0` for JPY)."},
|
|
34
37
|
{"name":"modelValue","type":"string | number | null | undefined","default":"null","description":"Used by v-model."},
|
|
35
38
|
{"name":"name","type":"string | undefined","description":"Defines the name of the input."},
|
|
36
39
|
{"name":"persistentHint","type":"boolean | undefined","default":"false","description":"Keeps the hint displayed."},
|
|
@@ -42,6 +45,7 @@
|
|
|
42
45
|
{"name":"reverse","type":"boolean | undefined","default":"false","description":"Reverses the layout. Applicable in every direction the order of the label and the input is swapped."},
|
|
43
46
|
{"name":"rules","type":"RuleExpression<string | number | null>","description":"vee-validate rules for this field. Only inside a `BbForm`."},
|
|
44
47
|
{"name":"step","type":"number | undefined","default":"1","description":"Incremental unit used by ArrowUp / ArrowDown and by the `increase` and `decrease` functions the slots receive.\nIt is NOT applied to manual input as a step of 5 would prevent the user from inserting a value like `115` because of rounding down."},
|
|
48
|
+
{"name":"unit","type":"BbNumberUnit | undefined","description":"A unit `Intl.NumberFormat` knows (`'kilogram'`, `'kilometer-per-hour'`,\n`'celsius'`, `'percent'`; a typo is a type error): the field shows it\nthe locale's way inside the text (`20 kg`, `15 %`). The model is the number you see: `unit=\"percent\"`\nshowing `15 %` holds `15`, not `0.15`. One or the other with `currency`\n(set both and `currency` wins)."},
|
|
45
49
|
{"name":"validationLabel","type":"string | undefined","description":"The field's name in validation messages (`{field}`): \"Email is not\nvalid\". Defaults to the `label` (or `legend`), then \"This field\"; the\nfield's `name` never shows. Set it when the label is not a good noun for\na sentence (an icon-only label, a question) or is hidden. Only inside a\n`BbForm`."},
|
|
46
50
|
{"name":"validationMode","type":"ValidationMode | undefined","values":["aggressive","balanced","lazy","submit-only","submit-live"],"description":"When this field checks itself while the user works: `aggressive` (every\nchange), `balanced` (on leave, then every change while it shows an\nerror), `lazy` (on leave only), `submit-only` (on submit only) or\n`submit-live` (on submit, then every change while it shows an error).\n\"Leave\" is blur for a text-like control, and focus leaving the whole\ncontrol for a picker or a group; a checkbox or switch commits on click.\nUnset, the enclosing `BbForm`'s `validation-mode` applies, then the app's\n`formControls.validationMode` (`'balanced'`). Only inside a `BbForm`."},
|
|
47
51
|
{"name":"variant","type":"InputVariantType | undefined","default":"'outline'","values":["outline","secondary","none","ghost"],"description":"Visual variant of the field box — the same names and tokens as the\n`BbButton` variants. Colours only: height, padding and border width are\nidentical across variants, so a form never reflows when one changes.\n`'ghost'` has no border in any state (errors and warnings show through\nthe icon and the messages); every variant keeps the focus ring.\nRegister extra names with the plugin's `inputVariants` option.\n\n`'none'` is a blank starting point: the field keeps its structure and\nbehaviour but takes no look, so your own classes don't fight a built-in\none. You then own hover, focus, disabled and the error / warning states.\nFine for a one-off; keep inline styling short, and register a real\nvariant (`inputVariants`) when the look recurs."},
|
|
@@ -116,6 +120,7 @@
|
|
|
116
120
|
{"name":"validateOn","new":"validationMode","hint":"an array of events became one mode (`aggressive` | `balanced` | `lazy` | `submit-only` | `submit-live`). The old defaults (`['blur']`, `['inactive']`, a toggle's `['update:modelValue', 'change', 'blur']`) are `balanced`, the new default: delete the prop. A text field on `['update:modelValue']` is `validation-mode=\"aggressive\"`. Set it once on `<BbForm validation-mode>` instead of per field","since":"3.0.0-beta.41","migration":"ai/guides/migration/v2-to-v3.md","silent":true,"fix":{"kind":"manual"}}
|
|
117
121
|
],
|
|
118
122
|
"types": [
|
|
123
|
+
{"name":"BbNumberUnit","usedAs":["prop unit"],"definition":"type BbNumberUnit = BbNumberSimpleUnit | `${string}-per-${string}`;"},
|
|
119
124
|
{"name":"FieldLayout","usedAs":["prop layout"],"definition":"type FieldLayout = 'auto' | 'horizontal' | 'vertical' | 'label-fill' | 'input-fill' | `${string} ${string}`;"},
|
|
120
125
|
{"name":"InputVariantType","usedAs":["prop variant"],"definition":"type InputVariantType = InputVariantFromRegistry | 'none';","values":["outline","secondary","ghost","none"],"extensibleVia":"InputVariantRegistry"},
|
|
121
126
|
{"name":"ValidationMode","usedAs":["prop validationMode"],"definition":"type ValidationMode = 'aggressive' | 'balanced' | 'lazy' | 'submit-only' | 'submit-live';","values":["aggressive","balanced","lazy","submit-only","submit-live"]}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
"tree": {
|
|
4
4
|
"bindings": [
|
|
5
5
|
{"part":"controlAttrs","target":"input.bb-number-input__input"},
|
|
6
|
-
{"part":"input","target":"input.bb-number-input__input"}
|
|
6
|
+
{"part":"input","target":"input.bb-number-input__input"},
|
|
7
|
+
{"part":"controlAttrs","target":"input"}
|
|
7
8
|
],
|
|
8
9
|
"nodes": [
|
|
9
10
|
{"name":"CommonField","kind":"internal","vocabulary":"BbNumberInput","bindings":[{"part":"root","target":"div.bb-field"},{"part":"label","target":"component"},{"part":"description","target":"span.bb-field__description"},{"part":"hint","target":"span.bb-field__hint"},{"part":"counter","target":"span.bb-field__counter"},{"part":"message","target":"div.bb-field__message"}],"cssProps":[{"name":"--ctrl-line","documented":true,"readBy":["bb-field__label","bb-field__input-wrapper"]}],"children":[{"name":"BbAsterisk","kind":"public"}]},
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
{"name":"eager","type":"boolean | undefined","default":"false","description":"Renders the panel's content at mount instead of on the first open\n(the phone sheet's too)."},
|
|
15
15
|
{"name":"focusTarget","type":"string | undefined","description":"Selector for the element that receives focus after opening.\nDefaults to the first focusable element inside the popover."},
|
|
16
16
|
{"name":"id","type":"string | undefined","description":"The activator's id (the panel is `bbp_<id>` and is labelled by it).\nGenerated when omitted."},
|
|
17
|
+
{"name":"modal","type":"boolean | undefined","default":"false","description":"Makes the floating panel modal: the page behind it goes inert and\ncannot scroll, and Tab stays inside the panel until it closes. Off by\ndefault, the panel is a non-modal dialog: the page stays usable, a\nclick outside closes it and still reaches what was clicked, and Tab\npast its last control (or Shift+Tab before its first) leaves it and\ncloses it. The phone sheet is modal either way."},
|
|
17
18
|
{"name":"modelValue","type":"boolean | undefined","default":"false","description":"Used by v-model to open / close the popover. A popover with no `v-model`\nstarts closed and is driven by its `trigger`."},
|
|
18
19
|
{"name":"offCanvasProps","type":"Partial<BbOffCanvasProps> | undefined","description":"Props for the phone sheet. A `pt` inside it, object or colon keys, styles\nonly that sheet.\n\nOverrides forwarded to the underlying `BbOffCanvas` when `adaptive` renders\nthe sheet on mobile. Merged over the adaptive defaults\n(`side: 'bottom'`, `size: 'auto'`, `draggable: true`). Ignored when\n`adaptive` is `false`.\n\nA `pt` inside it styles ONLY the sheet, in `BbOffCanvas`'s part words\n(`root`, `header`, `title`, `description`, `content`, `footer`, `close`;\nstate `open`), object (`{ pt: { header: '…' } }`) or colon keys\n(`{ 'pt:header': '…' }`) alike. It merges after what this component\nforwards to its sheet, so it wins a conflict and drops nothing — see the\npassthrough guide § Inside the sheet."},
|
|
19
20
|
{"name":"offset","type":"number | undefined","default":"4","description":"Space the floating container will maintain from the activator."},
|
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
"contract": "ai/BbProgress.md",
|
|
8
8
|
"source": "ai/source/BbProgress.md",
|
|
9
9
|
"props": [
|
|
10
|
+
{"name":"indeterminate","type":"boolean | undefined","default":"false","description":"A wait you cannot measure yet: the bar slides back and forth (a calm\npulse under `prefers-reduced-motion`) and the progressbar reports no\nvalue (`aria-valuenow` is omitted, as the ARIA pattern asks). The\n`modelValue` is kept and shows again when this turns off. A `null`\n`modelValue` alone is still an empty bar, not this."},
|
|
10
11
|
{"name":"label","type":"string | undefined","default":"undefined","description":"Accessible name for the progress bar, forwarded to `aria-label`. A\n`progressbar` with no name is announced only as a bare percentage, so give\nit one whenever the surrounding text doesn't already name it (e.g.\n`\"Upload\"`). Matches the `label` naming prop on BbSpinner / BbIcon."},
|
|
11
12
|
{"name":"max","type":"number | undefined","default":"100","description":"Maximum value. Upper cap."},
|
|
12
13
|
{"name":"min","type":"number | undefined","default":"0","description":"Minimum value. Lower cap."},
|
|
13
14
|
{"name":"modelValue","type":"number | null","required":true,"default":"0","description":"The current progress value — a number between `min` and `max`. This is a\none-way input prop (BbProgress is a display component and never emits\n`update:modelValue`); `null` means no value and renders an empty bar."},
|
|
14
|
-
{"name":"pt","type":"PtMap<BbProgressPtPart,
|
|
15
|
+
{"name":"pt","type":"PtMap<BbProgressPtPart, \"indeterminate\"> | undefined","description":"Passthrough, object form: the same keys as the `pt:*` attributes\nwithout the prefix. Parts: `root`, `bar`; state: `indeterminate`."}
|
|
15
16
|
],
|
|
16
17
|
"events": [],
|
|
17
18
|
"slots": [],
|
|
@@ -23,9 +24,8 @@
|
|
|
23
24
|
{"name":"root","description":"The track (the `progressbar` element); the bar follows it through its locals (`--track`, `--track-color`, `--accent`, `--r`, the same words as BbSlider's rail and bar)."},
|
|
24
25
|
{"name":"bar","description":"The fill itself. Its inline `transform` IS the value (it slides from -100% to 0), so style its look here — colour, gradient, radius — never its position."}
|
|
25
26
|
],
|
|
26
|
-
"states": [
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
]
|
|
27
|
+
"states": [
|
|
28
|
+
{"name":"indeterminate","description":"Component-wide: `indeterminate` is on; the bar slides (pulses under reduced motion) instead of showing a value."}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
31
|
}
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
{"name":"itemProps","type":"BbOptionGroupItemProps<T> | undefined","description":"ADDITIONAL row fields resolved from each item — never its text or value\n(those stay on `itemText` / `itemValue`). Option groups accept one field:\n\n- `description` — a muted line under the option label, beside the control;\n it may wrap.\n\nEither an object with a path or getter per field\n(`{ description: 'email' }`) or a function returning the fields\n(`(item) => ({ description: item.email })`). Without it no field renders —\nan item's own `description` is never read implicitly — and an empty value\nrenders nothing for that item. The description is announced as the\noption's description, never part of its name. To disable individual\noptions use `selectable`."},
|
|
33
33
|
{"name":"itemReverse","type":"boolean | undefined","default":"false","description":"Swaps each row's input and label from their natural order (input first),\nin every `item-layout`. `reverse` swaps the legend and the options instead."},
|
|
34
34
|
{"name":"items","type":"T[] | ((context: BbRadioGroupItemsContext) => T[] | Promise<T[]>)","required":true,"description":"The options: an array, or a provider function called with ONE context\nobject and returning the rows, sync or async. The context carries:\n- `reason` — why this call happened: `'initial'` (the first load, on\n mount), `'dependencies'` (a `dependencies` entry or the `items`\n function changed; a retry arrives this way) or `'model'` (the model\n changed from outside and the options cannot resolve it). The group has\n no search field, so it never passes `query`;\n- `modelValue` — the `v-model` as-is;\n- `signal` — an `AbortSignal`, aborted when a newer call starts or the\n group is disposed; pass it to every request.\n\nA provider signals a failure by THROWING, never by returning `[]`: the\nrows are cleared, nothing is pruned, and `#empty` receives the `error`\n(`failed-text` is shown). Zero-argument providers keep working. Annotate\nthe parameter `BbRadioGroupItemsContext`."},
|
|
35
|
-
{"name":"itemText","type":"ItemAccessor<T, string> | undefined","default":"JSON.stringify(item)","description":"Defines a path that returns a property of the object to use as text or a function that returns a string."},
|
|
36
|
-
{"name":"itemValue","type":"ItemAccessor<T> | undefined","default":"the whole item","description":"Defines a path that returns a property of the object to use as value or a function that returns any value
|
|
35
|
+
{"name":"itemText","type":"ItemAccessor<T, string> | undefined","default":"own `label`, else `text`, else `JSON.stringify(item)`","description":"Defines a path that returns a property of the object to use as text or a function that returns a string.\n\nUnset: own `label`, else `text` (`{ label, value }` needs no accessor)."},
|
|
36
|
+
{"name":"itemValue","type":"ItemAccessor<T> | undefined","default":"own `value`, else the whole item","description":"Defines a path that returns a property of the object to use as value or a function that returns any value.\n\nUnset: own `value`, even `null`."},
|
|
37
37
|
{"name":"labelAlign","type":"FieldCrossAlign | undefined","values":["top","center","bottom"],"description":"Vertical position of the label block in a side-by-side row; not\n`labelPosition`, the horizontal one. Omitted, the label's first line\nmeets the control's."},
|
|
38
38
|
{"name":"layout","type":"FieldLayout | undefined","description":"How the label and the input sit together: `'vertical'`, `'horizontal'` (50/50),\n`'auto'`, `'label-fill'` (the label takes the free space, the input keeps\nits size), `'input-fill'` (the other way round), or a two-word ratio\npattern like `'xx xxxxx'`."},
|
|
39
39
|
{"name":"legend","type":"string","required":true,"description":"Text content of the legend."},
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
{"name":"itemHeight","type":"number | undefined","default":"28","description":"Height of the options in the listbox (px). Defaults to 28px (24px\ncompact; 44px / 36px on mobile viewports). An explicit value wins on\nevery viewport."},
|
|
37
37
|
{"name":"itemProps","type":"BbSelectItemProps<T> | undefined","description":"ADDITIONAL row fields resolved from each item — never its text or value\n(those stay on `itemText` / `itemValue`). Accepted fields:\n\n- `description` — a muted line under the option label. Setting it gives\n every row a fixed two-line height (the list is virtualized); the\n description stays on one line and ellipsizes. Announced as the option's\n description, never part of its name; matched by the search with the text\n when `filterBy` is empty.\n- `prepend:icon` — an icon before the label.\n- `append:icon` — an icon after the label; on the selected row the check\n takes its place.\n\nEither an object with a path or getter per field\n(`{ description: 'email', 'prepend:icon': 'icon' }`) or a function\nreturning the fields (`(item) => ({ description: item.email })`). Without\nit no field renders — nothing is read off the item implicitly — and an empty\nvalue renders nothing for that item. Never shown in the trigger or the\nchips. To disable individual options use `selectable`."},
|
|
38
38
|
{"name":"items","type":"T[] | ((context: BbSelectItemsContext) => T[] | Promise<T[]>)","required":true,"description":"The options: an array, or a provider function called with ONE context\nobject and returning the rows, sync or async. The context carries:\n- `query` — what the user typed, `''` until they type;\n- `reason` — why this call happened: `'search'` (the user typed, and\n nothing else), `'initial'` (the first load, on mount or on the first\n open), `'dependencies'` (a `dependencies` entry or the `items` function\n changed; a retry arrives this way), `'model'` (the model changed from\n outside and the options cannot resolve it), `'reopen'` (the panel\n reopened over a searched list). To resolve the selection by id, branch\n on `reason !== 'search'`;\n- `modelValue` — the `v-model` as-is;\n- `signal` — an `AbortSignal`, aborted when a newer call starts or the\n component is disposed; pass it to every request.\n\nA provider signals a failure by THROWING, never by returning `[]`: the\nrows are cleared, nothing is pruned, and `#empty` receives the `error`\n(`failed-text` is shown). A newer call aborts the one in flight, and the\naborted call's rejection or resolution is dropped silently.\nZero-argument providers keep working. Annotate the parameter\n`BbSelectItemsContext`."},
|
|
39
|
-
{"name":"itemText","type":"ItemAccessor<T, string> | undefined","default":"JSON.stringify(item)","description":"Defines a path that returns a property of the object to use as text or a function\nthat returns a string."},
|
|
40
|
-
{"name":"itemValue","type":"ItemAccessor<T> | undefined","default":"the whole item","description":"Defines a path that returns a property of the object to use as value or a function\nthat returns any value
|
|
39
|
+
{"name":"itemText","type":"ItemAccessor<T, string> | undefined","default":"own `label`, else `text`, else `JSON.stringify(item)`","description":"Defines a path that returns a property of the object to use as text or a function\nthat returns a string.\n\nUnset: own `label`, else `text` (`{ label, value }` needs no accessor)."},
|
|
40
|
+
{"name":"itemValue","type":"ItemAccessor<T> | undefined","default":"own `value`, else the whole item","description":"Defines a path that returns a property of the object to use as value or a function\nthat returns any value.\n\nUnset: own `value`, even `null`."},
|
|
41
41
|
{"name":"label","type":"string","required":true,"description":"Text content of the label of the element."},
|
|
42
42
|
{"name":"labelAlign","type":"FieldCrossAlign | undefined","values":["top","center","bottom"],"description":"Vertical position of the label block in a side-by-side row; not\n`labelPosition`, the horizontal one. Omitted, the label's first line\nmeets the control's."},
|
|
43
43
|
{"name":"labelMode","type":"\"outside\" | \"floating\" | \"inside\" | undefined","description":"Label rendering mode."},
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
{"name":"itemHeight","type":"number | undefined","default":"28","description":"Height of the options in the listbox (px). Defaults to 28px (24px\ncompact; 44px / 36px on mobile viewports). An explicit value wins on\nevery viewport."},
|
|
34
34
|
{"name":"itemProps","type":"BbSelectItemProps<Item> | undefined","description":"ADDITIONAL row fields resolved from each item — never its text or value\n(those stay on `itemText` / `itemValue`). Accepted fields:\n\n- `description` — a muted line under the option label. Setting it gives\n every row a fixed two-line height (the list is virtualized); the\n description stays on one line and ellipsizes. Announced as the option's\n description, never part of its name; matched by the search with the text\n when `filterBy` is empty.\n- `prepend:icon` — an icon before the label.\n- `append:icon` — an icon after the label; on the selected row the check\n takes its place.\n\nEither an object with a path or getter per field\n(`{ description: 'email', 'prepend:icon': 'icon' }`) or a function\nreturning the fields (`(item) => ({ description: item.email })`). Without\nit no field renders — nothing is read off the item implicitly — and an empty\nvalue renders nothing for that item. Never shown in the trigger or the\nchips. To disable individual options use `selectable`."},
|
|
35
35
|
{"name":"items","type":"Item[] | ((context: BbSelectPopoverItemsContext) => Item[] | Promise<Item[]>)","required":true,"default":"[]","description":"The options: an array, or a provider function called with ONE context\nobject and returning the rows, sync or async. The context carries:\n- `query` — what the user typed, `''` until they type;\n- `reason` — why this call happened: `'search'` (the user typed, and\n nothing else), `'initial'` (the first load, on mount or on the first\n open), `'dependencies'` (a `dependencies` entry or the `items` function\n changed; a retry arrives this way), `'model'` (the model changed from\n outside and the options cannot resolve it), `'reopen'` (the panel\n reopened over a searched list). To resolve the selection by id, branch\n on `reason !== 'search'`;\n- `modelValue` — the raw v-model: an array in `multiple` mode, the raw\n model value (possibly `null`) in single mode;\n- `signal` — an `AbortSignal`, aborted when a newer call starts or the\n component is disposed; pass it to every request.\n\nA provider signals a failure by THROWING, never by returning `[]`: the\nrows are cleared, nothing is pruned, and `#empty` receives the `error`\n(`failed-text` is shown). A newer call aborts the one in flight, and the\naborted call's rejection or resolution is dropped silently.\nZero-argument providers keep working. Annotate the parameter\n`BbSelectPopoverItemsContext`."},
|
|
36
|
-
{"name":"itemText","type":"ItemAccessor<Item, string> | undefined","default":"JSON.stringify(item)","description":"Path to item property for display text or function to extract it."},
|
|
37
|
-
{"name":"itemValue","type":"ItemAccessor<Item> | undefined","default":"the whole item","description":"Path to item property for value or function to extract it
|
|
36
|
+
{"name":"itemText","type":"ItemAccessor<Item, string> | undefined","default":"own `label`, else `text`, else `JSON.stringify(item)`","description":"Path to item property for display text or function to extract it.\n\nUnset: own `label`, else `text` (`{ label, value }` needs no accessor)."},
|
|
37
|
+
{"name":"itemValue","type":"ItemAccessor<Item> | undefined","default":"own `value`, else the whole item","description":"Path to item property for value or function to extract it.\n\nUnset: own `value`, even `null`."},
|
|
38
38
|
{"name":"loading","type":"boolean | undefined","default":"false","description":"Display the loading state styles."},
|
|
39
39
|
{"name":"loadingText","type":"string | undefined","description":"Message shown while items are being loaded."},
|
|
40
40
|
{"name":"max","type":"number | undefined","default":"Infinity","description":"Maximum number of selectable items (limits selection when `multiple` is true)."},
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
{"name":"itemProps","type":"BbOptionGroupItemProps<T> | undefined","description":"ADDITIONAL row fields resolved from each item — never its text or value\n(those stay on `itemText` / `itemValue`). Option groups accept one field:\n\n- `description` — a muted line under the option label, beside the control;\n it may wrap.\n\nEither an object with a path or getter per field\n(`{ description: 'email' }`) or a function returning the fields\n(`(item) => ({ description: item.email })`). Without it no field renders —\nan item's own `description` is never read implicitly — and an empty value\nrenders nothing for that item. The description is announced as the\noption's description, never part of its name. To disable individual\noptions use `selectable`."},
|
|
33
33
|
{"name":"itemReverse","type":"boolean | undefined","default":"false","description":"Swaps each row's input and label from their natural order (input first),\nin every `item-layout`. `reverse` swaps the legend and the options instead."},
|
|
34
34
|
{"name":"items","type":"T[] | ((context: BbCheckboxGroupItemsContext) => T[] | Promise<T[]>)","required":true,"description":"The options: an array, or a provider function called with ONE context\nobject and returning the rows, sync or async. The context carries:\n- `reason` — why this call happened: `'initial'` (the first load, on\n mount), `'dependencies'` (a `dependencies` entry or the `items`\n function changed; a retry arrives this way) or `'model'` (the model\n changed from outside and the options cannot resolve it). The group has\n no search field, so it never passes `query`;\n- `modelValue` — the `v-model` as-is;\n- `signal` — an `AbortSignal`, aborted when a newer call starts or the\n group is disposed; pass it to every request.\n\nA provider signals a failure by THROWING, never by returning `[]`: the\nrows are cleared, nothing is pruned, and `#empty` receives the `error`\n(`failed-text` is shown). Zero-argument providers keep working. Annotate\nthe parameter `BbCheckboxGroupItemsContext` (`BbSwitchGroupItemsContext`\non a switch group, the same shape)."},
|
|
35
|
-
{"name":"itemText","type":"ItemAccessor<T, string> | undefined","default":"JSON.stringify(item)","description":"Defines a path that returns a property of the object to use as text or a function that returns a string."},
|
|
36
|
-
{"name":"itemValue","type":"ItemAccessor<T> | undefined","default":"the whole item","description":"Defines a path that returns a property of the object to use as value or a function that returns any value
|
|
35
|
+
{"name":"itemText","type":"ItemAccessor<T, string> | undefined","default":"own `label`, else `text`, else `JSON.stringify(item)`","description":"Defines a path that returns a property of the object to use as text or a function that returns a string.\n\nUnset: own `label`, else `text` (`{ label, value }` needs no accessor)."},
|
|
36
|
+
{"name":"itemValue","type":"ItemAccessor<T> | undefined","default":"own `value`, else the whole item","description":"Defines a path that returns a property of the object to use as value or a function that returns any value.\n\nUnset: own `value`, even `null`."},
|
|
37
37
|
{"name":"labelAlign","type":"FieldCrossAlign | undefined","values":["top","center","bottom"],"description":"Vertical position of the label block in a side-by-side row; not\n`labelPosition`, the horizontal one. Omitted, the label's first line\nmeets the control's."},
|
|
38
38
|
{"name":"layout","type":"FieldLayout | undefined","description":"How the label and the input sit together: `'vertical'`, `'horizontal'` (50/50),\n`'auto'`, `'label-fill'` (the label takes the free space, the input keeps\nits size), `'input-fill'` (the other way round), or a two-word ratio\npattern like `'xx xxxxx'`."},
|
|
39
39
|
{"name":"legend","type":"string","required":true,"description":"Text content of the legend."},
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
{"name":"id","type":"string | undefined","description":"The root's `id`, and the key `useBbTabsContext(id)` pairs by. Generated\nwhen omitted."},
|
|
19
19
|
{"name":"items","type":"BbTabsItem<K>[]","required":true,"description":"Array of items that define the tabs in the component."},
|
|
20
20
|
{"name":"manualActivation","type":"boolean | undefined","default":"`undefined` (on when `server` is set on the strip or an item)","description":"Arrow keys only move focus; Enter or Space opens the tab (APG manual\nactivation). Home and End move focus too; a click still opens a tab at\nonce.\n\nWhen unset it is on for a strip that makes server visits (`server` on\nthe strip or on any item), where opening a tab on every arrow press\nwould fire a visit per tab passed, and off everywhere else (automatic\nactivation: the arrow keys open the tab they land on). `href` alone\ndoes not turn it on: that is a client-side URL rewrite. `true` /\n`false` override either way. The Radix / Reka / Ark spelling of the\nsame thing is `activationMode=\"manual\"` / `\"automatic\"`."},
|
|
21
|
-
{"name":"modelValue","type":"K | null | undefined","description":"The
|
|
21
|
+
{"name":"modelValue","type":"K | null | undefined","description":"The active tab's `value`. Used by v-model."},
|
|
22
22
|
{"name":"navigation","type":"boolean | undefined","default":"false","description":"Synchronizes the current tab with the URL query parameter.\n\nPair it with `replace` unless a tab is genuinely a separate destination —\nsee the `replace` prop."},
|
|
23
23
|
{"name":"onBefore","type":"(() => boolean | void) | undefined","description":"Inertia lifecycle hook — fired just before the request is sent.\nReturn `false` to cancel the visit."},
|
|
24
24
|
{"name":"onCancel","type":"(() => void) | undefined","description":"Inertia lifecycle hook — fired when the request is cancelled."},
|
|
@@ -40,11 +40,11 @@
|
|
|
40
40
|
{"name":"update:modelValue","signature":"(value: K): void","description":"Emitted when the selected tab changes. Used by `v-model`."}
|
|
41
41
|
],
|
|
42
42
|
"slots": [
|
|
43
|
-
{"name":"label","type":"BbTabsSlotProps<K>","fields":["current: K | null","currentIndex: number","disabled: boolean","isFirst: boolean","isLast: boolean","selected: boolean","
|
|
43
|
+
{"name":"label","type":"BbTabsSlotProps<K>","fields":["current: K | null","currentIndex: number","disabled: boolean","isFirst: boolean","isLast: boolean","selected: boolean","label: string","value: K","goTo: (target: \"first\" | \"previous\" | \"next\" | \"last\") => void"],"description":"Fallback slot used for all tab labels when no per-tab `<value>:label` slot is provided."},
|
|
44
44
|
{"name":"wrapper:append","type":"BbTabsScrollSlotProps","fields":["isScrolling: boolean","canScrollLeft: boolean","canScrollRight: boolean","scroll: (direction: \"left\" | \"right\") => void"],"description":"Content rendered after the scrollable tab label list (e.g. a right scroll arrow)."},
|
|
45
45
|
{"name":"wrapper:prepend","type":"BbTabsScrollSlotProps","fields":["isScrolling: boolean","canScrollLeft: boolean","canScrollRight: boolean","scroll: (direction: \"left\" | \"right\") => void"],"description":"Content rendered before the scrollable tab label list (e.g. a left scroll arrow)."},
|
|
46
|
-
{"name":"<
|
|
47
|
-
{"name":"<
|
|
46
|
+
{"name":"<value>","type":"BbTabsSlotProps<K>","description":"One tab's content panel, by the tab's `value` through `slotKey`; no fallback (an empty panel).","dynamic":true},
|
|
47
|
+
{"name":"<value>:label","type":"BbTabsSlotProps<K>","description":"One tab trigger's label, by the tab's `value` through `slotKey`; beats `label`, which beats the item's `label` text.","dynamic":true}
|
|
48
48
|
],
|
|
49
49
|
"exposed": [],
|
|
50
50
|
"models": [
|
|
@@ -75,11 +75,12 @@
|
|
|
75
75
|
{"name":"querykey","new":"queryKey","since":"3.0.0-alpha.1","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}},
|
|
76
76
|
{"name":"header:prepend","new":"wrapper:prepend","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"rename"}},
|
|
77
77
|
{"name":"header:append","new":"wrapper:append","surface":"slot","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"rename"}},
|
|
78
|
-
{"name":"label:<x>","new":"<x>:label","surface":"slot","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}}
|
|
78
|
+
{"name":"label:<x>","new":"<x>:label","surface":"slot","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}},
|
|
79
|
+
{"name":"items[].key","new":"items[].value","surface":"item","hint":"a tab's identity: what `v-model` holds and its `#<value>` / `#<value>:label` slots; `check --fix` renames it","since":"3.0.0-beta.49","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}}
|
|
79
80
|
],
|
|
80
81
|
"types": [
|
|
81
82
|
{"name":"BbTabItem","usedAs":["prop items","prop pt","prop pt:item"],"deprecated":true,"replacedBy":"BbTabsItem"},
|
|
82
|
-
{"name":"BbTabsItem","usedAs":["prop items","prop pt","prop pt:item"],"definition":"type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & { disabled?: boolean; eager?: boolean; href?: string;
|
|
83
|
+
{"name":"BbTabsItem","usedAs":["prop items","prop pt","prop pt:item"],"definition":"type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & { disabled?: boolean; eager?: boolean; href?: string; value: K; key?: never; label?: string; server?: boolean; };"},
|
|
83
84
|
{"name":"TabsVariantRegistry","usedAs":["prop variant"],"definition":"interface TabsVariantRegistry { pill: true; line: true; none: true; }","values":["pill","line","none"],"extensibleVia":"TabsVariantRegistry"}
|
|
84
85
|
]
|
|
85
86
|
}
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
],
|
|
13
13
|
"events": [],
|
|
14
14
|
"slots": [
|
|
15
|
-
{"name":"label","type":"BbTabsSlotProps<string>","fields":["current: K | null","currentIndex: number","disabled: boolean","isFirst: boolean","isLast: boolean","selected: boolean","
|
|
15
|
+
{"name":"label","type":"BbTabsSlotProps<string>","fields":["current: K | null","currentIndex: number","disabled: boolean","isFirst: boolean","isLast: boolean","selected: boolean","label: string","value: K","goTo: (target: \"first\" | \"previous\" | \"next\" | \"last\") => void"],"description":"Fallback slot used for all tab labels when no per-tab `<value>:label` slot is provided."},
|
|
16
16
|
{"name":"wrapper:append","type":"BbTabsScrollSlotProps","fields":["isScrolling: boolean","canScrollLeft: boolean","canScrollRight: boolean","scroll: (direction: \"left\" | \"right\") => void"],"description":"Content rendered after the scrollable tab label list (e.g. a right scroll arrow)."},
|
|
17
17
|
{"name":"wrapper:prepend","type":"BbTabsScrollSlotProps","fields":["isScrolling: boolean","canScrollLeft: boolean","canScrollRight: boolean","scroll: (direction: \"left\" | \"right\") => void"],"description":"Content rendered before the scrollable tab label list (e.g. a left scroll arrow)."},
|
|
18
|
-
{"name":"<
|
|
18
|
+
{"name":"<value>:label","type":"BbTabsSlotProps<K>","description":"One tab trigger's label, by the tab's `value` through `slotKey`; beats `label`, which beats the item's `label` text.","dynamic":true}
|
|
19
19
|
],
|
|
20
20
|
"exposed": [],
|
|
21
21
|
"models": [],
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
],
|
|
43
43
|
"types": [
|
|
44
44
|
{"name":"BbTabItem","usedAs":["prop pt","prop pt:item"],"deprecated":true,"replacedBy":"BbTabsItem"},
|
|
45
|
-
{"name":"BbTabsItem","usedAs":["prop pt","prop pt:item"],"definition":"type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & { disabled?: boolean; eager?: boolean; href?: string;
|
|
45
|
+
{"name":"BbTabsItem","usedAs":["prop pt","prop pt:item"],"definition":"type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & { disabled?: boolean; eager?: boolean; href?: string; value: K; key?: never; label?: string; server?: boolean; };"},
|
|
46
46
|
{"name":"TabsVariantRegistry","usedAs":["prop variant"],"definition":"interface TabsVariantRegistry { pill: true; line: true; none: true; }","values":["pill","line","none"],"extensibleVia":"TabsVariantRegistry"}
|
|
47
47
|
]
|
|
48
48
|
}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
],
|
|
12
12
|
"events": [],
|
|
13
13
|
"slots": [
|
|
14
|
-
{"name":"<
|
|
14
|
+
{"name":"<value>","type":"BbTabsSlotProps<K>","description":"One tab's content panel, by the tab's `value` through `slotKey`; no fallback (an empty panel).","dynamic":true}
|
|
15
15
|
],
|
|
16
16
|
"exposed": [],
|
|
17
17
|
"models": [],
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
{"name":"id","type":"string | undefined","description":"The root's `id`, and the key `useBbTabsContext(id)` pairs by. Generated\nwhen omitted."},
|
|
19
19
|
{"name":"items","type":"BbTabsItem<K>[]","required":true,"description":"Array of items that define the tabs in the component."},
|
|
20
20
|
{"name":"manualActivation","type":"boolean | undefined","default":"`undefined` (on when `server` is set on the strip or an item)","description":"Arrow keys only move focus; Enter or Space opens the tab (APG manual\nactivation). Home and End move focus too; a click still opens a tab at\nonce.\n\nWhen unset it is on for a strip that makes server visits (`server` on\nthe strip or on any item), where opening a tab on every arrow press\nwould fire a visit per tab passed, and off everywhere else (automatic\nactivation: the arrow keys open the tab they land on). `href` alone\ndoes not turn it on: that is a client-side URL rewrite. `true` /\n`false` override either way. The Radix / Reka / Ark spelling of the\nsame thing is `activationMode=\"manual\"` / `\"automatic\"`."},
|
|
21
|
-
{"name":"modelValue","type":"K | null | undefined","description":"The
|
|
21
|
+
{"name":"modelValue","type":"K | null | undefined","description":"The active tab's `value`. Used by v-model."},
|
|
22
22
|
{"name":"navigation","type":"boolean | undefined","default":"false","description":"Synchronizes the current tab with the URL query parameter.\n\nPair it with `replace` unless a tab is genuinely a separate destination —\nsee the `replace` prop."},
|
|
23
23
|
{"name":"onBefore","type":"(() => boolean | void) | undefined","description":"Inertia lifecycle hook — fired just before the request is sent.\nReturn `false` to cancel the visit."},
|
|
24
24
|
{"name":"onCancel","type":"(() => void) | undefined","description":"Inertia lifecycle hook — fired when the request is cancelled."},
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
{"name":"update:modelValue","signature":"(value: K): void","description":"Emitted when the selected tab changes. Used by `v-model`."}
|
|
40
40
|
],
|
|
41
41
|
"slots": [
|
|
42
|
-
{"name":"default","type":"BbTabsRootSlotProps<K>","fields":["current: K | null","currentIndex: number","isFirst: boolean","isLast: boolean","goTo: (target: \"first\" | \"previous\" | \"next\" | \"last\") => void","select: (
|
|
42
|
+
{"name":"default","type":"BbTabsRootSlotProps<K>","fields":["current: K | null","currentIndex: number","isFirst: boolean","isLast: boolean","goTo: (target: \"first\" | \"previous\" | \"next\" | \"last\") => void","select: (value: K) => void"],"description":"Arbitrary layout hosting `BbTabsList` / `BbTabsPanels` anywhere in its subtree."}
|
|
43
43
|
],
|
|
44
44
|
"exposed": [],
|
|
45
45
|
"models": [
|
|
@@ -52,11 +52,12 @@
|
|
|
52
52
|
{"name":"pt","new":null,"hint":"BbTabsRoot renders no element and takes no `pt`: put `item` on `<BbTabsList>` and `panel` on `<BbTabsPanels>`","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"manual"}},
|
|
53
53
|
{"name":"pt:item","new":null,"surface":"pt","hint":"move it to `<BbTabsList pt:item>`","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"manual"}},
|
|
54
54
|
{"name":"pt:panel","new":null,"surface":"pt","hint":"move it to `<BbTabsPanels pt:panel>`","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"manual"}},
|
|
55
|
-
{"name":"pt:root","new":null,"surface":"pt","hint":"BbTabsRoot renders no element; style `<BbTabsList>` or `<BbTabsPanels>` instead","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"manual"}}
|
|
55
|
+
{"name":"pt:root","new":null,"surface":"pt","hint":"BbTabsRoot renders no element; style `<BbTabsList>` or `<BbTabsPanels>` instead","since":"3.0.0-beta.36","migration":"ai/guides/migration/v3-beta-css-classes.md","silent":true,"fix":{"kind":"manual"}},
|
|
56
|
+
{"name":"items[].key","new":"items[].value","surface":"item","hint":"a tab's identity: what `v-model` holds and its `#<value>` / `#<value>:label` slots; `check --fix` renames it","since":"3.0.0-beta.49","migration":"ai/guides/migration/components/bb-tabs.md","silent":true,"fix":{"kind":"rename"}}
|
|
56
57
|
],
|
|
57
58
|
"types": [
|
|
58
59
|
{"name":"BbTabItem","usedAs":["prop items"],"deprecated":true,"replacedBy":"BbTabsItem"},
|
|
59
|
-
{"name":"BbTabsItem","usedAs":["prop items"],"definition":"type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & { disabled?: boolean; eager?: boolean; href?: string;
|
|
60
|
+
{"name":"BbTabsItem","usedAs":["prop items"],"definition":"type BbTabsItem<K extends string = string> = BbTabsInertiaOptions & { disabled?: boolean; eager?: boolean; href?: string; value: K; key?: never; label?: string; server?: boolean; };"},
|
|
60
61
|
{"name":"TabsVariantRegistry","usedAs":["prop variant"],"definition":"interface TabsVariantRegistry { pill: true; line: true; none: true; }","values":["pill","line","none"],"extensibleVia":"TabsVariantRegistry"}
|
|
61
62
|
]
|
|
62
63
|
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{"name":"activator","type":"ElementOrComponentRef | undefined","description":"External activator element or component ref.\nWhen provided, the activator slot is not rendered and event listeners\nare attached programmatically to the referenced element."},
|
|
11
11
|
{"name":"arrowPadding","type":"number | undefined","default":"10","description":"Space the arrow will maintain to the edge of the tooltip bubble.\nUseful when the floating element has border radius so it won't appear broken"},
|
|
12
12
|
{"name":"boundary","type":"ElementOrComponentRefOrSelector | undefined","description":"Constrains the tooltip within a bounding element.\nWhen provided, the tooltip will not overflow this container's bounds (e.g. a sidebar).\nAccepts an HTMLElement, a Vue component ref, or a CSS selector string."},
|
|
13
|
-
{"name":"delay","type":"number | undefined","default":"
|
|
13
|
+
{"name":"delay","type":"number | undefined","default":"100","description":"How long, in milliseconds, a pointer has to rest on the activator before\nthe tooltip shows; it keeps hints from flashing under a pointer passing\nby. Keyboard focus shows it at once whatever this says, and so does a\npointer arriving while another tooltip shows or within 300 ms of one\nclosing (the skip delay, shared by every tooltip). `0` shows it on hover\nat once."},
|
|
14
14
|
{"name":"disabled","type":"boolean | undefined","default":"false","description":"Disables the component"},
|
|
15
15
|
{"name":"eager","type":"boolean | undefined","default":"false","description":"Renders the tooltip's popover and content at mount instead of on the\nfirst open. The description screen readers hear exists from mount either\nway."},
|
|
16
16
|
{"name":"hideArrow","type":"boolean | undefined","default":"false","description":"Hides the tooltip arrow. A tooltip shows its arrow by default (it's the\none popover-family surface where an arrow is meaningful — a speech bubble\npointing at its anchor); set this to drop it."},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"library": "bitboss-ui",
|
|
4
|
-
"version": "3.0.0-beta.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "3.0.0-beta.49",
|
|
5
|
+
"generatedAt": "2026-10-07T21:07:12.711Z",
|
|
6
6
|
"about": "The bitboss-ui API for agents: open components/<Name>.json for one component (every prop, event, slot, v-model, pt part and state, removed/renamed name, and the public types its API uses; one member per line). components/<Name>.tree.json has its component tree and CSS internals. The machine file with everything in one place is ../components.json.",
|
|
7
7
|
"reading": {
|
|
8
8
|
"components[]": "one row per component; description = its first sentence; file = its API file; tree: true = components/<Name>.tree.json exists (component tree, css classes, CSS custom properties).",
|