bitboss-ui 2.1.135 → 3.0.0-alpha.4

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 (1369) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -24
  3. package/bin/bitboss-ui-mcp.mjs +662 -0
  4. package/bin/bitboss-ui.mjs +710 -0
  5. package/bin/bitboss-ui.node.test.mjs +113 -0
  6. package/dist/ai/BbAccordion.md +528 -113
  7. package/dist/ai/BbAlert.md +380 -197
  8. package/dist/ai/BbAsterisk.md +46 -0
  9. package/dist/ai/BbAvatar.md +458 -178
  10. package/dist/ai/BbBadge.md +697 -225
  11. package/dist/ai/BbBadgeButton.md +54 -0
  12. package/dist/ai/BbBaseButton.md +491 -0
  13. package/dist/ai/BbBaseCheckbox.md +49 -0
  14. package/dist/ai/BbBaseCheckboxGroup.md +64 -0
  15. package/dist/ai/BbBaseCheckboxIcon.md +176 -0
  16. package/dist/ai/BbBaseColorInput.md +64 -0
  17. package/dist/ai/BbBaseColorPalette.md +39 -0
  18. package/dist/ai/BbBaseDatePicker.md +42 -0
  19. package/dist/ai/BbBaseDatePickerInput.md +73 -0
  20. package/dist/ai/BbBaseInputContainer.md +48 -0
  21. package/dist/ai/BbBaseNumberInput.md +71 -0
  22. package/dist/ai/BbBaseRadio.md +46 -0
  23. package/dist/ai/BbBaseRadioGroup.md +64 -0
  24. package/dist/ai/BbBaseRadioIcon.md +191 -0
  25. package/dist/ai/BbBaseRating.md +51 -0
  26. package/dist/ai/BbBaseSelect.md +88 -0
  27. package/dist/ai/BbBaseSlider.md +56 -0
  28. package/dist/ai/BbBaseSwitch.md +49 -0
  29. package/dist/ai/BbBaseSwitchGroup.md +64 -0
  30. package/dist/ai/BbBaseSwitchIcon.md +186 -0
  31. package/dist/ai/BbBaseTag.md +68 -0
  32. package/dist/ai/BbBaseTextInput.md +75 -0
  33. package/dist/ai/BbBaseTextarea.md +62 -0
  34. package/dist/ai/BbBaseTimePickerInput.md +62 -0
  35. package/dist/ai/BbBreadcrumbs.md +553 -503
  36. package/dist/ai/BbButton.md +841 -636
  37. package/dist/ai/BbCheckbox.md +585 -254
  38. package/dist/ai/BbCheckboxGroup.md +573 -361
  39. package/dist/ai/BbCollapsible.md +425 -103
  40. package/dist/ai/BbColorInput.md +536 -323
  41. package/dist/ai/BbColorPalette.md +569 -330
  42. package/dist/ai/BbConfirm.md +659 -136
  43. package/dist/ai/BbConfirmPortal.md +28 -0
  44. package/dist/ai/BbDatePicker.md +244 -0
  45. package/dist/ai/BbDatePickerInput.md +720 -388
  46. package/dist/ai/BbDialog.md +778 -99
  47. package/dist/ai/BbDropdown.md +1072 -763
  48. package/dist/ai/BbDropdownButton.md +525 -614
  49. package/dist/ai/BbDropdownGroup.md +34 -0
  50. package/dist/ai/BbDropzone.md +1206 -436
  51. package/dist/ai/BbForm.md +239 -0
  52. package/dist/ai/BbIcon.md +382 -212
  53. package/dist/ai/BbIndicator.md +283 -0
  54. package/dist/ai/BbNumberInput.md +717 -355
  55. package/dist/ai/BbOffCanvas.md +897 -498
  56. package/dist/ai/BbPagination.md +489 -535
  57. package/dist/ai/BbPopover.md +591 -546
  58. package/dist/ai/BbProgress.md +462 -69
  59. package/dist/ai/BbRadio.md +352 -229
  60. package/dist/ai/BbRadioGroup.md +437 -353
  61. package/dist/ai/BbRating.md +372 -225
  62. package/dist/ai/BbSelect.md +1399 -536
  63. package/dist/ai/BbSelectPopover.md +1255 -1578
  64. package/dist/ai/BbSlider.md +500 -256
  65. package/dist/ai/BbSmoothHeight.md +485 -139
  66. package/dist/ai/BbSpinner.md +718 -131
  67. package/dist/ai/BbSwitch.md +573 -119
  68. package/dist/ai/BbSwitchGroup.md +521 -214
  69. package/dist/ai/BbTable.md +1996 -2365
  70. package/dist/ai/BbTabs.md +1147 -0
  71. package/dist/ai/BbTabsList.md +29 -0
  72. package/dist/ai/BbTabsPanes.md +27 -0
  73. package/dist/ai/BbTabsRoot.md +57 -0
  74. package/dist/ai/BbTag.md +416 -292
  75. package/dist/ai/BbTextInput.md +878 -333
  76. package/dist/ai/BbTextarea.md +850 -255
  77. package/dist/ai/BbTimePicker.md +231 -0
  78. package/dist/ai/BbTimePickerInput.md +200 -0
  79. package/dist/ai/BbToast.md +669 -196
  80. package/dist/ai/BbToastPortal.md +28 -0
  81. package/dist/ai/BbTooltip.md +453 -346
  82. package/dist/ai/BbTree.md +993 -234
  83. package/dist/ai/ChipsBox.md +27 -199
  84. package/dist/ai/ClearableButton.md +21 -55
  85. package/dist/ai/CommaBox.md +25 -200
  86. package/dist/ai/CommonInputWrapper.md +42 -0
  87. package/dist/ai/CommonPopover.md +30 -510
  88. package/dist/ai/ErrorIcon.md +19 -56
  89. package/dist/ai/FlatListBox.md +35 -379
  90. package/dist/ai/GroupedListBox.md +37 -535
  91. package/dist/ai/GuidesComponent.md +21 -0
  92. package/dist/ai/ListBox.md +38 -231
  93. package/dist/ai/OptionsContainer.md +34 -253
  94. package/dist/ai/WarningIcon.md +21 -0
  95. package/dist/ai/components.json +15897 -0
  96. package/dist/ai/composables/useBbConfig.md +80 -0
  97. package/dist/ai/composables/useBbFormContext.md +110 -0
  98. package/dist/ai/composables/useBbTableContext.md +167 -0
  99. package/dist/ai/composables/useBbTabsContext.md +118 -0
  100. package/dist/ai/composables/useBroadcastChannelInstance.md +97 -0
  101. package/dist/ai/composables/useConfirm.md +313 -0
  102. package/dist/ai/composables/useCountdown.md +86 -0
  103. package/dist/ai/composables/useId.md +60 -0
  104. package/dist/ai/composables/useMobile.md +85 -0
  105. package/dist/ai/composables/useToast.md +238 -0
  106. package/dist/ai/guides/agent-contract.md +165 -0
  107. package/dist/ai/guides/ai-router.md +113 -0
  108. package/dist/ai/guides/app-layout.md +318 -0
  109. package/dist/ai/guides/coherence-playbook.md +136 -0
  110. package/dist/ai/guides/component-picker.md +236 -0
  111. package/dist/ai/guides/design-language.md +478 -0
  112. package/dist/ai/guides/design-tokens.md +450 -0
  113. package/dist/ai/guides/fetch-items-playbook.md +161 -0
  114. package/dist/ai/guides/floating-bottom-panel.md +130 -0
  115. package/dist/ai/guides/icons-policy.md +257 -0
  116. package/dist/ai/guides/inertia-helpers.md +1443 -0
  117. package/dist/ai/guides/inline-edit-playbook.md +267 -0
  118. package/dist/ai/guides/installation-and-plugin-setup.md +440 -0
  119. package/dist/ai/guides/migration/components/bb-alert.md +37 -0
  120. package/dist/ai/guides/migration/components/bb-avatar.md +24 -0
  121. package/dist/ai/guides/migration/components/bb-badge.md +110 -0
  122. package/dist/ai/guides/migration/components/bb-breadcrumbs.md +26 -0
  123. package/dist/ai/guides/migration/components/bb-button.md +55 -0
  124. package/dist/ai/guides/migration/components/bb-checkbox-group.md +54 -0
  125. package/dist/ai/guides/migration/components/bb-checkbox.md +45 -0
  126. package/dist/ai/guides/migration/components/bb-chip.md +35 -0
  127. package/dist/ai/guides/migration/components/bb-collapsible.md +26 -0
  128. package/dist/ai/guides/migration/components/bb-color-input.md +23 -0
  129. package/dist/ai/guides/migration/components/bb-color-palette.md +31 -0
  130. package/dist/ai/guides/migration/components/bb-date-picker-input.md +84 -0
  131. package/dist/ai/guides/migration/components/bb-dialog.md +46 -0
  132. package/dist/ai/guides/migration/components/bb-dropdown-button.md +31 -0
  133. package/dist/ai/guides/migration/components/bb-dropdown.md +36 -0
  134. package/dist/ai/guides/migration/components/bb-dropzone.md +27 -0
  135. package/dist/ai/guides/migration/components/bb-icon.md +27 -0
  136. package/dist/ai/guides/migration/components/bb-offcanvas.md +63 -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 +59 -0
  141. package/dist/ai/guides/migration/components/bb-select.md +69 -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 +113 -0
  156. package/dist/ai/guides/validated-forms.md +177 -0
  157. package/dist/ai/index.md +158 -32
  158. package/dist/ai/recipes/inertia/approvals-inbox.md +1635 -0
  159. package/dist/ai/recipes/inertia/inline-edit-workspace.md +1765 -0
  160. package/dist/ai/recipes/inertia/layout-scaffold.md +385 -0
  161. package/dist/ai/recipes/inertia/onboarding.md +1791 -0
  162. package/dist/ai/recipes/inertia/ownership-atlas.md +1327 -0
  163. package/dist/ai/recipes/inertia/record-form.md +1489 -0
  164. package/dist/ai/recipes/inertia/records-workspace.md +1416 -0
  165. package/dist/ai/recipes/inertia/upload-center.md +2003 -0
  166. package/dist/ai/recipes/inertia/wizard-form.md +1500 -0
  167. package/dist/ai/recipes/nuxt/approvals-inbox.md +1578 -0
  168. package/dist/ai/recipes/nuxt/inline-edit-workspace.md +1703 -0
  169. package/dist/ai/recipes/nuxt/layout-scaffold.md +385 -0
  170. package/dist/ai/recipes/nuxt/onboarding.md +1724 -0
  171. package/dist/ai/recipes/nuxt/record-form.md +1502 -0
  172. package/dist/ai/recipes/nuxt/records-workspace.md +1329 -0
  173. package/dist/ai/recipes/nuxt/upload-center.md +1886 -0
  174. package/dist/ai/recipes/nuxt/wizard-form.md +1509 -0
  175. package/dist/ai/recipes/vue/approvals-inbox.md +1496 -0
  176. package/dist/ai/recipes/vue/inline-edit-workspace.md +1594 -0
  177. package/dist/ai/recipes/vue/layout-scaffold.md +385 -0
  178. package/dist/ai/recipes/vue/onboarding.md +1679 -0
  179. package/dist/ai/recipes/vue/record-form.md +1586 -0
  180. package/dist/ai/recipes/vue/records-workspace.md +1245 -0
  181. package/dist/ai/recipes/vue/upload-center.md +1845 -0
  182. package/dist/ai/recipes/vue/wizard-form.md +1441 -0
  183. package/dist/ai/source/BbAccordion.md +123 -0
  184. package/dist/ai/source/BbAlert.md +401 -0
  185. package/dist/ai/source/BbAsterisk.md +32 -0
  186. package/dist/ai/source/BbAvatar.md +258 -0
  187. package/dist/ai/source/BbBadge.md +560 -0
  188. package/dist/ai/source/BbBadgeButton.md +490 -0
  189. package/dist/ai/source/BbBaseButton.md +682 -0
  190. package/dist/ai/source/BbBaseCheckbox.md +461 -0
  191. package/dist/ai/source/BbBaseCheckboxGroup.md +554 -0
  192. package/dist/ai/source/BbBaseCheckboxIcon.md +201 -0
  193. package/dist/ai/source/BbBaseColorInput.md +416 -0
  194. package/dist/ai/source/BbBaseColorPalette.md +934 -0
  195. package/dist/ai/source/BbBaseDatePicker.md +1001 -0
  196. package/dist/ai/source/BbBaseDatePickerInput.md +1785 -0
  197. package/dist/ai/source/BbBaseInputContainer.md +1210 -0
  198. package/dist/ai/source/BbBaseNumberInput.md +617 -0
  199. package/dist/ai/source/BbBaseRadio.md +377 -0
  200. package/dist/ai/source/BbBaseRadioGroup.md +533 -0
  201. package/dist/ai/source/BbBaseRadioIcon.md +153 -0
  202. package/dist/ai/source/BbBaseRating.md +573 -0
  203. package/dist/ai/source/BbBaseSelect.md +898 -0
  204. package/dist/ai/source/BbBaseSlider.md +1085 -0
  205. package/dist/ai/source/BbBaseSwitch.md +246 -0
  206. package/dist/ai/source/BbBaseSwitchGroup.md +302 -0
  207. package/dist/ai/source/BbBaseSwitchIcon.md +206 -0
  208. package/dist/ai/source/BbBaseTag.md +694 -0
  209. package/dist/ai/source/BbBaseTextInput.md +511 -0
  210. package/dist/ai/source/BbBaseTextarea.md +480 -0
  211. package/dist/ai/source/BbBaseTimePickerInput.md +1031 -0
  212. package/dist/ai/source/BbBreadcrumbs.md +815 -0
  213. package/dist/ai/source/BbButton.md +1006 -0
  214. package/dist/ai/source/BbCheckbox.md +326 -0
  215. package/dist/ai/source/BbCheckboxGroup.md +419 -0
  216. package/dist/ai/source/BbCollapsible.md +137 -0
  217. package/dist/ai/source/BbColorInput.md +322 -0
  218. package/dist/ai/source/BbColorPalette.md +371 -0
  219. package/dist/ai/source/BbConfirm.md +193 -0
  220. package/dist/ai/source/BbConfirmPortal.md +74 -0
  221. package/dist/ai/source/BbDatePicker.md +729 -0
  222. package/dist/ai/source/BbDatePickerInput.md +525 -0
  223. package/dist/ai/source/BbDialog.md +818 -0
  224. package/dist/ai/source/BbDropdown.md +2387 -0
  225. package/dist/ai/source/BbDropdownButton.md +315 -0
  226. package/dist/ai/source/BbDropdownGroup.md +1259 -0
  227. package/dist/ai/source/BbDropzone.md +864 -0
  228. package/dist/ai/source/BbForm.md +100 -0
  229. package/dist/ai/source/BbIcon.md +214 -0
  230. package/dist/ai/source/BbIndicator.md +298 -0
  231. package/dist/ai/source/BbNumberInput.md +374 -0
  232. package/dist/ai/source/BbOffCanvas.md +1266 -0
  233. package/dist/ai/source/BbPagination.md +835 -0
  234. package/dist/ai/source/BbPopover.md +860 -0
  235. package/dist/ai/source/BbProgress.md +140 -0
  236. package/dist/ai/source/BbRadio.md +303 -0
  237. package/dist/ai/source/BbRadioGroup.md +420 -0
  238. package/dist/ai/source/BbRating.md +369 -0
  239. package/dist/ai/source/BbSelect.md +688 -0
  240. package/dist/ai/source/BbSelectPopover.md +2234 -0
  241. package/dist/ai/source/BbSlider.md +378 -0
  242. package/dist/ai/source/BbSmoothHeight.md +265 -0
  243. package/dist/ai/source/BbSpinner.md +127 -0
  244. package/dist/ai/source/BbSwitch.md +175 -0
  245. package/dist/ai/source/BbSwitchGroup.md +240 -0
  246. package/dist/ai/source/BbTable.md +3433 -0
  247. package/dist/ai/source/BbTabs.md +403 -0
  248. package/dist/ai/source/BbTabsList.md +578 -0
  249. package/dist/ai/source/BbTabsPanes.md +368 -0
  250. package/dist/ai/source/BbTabsRoot.md +372 -0
  251. package/dist/ai/source/BbTag.md +390 -0
  252. package/dist/ai/source/BbTextInput.md +352 -0
  253. package/dist/ai/source/BbTextarea.md +337 -0
  254. package/dist/ai/source/BbTimePicker.md +595 -0
  255. package/dist/ai/source/BbTimePickerInput.md +376 -0
  256. package/dist/ai/source/BbToast.md +525 -0
  257. package/dist/ai/source/BbToastPortal.md +482 -0
  258. package/dist/ai/source/BbTooltip.md +522 -0
  259. package/dist/ai/source/BbTree.md +323 -0
  260. package/dist/ai/source/ChipsBox.md +201 -0
  261. package/dist/ai/source/ClearableButton.md +70 -0
  262. package/dist/ai/source/CommaBox.md +202 -0
  263. package/dist/ai/source/CommonInputWrapper.md +554 -0
  264. package/dist/ai/source/CommonPopover.md +616 -0
  265. package/dist/ai/source/ErrorIcon.md +43 -0
  266. package/dist/ai/source/FlatListBox.md +396 -0
  267. package/dist/ai/source/GroupedListBox.md +540 -0
  268. package/dist/ai/source/GuidesComponent.md +383 -0
  269. package/dist/ai/source/ListBox.md +238 -0
  270. package/dist/ai/source/OptionsContainer.md +191 -0
  271. package/dist/ai/source/WarningIcon.md +47 -0
  272. package/dist/alert-variants.d.ts +19 -0
  273. package/dist/assets/css/reset.css_inline.js +4 -0
  274. package/dist/assets/svgs/alert.svg_raw.js +4 -0
  275. package/dist/assets/svgs/calendar.svg_raw.js +4 -0
  276. package/dist/assets/svgs/check_stroke.svg_raw.js +4 -0
  277. package/dist/assets/svgs/chevron_down.svg_raw.js +4 -0
  278. package/dist/assets/svgs/chevron_right.svg_raw.js +4 -0
  279. package/dist/assets/svgs/clear.svg_raw.js +4 -0
  280. package/dist/assets/svgs/clock.svg_raw.js +4 -0
  281. package/dist/assets/svgs/error.svg_raw.js +4 -0
  282. package/dist/assets/svgs/search.svg_raw.js +4 -0
  283. package/dist/assets/svgs/sort.svg_raw.js +4 -0
  284. package/dist/assets/svgs/spinner.svg_raw.js +4 -0
  285. package/dist/assets/svgs/user.svg_raw.js +4 -0
  286. package/dist/badge-variants.d.ts +19 -0
  287. package/dist/button-variants.d.ts +21 -0
  288. package/dist/components/BbAccordion/BbAccordion.vue.d.ts +9 -3
  289. package/dist/components/BbAccordion/BbAccordion.vue.js +6 -0
  290. package/dist/components/BbAccordion/BbAccordion.vue_vue_type_script_setup_true_lang.js +66 -0
  291. package/dist/components/BbAccordion/types.d.ts +12 -8
  292. package/dist/components/BbAlert/BbAlert.vue.d.ts +12 -3
  293. package/dist/components/BbAlert/BbAlert.vue.js +6 -0
  294. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +65 -0
  295. package/dist/components/BbAlert/types.d.ts +56 -12
  296. package/dist/components/BbAsterisk/BbAsterisk.vue.d.ts +3 -0
  297. package/dist/components/BbAsterisk/BbAsterisk.vue.js +6 -0
  298. package/dist/components/BbAsterisk/BbAsterisk.vue_vue_type_script_setup_true_lang.js +13 -0
  299. package/dist/components/BbAvatar/BbAvatar.vue.d.ts +5 -0
  300. package/dist/components/BbAvatar/BbAvatar.vue.js +6 -0
  301. package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +78 -0
  302. package/dist/components/BbAvatar/types.d.ts +6 -5
  303. package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +3 -0
  304. package/dist/components/BbBadge/BadgeAppendIcon.vue.js +5 -0
  305. package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +22 -0
  306. package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +15 -0
  307. package/dist/components/BbBadge/BadgeBodyContent.vue.js +5 -0
  308. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +34 -0
  309. package/dist/components/BbBadge/BbBadge.vue.d.ts +8 -1
  310. package/dist/components/BbBadge/BbBadge.vue.js +6 -0
  311. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +83 -0
  312. package/dist/components/BbBadge/BbBadgeButton.vue.d.ts +12 -0
  313. package/dist/components/BbBadge/BbBadgeButton.vue.js +5 -0
  314. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +54 -0
  315. package/dist/components/BbBadge/badgeButtonContext.d.ts +27 -0
  316. package/dist/components/BbBadge/badgeButtonContext.js +5 -0
  317. package/dist/components/BbBadge/types.d.ts +61 -16
  318. package/dist/components/BbBaseButton/BbBaseButton.vue.d.ts +13 -0
  319. package/dist/components/BbBaseButton/BbBaseButton.vue.js +6 -0
  320. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +171 -0
  321. package/dist/components/BbBaseButton/RouterComponent.vue.js +5 -0
  322. package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +29 -0
  323. package/dist/components/BbBaseButton/types.d.ts +191 -0
  324. package/dist/components/BbBaseButton/types.js +33 -0
  325. package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue.d.ts +40 -0
  326. package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue.js +6 -0
  327. package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +145 -0
  328. package/dist/components/BbBaseCheckbox/types.d.ts +224 -0
  329. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue.d.ts +19 -0
  330. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue.js +6 -0
  331. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +190 -0
  332. package/dist/components/BbBaseCheckboxGroup/types.d.ts +257 -0
  333. package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.d.ts +4 -0
  334. package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.js +6 -0
  335. package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue_vue_type_script_setup_true_lang.js +43 -0
  336. package/dist/components/BbBaseCheckboxIcon/types.d.ts +47 -0
  337. package/dist/components/BbBaseColorInput/BbBaseColorInput.vue.d.ts +42 -0
  338. package/dist/components/BbBaseColorInput/BbBaseColorInput.vue.js +6 -0
  339. package/dist/components/BbBaseColorInput/BbBaseColorInput.vue_vue_type_script_setup_true_lang.js +178 -0
  340. package/dist/components/BbBaseColorInput/types.d.ts +210 -0
  341. package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue.d.ts +13 -0
  342. package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue.js +6 -0
  343. package/dist/components/BbBaseColorPalette/BbBaseColorPalette.vue_vue_type_script_setup_true_lang.js +395 -0
  344. package/dist/components/BbBaseColorPalette/types.d.ts +40 -0
  345. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue.js +6 -0
  346. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +300 -0
  347. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +44 -0
  348. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.js +5 -0
  349. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +310 -0
  350. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue.d.ts +5 -0
  351. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue.js +5 -0
  352. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +63 -0
  353. package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue.d.ts +5 -0
  354. package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue.js +5 -0
  355. package/dist/components/BbBaseDatePicker/BbBaseDatePickerYearSelector.vue_vue_type_script_setup_true_lang.js +75 -0
  356. package/dist/components/BbBaseDatePicker/typeahead.d.ts +112 -0
  357. package/dist/components/BbBaseDatePicker/typeahead.js +37 -0
  358. package/dist/components/BbBaseDatePicker/types.d.ts +97 -0
  359. package/dist/components/BbBaseDatePicker/useDatePickerContext.d.ts +58 -0
  360. package/dist/components/BbBaseDatePicker/useDatePickerContext.js +11 -0
  361. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +30 -0
  362. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.js +6 -0
  363. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +716 -0
  364. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue.d.ts +30 -0
  365. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue.js +6 -0
  366. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerTimeSelector.vue_vue_type_script_setup_true_lang.js +204 -0
  367. package/dist/components/BbBaseDatePickerInput/types.d.ts +311 -0
  368. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +17 -0
  369. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.js +6 -0
  370. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +191 -0
  371. package/dist/components/BbBaseInputContainer/types.d.ts +197 -0
  372. package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue.d.ts +52 -0
  373. package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue.js +6 -0
  374. package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue_vue_type_script_setup_true_lang.js +215 -0
  375. package/dist/components/BbBaseNumberInput/types.d.ts +211 -0
  376. package/dist/components/BbBaseRadio/BbBaseRadio.vue.d.ts +33 -0
  377. package/dist/components/BbBaseRadio/BbBaseRadio.vue.js +6 -0
  378. package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +114 -0
  379. package/dist/components/BbBaseRadio/types.d.ts +179 -0
  380. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue.d.ts +19 -0
  381. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue.js +6 -0
  382. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +177 -0
  383. package/dist/components/BbBaseRadioGroup/types.d.ts +223 -0
  384. package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.d.ts +4 -0
  385. package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.js +6 -0
  386. package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue_vue_type_script_setup_true_lang.js +28 -0
  387. package/dist/components/BbBaseRadioIcon/types.d.ts +41 -0
  388. package/dist/components/BbBaseRating/BbBaseRating.vue.d.ts +38 -0
  389. package/dist/components/BbBaseRating/BbBaseRating.vue.js +6 -0
  390. package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +184 -0
  391. package/dist/components/BbBaseRating/types.d.ts +168 -0
  392. package/dist/components/BbBaseSelect/BbBaseSelect.vue.d.ts +19 -0
  393. package/dist/components/BbBaseSelect/BbBaseSelect.vue.js +6 -0
  394. package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +307 -0
  395. package/dist/components/BbBaseSelect/types.d.ts +297 -0
  396. package/dist/components/BbBaseSlider/BbBaseSlider.vue.d.ts +35 -0
  397. package/dist/components/BbBaseSlider/BbBaseSlider.vue.js +6 -0
  398. package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +324 -0
  399. package/dist/components/BbBaseSlider/types.d.ts +200 -0
  400. package/dist/components/BbBaseSwitch/BbBaseSwitch.vue.d.ts +35 -0
  401. package/dist/components/BbBaseSwitch/BbBaseSwitch.vue.js +6 -0
  402. package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +146 -0
  403. package/dist/components/BbBaseSwitch/types.d.ts +10 -0
  404. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue.d.ts +19 -0
  405. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue.js +6 -0
  406. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +190 -0
  407. package/dist/components/BbBaseSwitchGroup/types.d.ts +8 -0
  408. package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.d.ts +4 -0
  409. package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.js +6 -0
  410. package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue_vue_type_script_setup_true_lang.js +30 -0
  411. package/dist/components/BbBaseSwitchIcon/types.d.ts +48 -0
  412. package/dist/components/BbBaseTag/BbBaseTag.vue.d.ts +50 -0
  413. package/dist/components/BbBaseTag/BbBaseTag.vue.js +6 -0
  414. package/dist/components/BbBaseTag/BbBaseTag.vue_vue_type_script_setup_true_lang.js +266 -0
  415. package/dist/components/BbBaseTag/types.d.ts +160 -0
  416. package/dist/components/BbBaseTextInput/BbBaseTextInput.vue.d.ts +45 -0
  417. package/dist/components/BbBaseTextInput/BbBaseTextInput.vue.js +6 -0
  418. package/dist/components/BbBaseTextInput/BbBaseTextInput.vue_vue_type_script_setup_true_lang.js +200 -0
  419. package/dist/components/BbBaseTextInput/types.d.ts +209 -0
  420. package/dist/components/BbBaseTextarea/BbBaseTextarea.vue.d.ts +39 -0
  421. package/dist/components/BbBaseTextarea/BbBaseTextarea.vue.js +6 -0
  422. package/dist/components/BbBaseTextarea/BbBaseTextarea.vue_vue_type_script_setup_true_lang.js +175 -0
  423. package/dist/components/BbBaseTextarea/types.d.ts +170 -0
  424. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +27 -0
  425. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.js +6 -0
  426. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +522 -0
  427. package/dist/components/BbBaseTimePickerInput/types.d.ts +151 -0
  428. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.d.ts +0 -1
  429. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.js +6 -0
  430. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +224 -0
  431. package/dist/components/BbBreadcrumbs/estimateBreadcrumbItemWidth.js +47 -0
  432. package/dist/components/BbBreadcrumbs/types.d.ts +37 -22
  433. package/dist/components/BbButton/BbButton.vue.d.ts +6 -5
  434. package/dist/components/BbButton/BbButton.vue.js +6 -0
  435. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +181 -0
  436. package/dist/components/BbButton/types.d.ts +48 -47
  437. package/dist/components/BbCheckbox/BbCheckbox.vue.d.ts +4 -3
  438. package/dist/components/BbCheckbox/BbCheckbox.vue.js +6 -0
  439. package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +146 -0
  440. package/dist/components/BbCheckbox/types.d.ts +31 -10
  441. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.d.ts +2 -13
  442. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.js +6 -0
  443. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +190 -0
  444. package/dist/components/BbCheckboxGroup/types.d.ts +51 -23
  445. package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +2 -1
  446. package/dist/components/BbCollapsible/BbCollapsible.vue.js +6 -0
  447. package/dist/components/BbCollapsible/BbCollapsible.vue_vue_type_script_setup_true_lang.js +31 -0
  448. package/dist/components/BbCollapsible/types.d.ts +13 -8
  449. package/dist/components/BbColorInput/BbColorInput.vue.d.ts +10 -1
  450. package/dist/components/BbColorInput/BbColorInput.vue.js +6 -0
  451. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +177 -0
  452. package/dist/components/BbColorInput/types.d.ts +44 -11
  453. package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +5 -8
  454. package/dist/components/BbColorPalette/BbColorPalette.vue.js +5 -0
  455. package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +126 -0
  456. package/dist/components/BbColorPalette/types.d.ts +71 -52
  457. package/dist/components/BbConfirm/BbConfirm.vue.js +6 -0
  458. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +138 -0
  459. package/dist/components/BbConfirm/BbConfirmPortal.vue.d.ts +5 -6
  460. package/dist/components/BbConfirm/BbConfirmPortal.vue.js +5 -0
  461. package/dist/components/BbConfirm/BbConfirmPortal.vue_vue_type_script_setup_true_lang.js +19 -0
  462. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +37 -0
  463. package/dist/components/BbDatePicker/BbDatePicker.vue.js +6 -0
  464. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +319 -0
  465. package/dist/components/BbDatePicker/types.d.ts +159 -0
  466. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +3 -1
  467. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.js +6 -0
  468. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +179 -0
  469. package/dist/components/BbDatePickerInput/types.d.ts +134 -16
  470. package/dist/components/BbDialog/BbDialog.vue.d.ts +14 -6
  471. package/dist/components/BbDialog/BbDialog.vue.js +6 -0
  472. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +214 -0
  473. package/dist/components/BbDialog/types.d.ts +146 -1
  474. package/dist/components/BbDialog/useDialogStack.d.ts +5 -0
  475. package/dist/components/BbDialog/useDialogStack.js +20 -0
  476. package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +24 -0
  477. package/dist/components/BbDropdown/AdaptiveDropdown.vue.js +6 -0
  478. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +116 -0
  479. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +14 -7
  480. package/dist/components/BbDropdown/BbDropdown.vue.js +6 -0
  481. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +561 -0
  482. package/dist/components/BbDropdown/BbDropdownGroup.vue.d.ts +44 -0
  483. package/dist/components/BbDropdown/BbDropdownGroup.vue.js +5 -0
  484. package/dist/components/BbDropdown/BbDropdownGroup.vue_vue_type_script_setup_true_lang.js +36 -0
  485. package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +31 -0
  486. package/dist/components/BbDropdown/BbDropdownList.vue.js +6 -0
  487. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +470 -0
  488. package/dist/components/BbDropdown/DropdownPipelineResolver.vue.d.ts +16 -0
  489. package/dist/components/BbDropdown/DropdownPipelineResolver.vue.js +5 -0
  490. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +168 -0
  491. package/dist/components/BbDropdown/normalizeGroups.d.ts +18 -0
  492. package/dist/components/BbDropdown/normalizeGroups.js +46 -0
  493. package/dist/components/BbDropdown/types.d.ts +468 -46
  494. package/dist/components/BbDropdown/types.js +4 -0
  495. package/dist/components/BbDropdown/useDropdownContext.d.ts +89 -0
  496. package/dist/components/BbDropdown/useDropdownContext.js +9 -0
  497. package/dist/components/BbDropdown/useDropdownGroupRegistry.d.ts +108 -0
  498. package/dist/components/BbDropdown/useDropdownGroupRegistry.js +5 -0
  499. package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +3 -3
  500. package/dist/components/BbDropdownButton/BbDropdownButton.vue.js +6 -0
  501. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +119 -0
  502. package/dist/components/BbDropdownButton/types.d.ts +47 -52
  503. package/dist/components/BbDropzone/BbDropzone.vue.d.ts +5 -4
  504. package/dist/components/BbDropzone/BbDropzone.vue.js +6 -0
  505. package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +308 -0
  506. package/dist/components/BbDropzone/types.d.ts +77 -8
  507. package/dist/components/BbIcon/BbIcon.vue.d.ts +3 -2
  508. package/dist/components/BbIcon/BbIcon.vue.js +6 -0
  509. package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +65 -0
  510. package/dist/components/BbIcon/types.d.ts +6 -19
  511. package/dist/components/BbIndicator/BbIndicator.vue.d.ts +14 -0
  512. package/dist/components/BbIndicator/BbIndicator.vue.js +6 -0
  513. package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +56 -0
  514. package/dist/components/BbIndicator/types.d.ts +49 -0
  515. package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +12 -6
  516. package/dist/components/BbNumberInput/BbNumberInput.vue.js +6 -0
  517. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +194 -0
  518. package/dist/components/BbNumberInput/types.d.ts +40 -4
  519. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +16 -10
  520. package/dist/components/BbOffCanvas/BbOffCanvas.vue.js +6 -0
  521. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +284 -0
  522. package/dist/components/BbOffCanvas/types.d.ts +71 -39
  523. package/dist/components/BbOffCanvas/useOffCanvasStack.d.ts +25 -0
  524. package/dist/components/BbOffCanvas/useOffCanvasStack.js +68 -0
  525. package/dist/components/BbPagination/BbPagination.vue.d.ts +9 -4
  526. package/dist/components/BbPagination/BbPagination.vue.js +6 -0
  527. package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +244 -0
  528. package/dist/components/BbPagination/paginationFit.d.ts +38 -0
  529. package/dist/components/BbPagination/paginationFit.js +13 -0
  530. package/dist/components/BbPagination/types.d.ts +51 -16
  531. package/dist/components/BbPopover/BbPopover.vue.d.ts +16 -15
  532. package/dist/components/BbPopover/BbPopover.vue.js +6 -0
  533. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +309 -0
  534. package/dist/components/BbPopover/escapeStack.d.ts +6 -0
  535. package/dist/components/BbPopover/escapeStack.js +10 -0
  536. package/dist/components/BbPopover/types.d.ts +90 -31
  537. package/dist/components/BbProgress/BbProgress.vue.d.ts +1 -0
  538. package/dist/components/BbProgress/BbProgress.vue.js +6 -0
  539. package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +36 -0
  540. package/dist/components/BbProgress/types.d.ts +15 -1
  541. package/dist/components/BbRadio/BbRadio.vue.d.ts +5 -3
  542. package/dist/components/BbRadio/BbRadio.vue.js +6 -0
  543. package/dist/components/BbRadio/BbRadio.vue_vue_type_script_setup_true_lang.js +133 -0
  544. package/dist/components/BbRadio/types.d.ts +32 -9
  545. package/dist/components/BbRadioGroup/BbRadioGroup.vue.d.ts +4 -14
  546. package/dist/components/BbRadioGroup/BbRadioGroup.vue.js +6 -0
  547. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +186 -0
  548. package/dist/components/BbRadioGroup/types.d.ts +48 -22
  549. package/dist/components/BbRating/BbRating.vue.d.ts +4 -1
  550. package/dist/components/BbRating/BbRating.vue.js +6 -0
  551. package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +150 -0
  552. package/dist/components/BbRating/types.d.ts +44 -10
  553. package/dist/components/BbSelect/BbSelect.vue.d.ts +2 -11
  554. package/dist/components/BbSelect/BbSelect.vue.js +6 -0
  555. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +241 -0
  556. package/dist/components/BbSelect/types.d.ts +112 -59
  557. package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +1 -10
  558. package/dist/components/BbSelectPopover/BbSelectPopover.vue.js +6 -0
  559. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +639 -0
  560. package/dist/components/BbSelectPopover/types.d.ts +197 -105
  561. package/dist/components/BbSlider/BbSlider.vue.d.ts +3 -6
  562. package/dist/components/BbSlider/BbSlider.vue.js +6 -0
  563. package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +166 -0
  564. package/dist/components/BbSlider/types.d.ts +44 -13
  565. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +3 -1
  566. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.js +6 -0
  567. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue_vue_type_script_setup_true_lang.js +79 -0
  568. package/dist/components/BbSmoothHeight/types.d.ts +17 -2
  569. package/dist/components/BbSpinner/BbSpinner.vue.d.ts +1 -1
  570. package/dist/components/BbSpinner/BbSpinner.vue.js +6 -0
  571. package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +30 -0
  572. package/dist/components/BbSpinner/types.d.ts +10 -3
  573. package/dist/components/BbSwitch/BbSwitch.vue.d.ts +5 -3
  574. package/dist/components/BbSwitch/BbSwitch.vue.js +6 -0
  575. package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +142 -0
  576. package/dist/components/BbSwitch/types.d.ts +3 -1
  577. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.d.ts +4 -14
  578. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.js +6 -0
  579. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +190 -0
  580. package/dist/components/BbSwitchGroup/types.d.ts +3 -22
  581. package/dist/components/BbTable/BbTable.vue.d.ts +58 -31
  582. package/dist/components/BbTable/BbTable.vue.js +6 -0
  583. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +900 -0
  584. package/dist/components/BbTable/types.d.ts +213 -37
  585. package/dist/components/BbTable/utils.d.ts +9 -1
  586. package/dist/components/BbTable/utils.js +53 -0
  587. package/dist/components/BbTabs/BbTabs.vue.d.ts +20 -0
  588. package/dist/components/BbTabs/BbTabs.vue.js +6 -0
  589. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +64 -0
  590. package/dist/components/BbTabs/BbTabsList.vue.d.ts +19 -0
  591. package/dist/components/BbTabs/BbTabsList.vue.js +6 -0
  592. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +123 -0
  593. package/dist/components/BbTabs/BbTabsPanes.vue.d.ts +16 -0
  594. package/dist/components/BbTabs/BbTabsPanes.vue.js +6 -0
  595. package/dist/components/BbTabs/BbTabsPanes.vue_vue_type_script_setup_true_lang.js +35 -0
  596. package/dist/components/BbTabs/BbTabsRoot.vue.d.ts +20 -0
  597. package/dist/components/BbTabs/BbTabsRoot.vue.js +5 -0
  598. package/dist/components/BbTabs/BbTabsRoot.vue_vue_type_script_setup_true_lang.js +55 -0
  599. package/dist/components/BbTabs/types.d.ts +264 -0
  600. package/dist/components/BbTag/BbTag.vue.d.ts +19 -6
  601. package/dist/components/BbTag/BbTag.vue.js +6 -0
  602. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +187 -0
  603. package/dist/components/BbTag/types.d.ts +55 -17
  604. package/dist/components/BbTextInput/BbTextInput.vue.d.ts +10 -1
  605. package/dist/components/BbTextInput/BbTextInput.vue.js +6 -0
  606. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +195 -0
  607. package/dist/components/BbTextInput/types.d.ts +31 -4
  608. package/dist/components/BbTextarea/BbTextarea.vue.d.ts +10 -1
  609. package/dist/components/BbTextarea/BbTextarea.vue.js +6 -0
  610. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +178 -0
  611. package/dist/components/BbTextarea/types.d.ts +33 -2
  612. package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +33 -0
  613. package/dist/components/BbTimePicker/BbTimePicker.vue.js +6 -0
  614. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +244 -0
  615. package/dist/components/BbTimePicker/types.d.ts +133 -0
  616. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.d.ts +25 -0
  617. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.js +6 -0
  618. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +157 -0
  619. package/dist/components/BbTimePickerInput/types.d.ts +174 -0
  620. package/dist/components/BbToast/BbToast.vue.d.ts +2 -3
  621. package/dist/components/BbToast/BbToast.vue.js +6 -0
  622. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +39 -0
  623. package/dist/components/BbToast/BbToastMessage.vue.d.ts +17 -8
  624. package/dist/components/BbToast/BbToastMessage.vue.js +5 -0
  625. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +170 -0
  626. package/dist/components/BbToast/BbToastPortal.vue.d.ts +30 -0
  627. package/dist/components/BbToast/BbToastPortal.vue.js +5 -0
  628. package/dist/components/BbToast/BbToastPortal.vue_vue_type_script_setup_true_lang.js +19 -0
  629. package/dist/components/BbToast/BbToastRegion.vue.d.ts +8 -0
  630. package/dist/components/BbToast/BbToastRegion.vue.js +5 -0
  631. package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +100 -0
  632. package/dist/components/BbToast/types.d.ts +69 -5
  633. package/dist/components/BbTooltip/BbTooltip.vue.d.ts +10 -3
  634. package/dist/components/BbTooltip/BbTooltip.vue.js +6 -0
  635. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +160 -0
  636. package/dist/components/BbTooltip/types.d.ts +69 -11
  637. package/dist/components/BbTree/BbTree.vue.d.ts +28 -13
  638. package/dist/components/BbTree/BbTree.vue.js +6 -0
  639. package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +55 -0
  640. package/dist/components/BbTree/BbTreeLevel.vue.d.ts +19 -0
  641. package/dist/components/BbTree/BbTreeLevel.vue.js +5 -0
  642. package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +94 -0
  643. package/dist/components/BbTree/context.d.ts +17 -0
  644. package/dist/components/BbTree/context.js +4 -0
  645. package/dist/components/BbTree/types.d.ts +94 -41
  646. package/dist/components/ChipsBox/ChipsBox.vue.d.ts +2 -1
  647. package/dist/components/ChipsBox/ChipsBox.vue.js +5 -0
  648. package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +98 -0
  649. package/dist/components/ChipsBox/types.d.ts +12 -5
  650. package/dist/components/ClearableButton/ClearableButton.vue.d.ts +2 -1
  651. package/dist/components/ClearableButton/ClearableButton.vue.js +6 -0
  652. package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +19 -0
  653. package/dist/components/ClearableButton/types.d.ts +7 -1
  654. package/dist/components/CloseIcon/CloseButton.vue.d.ts +5 -0
  655. package/dist/components/CloseIcon/CloseButton.vue.js +7 -0
  656. package/dist/components/CloseIcon/CloseButton.vue_vue_type_script_setup_true_lang.js +23 -0
  657. package/dist/components/CloseIcon/types.d.ts +2 -0
  658. package/dist/components/CommaBox/CommaBox.vue.d.ts +2 -1
  659. package/dist/components/CommaBox/CommaBox.vue.js +6 -0
  660. package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +81 -0
  661. package/dist/components/CommaBox/types.d.ts +6 -7
  662. package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.d.ts +19 -0
  663. package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.js +6 -0
  664. package/dist/components/CommonInputWrapper/CommonInputWrapper.vue_vue_type_script_setup_true_lang.js +107 -0
  665. package/dist/components/CommonInputWrapper/types.d.ts +96 -0
  666. package/dist/components/CommonPopover/CommonPopover.vue.d.ts +9 -3
  667. package/dist/components/CommonPopover/CommonPopover.vue.js +6 -0
  668. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +160 -0
  669. package/dist/components/CommonPopover/types.d.ts +65 -16
  670. package/dist/components/ErrorIcon/ErrorIcon.vue.d.ts +2 -0
  671. package/dist/components/ErrorIcon/ErrorIcon.vue.js +6 -0
  672. package/dist/components/ErrorIcon/ErrorIcon.vue_vue_type_script_setup_true_lang.js +16 -0
  673. package/dist/components/FlatListBox/FlatListBox.vue.d.ts +2 -5
  674. package/dist/components/FlatListBox/FlatListBox.vue.js +5 -0
  675. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +167 -0
  676. package/dist/components/FlatListBox/types.d.ts +1 -1
  677. package/dist/components/GroupedListBox/GroupedListBox.vue.d.ts +2 -5
  678. package/dist/components/GroupedListBox/GroupedListBox.vue.js +5 -0
  679. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +218 -0
  680. package/dist/components/ListBox/ListBox.vue.d.ts +3 -6
  681. package/dist/components/ListBox/ListBox.vue.js +5 -0
  682. package/dist/components/ListBox/ListBox.vue_vue_type_script_setup_true_lang.js +112 -0
  683. package/dist/components/ListBox/types.d.ts +1 -1
  684. package/dist/components/OptionsContainer/OptionsContainer.vue.d.ts +1 -0
  685. package/dist/components/OptionsContainer/OptionsContainer.vue.js +5 -0
  686. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +52 -0
  687. package/dist/components/OptionsContainer/types.d.ts +14 -24
  688. package/dist/components/Transitions/ScaleFade.vue.d.ts +2 -2
  689. package/dist/components/Transitions/ScaleFade.vue.js +5 -0
  690. package/dist/components/Transitions/ScaleFade.vue_vue_type_script_setup_true_lang.js +47 -0
  691. package/dist/components/Transitions/Slide.vue.d.ts +15 -0
  692. package/dist/components/Transitions/Slide.vue.js +7 -0
  693. package/dist/components/Transitions/Slide.vue_vue_type_script_setup_true_lang.js +28 -0
  694. package/dist/components/WarningIcon/WarningIcon.vue.d.ts +5 -0
  695. package/dist/components/WarningIcon/WarningIcon.vue.js +6 -0
  696. package/dist/components/WarningIcon/WarningIcon.vue_vue_type_script_setup_true_lang.js +16 -0
  697. package/dist/components/WarningIcon/types.d.ts +3 -0
  698. package/dist/composables/__testResets.d.ts +1 -0
  699. package/dist/composables/useActiveInactiveState.d.ts +4 -0
  700. package/dist/composables/useActiveInactiveState.js +21 -0
  701. package/dist/composables/useBaseOptions.d.ts +3 -3
  702. package/dist/composables/useBaseOptions.js +31 -0
  703. package/dist/composables/useBbConfig.d.ts +8 -37
  704. package/dist/composables/useBbConfig.js +5 -0
  705. package/dist/composables/useBbDropdownContext.d.ts +89 -0
  706. package/dist/composables/useBbDropdownContext.js +46 -0
  707. package/dist/composables/useBbFormContext.d.ts +90 -0
  708. package/dist/composables/useBbFormContext.js +69 -0
  709. package/dist/composables/useBbTableContext.d.ts +195 -0
  710. package/dist/composables/useBbTableContext.js +208 -0
  711. package/dist/composables/useBbTabsContext.d.ts +111 -0
  712. package/dist/composables/useBbTabsContext.js +225 -0
  713. package/dist/composables/useBreakpoint.d.ts +13 -0
  714. package/dist/composables/useBreakpoint.js +39 -0
  715. package/dist/composables/useBroadcastChannelInstance.d.ts +1 -3
  716. package/dist/composables/useBroadcastChannelInstance.js +39 -0
  717. package/dist/composables/useCancelableFunction.js +37 -0
  718. package/dist/composables/useClosingInert.d.ts +28 -0
  719. package/dist/composables/useClosingInert.js +23 -0
  720. package/dist/composables/useCoherence.js +16 -0
  721. package/dist/composables/useConfirm.d.ts +278 -68
  722. package/dist/composables/useConfirm.js +130 -0
  723. package/dist/composables/useCountdown.js +42 -0
  724. package/dist/composables/useHashedWatcher.d.ts +17 -0
  725. package/dist/composables/useHashedWatcher.js +14 -0
  726. package/dist/composables/useId.d.ts +3 -2
  727. package/dist/composables/useIndexById.js +16 -0
  728. package/dist/composables/useInertiaPage.d.ts +10 -0
  729. package/dist/composables/useInertiaPage.js +8 -0
  730. package/dist/composables/useItemText.js +17 -0
  731. package/dist/composables/useItemValue.js +9 -0
  732. package/dist/composables/useItemsGetter.d.ts +1 -1
  733. package/dist/composables/useItemsGetter.js +30 -0
  734. package/dist/composables/useListboxFocus.js +66 -0
  735. package/dist/composables/useLocale.d.ts +1 -1
  736. package/dist/composables/useLocale.js +11 -0
  737. package/dist/composables/useLogger.d.ts +1 -1
  738. package/dist/composables/useLogger.js +10 -0
  739. package/dist/composables/useMinimalQueue.d.ts +1 -1
  740. package/dist/composables/useMobile.js +7 -0
  741. package/dist/composables/useOnFalsy.d.ts +2 -0
  742. package/dist/composables/useOnFalsy.js +9 -0
  743. package/dist/composables/useOnTruthy.d.ts +7 -0
  744. package/dist/composables/useOnTruthy.js +9 -0
  745. package/dist/composables/usePrefill.d.ts +2 -1
  746. package/dist/composables/usePrefill.js +24 -0
  747. package/dist/composables/useQuery.d.ts +15 -3
  748. package/dist/composables/useQuery.js +42 -0
  749. package/dist/composables/useRoute.js +11 -0
  750. package/dist/composables/useRouter.js +8 -0
  751. package/dist/composables/useSafeArea.d.ts +51 -0
  752. package/dist/composables/useSafeArea.js +16 -0
  753. package/dist/composables/useSegmentedFields.d.ts +104 -0
  754. package/dist/composables/useSegmentedFields.js +159 -0
  755. package/dist/composables/useTableWidthContext.d.ts +5 -0
  756. package/dist/composables/useTableWidthContext.js +42 -0
  757. package/dist/composables/useToast.d.ts +40 -70
  758. package/dist/composables/useToast.js +58 -0
  759. package/dist/composables/useTopLayer.d.ts +9 -0
  760. package/dist/composables/useTopLayer.js +7 -0
  761. package/dist/composables/useUntil.js +13 -0
  762. package/dist/composables/useViewportWidth.d.ts +17 -0
  763. package/dist/composables/useViewportWidth.js +6 -0
  764. package/dist/confirm-variants.d.ts +17 -0
  765. package/dist/deprecation/ai-deprecations.json.d.ts +784 -0
  766. package/dist/deprecation/ai-deprecations.json.js +4 -0
  767. package/dist/deprecation/removedProps.d.ts +3 -0
  768. package/dist/deprecation/removedProps.js +13 -0
  769. package/dist/directives/bbColor.d.ts +65 -0
  770. package/dist/directives/bbColor.js +24 -0
  771. package/dist/directives/bbDate.d.ts +66 -0
  772. package/dist/directives/bbDate.js +24 -0
  773. package/dist/directives/bbDropdown.d.ts +15 -11
  774. package/dist/directives/bbDropdown.js +23 -0
  775. package/dist/directives/bbTime.d.ts +64 -0
  776. package/dist/directives/bbTime.js +24 -0
  777. package/dist/directives/bbTooltip.d.ts +16 -11
  778. package/dist/directives/bbTooltip.js +24 -0
  779. package/dist/directives/createPopoverDirective.js +54 -0
  780. package/dist/dropdown-item-variants.d.ts +17 -0
  781. package/dist/i18n/index.d.ts +51 -3
  782. package/dist/i18n/index.js +27 -0
  783. package/dist/i18n/locales/cs.json +115 -0
  784. package/dist/i18n/locales/da.json +115 -0
  785. package/dist/i18n/locales/de.json +115 -0
  786. package/dist/i18n/locales/el.json +115 -0
  787. package/dist/i18n/locales/en.json +115 -0
  788. package/dist/i18n/locales/es.json +115 -0
  789. package/dist/i18n/locales/fi.json +115 -0
  790. package/dist/i18n/locales/fr.json +115 -0
  791. package/dist/i18n/locales/hu.json +115 -0
  792. package/dist/i18n/locales/it.json +115 -0
  793. package/dist/i18n/locales/ja.json +115 -0
  794. package/dist/i18n/locales/ko.json +115 -0
  795. package/dist/i18n/locales/nb.json +115 -0
  796. package/dist/i18n/locales/nl.json +115 -0
  797. package/dist/i18n/locales/pl.json +115 -0
  798. package/dist/i18n/locales/pt.json +115 -0
  799. package/dist/i18n/locales/ro.json +115 -0
  800. package/dist/i18n/locales/ru.json +115 -0
  801. package/dist/i18n/locales/sv.json +115 -0
  802. package/dist/i18n/locales/tr.json +115 -0
  803. package/dist/i18n/locales/uk.json +115 -0
  804. package/dist/i18n/locales/zh-cn.json +115 -0
  805. package/dist/icons-whitelist.d.ts +8 -0
  806. package/dist/index.d.ts +96 -79
  807. package/dist/index.js +76 -82
  808. package/dist/indicator-variants.d.ts +20 -0
  809. package/dist/llms-full.txt +79703 -0
  810. package/dist/llms-medium.txt +1514 -0
  811. package/dist/llms.txt +105 -0
  812. package/dist/locale-blueprint.json +141 -0
  813. package/dist/locale-registry.d.ts +37 -0
  814. package/dist/nuxt-module.d.ts +3 -0
  815. package/dist/nuxt.js +19 -0
  816. package/dist/plugin.d.ts +4 -0
  817. package/dist/plugin.js +22 -0
  818. package/dist/reset.css +1 -0
  819. package/dist/reset.d.ts +0 -0
  820. package/dist/runtime/nuxt-plugin.d.ts +2 -0
  821. package/dist/runtime/nuxt-plugin.js +24 -0
  822. package/dist/styles.css +2 -0
  823. package/dist/styles.d.ts +0 -0
  824. package/dist/toast-variants.d.ts +20 -0
  825. package/dist/tooltip-variants.d.ts +17 -0
  826. package/dist/types/ActionButton.d.ts +32 -0
  827. package/dist/types/AlertVariant.d.ts +16 -0
  828. package/dist/types/BadgeVariant.d.ts +16 -0
  829. package/dist/types/ButtonVariant.d.ts +17 -0
  830. package/dist/types/Classes.d.ts +1 -1
  831. package/dist/types/ColumnName.d.ts +1 -1
  832. package/dist/types/CommonProps.d.ts +68 -277
  833. package/dist/types/Config.d.ts +84 -0
  834. package/dist/types/ConfirmVariant.d.ts +15 -0
  835. package/dist/types/DropdownItemVariant.d.ts +18 -0
  836. package/dist/types/Icon.d.ts +5 -7
  837. package/dist/types/IndicatorVariant.d.ts +16 -0
  838. package/dist/types/InputDirection.d.ts +15 -0
  839. package/dist/types/ItemAccessor.d.ts +21 -0
  840. package/dist/types/Placement.d.ts +6 -0
  841. package/dist/types/ResponsiveSize.d.ts +20 -0
  842. package/dist/types/SizeScale.d.ts +8 -0
  843. package/dist/types/ToastVariant.d.ts +17 -0
  844. package/dist/types/TooltipVariant.d.ts +18 -0
  845. package/dist/utilities/functions/bytesToUnit.d.ts +2 -0
  846. package/dist/utilities/functions/bytesToUnit.js +18 -0
  847. package/dist/utilities/functions/clampPrecision.js +10 -0
  848. package/dist/utilities/functions/convertDateValue.d.ts +23 -10
  849. package/dist/utilities/functions/convertDateValue.js +12 -0
  850. package/dist/utilities/functions/deburr.js +5 -0
  851. package/dist/utilities/functions/empty.js +5 -0
  852. package/dist/utilities/functions/flattenTree.d.ts +1 -1
  853. package/dist/utilities/functions/hash.js +5 -0
  854. package/dist/utilities/functions/isDateDisabled.d.ts +1 -0
  855. package/dist/utilities/functions/isDateDisabled.js +20 -0
  856. package/dist/utilities/functions/isEqual.js +5 -0
  857. package/dist/utilities/functions/isNotEmpty.js +5 -0
  858. package/dist/utilities/functions/matchAnyKey.d.ts +1 -1
  859. package/dist/utilities/functions/matchAnyKey.js +15 -0
  860. package/dist/utilities/functions/parseSize.d.ts +1 -1
  861. package/dist/utilities/functions/parseSize.js +15 -0
  862. package/dist/utilities/functions/percentage.js +11 -0
  863. package/dist/utilities/functions/pipe.d.ts +1 -1
  864. package/dist/utilities/functions/reject.d.ts +25 -0
  865. package/dist/utilities/functions/reject.js +28 -0
  866. package/dist/utilities/functions/resolveEnumProp.d.ts +19 -0
  867. package/dist/utilities/functions/resolveEnumProp.js +5 -0
  868. package/dist/utilities/functions/slotKey.d.ts +13 -0
  869. package/dist/utilities/functions/slotKey.js +4 -0
  870. package/dist/utilities/functions/sort.d.ts +2 -2
  871. package/dist/utilities/functions/sort.js +19 -0
  872. package/dist/utilities/functions/throttle.js +5 -0
  873. package/dist/utilities/functions/waitFor.d.ts +9 -2
  874. package/dist/utilities/functions/waitFor.js +14 -0
  875. package/dist/utilities/functions/warnRemovedAttrs.d.ts +11 -0
  876. package/dist/utilities/functions/warnRemovedAttrs.js +20 -0
  877. package/dist/utilities/functions/when.js +5 -0
  878. package/dist/utilities/misc/iconsInjectionKey.d.ts +15 -0
  879. package/dist/utilities/misc/iconsInjectionKey.js +4 -0
  880. package/dist/utilities/misc/transitions.d.ts +5 -0
  881. package/dist/utilities/misc/transitions.js +8 -0
  882. package/dist/utils/injectLibraryStyles.d.ts +6 -0
  883. package/dist/utils/injectLibraryStyles.js +38 -0
  884. package/dist/validated/BbCheckbox.vue.d.ts +29 -0
  885. package/dist/validated/BbCheckbox.vue.js +5 -0
  886. package/dist/validated/BbCheckbox.vue_vue_type_script_setup_true_lang.js +75 -0
  887. package/dist/validated/BbCheckboxGroup.vue.d.ts +34 -0
  888. package/dist/validated/BbCheckboxGroup.vue.js +5 -0
  889. package/dist/validated/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +82 -0
  890. package/dist/validated/BbColorInput.vue.d.ts +36 -0
  891. package/dist/validated/BbColorInput.vue.js +5 -0
  892. package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +71 -0
  893. package/dist/validated/BbDatePickerInput.vue.d.ts +41 -0
  894. package/dist/validated/BbDatePickerInput.vue.js +5 -0
  895. package/dist/validated/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +90 -0
  896. package/dist/validated/BbDropzone.vue.d.ts +24 -0
  897. package/dist/validated/BbDropzone.vue.js +5 -0
  898. package/dist/validated/BbDropzone.vue_vue_type_script_setup_true_lang.js +45 -0
  899. package/dist/validated/BbForm.vue.d.ts +28 -0
  900. package/dist/validated/BbForm.vue.js +5 -0
  901. package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +42 -0
  902. package/dist/validated/BbNumberInput.vue.d.ts +36 -0
  903. package/dist/validated/BbNumberInput.vue.js +5 -0
  904. package/dist/validated/BbNumberInput.vue_vue_type_script_setup_true_lang.js +72 -0
  905. package/dist/validated/BbRadioGroup.vue.d.ts +34 -0
  906. package/dist/validated/BbRadioGroup.vue.js +5 -0
  907. package/dist/validated/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +78 -0
  908. package/dist/validated/BbRating.vue.d.ts +30 -0
  909. package/dist/validated/BbRating.vue.js +5 -0
  910. package/dist/validated/BbRating.vue_vue_type_script_setup_true_lang.js +63 -0
  911. package/dist/validated/BbSelect.vue.d.ts +46 -0
  912. package/dist/validated/BbSelect.vue.js +5 -0
  913. package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +109 -0
  914. package/dist/validated/BbSlider.vue.d.ts +36 -0
  915. package/dist/validated/BbSlider.vue.js +5 -0
  916. package/dist/validated/BbSlider.vue_vue_type_script_setup_true_lang.js +69 -0
  917. package/dist/validated/BbSwitch.vue.d.ts +29 -0
  918. package/dist/validated/BbSwitch.vue.js +5 -0
  919. package/dist/validated/BbSwitch.vue_vue_type_script_setup_true_lang.js +75 -0
  920. package/dist/validated/BbSwitchGroup.vue.d.ts +34 -0
  921. package/dist/validated/BbSwitchGroup.vue.js +5 -0
  922. package/dist/validated/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +82 -0
  923. package/dist/validated/BbTag.vue.d.ts +36 -0
  924. package/dist/validated/BbTag.vue.js +5 -0
  925. package/dist/validated/BbTag.vue_vue_type_script_setup_true_lang.js +72 -0
  926. package/dist/validated/BbTextInput.vue.d.ts +36 -0
  927. package/dist/validated/BbTextInput.vue.js +5 -0
  928. package/dist/validated/BbTextInput.vue_vue_type_script_setup_true_lang.js +72 -0
  929. package/dist/validated/BbTextarea.vue.d.ts +36 -0
  930. package/dist/validated/BbTextarea.vue.js +5 -0
  931. package/dist/validated/BbTextarea.vue_vue_type_script_setup_true_lang.js +70 -0
  932. package/dist/validated/BbTimePickerInput.vue.d.ts +37 -0
  933. package/dist/validated/BbTimePickerInput.vue.js +5 -0
  934. package/dist/validated/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +81 -0
  935. package/dist/validated/index.d.ts +29 -0
  936. package/dist/validated/useValidatedField.d.ts +93 -0
  937. package/dist/validated/useValidatedField.js +51 -0
  938. package/dist/validated.js +21 -0
  939. package/dist/vite-plugin.d.ts +261 -0
  940. package/dist/vite.js +603 -0
  941. package/llms.txt +107 -0
  942. package/package.json +181 -60
  943. package/scripts/lib/__fixtures__/validated-manifest.json +65 -0
  944. package/scripts/lib/ensure-manifest.mjs +39 -0
  945. package/scripts/lib/eslint-plugin-autofix.node.test.mjs +109 -0
  946. package/scripts/lib/eslint-plugin-recommended.node.test.mjs +87 -0
  947. package/scripts/lib/eslint-plugin-slots.node.test.mjs +271 -0
  948. package/scripts/lib/eslint-plugin.mjs +702 -0
  949. package/scripts/lib/eslint-plugin.node.test.mjs +193 -0
  950. package/scripts/lib/html-attributes.mjs +191 -0
  951. package/scripts/lib/mcp-config.mjs +126 -0
  952. package/scripts/lib/migrate-fix.mjs +115 -0
  953. package/scripts/lib/validate-bb-markup.mjs +488 -0
  954. package/dist/ai/BaseButton.md +0 -449
  955. package/dist/ai/BaseCheckbox.md +0 -512
  956. package/dist/ai/BaseCheckboxGroup.md +0 -597
  957. package/dist/ai/BaseColorInput.md +0 -461
  958. package/dist/ai/BaseDatePicker.md +0 -739
  959. package/dist/ai/BaseDatePickerInput.md +0 -1517
  960. package/dist/ai/BaseDialog.md +0 -610
  961. package/dist/ai/BaseInputContainer.md +0 -570
  962. package/dist/ai/BaseNumberInput.md +0 -509
  963. package/dist/ai/BaseRadio.md +0 -405
  964. package/dist/ai/BaseRadioGroup.md +0 -535
  965. package/dist/ai/BaseRating.md +0 -489
  966. package/dist/ai/BaseSelect.md +0 -1742
  967. package/dist/ai/BaseSlider.md +0 -871
  968. package/dist/ai/BaseSwitch.md +0 -322
  969. package/dist/ai/BaseSwitchGroup.md +0 -298
  970. package/dist/ai/BaseTag.md +0 -623
  971. package/dist/ai/BaseTextInput.md +0 -392
  972. package/dist/ai/BaseTextarea.md +0 -398
  973. package/dist/ai/BbChip.md +0 -147
  974. package/dist/ai/BbIntersection.md +0 -120
  975. package/dist/ai/BbRatio.md +0 -61
  976. package/dist/ai/BbRows.md +0 -307
  977. package/dist/ai/BbTab.md +0 -950
  978. package/dist/ai/CommonInputInnerContainer.md +0 -414
  979. package/dist/ai/CommonInputOuterContainer.md +0 -55
  980. package/dist/components/BaseButton/BaseButton.vue.d.ts +0 -14
  981. package/dist/components/BaseButton/types.d.ts +0 -159
  982. package/dist/components/BaseCheckbox/BaseCheckbox.vue.d.ts +0 -39
  983. package/dist/components/BaseCheckbox/types.d.ts +0 -213
  984. package/dist/components/BaseCheckboxGroup/BaseCheckboxGroup.vue.d.ts +0 -30
  985. package/dist/components/BaseCheckboxGroup/types.d.ts +0 -282
  986. package/dist/components/BaseColorInput/BaseColorInput.vue.d.ts +0 -35
  987. package/dist/components/BaseColorInput/ColorPalette.vue.d.ts +0 -13
  988. package/dist/components/BaseColorInput/types.d.ts +0 -233
  989. package/dist/components/BaseDatePicker/BaseDatePickerHeader.vue.d.ts +0 -15
  990. package/dist/components/BaseDatePicker/BaseDatePickerInputDaySelector.vue.d.ts +0 -58
  991. package/dist/components/BaseDatePicker/BaseDatePickerMonthSelector.vue.d.ts +0 -12
  992. package/dist/components/BaseDatePicker/BaseDatePickerYearSelector.vue.d.ts +0 -12
  993. package/dist/components/BaseDatePicker/types.d.ts +0 -100
  994. package/dist/components/BaseDatePickerInput/BaseDatePickerInput.vue.d.ts +0 -26
  995. package/dist/components/BaseDatePickerInput/types.d.ts +0 -206
  996. package/dist/components/BaseDialog/BaseDialog.vue.d.ts +0 -37
  997. package/dist/components/BaseDialog/types.d.ts +0 -180
  998. package/dist/components/BaseInputContainer/BaseInputContainer.vue.d.ts +0 -18
  999. package/dist/components/BaseInputContainer/types.d.ts +0 -126
  1000. package/dist/components/BaseNumberInput/BaseNumberInput.vue.d.ts +0 -46
  1001. package/dist/components/BaseNumberInput/types.d.ts +0 -191
  1002. package/dist/components/BaseRadio/BaseRadio.vue.d.ts +0 -31
  1003. package/dist/components/BaseRadio/types.d.ts +0 -173
  1004. package/dist/components/BaseRadioGroup/BaseRadioGroup.vue.d.ts +0 -30
  1005. package/dist/components/BaseRadioGroup/types.d.ts +0 -240
  1006. package/dist/components/BaseRating/BaseRating.vue.d.ts +0 -35
  1007. package/dist/components/BaseRating/types.d.ts +0 -144
  1008. package/dist/components/BaseSelect/BaseSelect.vue.d.ts +0 -28
  1009. package/dist/components/BaseSelect/types.d.ts +0 -470
  1010. package/dist/components/BaseSlider/BaseSlider.vue.d.ts +0 -38
  1011. package/dist/components/BaseSlider/types.d.ts +0 -201
  1012. package/dist/components/BaseSwitch/BaseSwitch.vue.d.ts +0 -34
  1013. package/dist/components/BaseSwitch/types.d.ts +0 -25
  1014. package/dist/components/BaseSwitchGroup/BaseSwitchGroup.vue.d.ts +0 -30
  1015. package/dist/components/BaseSwitchGroup/types.d.ts +0 -8
  1016. package/dist/components/BaseTag/BaseTag.vue.d.ts +0 -37
  1017. package/dist/components/BaseTag/types.d.ts +0 -136
  1018. package/dist/components/BaseTextInput/BaseTextInput.vue.d.ts +0 -33
  1019. package/dist/components/BaseTextInput/types.d.ts +0 -166
  1020. package/dist/components/BaseTextarea/BaseTextarea.vue.d.ts +0 -31
  1021. package/dist/components/BaseTextarea/types.d.ts +0 -151
  1022. package/dist/components/BbChip/BbChip.vue.d.ts +0 -17
  1023. package/dist/components/BbChip/types.d.ts +0 -23
  1024. package/dist/components/BbIntersection/BbIntersection.vue.d.ts +0 -23
  1025. package/dist/components/BbIntersection/types.d.ts +0 -36
  1026. package/dist/components/BbRatio/BbRatio.vue.d.ts +0 -14
  1027. package/dist/components/BbRatio/types.d.ts +0 -15
  1028. package/dist/components/BbRows/BbRows.vue.d.ts +0 -62
  1029. package/dist/components/BbRows/types.d.ts +0 -21
  1030. package/dist/components/BbTab/BbTab.vue.d.ts +0 -27
  1031. package/dist/components/BbTab/types.d.ts +0 -186
  1032. package/dist/components/CommonInputInnerContainer/CommonInputInnerContainer.vue.d.ts +0 -15
  1033. package/dist/components/CommonInputInnerContainer/types.d.ts +0 -47
  1034. package/dist/components/CommonInputOuterContainer/CommonInputOuterContainer.vue.d.ts +0 -11
  1035. package/dist/components/CommonInputOuterContainer/types.d.ts +0 -16
  1036. package/dist/composables/useModalsState.d.ts +0 -5
  1037. package/dist/composables/useQueue.d.ts +0 -58
  1038. package/dist/composables/useWizard.d.ts +0 -85
  1039. package/dist/i18n/en.d.ts +0 -67
  1040. package/dist/i18n/it.d.ts +0 -67
  1041. package/dist/index.css +0 -2
  1042. package/dist/index100.js +0 -6
  1043. package/dist/index101.js +0 -300
  1044. package/dist/index102.js +0 -16
  1045. package/dist/index103.js +0 -16
  1046. package/dist/index104.js +0 -27
  1047. package/dist/index109.js +0 -19
  1048. package/dist/index11.js +0 -42
  1049. package/dist/index110.js +0 -12
  1050. package/dist/index111.js +0 -19
  1051. package/dist/index112.js +0 -25
  1052. package/dist/index114.js +0 -7
  1053. package/dist/index115.js +0 -241
  1054. package/dist/index116.js +0 -5
  1055. package/dist/index117.js +0 -42
  1056. package/dist/index118.js +0 -5
  1057. package/dist/index119.js +0 -53
  1058. package/dist/index120.js +0 -5
  1059. package/dist/index121.js +0 -32
  1060. package/dist/index122.js +0 -5
  1061. package/dist/index124.js +0 -52
  1062. package/dist/index125.js +0 -5
  1063. package/dist/index126.js +0 -223
  1064. package/dist/index128.js +0 -6
  1065. package/dist/index129.js +0 -162
  1066. package/dist/index13.js +0 -92
  1067. package/dist/index130.js +0 -25
  1068. package/dist/index131.js +0 -51
  1069. package/dist/index132.js +0 -5
  1070. package/dist/index133.js +0 -607
  1071. package/dist/index135.js +0 -6
  1072. package/dist/index136.js +0 -14
  1073. package/dist/index137.js +0 -153
  1074. package/dist/index139.js +0 -6
  1075. package/dist/index14.js +0 -306
  1076. package/dist/index140.js +0 -224
  1077. package/dist/index141.js +0 -5
  1078. package/dist/index143.js +0 -128
  1079. package/dist/index145.js +0 -6
  1080. package/dist/index146.js +0 -8
  1081. package/dist/index147.js +0 -182
  1082. package/dist/index149.js +0 -6
  1083. package/dist/index15.js +0 -10
  1084. package/dist/index151.js +0 -4
  1085. package/dist/index152.js +0 -95
  1086. package/dist/index154.js +0 -6
  1087. package/dist/index155.js +0 -168
  1088. package/dist/index157.js +0 -6
  1089. package/dist/index158.js +0 -145
  1090. package/dist/index16.js +0 -59
  1091. package/dist/index160.js +0 -6
  1092. package/dist/index161.js +0 -53
  1093. package/dist/index163.js +0 -6
  1094. package/dist/index164.js +0 -16
  1095. package/dist/index166.js +0 -35
  1096. package/dist/index168.js +0 -6
  1097. package/dist/index169.js +0 -89
  1098. package/dist/index171.js +0 -6
  1099. package/dist/index172.js +0 -82
  1100. package/dist/index174.js +0 -6
  1101. package/dist/index175.js +0 -38
  1102. package/dist/index176.js +0 -461
  1103. package/dist/index177.js +0 -28
  1104. package/dist/index178.js +0 -66
  1105. package/dist/index18.js +0 -35
  1106. package/dist/index180.js +0 -162
  1107. package/dist/index181.js +0 -5
  1108. package/dist/index182.js +0 -217
  1109. package/dist/index183.js +0 -5
  1110. package/dist/index184.js +0 -112
  1111. package/dist/index185.js +0 -5
  1112. package/dist/index186.js +0 -459
  1113. package/dist/index188.js +0 -6
  1114. package/dist/index19.js +0 -4
  1115. package/dist/index192.js +0 -268
  1116. package/dist/index194.js +0 -6
  1117. package/dist/index195.js +0 -124
  1118. package/dist/index197.js +0 -6
  1119. package/dist/index198.js +0 -174
  1120. package/dist/index2.js +0 -20
  1121. package/dist/index20.js +0 -9
  1122. package/dist/index200.js +0 -6
  1123. package/dist/index201.js +0 -224
  1124. package/dist/index203.js +0 -6
  1125. package/dist/index204.js +0 -135
  1126. package/dist/index206.js +0 -6
  1127. package/dist/index207.js +0 -5
  1128. package/dist/index208.js +0 -170
  1129. package/dist/index21.js +0 -35
  1130. package/dist/index210.js +0 -6
  1131. package/dist/index211.js +0 -37
  1132. package/dist/index213.js +0 -6
  1133. package/dist/index214.js +0 -63
  1134. package/dist/index216.js +0 -6
  1135. package/dist/index217.js +0 -74
  1136. package/dist/index219.js +0 -6
  1137. package/dist/index22.js +0 -6
  1138. package/dist/index220.js +0 -65
  1139. package/dist/index222.js +0 -6
  1140. package/dist/index223.js +0 -67
  1141. package/dist/index225.js +0 -6
  1142. package/dist/index226.js +0 -41
  1143. package/dist/index228.js +0 -6
  1144. package/dist/index229.js +0 -10
  1145. package/dist/index23.js +0 -7
  1146. package/dist/index230.js +0 -22
  1147. package/dist/index232.js +0 -8
  1148. package/dist/index233.js +0 -297
  1149. package/dist/index235.js +0 -6
  1150. package/dist/index236.js +0 -47
  1151. package/dist/index237.js +0 -165
  1152. package/dist/index239.js +0 -6
  1153. package/dist/index24.js +0 -9
  1154. package/dist/index241.js +0 -159
  1155. package/dist/index243.js +0 -6
  1156. package/dist/index244.js +0 -134
  1157. package/dist/index246.js +0 -6
  1158. package/dist/index247.js +0 -167
  1159. package/dist/index249.js +0 -6
  1160. package/dist/index25.js +0 -24
  1161. package/dist/index250.js +0 -147
  1162. package/dist/index252.js +0 -6
  1163. package/dist/index253.js +0 -35
  1164. package/dist/index255.js +0 -6
  1165. package/dist/index256.js +0 -65
  1166. package/dist/index258.js +0 -6
  1167. package/dist/index259.js +0 -19
  1168. package/dist/index260.js +0 -5
  1169. package/dist/index261.js +0 -160
  1170. package/dist/index263.js +0 -6
  1171. package/dist/index264.js +0 -60
  1172. package/dist/index266.js +0 -6
  1173. package/dist/index267.js +0 -134
  1174. package/dist/index269.js +0 -6
  1175. package/dist/index27.js +0 -4
  1176. package/dist/index271.js +0 -206
  1177. package/dist/index273.js +0 -6
  1178. package/dist/index274.js +0 -85
  1179. package/dist/index275.js +0 -5
  1180. package/dist/index276.js +0 -55
  1181. package/dist/index277.js +0 -5
  1182. package/dist/index278.js +0 -164
  1183. package/dist/index28.js +0 -8
  1184. package/dist/index280.js +0 -6
  1185. package/dist/index281.js +0 -145
  1186. package/dist/index283.js +0 -6
  1187. package/dist/index284.js +0 -11
  1188. package/dist/index285.js +0 -200
  1189. package/dist/index287.js +0 -6
  1190. package/dist/index288.js +0 -241
  1191. package/dist/index29.js +0 -7
  1192. package/dist/index290.js +0 -6
  1193. package/dist/index291.js +0 -21
  1194. package/dist/index293.js +0 -6
  1195. package/dist/index294.js +0 -125
  1196. package/dist/index296.js +0 -6
  1197. package/dist/index297.js +0 -161
  1198. package/dist/index299.js +0 -6
  1199. package/dist/index30.js +0 -118
  1200. package/dist/index300.js +0 -127
  1201. package/dist/index302.js +0 -6
  1202. package/dist/index303.js +0 -20
  1203. package/dist/index305.js +0 -6
  1204. package/dist/index306.js +0 -116
  1205. package/dist/index307.js +0 -5
  1206. package/dist/index308.js +0 -507
  1207. package/dist/index31.js +0 -10
  1208. package/dist/index310.js +0 -6
  1209. package/dist/index311.js +0 -196
  1210. package/dist/index313.js +0 -6
  1211. package/dist/index314.js +0 -142
  1212. package/dist/index316.js +0 -6
  1213. package/dist/index317.js +0 -134
  1214. package/dist/index319.js +0 -6
  1215. package/dist/index32.js +0 -28
  1216. package/dist/index320.js +0 -162
  1217. package/dist/index322.js +0 -6
  1218. package/dist/index323.js +0 -319
  1219. package/dist/index325.js +0 -6
  1220. package/dist/index326.js +0 -40
  1221. package/dist/index327.js +0 -43
  1222. package/dist/index328.js +0 -665
  1223. package/dist/index33.js +0 -5
  1224. package/dist/index330.js +0 -6
  1225. package/dist/index331.js +0 -155
  1226. package/dist/index333.js +0 -6
  1227. package/dist/index334.js +0 -142
  1228. package/dist/index336.js +0 -6
  1229. package/dist/index337.js +0 -155
  1230. package/dist/index339.js +0 -6
  1231. package/dist/index34.js +0 -112
  1232. package/dist/index340.js +0 -58
  1233. package/dist/index341.js +0 -5
  1234. package/dist/index342.js +0 -20
  1235. package/dist/index344.js +0 -6
  1236. package/dist/index345.js +0 -142
  1237. package/dist/index347.js +0 -6
  1238. package/dist/index349.js +0 -109
  1239. package/dist/index351.js +0 -6
  1240. package/dist/index352.js +0 -55
  1241. package/dist/index353.js +0 -24
  1242. package/dist/index354.js +0 -23
  1243. package/dist/index355.js +0 -839
  1244. package/dist/index356.js +0 -474
  1245. package/dist/index357.js +0 -52
  1246. package/dist/index358.js +0 -7
  1247. package/dist/index36.js +0 -6
  1248. package/dist/index38.js +0 -63
  1249. package/dist/index39.js +0 -63
  1250. package/dist/index40.js +0 -9
  1251. package/dist/index42.js +0 -8
  1252. package/dist/index43.js +0 -179
  1253. package/dist/index44.js +0 -21
  1254. package/dist/index46.js +0 -385
  1255. package/dist/index48.js +0 -6
  1256. package/dist/index49.js +0 -33
  1257. package/dist/index5.js +0 -34
  1258. package/dist/index50.js +0 -12
  1259. package/dist/index51.js +0 -8
  1260. package/dist/index52.js +0 -106
  1261. package/dist/index53.js +0 -330
  1262. package/dist/index54.js +0 -97
  1263. package/dist/index55.js +0 -328
  1264. package/dist/index56.js +0 -28
  1265. package/dist/index57.js +0 -102
  1266. package/dist/index58.js +0 -157
  1267. package/dist/index6.js +0 -38
  1268. package/dist/index60.js +0 -6
  1269. package/dist/index61.js +0 -131
  1270. package/dist/index62.js +0 -5
  1271. package/dist/index65.js +0 -35
  1272. package/dist/index66.js +0 -26
  1273. package/dist/index68.js +0 -6
  1274. package/dist/index69.js +0 -54
  1275. package/dist/index7.js +0 -58
  1276. package/dist/index71.js +0 -6
  1277. package/dist/index72.js +0 -14
  1278. package/dist/index74.js +0 -6
  1279. package/dist/index75.js +0 -159
  1280. package/dist/index77.js +0 -6
  1281. package/dist/index78.js +0 -4
  1282. package/dist/index79.js +0 -4
  1283. package/dist/index80.js +0 -54
  1284. package/dist/index81.js +0 -5
  1285. package/dist/index82.js +0 -5
  1286. package/dist/index83.js +0 -141
  1287. package/dist/index85.js +0 -6
  1288. package/dist/index86.js +0 -65
  1289. package/dist/index88.js +0 -6
  1290. package/dist/index89.js +0 -30
  1291. package/dist/index9.js +0 -11
  1292. package/dist/index90.js +0 -19
  1293. package/dist/index91.js +0 -17
  1294. package/dist/index92.js +0 -9
  1295. package/dist/index93.js +0 -34
  1296. package/dist/index95.js +0 -16
  1297. package/dist/index96.js +0 -10
  1298. package/dist/index97.js +0 -18
  1299. package/dist/index98.js +0 -189
  1300. package/dist/types/VoidHtmlElements.d.ts +0 -1
  1301. package/dist/utilities/functions/add.d.ts +0 -1
  1302. package/dist/utilities/functions/booleanishToBoolean.d.ts +0 -6
  1303. package/dist/utilities/functions/capitalize.d.ts +0 -4
  1304. package/dist/utilities/functions/cloneDeep.d.ts +0 -1
  1305. package/dist/utilities/functions/debounce.d.ts +0 -1
  1306. package/dist/utilities/functions/drop.d.ts +0 -1
  1307. package/dist/utilities/functions/exceedsPrecision.d.ts +0 -1
  1308. package/dist/utilities/functions/findRight.d.ts +0 -4
  1309. package/dist/utilities/functions/findRightIndex.d.ts +0 -4
  1310. package/dist/utilities/functions/flow.d.ts +0 -1
  1311. package/dist/utilities/functions/getHueFromRGB.d.ts +0 -9
  1312. package/dist/utilities/functions/groupBy.d.ts +0 -6
  1313. package/dist/utilities/functions/gt.d.ts +0 -7
  1314. package/dist/utilities/functions/hexToRGB.d.ts +0 -7
  1315. package/dist/utilities/functions/hslToHex.d.ts +0 -1
  1316. package/dist/utilities/functions/includes.d.ts +0 -1
  1317. package/dist/utilities/functions/initial.d.ts +0 -1
  1318. package/dist/utilities/functions/isCssColor.d.ts +0 -5
  1319. package/dist/utilities/functions/lt.d.ts +0 -7
  1320. package/dist/utilities/functions/makeUrl.d.ts +0 -1
  1321. package/dist/utilities/functions/mapKeys.d.ts +0 -5
  1322. package/dist/utilities/functions/mapValues.d.ts +0 -1
  1323. package/dist/utilities/functions/matchesPropertyInsensitive.d.ts +0 -1
  1324. package/dist/utilities/functions/max.d.ts +0 -2
  1325. package/dist/utilities/functions/mean.d.ts +0 -4
  1326. package/dist/utilities/functions/merge.d.ts +0 -11
  1327. package/dist/utilities/functions/millisecondsTo.d.ts +0 -1
  1328. package/dist/utilities/functions/negate.d.ts +0 -4
  1329. package/dist/utilities/functions/normalizeItemGroups.d.ts +0 -13
  1330. package/dist/utilities/functions/omit.d.ts +0 -2
  1331. package/dist/utilities/functions/overEvery.d.ts +0 -4
  1332. package/dist/utilities/functions/pick.d.ts +0 -1
  1333. package/dist/utilities/functions/replace.d.ts +0 -1
  1334. package/dist/utilities/functions/replaceInTree.d.ts +0 -4
  1335. package/dist/utilities/functions/retry.d.ts +0 -5
  1336. package/dist/utilities/functions/roundToTheNearest.d.ts +0 -8
  1337. package/dist/utilities/functions/set.d.ts +0 -15
  1338. package/dist/utilities/functions/stub.d.ts +0 -6
  1339. package/dist/utilities/functions/transposePercent.d.ts +0 -9
  1340. package/dist/utilities/functions/tryTo.d.ts +0 -2
  1341. package/dist/utilities/functions/uniqBy.d.ts +0 -1
  1342. /package/dist/{index64.js → _virtual/_plugin-vue_export-helper.js} +0 -0
  1343. /package/dist/components/{BaseButton → BbBaseButton}/RouterComponent.vue.d.ts +0 -0
  1344. /package/dist/components/{BaseDatePicker/BaseDatePicker.vue.d.ts → BbBaseDatePicker/BbBaseDatePicker.vue.d.ts} +0 -0
  1345. /package/dist/{index165.js → composables/useArray.js} +0 -0
  1346. /package/dist/{index17.js → composables/useFrameworkDetection.js} +0 -0
  1347. /package/dist/{index12.js → composables/useId.js} +0 -0
  1348. /package/dist/{index107.js → utilities/functions/chunk.js} +0 -0
  1349. /package/dist/{index8.js → utilities/functions/clamp.js} +0 -0
  1350. /package/dist/{index150.js → utilities/functions/curry.js} +0 -0
  1351. /package/dist/{index45.js → utilities/functions/extractDomContainer.js} +0 -0
  1352. /package/dist/{index270.js → utilities/functions/findInTree.js} +0 -0
  1353. /package/dist/{index348.js → utilities/functions/flattenTree.js} +0 -0
  1354. /package/dist/{index41.js → utilities/functions/get.js} +0 -0
  1355. /package/dist/{index189.js → utilities/functions/head.js} +0 -0
  1356. /package/dist/{index108.js → utilities/functions/identity.js} +0 -0
  1357. /package/dist/{index179.js → utilities/functions/indexBy.js} +0 -0
  1358. /package/dist/{index37.js → utilities/functions/isHex.js} +0 -0
  1359. /package/dist/{index94.js → utilities/functions/isNil.js} +0 -0
  1360. /package/dist/{index26.js → utilities/functions/isNotNil.js} +0 -0
  1361. /package/dist/{index105.js → utilities/functions/last.js} +0 -0
  1362. /package/dist/{index142.js → utilities/functions/noop.js} +0 -0
  1363. /package/dist/{index231.js → utilities/functions/parseWidthString.js} +0 -0
  1364. /package/dist/{index240.js → utilities/functions/pickBy.js} +0 -0
  1365. /package/dist/{index123.js → utilities/functions/range.js} +0 -0
  1366. /package/dist/{index190.js → utilities/functions/snapToStep.js} +0 -0
  1367. /package/dist/{index191.js → utilities/functions/transpose.js} +0 -0
  1368. /package/dist/{index106.js → utilities/functions/validateDateFormat.js} +0 -0
  1369. /package/dist/{index10.js → utilities/functions/wait.js} +0 -0
