bitboss-ui 2.1.134 → 3.0.0-alpha.1

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.
Files changed (1358) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +244 -21
  3. package/bin/bitboss-ui-mcp.mjs +557 -0
  4. package/bin/bitboss-ui.mjs +626 -0
  5. package/dist/ai/BbAccordion.md +522 -113
  6. package/dist/ai/BbAlert.md +377 -197
  7. package/dist/ai/BbAsterisk.md +46 -0
  8. package/dist/ai/BbAvatar.md +454 -178
  9. package/dist/ai/BbBadge.md +695 -225
  10. package/dist/ai/BbBadgeButton.md +54 -0
  11. package/dist/ai/BbBaseButton.md +489 -0
  12. package/dist/ai/BbBaseCheckbox.md +49 -0
  13. package/dist/ai/BbBaseCheckboxGroup.md +64 -0
  14. package/dist/ai/BbBaseCheckboxIcon.md +174 -0
  15. package/dist/ai/BbBaseColorInput.md +64 -0
  16. package/dist/ai/BbBaseColorPalette.md +39 -0
  17. package/dist/ai/BbBaseDatePicker.md +42 -0
  18. package/dist/ai/BbBaseDatePickerInput.md +73 -0
  19. package/dist/ai/BbBaseInputContainer.md +48 -0
  20. package/dist/ai/BbBaseNumberInput.md +71 -0
  21. package/dist/ai/BbBaseRadio.md +46 -0
  22. package/dist/ai/BbBaseRadioGroup.md +63 -0
  23. package/dist/ai/BbBaseRadioIcon.md +187 -0
  24. package/dist/ai/BbBaseRating.md +51 -0
  25. package/dist/ai/BbBaseSelect.md +88 -0
  26. package/dist/ai/BbBaseSlider.md +56 -0
  27. package/dist/ai/BbBaseSwitch.md +49 -0
  28. package/dist/ai/BbBaseSwitchGroup.md +64 -0
  29. package/dist/ai/BbBaseSwitchIcon.md +184 -0
  30. package/dist/ai/BbBaseTag.md +68 -0
  31. package/dist/ai/BbBaseTextInput.md +75 -0
  32. package/dist/ai/BbBaseTextarea.md +62 -0
  33. package/dist/ai/BbBaseTimePickerInput.md +62 -0
  34. package/dist/ai/BbBreadcrumbs.md +542 -503
  35. package/dist/ai/BbButton.md +767 -636
  36. package/dist/ai/BbCheckbox.md +572 -254
  37. package/dist/ai/BbCheckboxGroup.md +561 -361
  38. package/dist/ai/BbCollapsible.md +419 -103
  39. package/dist/ai/BbColorInput.md +529 -323
  40. package/dist/ai/BbColorPalette.md +565 -330
  41. package/dist/ai/BbConfirm.md +612 -136
  42. package/dist/ai/BbConfirmPortal.md +28 -0
  43. package/dist/ai/BbDatePicker.md +244 -0
  44. package/dist/ai/BbDatePickerInput.md +706 -388
  45. package/dist/ai/BbDialog.md +770 -99
  46. package/dist/ai/BbDropdown.md +1054 -763
  47. package/dist/ai/BbDropdownButton.md +511 -615
  48. package/dist/ai/BbDropdownGroup.md +34 -0
  49. package/dist/ai/BbDropzone.md +1148 -436
  50. package/dist/ai/BbForm.md +239 -0
  51. package/dist/ai/BbIcon.md +379 -212
  52. package/dist/ai/BbIndicator.md +283 -0
  53. package/dist/ai/BbNumberInput.md +713 -355
  54. package/dist/ai/BbOffCanvas.md +875 -498
  55. package/dist/ai/BbPagination.md +483 -535
  56. package/dist/ai/BbPopover.md +583 -546
  57. package/dist/ai/BbProgress.md +456 -69
  58. package/dist/ai/BbRadio.md +343 -229
  59. package/dist/ai/BbRadioGroup.md +426 -353
  60. package/dist/ai/BbRating.md +361 -226
  61. package/dist/ai/BbSelect.md +1380 -536
  62. package/dist/ai/BbSelectPopover.md +1240 -1579
  63. package/dist/ai/BbSlider.md +478 -257
  64. package/dist/ai/BbSmoothHeight.md +472 -139
  65. package/dist/ai/BbSpinner.md +718 -131
  66. package/dist/ai/BbSwitch.md +549 -119
  67. package/dist/ai/BbSwitchGroup.md +503 -214
  68. package/dist/ai/BbTable.md +1956 -2358
  69. package/dist/ai/BbTabs.md +1113 -0
  70. package/dist/ai/BbTabsList.md +29 -0
  71. package/dist/ai/BbTabsPanes.md +27 -0
  72. package/dist/ai/BbTabsRoot.md +57 -0
  73. package/dist/ai/BbTag.md +393 -292
  74. package/dist/ai/BbTextInput.md +852 -333
  75. package/dist/ai/BbTextarea.md +836 -255
  76. package/dist/ai/BbTimePicker.md +231 -0
  77. package/dist/ai/BbTimePickerInput.md +196 -0
  78. package/dist/ai/BbToast.md +624 -196
  79. package/dist/ai/BbToastPortal.md +28 -0
  80. package/dist/ai/BbTooltip.md +443 -346
  81. package/dist/ai/BbTree.md +984 -235
  82. package/dist/ai/ChipsBox.md +27 -199
  83. package/dist/ai/ClearableButton.md +21 -55
  84. package/dist/ai/CommaBox.md +25 -200
  85. package/dist/ai/CommonInputWrapper.md +42 -0
  86. package/dist/ai/CommonPopover.md +30 -510
  87. package/dist/ai/ErrorIcon.md +19 -56
  88. package/dist/ai/FlatListBox.md +35 -379
  89. package/dist/ai/GroupedListBox.md +37 -535
  90. package/dist/ai/GuidesComponent.md +21 -0
  91. package/dist/ai/ListBox.md +38 -231
  92. package/dist/ai/OptionsContainer.md +34 -253
  93. package/dist/ai/WarningIcon.md +21 -0
  94. package/dist/ai/components.json +15883 -0
  95. package/dist/ai/composables/useBbConfig.md +80 -0
  96. package/dist/ai/composables/useBbFormContext.md +110 -0
  97. package/dist/ai/composables/useBbTableContext.md +164 -0
  98. package/dist/ai/composables/useBbTabsContext.md +118 -0
  99. package/dist/ai/composables/useBroadcastChannelInstance.md +97 -0
  100. package/dist/ai/composables/useConfirm.md +306 -0
  101. package/dist/ai/composables/useCountdown.md +84 -0
  102. package/dist/ai/composables/useId.md +60 -0
  103. package/dist/ai/composables/useMobile.md +85 -0
  104. package/dist/ai/composables/useToast.md +230 -0
  105. package/dist/ai/guides/agent-contract.md +108 -0
  106. package/dist/ai/guides/ai-router.md +111 -0
  107. package/dist/ai/guides/app-layout.md +295 -0
  108. package/dist/ai/guides/coherence-playbook.md +136 -0
  109. package/dist/ai/guides/component-picker.md +195 -0
  110. package/dist/ai/guides/design-language.md +461 -0
  111. package/dist/ai/guides/design-tokens.md +424 -0
  112. package/dist/ai/guides/fetch-items-playbook.md +161 -0
  113. package/dist/ai/guides/floating-bottom-panel.md +191 -0
  114. package/dist/ai/guides/icons-policy.md +257 -0
  115. package/dist/ai/guides/inertia-helpers.md +1394 -0
  116. package/dist/ai/guides/inline-edit-playbook.md +258 -0
  117. package/dist/ai/guides/installation-and-plugin-setup.md +377 -0
  118. package/dist/ai/guides/migration/components/bb-alert.md +37 -0
  119. package/dist/ai/guides/migration/components/bb-avatar.md +24 -0
  120. package/dist/ai/guides/migration/components/bb-badge.md +110 -0
  121. package/dist/ai/guides/migration/components/bb-breadcrumbs.md +26 -0
  122. package/dist/ai/guides/migration/components/bb-button.md +55 -0
  123. package/dist/ai/guides/migration/components/bb-checkbox-group.md +54 -0
  124. package/dist/ai/guides/migration/components/bb-checkbox.md +45 -0
  125. package/dist/ai/guides/migration/components/bb-chip.md +35 -0
  126. package/dist/ai/guides/migration/components/bb-collapsible.md +26 -0
  127. package/dist/ai/guides/migration/components/bb-color-input.md +23 -0
  128. package/dist/ai/guides/migration/components/bb-color-palette.md +31 -0
  129. package/dist/ai/guides/migration/components/bb-date-picker-input.md +84 -0
  130. package/dist/ai/guides/migration/components/bb-dialog.md +46 -0
  131. package/dist/ai/guides/migration/components/bb-dropdown-button.md +31 -0
  132. package/dist/ai/guides/migration/components/bb-dropdown.md +36 -0
  133. package/dist/ai/guides/migration/components/bb-dropzone.md +27 -0
  134. package/dist/ai/guides/migration/components/bb-icon.md +27 -0
  135. package/dist/ai/guides/migration/components/bb-off-canvas.md +25 -0
  136. package/dist/ai/guides/migration/components/bb-offcanvas.md +54 -0
  137. package/dist/ai/guides/migration/components/bb-pagination.md +24 -0
  138. package/dist/ai/guides/migration/components/bb-popover.md +52 -0
  139. package/dist/ai/guides/migration/components/bb-rating.md +24 -0
  140. package/dist/ai/guides/migration/components/bb-select-popover.md +58 -0
  141. package/dist/ai/guides/migration/components/bb-select.md +68 -0
  142. package/dist/ai/guides/migration/components/bb-slider.md +25 -0
  143. package/dist/ai/guides/migration/components/bb-smooth-height.md +45 -0
  144. package/dist/ai/guides/migration/components/bb-spinner.md +23 -0
  145. package/dist/ai/guides/migration/components/bb-table.md +66 -0
  146. package/dist/ai/guides/migration/components/bb-tabs.md +47 -0
  147. package/dist/ai/guides/migration/components/bb-tag.md +29 -0
  148. package/dist/ai/guides/migration/components/bb-text-input.md +37 -0
  149. package/dist/ai/guides/migration/components/bb-toast.md +47 -0
  150. package/dist/ai/guides/migration/components/bb-tooltip.md +34 -0
  151. package/dist/ai/guides/migration/components/bb-tree.md +77 -0
  152. package/dist/ai/guides/migration/components/use-confirm.md +46 -0
  153. package/dist/ai/guides/migration/v2-to-v3.md +649 -0
  154. package/dist/ai/guides/options-items-playbook.md +222 -0
  155. package/dist/ai/guides/page-shell.md +314 -0
  156. package/dist/ai/guides/validated-forms.md +177 -0
  157. package/dist/ai/index.md +156 -32
  158. package/dist/ai/recipes/inertia/approvals-inbox.md +1598 -0
  159. package/dist/ai/recipes/inertia/inline-edit-workspace.md +1733 -0
  160. package/dist/ai/recipes/inertia/onboarding.md +1765 -0
  161. package/dist/ai/recipes/inertia/ownership-atlas.md +1281 -0
  162. package/dist/ai/recipes/inertia/record-form.md +1442 -0
  163. package/dist/ai/recipes/inertia/records-workspace.md +1328 -0
  164. package/dist/ai/recipes/inertia/upload-center.md +1926 -0
  165. package/dist/ai/recipes/inertia/wizard-form.md +1477 -0
  166. package/dist/ai/recipes/nuxt/approvals-inbox.md +1561 -0
  167. package/dist/ai/recipes/nuxt/inline-edit-workspace.md +1690 -0
  168. package/dist/ai/recipes/nuxt/onboarding.md +1698 -0
  169. package/dist/ai/recipes/nuxt/record-form.md +1456 -0
  170. package/dist/ai/recipes/nuxt/records-workspace.md +1314 -0
  171. package/dist/ai/recipes/nuxt/upload-center.md +1847 -0
  172. package/dist/ai/recipes/nuxt/wizard-form.md +1486 -0
  173. package/dist/ai/recipes/vue/approvals-inbox.md +1479 -0
  174. package/dist/ai/recipes/vue/inline-edit-workspace.md +1581 -0
  175. package/dist/ai/recipes/vue/onboarding.md +1653 -0
  176. package/dist/ai/recipes/vue/record-form.md +1540 -0
  177. package/dist/ai/recipes/vue/records-workspace.md +1230 -0
  178. package/dist/ai/recipes/vue/upload-center.md +1806 -0
  179. package/dist/ai/recipes/vue/wizard-form.md +1418 -0
  180. package/dist/ai/source/BbAccordion.md +122 -0
  181. package/dist/ai/source/BbAlert.md +396 -0
  182. package/dist/ai/source/BbAsterisk.md +32 -0
  183. package/dist/ai/source/BbAvatar.md +256 -0
  184. package/dist/ai/source/BbBadge.md +560 -0
  185. package/dist/ai/source/BbBadgeButton.md +490 -0
  186. package/dist/ai/source/BbBaseButton.md +682 -0
  187. package/dist/ai/source/BbBaseCheckbox.md +459 -0
  188. package/dist/ai/source/BbBaseCheckboxGroup.md +554 -0
  189. package/dist/ai/source/BbBaseCheckboxIcon.md +201 -0
  190. package/dist/ai/source/BbBaseColorInput.md +413 -0
  191. package/dist/ai/source/BbBaseColorPalette.md +934 -0
  192. package/dist/ai/source/BbBaseDatePicker.md +1001 -0
  193. package/dist/ai/source/BbBaseDatePickerInput.md +1781 -0
  194. package/dist/ai/source/BbBaseInputContainer.md +1148 -0
  195. package/dist/ai/source/BbBaseNumberInput.md +615 -0
  196. package/dist/ai/source/BbBaseRadio.md +377 -0
  197. package/dist/ai/source/BbBaseRadioGroup.md +499 -0
  198. package/dist/ai/source/BbBaseRadioIcon.md +153 -0
  199. package/dist/ai/source/BbBaseRating.md +573 -0
  200. package/dist/ai/source/BbBaseSelect.md +895 -0
  201. package/dist/ai/source/BbBaseSlider.md +1085 -0
  202. package/dist/ai/source/BbBaseSwitch.md +246 -0
  203. package/dist/ai/source/BbBaseSwitchGroup.md +302 -0
  204. package/dist/ai/source/BbBaseSwitchIcon.md +206 -0
  205. package/dist/ai/source/BbBaseTag.md +688 -0
  206. package/dist/ai/source/BbBaseTextInput.md +511 -0
  207. package/dist/ai/source/BbBaseTextarea.md +480 -0
  208. package/dist/ai/source/BbBaseTimePickerInput.md +1013 -0
  209. package/dist/ai/source/BbBreadcrumbs.md +811 -0
  210. package/dist/ai/source/BbButton.md +990 -0
  211. package/dist/ai/source/BbCheckbox.md +319 -0
  212. package/dist/ai/source/BbCheckboxGroup.md +412 -0
  213. package/dist/ai/source/BbCollapsible.md +133 -0
  214. package/dist/ai/source/BbColorInput.md +315 -0
  215. package/dist/ai/source/BbColorPalette.md +361 -0
  216. package/dist/ai/source/BbConfirm.md +173 -0
  217. package/dist/ai/source/BbConfirmPortal.md +74 -0
  218. package/dist/ai/source/BbDatePicker.md +725 -0
  219. package/dist/ai/source/BbDatePickerInput.md +518 -0
  220. package/dist/ai/source/BbDialog.md +812 -0
  221. package/dist/ai/source/BbDropdown.md +2369 -0
  222. package/dist/ai/source/BbDropdownButton.md +313 -0
  223. package/dist/ai/source/BbDropdownGroup.md +1249 -0
  224. package/dist/ai/source/BbDropzone.md +749 -0
  225. package/dist/ai/source/BbForm.md +100 -0
  226. package/dist/ai/source/BbIcon.md +212 -0
  227. package/dist/ai/source/BbIndicator.md +298 -0
  228. package/dist/ai/source/BbNumberInput.md +365 -0
  229. package/dist/ai/source/BbOffCanvas.md +1260 -0
  230. package/dist/ai/source/BbPagination.md +829 -0
  231. package/dist/ai/source/BbPopover.md +853 -0
  232. package/dist/ai/source/BbProgress.md +140 -0
  233. package/dist/ai/source/BbRadio.md +294 -0
  234. package/dist/ai/source/BbRadioGroup.md +401 -0
  235. package/dist/ai/source/BbRating.md +362 -0
  236. package/dist/ai/source/BbSelect.md +681 -0
  237. package/dist/ai/source/BbSelectPopover.md +2209 -0
  238. package/dist/ai/source/BbSlider.md +371 -0
  239. package/dist/ai/source/BbSmoothHeight.md +261 -0
  240. package/dist/ai/source/BbSpinner.md +127 -0
  241. package/dist/ai/source/BbSwitch.md +175 -0
  242. package/dist/ai/source/BbSwitchGroup.md +240 -0
  243. package/dist/ai/source/BbTable.md +3348 -0
  244. package/dist/ai/source/BbTabs.md +403 -0
  245. package/dist/ai/source/BbTabsList.md +578 -0
  246. package/dist/ai/source/BbTabsPanes.md +368 -0
  247. package/dist/ai/source/BbTabsRoot.md +372 -0
  248. package/dist/ai/source/BbTag.md +383 -0
  249. package/dist/ai/source/BbTextInput.md +345 -0
  250. package/dist/ai/source/BbTextarea.md +330 -0
  251. package/dist/ai/source/BbTimePicker.md +591 -0
  252. package/dist/ai/source/BbTimePickerInput.md +367 -0
  253. package/dist/ai/source/BbToast.md +524 -0
  254. package/dist/ai/source/BbToastPortal.md +482 -0
  255. package/dist/ai/source/BbTooltip.md +508 -0
  256. package/dist/ai/source/BbTree.md +319 -0
  257. package/dist/ai/source/ChipsBox.md +201 -0
  258. package/dist/ai/source/ClearableButton.md +70 -0
  259. package/dist/ai/source/CommaBox.md +202 -0
  260. package/dist/ai/source/CommonInputWrapper.md +554 -0
  261. package/dist/ai/source/CommonPopover.md +606 -0
  262. package/dist/ai/source/ErrorIcon.md +43 -0
  263. package/dist/ai/source/FlatListBox.md +396 -0
  264. package/dist/ai/source/GroupedListBox.md +540 -0
  265. package/dist/ai/source/GuidesComponent.md +383 -0
  266. package/dist/ai/source/ListBox.md +238 -0
  267. package/dist/ai/source/OptionsContainer.md +191 -0
  268. package/dist/ai/source/WarningIcon.md +47 -0
  269. package/dist/alert-variants.d.ts +12 -0
  270. package/dist/assets/css/reset.css_inline.js +4 -0
  271. package/dist/assets/svgs/alert.svg_raw.js +4 -0
  272. package/dist/assets/svgs/calendar.svg_raw.js +4 -0
  273. package/dist/assets/svgs/check_stroke.svg_raw.js +4 -0
  274. package/dist/assets/svgs/chevron_down.svg_raw.js +4 -0
  275. package/dist/assets/svgs/chevron_right.svg_raw.js +4 -0
  276. package/dist/assets/svgs/clear.svg_raw.js +4 -0
  277. package/dist/assets/svgs/clock.svg_raw.js +4 -0
  278. package/dist/assets/svgs/error.svg_raw.js +4 -0
  279. package/dist/assets/svgs/search.svg_raw.js +4 -0
  280. package/dist/assets/svgs/sort.svg_raw.js +4 -0
  281. package/dist/assets/svgs/spinner.svg_raw.js +4 -0
  282. package/dist/assets/svgs/user.svg_raw.js +4 -0
  283. package/dist/badge-variants.d.ts +18 -0
  284. package/dist/button-variants.d.ts +15 -0
  285. package/dist/components/BbAccordion/BbAccordion.vue.d.ts +9 -3
  286. package/dist/components/BbAccordion/BbAccordion.vue.js +6 -0
  287. package/dist/components/BbAccordion/BbAccordion.vue_vue_type_script_setup_true_lang.js +66 -0
  288. package/dist/components/BbAccordion/types.d.ts +10 -7
  289. package/dist/components/BbAlert/BbAlert.vue.d.ts +12 -3
  290. package/dist/components/BbAlert/BbAlert.vue.js +6 -0
  291. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +65 -0
  292. package/dist/components/BbAlert/types.d.ts +51 -12
  293. package/dist/components/BbAsterisk/BbAsterisk.vue.d.ts +3 -0
  294. package/dist/components/BbAsterisk/BbAsterisk.vue.js +6 -0
  295. package/dist/components/BbAsterisk/BbAsterisk.vue_vue_type_script_setup_true_lang.js +13 -0
  296. package/dist/components/BbAvatar/BbAvatar.vue.d.ts +5 -0
  297. package/dist/components/BbAvatar/BbAvatar.vue.js +6 -0
  298. package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +78 -0
  299. package/dist/components/BbAvatar/types.d.ts +4 -5
  300. package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +3 -0
  301. package/dist/components/BbBadge/BadgeAppendIcon.vue.js +5 -0
  302. package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +22 -0
  303. package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +15 -0
  304. package/dist/components/BbBadge/BadgeBodyContent.vue.js +5 -0
  305. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +34 -0
  306. package/dist/components/BbBadge/BbBadge.vue.d.ts +8 -1
  307. package/dist/components/BbBadge/BbBadge.vue.js +6 -0
  308. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +83 -0
  309. package/dist/components/BbBadge/BbBadgeButton.vue.d.ts +12 -0
  310. package/dist/components/BbBadge/BbBadgeButton.vue.js +5 -0
  311. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +54 -0
  312. package/dist/components/BbBadge/badgeButtonContext.d.ts +27 -0
  313. package/dist/components/BbBadge/badgeButtonContext.js +5 -0
  314. package/dist/components/BbBadge/types.d.ts +61 -16
  315. package/dist/components/BbBaseButton/BbBaseButton.vue.d.ts +13 -0
  316. package/dist/components/BbBaseButton/BbBaseButton.vue.js +6 -0
  317. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +171 -0
  318. package/dist/components/BbBaseButton/RouterComponent.vue.js +5 -0
  319. package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +28 -0
  320. package/dist/components/BbBaseButton/types.d.ts +191 -0
  321. package/dist/components/BbBaseButton/types.js +33 -0
  322. package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue.d.ts +40 -0
  323. package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue.js +6 -0
  324. package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +145 -0
  325. package/dist/components/BbBaseCheckbox/types.d.ts +222 -0
  326. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue.d.ts +19 -0
  327. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue.js +6 -0
  328. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +190 -0
  329. package/dist/components/BbBaseCheckboxGroup/types.d.ts +257 -0
  330. package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.d.ts +4 -0
  331. package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.js +6 -0
  332. package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue_vue_type_script_setup_true_lang.js +43 -0
  333. package/dist/components/BbBaseCheckboxIcon/types.d.ts +47 -0
  334. package/dist/components/BbBaseColorInput/BbBaseColorInput.vue.d.ts +42 -0
  335. package/dist/components/BbBaseColorInput/BbBaseColorInput.vue.js +6 -0
  336. package/dist/components/BbBaseColorInput/BbBaseColorInput.vue_vue_type_script_setup_true_lang.js +178 -0
  337. package/dist/components/BbBaseColorInput/types.d.ts +207 -0
  338. package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue.d.ts +13 -0
  339. package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue.js +6 -0
  340. package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue_vue_type_script_setup_true_lang.js +395 -0
  341. package/dist/components/BbBaseColorPalette/types.d.ts +40 -0
  342. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue.js +6 -0
  343. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +300 -0
  344. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +44 -0
  345. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.js +5 -0
  346. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +310 -0
  347. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue.d.ts +5 -0
  348. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue.js +5 -0
  349. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +63 -0
  350. package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue.d.ts +5 -0
  351. package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue.js +5 -0
  352. package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue_vue_type_script_setup_true_lang.js +75 -0
  353. package/dist/components/BbBaseDatePicker/typeahead.d.ts +112 -0
  354. package/dist/components/BbBaseDatePicker/typeahead.js +37 -0
  355. package/dist/components/BbBaseDatePicker/types.d.ts +97 -0
  356. package/dist/components/BbBaseDatePicker/useDatePickerContext.d.ts +58 -0
  357. package/dist/components/BbBaseDatePicker/useDatePickerContext.js +11 -0
  358. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +30 -0
  359. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.js +6 -0
  360. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +713 -0
  361. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue.d.ts +30 -0
  362. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue.js +6 -0
  363. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue_vue_type_script_setup_true_lang.js +204 -0
  364. package/dist/components/BbBaseDatePickerInput/types.d.ts +309 -0
  365. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +17 -0
  366. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.js +6 -0
  367. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +184 -0
  368. package/dist/components/BbBaseInputContainer/types.d.ts +185 -0
  369. package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue.d.ts +52 -0
  370. package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue.js +6 -0
  371. package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue_vue_type_script_setup_true_lang.js +211 -0
  372. package/dist/components/BbBaseNumberInput/types.d.ts +211 -0
  373. package/dist/components/BbBaseRadio/BbBaseRadio.vue.d.ts +33 -0
  374. package/dist/components/BbBaseRadio/BbBaseRadio.vue.js +6 -0
  375. package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +114 -0
  376. package/dist/components/BbBaseRadio/types.d.ts +179 -0
  377. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue.d.ts +19 -0
  378. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue.js +6 -0
  379. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +172 -0
  380. package/dist/components/BbBaseRadioGroup/types.d.ts +215 -0
  381. package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.d.ts +4 -0
  382. package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.js +6 -0
  383. package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue_vue_type_script_setup_true_lang.js +28 -0
  384. package/dist/components/BbBaseRadioIcon/types.d.ts +41 -0
  385. package/dist/components/BbBaseRating/BbBaseRating.vue.d.ts +38 -0
  386. package/dist/components/BbBaseRating/BbBaseRating.vue.js +6 -0
  387. package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +184 -0
  388. package/dist/components/BbBaseRating/types.d.ts +168 -0
  389. package/dist/components/BbBaseSelect/BbBaseSelect.vue.d.ts +19 -0
  390. package/dist/components/BbBaseSelect/BbBaseSelect.vue.js +6 -0
  391. package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +307 -0
  392. package/dist/components/BbBaseSelect/types.d.ts +294 -0
  393. package/dist/components/BbBaseSlider/BbBaseSlider.vue.d.ts +35 -0
  394. package/dist/components/BbBaseSlider/BbBaseSlider.vue.js +6 -0
  395. package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +324 -0
  396. package/dist/components/BbBaseSlider/types.d.ts +200 -0
  397. package/dist/components/BbBaseSwitch/BbBaseSwitch.vue.d.ts +35 -0
  398. package/dist/components/BbBaseSwitch/BbBaseSwitch.vue.js +6 -0
  399. package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +146 -0
  400. package/dist/components/BbBaseSwitch/types.d.ts +10 -0
  401. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue.d.ts +19 -0
  402. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue.js +6 -0
  403. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +190 -0
  404. package/dist/components/BbBaseSwitchGroup/types.d.ts +8 -0
  405. package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.d.ts +4 -0
  406. package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.js +6 -0
  407. package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue_vue_type_script_setup_true_lang.js +30 -0
  408. package/dist/components/BbBaseSwitchIcon/types.d.ts +48 -0
  409. package/dist/components/BbBaseTag/BbBaseTag.vue.d.ts +50 -0
  410. package/dist/components/BbBaseTag/BbBaseTag.vue.js +6 -0
  411. package/dist/components/BbBaseTag/BbBaseTag.vue_vue_type_script_setup_true_lang.js +266 -0
  412. package/dist/components/BbBaseTag/types.d.ts +160 -0
  413. package/dist/components/BbBaseTextInput/BbBaseTextInput.vue.d.ts +45 -0
  414. package/dist/components/BbBaseTextInput/BbBaseTextInput.vue.js +6 -0
  415. package/dist/components/BbBaseTextInput/BbBaseTextInput.vue_vue_type_script_setup_true_lang.js +200 -0
  416. package/dist/components/BbBaseTextInput/types.d.ts +209 -0
  417. package/dist/components/BbBaseTextarea/BbBaseTextarea.vue.d.ts +39 -0
  418. package/dist/components/BbBaseTextarea/BbBaseTextarea.vue.js +6 -0
  419. package/dist/components/BbBaseTextarea/BbBaseTextarea.vue_vue_type_script_setup_true_lang.js +175 -0
  420. package/dist/components/BbBaseTextarea/types.d.ts +170 -0
  421. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +27 -0
  422. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.js +6 -0
  423. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +517 -0
  424. package/dist/components/BbBaseTimePickerInput/types.d.ts +151 -0
  425. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.d.ts +0 -1
  426. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.js +6 -0
  427. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +224 -0
  428. package/dist/components/BbBreadcrumbs/estimateBreadcrumbItemWidth.js +47 -0
  429. package/dist/components/BbBreadcrumbs/types.d.ts +33 -22
  430. package/dist/components/BbButton/BbButton.vue.d.ts +6 -5
  431. package/dist/components/BbButton/BbButton.vue.js +6 -0
  432. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +177 -0
  433. package/dist/components/BbButton/types.d.ts +48 -47
  434. package/dist/components/BbCheckbox/BbCheckbox.vue.d.ts +4 -3
  435. package/dist/components/BbCheckbox/BbCheckbox.vue.js +6 -0
  436. package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +146 -0
  437. package/dist/components/BbCheckbox/types.d.ts +24 -10
  438. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.d.ts +2 -13
  439. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.js +6 -0
  440. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +190 -0
  441. package/dist/components/BbCheckboxGroup/types.d.ts +44 -23
  442. package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +2 -1
  443. package/dist/components/BbCollapsible/BbCollapsible.vue.js +6 -0
  444. package/dist/components/BbCollapsible/BbCollapsible.vue_vue_type_script_setup_true_lang.js +31 -0
  445. package/dist/components/BbCollapsible/types.d.ts +10 -9
  446. package/dist/components/BbColorInput/BbColorInput.vue.d.ts +10 -1
  447. package/dist/components/BbColorInput/BbColorInput.vue.js +6 -0
  448. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +177 -0
  449. package/dist/components/BbColorInput/types.d.ts +37 -11
  450. package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +5 -8
  451. package/dist/components/BbColorPalette/BbColorPalette.vue.js +5 -0
  452. package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +125 -0
  453. package/dist/components/BbColorPalette/types.d.ts +66 -53
  454. package/dist/components/BbConfirm/BbConfirm.vue.js +6 -0
  455. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +130 -0
  456. package/dist/components/BbConfirm/BbConfirmPortal.vue.d.ts +5 -6
  457. package/dist/components/BbConfirm/BbConfirmPortal.vue.js +5 -0
  458. package/dist/components/BbConfirm/BbConfirmPortal.vue_vue_type_script_setup_true_lang.js +19 -0
  459. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +37 -0
  460. package/dist/components/BbDatePicker/BbDatePicker.vue.js +6 -0
  461. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +319 -0
  462. package/dist/components/BbDatePicker/types.d.ts +155 -0
  463. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +3 -1
  464. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.js +6 -0
  465. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +179 -0
  466. package/dist/components/BbDatePickerInput/types.d.ts +127 -16
  467. package/dist/components/BbDialog/BbDialog.vue.d.ts +8 -6
  468. package/dist/components/BbDialog/BbDialog.vue.js +6 -0
  469. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +214 -0
  470. package/dist/components/BbDialog/types.d.ts +146 -1
  471. package/dist/components/BbDialog/useDialogStack.d.ts +5 -0
  472. package/dist/components/BbDialog/useDialogStack.js +20 -0
  473. package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +18 -0
  474. package/dist/components/BbDropdown/AdaptiveDropdown.vue.js +6 -0
  475. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +116 -0
  476. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +14 -7
  477. package/dist/components/BbDropdown/BbDropdown.vue.js +6 -0
  478. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +560 -0
  479. package/dist/components/BbDropdown/BbDropdownGroup.vue.d.ts +44 -0
  480. package/dist/components/BbDropdown/BbDropdownGroup.vue.js +5 -0
  481. package/dist/components/BbDropdown/BbDropdownGroup.vue_vue_type_script_setup_true_lang.js +36 -0
  482. package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +27 -0
  483. package/dist/components/BbDropdown/BbDropdownList.vue.js +6 -0
  484. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +464 -0
  485. package/dist/components/BbDropdown/DropdownPipelineResolver.vue.d.ts +16 -0
  486. package/dist/components/BbDropdown/DropdownPipelineResolver.vue.js +5 -0
  487. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +168 -0
  488. package/dist/components/BbDropdown/normalizeGroups.d.ts +18 -0
  489. package/dist/components/BbDropdown/normalizeGroups.js +46 -0
  490. package/dist/components/BbDropdown/types.d.ts +457 -45
  491. package/dist/components/BbDropdown/types.js +4 -0
  492. package/dist/components/BbDropdown/useDropdownContext.d.ts +89 -0
  493. package/dist/components/BbDropdown/useDropdownContext.js +9 -0
  494. package/dist/components/BbDropdown/useDropdownGroupRegistry.d.ts +108 -0
  495. package/dist/components/BbDropdown/useDropdownGroupRegistry.js +5 -0
  496. package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +3 -3
  497. package/dist/components/BbDropdownButton/BbDropdownButton.vue.js +6 -0
  498. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +119 -0
  499. package/dist/components/BbDropdownButton/types.d.ts +45 -52
  500. package/dist/components/BbDropzone/BbDropzone.vue.d.ts +5 -4
  501. package/dist/components/BbDropzone/BbDropzone.vue.js +6 -0
  502. package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +284 -0
  503. package/dist/components/BbDropzone/types.d.ts +55 -7
  504. package/dist/components/BbIcon/BbIcon.vue.d.ts +3 -2
  505. package/dist/components/BbIcon/BbIcon.vue.js +6 -0
  506. package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +65 -0
  507. package/dist/components/BbIcon/types.d.ts +6 -19
  508. package/dist/components/BbIndicator/BbIndicator.vue.d.ts +14 -0
  509. package/dist/components/BbIndicator/BbIndicator.vue.js +6 -0
  510. package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +56 -0
  511. package/dist/components/BbIndicator/types.d.ts +49 -0
  512. package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +12 -6
  513. package/dist/components/BbNumberInput/BbNumberInput.vue.js +6 -0
  514. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +194 -0
  515. package/dist/components/BbNumberInput/types.d.ts +31 -4
  516. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +10 -10
  517. package/dist/components/BbOffCanvas/BbOffCanvas.vue.js +6 -0
  518. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +284 -0
  519. package/dist/components/BbOffCanvas/types.d.ts +71 -39
  520. package/dist/components/BbOffCanvas/useOffCanvasStack.d.ts +25 -0
  521. package/dist/components/BbOffCanvas/useOffCanvasStack.js +68 -0
  522. package/dist/components/BbPagination/BbPagination.vue.d.ts +3 -4
  523. package/dist/components/BbPagination/BbPagination.vue.js +6 -0
  524. package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +244 -0
  525. package/dist/components/BbPagination/paginationFit.d.ts +38 -0
  526. package/dist/components/BbPagination/paginationFit.js +13 -0
  527. package/dist/components/BbPagination/types.d.ts +51 -16
  528. package/dist/components/BbPopover/BbPopover.vue.d.ts +10 -15
  529. package/dist/components/BbPopover/BbPopover.vue.js +6 -0
  530. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +310 -0
  531. package/dist/components/BbPopover/escapeStack.d.ts +6 -0
  532. package/dist/components/BbPopover/escapeStack.js +10 -0
  533. package/dist/components/BbPopover/types.d.ts +84 -31
  534. package/dist/components/BbProgress/BbProgress.vue.d.ts +1 -0
  535. package/dist/components/BbProgress/BbProgress.vue.js +6 -0
  536. package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +36 -0
  537. package/dist/components/BbProgress/types.d.ts +15 -1
  538. package/dist/components/BbRadio/BbRadio.vue.d.ts +5 -3
  539. package/dist/components/BbRadio/BbRadio.vue.js +6 -0
  540. package/dist/components/BbRadio/BbRadio.vue_vue_type_script_setup_true_lang.js +133 -0
  541. package/dist/components/BbRadio/types.d.ts +23 -9
  542. package/dist/components/BbRadioGroup/BbRadioGroup.vue.d.ts +4 -14
  543. package/dist/components/BbRadioGroup/BbRadioGroup.vue.js +6 -0
  544. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +184 -0
  545. package/dist/components/BbRadioGroup/types.d.ts +41 -22
  546. package/dist/components/BbRating/BbRating.vue.d.ts +4 -1
  547. package/dist/components/BbRating/BbRating.vue.js +6 -0
  548. package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +150 -0
  549. package/dist/components/BbRating/types.d.ts +37 -10
  550. package/dist/components/BbSelect/BbSelect.vue.d.ts +2 -11
  551. package/dist/components/BbSelect/BbSelect.vue.js +6 -0
  552. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +241 -0
  553. package/dist/components/BbSelect/types.d.ts +105 -59
  554. package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +1 -10
  555. package/dist/components/BbSelectPopover/BbSelectPopover.vue.js +6 -0
  556. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +637 -0
  557. package/dist/components/BbSelectPopover/types.d.ts +189 -102
  558. package/dist/components/BbSlider/BbSlider.vue.d.ts +3 -6
  559. package/dist/components/BbSlider/BbSlider.vue.js +6 -0
  560. package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +166 -0
  561. package/dist/components/BbSlider/types.d.ts +37 -13
  562. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +3 -1
  563. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.js +6 -0
  564. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue_vue_type_script_setup_true_lang.js +79 -0
  565. package/dist/components/BbSmoothHeight/types.d.ts +13 -2
  566. package/dist/components/BbSpinner/BbSpinner.vue.d.ts +1 -1
  567. package/dist/components/BbSpinner/BbSpinner.vue.js +6 -0
  568. package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +30 -0
  569. package/dist/components/BbSpinner/types.d.ts +10 -3
  570. package/dist/components/BbSwitch/BbSwitch.vue.d.ts +5 -3
  571. package/dist/components/BbSwitch/BbSwitch.vue.js +6 -0
  572. package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +142 -0
  573. package/dist/components/BbSwitch/types.d.ts +3 -1
  574. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.d.ts +4 -14
  575. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.js +6 -0
  576. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +190 -0
  577. package/dist/components/BbSwitchGroup/types.d.ts +3 -22
  578. package/dist/components/BbTable/BbTable.vue.d.ts +53 -31
  579. package/dist/components/BbTable/BbTable.vue.js +6 -0
  580. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +889 -0
  581. package/dist/components/BbTable/types.d.ts +176 -37
  582. package/dist/components/BbTable/utils.d.ts +9 -1
  583. package/dist/components/BbTable/utils.js +53 -0
  584. package/dist/components/BbTabs/BbTabs.vue.d.ts +20 -0
  585. package/dist/components/BbTabs/BbTabs.vue.js +6 -0
  586. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +64 -0
  587. package/dist/components/BbTabs/BbTabsList.vue.d.ts +19 -0
  588. package/dist/components/BbTabs/BbTabsList.vue.js +6 -0
  589. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +123 -0
  590. package/dist/components/BbTabs/BbTabsPanes.vue.d.ts +16 -0
  591. package/dist/components/BbTabs/BbTabsPanes.vue.js +6 -0
  592. package/dist/components/BbTabs/BbTabsPanes.vue_vue_type_script_setup_true_lang.js +35 -0
  593. package/dist/components/BbTabs/BbTabsRoot.vue.d.ts +20 -0
  594. package/dist/components/BbTabs/BbTabsRoot.vue.js +5 -0
  595. package/dist/components/BbTabs/BbTabsRoot.vue_vue_type_script_setup_true_lang.js +55 -0
  596. package/dist/components/BbTabs/types.d.ts +264 -0
  597. package/dist/components/BbTag/BbTag.vue.d.ts +19 -6
  598. package/dist/components/BbTag/BbTag.vue.js +6 -0
  599. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +187 -0
  600. package/dist/components/BbTag/types.d.ts +48 -17
  601. package/dist/components/BbTextInput/BbTextInput.vue.d.ts +10 -1
  602. package/dist/components/BbTextInput/BbTextInput.vue.js +6 -0
  603. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +195 -0
  604. package/dist/components/BbTextInput/types.d.ts +24 -4
  605. package/dist/components/BbTextarea/BbTextarea.vue.d.ts +10 -1
  606. package/dist/components/BbTextarea/BbTextarea.vue.js +6 -0
  607. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +178 -0
  608. package/dist/components/BbTextarea/types.d.ts +26 -2
  609. package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +33 -0
  610. package/dist/components/BbTimePicker/BbTimePicker.vue.js +6 -0
  611. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +244 -0
  612. package/dist/components/BbTimePicker/types.d.ts +129 -0
  613. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.d.ts +25 -0
  614. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.js +6 -0
  615. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +157 -0
  616. package/dist/components/BbTimePickerInput/types.d.ts +165 -0
  617. package/dist/components/BbToast/BbToast.vue.d.ts +2 -3
  618. package/dist/components/BbToast/BbToast.vue.js +6 -0
  619. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +35 -0
  620. package/dist/components/BbToast/BbToastMessage.vue.d.ts +17 -8
  621. package/dist/components/BbToast/BbToastMessage.vue.js +5 -0
  622. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +170 -0
  623. package/dist/components/BbToast/BbToastPortal.vue.d.ts +30 -0
  624. package/dist/components/BbToast/BbToastPortal.vue.js +5 -0
  625. package/dist/components/BbToast/BbToastPortal.vue_vue_type_script_setup_true_lang.js +19 -0
  626. package/dist/components/BbToast/BbToastRegion.vue.d.ts +8 -0
  627. package/dist/components/BbToast/BbToastRegion.vue.js +5 -0
  628. package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +100 -0
  629. package/dist/components/BbToast/types.d.ts +69 -5
  630. package/dist/components/BbTooltip/BbTooltip.vue.d.ts +4 -3
  631. package/dist/components/BbTooltip/BbTooltip.vue.js +6 -0
  632. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +160 -0
  633. package/dist/components/BbTooltip/types.d.ts +61 -11
  634. package/dist/components/BbTree/BbTree.vue.d.ts +26 -13
  635. package/dist/components/BbTree/BbTree.vue.js +6 -0
  636. package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +55 -0
  637. package/dist/components/BbTree/BbTreeLevel.vue.d.ts +19 -0
  638. package/dist/components/BbTree/BbTreeLevel.vue.js +5 -0
  639. package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +94 -0
  640. package/dist/components/BbTree/context.d.ts +17 -0
  641. package/dist/components/BbTree/context.js +4 -0
  642. package/dist/components/BbTree/types.d.ts +93 -42
  643. package/dist/components/ChipsBox/ChipsBox.vue.d.ts +2 -1
  644. package/dist/components/ChipsBox/ChipsBox.vue.js +5 -0
  645. package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +98 -0
  646. package/dist/components/ChipsBox/types.d.ts +12 -5
  647. package/dist/components/ClearableButton/ClearableButton.vue.d.ts +2 -1
  648. package/dist/components/ClearableButton/ClearableButton.vue.js +6 -0
  649. package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +19 -0
  650. package/dist/components/ClearableButton/types.d.ts +7 -1
  651. package/dist/components/CloseIcon/CloseButton.vue.d.ts +5 -0
  652. package/dist/components/CloseIcon/CloseButton.vue.js +7 -0
  653. package/dist/components/CloseIcon/CloseButton.vue_vue_type_script_setup_true_lang.js +23 -0
  654. package/dist/components/CloseIcon/types.d.ts +2 -0
  655. package/dist/components/CommaBox/CommaBox.vue.d.ts +2 -1
  656. package/dist/components/CommaBox/CommaBox.vue.js +6 -0
  657. package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +81 -0
  658. package/dist/components/CommaBox/types.d.ts +6 -7
  659. package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.d.ts +19 -0
  660. package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.js +6 -0
  661. package/dist/components/CommonInputWrapper/CommonInputWrapper.vue_vue_type_script_setup_true_lang.js +107 -0
  662. package/dist/components/CommonInputWrapper/types.d.ts +96 -0
  663. package/dist/components/CommonPopover/CommonPopover.vue.d.ts +3 -3
  664. package/dist/components/CommonPopover/CommonPopover.vue.js +6 -0
  665. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +160 -0
  666. package/dist/components/CommonPopover/types.d.ts +61 -16
  667. package/dist/components/ErrorIcon/ErrorIcon.vue.d.ts +2 -0
  668. package/dist/components/ErrorIcon/ErrorIcon.vue.js +6 -0
  669. package/dist/components/ErrorIcon/ErrorIcon.vue_vue_type_script_setup_true_lang.js +16 -0
  670. package/dist/components/FlatListBox/FlatListBox.vue.d.ts +2 -5
  671. package/dist/components/FlatListBox/FlatListBox.vue.js +5 -0
  672. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +167 -0
  673. package/dist/components/FlatListBox/types.d.ts +1 -1
  674. package/dist/components/GroupedListBox/GroupedListBox.vue.d.ts +2 -5
  675. package/dist/components/GroupedListBox/GroupedListBox.vue.js +5 -0
  676. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +218 -0
  677. package/dist/components/ListBox/ListBox.vue.d.ts +3 -6
  678. package/dist/components/ListBox/ListBox.vue.js +5 -0
  679. package/dist/components/ListBox/ListBox.vue_vue_type_script_setup_true_lang.js +112 -0
  680. package/dist/components/ListBox/types.d.ts +1 -1
  681. package/dist/components/OptionsContainer/OptionsContainer.vue.d.ts +1 -0
  682. package/dist/components/OptionsContainer/OptionsContainer.vue.js +5 -0
  683. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +52 -0
  684. package/dist/components/OptionsContainer/types.d.ts +14 -24
  685. package/dist/components/Transitions/ScaleFade.vue.js +5 -0
  686. package/dist/components/Transitions/ScaleFade.vue_vue_type_script_setup_true_lang.js +47 -0
  687. package/dist/components/Transitions/Slide.vue.js +7 -0
  688. package/dist/components/Transitions/Slide.vue_vue_type_script_setup_true_lang.js +28 -0
  689. package/dist/components/WarningIcon/WarningIcon.vue.d.ts +5 -0
  690. package/dist/components/WarningIcon/WarningIcon.vue.js +6 -0
  691. package/dist/components/WarningIcon/WarningIcon.vue_vue_type_script_setup_true_lang.js +16 -0
  692. package/dist/components/WarningIcon/types.d.ts +3 -0
  693. package/dist/composables/__testResets.d.ts +1 -0
  694. package/dist/composables/useActiveInactiveState.d.ts +4 -0
  695. package/dist/composables/useActiveInactiveState.js +21 -0
  696. package/dist/composables/useBaseOptions.d.ts +3 -3
  697. package/dist/composables/useBaseOptions.js +31 -0
  698. package/dist/composables/useBbConfig.d.ts +8 -37
  699. package/dist/composables/useBbConfig.js +5 -0
  700. package/dist/composables/useBbDropdownContext.d.ts +89 -0
  701. package/dist/composables/useBbDropdownContext.js +46 -0
  702. package/dist/composables/useBbFormContext.d.ts +90 -0
  703. package/dist/composables/useBbFormContext.js +69 -0
  704. package/dist/composables/useBbTableContext.d.ts +195 -0
  705. package/dist/composables/useBbTableContext.js +208 -0
  706. package/dist/composables/useBbTabsContext.d.ts +111 -0
  707. package/dist/composables/useBbTabsContext.js +219 -0
  708. package/dist/composables/useBreakpoint.d.ts +13 -0
  709. package/dist/composables/useBreakpoint.js +39 -0
  710. package/dist/composables/useBroadcastChannelInstance.d.ts +1 -3
  711. package/dist/composables/useBroadcastChannelInstance.js +39 -0
  712. package/dist/composables/useCancelableFunction.js +37 -0
  713. package/dist/composables/useCoherence.js +16 -0
  714. package/dist/composables/useConfirm.d.ts +257 -67
  715. package/dist/composables/useConfirm.js +122 -0
  716. package/dist/composables/useCountdown.js +42 -0
  717. package/dist/composables/useHashedWatcher.d.ts +17 -0
  718. package/dist/composables/useHashedWatcher.js +14 -0
  719. package/dist/composables/useId.d.ts +3 -2
  720. package/dist/composables/useIndexById.js +16 -0
  721. package/dist/composables/useInertiaPage.d.ts +10 -0
  722. package/dist/composables/useInertiaPage.js +8 -0
  723. package/dist/composables/useItemText.js +17 -0
  724. package/dist/composables/useItemValue.js +9 -0
  725. package/dist/composables/useItemsGetter.d.ts +1 -1
  726. package/dist/composables/useItemsGetter.js +30 -0
  727. package/dist/composables/useListboxFocus.js +66 -0
  728. package/dist/composables/useLocale.d.ts +1 -1
  729. package/dist/composables/useLocale.js +11 -0
  730. package/dist/composables/useLogger.d.ts +1 -1
  731. package/dist/composables/useLogger.js +10 -0
  732. package/dist/composables/useMinimalQueue.d.ts +1 -1
  733. package/dist/composables/useMobile.js +7 -0
  734. package/dist/composables/useOnFalsy.d.ts +2 -0
  735. package/dist/composables/useOnFalsy.js +9 -0
  736. package/dist/composables/useOnTruthy.d.ts +7 -0
  737. package/dist/composables/useOnTruthy.js +9 -0
  738. package/dist/composables/usePrefill.d.ts +2 -1
  739. package/dist/composables/usePrefill.js +24 -0
  740. package/dist/composables/useQuery.d.ts +15 -3
  741. package/dist/composables/useQuery.js +42 -0
  742. package/dist/composables/useRoute.js +11 -0
  743. package/dist/composables/useRouter.js +8 -0
  744. package/dist/composables/useSafeArea.d.ts +51 -0
  745. package/dist/composables/useSafeArea.js +16 -0
  746. package/dist/composables/useSegmentedFields.d.ts +103 -0
  747. package/dist/composables/useSegmentedFields.js +152 -0
  748. package/dist/composables/useTableWidthContext.d.ts +5 -0
  749. package/dist/composables/useTableWidthContext.js +42 -0
  750. package/dist/composables/useToast.d.ts +17 -73
  751. package/dist/composables/useToast.js +49 -0
  752. package/dist/composables/useTopLayer.d.ts +9 -0
  753. package/dist/composables/useTopLayer.js +7 -0
  754. package/dist/composables/useUntil.js +13 -0
  755. package/dist/composables/useViewportWidth.d.ts +17 -0
  756. package/dist/composables/useViewportWidth.js +6 -0
  757. package/dist/confirm-variants.d.ts +10 -0
  758. package/dist/deprecation/ai-deprecations.json.d.ts +784 -0
  759. package/dist/deprecation/ai-deprecations.json.js +4 -0
  760. package/dist/deprecation/removedProps.d.ts +3 -0
  761. package/dist/deprecation/removedProps.js +13 -0
  762. package/dist/directives/bbColor.d.ts +65 -0
  763. package/dist/directives/bbColor.js +24 -0
  764. package/dist/directives/bbDate.d.ts +66 -0
  765. package/dist/directives/bbDate.js +24 -0
  766. package/dist/directives/bbDropdown.d.ts +15 -11
  767. package/dist/directives/bbDropdown.js +23 -0
  768. package/dist/directives/bbTime.d.ts +64 -0
  769. package/dist/directives/bbTime.js +24 -0
  770. package/dist/directives/bbTooltip.d.ts +16 -11
  771. package/dist/directives/bbTooltip.js +24 -0
  772. package/dist/dropdown-item-variants.d.ts +10 -0
  773. package/dist/i18n/index.d.ts +51 -3
  774. package/dist/i18n/index.js +27 -0
  775. package/dist/i18n/locales/cs.json +115 -0
  776. package/dist/i18n/locales/da.json +115 -0
  777. package/dist/i18n/locales/de.json +115 -0
  778. package/dist/i18n/locales/el.json +115 -0
  779. package/dist/i18n/locales/en.json +115 -0
  780. package/dist/i18n/locales/es.json +115 -0
  781. package/dist/i18n/locales/fi.json +115 -0
  782. package/dist/i18n/locales/fr.json +115 -0
  783. package/dist/i18n/locales/hu.json +115 -0
  784. package/dist/i18n/locales/it.json +115 -0
  785. package/dist/i18n/locales/ja.json +115 -0
  786. package/dist/i18n/locales/ko.json +115 -0
  787. package/dist/i18n/locales/nb.json +115 -0
  788. package/dist/i18n/locales/nl.json +115 -0
  789. package/dist/i18n/locales/pl.json +115 -0
  790. package/dist/i18n/locales/pt.json +115 -0
  791. package/dist/i18n/locales/ro.json +115 -0
  792. package/dist/i18n/locales/ru.json +115 -0
  793. package/dist/i18n/locales/sv.json +115 -0
  794. package/dist/i18n/locales/tr.json +115 -0
  795. package/dist/i18n/locales/uk.json +115 -0
  796. package/dist/i18n/locales/zh-cn.json +115 -0
  797. package/dist/icons-whitelist.d.ts +8 -0
  798. package/dist/index.d.ts +94 -79
  799. package/dist/index.js +76 -82
  800. package/dist/indicator-variants.d.ts +13 -0
  801. package/dist/llms-full.txt +77073 -0
  802. package/dist/llms-medium.txt +1334 -0
  803. package/dist/llms.txt +103 -0
  804. package/dist/locale-blueprint.json +141 -0
  805. package/dist/nuxt-module.d.ts +3 -0
  806. package/dist/nuxt.js +19 -0
  807. package/dist/plugin.d.ts +4 -0
  808. package/dist/plugin.js +22 -0
  809. package/dist/reset.css +1 -0
  810. package/dist/reset.d.ts +0 -0
  811. package/dist/runtime/nuxt-plugin.d.ts +2 -0
  812. package/dist/runtime/nuxt-plugin.js +24 -0
  813. package/dist/styles.css +2 -0
  814. package/dist/styles.d.ts +0 -0
  815. package/dist/toast-variants.d.ts +13 -0
  816. package/dist/tooltip-variants.d.ts +10 -0
  817. package/dist/types/ActionButton.d.ts +32 -0
  818. package/dist/types/AlertVariant.d.ts +16 -0
  819. package/dist/types/BadgeVariant.d.ts +16 -0
  820. package/dist/types/ButtonVariant.d.ts +17 -0
  821. package/dist/types/Classes.d.ts +1 -1
  822. package/dist/types/ColumnName.d.ts +1 -1
  823. package/dist/types/CommonProps.d.ts +66 -279
  824. package/dist/types/Config.d.ts +84 -0
  825. package/dist/types/ConfirmVariant.d.ts +15 -0
  826. package/dist/types/DropdownItemVariant.d.ts +18 -0
  827. package/dist/types/Icon.d.ts +5 -7
  828. package/dist/types/IndicatorVariant.d.ts +16 -0
  829. package/dist/types/InputDirection.d.ts +15 -0
  830. package/dist/types/ItemAccessor.d.ts +21 -0
  831. package/dist/types/Placement.d.ts +6 -0
  832. package/dist/types/ResponsiveSize.d.ts +20 -0
  833. package/dist/types/SizeScale.d.ts +8 -0
  834. package/dist/types/ToastVariant.d.ts +17 -0
  835. package/dist/types/TooltipVariant.d.ts +18 -0
  836. package/dist/utilities/functions/bytesToUnit.d.ts +2 -0
  837. package/dist/utilities/functions/bytesToUnit.js +18 -0
  838. package/dist/utilities/functions/clampPrecision.js +10 -0
  839. package/dist/utilities/functions/convertDateValue.d.ts +23 -10
  840. package/dist/utilities/functions/convertDateValue.js +12 -0
  841. package/dist/utilities/functions/deburr.js +5 -0
  842. package/dist/utilities/functions/empty.js +5 -0
  843. package/dist/utilities/functions/flattenTree.d.ts +1 -1
  844. package/dist/utilities/functions/hash.js +5 -0
  845. package/dist/utilities/functions/isDateDisabled.d.ts +1 -0
  846. package/dist/utilities/functions/isDateDisabled.js +20 -0
  847. package/dist/utilities/functions/isEqual.js +5 -0
  848. package/dist/utilities/functions/isNotEmpty.js +5 -0
  849. package/dist/utilities/functions/matchAnyKey.d.ts +1 -1
  850. package/dist/utilities/functions/matchAnyKey.js +15 -0
  851. package/dist/utilities/functions/parseSize.d.ts +1 -1
  852. package/dist/utilities/functions/parseSize.js +15 -0
  853. package/dist/utilities/functions/percentage.js +11 -0
  854. package/dist/utilities/functions/pipe.d.ts +1 -1
  855. package/dist/utilities/functions/reject.d.ts +25 -0
  856. package/dist/utilities/functions/reject.js +28 -0
  857. package/dist/utilities/functions/resolveEnumProp.d.ts +19 -0
  858. package/dist/utilities/functions/resolveEnumProp.js +5 -0
  859. package/dist/utilities/functions/slotKey.d.ts +13 -0
  860. package/dist/utilities/functions/slotKey.js +4 -0
  861. package/dist/utilities/functions/sort.d.ts +2 -2
  862. package/dist/utilities/functions/sort.js +19 -0
  863. package/dist/utilities/functions/throttle.js +5 -0
  864. package/dist/utilities/functions/waitFor.d.ts +9 -2
  865. package/dist/utilities/functions/waitFor.js +14 -0
  866. package/dist/utilities/functions/warnRemovedAttrs.d.ts +11 -0
  867. package/dist/utilities/functions/warnRemovedAttrs.js +20 -0
  868. package/dist/utilities/functions/when.js +5 -0
  869. package/dist/utilities/misc/iconsInjectionKey.d.ts +15 -0
  870. package/dist/utilities/misc/iconsInjectionKey.js +4 -0
  871. package/dist/utilities/misc/transitions.d.ts +5 -0
  872. package/dist/utilities/misc/transitions.js +8 -0
  873. package/dist/utils/injectLibraryStyles.d.ts +6 -0
  874. package/dist/utils/injectLibraryStyles.js +38 -0
  875. package/dist/validated/BbCheckbox.vue.d.ts +29 -0
  876. package/dist/validated/BbCheckbox.vue.js +5 -0
  877. package/dist/validated/BbCheckbox.vue_vue_type_script_setup_true_lang.js +75 -0
  878. package/dist/validated/BbCheckboxGroup.vue.d.ts +34 -0
  879. package/dist/validated/BbCheckboxGroup.vue.js +5 -0
  880. package/dist/validated/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +76 -0
  881. package/dist/validated/BbColorInput.vue.d.ts +36 -0
  882. package/dist/validated/BbColorInput.vue.js +5 -0
  883. package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +71 -0
  884. package/dist/validated/BbDatePickerInput.vue.d.ts +40 -0
  885. package/dist/validated/BbDatePickerInput.vue.js +5 -0
  886. package/dist/validated/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +87 -0
  887. package/dist/validated/BbDropzone.vue.d.ts +24 -0
  888. package/dist/validated/BbDropzone.vue.js +5 -0
  889. package/dist/validated/BbDropzone.vue_vue_type_script_setup_true_lang.js +45 -0
  890. package/dist/validated/BbForm.vue.d.ts +28 -0
  891. package/dist/validated/BbForm.vue.js +5 -0
  892. package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +42 -0
  893. package/dist/validated/BbNumberInput.vue.d.ts +36 -0
  894. package/dist/validated/BbNumberInput.vue.js +5 -0
  895. package/dist/validated/BbNumberInput.vue_vue_type_script_setup_true_lang.js +72 -0
  896. package/dist/validated/BbRadioGroup.vue.d.ts +34 -0
  897. package/dist/validated/BbRadioGroup.vue.js +5 -0
  898. package/dist/validated/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +75 -0
  899. package/dist/validated/BbRating.vue.d.ts +30 -0
  900. package/dist/validated/BbRating.vue.js +5 -0
  901. package/dist/validated/BbRating.vue_vue_type_script_setup_true_lang.js +63 -0
  902. package/dist/validated/BbSelect.vue.d.ts +46 -0
  903. package/dist/validated/BbSelect.vue.js +5 -0
  904. package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +100 -0
  905. package/dist/validated/BbSlider.vue.d.ts +36 -0
  906. package/dist/validated/BbSlider.vue.js +5 -0
  907. package/dist/validated/BbSlider.vue_vue_type_script_setup_true_lang.js +69 -0
  908. package/dist/validated/BbSwitch.vue.d.ts +29 -0
  909. package/dist/validated/BbSwitch.vue.js +5 -0
  910. package/dist/validated/BbSwitch.vue_vue_type_script_setup_true_lang.js +75 -0
  911. package/dist/validated/BbSwitchGroup.vue.d.ts +34 -0
  912. package/dist/validated/BbSwitchGroup.vue.js +5 -0
  913. package/dist/validated/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +76 -0
  914. package/dist/validated/BbTag.vue.d.ts +36 -0
  915. package/dist/validated/BbTag.vue.js +5 -0
  916. package/dist/validated/BbTag.vue_vue_type_script_setup_true_lang.js +72 -0
  917. package/dist/validated/BbTextInput.vue.d.ts +36 -0
  918. package/dist/validated/BbTextInput.vue.js +5 -0
  919. package/dist/validated/BbTextInput.vue_vue_type_script_setup_true_lang.js +72 -0
  920. package/dist/validated/BbTextarea.vue.d.ts +36 -0
  921. package/dist/validated/BbTextarea.vue.js +5 -0
  922. package/dist/validated/BbTextarea.vue_vue_type_script_setup_true_lang.js +70 -0
  923. package/dist/validated/BbTimePickerInput.vue.d.ts +36 -0
  924. package/dist/validated/BbTimePickerInput.vue.js +5 -0
  925. package/dist/validated/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +78 -0
  926. package/dist/validated/index.d.ts +29 -0
  927. package/dist/validated/useValidatedField.d.ts +52 -0
  928. package/dist/validated/useValidatedField.js +51 -0
  929. package/dist/validated.js +21 -0
  930. package/dist/vite-plugin.d.ts +217 -0
  931. package/dist/vite.js +530 -0
  932. package/llms.txt +105 -0
  933. package/package.json +161 -59
  934. package/scripts/lib/__fixtures__/validated-manifest.json +65 -0
  935. package/scripts/lib/ensure-manifest.mjs +39 -0
  936. package/scripts/lib/eslint-plugin-autofix.node.test.mjs +109 -0
  937. package/scripts/lib/eslint-plugin.mjs +285 -0
  938. package/scripts/lib/eslint-plugin.node.test.mjs +161 -0
  939. package/scripts/lib/html-attributes.mjs +191 -0
  940. package/scripts/lib/mcp-config.mjs +126 -0
  941. package/scripts/lib/migrate-fix.mjs +115 -0
  942. package/scripts/lib/validate-bb-markup.mjs +421 -0
  943. package/dist/ai/BaseButton.md +0 -449
  944. package/dist/ai/BaseCheckbox.md +0 -512
  945. package/dist/ai/BaseCheckboxGroup.md +0 -597
  946. package/dist/ai/BaseColorInput.md +0 -461
  947. package/dist/ai/BaseDatePicker.md +0 -739
  948. package/dist/ai/BaseDatePickerInput.md +0 -1517
  949. package/dist/ai/BaseDialog.md +0 -610
  950. package/dist/ai/BaseInputContainer.md +0 -570
  951. package/dist/ai/BaseNumberInput.md +0 -509
  952. package/dist/ai/BaseRadio.md +0 -405
  953. package/dist/ai/BaseRadioGroup.md +0 -535
  954. package/dist/ai/BaseRating.md +0 -489
  955. package/dist/ai/BaseSelect.md +0 -1742
  956. package/dist/ai/BaseSlider.md +0 -871
  957. package/dist/ai/BaseSwitch.md +0 -322
  958. package/dist/ai/BaseSwitchGroup.md +0 -298
  959. package/dist/ai/BaseTag.md +0 -623
  960. package/dist/ai/BaseTextInput.md +0 -392
  961. package/dist/ai/BaseTextarea.md +0 -398
  962. package/dist/ai/BbChip.md +0 -147
  963. package/dist/ai/BbIntersection.md +0 -120
  964. package/dist/ai/BbRatio.md +0 -61
  965. package/dist/ai/BbRows.md +0 -307
  966. package/dist/ai/BbTab.md +0 -950
  967. package/dist/ai/CommonInputInnerContainer.md +0 -414
  968. package/dist/ai/CommonInputOuterContainer.md +0 -55
  969. package/dist/components/BaseButton/BaseButton.vue.d.ts +0 -14
  970. package/dist/components/BaseButton/types.d.ts +0 -159
  971. package/dist/components/BaseCheckbox/BaseCheckbox.vue.d.ts +0 -39
  972. package/dist/components/BaseCheckbox/types.d.ts +0 -213
  973. package/dist/components/BaseCheckboxGroup/BaseCheckboxGroup.vue.d.ts +0 -30
  974. package/dist/components/BaseCheckboxGroup/types.d.ts +0 -282
  975. package/dist/components/BaseColorInput/BaseColorInput.vue.d.ts +0 -35
  976. package/dist/components/BaseColorInput/ColorPalette.vue.d.ts +0 -13
  977. package/dist/components/BaseColorInput/types.d.ts +0 -233
  978. package/dist/components/BaseDatePicker/BaseDatePickerHeader.vue.d.ts +0 -15
  979. package/dist/components/BaseDatePicker/BaseDatePickerInputDaySelector.vue.d.ts +0 -58
  980. package/dist/components/BaseDatePicker/BaseDatePickerMonthSelector.vue.d.ts +0 -12
  981. package/dist/components/BaseDatePicker/BaseDatePickerYearSelector.vue.d.ts +0 -12
  982. package/dist/components/BaseDatePicker/types.d.ts +0 -100
  983. package/dist/components/BaseDatePickerInput/BaseDatePickerInput.vue.d.ts +0 -26
  984. package/dist/components/BaseDatePickerInput/types.d.ts +0 -206
  985. package/dist/components/BaseDialog/BaseDialog.vue.d.ts +0 -37
  986. package/dist/components/BaseDialog/types.d.ts +0 -180
  987. package/dist/components/BaseInputContainer/BaseInputContainer.vue.d.ts +0 -18
  988. package/dist/components/BaseInputContainer/types.d.ts +0 -126
  989. package/dist/components/BaseNumberInput/BaseNumberInput.vue.d.ts +0 -46
  990. package/dist/components/BaseNumberInput/types.d.ts +0 -191
  991. package/dist/components/BaseRadio/BaseRadio.vue.d.ts +0 -31
  992. package/dist/components/BaseRadio/types.d.ts +0 -173
  993. package/dist/components/BaseRadioGroup/BaseRadioGroup.vue.d.ts +0 -30
  994. package/dist/components/BaseRadioGroup/types.d.ts +0 -240
  995. package/dist/components/BaseRating/BaseRating.vue.d.ts +0 -35
  996. package/dist/components/BaseRating/types.d.ts +0 -144
  997. package/dist/components/BaseSelect/BaseSelect.vue.d.ts +0 -28
  998. package/dist/components/BaseSelect/types.d.ts +0 -470
  999. package/dist/components/BaseSlider/BaseSlider.vue.d.ts +0 -38
  1000. package/dist/components/BaseSlider/types.d.ts +0 -201
  1001. package/dist/components/BaseSwitch/BaseSwitch.vue.d.ts +0 -34
  1002. package/dist/components/BaseSwitch/types.d.ts +0 -25
  1003. package/dist/components/BaseSwitchGroup/BaseSwitchGroup.vue.d.ts +0 -30
  1004. package/dist/components/BaseSwitchGroup/types.d.ts +0 -8
  1005. package/dist/components/BaseTag/BaseTag.vue.d.ts +0 -37
  1006. package/dist/components/BaseTag/types.d.ts +0 -136
  1007. package/dist/components/BaseTextInput/BaseTextInput.vue.d.ts +0 -33
  1008. package/dist/components/BaseTextInput/types.d.ts +0 -166
  1009. package/dist/components/BaseTextarea/BaseTextarea.vue.d.ts +0 -31
  1010. package/dist/components/BaseTextarea/types.d.ts +0 -151
  1011. package/dist/components/BbChip/BbChip.vue.d.ts +0 -17
  1012. package/dist/components/BbChip/types.d.ts +0 -23
  1013. package/dist/components/BbIntersection/BbIntersection.vue.d.ts +0 -23
  1014. package/dist/components/BbIntersection/types.d.ts +0 -36
  1015. package/dist/components/BbRatio/BbRatio.vue.d.ts +0 -14
  1016. package/dist/components/BbRatio/types.d.ts +0 -15
  1017. package/dist/components/BbRows/BbRows.vue.d.ts +0 -62
  1018. package/dist/components/BbRows/types.d.ts +0 -21
  1019. package/dist/components/BbTab/BbTab.vue.d.ts +0 -27
  1020. package/dist/components/BbTab/types.d.ts +0 -186
  1021. package/dist/components/CommonInputInnerContainer/CommonInputInnerContainer.vue.d.ts +0 -15
  1022. package/dist/components/CommonInputInnerContainer/types.d.ts +0 -47
  1023. package/dist/components/CommonInputOuterContainer/CommonInputOuterContainer.vue.d.ts +0 -11
  1024. package/dist/components/CommonInputOuterContainer/types.d.ts +0 -16
  1025. package/dist/composables/useModalsState.d.ts +0 -5
  1026. package/dist/composables/useQueue.d.ts +0 -58
  1027. package/dist/composables/useWizard.d.ts +0 -85
  1028. package/dist/i18n/en.d.ts +0 -67
  1029. package/dist/i18n/it.d.ts +0 -67
  1030. package/dist/index.css +0 -2
  1031. package/dist/index100.js +0 -6
  1032. package/dist/index101.js +0 -300
  1033. package/dist/index102.js +0 -16
  1034. package/dist/index103.js +0 -16
  1035. package/dist/index104.js +0 -27
  1036. package/dist/index109.js +0 -19
  1037. package/dist/index11.js +0 -42
  1038. package/dist/index110.js +0 -12
  1039. package/dist/index111.js +0 -19
  1040. package/dist/index112.js +0 -25
  1041. package/dist/index114.js +0 -7
  1042. package/dist/index115.js +0 -241
  1043. package/dist/index116.js +0 -5
  1044. package/dist/index117.js +0 -42
  1045. package/dist/index118.js +0 -5
  1046. package/dist/index119.js +0 -53
  1047. package/dist/index120.js +0 -5
  1048. package/dist/index121.js +0 -32
  1049. package/dist/index122.js +0 -5
  1050. package/dist/index124.js +0 -52
  1051. package/dist/index125.js +0 -5
  1052. package/dist/index126.js +0 -223
  1053. package/dist/index128.js +0 -6
  1054. package/dist/index129.js +0 -162
  1055. package/dist/index13.js +0 -92
  1056. package/dist/index130.js +0 -25
  1057. package/dist/index131.js +0 -51
  1058. package/dist/index132.js +0 -5
  1059. package/dist/index133.js +0 -607
  1060. package/dist/index135.js +0 -6
  1061. package/dist/index136.js +0 -14
  1062. package/dist/index137.js +0 -153
  1063. package/dist/index139.js +0 -6
  1064. package/dist/index14.js +0 -306
  1065. package/dist/index140.js +0 -224
  1066. package/dist/index141.js +0 -5
  1067. package/dist/index143.js +0 -128
  1068. package/dist/index145.js +0 -6
  1069. package/dist/index146.js +0 -8
  1070. package/dist/index147.js +0 -182
  1071. package/dist/index149.js +0 -6
  1072. package/dist/index15.js +0 -10
  1073. package/dist/index151.js +0 -4
  1074. package/dist/index152.js +0 -95
  1075. package/dist/index154.js +0 -6
  1076. package/dist/index155.js +0 -168
  1077. package/dist/index157.js +0 -6
  1078. package/dist/index158.js +0 -145
  1079. package/dist/index16.js +0 -59
  1080. package/dist/index160.js +0 -6
  1081. package/dist/index161.js +0 -53
  1082. package/dist/index163.js +0 -6
  1083. package/dist/index164.js +0 -16
  1084. package/dist/index166.js +0 -35
  1085. package/dist/index168.js +0 -6
  1086. package/dist/index169.js +0 -89
  1087. package/dist/index171.js +0 -6
  1088. package/dist/index172.js +0 -82
  1089. package/dist/index174.js +0 -6
  1090. package/dist/index175.js +0 -38
  1091. package/dist/index176.js +0 -461
  1092. package/dist/index177.js +0 -28
  1093. package/dist/index178.js +0 -66
  1094. package/dist/index18.js +0 -35
  1095. package/dist/index180.js +0 -162
  1096. package/dist/index181.js +0 -5
  1097. package/dist/index182.js +0 -217
  1098. package/dist/index183.js +0 -5
  1099. package/dist/index184.js +0 -112
  1100. package/dist/index185.js +0 -5
  1101. package/dist/index186.js +0 -459
  1102. package/dist/index188.js +0 -6
  1103. package/dist/index19.js +0 -4
  1104. package/dist/index192.js +0 -268
  1105. package/dist/index194.js +0 -6
  1106. package/dist/index195.js +0 -124
  1107. package/dist/index197.js +0 -6
  1108. package/dist/index198.js +0 -174
  1109. package/dist/index2.js +0 -20
  1110. package/dist/index20.js +0 -9
  1111. package/dist/index200.js +0 -6
  1112. package/dist/index201.js +0 -224
  1113. package/dist/index203.js +0 -6
  1114. package/dist/index204.js +0 -135
  1115. package/dist/index206.js +0 -6
  1116. package/dist/index207.js +0 -5
  1117. package/dist/index208.js +0 -170
  1118. package/dist/index21.js +0 -35
  1119. package/dist/index210.js +0 -6
  1120. package/dist/index211.js +0 -37
  1121. package/dist/index213.js +0 -6
  1122. package/dist/index214.js +0 -63
  1123. package/dist/index216.js +0 -6
  1124. package/dist/index217.js +0 -74
  1125. package/dist/index219.js +0 -6
  1126. package/dist/index22.js +0 -6
  1127. package/dist/index220.js +0 -65
  1128. package/dist/index222.js +0 -6
  1129. package/dist/index223.js +0 -67
  1130. package/dist/index225.js +0 -6
  1131. package/dist/index226.js +0 -41
  1132. package/dist/index228.js +0 -6
  1133. package/dist/index229.js +0 -10
  1134. package/dist/index23.js +0 -7
  1135. package/dist/index230.js +0 -22
  1136. package/dist/index232.js +0 -8
  1137. package/dist/index233.js +0 -297
  1138. package/dist/index235.js +0 -6
  1139. package/dist/index236.js +0 -47
  1140. package/dist/index237.js +0 -165
  1141. package/dist/index239.js +0 -6
  1142. package/dist/index24.js +0 -9
  1143. package/dist/index241.js +0 -159
  1144. package/dist/index243.js +0 -6
  1145. package/dist/index244.js +0 -134
  1146. package/dist/index246.js +0 -6
  1147. package/dist/index247.js +0 -167
  1148. package/dist/index249.js +0 -6
  1149. package/dist/index25.js +0 -24
  1150. package/dist/index250.js +0 -147
  1151. package/dist/index252.js +0 -6
  1152. package/dist/index253.js +0 -35
  1153. package/dist/index255.js +0 -6
  1154. package/dist/index256.js +0 -65
  1155. package/dist/index258.js +0 -6
  1156. package/dist/index259.js +0 -19
  1157. package/dist/index260.js +0 -5
  1158. package/dist/index261.js +0 -160
  1159. package/dist/index263.js +0 -6
  1160. package/dist/index264.js +0 -60
  1161. package/dist/index266.js +0 -6
  1162. package/dist/index267.js +0 -134
  1163. package/dist/index269.js +0 -6
  1164. package/dist/index27.js +0 -4
  1165. package/dist/index271.js +0 -206
  1166. package/dist/index273.js +0 -6
  1167. package/dist/index274.js +0 -85
  1168. package/dist/index275.js +0 -5
  1169. package/dist/index276.js +0 -55
  1170. package/dist/index277.js +0 -5
  1171. package/dist/index278.js +0 -164
  1172. package/dist/index28.js +0 -8
  1173. package/dist/index280.js +0 -6
  1174. package/dist/index281.js +0 -145
  1175. package/dist/index283.js +0 -6
  1176. package/dist/index284.js +0 -11
  1177. package/dist/index285.js +0 -200
  1178. package/dist/index287.js +0 -6
  1179. package/dist/index288.js +0 -241
  1180. package/dist/index29.js +0 -7
  1181. package/dist/index290.js +0 -6
  1182. package/dist/index291.js +0 -21
  1183. package/dist/index293.js +0 -6
  1184. package/dist/index294.js +0 -125
  1185. package/dist/index296.js +0 -6
  1186. package/dist/index297.js +0 -161
  1187. package/dist/index299.js +0 -6
  1188. package/dist/index30.js +0 -118
  1189. package/dist/index300.js +0 -127
  1190. package/dist/index302.js +0 -6
  1191. package/dist/index303.js +0 -20
  1192. package/dist/index305.js +0 -6
  1193. package/dist/index306.js +0 -116
  1194. package/dist/index307.js +0 -5
  1195. package/dist/index308.js +0 -507
  1196. package/dist/index31.js +0 -10
  1197. package/dist/index310.js +0 -6
  1198. package/dist/index311.js +0 -196
  1199. package/dist/index313.js +0 -6
  1200. package/dist/index314.js +0 -142
  1201. package/dist/index316.js +0 -6
  1202. package/dist/index317.js +0 -134
  1203. package/dist/index319.js +0 -6
  1204. package/dist/index32.js +0 -28
  1205. package/dist/index320.js +0 -162
  1206. package/dist/index322.js +0 -6
  1207. package/dist/index323.js +0 -319
  1208. package/dist/index325.js +0 -6
  1209. package/dist/index326.js +0 -40
  1210. package/dist/index327.js +0 -43
  1211. package/dist/index328.js +0 -665
  1212. package/dist/index33.js +0 -5
  1213. package/dist/index330.js +0 -6
  1214. package/dist/index331.js +0 -155
  1215. package/dist/index333.js +0 -6
  1216. package/dist/index334.js +0 -142
  1217. package/dist/index336.js +0 -6
  1218. package/dist/index337.js +0 -155
  1219. package/dist/index339.js +0 -6
  1220. package/dist/index34.js +0 -112
  1221. package/dist/index340.js +0 -58
  1222. package/dist/index341.js +0 -5
  1223. package/dist/index342.js +0 -20
  1224. package/dist/index344.js +0 -6
  1225. package/dist/index345.js +0 -142
  1226. package/dist/index347.js +0 -6
  1227. package/dist/index349.js +0 -109
  1228. package/dist/index351.js +0 -6
  1229. package/dist/index353.js +0 -24
  1230. package/dist/index354.js +0 -23
  1231. package/dist/index355.js +0 -839
  1232. package/dist/index356.js +0 -474
  1233. package/dist/index357.js +0 -52
  1234. package/dist/index358.js +0 -7
  1235. package/dist/index36.js +0 -6
  1236. package/dist/index38.js +0 -63
  1237. package/dist/index39.js +0 -63
  1238. package/dist/index40.js +0 -9
  1239. package/dist/index42.js +0 -8
  1240. package/dist/index43.js +0 -179
  1241. package/dist/index44.js +0 -21
  1242. package/dist/index46.js +0 -385
  1243. package/dist/index48.js +0 -6
  1244. package/dist/index49.js +0 -33
  1245. package/dist/index5.js +0 -34
  1246. package/dist/index50.js +0 -12
  1247. package/dist/index51.js +0 -8
  1248. package/dist/index52.js +0 -106
  1249. package/dist/index53.js +0 -330
  1250. package/dist/index54.js +0 -97
  1251. package/dist/index55.js +0 -328
  1252. package/dist/index56.js +0 -28
  1253. package/dist/index57.js +0 -102
  1254. package/dist/index58.js +0 -157
  1255. package/dist/index6.js +0 -38
  1256. package/dist/index60.js +0 -6
  1257. package/dist/index61.js +0 -131
  1258. package/dist/index62.js +0 -5
  1259. package/dist/index65.js +0 -35
  1260. package/dist/index66.js +0 -26
  1261. package/dist/index68.js +0 -6
  1262. package/dist/index69.js +0 -54
  1263. package/dist/index7.js +0 -58
  1264. package/dist/index71.js +0 -6
  1265. package/dist/index72.js +0 -14
  1266. package/dist/index74.js +0 -6
  1267. package/dist/index75.js +0 -159
  1268. package/dist/index77.js +0 -6
  1269. package/dist/index78.js +0 -4
  1270. package/dist/index79.js +0 -4
  1271. package/dist/index80.js +0 -54
  1272. package/dist/index81.js +0 -5
  1273. package/dist/index82.js +0 -5
  1274. package/dist/index83.js +0 -141
  1275. package/dist/index85.js +0 -6
  1276. package/dist/index86.js +0 -65
  1277. package/dist/index88.js +0 -6
  1278. package/dist/index89.js +0 -30
  1279. package/dist/index9.js +0 -11
  1280. package/dist/index90.js +0 -19
  1281. package/dist/index91.js +0 -17
  1282. package/dist/index92.js +0 -9
  1283. package/dist/index93.js +0 -34
  1284. package/dist/index95.js +0 -16
  1285. package/dist/index96.js +0 -10
  1286. package/dist/index97.js +0 -18
  1287. package/dist/index98.js +0 -189
  1288. package/dist/types/VoidHtmlElements.d.ts +0 -1
  1289. package/dist/utilities/functions/add.d.ts +0 -1
  1290. package/dist/utilities/functions/booleanishToBoolean.d.ts +0 -6
  1291. package/dist/utilities/functions/capitalize.d.ts +0 -4
  1292. package/dist/utilities/functions/cloneDeep.d.ts +0 -1
  1293. package/dist/utilities/functions/debounce.d.ts +0 -1
  1294. package/dist/utilities/functions/drop.d.ts +0 -1
  1295. package/dist/utilities/functions/exceedsPrecision.d.ts +0 -1
  1296. package/dist/utilities/functions/findRight.d.ts +0 -4
  1297. package/dist/utilities/functions/findRightIndex.d.ts +0 -4
  1298. package/dist/utilities/functions/flow.d.ts +0 -1
  1299. package/dist/utilities/functions/getHueFromRGB.d.ts +0 -9
  1300. package/dist/utilities/functions/groupBy.d.ts +0 -6
  1301. package/dist/utilities/functions/gt.d.ts +0 -7
  1302. package/dist/utilities/functions/hexToRGB.d.ts +0 -7
  1303. package/dist/utilities/functions/hslToHex.d.ts +0 -1
  1304. package/dist/utilities/functions/includes.d.ts +0 -1
  1305. package/dist/utilities/functions/initial.d.ts +0 -1
  1306. package/dist/utilities/functions/isCssColor.d.ts +0 -5
  1307. package/dist/utilities/functions/lt.d.ts +0 -7
  1308. package/dist/utilities/functions/makeUrl.d.ts +0 -1
  1309. package/dist/utilities/functions/mapKeys.d.ts +0 -5
  1310. package/dist/utilities/functions/mapValues.d.ts +0 -1
  1311. package/dist/utilities/functions/matchesPropertyInsensitive.d.ts +0 -1
  1312. package/dist/utilities/functions/max.d.ts +0 -2
  1313. package/dist/utilities/functions/mean.d.ts +0 -4
  1314. package/dist/utilities/functions/merge.d.ts +0 -11
  1315. package/dist/utilities/functions/millisecondsTo.d.ts +0 -1
  1316. package/dist/utilities/functions/negate.d.ts +0 -4
  1317. package/dist/utilities/functions/normalizeItemGroups.d.ts +0 -13
  1318. package/dist/utilities/functions/omit.d.ts +0 -2
  1319. package/dist/utilities/functions/overEvery.d.ts +0 -4
  1320. package/dist/utilities/functions/pick.d.ts +0 -1
  1321. package/dist/utilities/functions/replace.d.ts +0 -1
  1322. package/dist/utilities/functions/replaceInTree.d.ts +0 -4
  1323. package/dist/utilities/functions/retry.d.ts +0 -5
  1324. package/dist/utilities/functions/roundToTheNearest.d.ts +0 -8
  1325. package/dist/utilities/functions/set.d.ts +0 -15
  1326. package/dist/utilities/functions/stub.d.ts +0 -6
  1327. package/dist/utilities/functions/transposePercent.d.ts +0 -9
  1328. package/dist/utilities/functions/tryTo.d.ts +0 -2
  1329. package/dist/utilities/functions/uniqBy.d.ts +0 -1
  1330. /package/dist/{index64.js → _virtual/_plugin-vue_export-helper.js} +0 -0
  1331. /package/dist/components/{BaseButton → BbBaseButton}/RouterComponent.vue.d.ts +0 -0
  1332. /package/dist/components/{BaseDatePicker/BaseDatePicker.vue.d.ts → BbBaseDatePicker/BbBaseDatePicker.vue.d.ts} +0 -0
  1333. /package/dist/{index165.js → composables/useArray.js} +0 -0
  1334. /package/dist/{index17.js → composables/useFrameworkDetection.js} +0 -0
  1335. /package/dist/{index12.js → composables/useId.js} +0 -0
  1336. /package/dist/{index352.js → directives/createPopoverDirective.js} +0 -0
  1337. /package/dist/{index107.js → utilities/functions/chunk.js} +0 -0
  1338. /package/dist/{index8.js → utilities/functions/clamp.js} +0 -0
  1339. /package/dist/{index150.js → utilities/functions/curry.js} +0 -0
  1340. /package/dist/{index45.js → utilities/functions/extractDomContainer.js} +0 -0
  1341. /package/dist/{index270.js → utilities/functions/findInTree.js} +0 -0
  1342. /package/dist/{index348.js → utilities/functions/flattenTree.js} +0 -0
  1343. /package/dist/{index41.js → utilities/functions/get.js} +0 -0
  1344. /package/dist/{index189.js → utilities/functions/head.js} +0 -0
  1345. /package/dist/{index108.js → utilities/functions/identity.js} +0 -0
  1346. /package/dist/{index179.js → utilities/functions/indexBy.js} +0 -0
  1347. /package/dist/{index37.js → utilities/functions/isHex.js} +0 -0
  1348. /package/dist/{index94.js → utilities/functions/isNil.js} +0 -0
  1349. /package/dist/{index26.js → utilities/functions/isNotNil.js} +0 -0
  1350. /package/dist/{index105.js → utilities/functions/last.js} +0 -0
  1351. /package/dist/{index142.js → utilities/functions/noop.js} +0 -0
  1352. /package/dist/{index231.js → utilities/functions/parseWidthString.js} +0 -0
  1353. /package/dist/{index240.js → utilities/functions/pickBy.js} +0 -0
  1354. /package/dist/{index123.js → utilities/functions/range.js} +0 -0
  1355. /package/dist/{index190.js → utilities/functions/snapToStep.js} +0 -0
  1356. /package/dist/{index191.js → utilities/functions/transpose.js} +0 -0
  1357. /package/dist/{index106.js → utilities/functions/validateDateFormat.js} +0 -0
  1358. /package/dist/{index10.js → utilities/functions/wait.js} +0 -0
