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
|
@@ -36,9 +36,8 @@ Sibling recipes: [Vue](../vue/upload-center.md) ·
|
|
|
36
36
|
the peek stack, the close semantics and the sidebar's out-of-flow
|
|
37
37
|
behaviour are all load-bearing here.
|
|
38
38
|
- `<BbConfirm />` and `<BbToast />` mounted once in the `createInertiaApp` render root — never in a page.
|
|
39
|
-
- From the [Inertia Helpers](../../guides/inertia-helpers.md) toolkit
|
|
40
|
-
`
|
|
41
|
-
`useResourceContext`.
|
|
39
|
+
- From the [Inertia Helpers](../../guides/inertia-helpers.md) toolkit, installed with
|
|
40
|
+
`npx bitboss-ui add useProp useQuery useQueryObject useResourceContext useTableContext`.
|
|
42
41
|
- A `useCategoriesStore()` Pinia store exposing the shared expense-category
|
|
43
42
|
catalog (Travel, Meals & entertainment, Lodging, Rideshare & transit,
|
|
44
43
|
Software & subscriptions, Office supplies, Fuel, Client entertainment).
|
|
@@ -189,10 +188,10 @@ import {
|
|
|
189
188
|
import {
|
|
190
189
|
useTableContext,
|
|
191
190
|
type TableContext,
|
|
192
|
-
} from '@/composables/useTableContext';
|
|
193
|
-
import { useQueryObject } from '@/composables/useQueryObject';
|
|
194
|
-
import { useProp } from '@/composables/useProp';
|
|
195
|
-
import { useQuery } from '@/composables/useQuery';
|
|
191
|
+
} from '@/composables/inertia-helpers/useTableContext';
|
|
192
|
+
import { useQueryObject } from '@/composables/inertia-helpers/useQueryObject';
|
|
193
|
+
import { useProp } from '@/composables/inertia-helpers/useProp';
|
|
194
|
+
import { useQuery } from '@/composables/inertia-helpers/useQuery';
|
|
196
195
|
import { useCategoriesStore } from '@/stores/categories';
|
|
197
196
|
import { api } from '@/api';
|
|
198
197
|
import type { Category, Receipt, ReceiptStatus } from '@/types';
|
|
@@ -638,9 +637,9 @@ export function useUploadCenter(): UploadCenterContext {
|
|
|
638
637
|
<BbBreadcrumbs
|
|
639
638
|
class="min-w-0 flex-auto"
|
|
640
639
|
:items="[
|
|
641
|
-
{
|
|
642
|
-
{
|
|
643
|
-
{
|
|
640
|
+
{ value: 'dashboard', label: 'Dashboard', href: '/dashboard' },
|
|
641
|
+
{ value: 'expenses', label: 'Expenses', href: '/expenses' },
|
|
642
|
+
{ value: 'receipts', label: 'Receipts' },
|
|
644
643
|
]"
|
|
645
644
|
/>
|
|
646
645
|
<div class="flex shrink-0 items-center gap-2">
|
|
@@ -688,21 +687,21 @@ export function useUploadCenter(): UploadCenterContext {
|
|
|
688
687
|
compact
|
|
689
688
|
:items="[
|
|
690
689
|
{
|
|
691
|
-
|
|
690
|
+
value: 'drafts',
|
|
692
691
|
label: `Drafts · ${ctx.tabCounts.value.drafts}`,
|
|
693
692
|
href: tabHref('drafts'),
|
|
694
693
|
server: true,
|
|
695
694
|
only: ['receipts', 'tabCounts', 'readyCount'],
|
|
696
695
|
},
|
|
697
696
|
{
|
|
698
|
-
|
|
697
|
+
value: 'submitted',
|
|
699
698
|
label: `Submitted · ${ctx.tabCounts.value.submitted}`,
|
|
700
699
|
href: tabHref('submitted'),
|
|
701
700
|
server: true,
|
|
702
701
|
only: ['receipts', 'tabCounts', 'readyCount'],
|
|
703
702
|
},
|
|
704
703
|
{
|
|
705
|
-
|
|
704
|
+
value: 'reimbursed',
|
|
706
705
|
label: `Reimbursed · ${ctx.tabCounts.value.reimbursed}`,
|
|
707
706
|
href: tabHref('reimbursed'),
|
|
708
707
|
server: true,
|
|
@@ -874,7 +873,7 @@ import {
|
|
|
874
873
|
} from 'bitboss-ui';
|
|
875
874
|
import qs from 'query-string';
|
|
876
875
|
import PageShell from '@/components/layout/PageShell.vue';
|
|
877
|
-
import { useQuery } from '@/composables/useQuery';
|
|
876
|
+
import { useQuery } from '@/composables/inertia-helpers/useQuery';
|
|
878
877
|
import {
|
|
879
878
|
provideUploadCenter,
|
|
880
879
|
STATUS_LABEL,
|
|
@@ -1375,6 +1374,7 @@ const categoryName = computed(
|
|
|
1375
1374
|
label="Amount"
|
|
1376
1375
|
:max-precision="2"
|
|
1377
1376
|
:min="0"
|
|
1377
|
+
:min-precision="2"
|
|
1378
1378
|
placeholder="0.00"
|
|
1379
1379
|
variant="ghost"
|
|
1380
1380
|
@change="commit"
|
|
@@ -1394,32 +1394,24 @@ const props = defineProps<{ receipt: Receipt }>();
|
|
|
1394
1394
|
|
|
1395
1395
|
const ctx = useUploadCenter();
|
|
1396
1396
|
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
// commit on @change, not @blur + @keydown.enter (see MerchantCell.vue).
|
|
1403
|
-
const draft = ref<number | string | null>(formatMoney(props.receipt.amount));
|
|
1397
|
+
// Money cells always show two decimals (`min-precision`), so the column
|
|
1398
|
+
// optically aligns. Same commit/revert contract as the merchant cell, on the
|
|
1399
|
+
// number model — commit on @change, not @blur + @keydown.enter (see
|
|
1400
|
+
// MerchantCell.vue).
|
|
1401
|
+
const draft = ref<number | null>(props.receipt.amount);
|
|
1404
1402
|
watch(
|
|
1405
1403
|
() => props.receipt.amount,
|
|
1406
1404
|
(value) => {
|
|
1407
|
-
draft.value =
|
|
1405
|
+
draft.value = value;
|
|
1408
1406
|
}
|
|
1409
1407
|
);
|
|
1410
1408
|
|
|
1411
1409
|
const commit = () => {
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
if (amount === props.receipt.amount) {
|
|
1415
|
-
draft.value = formatMoney(props.receipt.amount);
|
|
1416
|
-
return;
|
|
1417
|
-
}
|
|
1418
|
-
void ctx.updateReceipt(props.receipt, { amount });
|
|
1419
|
-
draft.value = formatMoney(amount);
|
|
1410
|
+
if (draft.value === props.receipt.amount) return;
|
|
1411
|
+
void ctx.updateReceipt(props.receipt, { amount: draft.value });
|
|
1420
1412
|
};
|
|
1421
1413
|
const revert = () => {
|
|
1422
|
-
draft.value =
|
|
1414
|
+
draft.value = props.receipt.amount;
|
|
1423
1415
|
};
|
|
1424
1416
|
</script>
|
|
1425
1417
|
```
|
|
@@ -1502,8 +1494,8 @@ const items = computed(() => {
|
|
|
1502
1494
|
...(isDraft
|
|
1503
1495
|
? [
|
|
1504
1496
|
{
|
|
1505
|
-
|
|
1506
|
-
|
|
1497
|
+
value: 'submit',
|
|
1498
|
+
label: 'Submit for approval',
|
|
1507
1499
|
'prepend:icon': 'lucide:send',
|
|
1508
1500
|
onClick: () => ctx.submitReceipt(receipt),
|
|
1509
1501
|
},
|
|
@@ -1514,8 +1506,8 @@ const items = computed(() => {
|
|
|
1514
1506
|
// BbButton to render a plain anchor instead of letting Inertia
|
|
1515
1507
|
// intercept this same-origin `href` as a visit (see BbBaseButton's
|
|
1516
1508
|
// routing rules).
|
|
1517
|
-
|
|
1518
|
-
|
|
1509
|
+
value: 'download',
|
|
1510
|
+
label: 'Download original',
|
|
1519
1511
|
'prepend:icon': 'lucide:download',
|
|
1520
1512
|
href: `/receipts/${receipt.id}/file`,
|
|
1521
1513
|
target: '_blank',
|
|
@@ -1523,8 +1515,8 @@ const items = computed(() => {
|
|
|
1523
1515
|
...(isDraft
|
|
1524
1516
|
? [
|
|
1525
1517
|
{
|
|
1526
|
-
|
|
1527
|
-
|
|
1518
|
+
value: 'remove',
|
|
1519
|
+
label: 'Remove',
|
|
1528
1520
|
'prepend:icon': 'lucide:trash-2',
|
|
1529
1521
|
variant: 'destructive' as const,
|
|
1530
1522
|
onClick: () => ctx.deleteReceipt(receipt),
|
|
@@ -1781,7 +1773,7 @@ const selectedCount = computed(() =>
|
|
|
1781
1773
|
<script setup lang="ts">
|
|
1782
1774
|
import { watch } from 'vue';
|
|
1783
1775
|
import { BbBadge, BbButton, BbIcon, BbSpinner } from 'bitboss-ui';
|
|
1784
|
-
import { useResourceContext } from '@/composables/useResourceContext';
|
|
1776
|
+
import { useResourceContext } from '@/composables/inertia-helpers/useResourceContext';
|
|
1785
1777
|
import CategoryCell from './CategoryCell.vue';
|
|
1786
1778
|
import { STATUS_LABEL, STATUS_VARIANT, useUploadCenter } from './context';
|
|
1787
1779
|
import type { ReceiptDetail } from '@/types';
|
|
@@ -1909,7 +1901,7 @@ const longDate = (value: string) =>
|
|
|
1909
1901
|
|
|
1910
1902
|
<script setup lang="ts">
|
|
1911
1903
|
import { BbBadge, BbButton, BbIcon, BbSpinner } from 'bitboss-ui';
|
|
1912
|
-
import { useResourceContext } from '@/composables/useResourceContext';
|
|
1904
|
+
import { useResourceContext } from '@/composables/inertia-helpers/useResourceContext';
|
|
1913
1905
|
import { STATUS_LABEL, STATUS_VARIANT, useUploadCenter } from './context';
|
|
1914
1906
|
import type { MerchantSummary } from '@/types';
|
|
1915
1907
|
|
|
@@ -29,9 +29,8 @@ Sibling recipes: [Vue](../vue/wizard-form.md) ·
|
|
|
29
29
|
the peek stack, the close semantics and the sidebar's out-of-flow
|
|
30
30
|
behaviour are all load-bearing here.
|
|
31
31
|
- `<BbConfirm />` and `<BbToast />` mounted once in the `createInertiaApp` render root — never in a page.
|
|
32
|
-
- From the [Inertia Helpers](../../guides/inertia-helpers.md) toolkit
|
|
33
|
-
`
|
|
34
|
-
`useResourceContext`.
|
|
32
|
+
- From the [Inertia Helpers](../../guides/inertia-helpers.md) toolkit, installed with
|
|
33
|
+
`npx bitboss-ui add useConfirmOnRouteLeave usePromiseForm useProp useQuery useResourceContext`.
|
|
35
34
|
- [App Layout](../../guides/app-layout.md) and
|
|
36
35
|
[Page Shell](../../guides/page-shell.md) copied into
|
|
37
36
|
`src/components/layout/` per their guides — the page renders inside this
|
|
@@ -152,10 +151,10 @@ import {
|
|
|
152
151
|
usePageShellContext,
|
|
153
152
|
type PageShellContext,
|
|
154
153
|
} from '@/components/layout/usePageShellContext';
|
|
155
|
-
import { useConfirmOnRouteLeave } from '@/composables/useConfirmOnRouteLeave';
|
|
156
|
-
import { usePromiseForm } from '@/composables/usePromiseForm';
|
|
157
|
-
import { useProp } from '@/composables/useProp';
|
|
158
|
-
import { useQuery } from '@/composables/useQuery';
|
|
154
|
+
import { useConfirmOnRouteLeave } from '@/composables/inertia-helpers/useConfirmOnRouteLeave';
|
|
155
|
+
import { usePromiseForm } from '@/composables/inertia-helpers/usePromiseForm';
|
|
156
|
+
import { useProp } from '@/composables/inertia-helpers/useProp';
|
|
157
|
+
import { useQuery } from '@/composables/inertia-helpers/useQuery';
|
|
159
158
|
import type { Campaign, Segment } from '@/types';
|
|
160
159
|
|
|
161
160
|
/**
|
|
@@ -760,9 +759,9 @@ onMounted(() => {
|
|
|
760
759
|
});
|
|
761
760
|
|
|
762
761
|
const crumbs = computed(() => [
|
|
763
|
-
{
|
|
764
|
-
{
|
|
765
|
-
{
|
|
762
|
+
{ value: 'dashboard', label: 'Dashboard', href: '/dashboard' },
|
|
763
|
+
{ value: 'campaigns', label: 'Campaigns', href: '/campaigns' },
|
|
764
|
+
{ value: 'setup', label: ctx.campaign.value?.name ?? 'New campaign' },
|
|
766
765
|
]);
|
|
767
766
|
|
|
768
767
|
// The summary shows only the CURRENT step's issues, and only once the user
|
|
@@ -906,8 +905,6 @@ const status = (key: StepKey) => ctx.stepStatus(key);
|
|
|
906
905
|
|
|
907
906
|
<BbSelect
|
|
908
907
|
v-model="ctx.draft.countries"
|
|
909
|
-
item-text="label"
|
|
910
|
-
item-value="value"
|
|
911
908
|
:items="COUNTRIES"
|
|
912
909
|
label="Limit to countries"
|
|
913
910
|
label-mode="outside"
|
|
@@ -1080,8 +1077,6 @@ const errorsFor = (field: string) => ctx.fieldErrors('content', field);
|
|
|
1080
1077
|
|
|
1081
1078
|
<BbRadioGroup
|
|
1082
1079
|
v-model="ctx.draft.sendMode"
|
|
1083
|
-
item-text="label"
|
|
1084
|
-
item-value="value"
|
|
1085
1080
|
:items="[
|
|
1086
1081
|
{
|
|
1087
1082
|
label: 'Send now — goes out as soon as you confirm on Review',
|
|
@@ -1111,8 +1106,6 @@ const errorsFor = (field: string) => ctx.fieldErrors('content', field);
|
|
|
1111
1106
|
<BbSelect
|
|
1112
1107
|
v-model="ctx.draft.timezone"
|
|
1113
1108
|
:errors="errorsFor('timezone')"
|
|
1114
|
-
item-text="label"
|
|
1115
|
-
item-value="value"
|
|
1116
1109
|
:items="TIMEZONES"
|
|
1117
1110
|
label="Timezone"
|
|
1118
1111
|
label-mode="outside"
|
|
@@ -1453,7 +1446,7 @@ const isReview = computed(() => ctx.step.value === 'review');
|
|
|
1453
1446
|
|
|
1454
1447
|
<script setup lang="ts">
|
|
1455
1448
|
import { BbButton, BbIcon, BbSpinner } from 'bitboss-ui';
|
|
1456
|
-
import { useResourceContext } from '@/composables/useResourceContext';
|
|
1449
|
+
import { useResourceContext } from '@/composables/inertia-helpers/useResourceContext';
|
|
1457
1450
|
import type { SegmentDetail } from '@/types';
|
|
1458
1451
|
|
|
1459
1452
|
const props = defineProps<{ segmentId: number }>();
|
|
@@ -1621,8 +1614,6 @@ the file is unchanged, plus `BbCalendar` in its import):
|
|
|
1621
1614
|
<BbSelect
|
|
1622
1615
|
v-model="ctx.draft.timezone"
|
|
1623
1616
|
:errors="errorsFor('timezone')"
|
|
1624
|
-
item-text="label"
|
|
1625
|
-
item-value="value"
|
|
1626
1617
|
:items="TIMEZONES"
|
|
1627
1618
|
label="Timezone"
|
|
1628
1619
|
label-mode="outside"
|
|
@@ -625,9 +625,9 @@ export function useApprovalsInbox(): ApprovalsInboxContext {
|
|
|
625
625
|
<BbBreadcrumbs
|
|
626
626
|
class="min-w-0 flex-auto"
|
|
627
627
|
:items="[
|
|
628
|
-
{
|
|
629
|
-
{
|
|
630
|
-
{
|
|
628
|
+
{ value: 'dashboard', label: 'Dashboard', to: '/dashboard' },
|
|
629
|
+
{ value: 'finance', label: 'Finance', to: '/finance' },
|
|
630
|
+
{ value: 'approvals', label: 'Approvals' },
|
|
631
631
|
]"
|
|
632
632
|
/>
|
|
633
633
|
<BbTextInput
|
|
@@ -654,22 +654,22 @@ export function useApprovalsInbox(): ApprovalsInboxContext {
|
|
|
654
654
|
compact
|
|
655
655
|
:items="[
|
|
656
656
|
{
|
|
657
|
-
|
|
657
|
+
value: 'needsApproval',
|
|
658
658
|
label: `Needs approval · ${ctx.tabCounts.value.needsApproval}`,
|
|
659
659
|
href: '?tab=needsApproval',
|
|
660
660
|
},
|
|
661
661
|
{
|
|
662
|
-
|
|
662
|
+
value: 'approved',
|
|
663
663
|
label: `Approved · ${ctx.tabCounts.value.approved}`,
|
|
664
664
|
href: '?tab=approved',
|
|
665
665
|
},
|
|
666
666
|
{
|
|
667
|
-
|
|
667
|
+
value: 'rejected',
|
|
668
668
|
label: `Rejected · ${ctx.tabCounts.value.rejected}`,
|
|
669
669
|
href: '?tab=rejected',
|
|
670
670
|
},
|
|
671
671
|
{
|
|
672
|
-
|
|
672
|
+
value: 'all',
|
|
673
673
|
label: `All · ${ctx.tabCounts.value.all}`,
|
|
674
674
|
href: '?tab=all',
|
|
675
675
|
},
|
|
@@ -859,7 +859,6 @@ const rowClass = (item: Expense) =>
|
|
|
859
859
|
<BbSelectPopover
|
|
860
860
|
v-model="ctx.filters.categories"
|
|
861
861
|
item-text="text"
|
|
862
|
-
item-value="value"
|
|
863
862
|
:items="CATEGORY_OPTIONS"
|
|
864
863
|
multiple
|
|
865
864
|
>
|
|
@@ -837,9 +837,9 @@ export function useBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
837
837
|
<BbBreadcrumbs
|
|
838
838
|
class="min-w-0 flex-auto"
|
|
839
839
|
:items="[
|
|
840
|
-
{
|
|
841
|
-
{
|
|
842
|
-
{
|
|
840
|
+
{ value: 'product', label: 'Product', to: '/product' },
|
|
841
|
+
{ value: 'sprints', label: 'Sprints', to: '/sprints' },
|
|
842
|
+
{ value: 'sprint-24', label: 'Sprint 24' },
|
|
843
843
|
]"
|
|
844
844
|
/>
|
|
845
845
|
<div class="flex shrink-0 items-center gap-2">
|
|
@@ -876,17 +876,17 @@ export function useBacklogWorkspace(): BacklogWorkspaceContext {
|
|
|
876
876
|
compact
|
|
877
877
|
:items="[
|
|
878
878
|
{
|
|
879
|
-
|
|
879
|
+
value: 'backlog',
|
|
880
880
|
label: `Backlog · ${ctx.tabCounts.value.backlog}`,
|
|
881
881
|
href: '?tab=backlog',
|
|
882
882
|
},
|
|
883
883
|
{
|
|
884
|
-
|
|
884
|
+
value: 'current',
|
|
885
885
|
label: `Current sprint · ${ctx.tabCounts.value.current}`,
|
|
886
886
|
href: '?tab=current',
|
|
887
887
|
},
|
|
888
888
|
{
|
|
889
|
-
|
|
889
|
+
value: 'done',
|
|
890
890
|
label: `Done · ${ctx.tabCounts.value.done}`,
|
|
891
891
|
href: '?tab=done',
|
|
892
892
|
},
|
|
@@ -1090,8 +1090,6 @@ const rowClass = (item: Issue) =>
|
|
|
1090
1090
|
<BbSelectPopover
|
|
1091
1091
|
v-model="ctx.filters.status"
|
|
1092
1092
|
disable-writing
|
|
1093
|
-
item-text="label"
|
|
1094
|
-
item-value="value"
|
|
1095
1093
|
:items="STATUS_OPTIONS"
|
|
1096
1094
|
multiple
|
|
1097
1095
|
>
|
|
@@ -1124,8 +1122,6 @@ const rowClass = (item: Issue) =>
|
|
|
1124
1122
|
<BbSelectPopover
|
|
1125
1123
|
v-model="ctx.filters.priority"
|
|
1126
1124
|
disable-writing
|
|
1127
|
-
item-text="label"
|
|
1128
|
-
item-value="value"
|
|
1129
1125
|
:items="PRIORITY_OPTIONS"
|
|
1130
1126
|
multiple
|
|
1131
1127
|
>
|
|
@@ -1291,8 +1287,6 @@ const commit = (event: Event) => {
|
|
|
1291
1287
|
<BbSelectPopover
|
|
1292
1288
|
compact
|
|
1293
1289
|
disable-writing
|
|
1294
|
-
item-text="label"
|
|
1295
|
-
item-value="value"
|
|
1296
1290
|
:items="STATUS_OPTIONS"
|
|
1297
1291
|
:model-value="status"
|
|
1298
1292
|
width="180px"
|
|
@@ -1369,8 +1363,6 @@ const label = computed(
|
|
|
1369
1363
|
<BbSelectPopover
|
|
1370
1364
|
compact
|
|
1371
1365
|
disable-writing
|
|
1372
|
-
item-text="label"
|
|
1373
|
-
item-value="value"
|
|
1374
1366
|
:items="PRIORITY_OPTIONS"
|
|
1375
1367
|
:model-value="priority"
|
|
1376
1368
|
width="160px"
|
|
@@ -1435,8 +1427,8 @@ const label = computed(
|
|
|
1435
1427
|
<template>
|
|
1436
1428
|
<!-- Provider-backed people picker. The provider is the ONE shared
|
|
1437
1429
|
`searchMembers` — lazy per instance, so a row nobody opens never fetches.
|
|
1438
|
-
The whole member is the value (no item-value
|
|
1439
|
-
stores it. -->
|
|
1430
|
+
The whole member is the value (no item-value, and a Member has no `value`
|
|
1431
|
+
of its own), matching how the row stores it. -->
|
|
1440
1432
|
<BbSelectPopover
|
|
1441
1433
|
compact
|
|
1442
1434
|
item-text="name"
|
|
@@ -1502,20 +1494,20 @@ const assignee = computed(() => ctx.valueOf(props.issue, 'assignee'));
|
|
|
1502
1494
|
:boundary="boundary"
|
|
1503
1495
|
:items="[
|
|
1504
1496
|
{
|
|
1505
|
-
|
|
1506
|
-
|
|
1497
|
+
value: 'duplicate',
|
|
1498
|
+
label: 'Duplicate',
|
|
1507
1499
|
'prepend:icon': 'lucide:copy',
|
|
1508
1500
|
onClick: () => ctx.duplicateIssue(issue),
|
|
1509
1501
|
},
|
|
1510
1502
|
{
|
|
1511
|
-
|
|
1512
|
-
|
|
1503
|
+
value: 'next-sprint',
|
|
1504
|
+
label: 'Move to next sprint',
|
|
1513
1505
|
'prepend:icon': 'lucide:arrow-right',
|
|
1514
1506
|
onClick: () => ctx.moveToNextSprint(issue),
|
|
1515
1507
|
},
|
|
1516
1508
|
{
|
|
1517
|
-
|
|
1518
|
-
|
|
1509
|
+
value: 'delete',
|
|
1510
|
+
label: 'Delete',
|
|
1519
1511
|
'prepend:icon': 'lucide:trash-2',
|
|
1520
1512
|
variant: 'destructive',
|
|
1521
1513
|
onClick: () => ctx.deleteIssue(issue),
|
|
@@ -1560,8 +1552,6 @@ const ctx = useBacklogWorkspace();
|
|
|
1560
1552
|
menu clears the bar. -->
|
|
1561
1553
|
<BbSelectPopover
|
|
1562
1554
|
disable-writing
|
|
1563
|
-
item-text="label"
|
|
1564
|
-
item-value="value"
|
|
1565
1555
|
:items="STATUS_OPTIONS"
|
|
1566
1556
|
:model-value="null"
|
|
1567
1557
|
:offset="8"
|
|
@@ -587,36 +587,36 @@ const warehouseId = ref('denver');
|
|
|
587
587
|
|
|
588
588
|
const accountMenuItems: BbDropdownItem[] = [
|
|
589
589
|
{
|
|
590
|
-
|
|
591
|
-
|
|
590
|
+
value: 'theme',
|
|
591
|
+
label: 'Theme',
|
|
592
592
|
'prepend:icon': 'lucide:sun-moon',
|
|
593
593
|
// A submenu opener (`items`) whose own `items` is one selectable
|
|
594
594
|
// group — `selectable: true` gives single-choice radio semantics and a
|
|
595
595
|
// check on the picked row, with no bordered field anywhere.
|
|
596
596
|
items: [
|
|
597
597
|
{
|
|
598
|
-
|
|
598
|
+
id: 'theme-opts',
|
|
599
599
|
selectable: true,
|
|
600
600
|
items: [
|
|
601
|
-
{
|
|
602
|
-
{
|
|
603
|
-
{
|
|
601
|
+
{ value: 'system', label: 'System' },
|
|
602
|
+
{ value: 'light', label: 'Light' },
|
|
603
|
+
{ value: 'dark', label: 'Dark' },
|
|
604
604
|
],
|
|
605
605
|
},
|
|
606
606
|
],
|
|
607
607
|
},
|
|
608
608
|
{
|
|
609
|
-
|
|
610
|
-
|
|
609
|
+
value: 'warehouse',
|
|
610
|
+
label: 'Warehouse',
|
|
611
611
|
'prepend:icon': 'lucide:warehouse',
|
|
612
612
|
items: [
|
|
613
613
|
{
|
|
614
|
-
|
|
614
|
+
id: 'warehouse-opts',
|
|
615
615
|
selectable: true,
|
|
616
616
|
items: [
|
|
617
|
-
{
|
|
618
|
-
{
|
|
619
|
-
{
|
|
617
|
+
{ value: 'denver', label: 'Denver DC' },
|
|
618
|
+
{ value: 'reno', label: 'Reno DC' },
|
|
619
|
+
{ value: 'columbus', label: 'Columbus DC' },
|
|
620
620
|
],
|
|
621
621
|
},
|
|
622
622
|
],
|
|
@@ -624,14 +624,14 @@ const accountMenuItems: BbDropdownItem[] = [
|
|
|
624
624
|
// A trailing separator section (a nested array) for plain navigation rows.
|
|
625
625
|
[
|
|
626
626
|
{
|
|
627
|
-
|
|
628
|
-
|
|
627
|
+
value: 'settings',
|
|
628
|
+
label: 'Settings',
|
|
629
629
|
'prepend:icon': 'lucide:settings',
|
|
630
630
|
href: '/settings',
|
|
631
631
|
},
|
|
632
632
|
{
|
|
633
|
-
|
|
634
|
-
|
|
633
|
+
value: 'signout',
|
|
634
|
+
label: 'Sign out',
|
|
635
635
|
'prepend:icon': 'lucide:log-out',
|
|
636
636
|
href: '/logout',
|
|
637
637
|
method: 'post',
|
|
@@ -694,8 +694,8 @@ export function useOnboardingWorkspace(): OnboardingWorkspaceContext {
|
|
|
694
694
|
<BbBreadcrumbs
|
|
695
695
|
class="min-w-0 flex-auto"
|
|
696
696
|
:items="[
|
|
697
|
-
{
|
|
698
|
-
{
|
|
697
|
+
{ value: 'dashboard', label: 'Dashboard', to: '/dashboard' },
|
|
698
|
+
{ value: 'getting-started', label: 'Getting started' },
|
|
699
699
|
]"
|
|
700
700
|
/>
|
|
701
701
|
<BbButton
|
|
@@ -1064,8 +1064,6 @@ const ctx = useOnboardingWorkspace();
|
|
|
1064
1064
|
v-model="role"
|
|
1065
1065
|
class="w-44"
|
|
1066
1066
|
compact
|
|
1067
|
-
item-text="label"
|
|
1068
|
-
item-value="value"
|
|
1069
1067
|
:items="roles"
|
|
1070
1068
|
label="Role"
|
|
1071
1069
|
label-mode="outside"
|
|
@@ -1408,8 +1406,6 @@ import { BbButton } from 'bitboss-ui';
|
|
|
1408
1406
|
v-if="ctx.reminders.enabled"
|
|
1409
1407
|
class="max-w-72"
|
|
1410
1408
|
compact
|
|
1411
|
-
item-text="label"
|
|
1412
|
-
item-value="value"
|
|
1413
1409
|
:items="cadences"
|
|
1414
1410
|
label="Reminder schedule"
|
|
1415
1411
|
label-mode="outside"
|
|
@@ -545,9 +545,9 @@ export function useOwnershipAtlas(): OwnershipAtlasContext {
|
|
|
545
545
|
<BbBreadcrumbs
|
|
546
546
|
class="min-w-0 flex-auto"
|
|
547
547
|
:items="[
|
|
548
|
-
{
|
|
549
|
-
{
|
|
550
|
-
{
|
|
548
|
+
{ value: 'admin', label: 'Admin', to: '/admin' },
|
|
549
|
+
{ value: 'access', label: 'Access', to: '/access' },
|
|
550
|
+
{ value: 'ownership', label: 'Ownership' },
|
|
551
551
|
]"
|
|
552
552
|
/>
|
|
553
553
|
<div class="flex shrink-0 items-center gap-2">
|
|
@@ -593,13 +593,13 @@ export function useOwnershipAtlas(): OwnershipAtlasContext {
|
|
|
593
593
|
v-model="ctx.tab.value"
|
|
594
594
|
compact
|
|
595
595
|
:items="[
|
|
596
|
-
{
|
|
596
|
+
{ value: 'all', label: `All · ${ctx.tabCounts.value.all}` },
|
|
597
597
|
{
|
|
598
|
-
|
|
598
|
+
value: 'americas',
|
|
599
599
|
label: `Americas · ${ctx.tabCounts.value.americas}`,
|
|
600
600
|
},
|
|
601
|
-
{
|
|
602
|
-
{
|
|
601
|
+
{ value: 'emea', label: `EMEA · ${ctx.tabCounts.value.emea}` },
|
|
602
|
+
{ value: 'apac', label: `APAC · ${ctx.tabCounts.value.apac}` },
|
|
603
603
|
]"
|
|
604
604
|
/>
|
|
605
605
|
|
|
@@ -962,8 +962,6 @@ const monthLabel = (value: string) =>
|
|
|
962
962
|
<BbSelectPopover
|
|
963
963
|
v-model="ctx.filters.kinds"
|
|
964
964
|
clearable
|
|
965
|
-
item-text="label"
|
|
966
|
-
item-value="value"
|
|
967
965
|
:items="kindOptions"
|
|
968
966
|
multiple
|
|
969
967
|
>
|
|
@@ -847,12 +847,12 @@ const ctx = provideInvoiceForm();
|
|
|
847
847
|
|
|
848
848
|
// A real trail, ≥ 2 linked levels; the current page carries no target.
|
|
849
849
|
const trail = computed(() => [
|
|
850
|
-
{
|
|
851
|
-
{
|
|
852
|
-
{
|
|
850
|
+
{ value: 'dashboard', label: 'Dashboard', to: '/dashboard' },
|
|
851
|
+
{ value: 'billing', label: 'Billing', to: '/billing' },
|
|
852
|
+
{ value: 'invoices', label: 'Invoices', to: '/invoices' },
|
|
853
853
|
{
|
|
854
|
-
|
|
855
|
-
|
|
854
|
+
value: 'invoice',
|
|
855
|
+
label:
|
|
856
856
|
ctx.mode === 'edit'
|
|
857
857
|
? (ctx.invoiceNumber.value ?? 'Invoice')
|
|
858
858
|
: 'New invoice',
|