@@ -1,548 +1,947 @@
1
1
  # BbOffCanvas
2
2
 
3
- ## Template & Script
3
+ ## Agent Contract
4
+
5
+ - Safety level: **Consumer API**
6
+ - Group: **Overlay**
7
+ - Description: Shows side-panel overlay content outside normal layout flow.
8
+ - Usage rule: Prefer this component for consumer-facing implementations.
9
+ - Implementation source (only when the contract below is not enough): [source/BbOffCanvas.md](./source/BbOffCanvas.md)
10
+
11
+ ## Usage & Guidelines
12
+
13
+ ### When to use
14
+
15
+ Reach for `BbOffCanvas` for **supplementary content that lives beside the main
16
+ task**: a filter panel, a record's detail view, a settings drawer, a
17
+ notifications tray. It slides in from an edge, dims the page, and leaves as
18
+ quickly as it came — the user is topping up context, not switching tasks.
19
+
20
+ Choose a sibling when the intent differs:
21
+
22
+ - A single focused task the user must finish (a form, a confirm, an
23
+ announcement) → `BbDialog` (centered modal).
24
+ - A plain yes/no or destructive confirm → `BbConfirm` with `useConfirm`.
25
+ - A small anchored menu or bit of interactive content → `BbPopover`.
26
+
27
+ `BbDialog` and `BbOffCanvas` share most of their API (v-model, `title`, the
28
+ `header` / `default` / `footer` slots, `persistent`, `disabled`, `hide-close`,
29
+ `focus-target`, `eager`, `stack`, `transition-duration`, and the four lifecycle
30
+ events), so moving a surface between them is mostly a tag swap. The differences
31
+ are physical: `size` means the panel's **extent along its axis** (not a max
32
+ width), and `side`, `draggable` and `stack-gap` are off-canvas-only.
33
+
34
+ ### Open and close with v-model
35
+
36
+ `v-model` owns visibility — there is no imperative `open()`. Bind a boolean and
37
+ flip it. The panel dismisses itself on the header close button, the `Escape`
38
+ key, and a backdrop click; the `default` slot also receives a `close` callback
39
+ for buttons inside the body, and footer buttons simply set the model back to
40
+ `false`.
41
+
42
+ **A right-hand panel**
4
43
 
