bitboss-ui 3.0.0-beta.63 → 3.0.0-beta.64

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 (377) hide show
  1. package/README.md +25 -20
  2. package/bin/bitboss-ui.mjs +73 -7
  3. package/dist/ai/BbAlert.md +10 -1
  4. package/dist/ai/BbBadge.md +35 -3
  5. package/dist/ai/BbBadgeButton.md +4 -2
  6. package/dist/ai/BbBaseButton.md +9 -3
  7. package/dist/ai/BbBreadcrumbs.md +2 -2
  8. package/dist/ai/BbButton.md +113 -8
  9. package/dist/ai/BbCheckbox.md +1 -1
  10. package/dist/ai/BbCheckboxGroup.md +94 -6
  11. package/dist/ai/BbColorInput.md +4 -1
  12. package/dist/ai/BbColorPalette.md +2 -1
  13. package/dist/ai/BbConfirm.md +7 -3
  14. package/dist/ai/BbDatePicker.md +2 -1
  15. package/dist/ai/BbDatePickerInput.md +4 -1
  16. package/dist/ai/BbDialog.md +12 -11
  17. package/dist/ai/BbDropdown.md +189 -38
  18. package/dist/ai/BbDropdownButton.md +27 -7
  19. package/dist/ai/BbForm.md +55 -22
  20. package/dist/ai/BbHost.md +2 -2
  21. package/dist/ai/BbHoverCard.md +7 -3
  22. package/dist/ai/BbIcon.md +12 -6
  23. package/dist/ai/BbIndicator.md +11 -1
  24. package/dist/ai/BbNumberInput.md +4 -1
  25. package/dist/ai/BbOffCanvas.md +37 -3
  26. package/dist/ai/BbPopover.md +2 -1
  27. package/dist/ai/BbRadio.md +1 -1
  28. package/dist/ai/BbRadioGroup.md +102 -10
  29. package/dist/ai/BbSelect.md +52 -17
  30. package/dist/ai/BbSelectPopover.md +93 -26
  31. package/dist/ai/BbSwitch.md +1 -1
  32. package/dist/ai/BbSwitchGroup.md +30 -3
  33. package/dist/ai/BbTable.md +17 -10
  34. package/dist/ai/BbTabs.md +8 -3
  35. package/dist/ai/BbTabsList.md +4 -1
  36. package/dist/ai/BbTag.md +5 -2
  37. package/dist/ai/BbTextInput.md +4 -1
  38. package/dist/ai/BbTextarea.md +4 -1
  39. package/dist/ai/BbTimePicker.md +2 -1
  40. package/dist/ai/BbTimePickerInput.md +4 -1
  41. package/dist/ai/BbToast.md +9 -3
  42. package/dist/ai/BbTooltip.md +71 -9
  43. package/dist/ai/ChipsBox.md +1 -1
  44. package/dist/ai/CommonField.md +1 -1
  45. package/dist/ai/OptionsContainer.md +42 -0
  46. package/dist/ai/changelog.json +416 -6
  47. package/dist/ai/components.json +50 -48
  48. package/dist/ai/composables/useConfirm.md +39 -1
  49. package/dist/ai/design-tokens.json +6 -6
  50. package/dist/ai/guides/agent-contract.md +2 -2
  51. package/dist/ai/guides/ai-router.md +24 -23
  52. package/dist/ai/guides/app-layout.md +5 -0
  53. package/dist/ai/guides/component-picker.md +9 -2
  54. package/dist/ai/guides/design-language.md +24 -24
  55. package/dist/ai/guides/design-tokens.md +15 -8
  56. package/dist/ai/guides/icons-policy.md +9 -2
  57. package/dist/ai/guides/inertia-helpers.md +79 -49
  58. package/dist/ai/guides/installation-and-plugin-setup.md +12 -2
  59. package/dist/ai/guides/migration/adoption-checklist.md +235 -0
  60. package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -15
  61. package/dist/ai/guides/migration/components/bb-dialog.md +9 -9
  62. package/dist/ai/guides/migration/components/bb-dropdown.md +7 -2
  63. package/dist/ai/guides/migration/components/bb-popover.md +4 -2
  64. package/dist/ai/guides/migration/components/bb-select.md +19 -0
  65. package/dist/ai/guides/migration/components/bb-table.md +1 -0
  66. package/dist/ai/guides/migration/components/bb-toast.md +4 -0
  67. package/dist/ai/guides/migration/components/bb-tooltip.md +15 -12
  68. package/dist/ai/guides/migration/components/use-confirm.md +25 -2
  69. package/dist/ai/guides/migration/v2-to-v3.md +163 -9
  70. package/dist/ai/guides/migration/v3-beta-css-classes.md +7 -3
  71. package/dist/ai/guides/options-items-playbook.md +2 -1
  72. package/dist/ai/guides/passthrough.md +147 -85
  73. package/dist/ai/guides/preset-components.md +140 -15
  74. package/dist/ai/helpers/definePreset.json +7 -0
  75. package/dist/ai/helpers/definePreset.ts +123 -11
  76. package/dist/ai/helpers/inertia/manifest.json +15 -9
  77. package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +4 -4
  78. package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +39 -24
  79. package/dist/ai/helpers/inertia/useRouteQuery.ts +10 -4
  80. package/dist/ai/index.md +1 -0
  81. package/dist/ai/manifest/common.json +0 -1
  82. package/dist/ai/manifest/components/BbAlert.json +7 -2
  83. package/dist/ai/manifest/components/BbBadge.json +13 -4
  84. package/dist/ai/manifest/components/BbBadge.tree.json +2 -0
  85. package/dist/ai/manifest/components/BbBadgeButton.json +4 -2
  86. package/dist/ai/manifest/components/BbBaseButton.json +4 -2
  87. package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
  88. package/dist/ai/manifest/components/BbButton.json +14 -3
  89. package/dist/ai/manifest/components/BbButton.tree.json +5 -1
  90. package/dist/ai/manifest/components/BbCheckboxGroup.json +13 -8
  91. package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +11 -1
  92. package/dist/ai/manifest/components/BbColorInput.json +18 -15
  93. package/dist/ai/manifest/components/BbColorPalette.json +1 -1
  94. package/dist/ai/manifest/components/BbConfirm.json +4 -2
  95. package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
  96. package/dist/ai/manifest/components/BbDatePicker.json +1 -1
  97. package/dist/ai/manifest/components/BbDatePickerInput.json +17 -14
  98. package/dist/ai/manifest/components/BbDialog.tree.json +2 -1
  99. package/dist/ai/manifest/components/BbDropdown.json +24 -19
  100. package/dist/ai/manifest/components/BbDropdown.tree.json +9 -2
  101. package/dist/ai/manifest/components/BbDropdownButton.json +33 -20
  102. package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
  103. package/dist/ai/manifest/components/BbForm.json +2 -2
  104. package/dist/ai/manifest/components/BbHost.tree.json +1 -1
  105. package/dist/ai/manifest/components/BbHoverCard.json +1 -1
  106. package/dist/ai/manifest/components/BbIndicator.json +8 -2
  107. package/dist/ai/manifest/components/BbNumberInput.json +5 -2
  108. package/dist/ai/manifest/components/BbOffCanvas.json +2 -2
  109. package/dist/ai/manifest/components/BbOffCanvas.tree.json +1 -1
  110. package/dist/ai/manifest/components/BbPopover.json +1 -1
  111. package/dist/ai/manifest/components/BbRadioGroup.json +17 -12
  112. package/dist/ai/manifest/components/BbRadioGroup.tree.json +8 -1
  113. package/dist/ai/manifest/components/BbSelect.json +21 -18
  114. package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
  115. package/dist/ai/manifest/components/BbSelectPopover.json +10 -10
  116. package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
  117. package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
  118. package/dist/ai/manifest/components/BbSwitchGroup.tree.json +3 -1
  119. package/dist/ai/manifest/components/BbTable.tree.json +14 -1
  120. package/dist/ai/manifest/components/BbTabs.json +9 -6
  121. package/dist/ai/manifest/components/BbTabs.tree.json +1 -1
  122. package/dist/ai/manifest/components/BbTabsList.json +6 -3
  123. package/dist/ai/manifest/components/BbTag.json +19 -16
  124. package/dist/ai/manifest/components/BbTag.tree.json +1 -1
  125. package/dist/ai/manifest/components/BbTextInput.json +6 -3
  126. package/dist/ai/manifest/components/BbTextarea.json +6 -3
  127. package/dist/ai/manifest/components/BbTimePicker.json +1 -1
  128. package/dist/ai/manifest/components/BbTimePickerInput.json +10 -7
  129. package/dist/ai/manifest/components/BbToast.json +7 -2
  130. package/dist/ai/manifest/components/BbToast.tree.json +4 -2
  131. package/dist/ai/manifest/components/BbTooltip.json +6 -5
  132. package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
  133. package/dist/ai/manifest/components/CommonField.json +1 -1
  134. package/dist/ai/manifest/components/OptionsContainer.json +3 -1
  135. package/dist/ai/manifest/components/OptionsContainer.tree.json +38 -0
  136. package/dist/ai/manifest/index.json +3 -3
  137. package/dist/ai/manifest/meta.json +5 -3
  138. package/dist/ai/manifest/types.advanced.json +5 -2
  139. package/dist/ai/manifest/types.api.json +9 -7
  140. package/dist/ai/recipes/inertia/layout-scaffold.md +19 -6
  141. package/dist/ai/recipes/inertia/records-workspace.md +49 -13
  142. package/dist/ai/recipes/nuxt/layout-scaffold.md +19 -6
  143. package/dist/ai/recipes/nuxt/records-workspace.md +42 -12
  144. package/dist/ai/recipes/vue/layout-scaffold.md +19 -6
  145. package/dist/ai/recipes/vue/records-workspace.md +42 -12
  146. package/dist/ai/source/BbAlert.md +94 -76
  147. package/dist/ai/source/BbBadge.md +174 -72
  148. package/dist/ai/source/BbBadgeButton.md +130 -65
  149. package/dist/ai/source/BbBaseButton.md +46 -124
  150. package/dist/ai/source/BbBaseCheckboxIcon.md +38 -0
  151. package/dist/ai/source/BbBaseRadioIcon.md +18 -0
  152. package/dist/ai/source/BbBaseSwitchIcon.md +51 -0
  153. package/dist/ai/source/BbButton.md +153 -36
  154. package/dist/ai/source/BbCheckboxGroup.md +142 -18
  155. package/dist/ai/source/BbColorInput.md +240 -204
  156. package/dist/ai/source/BbColorPalette.md +7 -4
  157. package/dist/ai/source/BbConfirm.md +34 -11
  158. package/dist/ai/source/BbConfirmPortal.md +24 -9
  159. package/dist/ai/source/BbDatePicker.md +11 -7
  160. package/dist/ai/source/BbDatePickerInput.md +306 -269
  161. package/dist/ai/source/BbDialog.md +49 -14
  162. package/dist/ai/source/BbDropdown.md +314 -197
  163. package/dist/ai/source/BbDropdownButton.md +197 -31
  164. package/dist/ai/source/BbDropdownGroup.md +274 -176
  165. package/dist/ai/source/BbForm.md +50 -6
  166. package/dist/ai/source/BbHoverCard.md +12 -5
  167. package/dist/ai/source/BbIcon.md +4 -3
  168. package/dist/ai/source/BbIndicator.md +73 -52
  169. package/dist/ai/source/BbNumberInput.md +293 -257
  170. package/dist/ai/source/BbOffCanvas.md +55 -29
  171. package/dist/ai/source/BbPopover.md +14 -10
  172. package/dist/ai/source/BbRadioGroup.md +413 -297
  173. package/dist/ai/source/BbSelect.md +549 -435
  174. package/dist/ai/source/BbSelectPopover.md +128 -33
  175. package/dist/ai/source/BbSwitchGroup.md +70 -10
  176. package/dist/ai/source/BbTable.md +369 -37
  177. package/dist/ai/source/BbTabs.md +115 -39
  178. package/dist/ai/source/BbTabsList.md +106 -38
  179. package/dist/ai/source/BbTabsPanels.md +96 -36
  180. package/dist/ai/source/BbTabsRoot.md +96 -36
  181. package/dist/ai/source/BbTag.md +267 -233
  182. package/dist/ai/source/BbTextInput.md +261 -225
  183. package/dist/ai/source/BbTextarea.md +251 -215
  184. package/dist/ai/source/BbTimePicker.md +11 -7
  185. package/dist/ai/source/BbTimePickerInput.md +257 -220
  186. package/dist/ai/source/BbToast.md +73 -32
  187. package/dist/ai/source/BbToastPortal.md +65 -30
  188. package/dist/ai/source/BbTooltip.md +148 -113
  189. package/dist/ai/source/CommonPopover.md +6 -1
  190. package/dist/ai/source/FlatListBox.md +19 -9
  191. package/dist/ai/source/GroupedListBox.md +19 -9
  192. package/dist/ai/source/OptionsContainer.md +25 -9
  193. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +61 -36
  194. package/dist/components/BbAlert/types.d.ts +9 -5
  195. package/dist/components/BbAlert/types.js +8 -3
  196. package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +3 -3
  197. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +26 -17
  198. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +103 -50
  199. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +20 -15
  200. package/dist/components/BbBadge/badgeButtonContext.d.ts +12 -1
  201. package/dist/components/BbBadge/types.d.ts +45 -15
  202. package/dist/components/BbBadge/types.js +12 -3
  203. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -126
  204. package/dist/components/BbBaseButton/types.d.ts +23 -4
  205. package/dist/components/BbBaseButton/types.js +7 -1
  206. package/dist/components/BbBaseButton/useLinkState.d.ts +41 -0
  207. package/dist/components/BbBaseButton/useLinkState.js +70 -0
  208. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +130 -74
  209. package/dist/components/BbButton/types.d.ts +50 -13
  210. package/dist/components/BbButton/types.js +10 -3
  211. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +148 -95
  212. package/dist/components/BbCheckboxGroup/types.d.ts +34 -11
  213. package/dist/components/BbCheckboxGroup/types.js +9 -4
  214. package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +1 -1
  215. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +134 -93
  216. package/dist/components/BbColorInput/types.d.ts +11 -4
  217. package/dist/components/BbColorInput/types.js +9 -3
  218. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +82 -59
  219. package/dist/components/BbConfirm/types.d.ts +9 -4
  220. package/dist/components/BbConfirm/types.js +8 -3
  221. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
  222. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +68 -67
  223. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +1 -1
  224. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +259 -215
  225. package/dist/components/BbDatePickerInput/types.d.ts +12 -5
  226. package/dist/components/BbDatePickerInput/types.js +9 -3
  227. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +223 -219
  228. package/dist/components/BbDialog/useDialogStack.d.ts +1 -1
  229. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +104 -89
  230. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +1 -0
  231. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +323 -285
  232. package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +1 -0
  233. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +411 -319
  234. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +100 -98
  235. package/dist/components/BbDropdown/DropdownRow.vue.d.ts +4 -3
  236. package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +49 -28
  237. package/dist/components/BbDropdown/normalizeGroups.d.ts +6 -0
  238. package/dist/components/BbDropdown/normalizeGroups.js +21 -15
  239. package/dist/components/BbDropdown/types.d.ts +59 -12
  240. package/dist/components/BbDropdown/types.js +16 -3
  241. package/dist/components/BbDropdown/useDropdownContext.d.ts +6 -0
  242. package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +2 -1
  243. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +179 -68
  244. package/dist/components/BbDropdownButton/types.d.ts +44 -16
  245. package/dist/components/BbDropdownButton/types.js +28 -3
  246. package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +111 -89
  247. package/dist/components/BbForm/formSchema.d.ts +13 -0
  248. package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +100 -100
  249. package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +40 -25
  250. package/dist/components/BbIndicator/types.d.ts +9 -5
  251. package/dist/components/BbIndicator/types.js +8 -3
  252. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +243 -202
  253. package/dist/components/BbNumberInput/types.d.ts +12 -5
  254. package/dist/components/BbNumberInput/types.js +9 -3
  255. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
  256. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +401 -399
  257. package/dist/components/BbOffCanvas/types.d.ts +6 -2
  258. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +81 -80
  259. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +158 -105
  260. package/dist/components/BbRadioGroup/types.d.ts +21 -7
  261. package/dist/components/BbRadioGroup/types.js +9 -4
  262. package/dist/components/BbSelect/BbSelect.vue.d.ts +4 -3
  263. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +181 -137
  264. package/dist/components/BbSelect/types.d.ts +36 -22
  265. package/dist/components/BbSelect/types.js +22 -3
  266. package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +4 -4
  267. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +543 -532
  268. package/dist/components/BbSelectPopover/knownItems.d.ts +5 -0
  269. package/dist/components/BbSelectPopover/types.d.ts +46 -12
  270. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
  271. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  272. package/dist/components/BbSwitchGroup/types.d.ts +14 -4
  273. package/dist/components/BbSwitchGroup/types.js +8 -3
  274. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1102 -995
  275. package/dist/components/BbTable/estimatedFloors.golden.d.ts +25 -0
  276. package/dist/components/BbTable/measuredFloors.d.ts +46 -0
  277. package/dist/components/BbTable/measuredFloors.js +322 -0
  278. package/dist/components/BbTable/measuredFloorsTestKit.d.ts +27 -0
  279. package/dist/components/BbTable/textRuler.d.ts +71 -0
  280. package/dist/components/BbTable/textRuler.js +121 -0
  281. package/dist/components/BbTable/utils.d.ts +113 -6
  282. package/dist/components/BbTable/utils.js +118 -65
  283. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +53 -35
  284. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +62 -45
  285. package/dist/components/BbTabs/types.d.ts +26 -11
  286. package/dist/components/BbTabs/types.js +23 -8
  287. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +205 -164
  288. package/dist/components/BbTag/types.d.ts +11 -4
  289. package/dist/components/BbTag/types.js +9 -3
  290. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +98 -57
  291. package/dist/components/BbTextInput/types.d.ts +12 -5
  292. package/dist/components/BbTextInput/types.js +9 -3
  293. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +137 -96
  294. package/dist/components/BbTextarea/types.d.ts +12 -5
  295. package/dist/components/BbTextarea/types.js +9 -3
  296. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +105 -104
  297. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +241 -197
  298. package/dist/components/BbTimePickerInput/types.d.ts +12 -5
  299. package/dist/components/BbTimePickerInput/types.js +9 -3
  300. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +74 -32
  301. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +47 -47
  302. package/dist/components/BbToast/types.d.ts +10 -5
  303. package/dist/components/BbToast/types.js +18 -3
  304. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +85 -71
  305. package/dist/components/BbTooltip/types.d.ts +13 -8
  306. package/dist/components/BbTooltip/types.js +8 -3
  307. package/dist/components/CommonField/CommonField.vue.d.ts +1 -1
  308. package/dist/components/CommonPopover/CommonPopover.vue.d.ts +1 -1
  309. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +69 -69
  310. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +53 -50
  311. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +146 -143
  312. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +7 -2
  313. package/dist/components/OptionsContainer/types.d.ts +14 -3
  314. package/dist/composables/useBbFormContext.d.ts +4 -3
  315. package/dist/composables/useBbTabsContext.js +99 -85
  316. package/dist/composables/useChoiceIndicator.d.ts +58 -0
  317. package/dist/composables/useChoiceIndicator.js +197 -0
  318. package/dist/composables/useConfirm.d.ts +4 -4
  319. package/dist/composables/usePassthrough.d.ts +54 -1
  320. package/dist/composables/usePassthrough.js +100 -71
  321. package/dist/directives/bbTooltip.d.ts +12 -6
  322. package/dist/directives/createPopoverDirective.js +1 -1
  323. package/dist/index.d.ts +3 -1
  324. package/dist/llms-full.txt +2300 -543
  325. package/dist/llms-medium.txt +71 -53
  326. package/dist/llms.txt +2 -1
  327. package/dist/passthrough-deduper.js +6 -3
  328. package/dist/project-dts.d.ts +24 -0
  329. package/dist/project-dts.js +43 -17
  330. package/dist/styles.css +2 -2
  331. package/dist/types/AlertVariant.d.ts +14 -0
  332. package/dist/types/AlertVariant.js +9 -0
  333. package/dist/types/BadgeVariant.d.ts +14 -0
  334. package/dist/types/BadgeVariant.js +9 -0
  335. package/dist/types/ButtonVariant.d.ts +16 -0
  336. package/dist/types/ButtonVariant.js +11 -0
  337. package/dist/types/CheckboxVariant.d.ts +38 -0
  338. package/dist/types/CheckboxVariant.js +4 -0
  339. package/dist/types/CommonProps.d.ts +4 -3
  340. package/dist/types/Config.d.ts +7 -0
  341. package/dist/types/ConfirmVariant.d.ts +12 -0
  342. package/dist/types/ConfirmVariant.js +4 -0
  343. package/dist/types/DropdownItemVariant.d.ts +12 -0
  344. package/dist/types/DropdownItemVariant.js +4 -0
  345. package/dist/types/IndicatorVariant.d.ts +15 -0
  346. package/dist/types/IndicatorVariant.js +10 -0
  347. package/dist/types/InputVariant.d.ts +13 -0
  348. package/dist/types/InputVariant.js +8 -0
  349. package/dist/types/RadioVariant.d.ts +38 -0
  350. package/dist/types/RadioVariant.js +4 -0
  351. package/dist/types/TabsVariant.d.ts +13 -0
  352. package/dist/types/TabsVariant.js +8 -0
  353. package/dist/types/ToastVariant.d.ts +15 -0
  354. package/dist/types/ToastVariant.js +10 -0
  355. package/dist/types/TooltipVariant.d.ts +12 -0
  356. package/dist/types/TooltipVariant.js +4 -0
  357. package/dist/types/passthrough.d.ts +83 -15
  358. package/dist/types/passthrough.js +2 -2
  359. package/dist/types/ptComponentMap.d.ts +35 -23
  360. package/dist/utilities/functions/extractDomContainer.d.ts +20 -1
  361. package/dist/utilities/functions/extractDomContainer.js +8 -3
  362. package/dist/utils/focusVisibility.d.ts +6 -0
  363. package/dist/utils/focusVisibility.js +4 -1
  364. package/dist/utils/passthroughDeduper.d.ts +14 -0
  365. package/dist/utils/versionCheck.js +1 -1
  366. package/dist/vite-plugin.d.ts +64 -7
  367. package/dist/vite.js +385 -259
  368. package/llms.txt +2 -1
  369. package/package.json +3 -3
  370. package/scripts/lib/adoption-checklist.json +312 -0
  371. package/scripts/lib/eslint-plugin.d.ts +13 -0
  372. package/scripts/lib/eslint-plugin.mjs +75 -11
  373. package/scripts/lib/idiom-scan.mjs +65 -0
  374. package/scripts/lib/mcp-config.mjs +203 -9
  375. package/scripts/lib/migrate-fix.mjs +42 -1
  376. package/scripts/lib/project-variant-dts.mjs +18 -0
  377. package/scripts/lib/validate-bb-markup.mjs +99 -2
