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
@@ -138,6 +138,7 @@ import {
138
138
  formControlPtActive,
139
139
  TEXT_CONTROL_NATIVE_ATTRS,
140
140
  usePassthrough,
141
+ variantPt,
141
142
  } from '@/composables/usePassthrough';
142
143
  import { hash } from '@/utilities/functions/hash';
143
144
  import { isNotEmpty } from '@/utilities/functions/isNotEmpty';
@@ -148,7 +149,11 @@ import {
148
149
  type BbTextInputSlots,
149
150
  } from './types';
150
151
 
151
- defineOptions({ inheritAttrs: false });
152
+ defineOptions({
153
+ // An app's own variants as declared `pt:<part>:<name>` props (Q76.7).
154
+ mixins: [variantPt(BB_TEXT_INPUT_PT)],
155
+ inheritAttrs: false,
156
+ });
152
157
  const declaredProps = withDefaults(defineProps<BbTextInputProps<E>>(), {
153
158
  type: 'text',
154
159
  });
@@ -227,6 +232,11 @@ const passthrough = usePassthrough({
227
232
  nearLimit: () => characterCounter.value?.state === 'near',
228
233
  atLimit: () => characterCounter.value?.state === 'limit',
229
234
  },
235
+ variant: {
236
+ ...BB_TEXT_INPUT_PT.variant,
237
+ // CommonFieldInput's default.
238
+ current: () => props.variant ?? 'outline',
239
+ },
230
240
  });
231
241
 
232
242
  const input = ref<HTMLInputElement | null>(null);