5
44
  ```vue
6
45
  <template>
7
- <dialog
8
- ref="dialog"
9
- :aria-describedby="
10
- hasRenderedAtLeastOnce && description ? descriptionId : undefined
11
- "
12
- :aria-labelledby="hasRenderedAtLeastOnce && title ? titleId : undefined"
13
- :aria-live="model ? 'polite' : 'off'"
14
- class="bb-offcanvas"
15
- :class="
16
- [
17
- {
18
- 'bb-offcanvas--open': model,
19
- 'bb-offcanvas--fullscreen': isFullscreen,
20
- 'bb-offcanvas--compact': compact,
21
- 'bb-offcanvas--deny-close': denyClose,
22
- [`bb-offcanvas--${props.direction}`]: true,
23
- },
24
- overlayClasses,
25
- panelClasses,
26
- ].flat()
27
- "
28
- :inert="!model"
29
- :style="{
30
- '--max-size': maxSize,
31
- '--transition-duration': `${props.transitionDuration}ms`,
32
- }"
33
- @cancel="userClose"
34
- @click.self="userClose"
46
+ <div
47
+ class="flex max-w-sm items-center justify-between gap-3 rounded-[var(--bb-radius)] border p-3"
35
48
  >
36
- <template v-if="hasRenderedAtLeastOnce">
37
- <div ref="header" class="bb-offcanvas__header">
38
- <slot :close="close" name="header" :title="title" :title-id="titleId">
39
- <span :id="titleId" class="bb-offcanvas__title">
40
- <slot name="title" :text="title">{{ title }}</slot>
41
- </span>
42
- <span class="bb-offcanvas__close">
43
- <button
44
- v-if="showClose"
45
- :aria-label="closeLabel"
46
- :disabled="props.disabled"
47
- type="button"
48
- @click="close"
49
- >
50
- <slot name="close">
51
- <span class="bb-offcanvas__close-icon"
52
- ><svg
53
- aria-hidden="true"
54
- fill="none"
55
- viewBox="0 0 24 24"
56
- xmlns="http://www.w3.org/2000/svg"
57
- >
58
- <path
59
- d="M23 23L1 1M23 1L1 23"
60
- stroke="currentColor"
61
- stroke-linecap="round"
62
- stroke-width="3"
63
- />
64
- </svg>
65
- </span>
66
- </slot>
67
- </button>
68
- </span>
69
- </slot>
70
- </div>
71
- <div ref="body" class="bb-offcanvas__body scrollbar-border">
72
- <div class="bb-offcanvas__body-content">
73
- <slot
74
- :description-id="descriptionId"
75
- name="description"
76
- :text="description"
77
- ><div
78
- v-if="description"
79
- :id="descriptionId"
80
- class="bb-offcanvas__description sr-only"
81
- >
82
- {{ description }}
83
- </div>
84
- </slot>
85
- <slot></slot>
49
+ <div class="min-w-0">
50
+ <p class="m-0 text-sm font-medium">Workspace</p>
51
+ <p class="m-0 text-xs text-[color:var(--bb-text-muted)]">
52
+ 3 updates since yesterday
53
+ </p>
54
+ </div>
55
+ <BbButton variant="outline" @click="open = true">Open activity</BbButton>
56
+ </div>
57
+ <BbOffCanvas v-model="open" side="right" title="Recent activity">
58
+ <template #default="{ close }">
59
+ <div class="grid gap-3 text-sm">
60
+ <div v-for="entry in activity" :key="entry.id" class="grid gap-0.5">
61
+ <p class="m-0">{{ entry.text }}</p>
62
+ <p class="m-0 text-xs text-[color:var(--bb-text-muted)]">
63
+ {{ entry.when }}
64
+ </p>
86
65
  </div>
87
- </div>
88
-
89
- <div ref="footer" class="bb-offcanvas__footer">
90
- <slot name="footer"></slot>
66
+ <BbButton class="justify-self-start" variant="ghost" @click="close">
67
+ Close
68
+ </BbButton>
91
69
  </div>
92
70
  </template>
93
- </dialog>
71
+ </BbOffCanvas>
94
72
  </template>
73
+ <script setup lang="ts">
74
+ import { ref } from 'vue';
75
+ import { BbButton, BbOffCanvas } from 'bitboss-ui';
76
+
77
+ type ActivityEntry = {
78
+ id: number;
79
+ text: string;
80
+ when: string;
81
+ };
82
+
83
+ const open = ref(false);
84
+
85
+ const activity: ActivityEntry[] = [
86
+ {
87
+ id: 1,
88
+ text: 'Invoice #INV-2043 was paid.',
89
+ when: '12 minutes ago',
90
+ },
91
+ {
92
+ id: 2,
93
+ text: 'Maria commented on “Q3 report”.',
94
+ when: '1 hour ago',
95
+ },
96
+ {
97
+ id: 3,
98
+ text: 'Webhook delivery to Stripe succeeded.',
99
+ when: 'Yesterday · 16:42',
100
+ },
101
+ ];
102
+ </script>
103
+ ```
104
+
105
+ ### Direction
106
+
107
+ `side` sets the edge the panel enters from — `left`, `right`, `top`, or
108
+ `bottom` (default `left`). Use `right` for detail and filter panels that sit
109
+ beside a right-aligned action flow, `bottom` for mobile-style sheets, `top` for
110
+ banners and command surfaces. The side also decides the drag axis and which
111
+ dimension `size` controls.
95
112
 