@@ -0,0 +1,1230 @@
1
+ ---
2
+ title: Records Workspace (Vue)
3
+ summary: Full-anatomy invoices workspace for a vue-router SPA — breadcrumbs + page search, pill filter rail, href tabs with counts, one-click status cells, bulk bottom panel, and a stacked peek sidebar, all through one coopting page context.
4
+ ---
5
+
6
+ # Recipe: Records Workspace (Vue)
7
+
8
+ The flagship advanced-page recipe: a Stripe-invoices × Linear list workspace
9
+ for a **plain Vue SPA with vue-router**. Every row of the standard anatomy —
10
+ app chrome, breadcrumbs + page search, pill filter rail, href tabs with live
11
+ counts, a dense server-paged table, a floating bulk-action bar, and a
12
+ stacked peek sidebar — wired through one coopting page context so every leaf
13
+ component takes zero props beyond the record it renders.
14
+
15
+ Sibling recipes: [Nuxt](../nuxt/records-workspace.md) ·
16
+ [Inertia](../inertia/records-workspace.md).
17
+
18
+ ## Prerequisites
19
+
20
+ - `<BbConfirm />` and `<BbToast />` mounted once in the app root.
21
+ - [App Layout](../../guides/app-layout.md), [Page Shell](../../guides/page-shell.md)
22
+ and [Floating Bottom Panel](../../guides/floating-bottom-panel.md) copied
23
+ into `src/components/layout/` per their guides — every recipe page assumes
24
+ this chrome exists and renders inside it.
25
+
26
+ ## Key ideas
27
+
28
+ - **One coopting page context.** `provideInvoicesWorkspace()` joins the
29
+ page-shell stack and the table context once, owns filters/tab/dialogs,
30
+ and exposes complete actions. Every leaf calls `useInvoicesWorkspace()`
31
+ and nothing else — zero prop drilling anywhere on the page.
32
+ - **The table is driven entirely through its context.** No selection
33
+ v-models, no page refs: the context handle seeds `perPage`, the fetch
34
+ writes `total`, `BbPagination` joins by `table-id`, and the bulk bar
35
+ reads the same handle.
36
+ - **Tabs are URL filters.** `BbTabs` items carry `href` (`?tab=paid`) and
37
+ live counts; the active tab is one more dependency of the fetch.
38
+ - **Clicking the name of a thing peeks it.** Invoice number → invoice peek
39
+ (fresh stack); customer name — in a row or inside a peek — → customer
40
+ peek **stacked** with a back arrow. Peeks are workbenches: status
41
+ control, properties, line items, activity, payments.
42
+ - **Filters are compact pills** (`BbSelectPopover` triggers + a range date
43
+ input) with a clear-all that renders only while something is active.
44
+ - **Buttons are `md` by default** (28px, flush beside `compact` inputs);
45
+ `sm` only in the table rows, the peeks' headers and the bottom bar.
46
+
47
+ - **Spread the filters object into `dependencies`.** `BbTable` hash-compares
48
+ `dependencies`; it does not deep-watch them. Passing the reactive `filters`
49
+ proxy itself tracks only its identity — which never changes — so the table
50
+ never refetches. `{ ...ctx.filters }` reads every field during render, so any
51
+ field change yields a new, differently-hashed array. Read `.value` off the
52
+ refs for the same reason: context members are not auto-unwrapped in a template.
53
+
54
+ ## Page anatomy
55
+
56
+ ```
57
+ InvoicesWorkspace/
58
+ Index.vue ← assembly: PageShell slots, table, tabs, pagination
59
+ context.ts ← coopting page context (shell + table + filters + actions)
60
+ FilterRail.vue ← pill filters + clear-all
61
+ StatusCell.vue ← one-click status change (badge → BbSelectPopover)
62
+ RowActions.vue ← per-row "…" dropdown
63
+ SelectionBar.vue ← bulk actions in the floating bottom panel
64
+ InvoicePeek.vue ← sidebar workbench, stack level 1
65
+ CustomerPeek.vue ← stacked peek, back arrow via the shell
66
+ RecordPaymentDialog.vue ← page-level dialog, driven by the context
67
+ ```
68
+
69
+ Chrome assumed from the guides: [App Layout](../../guides/app-layout.md)
70
+ (left nav + fat footer), [Page Shell](../../guides/page-shell.md),
71
+ [Floating Bottom Panel](../../guides/floating-bottom-panel.md).
72
+
73
+ ## Action inventory
74
+
75
+ | # | Action | Trigger | Mechanism |
76
+ | --- | ------------------------------ | -------------------------------- | ----------------------------------------------------- |
77
+ | 1 | New invoice | topbar, the page's one `primary` | navigation (`/invoices/create`) |
78
+ | 2 | Page search | topbar right | `filters.search` → fetch dependency |
79
+ | 3 | Filter status / customer / due | filter rail pills | `BbSelectPopover` multiple / query-aware / date range |
80
+ | 4 | Clear filters | rail right (only when active) | context `clearFilters()` |
81
+ | 5 | Switch tab | href tabs with counts | URL + fetch dependency |
82
+ | 6 | Peek invoice | invoice number cell / peek lists | `peekInvoice(id)` → shell stack |
83
+ | 7 | Peek customer (stacked) | customer cell / inside peeks | `stackCustomer(id)` → back arrow |
84
+ | 8 | Change status inline | status badge in row & peek | one-click `BbSelectPopover` |
85
+ | 9 | Record payment | row `…`, peek button | `BbDialog` via `ctx.dialogs` |
86
+ | 10 | Edit / duplicate | row `…` dropdown | navigation / context action |
87
+ | 11 | Archive / delete | row `…`, bulk bar | destructive behind `useConfirm` |
88
+ | 12 | Bulk mark paid / remind | floating bottom panel | context actions on `table.selected` |
89
+ | 13 | Select rows / select all | table checkboxes | table context |
90
+ | 14 | Open full invoice | peek footer | navigation (`/invoices/:id`) |
91
+ | 15 | Back / close peek | shell chrome | shell stack pop / close |
92
+
93
+ ## The code
94
+
95
+ ### context.ts
96
+
97
+ ```ts
98
+ // InvoicesWorkspace/context.ts
99
+ import {
100
+ computed,
101
+ inject,
102
+ provide,
103
+ reactive,
104
+ ref,
105
+ type ComputedRef,
106
+ type InjectionKey,
107
+ type Ref,
108
+ } from 'vue';
109
+ import {
110
+ useBbTableContext,
111
+ useConfirm,
112
+ useToast,
113
+ type BbTableContext,
114
+ } from 'bitboss-ui';
115
+ import {
116
+ usePageShellContext,
117
+ type PageShellContext,
118
+ } from '@/components/layout/usePageShellContext';
119
+ import { api } from '@/api';
120
+ import type { Invoice, InvoiceStatus, PaymentDraft } from '@/types';
121
+
122
+ /** What the stacked sidebar can show. Clicking a name pushes one of these. */
123
+ export type PeekItem =
124
+ | { type: 'invoice'; id: number }
125
+ | { type: 'customer'; id: number };
126
+
127
+ export type WorkspaceTab = 'all' | 'outstanding' | 'paid' | 'archived';
128
+
129
+ export interface InvoiceFilters {
130
+ search: string;
131
+ status: InvoiceStatus[];
132
+ customerId: number | null;
133
+ /**
134
+ * `[start, end]` ISO strings, or `[]` when unset. Range mode requires an
135
+ * array modelValue -- binding `null` throws, so the empty filter is `[]`.
136
+ */
137
+ dueBetween: string[];
138
+ }
139
+
140
+ export interface InvoicesWorkspaceContext {
141
+ // -- Coopted contexts ------------------------------------------------------
142
+ shell: PageShellContext<PeekItem>;
143
+ table: BbTableContext;
144
+ // -- Page-owned state ------------------------------------------------------
145
+ filters: InvoiceFilters;
146
+ hasActiveFilters: ComputedRef<boolean>;
147
+ tab: Ref<WorkspaceTab>;
148
+ tabCounts: Ref<Record<WorkspaceTab, number>>;
149
+ refreshKey: Ref<number>;
150
+ dialogs: { recordPayment: Ref<Invoice | null> };
151
+ // -- Data ------------------------------------------------------------------
152
+ fetchInvoices: () => Promise<Invoice[]>;
153
+ // -- Peek grammar ----------------------------------------------------------
154
+ peekInvoice: (id: number) => void;
155
+ stackInvoice: (id: number) => void;
156
+ stackCustomer: (id: number) => void;
157
+ // -- Actions (complete: API + refresh + toast) ------------------------------
158
+ clearFilters: () => void;
159
+ updateStatus: (invoice: Invoice, status: InvoiceStatus) => Promise<void>;
160
+ duplicateInvoice: (invoice: Invoice) => Promise<void>;
161
+ recordPayment: (invoice: Invoice, draft: PaymentDraft) => Promise<void>;
162
+ archiveInvoice: (invoice: Invoice) => Promise<void>;
163
+ deleteInvoice: (invoice: Invoice) => Promise<void>;
164
+ bulkMarkPaid: () => Promise<void>;
165
+ bulkRemind: () => Promise<void>;
166
+ bulkArchive: () => Promise<void>;
167
+ }
168
+
169
+ const key: InjectionKey<InvoicesWorkspaceContext> =
170
+ Symbol('invoices-workspace');
171
+
172
+ export function provideInvoicesWorkspace(): InvoicesWorkspaceContext {
173
+ const { toast } = useToast();
174
+ const { confirm } = useConfirm();
175
+
176
+ // -- Coopt the specific contexts: once, here, for the whole page. ----------
177
+ const shell = usePageShellContext<PeekItem>();
178
+ const table = useBbTableContext('invoices-table', { perPage: 25 });
179
+
180
+ // -- Page state -------------------------------------------------------------
181
+ const filters = reactive<InvoiceFilters>({
182
+ search: '',
183
+ status: [],
184
+ customerId: null,
185
+ dueBetween: [],
186
+ });
187
+ const hasActiveFilters = computed(
188
+ () =>
189
+ filters.search !== '' ||
190
+ filters.status.length > 0 ||
191
+ filters.customerId !== null ||
192
+ filters.dueBetween.length > 0
193
+ );
194
+ const tab = ref<WorkspaceTab>('all');
195
+ const tabCounts = ref<Record<WorkspaceTab, number>>({
196
+ all: 0,
197
+ outstanding: 0,
198
+ paid: 0,
199
+ archived: 0,
200
+ });
201
+ const refreshKey = ref(0);
202
+ const dialogs = { recordPayment: ref<Invoice | null>(null) };
203
+
204
+ const clearFilters = () => {
205
+ filters.search = '';
206
+ filters.status = [];
207
+ filters.customerId = null;
208
+ filters.dueBetween = [];
209
+ };
210
+
211
+ // -- Data ---------------------------------------------------------------------
212
+ // The one place the list is fetched. Writes the paging totals into the
213
+ // table context and keeps the tab counts live.
214
+ const fetchInvoices = async (): Promise<Invoice[]> => {
215
+ const response = await api.invoices.list({
216
+ ...filters,
217
+ tab: tab.value,
218
+ page: table.page.value,
219
+ perPage: table.perPage.value,
220
+ });
221
+ table.total.value = response.total;
222
+ tabCounts.value = response.tabCounts;
223
+ return response.data;
224
+ };
225
+
226
+ // -- Peek grammar ----------------------------------------------------------------
227
+ // peekX opens a fresh stack (from the list); stackX drills down (from a peek).
228
+ const peekInvoice = (id: number) => shell.push({ type: 'invoice', id }, true);
229
+ const stackInvoice = (id: number) => shell.push({ type: 'invoice', id });
230
+ const stackCustomer = (id: number) => shell.push({ type: 'customer', id });
231
+
232
+ // -- Actions --------------------------------------------------------------------
233
+ const refresh = () => {
234
+ refreshKey.value++;
235
+ };
236
+
237
+ const updateStatus = async (invoice: Invoice, status: InvoiceStatus) => {
238
+ await api.invoices.update(invoice.id, { status });
239
+ refresh();
240
+ toast({
241
+ title: `${invoice.number} moved to ${status}.`,
242
+ variant: 'success',
243
+ });
244
+ };
245
+
246
+ const duplicateInvoice = async (invoice: Invoice) => {
247
+ const copy = await api.invoices.duplicate(invoice.id);
248
+ refresh();
249
+ toast({ title: `Duplicated as ${copy.number}.`, variant: 'success' });
250
+ };
251
+
252
+ const recordPayment = async (invoice: Invoice, draft: PaymentDraft) => {
253
+ await api.invoices.recordPayment(invoice.id, draft);
254
+ dialogs.recordPayment.value = null;
255
+ refresh();
256
+ toast({
257
+ title: `Payment recorded on ${invoice.number}.`,
258
+ variant: 'success',
259
+ });
260
+ };
261
+
262
+ const archiveInvoice = async (invoice: Invoice) => {
263
+ await api.invoices.archive(invoice.id);
264
+ refresh();
265
+ toast({ title: `${invoice.number} archived.`, variant: 'success' });
266
+ };
267
+
268
+ const deleteInvoice = async (invoice: Invoice) => {
269
+ const ok = await confirm({
270
+ variant: 'destructive',
271
+ title: 'Delete invoice',
272
+ text: `Delete ${invoice.number}? This cannot be undone.`,
273
+ yes: 'Delete',
274
+ no: 'Cancel',
275
+ });
276
+ if (!ok) return;
277
+ await api.invoices.delete(invoice.id);
278
+ refresh();
279
+ toast({ title: `${invoice.number} deleted.`, variant: 'success' });
280
+ };
281
+
282
+ // Bulk actions read and clear the coopted table context themselves.
283
+ const bulkIds = (): number[] => table.selected.value;
284
+ const clearSelection = () => {
285
+ table.selected.value = [];
286
+ };
287
+
288
+ const bulkMarkPaid = async () => {
289
+ const ids = bulkIds();
290
+ await api.invoices.markPaidMany(ids);
291
+ clearSelection();
292
+ refresh();
293
+ toast({
294
+ title: `${ids.length} invoices marked as paid.`,
295
+ variant: 'success',
296
+ });
297
+ };
298
+
299
+ const bulkRemind = async () => {
300
+ const ids = bulkIds();
301
+ await api.invoices.remindMany(ids);
302
+ clearSelection();
303
+ toast({
304
+ title: `Reminder sent for ${ids.length} invoices.`,
305
+ variant: 'success',
306
+ });
307
+ };
308
+
309
+ const bulkArchive = async () => {
310
+ const ids = bulkIds();
311
+ const ok = await confirm({
312
+ variant: 'destructive',
313
+ title: 'Archive invoices',
314
+ text: `Archive ${ids.length} invoices? They move out of every tab except Archived.`,
315
+ yes: 'Archive',
316
+ no: 'Cancel',
317
+ });
318
+ if (!ok) return;
319
+ await api.invoices.archiveMany(ids);
320
+ clearSelection();
321
+ refresh();
322
+ toast({ title: `${ids.length} invoices archived.`, variant: 'success' });
323
+ };
324
+
325
+ const ctx: InvoicesWorkspaceContext = {
326
+ shell,
327
+ table,
328
+ filters,
329
+ hasActiveFilters,
330
+ tab,
331
+ tabCounts,
332
+ refreshKey,
333
+ dialogs,
334
+ fetchInvoices,
335
+ peekInvoice,
336
+ stackInvoice,
337
+ stackCustomer,
338
+ clearFilters,
339
+ updateStatus,
340
+ duplicateInvoice,
341
+ recordPayment,
342
+ archiveInvoice,
343
+ deleteInvoice,
344
+ bulkMarkPaid,
345
+ bulkRemind,
346
+ bulkArchive,
347
+ };
348
+ provide(key, ctx);
349
+ return ctx;
350
+ }
351
+
352
+ export function useInvoicesWorkspace(): InvoicesWorkspaceContext {
353
+ const ctx = inject(key);
354
+ if (!ctx)
355
+ throw new Error('useInvoicesWorkspace() called outside InvoicesWorkspace');
356
+ return ctx;
357
+ }
358
+ ```
359
+
360
+ ### Index.vue — the assembly
361
+
362
+ ```vue
363
+ <!-- InvoicesWorkspace/Index.vue -->
364
+ <template>
365
+ <PageShell>
366
+ <!-- Topbar: breadcrumbs left, page search + primary action right. -->
367
+ <template #topbar>
368
+ <div class="flex items-center justify-between gap-4 border-b px-4 py-2">
369
+ <!-- Breadcrumbs take the row's slack on a stable basis (min-w-0 flex-auto);
370
+ without it their overflow recompute fights the flex layout every frame. -->
371
+ <BbBreadcrumbs
372
+ class="min-w-0 flex-auto"
373
+ :items="[
374
+ { key: 'dashboard', text: 'Dashboard', to: '/dashboard' },
375
+ { key: 'billing', text: 'Billing', to: '/billing' },
376
+ { key: 'invoices', text: 'Invoices' },
377
+ ]"
378
+ />
379
+ <div class="flex shrink-0 items-center gap-2">
380
+ <BbTextInput
381
+ v-model="ctx.filters.search"
382
+ hide-label
383
+ label="Search invoices"
384
+ clearable
385
+ compact
386
+ placeholder="Search number or customer…"
387
+ prepend:icon="lucide:search"
388
+ />
389
+ <BbButton
390
+ prepend:icon="lucide:plus"
391
+ to="/invoices/create"
392
+ variant="primary"
393
+ >
394
+ New invoice
395
+ </BbButton>
396
+ </div>
397
+ </div>
398
+ </template>
399
+
400
+ <div class="flex flex-col gap-3 p-4">
401
+ <FilterRail />
402
+
403
+ <!-- Tabs as URL filters: href updates the query, the key feeds the
404
+ fetch. Counts come from the server on every fetch. -->
405
+ <BbTabs
406
+ v-model="ctx.tab.value"
407
+ compact
408
+ :items="[
409
+ {
410
+ key: 'all',
411
+ label: `All · ${ctx.tabCounts.value.all}`,
412
+ href: '?tab=all',
413
+ },
414
+ {
415
+ key: 'outstanding',
416
+ label: `Outstanding · ${ctx.tabCounts.value.outstanding}`,
417
+ href: '?tab=outstanding',
418
+ },
419
+ {
420
+ key: 'paid',
421
+ label: `Paid · ${ctx.tabCounts.value.paid}`,
422
+ href: '?tab=paid',
423
+ },
424
+ {
425
+ key: 'archived',
426
+ label: `Archived · ${ctx.tabCounts.value.archived}`,
427
+ href: '?tab=archived',
428
+ },
429
+ ]"
430
+ />
431
+
432
+ <BbTable
433
+ id="invoices-table"
434
+ actions
435
+ caption="Invoices"
436
+ :columns="columns"
437
+ compact
438
+ :dependencies="[
439
+ { ...ctx.filters },
440
+ ctx.tab.value,
441
+ ctx.refreshKey.value,
442
+ ]"
443
+ :deps-debounce-time="300"
444
+ item-value="id"
445
+ :items="ctx.fetchInvoices"
446
+ loading-text="Loading invoices…"
447
+ :row-class="rowClass"
448
+ selectable
449
+ >
450
+ <!-- Clicking the NAME of a thing peeks it. -->
451
+ <template #number="{ item, content }">
452
+ <BbButton
453
+ size="sm"
454
+ variant="link"
455
+ @click="() => ctx.peekInvoice(item.id)"
456
+ >
457
+ {{ content }}
458
+ </BbButton>
459
+ </template>
460
+
461
+ <template #customer_name="{ item, content }">
462
+ <BbButton
463
+ size="sm"
464
+ variant="ghost"
465
+ @click="() => ctx.stackCustomer(item.customer.id)"
466
+ >
467
+ {{ content }}
468
+ </BbButton>
469
+ </template>
470
+
471
+ <template #status="{ item }">
472
+ <StatusCell :invoice="item" />
473
+ </template>
474
+
475
+ <template #actions="{ item }">
476
+ <RowActions :invoice="item" />
477
+ </template>
478
+
479
+ <template #no-data>
480
+ <div class="flex flex-col items-center gap-2 p-6 text-center">
481
+ <p class="text-sm text-gray-500">
482
+ No invoices match
483
+ {{
484
+ ctx.hasActiveFilters.value ? 'the current filters' : 'this tab'
485
+ }}.
486
+ </p>
487
+ <BbButton
488
+ v-if="ctx.hasActiveFilters.value"
489
+ variant="ghost"
490
+ @click="ctx.clearFilters"
491
+ >
492
+ Clear filters
493
+ </BbButton>
494
+ </div>
495
+ </template>
496
+ </BbTable>
497
+
498
+ <!-- Joins the table context by id: no page/totalPages wiring at all. -->
499
+ <BbPagination table-id="invoices-table" />
500
+ </div>
501
+
502
+ <SelectionBar />
503
+
504
+ <!-- Stacked peek sidebar: the shell owns back/close; we render by type. -->
505
+ <template #sidebar>
506
+ <InvoicePeek
507
+ v-if="ctx.shell.current.value?.type === 'invoice'"
508
+ :invoice-id="ctx.shell.current.value.id"
509
+ />
510
+ <CustomerPeek
511
+ v-else-if="ctx.shell.current.value?.type === 'customer'"
512
+ :customer-id="ctx.shell.current.value.id"
513
+ />
514
+ </template>
515
+
516
+ <template #dialogs>
517
+ <RecordPaymentDialog />
518
+ </template>
519
+ </PageShell>
520
+ </template>
521
+
522
+ <script setup lang="ts">
523
+ import {
524
+ BbBreadcrumbs,
525
+ BbButton,
526
+ BbPagination,
527
+ BbTable,
528
+ BbTabs,
529
+ BbTextInput,
530
+ } from 'bitboss-ui';
531
+ import PageShell from '@/components/layout/PageShell.vue';
532
+ import { provideInvoicesWorkspace } from './context';
533
+ import CustomerPeek from './CustomerPeek.vue';
534
+ import FilterRail from './FilterRail.vue';
535
+ import InvoicePeek from './InvoicePeek.vue';
536
+ import RecordPaymentDialog from './RecordPaymentDialog.vue';
537
+ import RowActions from './RowActions.vue';
538
+ import SelectionBar from './SelectionBar.vue';
539
+ import StatusCell from './StatusCell.vue';
540
+ import type { Invoice } from '@/types';
541
+
542
+ const ctx = provideInvoicesWorkspace();
543
+
544
+ const currency = new Intl.NumberFormat('en-US', {
545
+ style: 'currency',
546
+ currency: 'USD',
547
+ });
548
+ const shortDate = (value: string) =>
549
+ new Date(value).toLocaleDateString('en-US', {
550
+ month: 'short',
551
+ day: 'numeric',
552
+ });
553
+
554
+ const columns = [
555
+ { key: 'number', label: 'Invoice' },
556
+ { key: 'customer.name', label: 'Customer' },
557
+ {
558
+ key: 'amount',
559
+ label: 'Amount',
560
+ formatter: (value: number) => currency.format(value),
561
+ },
562
+ { key: 'status', label: 'Status' },
563
+ { key: 'dueDate', label: 'Due', formatter: shortDate },
564
+ { key: 'issuedAt', label: 'Issued', formatter: shortDate },
565
+ ];
566
+
567
+ // Overdue rows get a tinted background — public row-class API, no internals.
568
+ const rowClass = (item: Invoice) =>
569
+ item.status === 'overdue' ? 'bg-red-50 dark:bg-red-950/20' : undefined;
570
+ </script>
571
+ ```
572
+
573
+ ### FilterRail.vue
574
+
575
+ ```vue
576
+ <!-- InvoicesWorkspace/FilterRail.vue -->
577
+ <template>
578
+ <div class="flex flex-wrap items-center gap-2">
579
+ <!-- Status: multi-select pill. -->
580
+ <BbSelectPopover
581
+ v-model="ctx.filters.status"
582
+ :items="['draft', 'pending', 'paid', 'overdue']"
583
+ multiple
584
+ >
585
+ <template #activator="{ props }">
586
+ <BbButton
587
+ v-bind="props"
588
+ append:icon="lucide:chevron-down"
589
+ size="sm"
590
+ variant="outline"
591
+ >
592
+ Status{{
593
+ ctx.filters.status.length ? ` · ${ctx.filters.status.length}` : ''
594
+ }}
595
+ </BbButton>
596
+ </template>
597
+ </BbSelectPopover>
598
+
599
+ <!-- Customer: single, query-aware search against the API. -->
600
+ <BbSelectPopover
601
+ v-model="ctx.filters.customerId"
602
+ item-text="name"
603
+ item-value="id"
604
+ :items="searchCustomers"
605
+ >
606
+ <template #activator="{ props }">
607
+ <BbButton
608
+ v-bind="props"
609
+ append:icon="lucide:chevron-down"
610
+ size="sm"
611
+ variant="outline"
612
+ >
613
+ {{ customerLabel }}
614
+ </BbButton>
615
+ </template>
616
+ </BbSelectPopover>
617
+
618
+ <!-- Due date range: a compact input is 28px — flush with the sm pills' row. -->
619
+ <BbDatePickerInput
620
+ v-model="ctx.filters.dueBetween"
621
+ hide-label
622
+ label="Due date range"
623
+ clearable
624
+ compact
625
+ placeholder="Due between…"
626
+ range
627
+ />
628
+
629
+ <!-- Clear-all renders only while something is active. -->
630
+ <BbButton
631
+ v-if="ctx.hasActiveFilters.value"
632
+ class="ml-auto"
633
+ prepend:icon="lucide:x"
634
+ size="sm"
635
+ variant="ghost"
636
+ @click="ctx.clearFilters"
637
+ >
638
+ Clear filters
639
+ </BbButton>
640
+ </div>
641
+ </template>
642
+
643
+ <script setup lang="ts">
644
+ import { computed, ref, watchEffect } from 'vue';
645
+ import { BbButton, BbDatePickerInput, BbSelectPopover } from 'bitboss-ui';
646
+ import { useInvoicesWorkspace } from './context';
647
+ import { api } from '@/api';
648
+ import type { Customer } from '@/types';
649
+
650
+ const ctx = useInvoicesWorkspace();
651
+
652
+ // Query-aware items function: BbSelectPopover calls it with the search text.
653
+ const searchCustomers = (query: string): Promise<Customer[]> =>
654
+ api.customers.list({ search: query });
655
+
656
+ // The trigger labels itself from page state (the popover is lazy by design
657
+ // and cannot know the selected label before its first open).
658
+ const selectedCustomer = ref<Customer | null>(null);
659
+ watchEffect(async () => {
660
+ selectedCustomer.value =
661
+ ctx.filters.customerId == null
662
+ ? null
663
+ : await api.customers.get(ctx.filters.customerId);
664
+ });
665
+ const customerLabel = computed(
666
+ () => selectedCustomer.value?.name ?? 'Customer'
667
+ );
668
+ </script>
669
+ ```
670
+
671
+ ### StatusCell.vue
672
+
673
+ ```vue
674
+ <!-- InvoicesWorkspace/StatusCell.vue -->
675
+ <template>
676
+ <BbSelectPopover
677
+ :items="['draft', 'pending', 'paid', 'overdue']"
678
+ :model-value="invoice.status"
679
+ @update:model-value="(status) => pick(status as InvoiceStatus)"
680
+ >
681
+ <template #activator="{ props: activatorProps }">
682
+ <!-- The badge IS the trigger: BbBadgeButton turns the badge's own
683
+ body into the button, so the pill is the hit target and draws its
684
+ own focus ring — no wrapper element, no chrome class. The internal
685
+ trailing chevron says "clickable"; while the save runs the badge's
686
+ `loading` swaps the spinner into the chevron's place (§6.1
687
+ niceties). -->
688
+ <BbBadge
689
+ append:icon="lucide:chevron-down"
690
+ :loading="saving"
691
+ variant="outline"
692
+ >
693
+ <BbBadgeButton v-bind="activatorProps">{{
694
+ invoice.status
695
+ }}</BbBadgeButton>
696
+ </BbBadge>
697
+ </template>
698
+ </BbSelectPopover>
699
+ </template>
700
+
701
+ <script setup lang="ts">
702
+ import { ref } from 'vue';
703
+ import { BbBadge, BbBadgeButton, BbSelectPopover } from 'bitboss-ui';
704
+ import { useInvoicesWorkspace } from './context';
705
+ import type { Invoice, InvoiceStatus } from '@/types';
706
+
707
+ const props = defineProps<{ invoice: Invoice }>();
708
+
709
+ const ctx = useInvoicesWorkspace();
710
+
711
+ // In-flight flag for the save feedback — rung-1 local state, not context.
712
+ const saving = ref(false);
713
+ const pick = async (status: InvoiceStatus) => {
714
+ saving.value = true;
715
+ try {
716
+ await ctx.updateStatus(props.invoice, status);
717
+ } finally {
718
+ saving.value = false;
719
+ }
720
+ };
721
+ </script>
722
+ ```
723
+
724
+ ### RowActions.vue
725
+
726
+ ```vue
727
+ <!-- InvoicesWorkspace/RowActions.vue -->
728
+ <template>
729
+ <BbDropdown
730
+ :items="[
731
+ {
732
+ key: 'edit',
733
+ text: 'Edit',
734
+ 'prepend:icon': 'lucide:pencil',
735
+ to: `/invoices/${invoice.id}/edit`,
736
+ },
737
+ {
738
+ key: 'duplicate',
739
+ text: 'Duplicate',
740
+ 'prepend:icon': 'lucide:copy',
741
+ onClick: () => ctx.duplicateInvoice(invoice),
742
+ },
743
+ {
744
+ key: 'payment',
745
+ text: 'Record payment',
746
+ 'prepend:icon': 'lucide:banknote',
747
+ onClick: () => (ctx.dialogs.recordPayment.value = invoice),
748
+ },
749
+ {
750
+ key: 'archive',
751
+ text: 'Archive',
752
+ 'prepend:icon': 'lucide:archive',
753
+ onClick: () => ctx.archiveInvoice(invoice),
754
+ },
755
+ {
756
+ key: 'delete',
757
+ text: 'Delete',
758
+ 'prepend:icon': 'lucide:trash-2',
759
+ variant: 'destructive',
760
+ onClick: () => ctx.deleteInvoice(invoice),
761
+ },
762
+ ]"
763
+ >
764
+ <template #activator="{ props }">
765
+ <BbButton v-bind="props" icon="lucide:ellipsis" size="sm" variant="ghost">
766
+ Invoice actions
767
+ </BbButton>
768
+ </template>
769
+ </BbDropdown>
770
+ </template>
771
+
772
+ <script setup lang="ts">
773
+ import { BbButton, BbDropdown } from 'bitboss-ui';
774
+ import { useInvoicesWorkspace } from './context';
775
+ import type { Invoice } from '@/types';
776
+
777
+ defineProps<{ invoice: Invoice }>();
778
+
779
+ const ctx = useInvoicesWorkspace();
780
+ </script>
781
+ ```
782
+
783
+ ### SelectionBar.vue
784
+
785
+ ```vue
786
+ <!-- InvoicesWorkspace/SelectionBar.vue -->
787
+ <template>
788
+ <FloatingBottomPanel :open="selectedCount > 0">
789
+ <span class="px-2 text-sm">{{ selectedCount }} selected</span>
790
+ <BbButton
791
+ prepend:icon="lucide:check"
792
+ size="sm"
793
+ variant="ghost"
794
+ @click="ctx.bulkMarkPaid"
795
+ >
796
+ Mark as paid
797
+ </BbButton>
798
+ <BbButton
799
+ prepend:icon="lucide:send"
800
+ size="sm"
801
+ variant="ghost"
802
+ @click="ctx.bulkRemind"
803
+ >
804
+ Send reminder
805
+ </BbButton>
806
+ <div class="floating-bottom-panel__right flex items-center gap-1">
807
+ <BbButton size="sm" variant="destructive" @click="ctx.bulkArchive"
808
+ >Archive</BbButton
809
+ >
810
+ <BbButton
811
+ aria-label="Clear selection"
812
+ icon="lucide:x"
813
+ size="sm"
814
+ variant="ghost"
815
+ @click="clearSelection"
816
+ />
817
+ </div>
818
+ </FloatingBottomPanel>
819
+ </template>
820
+
821
+ <script setup lang="ts">
822
+ import { computed } from 'vue';
823
+ import { BbButton } from 'bitboss-ui';
824
+ import FloatingBottomPanel from '@/components/layout/FloatingBottomPanel.vue';
825
+ import { useInvoicesWorkspace } from './context';
826
+
827
+ const ctx = useInvoicesWorkspace();
828
+
829
+ const selectedCount = computed(() => ctx.table.selected.value?.length ?? 0);
830
+ const clearSelection = () => {
831
+ ctx.table.selected.value = [];
832
+ };
833
+ </script>
834
+ ```
835
+
836
+ ### InvoicePeek.vue
837
+
838
+ ```vue
839
+ <!-- InvoicesWorkspace/InvoicePeek.vue -->
840
+ <template>
841
+ <div v-if="invoice" class="flex flex-col gap-4 text-sm">
842
+ <!-- Header: identity + one-click status + amount. -->
843
+ <header class="flex flex-col gap-1.5">
844
+ <div class="flex items-center justify-between gap-2">
845
+ <h2 class="text-base font-semibold">{{ invoice.number }}</h2>
846
+ <StatusCell :invoice="invoice" />
847
+ </div>
848
+ <p class="text-xl font-semibold">{{ currency.format(invoice.amount) }}</p>
849
+ <p class="text-xs text-gray-500">
850
+ Issued {{ longDate(invoice.issuedAt) }} · due
851
+ {{ longDate(invoice.dueDate) }}
852
+ </p>
853
+ </header>
854
+
855
+ <!-- Properties: customer name drills DOWN — stacked peek, back arrow. -->
856
+ <dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1.5">
857
+ <dt class="text-gray-500">Customer</dt>
858
+ <dd>
859
+ <BbButton
860
+ size="sm"
861
+ variant="link"
862
+ @click="() => ctx.stackCustomer(invoice!.customer.id)"
863
+ >
864
+ {{ invoice.customer.name }}
865
+ </BbButton>
866
+ </dd>
867
+ <dt class="text-gray-500">Project</dt>
868
+ <dd>{{ invoice.project.name }}</dd>
869
+ <dt class="text-gray-500">Payment terms</dt>
870
+ <dd>{{ invoice.paymentTerms }}</dd>
871
+ <dt class="text-gray-500">Reference</dt>
872
+ <dd>{{ invoice.reference }}</dd>
873
+ </dl>
874
+
875
+ <!-- Line items: a real mini-table, not a summary sentence. -->
876
+ <section class="flex flex-col gap-1.5">
877
+ <h3 class="text-xs font-semibold uppercase tracking-wide text-gray-500">
878
+ Line items
879
+ </h3>
880
+ <BbTable
881
+ caption="Invoice line items"
882
+ :columns="[
883
+ { key: 'description', label: 'Description' },
884
+ { key: 'quantity', label: 'Qty' },
885
+ {
886
+ key: 'total',
887
+ label: 'Total',
888
+ formatter: (value: number) => currency.format(value),
889
+ },
890
+ ]"
891
+ compact
892
+ item-value="id"
893
+ :items="invoice.lineItems"
894
+ />
895
+ </section>
896
+
897
+ <!-- Payments so far. -->
898
+ <section v-if="invoice.payments.length" class="flex flex-col gap-1.5">
899
+ <h3 class="text-xs font-semibold uppercase tracking-wide text-gray-500">
900
+ Payments
901
+ </h3>
902
+ <ul class="flex flex-col gap-1">
903
+ <li
904
+ v-for="payment in invoice.payments"
905
+ :key="payment.id"
906
+ class="flex items-center justify-between gap-2"
907
+ >
908
+ <span
909
+ >{{ currency.format(payment.amount) }} · {{ payment.method }}</span
910
+ >
911
+ <span class="text-xs text-gray-500">{{
912
+ longDate(payment.paidAt)
913
+ }}</span>
914
+ </li>
915
+ </ul>
916
+ </section>
917
+
918
+ <!-- Activity feed. -->
919
+ <section class="flex flex-col gap-1.5">
920
+ <h3 class="text-xs font-semibold uppercase tracking-wide text-gray-500">
921
+ Activity
922
+ </h3>
923
+ <ul class="flex flex-col gap-2">
924
+ <li
925
+ v-for="entry in invoice.activity"
926
+ :key="entry.id"
927
+ class="flex gap-2"
928
+ >
929
+ <BbIcon
930
+ class="mt-0.5 shrink-0 text-gray-400"
931
+ :icon="entry.icon"
932
+ size="14"
933
+ />
934
+ <div class="flex flex-col">
935
+ <span>{{ entry.text }}</span>
936
+ <span class="text-xs text-gray-500"
937
+ >{{ entry.actor }} · {{ longDate(entry.at) }}</span
938
+ >
939
+ </div>
940
+ </li>
941
+ </ul>
942
+ </section>
943
+
944
+ <!-- Peek is a workbench: act here, or leave for the full page. -->
945
+ <footer class="mt-2 flex items-center gap-2 border-t pt-3">
946
+ <BbButton
947
+ prepend:icon="lucide:banknote"
948
+ size="sm"
949
+ variant="secondary"
950
+ @click="() => (ctx.dialogs.recordPayment.value = invoice)"
951
+ >
952
+ Record payment
953
+ </BbButton>
954
+ <BbButton
955
+ append:icon="lucide:arrow-up-right"
956
+ size="sm"
957
+ :to="`/invoices/${invoice.id}`"
958
+ variant="ghost"
959
+ >
960
+ Open full page
961
+ </BbButton>
962
+ </footer>
963
+ </div>
964
+
965
+ <div v-else class="flex justify-center p-8">
966
+ <BbSpinner />
967
+ </div>
968
+ </template>
969
+
970
+ <script setup lang="ts">
971
+ import { ref, watchEffect } from 'vue';
972
+ import { BbButton, BbIcon, BbSpinner, BbTable } from 'bitboss-ui';
973
+ import StatusCell from './StatusCell.vue';
974
+ import { useInvoicesWorkspace } from './context';
975
+ import { api } from '@/api';
976
+ import type { InvoiceDetail } from '@/types';
977
+
978
+ const props = defineProps<{ invoiceId: number }>();
979
+
980
+ const ctx = useInvoicesWorkspace();
981
+
982
+ // Re-fetches whenever the stack shows a different invoice; refreshKey makes
983
+ // mutations (status, payment) reflect here immediately.
984
+ const invoice = ref<InvoiceDetail | null>(null);
985
+ watchEffect(async () => {
986
+ void ctx.refreshKey.value;
987
+ invoice.value = await api.invoices.get(props.invoiceId);
988
+ });
989
+
990
+ const currency = new Intl.NumberFormat('en-US', {
991
+ style: 'currency',
992
+ currency: 'USD',
993
+ });
994
+ const longDate = (value: string) =>
995
+ new Date(value).toLocaleDateString('en-US', {
996
+ month: 'short',
997
+ day: 'numeric',
998
+ year: 'numeric',
999
+ });
1000
+ </script>
1001
+ ```
1002
+
1003
+ ### CustomerPeek.vue
1004
+
1005
+ ```vue
1006
+ <!-- InvoicesWorkspace/CustomerPeek.vue -->
1007
+ <template>
1008
+ <div v-if="customer" class="flex flex-col gap-4 text-sm">
1009
+ <header class="flex items-center gap-3">
1010
+ <BbAvatar :alt="customer.name" :src="customer.avatarUrl" />
1011
+ <div class="flex flex-col">
1012
+ <h2 class="text-base font-semibold">{{ customer.name }}</h2>
1013
+ <p class="text-xs text-gray-500">
1014
+ {{ customer.email }} · {{ customer.country }}
1015
+ </p>
1016
+ </div>
1017
+ </header>
1018
+
1019
+ <!-- Stat strip. -->
1020
+ <div class="grid grid-cols-3 gap-2">
1021
+ <div class="rounded-[var(--bb-radius)] border p-2">
1022
+ <p class="text-xs text-gray-500">Total billed</p>
1023
+ <p class="font-semibold">{{ currency.format(customer.totalBilled) }}</p>
1024
+ </div>
1025
+ <div class="rounded-[var(--bb-radius)] border p-2">
1026
+ <p class="text-xs text-gray-500">Outstanding</p>
1027
+ <p class="font-semibold">{{ currency.format(customer.outstanding) }}</p>
1028
+ </div>
1029
+ <div class="rounded-[var(--bb-radius)] border p-2">
1030
+ <p class="text-xs text-gray-500">Invoices</p>
1031
+ <p class="font-semibold">{{ customer.invoiceCount }}</p>
1032
+ </div>
1033
+ </div>
1034
+
1035
+ <!-- Recent invoices: names drill down again — the stack keeps growing. -->
1036
+ <section class="flex flex-col gap-1.5">
1037
+ <h3 class="text-xs font-semibold uppercase tracking-wide text-gray-500">
1038
+ Recent invoices
1039
+ </h3>
1040
+ <ul class="flex flex-col">
1041
+ <li
1042
+ v-for="recent in customer.recentInvoices"
1043
+ :key="recent.id"
1044
+ class="flex items-center justify-between gap-2 border-b py-1.5 last:border-b-0"
1045
+ >
1046
+ <BbButton
1047
+ size="sm"
1048
+ variant="link"
1049
+ @click="() => ctx.stackInvoice(recent.id)"
1050
+ >
1051
+ {{ recent.number }}
1052
+ </BbButton>
1053
+ <BbBadge variant="outline">{{ recent.status }}</BbBadge>
1054
+ <span class="text-xs text-gray-500">{{
1055
+ currency.format(recent.amount)
1056
+ }}</span>
1057
+ </li>
1058
+ </ul>
1059
+ </section>
1060
+
1061
+ <footer class="mt-2 flex items-center gap-2 border-t pt-3">
1062
+ <BbButton
1063
+ append:icon="lucide:arrow-up-right"
1064
+ size="sm"
1065
+ :to="`/customers/${customer.id}`"
1066
+ variant="ghost"
1067
+ >
1068
+ Open customer
1069
+ </BbButton>
1070
+ </footer>
1071
+ </div>
1072
+
1073
+ <div v-else class="flex justify-center p-8">
1074
+ <BbSpinner />
1075
+ </div>
1076
+ </template>
1077
+
1078
+ <script setup lang="ts">
1079
+ import { ref, watchEffect } from 'vue';
1080
+ import { BbAvatar, BbBadge, BbButton, BbSpinner } from 'bitboss-ui';
1081
+ import { useInvoicesWorkspace } from './context';
1082
+ import { api } from '@/api';
1083
+ import type { CustomerDetail } from '@/types';
1084
+
1085
+ const props = defineProps<{ customerId: number }>();
1086
+
1087
+ const ctx = useInvoicesWorkspace();
1088
+
1089
+ const customer = ref<CustomerDetail | null>(null);
1090
+ watchEffect(async () => {
1091
+ customer.value = await api.customers.getDetail(props.customerId);
1092
+ });
1093
+
1094
+ const currency = new Intl.NumberFormat('en-US', {
1095
+ style: 'currency',
1096
+ currency: 'USD',
1097
+ });
1098
+ </script>
1099
+ ```
1100
+
1101
+ ### RecordPaymentDialog.vue
1102
+
1103
+ ```vue
1104
+ <!-- InvoicesWorkspace/RecordPaymentDialog.vue -->
1105
+ <template>
1106
+ <BbDialog
1107
+ :model-value="invoice !== null"
1108
+ size="sm"
1109
+ :title="invoice ? `Record payment — ${invoice.number}` : ''"
1110
+ @update:model-value="close"
1111
+ >
1112
+ <form
1113
+ v-if="invoice"
1114
+ class="flex flex-col gap-3"
1115
+ novalidate
1116
+ @submit.prevent="submit"
1117
+ >
1118
+ <BbNumberInput
1119
+ v-model="draft.amount"
1120
+ label="Amount"
1121
+ label-mode="outside"
1122
+ :max-precision="2"
1123
+ :min="0"
1124
+ >
1125
+ <template #prefix>$</template>
1126
+ </BbNumberInput>
1127
+ <BbDatePickerInput
1128
+ v-model="draft.paidAt"
1129
+ label="Paid on"
1130
+ label-mode="outside"
1131
+ />
1132
+ <BbSelect
1133
+ v-model="draft.method"
1134
+ :items="['bank transfer', 'card', 'check', 'cash']"
1135
+ label="Method"
1136
+ label-mode="outside"
1137
+ />
1138
+ <div class="mt-1 flex justify-end gap-2">
1139
+ <BbButton type="button" variant="ghost" @click="close">Cancel</BbButton>
1140
+ <BbButton type="submit" variant="secondary">Record payment</BbButton>
1141
+ </div>
1142
+ </form>
1143
+ </BbDialog>
1144
+ </template>
1145
+
1146
+ <script setup lang="ts">
1147
+ import { computed, reactive, watch } from 'vue';
1148
+ import {
1149
+ BbButton,
1150
+ BbDatePickerInput,
1151
+ BbDialog,
1152
+ BbNumberInput,
1153
+ BbSelect,
1154
+ } from 'bitboss-ui';
1155
+ import { useInvoicesWorkspace } from './context';
1156
+ import type { PaymentDraft } from '@/types';
1157
+
1158
+ const ctx = useInvoicesWorkspace();
1159
+
1160
+ // The dialog's subject lives in the page context — any component on the
1161
+ // page (row actions, the peek) can open it by assigning the invoice.
1162
+ const invoice = computed(() => ctx.dialogs.recordPayment.value);
1163
+ const close = () => {
1164
+ ctx.dialogs.recordPayment.value = null;
1165
+ };
1166
+
1167
+ const draft = reactive<PaymentDraft>({
1168
+ amount: null,
1169
+ paidAt: null,
1170
+ method: null,
1171
+ });
1172
+ watch(invoice, (next) => {
1173
+ // Re-seed per invoice: default to paying the remaining balance today.
1174
+ draft.amount = next?.amountDue ?? null;
1175
+ draft.paidAt = next ? new Date().toISOString() : null;
1176
+ draft.method = null;
1177
+ });
1178
+
1179
+ // Returning the promise lets the submit button track the async work.
1180
+ const submit = () =>
1181
+ invoice.value ? ctx.recordPayment(invoice.value, { ...draft }) : undefined;
1182
+ </script>
1183
+ ```
1184
+
1185
+ ## Why it is built this way
1186
+
1187
+ - **The context coopts, leaves consume.** `shell` and `table` are joined
1188
+ once in `provideInvoicesWorkspace()`; nine components share filters,
1189
+ selection, the peek stack and every action through one
1190
+ `useInvoicesWorkspace()` call. No component on this page receives a
1191
+ callback prop, and only peeks/cells receive data props (the item or id
1192
+ they render).
1193
+ - **The table context is the paging spine.** `useBbTableContext(id, { perPage })`
1194
+ seeds paging; `fetchInvoices` writes `table.total`; `BbPagination
1195
+ table-id` joins by id. Page state exists in exactly one place and the
1196
+ assembly wires none of it by hand.
1197
+ - **`peekX` vs `stackX` is the whole stack grammar.** Fresh peeks replace,
1198
+ drill-downs push; the shell renders the back arrow when depth > 1. The
1199
+ grammar lives in the context — a leaf cannot accidentally nuke the
1200
+ stack.
1201
+ - **Tabs carry `href` and live counts.** Client-side pushState keeps the
1202
+ URL shareable while `v-model` feeds the fetch; counts re-arrive with
1203
+ every fetch so tab labels never go stale.
1204
+ - **Dialogs hang off the context** (`ctx.dialogs.recordPayment` holds the
1205
+ subject invoice, not a boolean) so row actions and the peek open the
1206
+ same dialog with zero coordination.
1207
+ - **Sizing:** topbar and rail follow `md`-first (`compact` inputs at 28px
1208
+ flush beside the default buttons); `sm` appears exactly where the
1209
+ doctrine allows — row actions, pills, peek footers, the bulk bar.
1210
+ - **One `variant="primary"`** (New invoice). Destructive actions —
1211
+ single, bulk, in-peek — all ride `useConfirm`.
1212
+ - **The status badge tells you it saves.** `StatusCell` carries the §6.1
1213
+ niceties: an internal trailing chevron (a clickable status must say so)
1214
+ and `:loading` around the awaited context action, so the spinner takes
1215
+ the chevron's place while the save runs. The flag is a local `ref` —
1216
+ rung 1, not context state. The ownership grammar behind inline edits is
1217
+ the [Inline Edit Playbook](../../guides/inline-edit-playbook.md).
1218
+
1219
+ ## Variations
1220
+
1221
+ - **Keyboard triage**: add `keyboard-navigation` to the table and open the
1222
+ peek from `v-model:highlighted` — the approvals-inbox recipe is the
1223
+ full treatment.
1224
+ - **Saved views**: persist `filters` + `tab` per user in a store
1225
+ (`useSavedViewsStore`) and render a view switcher before the tabs.
1226
+ - **Inline amount editing**: swap the amount cell for an
1227
+ `EditableAmountCell` per the inline-editing pattern. Choosing between
1228
+ explicit-commit cells and a fully autosaving grid is the
1229
+ [Inline Edit Playbook](../../guides/inline-edit-playbook.md); the
1230
+ autosave treatment is the inline-edit-workspace recipe.