@@ -28,7 +28,7 @@
28
28
  'bb-offcanvas--swipe-exit': swipeExiting,
29
29
  'bb-offcanvas--instant-stack': instantStack,
30
30
  'bb-offcanvas--covered': isCovered,
31
- 'bb-offcanvas--stacked': isStackedAbove,
31
+ 'bb-offcanvas--above': isStackedAbove,
32
32
  'bb-offcanvas--has-handle': draggable,
33
33
  'bb-offcanvas--no-header': !renderHeader(),
34
34
  'bb-offcanvas--keyboard': keyboardInset > 0,
@@ -36,7 +36,7 @@
36
36
  'bb-offcanvas--snap-low': isBelowTopStop(),
37
37
  'bb-offcanvas--snap-settling': snapMotion === 'settle',
38
38
  'bb-offcanvas--snap-instant': snapMotion === 'instant',
39
- [`bb-offcanvas--${props.side}`]: true,
39
+ [`bb-offcanvas--${side}`]: true,
40
40
  },
41
41
  ].flat()
42
42
  "
@@ -229,12 +229,14 @@ import { useLogger } from '@/composables/useLogger';
229
229
  import { useMobile } from '@/composables/useMobile';
230
230
  import { viewportWidth, viewportHeight } from '@/composables/useViewportWidth';