113
+ **Enter from any edge**
114
+
115
+ ```vue
116
+ <template>
117
+ <div
118
+ class="flex max-w-md flex-wrap gap-2 rounded-[var(--bb-radius)] border p-3"
119
+ >
120
+ <BbButton
121
+ v-for="edge in edges"
122
+ :key="edge"
123
+ variant="outline"
124
+ @click="activeSide = edge"
125
+ >
126
+ {{ edge }}
127
+ </BbButton>
128
+ <BbOffCanvas
129
+ :model-value="activeSide !== null"
130
+ :side="activeSide ?? 'right'"
131
+ :title="`From ${activeSide ?? 'right'}`"
132
+ @update:model-value="
133
+ (value) => {
134
+ if (!value) activeSide = null;
135
+ }
136
+ "
137
+ >
138
+ <p class="m-0 text-sm">
139
+ This panel slid in from the <strong>{{ activeSide }}</strong> edge.
140
+ </p>
141
+ </BbOffCanvas>
142
+ </div>
143
+ </template>
96
144
  <script setup lang="ts">
97
- import { computed, nextTick, onMounted, ref, watch, type Ref } from 'vue';
98
- import { parseSize } from '@/utilities/functions/parseSize';
99
- import { useId } from '@/composables/useId';
100
- import { useLocale } from '@/composables/useLocale';
101
- import { useMobile } from '@/composables/useMobile';
102
- import { useUntil } from '@/composables/useUntil';
103
- import { wait } from '@/utilities/functions/wait';
104
- import { _config } from '@/composables/useBbConfig';
105
- import type {
106
- BbOffCanvasProps,
107
- BbOffCanvasEvents,
108
- BbOffCanvasSlots,
109
- Sizes,
110
- } from './types';
111
-
112
- const props = withDefaults(defineProps<BbOffCanvasProps>(), {
113
- direction: 'left',
114
- showClose: true,
115
- size: 'sm',
116
- panelClasses: () => [],
117
- overlayClasses: () => [],
118
- transitionDuration: 300,
119
- });
145
+ import { ref } from 'vue';
146
+ import { BbButton, BbOffCanvas } from 'bitboss-ui';
120
147
 
121
- const emit = defineEmits<BbOffCanvasEvents>();
148
+ type Side = 'left' | 'top' | 'right' | 'bottom';
122
149
 
123
- defineSlots<BbOffCanvasSlots>();
150
+ const edges: Side[] = ['left', 'right', 'top', 'bottom'];
151
+ const activeSide = ref<Side | null>(null);
152
+ </script>
153
+ ```
124
154
 