@@ -449,7 +459,12 @@ const inputBindings = computed(() =>
449
459
 
450
460
  ```ts
451
461
  import type { Responsive } from '@/types/ResponsiveSize';
452
- import type { InputVariantType } from '@/types/InputVariant';
462
+ import {
463
+ INPUT_VARIANTS,
464
+ type InputVariantBuiltIn,
465
+ type InputVariantRegistry,
466
+ type InputVariantType,
467
+ } from '@/types/InputVariant';
453
468
  import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
454
469
  import type { FieldCrossAlign, FieldLayout } from '@/types/FieldLayout';
455
470
  import type { MaskInputOptions } from 'maska';
@@ -464,6 +479,7 @@ import {
464
479
  type PtMap,
465
480
  type PtValue,
466
481
  type TextControlPtPart,
482
+ type PtVariantAttrs,
467
483
  } from '@/types/passthrough';
468
484
  import type { FormFieldProps } from '@/composables/useFormBinding';
469
485
  import type {
@@ -494,7 +510,19 @@ export const BB_TEXT_INPUT_PT = {
494
510
  ...COUNTER_PT_STATES,
495
511
  ...FORM_CONTROL_PT_STATES.slice(1),
496
512
  ],
513
+ // The input `variant` is a state on the field's parts (Q76.7), below
514
+ // the real states; a picker's panel and rows are not the field's.
515
+ variant: {
516
+ names: INPUT_VARIANTS,
517
+ option: 'inputVariants',
518
+ parts: TEXT_CONTROL_PT_PARTS,
519
+ },
497
520
  } as const satisfies {
521
+ variant: {
522
+ names: readonly InputVariantBuiltIn[];
523
+ option: string;
524
+ parts: readonly TextControlPtPart[];
525
+ };
498
526
  parts: readonly BbTextInputPtPart[];
499
527
  states: readonly BbTextInputPtState[];
500
528
  };
@@ -510,229 +538,237 @@ type AppPolicy = RegisteredNullValue<'BbTextInput'>;
510
538
  export type BbTextInputProps<E extends NullValuePolicy = AppPolicy> = {
511
539
  [K in
512
540
  | `pt:${BbTextInputPtPart}`
513
- | `pt:${BbTextInputPtPart}:${BbTextInputPtState}`]?: PtValue;
514
- } & {
515
- /**
516
- * Passthrough, object form: `{ box: '…', 'box:errors': '…' }` — the same
517
- * keys as the `pt:*` attributes without the prefix. See the `pt:<part>` row.
518
- */
519
- pt?: PtMap<BbTextInputPtPart, BbTextInputPtState>;
520
- /**
521
- * Name of the icon to be added at the end of the input.
522
- */
523
-
524
- 'append:icon'?: IconType;
525
- /**
526
- * Guides to the browser as to the type of information expected in the field.
527
- */
528
- autocomplete?: InputHTMLAttributes['autocomplete'];
529
-
530
- /**
531
- * Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.
532
- */
533
- autofocus?: InputHTMLAttributes['autofocus'];
534
-
535
- /**
536
- * Displays a clear button when the input has a value and is being interacted with.
537
- */
538
- clearable?: boolean;
539
-
540
- /**
541
- * Shows a character count at the end of the hint row: `42`, or `42 / 140`
542
- * with the native `maxlength` (which also stops input). It brightens from
543
- * 90 % and takes the warning colour at the limit; screen readers hear it
544
- * only when it crosses 90 % or the limit.
545
- */
546
- counter?: boolean;
547
-
548
- /**
549
- * Compact density: the field uses the `-compact` twins of `--bb-input-h`,
550
- * `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on
551
- * the component is ignored while it is on. Size a compact field with
552
- * `--bb-input-h-compact` (and `--bb-input-py-compact`).
553
- */
554
- compact?: boolean;
555
-
556
- /**
557
- * The field box's look, with `BbButton`'s names and tokens. Colours only,
558
- * so a form never reflows; `'ghost'` has no border in any state, `'none'`
559
- * no look at all (you own hover, focus and the states). Register more with
560
- * the plugin's `inputVariants`.
561
- *
562
- * @defaultValue `'outline'`
563
- */
564
- variant?: InputVariantType;
565
-
566
- /**
567
- * Text between the label and the input. Unlike the hint it is always
568
- * visible; it joins the input's `aria-describedby` after any `errors` /
569
- * `warnings`, before the `hint`.
570
- */
571
- description?: string;
572
-
573
- /**
574
- * How label and input sit together: `'vertical'`, `'horizontal'` (50/50),
575
- * `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a
576
- * per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).
577
- */
578
- layout?: Responsive<FieldLayout>;
579
-
580
- /**
581
- * Vertical position of the label block in a side-by-side row; not
582
- * `labelPosition`, the horizontal one. Omitted, the label's first line
583
- * meets the control's.
584
- */
585
- labelAlign?: FieldCrossAlign;
586
-
587
- /**
588
- * Vertical position of the control in a side-by-side row; not
589
- * `inputPosition`, the horizontal one. Omitted, the control's first line
590
- * meets the label's.
591
- */
592
- inputAlign?: FieldCrossAlign;
593
-
594
- /**
595
- * Disables the component.
596
- */
597
- disabled?: boolean;
598
-
599
- /**
600
- * Emits the masked value of the input.
601
- */
602
- emitMasked?: boolean;
603
-
604
- /**
605
- * Error messages under the field, a string or array, in an
606
- * `aria-live="polite"` region and first in the control's
607
- * `aria-describedby`, so they are re-read when it regains focus.
608
- */
609
- errors?: string | string[];
610
-
611
- /**
612
- * Define if the component should be in an error state.
613
- * It usually attaches a CSS class for styling purposes.
614
- */
615
- hasErrors?: boolean;
616
-
617
- /**
618
- * Warning messages under the field, a string or array: amber, in their own
619
- * `aria-live` region and in the control's `aria-describedby` after the
620
- * errors. Non-empty turns on the warning state; errors win when both are
621
- * set.
622
- */
623
- warnings?: string | string[];
624
-
625
- /**
626
- * Define if the component should be in a warning state.
627
- * Same chrome as errors with `--bb-warn`; errors take priority.
628
- */
629
- hasWarnings?: boolean;
630
-
631
- /**
632
- * Visually hides the label of the input while maintaining accessibility.
633
- */
634
- hideLabel?: boolean;
635
-
636
- /**
637
- * Text box to be displayed near the input, usually to indicate instructions.
638
- */
639
- hint?: string;
640
-
641
- /**
642
- * The `id` of the native control; the label's `for` and the description
643
- * and message ids derive from it. Generated when omitted.
644
- */
645
- id?: HTMLAttributes['id'];
646
-
647
- /**
648
- * The inputmode of the input.
649
- */
650
- inputMode?: InputHTMLAttributes['inputmode'];
651
-
652
- /**
653
- * Text content of the label of the element.
654
- */
655
- label: string;
656
-
657
- /**
658
- * Sets the text alignment of the label.
659
- */
660
- labelPosition?: 'left' | 'center' | 'right';
661
-
662
- /**
663
- * Label rendering mode.
664
- */
665
- labelMode?: 'outside' | 'floating' | 'inside';
666
-
667
- /**
668
- * Sets the component in a loading state, usually triggering some visual styles.
669
- */
670
- loading?: boolean;
671
-
672
- /**
673
- * A maska options object, not a string: `{ mask: '#### #### #### ####' }`.
674
- * Please visit https://beholdr.github.io/maska/v3 for syntax examples.
675
- */
676
- mask?: MaskInputOptions;
677
-
678
- /**
679
- * Used by v-model.
680
- */
681
- modelValue?: string | null;
682
-
683
- /**
684
- * Defines the name of the input.
685
- */
686
- name?: InputHTMLAttributes['name'];
687
-
688
- /**
689
- * What the field emits once emptied (typing, the clear button, an empty
690
- * mask): `'null'` emits `null`, `'string'` emits `''`. Unset:
691
- * `formControls.textInputNullValue` (`'null'`). With `'string'`, the
692
- * `update:modelValue` payload types as `string`.
693
- */
694
- nullValue?: E;
695
-
696
- /**
697
- * Keeps the hint displayed.
698
- */
699
- persistentHint?: boolean;
700
-
701
- /**
702
- * Text shown while the field is empty.
703
- */
704
- placeholder?: InputHTMLAttributes['placeholder'];
705
-
706
- /**
707
- * Name of the icon to be added at the start of the input.
708
- */
709
-
710
- 'prepend:icon'?: IconType;
711
-
712
- /**
713
- * Sets the input in a readonly state.
714
- */
715
- readonly?: boolean;
716
-
717
- /**
718
- * Sets the native `required` attribute, for a plain `<form>`. Inside a `BbForm` it is an error (nothing enforces it): use `rules="required"` or the form `schema` instead.
719
- */
720
- required?: boolean;
721
-
722
- /**
723
- * Reverses the layout. Applicable in every direction the order of the label and
724
- * the input is swapped.
725
- */
726
- reverse?: boolean;
727
-
728
- /**
729
- * Type of the input. Restricted to the textual input types this component
730
- * supports — use `BbNumberInput` for numbers and `BbDatePickerInput` for dates.
731
- *
732
- * @defaultValue `'text'`
733
- */
734
- type?: 'text' | 'email' | 'url' | 'tel' | 'search' | 'password';
735
- } & FormFieldProps<string | null>;
541
+ | `pt:${BbTextInputPtPart}:${BbTextInputPtState}`
542
+ | `pt:${TextControlPtPart}:${InputVariantBuiltIn}`]?: PtValue;
543
+ } & /* @vue-ignore */ PtVariantAttrs<
544
+ TextControlPtPart,
545
+ keyof InputVariantRegistry
546
+ > & {
547
+ /**
548
+ * Passthrough, object form: `{ box: '…', 'box:errors': '…' }` — the same
549
+ * keys as the `pt:*` attributes without the prefix. See the `pt:<part>` row.
550
+ */
551
+ /* eslint-disable @typescript-eslint/consistent-indexed-object-style -- mapped, never Record (T23) */
552
+ pt?: PtMap<BbTextInputPtPart, BbTextInputPtState> & {
553
+ [K in `${TextControlPtPart}:${InputVariantBuiltIn | keyof InputVariantRegistry}`]?: PtValue;
554
+ };
555
+ /* eslint-enable @typescript-eslint/consistent-indexed-object-style */
556
+ /**
557
+ * Name of the icon to be added at the end of the input.
558
+ */
559
+
560
+ 'append:icon'?: IconType;
561
+ /**
562
+ * Guides to the browser as to the type of information expected in the field.
563
+ */
564
+ autocomplete?: InputHTMLAttributes['autocomplete'];
565
+
566
+ /**
567
+ * Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.
568
+ */
569
+ autofocus?: InputHTMLAttributes['autofocus'];
570
+
571
+ /**
572
+ * Displays a clear button when the input has a value and is being interacted with.
573
+ */
574
+ clearable?: boolean;
575
+
576
+ /**
577
+ * Shows a character count at the end of the hint row: `42`, or `42 / 140`
578
+ * with the native `maxlength` (which also stops input). It brightens from
579
+ * 90 % and takes the warning colour at the limit; screen readers hear it
580
+ * only when it crosses 90 % or the limit.
581
+ */
582
+ counter?: boolean;
583
+
584
+ /**
585
+ * Compact density: the field uses the `-compact` twins of `--bb-input-h`,
586
+ * `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on
587
+ * the component is ignored while it is on. Size a compact field with
588
+ * `--bb-input-h-compact` (and `--bb-input-py-compact`).
589
+ */
590
+ compact?: boolean;
591
+
592
+ /**
593
+ * The field box's look, with `BbButton`'s names and tokens. Colours only,
594
+ * so a form never reflows; `'ghost'` has no border in any state, `'none'`
595
+ * no look at all (you own hover, focus and the states). Register more with
596
+ * the plugin's `inputVariants`.
597
+ *
598
+ * @defaultValue `'outline'`
599
+ */
600
+ variant?: InputVariantType;
601
+
602
+ /**
603
+ * Text between the label and the input. Unlike the hint it is always
604
+ * visible; it joins the input's `aria-describedby` after any `errors` /
605
+ * `warnings`, before the `hint`.
606
+ */
607
+ description?: string;
608
+
609
+ /**
610
+ * How label and input sit together: `'vertical'`, `'horizontal'` (50/50),
611
+ * `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a
612
+ * per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).
613
+ */
614
+ layout?: Responsive<FieldLayout>;
615
+
616
+ /**
617
+ * Vertical position of the label block in a side-by-side row; not
618
+ * `labelPosition`, the horizontal one. Omitted, the label's first line
619
+ * meets the control's.
620
+ */
621
+ labelAlign?: FieldCrossAlign;
622
+
623
+ /**
624
+ * Vertical position of the control in a side-by-side row; not
625
+ * `inputPosition`, the horizontal one. Omitted, the control's first line
626
+ * meets the label's.
627
+ */
628
+ inputAlign?: FieldCrossAlign;
629
+
630
+ /**
631
+ * Disables the component.
632
+ */
633
+ disabled?: boolean;
634
+
635
+ /**
636
+ * Emits the masked value of the input.
637
+ */
638
+ emitMasked?: boolean;
639
+
640
+ /**
641
+ * Error messages under the field, a string or array, in an
642
+ * `aria-live="polite"` region and first in the control's
643
+ * `aria-describedby`, so they are re-read when it regains focus.
644
+ */
645
+ errors?: string | string[];
646
+
647
+ /**
648
+ * Define if the component should be in an error state.
649
+ * It usually attaches a CSS class for styling purposes.
650
+ */
651
+ hasErrors?: boolean;
652
+
653
+ /**
654
+ * Warning messages under the field, a string or array: amber, in their own
655
+ * `aria-live` region and in the control's `aria-describedby` after the
656
+ * errors. Non-empty turns on the warning state; errors win when both are
657
+ * set.
658
+ */
659
+ warnings?: string | string[];
660
+
661
+ /**
662
+ * Define if the component should be in a warning state.
663
+ * Same chrome as errors with `--bb-warn`; errors take priority.
664
+ */
665
+ hasWarnings?: boolean;
666
+
667
+ /**
668
+ * Visually hides the label of the input while maintaining accessibility.
669
+ */
670
+ hideLabel?: boolean;
671
+
672
+ /**
673
+ * Text box to be displayed near the input, usually to indicate instructions.
674
+ */
675
+ hint?: string;
676
+
677
+ /**
678
+ * The `id` of the native control; the label's `for` and the description
679
+ * and message ids derive from it. Generated when omitted.
680
+ */
681
+ id?: HTMLAttributes['id'];
682
+
683
+ /**
684
+ * The inputmode of the input.
685
+ */
686
+ inputMode?: InputHTMLAttributes['inputmode'];
687
+
688
+ /**
689
+ * Text content of the label of the element.
690
+ */
691
+ label: string;
692
+
693
+ /**
694
+ * Sets the text alignment of the label.
695
+ */
696
+ labelPosition?: 'left' | 'center' | 'right';
697
+
698
+ /**
699
+ * Label rendering mode.
700
+ */
701
+ labelMode?: 'outside' | 'floating' | 'inside';
702
+
703
+ /**
704
+ * Sets the component in a loading state, usually triggering some visual styles.
705
+ */
706
+ loading?: boolean;
707
+
708
+ /**
709
+ * A maska options object, not a string: `{ mask: '#### #### #### ####' }`.
710
+ * Please visit https://beholdr.github.io/maska/v3 for syntax examples.
711
+ */
712
+ mask?: MaskInputOptions;
713
+
714
+ /**
715
+ * Used by v-model.
716
+ */
717
+ modelValue?: string | null;
718
+
719
+ /**
720
+ * Defines the name of the input.
721
+ */
722
+ name?: InputHTMLAttributes['name'];
723
+
724
+ /**
725
+ * What the field emits once emptied (typing, the clear button, an empty
726
+ * mask): `'null'` emits `null`, `'string'` emits `''`. Unset:
727
+ * `formControls.textInputNullValue` (`'null'`). With `'string'`, the
728
+ * `update:modelValue` payload types as `string`.
729
+ */
730
+ nullValue?: E;
731
+
732
+ /**
733
+ * Keeps the hint displayed.
734
+ */
735
+ persistentHint?: boolean;
736
+
737
+ /**
738
+ * Text shown while the field is empty.
739
+ */
740
+ placeholder?: InputHTMLAttributes['placeholder'];
741
+
742
+ /**
743
+ * Name of the icon to be added at the start of the input.
744
+ */
745
+
746
+ 'prepend:icon'?: IconType;
747
+
748
+ /**
749
+ * Sets the input in a readonly state.
750
+ */
751
+ readonly?: boolean;
752
+
753
+ /**
754
+ * Sets the native `required` attribute, for a plain `<form>`. Inside a `BbForm` it is an error (nothing enforces it): use `rules="required"` or the form `schema` instead.
755
+ */
756
+ required?: boolean;
757
+
758
+ /**
759
+ * Reverses the layout. Applicable in every direction the order of the label and
760
+ * the input is swapped.
761
+ */
762
+ reverse?: boolean;
763
+
764
+ /**
765
+ * Type of the input. Restricted to the textual input types this component
766
+ * supports — use `BbNumberInput` for numbers and `BbDatePickerInput` for dates.
767
+ *
768
+ * @defaultValue `'text'`
769
+ */
770
+ type?: 'text' | 'email' | 'url' | 'tel' | 'search' | 'password';
771
+ } & FormFieldProps<string | null>;
736
772
 
737
773
  export type BbTextInputEvents<E extends NullValuePolicy = AppPolicy> = {
738
774
  /**