231
231
  import { useBreakpoint } from '@/composables/useBreakpoint';
232
+ import { hydrationGate } from '@/composables/useHydrated';
232
233
  import { useUntil } from '../../composables/useUntil';
233
234
  import { removedPropsFor } from '@/deprecation/removedProps';
234
235
  import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
235
236
  import { wait } from '@/utilities/functions/wait';
236
237
  import { animationsSettled } from '@/utilities/functions/animationsSettled';
237
238
  import { transitions } from '@/utilities/misc/transitions';
239
+ import { firstFocusableMatch } from '@/utils/focusVisibility';
238
240
  import { overlaySurfaceIsolation } from '@/utils/overlaySurfaceIsolation';
239
241
  import { useConfig } from '@/composables/useConfig';
240
242
  import CloseButton from '../CloseIcon/CloseButton.vue';
@@ -256,6 +258,7 @@ import {
256
258
  type BbOffCanvasProps,
257
259
  type BbOffCanvasEvents,
258
260
  type BbOffCanvasSlots,
261
+ type OffCanvasSide,
259
262
  type Sizes,
260
263
  } from './types';
261
264
  import { usePassthrough } from '@/composables/usePassthrough';
@@ -545,9 +548,7 @@ const removeEscapeListener = () => {
545
548
 
546
549
  const focusDialogTarget = () => {
547
550
  if (!props.focusTarget) return;
548
- const element = dialog.value?.querySelector(props.focusTarget);
549
- if (!(element instanceof HTMLElement)) return;
550
- element.focus();
551
+ firstFocusableMatch(dialog.value, props.focusTarget)?.focus();
551
552
  };
552
553
 
553
554
  const handleKeyDown = (e: KeyboardEvent) => {
@@ -572,6 +573,7 @@ const handleKeyDown = (e: KeyboardEvent) => {
572
573
  let releaseTopLayer: (() => void) | null = null;
573
574
  const toggleDialog = async (value: boolean) => {
574
575
  if (value) {
576
+ side.value = resolveResponsive(props.side);
575
577
  emit('show');
576
578
  openedTimes.value++;
577
579
  addEscapeListener();
@@ -752,6 +754,25 @@ const denyClose = ref(false);
752
754
 
753
755
  const { isMobile } = useMobile();
754
756
  const { resolve: resolveResponsive } = useBreakpoint();
757
+
758
+ /**
759
+ * The side of the current opening (Q76.12 a). A per-breakpoint `side` is
760
+ * resolved when the panel opens and then FROZEN: an open panel never swings
761
+ * on a resize; the next opening resolves it again. Everything that reads the
762
+ * side (the side class the CSS keys off: the slide, insets, rounding; the
763
+ * drag axis; the stack; the snap) reads this. A new `side` value from the
764
+ * author still applies at once.
765
+ */
766
+ const side = ref<OffCanvasSide>(resolveResponsive(props.side));
767
+ watch(
768
+ () => JSON.stringify(props.side),
769
+ () => (side.value = resolveResponsive(props.side))
770
+ );
771
+ // Before hydration the width is the server's answer (`ssrViewportWidth`),
772
+ // not a measurement: a panel opened then (open on load) takes the real one
773
+ // as the gate opens, before its first paint.
774
+ watch(hydrationGate, () => (side.value = resolveResponsive(props.side)));
775
+
755
776
  const isFullscreen = computed(
756
777
  () =>
757
778
  props.fullscreen === true ||
@@ -775,11 +796,11 @@ const {
775
796
 
776
797
  /** Axis the panel travels along: horizontal for left/right, vertical otherwise. */
777
798
  const dragAxis = computed<'x' | 'y'>(() =>
778
- props.side === 'left' || props.side === 'right' ? 'x' : 'y'
799
+ side.value === 'left' || side.value === 'right' ? 'x' : 'y'
779
800
  );
780
801
  /** +1 when the panel exits toward the positive axis end (right / bottom). */
781
802
  const closeSign = computed(() =>
782
- props.side === 'right' || props.side === 'bottom' ? 1 : -1
803
+ side.value === 'right' || side.value === 'bottom' ? 1 : -1
783
804
  );
784
805
 
785
806
  /**
@@ -819,7 +840,7 @@ const enterStack = () => {
819
840
  pushStack(
820
841
  registeredStack,
821
842
  stackId,
822
- props.side,
843
+ side.value,
823
844
  measureSize(),
824
845
  props.stackGap
825
846
  );
@@ -847,17 +868,17 @@ const isCovered = computed(() => {
847
868
  /**
848
869
  * Dim per panel, blur on the bottom-most. Every open offcanvas paints its own
849
870
  * dim backdrop, so a child darkens the panels beneath it and that dim fades in
850
- * and out with the child alone. Panels above the bottom-most are `--stacked`:
851
- * its own dim (`--bb-overlay-stacked`) and no `backdrop-filter`. The bottom
871
+ * and out with the child alone. Panels above the bottom-most are `--above`:
872
+ * its own dim (`--bb-overlay-above`) and no `backdrop-filter`. The bottom
852
873
  * panel keeps its blur and full dim untouched while panels open and close
853
874
  * above it — no handoff, so nothing beneath brightens or re-blurs as the pile
854
875
  * shrinks, and the pile costs one blur pass however deep it goes. Keyed off
855
- * the global open order, not the `stack` name. Mirrors `bb-dialog--stacked`.
876
+ * the global open order, not the `stack` name. Mirrors `bb-dialog--above`.
856
877
  *
857
878
  * Latched through the close: a closing panel leaves `openOrder` at
858
879
  * close-START (so the parent un-covers and un-pushes at once, see
859
880
  * `toggleDialog`) but keeps painting its backdrop for the whole fade, so it
860
- * must keep its `--stacked` dress until it is gone — otherwise the blur and
881
+ * must keep its `--above` dress until it is gone — otherwise the blur and
861
882
  * the full dim would snap onto it, over the parent, for the length of the
862
883
  * fade. The live order rules while registered; the last registered answer
863
884
  * rules while still visible after leaving.
@@ -878,11 +899,11 @@ const isStackedAbove = computed(() => {
878
899
 
879
900
  // Re-register if the `stack` name, `direction` or `stackGap` changes while open,
880
901
  // so the registry's bookkeeping (order, direction, size, gap) stays in sync.
881
- watch([stackName, () => props.side, () => props.stackGap], ([name]) => {
902
+ watch([stackName, () => side.value, () => props.stackGap], ([name]) => {
882
903
  if (registeredStack === null) return;
883
904
  removeStack(registeredStack, stackId);
884
905
  registeredStack = name;
885
- pushStack(name, stackId, props.side, measureSize(), props.stackGap);
906
+ pushStack(name, stackId, side.value, measureSize(), props.stackGap);
886
907
  });
887
908
 
888
909
  /** Page margin a dialog keeps from the viewport edge (mirrors `--page-padding`). */
@@ -922,7 +943,7 @@ let prevPeerCount = 0;
922
943
  const isBehindSameDirectionPeer = () => {
923
944
  const list = stacks.value[stackName.value];
924
945
  if (!list) return false;
925
- const chain = list.filter((entry) => entry.direction === props.side);
946
+ const chain = list.filter((entry) => entry.direction === side.value);
926
947
  const selfIndex = chain.findIndex((entry) => entry.id === stackId);
927
948
  return selfIndex !== -1 && selfIndex !== chain.length - 1;
928
949
  };
@@ -1020,7 +1041,7 @@ watch(
1020
1041
  { flush: 'post' }
1021
1042
  );
1022
1043
 
1023
- watch([() => props.draggable, () => props.side, isVisible] as const, () =>
1044
+ watch([() => props.draggable, () => side.value, isVisible] as const, () =>
1024
1045
  syncBodyDismissTouchAction()
1025
1046
  );
1026
1047
 
@@ -1057,11 +1078,11 @@ const applyDismissTransform = () => {
1057
1078
  const el = dialog.value;
1058
1079
  if (!el) return;
1059
1080
  el.style.transform =
1060
- props.side === 'bottom'
1081
+ side.value === 'bottom'
1061
1082
  ? 'translate3d(0, 100%, 0)'
1062
- : props.side === 'top'
1083
+ : side.value === 'top'
1063
1084
  ? 'translate3d(0, -100%, 0)'
1064
- : props.side === 'left'
1085
+ : side.value === 'left'
1065
1086
  ? 'translate3d(-100%, 0, 0)'
1066
1087
  : 'translate3d(100%, 0, 0)';
1067
1088
  };
@@ -1261,7 +1282,7 @@ const { lengthX, lengthY } = useSwipe(dialog, {
1261
1282
 
1262
1283
  const snapActive = computed(
1263
1284
  () =>
1264
- props.side === 'bottom' &&
1285
+ side.value === 'bottom' &&
1265
1286
  props.draggable &&
1266
1287
  !isFullscreen.value &&
1267
1288
  !!props.snapPoints?.length
@@ -1708,6 +1729,9 @@ import type { BbSnapPoint } from './sheetSnap';
1708
1729
  export type { Sizes, BbSnapPoint };
1709
1730
  type OffCanvasSize = NonNullable<Size<Sizes>['size']> | 'auto';
1710
1731
 
1732
+ /** The viewport edge a `BbOffCanvas` docks to. */
1733
+ export type OffCanvasSide = 'left' | 'top' | 'right' | 'bottom';
1734
+
1711
1735
  /**
1712
1736
  * Passthrough parts of `BbOffCanvas` (plans/passthrough/BbOffCanvas.md).
1713
1737
  *
@@ -1894,11 +1918,13 @@ export type BbOffCanvasProps = {
1894
1918
  */
1895
1919
  transitionDuration?: number;
1896
1920
  /**
1897
- * Which viewport edge the offcanvas docks to (and slides in from).
1921
+ * Which viewport edge the offcanvas docks to (and slides in from). Also a
1922
+ * per-breakpoint map (e.g. `{ default: 'bottom', md: 'right' }`), resolved
1923
+ * when the panel opens: an open panel keeps its side through a resize.
1898
1924
  *
1899
1925
  * @defaultValue `'left'`
1900
1926
  */
1901
- side?: 'left' | 'top' | 'right' | 'bottom';
1927
+ side?: Responsive<'left' | 'top' | 'right' | 'bottom'>;
1902
1928
  };
1903
1929
 
1904
1930
  export type BbOffCanvasEvents = {
@@ -2170,7 +2196,7 @@ export type BbOffCanvasSlots = {
2170
2196
  /* A `covered` panel (another open panel sits on top) drops its `will-change`
2171
2197
  layer, since it can't be dragged. Must follow `--visible` to win the
2172
2198
  equal-specificity `will-change`. Its backdrop is untouched: which panel
2173
- paints the backdrop is decided by `--stacked` below. */
2199
+ paints the backdrop is decided by `--above` below. */
2174
2200
  &.bb-offcanvas--covered {
2175
2201
  will-change: auto;
2176
2202
  }
@@ -2553,17 +2579,17 @@ export type BbOffCanvasSlots = {
2553
2579
  dim, so a child darkens the parent beneath it, and that dim fades in and
2554
2580
  out with the child alone: the bottom panel's backdrop is never handed
2555
2581
  off while panels come and go above it, so nothing beneath brightens or
2556
- re-blurs mid-close. Panels above the first are `--stacked`: their own dim
2557
- (`--bb-overlay-stacked`, the same as `--bb-overlay` by default; `transparent`
2582
+ re-blurs mid-close. Panels above the first are `--above`: their own dim
2583
+ (`--bb-overlay-above`, the same as `--bb-overlay` by default; `transparent`
2558
2584
  collapses the pile to a single dim) and NO filter, because stacked
2559
2585
  `backdrop-filter`s each reblur the whole scene and choke the GPU past a
2560
2586
  handful, and a blur that moved between layers would snap. Opacity is
2561
2587
  left to `--open` / `--swipe-exit`, which is what lets the stacked dim
2562
- fade. Mirrors `bb-dialog--stacked`. */
2563
- &.bb-offcanvas--stacked::backdrop {
2588
+ fade. Mirrors `bb-dialog--above`. */
2589
+ &.bb-offcanvas--above::backdrop {
2564
2590
  -webkit-backdrop-filter: none;
2565
2591
  backdrop-filter: none;
2566
- background-color: var(--bb-overlay-stacked);
2592
+ background-color: var(--bb-overlay-above);
2567
2593
  }
2568
2594
 
2569
2595
  &.bb-offcanvas--deny-close {
@@ -2588,7 +2614,7 @@ export type BbOffCanvasSlots = {
2588
2614
  &::backdrop {
2589
2615
  /* Keep blur subtle to reduce GPU cost while softening page content. The
2590
2616
  blur and the full dim belong to the bottom-most open panel only — see
2591
- `--stacked` above. */
2617
+ the `--above` rule above. */
2592
2618
  -webkit-backdrop-filter: blur(var(--bb-overlay-blur, 2px));
2593
2619
  backdrop-filter: blur(var(--bb-overlay-blur, 2px));
2594
2620
  background-color: var(--bb-overlay);
@@ -179,7 +179,12 @@ import { useConfig } from '@/composables/useConfig';
179
179
  import CommonPopover from '../CommonPopover/CommonPopover.vue';
180
180
  import type { CommonPopoverAvailableSpace } from '../CommonPopover/types';
181
181
  import BbOffCanvas from '../BbOffCanvas/BbOffCanvas.vue';
182
- import { extractDomContainer } from '@/utilities/functions/extractDomContainer';
182
+ import {
183
+ domElement,
184
+ extractDomContainer,
185
+ extractHtmlContainer,
186
+ type DomHost,
187
+ } from '@/utilities/functions/extractDomContainer';
183
188
  import { parseWidthString } from '@/utilities/functions/parseWidthString';
184
189
  import { removedPropsFor } from '@/deprecation/removedProps';
185
190
  import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
@@ -191,6 +196,7 @@ import {
191
196
  type PopoverTrigger,
192
197
  } from './types';
193
198
  import { usePassthrough } from '@/composables/usePassthrough';
199
+ import { firstFocusableMatch } from '@/utils/focusVisibility';
194
200
  import { withoutClass, withoutPt } from '@/utils/passthrough';
195
201
  import { BB_OFF_CANVAS_PT } from '../BbOffCanvas/types';
196
202
  import { transitions } from '@/utilities/misc/transitions';
@@ -232,7 +238,7 @@ const { id } = useId();
232
238
  const activatorId = props.id ?? id.value;
233
239
  const popoverId = `bbp_${activatorId}`;
234
240
 
235
- const activatorEl = ref<HTMLElement>();
241
+ const activatorEl = ref<DomHost>();
236
242
  /**
237
243
  * The id the panel is labelled by. An external activator that already has an
238
244
  * id keeps it (like BbDropdown and BbSelectPopover): overwriting it broke the
@@ -243,7 +249,7 @@ const labelledById = computed(
243
249
  () => (hasExternalActivator.value && activatorEl.value?.id) || activatorId
244
250
  );
245
251
  const popoverRef = useTemplateRef('popover-ref');
246
- const popoverEl = computed(() => extractDomContainer(popoverRef.value));
252
+ const popoverEl = computed(() => extractHtmlContainer(popoverRef.value));
247
253
 
248
254
  const hasOpenedOnce = useUntil(isOpen);
249
255
  const hasExternalActivator = computed(() => props.activator != null);
@@ -444,7 +450,7 @@ watch(
444
450
 
445
451
  // Close when activator scrolls out of view
446
452
  useIntersectionObserver(
447
- activatorEl,
453
+ () => domElement(activatorEl.value),
448
454
  ([{ intersectionRatio }]) => {
449
455
  // A modal sheet is detached from the activator's position, so it must not
450
456
  // close just because the activator scrolls out of view.
@@ -678,11 +684,7 @@ const runOpenEffects = async () => {
678
684
  const focusSelector =
679
685
  props.focusTarget ??
680
686
  '[tabindex]:not([tabindex="-1"]), button, a, input, select, textarea';
681
- const focusTarget = popoverEl.value?.querySelector(focusSelector);
682
-
683
- if (focusTarget instanceof HTMLElement) {
684
- focusTarget.focus();
685
- }
687
+ firstFocusableMatch(popoverEl.value, focusSelector)?.focus();
686
688
  };
687
689
 
688
690
  const runCloseEffects = () => {
@@ -874,7 +876,9 @@ const needsReactiveWidth = computed(() => {
874
876
  });
875
877
 
876
878
  const { width: activatorWidth } = useElementSize(
877
- computed(() => (needsReactiveWidth.value ? activatorEl.value : undefined)),
879
+ computed(() =>
880
+ domElement(needsReactiveWidth.value ? activatorEl.value : undefined)
881
+ ),
878
882
  { width: 0, height: 0 },
879
883
  { box: 'border-box' }
880
884
  );