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
@@ -158,6 +158,7 @@ import {
158
158
  formControlPtActive,
159
159
  TEXT_CONTROL_NATIVE_ATTRS,
160
160
  usePassthrough,
161
+ variantPt,
161
162
  } from '@/composables/usePassthrough';
162
163
  import { useBaseOptions } from '@/composables/useBaseOptions';
163
164
  import { useConfig } from '@/composables/useConfig';
@@ -175,7 +176,11 @@ import {
175
176
  type BbTagSlots,
176
177
  } from './types';
177
178
 
178
- defineOptions({ inheritAttrs: false });
179
+ defineOptions({
180
+ // An app's own variants as declared `pt:<part>:<name>` props (Q76.7).
181
+ mixins: [variantPt(BB_TAG_PT)],
182
+ inheritAttrs: false,
183
+ });
179
184
  const declaredProps = withDefaults(defineProps<BbTagProps>(), {
180
185
  autocomplete: 'off',
181
186
  divider: 'Enter',
@@ -258,6 +263,11 @@ const passthrough = usePassthrough({
258
263
  parts: BB_TAG_PT.parts,
259
264
  states: BB_TAG_PT.states,
260
265
  active: formControlPtActive(props, () => hasValue.value),
266
+ variant: {
267
+ ...BB_TAG_PT.variant,
268
+ // CommonFieldInput's default.
269
+ current: () => props.variant ?? 'outline',
270
+ },
261
271
  });
262
272
 
263
273
  const logger = useLogger();
@@ -655,7 +665,12 @@ onBeforeUnmount(leave);
655
665
 
656
666
  ```ts
657
667
  import type { Responsive } from '@/types/ResponsiveSize';
658
- import type { InputVariantType } from '@/types/InputVariant';
668
+ import {
669
+ INPUT_VARIANTS,
670
+ type InputVariantBuiltIn,
671
+ type InputVariantRegistry,
672
+ type InputVariantType,
673
+ } from '@/types/InputVariant';
659
674
  import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
660
675
  import {
661
676
  type FormControlPtState,
@@ -666,6 +681,7 @@ import {
666
681
  type PtValue,
667
682
  TEXT_CONTROL_PT_PARTS,
668
683
  type TextControlPtPart,
684
+ type PtVariantAttrs,
669
685
  } from '@/types/passthrough';
670
686
  import type { FieldCrossAlign, FieldLayout } from '@/types/FieldLayout';
671
687
  import type { IconType } from '@/types/Icon';
@@ -714,7 +730,19 @@ export const BB_TAG_PT = {
714
730
  /** `rowStates` are declared on `rowParts` only. */
715
731
  rowParts: ['badge', 'comma'],
716
732
  rowStates: ['highlighted'],
733
+ // The input `variant` is a state on the field's parts (Q76.7), below
734
+ // the real states; a picker's panel and rows are not the field's.
735
+ variant: {
736
+ names: INPUT_VARIANTS,
737
+ option: 'inputVariants',
738
+ parts: TEXT_CONTROL_PT_PARTS,
739
+ },
717
740
  } as const satisfies {
741
+ variant: {
742
+ names: readonly InputVariantBuiltIn[];
743
+ option: string;
744
+ parts: readonly TextControlPtPart[];
745
+ };
718
746
  parts: readonly BbTagPtPart[];
719
747
  states: readonly BbTagPtState[];
720
748
  rowParts: readonly BbTagPtPart[];
@@ -731,238 +759,244 @@ export type BbTagProps = {
731
759
  | `pt:${TextControlPtPart}`
732
760
  | `pt:${BbTagPtPart}:${FormControlPtState}`
733
761
  | 'pt:badge:highlighted'
734
- | 'pt:comma:highlighted']?: PtValue;
735
- } & {
736
- // The tag parts also take a per-item function, called with the tag — a
737
- // literal function type, not `PtItemFn` (T23).
738
- [K in `pt:${BbTagItemPtPart}`]?:
739
- | PtValue
740
- | ((ctx: PtItemCtx<string, BbTagPtState>) => PtItemResult);
741
- } & {
742
- /**
743
- * Passthrough, object form: the same keys as the `pt:*` attributes
744
- * without the prefix. See the `pt:<part>` row.
745
- */
746
- pt?: PtMap<TextControlPtPart, FormControlPtState> & {
747
- [K in
748
- | `${BbTagItemPtPart}:${FormControlPtState}`
749
- | 'badge:highlighted'
750
- | 'comma:highlighted']?: PtValue;
762
+ | 'pt:comma:highlighted'
763
+ | `pt:${TextControlPtPart}:${InputVariantBuiltIn}`]?: PtValue;
764
+ } & /* @vue-ignore */ PtVariantAttrs<
765
+ TextControlPtPart,
766
+ keyof InputVariantRegistry
767
+ > & {
768
+ // The tag parts also take a per-item function, called with the tag — a
769
+ // literal function type, not `PtItemFn` (T23).
770
+ [K in `pt:${BbTagItemPtPart}`]?:
771
+ | PtValue
772
+ | ((ctx: PtItemCtx<string, BbTagPtState>) => PtItemResult);
751
773
  } & {
752
- [K in BbTagItemPtPart]?: PtValue | PtItemFn<string, BbTagPtState>;
753
- };
754
- /* eslint-enable @typescript-eslint/consistent-indexed-object-style */
755
- /**
756
- * Name of the icon to be added at the end of the input.
757
- */
758
-
759
- 'append:icon'?: IconType;
760
-
761
- /**
762
- * Guides to the browser as to the type of information expected in the field.
763
- *
764
- * @defaultValue `'off'`
765
- */
766
- autocomplete?: InputHTMLAttributes['autocomplete'];
767
-
768
- /**
769
- * Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.
770
- */
771
- autofocus?: InputHTMLAttributes['autofocus'];
772
-
773
- /**
774
- * Compares tags case-sensitively when rejecting duplicates (`Vue` and `vue`
775
- * both allowed); by default case folds. A tag keeps the casing typed either
776
- * way, and entries are trimmed first.
777
- *
778
- * @defaultValue `false`
779
- */
780
- caseSensitive?: boolean;
781
-
782
- /**
783
- * Sets the display model for selected values to a list of comma separated string.
784
- * In this mode the user cannot deselect an option by pressing the close button.
785
- */
786
- comma?: boolean;
787
-
788
- /**
789
- * Displays a clear button when the input has a value and is being interacted with.
790
- */
791
- clearable?: boolean;
792
-
793
- /**
794
- * Compact density: the field uses the `-compact` twins of `--bb-input-h`,
795
- * `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on
796
- * the component is ignored while it is on. Size a compact field with
797
- * `--bb-input-h-compact` (and `--bb-input-py-compact`).
798
- */
799
- compact?: boolean;
800
-
801
- /**
802
- * The field box's look, with `BbButton`'s names and tokens. Colours only,
803
- * so a form never reflows; `'ghost'` has no border in any state, `'none'`
804
- * no look at all (you own hover, focus and the states). Register more with
805
- * the plugin's `inputVariants`.
806
- *
807
- * @defaultValue `'outline'`
808
- */
809
- variant?: InputVariantType;
810
-
811
- /**
812
- * Text between the label and the input. Unlike the hint it is always
813
- * visible; it joins the input's `aria-describedby` after any `errors` /
814
- * `warnings`, before the `hint`.
815
- */
816
- description?: string;
817
-
818
- /**
819
- * How label and input sit together: `'vertical'`, `'horizontal'` (50/50),
820
- * `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a
821
- * per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).
822
- */
823
- layout?: Responsive<FieldLayout>;
824
-
825
- /**
826
- * Vertical position of the label block in a side-by-side row; not
827
- * `labelPosition`, the horizontal one. Omitted, the label's first line
828
- * meets the control's.
829
- */
830
- labelAlign?: FieldCrossAlign;
831
-
832
- /**
833
- * Vertical position of the control in a side-by-side row; not
834
- * `inputPosition`, the horizontal one. Omitted, the control's first line
835
- * meets the label's.
836
- */
837
- inputAlign?: FieldCrossAlign;
838
-
839
- /**
840
- * Disables the component.
841
- */
842
- disabled?: boolean;
843
-
844
- /**
845
- * The divider key used to separate values from one another. By default it is "Enter".
846
- * Accepts a single key or an array of keys (e.g. `['Enter', ',']`) — any of them
847
- * commits the current text, split on every single-character divider in the
848
- * set into one tag per trimmed, non-empty piece.
849
- *
850
- * @defaultValue `'Enter'`
851
- */
852
- divider?: KeyboardEvent['key'] | Array<KeyboardEvent['key']>;
853
-
854
- /**
855
- * Error messages under the field, a string or array, in an
856
- * `aria-live="polite"` region and first in the control's
857
- * `aria-describedby`, so they are re-read when it regains focus.
858
- */
859
- errors?: string | string[];
860
-
861
- /**
862
- * Define if the component should be in an error state.
863
- * It usually attaches a CSS class for styling purposes.
864
- */
865
- hasErrors?: boolean;
866
-
867
- /**
868
- * Warning messages under the field, a string or array: amber, in their own
869
- * `aria-live` region and in the control's `aria-describedby` after the
870
- * errors. Non-empty turns on the warning state; errors win when both are
871
- * set.
872
- */
873
- warnings?: string | string[];
874
-
875
- /**
876
- * Define if the component should be in a warning state.
877
- * Same chrome as errors with `--bb-warn`; errors take priority.
878
- */
879
- hasWarnings?: boolean;
880
-
881
- /**
882
- * Visually hides the label of the input while maintaining accessibility.
883
- */
884
- hideLabel?: boolean;
885
-
886
- /**
887
- * Text box to be displayed near the input, usually to indicate instructions.
888
- */
889
- hint?: string;
890
-
891
- /**
892
- * The `id` of the native control; the label's `for` and the description
893
- * and message ids derive from it. Generated when omitted.
894
- */
895
- id?: HTMLAttributes['id'];
896
-
897
- /**
898
- * Text content of the label of the element.
899
- */
900
- label: string;
901
-
902
- /**
903
- * Where the label sits relative to the field: `outside` above it, `inside`
904
- * within the control, or `floating` (starts inside, lifts on focus/value).
905
- * Defaults to `config.defaultInputLabelMode`, like the other inputs.
906
- */
907
- labelMode?: 'outside' | 'floating' | 'inside';
908
-
909
- /**
910
- * Sets the text alignment of the label.
911
- */
912
- labelPosition?: 'left' | 'center' | 'right';
913
-
914
- /**
915
- * Sets the component in a loading state, usually triggering some visual styles.
916
- */
917
- loading?: boolean;
918
-
919
- /**
920
- * Maximum number of selected items.
921
- */
922
- max?: number;
923
-
924
- /**
925
- * Used by v-model. Contains all selected tags.
926
- */
927
- modelValue?: string[];
928
-
929
- /**
930
- * Defines the name of the input.
931
- */
932
- name?: InputHTMLAttributes['name'];
933
-
934
- /**
935
- * Keeps the hint displayed.
936
- */
937
- persistentHint?: boolean;
938
-
939
- /**
940
- * Text shown while the field is empty.
941
- */
942
- placeholder?: InputHTMLAttributes['placeholder'];
943
-
944
- /**
945
- * Name of the icon to be added at the start of the input.
946
- */
947
-
948
- 'prepend:icon'?: IconType;
949
-
950
- /**
951
- * Sets the input in a readonly state.
952
- */
953
- readonly?: boolean;
954
-
955
- /**
956
- * Sets the input as required.
957
- */
958
- required?: boolean;
959
-
960
- /**
961
- * Reverses the layout. Applicable in every direction the order of the label and
962
- * the input is swapped.
963
- */
964
- reverse?: boolean;
965
- } & FormFieldProps<string[]>;
774
+ /**
775
+ * Passthrough, object form: the same keys as the `pt:*` attributes
776
+ * without the prefix. See the `pt:<part>` row.
777
+ */
778
+ pt?: PtMap<TextControlPtPart, FormControlPtState> & {
779
+ [K in
780
+ | `${BbTagItemPtPart}:${FormControlPtState}`
781
+ | 'badge:highlighted'
782
+ | 'comma:highlighted']?: PtValue;
783
+ } & {
784
+ [K in BbTagItemPtPart]?: PtValue | PtItemFn<string, BbTagPtState>;
785
+ } & {
786
+ [K in `${TextControlPtPart}:${InputVariantBuiltIn | keyof InputVariantRegistry}`]?: PtValue;
787
+ };
788
+ /* eslint-enable @typescript-eslint/consistent-indexed-object-style */
789
+ /**
790
+ * Name of the icon to be added at the end of the input.
791
+ */
792
+
793
+ 'append:icon'?: IconType;
794
+
795
+ /**
796
+ * Guides to the browser as to the type of information expected in the field.
797
+ *
798
+ * @defaultValue `'off'`
799
+ */
800
+ autocomplete?: InputHTMLAttributes['autocomplete'];
801
+
802
+ /**
803
+ * Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.
804
+ */
805
+ autofocus?: InputHTMLAttributes['autofocus'];
806
+
807
+ /**
808
+ * Compares tags case-sensitively when rejecting duplicates (`Vue` and `vue`
809
+ * both allowed); by default case folds. A tag keeps the casing typed either
810
+ * way, and entries are trimmed first.
811
+ *
812
+ * @defaultValue `false`
813
+ */
814
+ caseSensitive?: boolean;
815
+
816
+ /**
817
+ * Sets the display model for selected values to a list of comma separated string.
818
+ * In this mode the user cannot deselect an option by pressing the close button.
819
+ */
820
+ comma?: boolean;
821
+
822
+ /**
823
+ * Displays a clear button when the input has a value and is being interacted with.
824
+ */
825
+ clearable?: boolean;
826
+
827
+ /**
828
+ * Compact density: the field uses the `-compact` twins of `--bb-input-h`,
829
+ * `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on
830
+ * the component is ignored while it is on. Size a compact field with
831
+ * `--bb-input-h-compact` (and `--bb-input-py-compact`).
832
+ */
833
+ compact?: boolean;
834
+
835
+ /**
836
+ * The field box's look, with `BbButton`'s names and tokens. Colours only,
837
+ * so a form never reflows; `'ghost'` has no border in any state, `'none'`
838
+ * no look at all (you own hover, focus and the states). Register more with
839
+ * the plugin's `inputVariants`.
840
+ *
841
+ * @defaultValue `'outline'`
842
+ */
843
+ variant?: InputVariantType;
844
+
845
+ /**
846
+ * Text between the label and the input. Unlike the hint it is always
847
+ * visible; it joins the input's `aria-describedby` after any `errors` /
848
+ * `warnings`, before the `hint`.
849
+ */
850
+ description?: string;
851
+
852
+ /**
853
+ * How label and input sit together: `'vertical'`, `'horizontal'` (50/50),
854
+ * `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a
855
+ * per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).
856
+ */
857
+ layout?: Responsive<FieldLayout>;
858
+
859
+ /**
860
+ * Vertical position of the label block in a side-by-side row; not
861
+ * `labelPosition`, the horizontal one. Omitted, the label's first line
862
+ * meets the control's.
863
+ */
864
+ labelAlign?: FieldCrossAlign;
865
+
866
+ /**
867
+ * Vertical position of the control in a side-by-side row; not
868
+ * `inputPosition`, the horizontal one. Omitted, the control's first line
869
+ * meets the label's.
870
+ */
871
+ inputAlign?: FieldCrossAlign;
872
+
873
+ /**
874
+ * Disables the component.
875
+ */
876
+ disabled?: boolean;
877
+
878
+ /**
879
+ * The divider key used to separate values from one another. By default it is "Enter".
880
+ * Accepts a single key or an array of keys (e.g. `['Enter', ',']`) — any of them
881
+ * commits the current text, split on every single-character divider in the
882
+ * set into one tag per trimmed, non-empty piece.
883
+ *
884
+ * @defaultValue `'Enter'`
885
+ */
886
+ divider?: KeyboardEvent['key'] | Array<KeyboardEvent['key']>;
887
+
888
+ /**
889
+ * Error messages under the field, a string or array, in an
890
+ * `aria-live="polite"` region and first in the control's
891
+ * `aria-describedby`, so they are re-read when it regains focus.
892
+ */
893
+ errors?: string | string[];
894
+
895
+ /**
896
+ * Define if the component should be in an error state.
897
+ * It usually attaches a CSS class for styling purposes.
898
+ */
899
+ hasErrors?: boolean;
900
+
901
+ /**
902
+ * Warning messages under the field, a string or array: amber, in their own
903
+ * `aria-live` region and in the control's `aria-describedby` after the
904
+ * errors. Non-empty turns on the warning state; errors win when both are
905
+ * set.
906
+ */
907
+ warnings?: string | string[];
908
+
909
+ /**
910
+ * Define if the component should be in a warning state.
911
+ * Same chrome as errors with `--bb-warn`; errors take priority.
912
+ */
913
+ hasWarnings?: boolean;
914
+
915
+ /**
916
+ * Visually hides the label of the input while maintaining accessibility.
917
+ */
918
+ hideLabel?: boolean;
919
+
920
+ /**
921
+ * Text box to be displayed near the input, usually to indicate instructions.
922
+ */
923
+ hint?: string;
924
+
925
+ /**
926
+ * The `id` of the native control; the label's `for` and the description
927
+ * and message ids derive from it. Generated when omitted.
928
+ */
929
+ id?: HTMLAttributes['id'];
930
+
931
+ /**
932
+ * Text content of the label of the element.
933
+ */
934
+ label: string;
935
+
936
+ /**
937
+ * Where the label sits relative to the field: `outside` above it, `inside`
938
+ * within the control, or `floating` (starts inside, lifts on focus/value).
939
+ * Defaults to `config.defaultInputLabelMode`, like the other inputs.
940
+ */
941
+ labelMode?: 'outside' | 'floating' | 'inside';
942
+
943
+ /**
944
+ * Sets the text alignment of the label.
945
+ */
946
+ labelPosition?: 'left' | 'center' | 'right';
947
+
948
+ /**
949
+ * Sets the component in a loading state, usually triggering some visual styles.
950
+ */
951
+ loading?: boolean;
952
+
953
+ /**
954
+ * Maximum number of selected items.
955
+ */
956
+ max?: number;
957
+
958
+ /**
959
+ * Used by v-model. Contains all selected tags.
960
+ */
961
+ modelValue?: string[];
962
+
963
+ /**
964
+ * Defines the name of the input.
965
+ */
966
+ name?: InputHTMLAttributes['name'];
967
+
968
+ /**
969
+ * Keeps the hint displayed.
970
+ */
971
+ persistentHint?: boolean;
972
+
973
+ /**
974
+ * Text shown while the field is empty.
975
+ */
976
+ placeholder?: InputHTMLAttributes['placeholder'];
977
+
978
+ /**
979
+ * Name of the icon to be added at the start of the input.
980
+ */
981
+
982
+ 'prepend:icon'?: IconType;
983
+
984
+ /**
985
+ * Sets the input in a readonly state.
986
+ */
987
+ readonly?: boolean;
988
+
989
+ /**
990
+ * Sets the input as required.
991
+ */
992
+ required?: boolean;
993
+
994
+ /**
995
+ * Reverses the layout. Applicable in every direction the order of the label and
996
+ * the input is swapped.
997
+ */
998
+ reverse?: boolean;
999
+ } & FormFieldProps<string[]>;
966
1000
 
967
1001
  export type BbTagEvents = {
968
1002
  /** Emitted when the native input loses focus. Forwards the original DOM `FocusEvent`. */