125
- const model = defineModel<boolean>({ default: false });
155
+ ### Header, footer and body
126
156
 
127
- const { t } = useLocale();
128
- const closeLabel = computed(
129
- () => props.closeLabel || t('dialog.closeLabel').value
130
- );
157
+ A `title` prop renders the standard header (title text + close button) and wires
158
+ `aria-labelledby` for you. Put content in the `default` slot and actions in the
159
+ `footer` slot. The body area scrolls internally when content overflows; the
160
+ header and footer stay pinned.
131
161
 
132
- const dialog = ref<HTMLDialogElement | null>(null);
133
- const hasRenderedAtLeastOnce: Ref<boolean> = useUntil(
134
- () => model.value || props.eager,
135
- {
136
- initialValue: model.value || props.eager,
137
- }
138
- );
139
-
140
- const titleId = `title_${useId().id.value}`;
141
- const descriptionId = `description_${useId().id.value}`;
142
-
143
- const handleKeyDown = (e: KeyboardEvent) => {
144
- if (e.key !== 'Escape') return;
145
- e.stopImmediatePropagation();
146
- if (props.disabled || props.persistent) {
147
- e.preventDefault();
148
- denyClose.value = true;
149
- wait(200).then(() => {
150
- denyClose.value = false;
151
- });
152
- return false;
153
- }
154
- };
155
- const toggleDialog = async (value: boolean) => {
156
- if (value) {
157
- emit('show');
158
- // On first opening set variable for scrollbar width that is used to pad the body
159
- if (
160
- window.globalThis?.document &&
161
- !document.documentElement.style.getPropertyValue('--scrollbar-width')
162
- ) {
163
- document.documentElement.style.setProperty(
164
- '--scrollbar-width',
165
- `${getScrollBarWidth()}px`
166
- );
167
- }
168
- document.addEventListener('keydown', handleKeyDown, { capture: true });
169
- await nextTick();
170
- dialog.value?.showModal();
171
- if (props.focusTarget) {
172
- const element = dialog.value?.querySelector(props.focusTarget!);
173
- if (element && element instanceof HTMLElement) {
174
- element.focus();
175
- }
176
- }
177
- emit('shown');
178
- } else {
179
- emit('hide');
180
- await wait(props.transitionDuration);
181
- if (window.globalThis?.document) {
182
- document.removeEventListener('keydown', handleKeyDown, { capture: true });
183
- }
184
- dialog.value?.close();
185
- emit('hidden');
186
- }
162
+ - Use the `title` slot to restyle just the title text — it stays wired to
163
+ `aria-labelledby` and receives the `title` prop as `text`.
164
+ - Unlike `BbDialog`, the **`header` slot is fully supported here** and replaces
165
+ the whole header section; it receives `titleId`, `title` and `close`, so you
166
+ can build a custom header and still keep the accessible name wired through
167
+ `titleId`.
168
+ - Omitting `title` (and the `header` slot) removes the header entirely — you
169
+ then own the accessible name.
170
+
171
+ ### A filters drawer
172
+
173
+ The archetypal off-canvas: search + toggles in the `default` slot, Apply/Reset
174
+ in the `footer`. Keep one primary action (Apply) and align actions to the end.
175
+ This companion seeds typed filter state and resets it in place.
176
+
177
+ **Invoice filters**
178
+
179
+ ```vue
180
+ <template>
181
+ <div
182
+ class="flex max-w-sm items-center justify-between gap-3 rounded-[var(--bb-radius)] border p-3"
183
+ >
184
+ <div class="min-w-0">
185
+ <p class="m-0 text-sm font-medium">Invoices</p>
186
+ <p class="m-0 text-xs text-[color:var(--bb-text-muted)]">
187
+ {{ matchingLabel }}
188
+ </p>
189
+ </div>
190
+ <BbButton
191
+ prepend:icon="lucide:sliders-horizontal"
192
+ variant="outline"
193
+ @click="open = true"
194
+ >
195
+ Filters
196
+ </BbButton>
197
+ </div>
198
+ <BbOffCanvas v-model="open" side="right" title="Filter invoices">
199
+ <div class="grid gap-3">
200
+ <BbTextInput
201
+ v-model="filters.query"
202
+ compact
203
+ label="Search"
204
+ placeholder="Invoice #, customer…"
205
+ />
206
+ <BbCheckbox v-model="filters.overdue" label="Only overdue" />
207
+ <BbCheckbox v-model="filters.unpaid" label="Only unpaid" />
208
+ </div>
209
+ <template #footer>
210
+ <div class="flex justify-end gap-2">
211
+ <BbButton variant="ghost" @click="reset">Reset</BbButton>
212
+ <BbButton variant="primary" @click="open = false">Apply</BbButton>
213
+ </div>
214
+ </template>
215
+ </BbOffCanvas>
216
+ </template>
217
+ <script setup lang="ts">
218
+ import { computed, reactive, ref } from 'vue';
219
+ import { BbButton, BbCheckbox, BbOffCanvas, BbTextInput } from 'bitboss-ui';
220
+
221
+ type InvoiceFilterState = {
222
+ query: string;
223
+ overdue: boolean;
224
+ unpaid: boolean;
187
225
  };
188
226
 
189
- watch(model, toggleDialog);
190
- onMounted(() => {
191
- if (model.value) toggleDialog(true);
227
+ const open = ref(false);
228
+ const filters = reactive<InvoiceFilterState>({
229
+ query: '',
230
+ overdue: false,
231
+ unpaid: true,
192
232
  });
193
233
 
194
- const maxSize = computed(() => {
195
- if (!isFullscreen.value) {
196
- if (props.size === 'auto') return 'fit-content';
197
- return parseSize(props.size, _config.offCanvasDefaultSizes);
198
- }
234
+ const activeCount = computed(() => {
235
+ let count = 0;
236
+ if (filters.query.trim()) count += 1;
237
+ if (filters.overdue) count += 1;
238
+ if (filters.unpaid) count += 1;
239
+ return count;
240
+ });
199
241
 
200
- return '100%';
242
+ const matchingLabel = computed(() => {
243
+ const n = activeCount.value;
244
+ if (n === 0) return '48 total · no filters';
245
+ return `12 matching · ${n} filter${n === 1 ? '' : 's'} on`;
201
246
  });
202
247
 
203
- /**
204
- * This function is called when the user attempts to close the dialog.
205
- * It differs from programmatically closing the dialog in that it allows for
206
- * custom logic to be executed.
207
- */
208
- const userClose = (event: Event) => {
209
- event.preventDefault();
210
- // If the user forces closing just allow them
211
- if (props.disabled || props.persistent) {
212
- denyClose.value = true;
213
- wait(300).then(() => {
214
- denyClose.value = false;
215
- });
216
- return false;
217
- }
218
-
219
- close();
248
+ /** Clear every filter back to the empty baseline. */
249
+ const reset = () => {
250
+ filters.query = '';
251
+ filters.overdue = false;
252
+ filters.unpaid = false;
220
253
  };
254
+ </script>
255
+ ```
221
256
 
222
- const close = () => {
223
- model.value = false;
224
- };
257
+ ### A record inspector
258
+
259
+ The other archetype: a record's detail view opened beside a list, so the user
260
+ keeps their place in the table. Open from a row, show identity + status + key
261
+ fields in a `right`-hand panel, and let footer actions navigate or close. This
262
+ companion opens an inspector per selected member and offloads the "open full
263
+ record" action to `BbButton`'s `href` rather than a click handler.
225
264
 
226
- const denyClose = ref(false);
265
+ **Record inspector**
227
266
 
228
- const getScrollBarWidth = () => {
229
- if (!globalThis.document) return 0;
230
- return window.innerWidth - document.documentElement.clientWidth;
267
+ ```vue
268
+ <template>
269
+ <div class="grid max-w-sm gap-1 rounded-[var(--bb-radius)] border p-1">
270
+ <p
271
+ class="m-0 px-2 pt-1.5 text-xs font-medium text-[color:var(--bb-text-muted)]"
272
+ >
273
+ Members
274
+ </p>
275
+ <BbButton
276
+ v-for="member in members"
277
+ :key="member.id"
278
+ class="justify-start"
279
+ size="sm"
280
+ variant="ghost"
281
+ @click="openDetail(member)"
282
+ >
283
+ <span class="flex min-w-0 items-center gap-2">
284
+ <BbAvatar :alt="member.name" size="xs">
285
+ {{ member.initials }}
286
+ </BbAvatar>
287
+ <span class="truncate">{{ member.name }}</span>
288
+ </span>
289
+ </BbButton>
290
+ </div>
291
+ <BbOffCanvas v-model="open" side="right" size="sm" :title="selected?.name">
292
+ <div v-if="selected" class="grid gap-4 text-sm">
293
+ <div class="flex items-start gap-3">
294
+ <BbAvatar :alt="selected.name" size="lg">
295
+ {{ selected.initials }}
296
+ </BbAvatar>
297
+ <div class="grid min-w-0 gap-1.5">
298
+ <p class="m-0 font-medium">{{ selected.role }}</p>
299
+ <BbBadge size="sm" :variant="selected.statusVariant">
300
+ {{ selected.status }}
301
+ </BbBadge>
302
+ </div>
303
+ </div>
304
+ <dl class="m-0 grid gap-2">
305
+ <div
306
+ v-for="row in detailRows"
307
+ :key="row.label"
308
+ class="flex items-baseline justify-between gap-3"
309
+ >
310
+ <dt class="shrink-0 text-xs text-[color:var(--bb-text-muted)]">
311
+ {{ row.label }}
312
+ </dt>
313
+ <dd class="m-0 truncate text-right">{{ row.value }}</dd>
314
+ </div>
315
+ </dl>
316
+ </div>
317
+ <template #footer>
318
+ <div class="flex justify-end gap-2">
319
+ <BbButton variant="ghost" @click="open = false">Close</BbButton>
320
+ <BbButton
321
+ append:icon="lucide:arrow-right"
322
+ :href="`#member-${selected?.id}`"
323
+ variant="primary"
324
+ >
325
+ Open full record
326
+ </BbButton>
327
+ </div>
328
+ </template>
329
+ </BbOffCanvas>
330
+ </template>
331
+ <script setup lang="ts">
332
+ import { computed, ref } from 'vue';
333
+ import { BbAvatar, BbBadge, BbButton, BbOffCanvas } from 'bitboss-ui';
334
+
335
+ type MemberStatus = 'Active' | 'Away';
336
+
337
+ type Member = {
338
+ id: number;
339
+ name: string;
340
+ initials: string;
341
+ role: string;
342
+ email: string;
343
+ joined: string;
344
+ team: string;
345
+ status: MemberStatus;
346
+ statusVariant: 'soft-green' | 'soft-amber';
231
347
  };
232
348
 
233
- const { isMobile } = useMobile();
234
- const isFullscreen = computed(
235
- () =>
236
- props.fullscreen === true ||
237
- (props.fullscreen === 'mobile' && isMobile.value)
238
- );
349
+ const members: Member[] = [
350
+ {
351
+ id: 1,
352
+ name: 'Ada Lovelace',
353
+ initials: 'AL',
354
+ role: 'Lead engineer',
355
+ email: 'ada@northwind.co',
356
+ joined: 'Mar 2021',
357
+ team: 'Platform',
358
+ status: 'Active',
359
+ statusVariant: 'soft-green',
360
+ },
361
+ {
362
+ id: 2,
363
+ name: 'Grace Hopper',
364
+ initials: 'GH',
365
+ role: 'Principal engineer',
366
+ email: 'grace@northwind.co',
367
+ joined: 'Sep 2019',
368
+ team: 'Billing',
369
+ status: 'Away',
370
+ statusVariant: 'soft-amber',
371
+ },
372
+ ];
373
+
374
+ const open = ref(false);
375
+ const selected = ref<Member | null>(null);
376
+
377
+ const detailRows = computed(() => {
378
+ const member = selected.value;
379
+ if (!member) return [];
380
+ return [
381
+ { label: 'Email', value: member.email },
382
+ { label: 'Team', value: member.team },
383
+ { label: 'Joined', value: member.joined },
384
+ ];
385
+ });
386
+
387
+ /** Open the inspector for the chosen member beside the list. */
388
+ const openDetail = (member: Member) => {
389
+ selected.value = member;
390
+ open.value = true;
391
+ };
239
392
  </script>
240
393
 
241
- <style lang="postcss">
242
- @import './index.css';
394
+ <!-- Non-scoped: soft status palette for the inspector badge.
395
+ Canonical source: ai/guides/design-language.md § Using color. -->
396
+ <style>
397
+ .bb-badge.bb-badge--soft-green {
398
+ --accent: #16a34a;
399
+ }
400
+ .bb-badge.bb-badge--soft-amber {
401
+ --accent: #d97706;
402
+ }
403
+ .bb-badge.bb-badge--soft-green,
404
+ .bb-badge.bb-badge--soft-amber {
405
+ --bg: color-mix(in oklab, var(--accent) 15%, var(--bb-panel));
406
+ --color: color-mix(in oklab, var(--accent) 80%, var(--bb-text));
407
+ --border-width: 1px;
408
+ --border-color: color-mix(in oklab, var(--accent) 25%, var(--bb-panel));
409
+ --ring: color-mix(in oklab, var(--accent) 45%, transparent);
410
+ }
243
411
  </style>
244
412
  ```
245
413
 
246
- ## Types
414
+ ### A mobile nav sheet
247
415
 
248
- ```ts
249
- import type { Classes } from '@/types/Classes';
250
- import type { CommonProps, Size } from '@/types/CommonProps';
416
+ The third classic: app navigation behind a menu button. A `left` drawer at
417
+ `size="xs"` reads as the familiar mobile nav; every destination is a real link
418
+ (`href` — hash-only here, in an app pass `to` for the router), never an
419
+ `@click` handler. Icon names live as typed literals on the nav data and flow
420
+ into `BbButton`'s `prepend:icon`; the active route gets the one non-ghost
421
+ treatment in the list, and account/sign-out sit in the footer.
251
422
 
252
- export type Sizes = {
253
- sm: number;
254
- md: number;
255
- lg: number;
256
- };
423
+ **Mobile navigation sheet**
257
424
 
258
- export type BbOffCanvasProps = Pick<
259
- CommonProps,
260
- | 'closeLabel'
261
- | 'compact'
262
- | 'disabled'
263
- | 'eager'
264
- | 'persistent'
265
- | 'showClose'
266
- | 'title'
267
- | 'transitionDuration'
268
- > &
269
- Size<Sizes> & {
270
- /**
271
- * Description of the content of the modal. Extremely useful for accessibility reasons.
272
- */
273
- description?: string;
274
- /**
275
- * Element that obtains focus immediately after opening the dialog.
276
- * By default it's the first tabbable item.
277
- */
278
- focusTarget?: string;
279
- /**
280
- * Displays the modal as fullscreen with no margin to the page.
281
- */
282
- fullscreen?: boolean | 'mobile';
283
-
284
- /**
285
- * Classes to apply to the panel of the dialog.
286
- *
287
- * @deprecated Pass a common `class` attribute to the component instead.
288
- */
289
- panelClasses?: Classes;
290
- /**
291
- * Classes to apply to the overlay of the dialog.
292
- *
293
- * @deprecated Pass a common `class` attribute to the component instead.
294
- */
295
- overlayClasses?: Classes;
296
- /**
297
- * Defines the direction the offcanvas should appear from.
298
- *
299
- * @defaultValue `'left'`
300
- */
301
- direction?: 'left' | 'top' | 'right' | 'bottom';
302
- };
303
-
304
- export type BbOffCanvasEvents = {
305
- /** Emitted as soon as the user triggers the open action (model becomes true). */
306
- (e: 'show'): void;
307
- /** Emitted as soon as the user triggers the close action (model becomes false). */
308
- (e: 'hide'): void;
309
- /** Emitted after the offcanvas is fully opened using `showModal()`. */
310
- (e: 'shown'): void;
311
- /** Emitted after the close transition completes and the offcanvas is fully dismissed. */
312
- (e: 'hidden'): void;
425
+ ```vue
426
+ <template>
427
+ <div
428
+ class="flex max-w-sm items-center justify-between gap-2 rounded-[var(--bb-radius)] border p-2"
429
+ >
430
+ <div class="min-w-0">
431
+ <p class="m-0 truncate text-sm font-medium">Acme Billing</p>
432
+ <p class="m-0 text-xs text-[color:var(--bb-text-muted)]">Workspace</p>
433
+ </div>
434
+ <BbButton
435
+ aria-label="Open navigation"
436
+ icon="lucide:menu"
437
+ variant="outline"
438
+ @click="open = true"
439
+ >
440
+ Menu
441
+ </BbButton>
442
+ </div>
443
+ <BbOffCanvas v-model="open" side="left" size="xs" title="Acme Billing">
444
+ <nav aria-label="Primary" class="grid gap-1">
445
+ <p
446
+ class="m-0 px-1 pb-0.5 text-xs font-medium text-[color:var(--bb-text-muted)]"
447
+ >
448
+ Navigate
449
+ </p>
450
+ <BbButton
451
+ v-for="item in navItems"
452
+ :key="item.href"
453
+ class="justify-start"
454
+ :href="item.href"
455
+ :prepend:icon="item.icon"
456
+ size="sm"
457
+ :variant="item.active ? 'secondary' : 'ghost'"
458
+ >
459
+ {{ item.label }}
460
+ </BbButton>
461
+ </nav>
462
+ <template #footer>
463
+ <div class="grid gap-1">
464
+ <BbButton
465
+ class="w-full justify-start"
466
+ href="#account"
467
+ prepend:icon="lucide:circle-user"
468
+ size="sm"
469
+ variant="ghost"
470
+ >
471
+ Alex Rivera
472
+ </BbButton>
473
+ <BbButton
474
+ class="w-full justify-start"
475
+ href="#sign-out"
476
+ prepend:icon="lucide:log-out"
477
+ size="sm"
478
+ variant="ghost"
479
+ >
480
+ Sign out
481
+ </BbButton>
482
+ </div>
483
+ </template>
484
+ </BbOffCanvas>
485
+ </template>
486
+ <script setup lang="ts">
487
+ import { ref } from 'vue';
488
+ import { BbButton, BbOffCanvas, type IconType } from 'bitboss-ui';
489
+
490
+ type NavItem = {
491
+ label: string;
492
+ href: string;
493
+ icon: IconType;
494
+ active?: boolean;
313
495
  };
314
496
 
315
- /** Props exposed by the `header` slot. */
316
- export type BbOffCanvasHeaderSlotProps = {
317
- /** The `id` assigned to the title element, wired to `aria-labelledby`. */
318
- titleId: string;
319
- /** Programmatically closes the off-canvas panel. */
320
- close: () => void;
321
- /** The `title` prop value. */
322
- title: BbOffCanvasProps['title'];
323
- };
497
+ const open = ref(false);
324
498
 
325
- /** Props exposed by the `title` slot. */
326
- export type BbOffCanvasTitleSlotProps = {
327
- /** The `title` prop value. */
328
- text: BbOffCanvasProps['title'];
329
- };
499
+ const navItems: NavItem[] = [
500
+ {
501
+ label: 'Dashboard',
502
+ href: '#dashboard',
503
+ icon: 'lucide:house',
504
+ active: true,
505
+ },
506
+ { label: 'Invoices', href: '#invoices', icon: 'lucide:receipt' },
507
+ { label: 'Customers', href: '#customers', icon: 'lucide:users' },
508
+ { label: 'Reports', href: '#reports', icon: 'lucide:chart-line' },
509
+ { label: 'Settings', href: '#settings', icon: 'lucide:settings' },
510
+ ];
511
+ </script>
512
+ ```
513
+
514
+ ### Size and `auto`
515
+
516
+ `size` runs the shared `xs`–`2xl` scale **plus `auto`**, and controls the
517
+ panel's extent along its travel axis — width for `left`/`right`, height for
518
+ `top`/`bottom`. The presets map to `config.offCanvasDefaultSizes` (320px for
519
+ `xs` up to 672px for `2xl`; the default `sm` is 384px, overridable in the plugin
520
+ options). A number is pixels, a string passes through as a CSS size, and `auto`
521
+ hugs the content (`fit-content`) — the basis of a content-sized sheet.
522
+
523
+ Give it a per-breakpoint map to switch responsively without media queries of
524
+ your own. Like `BbDialog`, a **bare size is resolved once**; only the map form
525
+ reacts to live resizes.
526
+
527
+ **Responsive extent**
528
+
529
+ ```vue
530
+ <div>
531
+ <BbButton variant="outline" @click="state.open = true">Settings</BbButton>
532
+ <BbOffCanvas
533
+ v-model="state.open"
534
+ side="right"
535
+ :size="{ default: 'sm', lg: 'lg' }"
536
+ title="Settings"
537
+ >
538
+ <p class="m-0 text-sm">
539
+ <strong>sm</strong> (384px) on smaller viewports, <strong>lg</strong>
540
+ (512px) from the <code>lg</code> breakpoint up — resize to see it switch.
541
+ </p>
542
+ </BbOffCanvas>
543
+ </div>
544
+ ```
545
+
546
+ ### Draggable sheets
547
+
548
+ Set `draggable` to let the user flick the panel toward its edge to dismiss; a
549
+ grab handle appears on the inner edge as the affordance. A draggable,
550
+ `auto`-sized bottom panel is the canonical mobile sheet.
551
+
552
+ The gesture is physical, not just a tap target:
553
+
554
+ - Dragging past **a quarter of the panel's extent**, or a fast **flick toward
555
+ the edge**, dismisses it; a shorter drag springs back to fully open.
556
+ - On a vertical (top/bottom) sheet with a scrollable body, the drag **hands off
557
+ to native scrolling** first — you only start dragging the sheet once the body
558
+ is scrolled to its edge, so scrolling a long sheet never accidentally closes
559
+ it.
560
+ - `persistent` / `disabled` still win: a drag that would dismiss instead plays
561
+ the "deny" nudge and springs back.
562
+
563
+ **A draggable bottom sheet**
564
+
565
+ ```vue
566
+ <div>
567
+ <BbButton variant="outline" @click="state.open = true">Share</BbButton>
568
+ <BbOffCanvas
569
+ v-model="state.open"
570
+ side="bottom"
571
+ draggable
572
+ size="auto"
573
+ title="Share invoice"
574
+ >
575
+ <div class="flex flex-wrap gap-2">
576
+ <BbButton append:icon="lucide:link" variant="outline">Copy link</BbButton>
577
+ <BbButton append:icon="lucide:mail" variant="outline">Email</BbButton>
578
+ <BbButton append:icon="lucide:download" variant="outline">Download PDF</BbButton>
579
+ </div>
580
+ </BbOffCanvas>
581
+ </div>
582
+ ```
330
583
 
331
- /** Props exposed by the `description` slot. */
332
- export type BbOffCanvasDescriptionSlotProps = {
333
- /** The `id` to assign to your custom description element for `aria-describedby` wiring. */
334
- descriptionId: string;
335
- /** The `description` prop value. */
336
- text: BbOffCanvasProps['description'];
584
+ ### Stacking drill-downs
585
+
586
+ Give panels the same `stack` name and they step back behind one another as you
587
+ drill in: opening a child shifts the parent inward by `stack-gap` (default
588
+ `60`px), leaving a peeking band of it visible so the hierarchy reads clearly.
589
+ Closing the child brings the parent forward. Panels with **different names (or
590
+ none) are independent** and simply layer by open order.
591
+
592
+ Only the top two open panels keep their dimmed/blurred backdrop; deeper ones go
593
+ transparent, so a three-deep stack does not stack three backdrops. Use a stack
594
+ for master → detail flows where the trail should stay visible; if the parent
595
+ should be fully replaced instead, that is what `BbDialog`'s `stack` (which swaps
596
+ rather than peeks) is for.
597
+
598
+ **Master → detail, stacked**
599
+
600
+ ```vue
601
+ <template>
602
+ <div
603
+ class="flex max-w-sm items-center justify-between gap-3 rounded-[var(--bb-radius)] border p-3"
604
+ >
605
+ <div class="min-w-0">
606
+ <p class="m-0 text-sm font-medium">Team</p>
607
+ <p class="m-0 text-xs text-[color:var(--bb-text-muted)]">
608
+ Drill into a member
609
+ </p>
610
+ </div>
611
+ <BbButton variant="outline" @click="listOpen = true">
612
+ Team members
613
+ </BbButton>
614
+ </div>
615
+ <BbOffCanvas
616
+ v-model="listOpen"
617
+ side="right"
618
+ stack="team"
619
+ :stack-gap="72"
620
+ title="Team members"
621
+ >
622
+ <div class="grid gap-1">
623
+ <BbButton
624
+ v-for="member in members"
625
+ :key="member.name"
626
+ class="justify-start"
627
+ size="sm"
628
+ variant="ghost"
629
+ @click="openDetail(member)"
630
+ >
631
+ {{ member.name }}
632
+ </BbButton>
633
+ </div>
634
+ </BbOffCanvas>
635
+ <BbOffCanvas
636
+ v-model="detailOpen"
637
+ side="right"
638
+ stack="team"
639
+ :stack-gap="72"
640
+ :title="selected?.name"
641
+ >
642
+ <div v-if="selected" class="grid gap-2 text-sm">
643
+ <p class="m-0">
644
+ <span class="text-xs text-[color:var(--bb-text-muted)]">Role</span
645
+ ><br />
646
+ {{ selected.role }}
647
+ </p>
648
+ <p class="m-0">
649
+ <span class="text-xs text-[color:var(--bb-text-muted)]">Joined</span
650
+ ><br />
651
+ {{ selected.joined }}
652
+ </p>
653
+ </div>
654
+ </BbOffCanvas>
655
+ </template>
656
+ <script setup lang="ts">
657
+ import { ref } from 'vue';
658
+ import { BbButton, BbOffCanvas } from 'bitboss-ui';
659
+
660
+ type Member = { name: string; role: string; joined: string };
661
+
662
+ const members: Member[] = [
663
+ { name: 'Ada Lovelace', role: 'Lead engineer', joined: 'Mar 2021' },
664
+ { name: 'Grace Hopper', role: 'Principal engineer', joined: 'Sep 2019' },
665
+ ];
666
+
667
+ const listOpen = ref(false);
668
+ const detailOpen = ref(false);
669
+ const selected = ref<Member | null>(null);
670
+
671
+ /** Push the detail drawer onto the shared stack. */
672
+ const openDetail = (member: Member) => {
673
+ selected.value = member;
674
+ detailOpen.value = true;
337
675
  };
676
+ </script>
677
+ ```
678
+
679
+ ### Fullscreen
680
+
681
+ `fullscreen` expands the panel to fill the viewport (minus the standard page
682
+ padding — it is intentionally not edge-to-edge), which suits content-heavy
683
+ detail views. Pass `fullscreen="mobile"` to go fullscreen only below the mobile
684
+ breakpoint (`config.mobileMaxWidth`, 768px) while keeping the sized panel on
685
+ desktop — the usual choice for a `right` detail panel that should take the whole
686
+ screen on a phone.
687
+
688
+ **Fullscreen on mobile only**
338
689
 
339
- export type BbOffCanvasSlots = {
340
- /**
341
- * Replaces the entire off-canvas header section (title + close button). Maintains accessibility wiring via the provided props.
342
- */
343
- header?: (props: BbOffCanvasHeaderSlotProps) => any;
344
- /**
345
- * Replaces the default title text inside the header. Remains linked to the panel through `aria-labelledby`.
346
- */
347
- title?: (props: BbOffCanvasTitleSlotProps) => any;
348
- /**
349
- * Replaces the default close icon rendered inside the header's close button.
350
- */
351
- close?: (props: object) => any;
352
- /**
353
- * Replaces the default accessible description block. The provided content is linked to the panel via `aria-describedby`.
354
- */
355
- description?: (props: BbOffCanvasDescriptionSlotProps) => any;
356
- /**
357
- * Primary body content of the off-canvas panel, rendered in the scrollable body area.
358
- */
359
- default?: (props: object) => any;
360
- /**
361
- * Content rendered in the panel footer, below the body area. Typically used for action buttons.
362
- */
363
- footer?: (props: object) => any;
690
+ ```vue
691
+ <div>
692
+ <BbButton variant="outline" @click="state.open = true">Open article</BbButton>
693
+ <BbOffCanvas
694
+ v-model="state.open"
695
+ side="right"
696
+ fullscreen="mobile"
697
+ size="md"
698
+ title="Release notes"
699
+ >
700
+ <p class="m-0 text-sm">
701
+ Sized (md) on desktop, full-screen below the mobile breakpoint.
702
+ </p>
703
+ </BbOffCanvas>
704
+ </div>
705
+ ```
706
+
707
+ ### Lifecycle events and lazy content
708
+
709
+ Four events bracket the transitions — `show` fires as the model turns `true`,
710
+ `shown` after the native `showModal()` call and initial focus, `hide` as the
711
+ model turns `false`, and `hidden` after the close transition completes. Use
712
+ `@show` to (re)seed form state, `@hidden` to tear down expensive content.
713
+
714
+ Body content is **lazy**: nothing inside the panel renders until the first open.
715
+ Set `eager` to render it immediately (e.g. so a chart can pre-measure, or tests
716
+ can query content before opening). `transition-duration` (ms, default `250`)
717
+ times both the slide animation and when `hidden` fires — reopening during the
718
+ close transition keeps the panel open instead of snapping shut.
719
+
720
+ The classic `@show` job is reseeding a draft: reset the working copy from the
721
+ last saved value every time the panel opens, so Cancel is a real discard —
722
+ half-typed edits never survive a close.
723
+
724
+ **Reseed a draft with @show**
725
+
726
+ ```vue
727
+ <template>
728
+ <div
729
+ class="flex max-w-sm items-center justify-between gap-3 rounded-[var(--bb-radius)] border p-3"
730
+ >
731
+ <div class="min-w-0">
732
+ <p class="m-0 text-sm font-medium">INV-2043</p>
733
+ <p class="m-0 truncate text-xs text-[color:var(--bb-text-muted)]">
734
+ {{ saved }}
735
+ </p>
736
+ </div>
737
+ <BbButton variant="outline" @click="open = true">Add note</BbButton>
738
+ </div>
739
+ <BbOffCanvas
740
+ v-model="open"
741
+ side="right"
742
+ title="Note · INV-2043"
743
+ @show="draft = saved"
744
+ >
745
+ <BbTextarea v-model="draft" auto-grow compact label="Internal note" />
746
+ <template #footer>
747
+ <div class="flex justify-end gap-2">
748
+ <BbButton variant="ghost" @click="open = false">Cancel</BbButton>
749
+ <BbButton variant="primary" @click="save">Save note</BbButton>
750
+ </div>
751
+ </template>
752
+ </BbOffCanvas>
753
+ </template>
754
+ <script setup lang="ts">
755
+ import { ref } from 'vue';
756
+ import { BbButton, BbOffCanvas, BbTextarea } from 'bitboss-ui';
757
+
758
+ const open = ref(false);
759
+ const saved = ref('Customer asked to postpone pickup.');
760
+ const draft = ref(saved.value);
761
+
762
+ /** Persist the draft and dismiss the panel. */
763
+ const save = () => {
764
+ saved.value = draft.value;
765
+ open.value = false;
364
766
  };
767
+ </script>
365
768
  ```
366
769
 
367
- ## Styles
368
-
369
- ```css
370
- .bb-offcanvas {
371
- --translate-x: 0%;
372
- --translate-y: 0%;
373
- --translate: 1;
374
- --transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
375
- position: fixed;
376
- transition:
377
- max-width var(--transition-duration) var(--transition-timing-function),
378
- max-height var(--transition-duration) var(--transition-timing-function),
379
- translate var(--transition-duration) var(--transition-timing-function),
380
- display var(--transition-duration) var(--transition-duration)
381
- var(--transition-timing-function);
382
- background-color: var(--bb-panel);
383
- color: var(--bb-text);
384
- display: flex;
385
- flex-direction: column;
386
- z-index: var(--bb-overlay-z-index);
387
- overscroll-behavior: contain;
388
- overflow: hidden;
389
- outline: none;
390
- transition-behavior: allow-discrete;
391
- margin: 0 0;
392
- translate: calc(var(--translate-x) * var(--translate))
393
- calc(var(--translate-y) * var(--translate));
394
-
395
- &.bb-offcanvas--left,
396
- &.bb-offcanvas--right {
397
- max-height: 100%;
398
- max-width: var(--max-size);
399
- width: 100%;
400
- top: 0px;
401
- height: 100%;
402
- }
403
- &.bb-offcanvas--left {
404
- --translate-x: -100%;
405
- left: 0px;
406
- }
407
- &.bb-offcanvas--right {
408
- --translate-x: 100%;
409
- right: 0px;
410
- left: auto;
411
- }
412
- &.bb-offcanvas--top,
413
- &.bb-offcanvas--bottom {
414
- max-height: min(var(--max-size), 100%);
415
- height: var(--max-size);
416
- max-width: 100%;
417
- width: 100%;
418
- left: 0;
419
- right: 0;
420
- }
421
- &.bb-offcanvas--top {
422
- --translate-y: -100%;
423
- top: 0px;
424
- bottom: auto;
425
- }
426
- &.bb-offcanvas--bottom {
427
- --translate-y: 100%;
428
- bottom: 0px;
429
- top: auto;
430
- }
431
-
432
- &.bb-offcanvas--fullscreen {
433
- border-radius: 0;
434
- width: 100%;
435
- height: 100%;
436
- }
437
-
438
- &.bb-offcanvas--compact {
439
- .bb-offcanvas__header {
440
- border-bottom: none;
441
- }
442
- .bb-offcanvas__body {
443
- padding-top: 0;
444
- }
445
- }
446
-
447
- &.bb-offcanvas--open {
448
- --translate: 0;
449
-
450
- &::backdrop {
451
- opacity: 1;
452
-
453
- @starting-style {
454
- opacity: 0;
455
- }
456
- }
457
- }
458
- &.bb-offcanvas--deny-close {
459
- --translate: 0.1;
460
- }
461
-
462
- &:has(.bb-offcanvas.bb-offcanvas--open),
463
- &:has(.bb-base-dialog.bb-base-dialog--open) {
464
- --translate: 1;
465
- }
466
-
467
- &::backdrop {
468
- background-color: color-mix(
469
- in srgb,
470
- var(--bb-overlay-color) calc(var(--bb-overlay-opacity) * 100%),
471
- transparent
472
- );
473
- opacity: 0;
474
- transition: opacity var(--transition-duration) cubic-bezier(0.4, 0, 0.2, 1);
475
- }
476
-
477
- .bb-offcanvas__header {
478
- align-items: center;
479
- border-bottom: 1px solid var(--bb-border);
480
- column-gap: 12px;
481
- display: flex;
482
- justify-content: space-between;
483
- padding: var(--bb-dialog-py) var(--bb-dialog-px);
484
- flex-shrink: 0;
485
-
486
- .bb-offcanvas__title {
487
- font-size: var(--bb-dialog-title-size);
488
- font-weight: var(--bb-dialog-title-weight);
489
- }
490
-
491
- .bb-offcanvas__close {
492
- transition: color var(--transition-duration);
493
- &:hover {
494
- color: var(--bb-primary);
495
- }
496
-
497
- button {
498
- border-radius: var(--bb-radius);
499
- box-shadow: 0px 0px 0px 0px var(--bb-ring);
500
- display: flex;
501
- margin-right: -8px;
502
- outline: 2px solid transparent;
503
- outline-offset: 2px;
504
- outline-style: none;
505
- padding: 8px;
506
- transition: box-shadow 0.2s;
507
-
508
- &:focus-visible {
509
- box-shadow: 0px 0px 0px var(--bb-ring-size) var(--bb-ring);
510
- }
511
- }
770
+ ### Controlling dismissal
512
771
 
513
- .bb-offcanvas__close-icon {
514
- display: inline-flex;
515
- svg {
516
- width: var(--bb-dialog-close);
517
- }
518
- }
519
- }
520
- }
521
-
522
- .bb-offcanvas__body {
523
- overflow: auto;
524
- position: relative;
525
- padding: var(--bb-dialog-py) calc(var(--bb-dialog-px) - var(--bb-ring-size))
526
- calc(var(--bb-dialog-py) - var(--bb-ring-size));
527
- flex: 1 1 auto;
528
-
529
- .bb-offcanvas__body-content {
530
- margin: 0 min(var(--bb-ring-size), var(--bb-dialog-px));
531
- }
532
- }
533
-
534
- .bb-offcanvas__footer {
535
- padding: var(--bb-dialog-py) var(--bb-dialog-px);
536
- pointer-events: auto;
537
-
538
- &:empty {
539
- display: none;
540
- }
541
- }
542
- }
772
+ Every dismissal path is governed by two props:
543
773
 
544
- body:has(.bb-offcanvas--open) {
545
- overflow: hidden;
546
- padding-right: var(--scrollbar-width);
547
- }
774
+ - `persistent` — backdrop click, `Escape`, and a drag-to-dismiss no longer
775
+ close; the panel plays a short "deny" nudge instead. Your own buttons (and the
776
+ model) still work. Use it when the user must make an explicit choice.
777
+ - `disabled` — same guard, different intent: the surface is busy (a save in
778
+ flight). Combine with disabling your footer actions.
779
+
780
+ Two more knobs shape the surface:
781
+
782
+ - `hide-close` removes the header close button. (The close button is shown by
783
+ default.)
784
+ - `focus-target` — a CSS selector resolved inside the panel — moves initial
785
+ focus to a specific element; otherwise the first tabbable element receives it.
786
+
787
+ Constraint: the header **close (×) button bypasses `persistent`** (it is the
788
+ documented escape hatch) but **respects `disabled`** — a busy panel cannot be
789
+ dismissed mid-work. When a panel must be resolved from the footer, pair
790
+ `persistent` with `hide-close` and keep a visible Cancel so users are never
791
+ trapped. Backdrop clicks are also drag-protected: a text selection that starts
792
+ inside the panel and releases over the backdrop does not close it — only a
793
+ genuine click that starts and ends on the backdrop (≤4px travel) does.
794
+
795
+ **Persistent — resolve from the footer**
796
+
797
+ ```vue
798
+ <template>
799
+ <div
800
+ class="flex max-w-sm items-center justify-between gap-3 rounded-[var(--bb-radius)] border p-3"
801
+ >
802
+ <div class="min-w-0">
803
+ <p class="m-0 text-sm font-medium">PR #1842</p>
804
+ <p class="m-0 text-xs text-[color:var(--bb-text-muted)]">
805
+ Needs a reviewer before merge
806
+ </p>
807
+ </div>
808
+ <BbButton variant="outline" @click="open = true">Assign reviewer</BbButton>
809
+ </div>
810
+ <BbOffCanvas
811
+ v-model="open"
812
+ focus-target="input"
813
+ hide-close
814
+ persistent
815
+ side="right"
816
+ title="Assign reviewer"
817
+ >
818
+ <div class="grid gap-3">
819
+ <BbTextInput
820
+ v-model="reviewer"
821
+ compact
822
+ label="Reviewer"
823
+ placeholder="Name or email"
824
+ />
825
+ <p class="m-0 text-xs text-[color:var(--bb-text-muted)]">
826
+ Backdrop and Escape stay locked — resolve from the footer.
827
+ </p>
828
+ </div>
829
+ <template #footer>
830
+ <div class="flex justify-end gap-2">
831
+ <BbButton variant="ghost" @click="open = false">Cancel</BbButton>
832
+ <BbButton variant="primary" @click="open = false">Assign</BbButton>
833
+ </div>
834
+ </template>
835
+ </BbOffCanvas>
836
+ </template>
837
+ <script setup lang="ts">
838
+ import { ref } from 'vue';
839
+ import { BbButton, BbOffCanvas, BbTextInput } from 'bitboss-ui';
840
+
841
+ const open = ref(false);
842
+ const reviewer = ref('');
843
+ </script>
548
844
  ```
845
+
846
+ ### Top layer: what's above, what's inert
847
+
848
+ The panel is a native `<dialog>` opened with `showModal()` — the same mechanics
849
+ `BbDialog` relies on, and worth designing around:
850
+
851
+ - It renders in the browser **top layer**, above every `z-index`, sticky header,
852
+ or transformed ancestor. There is nothing to z-index-manage.
853
+ - The element stays where you declared it in the DOM (no teleport), so scoped
854
+ styles and provide/inject work normally; in tests, query the panel via
855
+ `document.body` (e.g. `.bb-offcanvas--open`) after `attachTo: document.body`.
856
+ - Everything outside the panel is **inert** while it is open: no hover, click,
857
+ or tab reaches the page behind.
858
+ - Later top-layer surfaces paint above earlier ones: a `BbSelect`, `BbPopover`,
859
+ `BbTooltip`, `BbConfirm`, or nested drawer opened from inside works with no
860
+ special wiring. `BbToast` regions re-home into the open panel so toasts fired
861
+ from a drawer stay clickable.
862
+
863
+ ### Works well with
864
+
865
+ - `BbDialog` — the same content as a blocking modal when the task is focused
866
+ rather than supplementary; the shared API keeps the swap cheap.
867
+ - `BbConfirm` + `useConfirm` — a destructive action inside a drawer should raise
868
+ a confirm on top, not a hand-built panel.
869
+ - `BbToast` + `useToast` — fire the success toast right before closing; it stays
870
+ interactive above the panel.
871
+ - `BbButton` `href` / `to` — a footer action that navigates should carry the
872
+ link, never an `@click` + `router.push`.
873
+
874
+ ### Gotchas & anti-patterns
875
+
876
+ - **Don't rely on the close (x) button respecting `persistent`** — it doesn't
877
+ (though it does respect `disabled`); hide it (`hide-close`) when the panel
878
+ must be resolved explicitly, and keep a visible Cancel.
879
+ - **Don't reach for `BbOffCanvas` for a focused, blocking task** — that is
880
+ `BbDialog`; use a drawer for content that sits beside the page.
881
+ - **Don't confuse `size` with a width** — it is the panel's extent along its
882
+ axis (height for top/bottom drawers).
883
+ - **Don't query panel content before it has opened** unless you set `eager` —
884
+ the body renders lazily.
885
+ - **Don't toggle `v-model` from `@hide`/`@hidden`** to "cancel" a close — use
886
+ `persistent`; the close paths already guard correctly.
887
+ - **Don't stack unrelated drawers** expecting them to peek — the peeking band
888
+ only appears for panels sharing a `stack` name and side.
889
+
890
+ ### Accessibility
891
+
892
+ - Prefer passing `title`: it names the panel via `aria-labelledby`. Without a
893
+ header you own the accessible name — label a heading in the body and wire it
894
+ through the `header` slot's `titleId`.
895
+ - The panel is a true modal (`showModal()`): focus is contained within it, the
896
+ page behind is inert, and focus returns to the trigger when it closes.
897
+ `focus-target` only chooses where focus **starts**.
898
+ - The header close button carries a localized `aria-label` out of the box
899
+ (`config.locale`).
900
+ - Draggable dismissal is a convenience, not the only way out — the close button,
901
+ backdrop, and `Escape` all remain, so keyboard and assistive-tech users are
902
+ never stranded.
903
+ - Don't lean on `persistent` to trap users. Keep a visible way out (a Cancel or
904
+ Close button) even when backdrop/`Escape`/drag dismissal is disabled.
905
+
906
+ ## v-model
907
+
908
+ - `v-model` — type: `boolean \| undefined`
909
+
910
+ ## Props
911
+
912
+ | Prop | Type | Default | Required | Description |
913
+ | --- | --- | --- | --- | --- |
914
+ | `disabled` | `boolean \| undefined` | | | Disable EVERY user-initiated dismissal: backdrop click, Escape, drag-to-dismiss AND the header close (×) button (denied attempts play the deny nudge). Use it while an operation is in flight (e.g. a save) so the drawer cannot be dismissed mi… |
915
+ | `draggable` | `boolean \| undefined` | `false` | | Enable drag-to-dismiss. The panel can be dragged from anywhere toward its edge to close, and a grab handle is shown on the inner edge as the affordance. When `false`, the panel is static (dismiss via the close button, backdrop, or Escape on… |
916
+ | `eager` | `boolean \| undefined` | | | Render offcanvas content immediately instead of waiting for the first open. |
917
+ | `focusTarget` | `string \| undefined` | | | CSS selector of the element to focus after opening. Defaults to the first tabbable element. |
918
+ | `fullscreen` | `boolean \| "mobile" \| undefined` | | | Display the offcanvas fullscreen. Use `'mobile'` to restrict fullscreen to small devices. |
919
+ | `hideClose` | `boolean \| undefined` | | | Hides the default close (×) button in the header (e.g. for a `persistent` drawer you don't want dismissible — the × otherwise still closes a persistent drawer). |
920
+ | `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to open / close the panel. A panel with no `v-model` starts closed. |
921
+ | `persistent` | `boolean \| undefined` | | | Prevent closing via outside clicks, Escape key or drag-to-dismiss. The header close (×) button STILL closes a persistent drawer — that is the documented escape hatch; combine with `hideClose` to remove it, or use `disabled` to block every d… |
922
+ | `side` | `"left" \| "right" \| "top" \| "bottom" \| undefined` | `"left"` | | Which viewport edge the offcanvas docks to (and slides in from). |
923
+ | `size` | `Responsive<OffCanvasSize> \| undefined` | `"sm"` | | Controls the maximum size of the offcanvas panel. Accepts named presets from `'xs'` to `'2xl'`, `'auto'`, a custom CSS size string, or a numeric pixel value — or a per-breakpoint map (e.g. `{ default: 'sm', lg: 'lg' }`) to switch responsive… |
924
+ | `stack` | `string \| undefined` | | | Name of the stack this drawer belongs to. Drawers sharing the same `stack` value step back behind one another as later ones open; drawers in different stacks never affect each other. When omitted, the drawer stacks with nothing. |
925
+ | `stackGap` | `number \| undefined` | `60` | | Pixels each stacked parent drawer shifts inward when a child opens on top, leaving a peeking band of the parent visible. |
926
+ | `title` | `string \| undefined` | | | Title text announced to assistive technologies. If omitted, no header is rendered and accessibility must be handled manually. |
927
+ | `transitionDuration` | `number \| undefined` | `transitions.medium` | | Controls the duration of the open and close animations. |
928
+
929
+ ## Events
930
+
931
+ - `hidden` — `(event: "hidden"): void`
932
+ - `hide` — `(event: "hide"): void`
933
+ - `show` — `(event: "show"): void`
934
+ - `shown` — `(event: "shown"): void`
935
+ - `update:modelValue` — `(event: "update:modelValue", value: boolean): void`
936
+
937
+ ## Slots
938
+
939
+ - `default` — scope: `{ close: () => void; }` — Primary body content of the off-canvas panel, rendered in the scrollable body area.
940
+ - `footer` — scope: `object` — Content rendered in the panel footer, below the body area. Typically used for action buttons.
941
+ - `header` — scope: `BbOffCanvasHeaderSlotProps` — Replaces the entire off-canvas header section (title + close button). Maintains accessibility wiring via the provided props.
942
+ - `title` — scope: `BbOffCanvasTitleSlotProps` — Replaces the default title text inside the header. Remains linked to the panel through `aria-labelledby`.
943
+
944
+ ## See Also
945
+
946
+ - [BbDialog](./BbDialog.md) — Presents modal dialogs for focused user interactions.
947
+ - [BbPopover](./BbPopover.md) — Anchors floating content to reference elements.