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

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 (396) 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 +494 -6
  47. package/dist/ai/components.json +50 -48
  48. package/dist/ai/composables/useBbConfig.md +8 -1
  49. package/dist/ai/composables/useConfirm.md +39 -1
  50. package/dist/ai/design-tokens.json +6 -6
  51. package/dist/ai/guides/agent-contract.md +2 -2
  52. package/dist/ai/guides/ai-router.md +24 -23
  53. package/dist/ai/guides/app-layout.md +5 -0
  54. package/dist/ai/guides/component-picker.md +9 -2
  55. package/dist/ai/guides/design-language.md +24 -24
  56. package/dist/ai/guides/design-tokens.md +15 -8
  57. package/dist/ai/guides/icons-policy.md +9 -2
  58. package/dist/ai/guides/inertia-helpers.md +1183 -301
  59. package/dist/ai/guides/installation-and-plugin-setup.md +12 -2
  60. package/dist/ai/guides/migration/adoption-checklist.md +235 -0
  61. package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -15
  62. package/dist/ai/guides/migration/components/bb-dialog.md +9 -9
  63. package/dist/ai/guides/migration/components/bb-dropdown.md +7 -2
  64. package/dist/ai/guides/migration/components/bb-popover.md +4 -2
  65. package/dist/ai/guides/migration/components/bb-select.md +19 -0
  66. package/dist/ai/guides/migration/components/bb-table.md +1 -0
  67. package/dist/ai/guides/migration/components/bb-toast.md +4 -0
  68. package/dist/ai/guides/migration/components/bb-tooltip.md +15 -12
  69. package/dist/ai/guides/migration/components/use-confirm.md +25 -2
  70. package/dist/ai/guides/migration/v2-to-v3.md +211 -9
  71. package/dist/ai/guides/migration/v3-beta-css-classes.md +7 -3
  72. package/dist/ai/guides/options-items-playbook.md +2 -1
  73. package/dist/ai/guides/passthrough.md +149 -85
  74. package/dist/ai/guides/preset-components.md +140 -15
  75. package/dist/ai/helpers/definePreset.json +7 -0
  76. package/dist/ai/helpers/definePreset.ts +123 -11
  77. package/dist/ai/helpers/inertia/manifest.json +151 -62
  78. package/dist/ai/helpers/inertia/messages.ts +33 -0
  79. package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +120 -20
  80. package/dist/ai/helpers/inertia/useHasChanged.ts +34 -16
  81. package/dist/ai/helpers/inertia/useLazyProp.ts +102 -36
  82. package/dist/ai/helpers/inertia/useLazyPropGetter.ts +3 -1
  83. package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +154 -34
  84. package/dist/ai/helpers/inertia/usePromiseForm.ts +121 -14
  85. package/dist/ai/helpers/inertia/useQuery.ts +133 -11
  86. package/dist/ai/helpers/inertia/useQueryObject.ts +74 -67
  87. package/dist/ai/helpers/inertia/useResourceContext.ts +60 -14
  88. package/dist/ai/helpers/inertia/useRouteQuery.ts +38 -27
  89. package/dist/ai/helpers/inertia/useScreenSizes.ts +9 -7
  90. package/dist/ai/helpers/inertia/useTableContext.ts +5 -2
  91. package/dist/ai/helpers/inertia/utils.ts +14 -0
  92. package/dist/ai/index.md +1 -0
  93. package/dist/ai/manifest/common.json +0 -1
  94. package/dist/ai/manifest/components/BbAlert.json +7 -2
  95. package/dist/ai/manifest/components/BbBadge.json +13 -4
  96. package/dist/ai/manifest/components/BbBadge.tree.json +2 -0
  97. package/dist/ai/manifest/components/BbBadgeButton.json +4 -2
  98. package/dist/ai/manifest/components/BbBaseButton.json +4 -2
  99. package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
  100. package/dist/ai/manifest/components/BbButton.json +14 -3
  101. package/dist/ai/manifest/components/BbButton.tree.json +5 -1
  102. package/dist/ai/manifest/components/BbCheckboxGroup.json +13 -8
  103. package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +11 -1
  104. package/dist/ai/manifest/components/BbColorInput.json +18 -15
  105. package/dist/ai/manifest/components/BbColorPalette.json +1 -1
  106. package/dist/ai/manifest/components/BbConfirm.json +4 -2
  107. package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
  108. package/dist/ai/manifest/components/BbDatePicker.json +1 -1
  109. package/dist/ai/manifest/components/BbDatePickerInput.json +17 -14
  110. package/dist/ai/manifest/components/BbDialog.tree.json +2 -1
  111. package/dist/ai/manifest/components/BbDropdown.json +24 -19
  112. package/dist/ai/manifest/components/BbDropdown.tree.json +9 -2
  113. package/dist/ai/manifest/components/BbDropdownButton.json +33 -20
  114. package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
  115. package/dist/ai/manifest/components/BbForm.json +2 -2
  116. package/dist/ai/manifest/components/BbHost.tree.json +1 -1
  117. package/dist/ai/manifest/components/BbHoverCard.json +1 -1
  118. package/dist/ai/manifest/components/BbIndicator.json +8 -2
  119. package/dist/ai/manifest/components/BbNumberInput.json +5 -2
  120. package/dist/ai/manifest/components/BbOffCanvas.json +2 -2
  121. package/dist/ai/manifest/components/BbOffCanvas.tree.json +1 -1
  122. package/dist/ai/manifest/components/BbPopover.json +1 -1
  123. package/dist/ai/manifest/components/BbRadioGroup.json +17 -12
  124. package/dist/ai/manifest/components/BbRadioGroup.tree.json +8 -1
  125. package/dist/ai/manifest/components/BbSelect.json +21 -18
  126. package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
  127. package/dist/ai/manifest/components/BbSelectPopover.json +10 -10
  128. package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
  129. package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
  130. package/dist/ai/manifest/components/BbSwitchGroup.tree.json +3 -1
  131. package/dist/ai/manifest/components/BbTable.tree.json +14 -1
  132. package/dist/ai/manifest/components/BbTabs.json +9 -6
  133. package/dist/ai/manifest/components/BbTabs.tree.json +1 -1
  134. package/dist/ai/manifest/components/BbTabsList.json +6 -3
  135. package/dist/ai/manifest/components/BbTag.json +19 -16
  136. package/dist/ai/manifest/components/BbTag.tree.json +1 -1
  137. package/dist/ai/manifest/components/BbTextInput.json +6 -3
  138. package/dist/ai/manifest/components/BbTextarea.json +6 -3
  139. package/dist/ai/manifest/components/BbTimePicker.json +1 -1
  140. package/dist/ai/manifest/components/BbTimePickerInput.json +10 -7
  141. package/dist/ai/manifest/components/BbToast.json +7 -2
  142. package/dist/ai/manifest/components/BbToast.tree.json +4 -2
  143. package/dist/ai/manifest/components/BbTooltip.json +6 -5
  144. package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
  145. package/dist/ai/manifest/components/CommonField.json +1 -1
  146. package/dist/ai/manifest/components/OptionsContainer.json +3 -1
  147. package/dist/ai/manifest/components/OptionsContainer.tree.json +38 -0
  148. package/dist/ai/manifest/index.json +3 -3
  149. package/dist/ai/manifest/meta.json +5 -3
  150. package/dist/ai/manifest/types.advanced.json +5 -2
  151. package/dist/ai/manifest/types.api.json +9 -7
  152. package/dist/ai/recipes/inertia/approvals-inbox.md +1 -1
  153. package/dist/ai/recipes/inertia/inline-edit-workspace.md +1 -1
  154. package/dist/ai/recipes/inertia/layout-scaffold.md +19 -6
  155. package/dist/ai/recipes/inertia/ownership-atlas.md +1 -1
  156. package/dist/ai/recipes/inertia/records-workspace.md +50 -14
  157. package/dist/ai/recipes/inertia/upload-center.md +1 -1
  158. package/dist/ai/recipes/nuxt/layout-scaffold.md +19 -6
  159. package/dist/ai/recipes/nuxt/records-workspace.md +42 -12
  160. package/dist/ai/recipes/vue/layout-scaffold.md +19 -6
  161. package/dist/ai/recipes/vue/records-workspace.md +42 -12
  162. package/dist/ai/source/BbAlert.md +94 -76
  163. package/dist/ai/source/BbBadge.md +174 -72
  164. package/dist/ai/source/BbBadgeButton.md +130 -65
  165. package/dist/ai/source/BbBaseButton.md +46 -124
  166. package/dist/ai/source/BbBaseCheckboxIcon.md +38 -0
  167. package/dist/ai/source/BbBaseRadioIcon.md +18 -0
  168. package/dist/ai/source/BbBaseSwitchIcon.md +51 -0
  169. package/dist/ai/source/BbButton.md +153 -36
  170. package/dist/ai/source/BbCheckboxGroup.md +142 -18
  171. package/dist/ai/source/BbColorInput.md +240 -204
  172. package/dist/ai/source/BbColorPalette.md +7 -4
  173. package/dist/ai/source/BbConfirm.md +34 -11
  174. package/dist/ai/source/BbConfirmPortal.md +24 -9
  175. package/dist/ai/source/BbDatePicker.md +11 -7
  176. package/dist/ai/source/BbDatePickerInput.md +306 -269
  177. package/dist/ai/source/BbDialog.md +49 -14
  178. package/dist/ai/source/BbDropdown.md +314 -197
  179. package/dist/ai/source/BbDropdownButton.md +197 -31
  180. package/dist/ai/source/BbDropdownGroup.md +274 -176
  181. package/dist/ai/source/BbForm.md +50 -6
  182. package/dist/ai/source/BbHoverCard.md +12 -5
  183. package/dist/ai/source/BbIcon.md +4 -3
  184. package/dist/ai/source/BbIndicator.md +73 -52
  185. package/dist/ai/source/BbNumberInput.md +293 -257
  186. package/dist/ai/source/BbOffCanvas.md +55 -29
  187. package/dist/ai/source/BbPopover.md +14 -10
  188. package/dist/ai/source/BbRadioGroup.md +413 -297
  189. package/dist/ai/source/BbSelect.md +549 -435
  190. package/dist/ai/source/BbSelectPopover.md +153 -34
  191. package/dist/ai/source/BbSwitchGroup.md +70 -10
  192. package/dist/ai/source/BbTable.md +369 -37
  193. package/dist/ai/source/BbTabs.md +115 -39
  194. package/dist/ai/source/BbTabsList.md +106 -38
  195. package/dist/ai/source/BbTabsPanels.md +96 -36
  196. package/dist/ai/source/BbTabsRoot.md +96 -36
  197. package/dist/ai/source/BbTag.md +267 -233
  198. package/dist/ai/source/BbTextInput.md +261 -225
  199. package/dist/ai/source/BbTextarea.md +251 -215
  200. package/dist/ai/source/BbTimePicker.md +11 -7
  201. package/dist/ai/source/BbTimePickerInput.md +257 -220
  202. package/dist/ai/source/BbToast.md +73 -32
  203. package/dist/ai/source/BbToastPortal.md +65 -30
  204. package/dist/ai/source/BbTooltip.md +148 -113
  205. package/dist/ai/source/CommonPopover.md +6 -1
  206. package/dist/ai/source/FlatListBox.md +19 -9
  207. package/dist/ai/source/GroupedListBox.md +19 -9
  208. package/dist/ai/source/OptionsContainer.md +25 -9
  209. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +61 -36
  210. package/dist/components/BbAlert/types.d.ts +9 -5
  211. package/dist/components/BbAlert/types.js +8 -3
  212. package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +3 -3
  213. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +26 -17
  214. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +103 -50
  215. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +20 -15
  216. package/dist/components/BbBadge/badgeButtonContext.d.ts +12 -1
  217. package/dist/components/BbBadge/types.d.ts +45 -15
  218. package/dist/components/BbBadge/types.js +12 -3
  219. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -126
  220. package/dist/components/BbBaseButton/types.d.ts +23 -4
  221. package/dist/components/BbBaseButton/types.js +7 -1
  222. package/dist/components/BbBaseButton/useLinkState.d.ts +41 -0
  223. package/dist/components/BbBaseButton/useLinkState.js +70 -0
  224. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +130 -74
  225. package/dist/components/BbButton/types.d.ts +50 -13
  226. package/dist/components/BbButton/types.js +10 -3
  227. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +148 -95
  228. package/dist/components/BbCheckboxGroup/types.d.ts +34 -11
  229. package/dist/components/BbCheckboxGroup/types.js +9 -4
  230. package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +1 -1
  231. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +134 -93
  232. package/dist/components/BbColorInput/types.d.ts +11 -4
  233. package/dist/components/BbColorInput/types.js +9 -3
  234. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +82 -59
  235. package/dist/components/BbConfirm/types.d.ts +9 -4
  236. package/dist/components/BbConfirm/types.js +8 -3
  237. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
  238. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +68 -67
  239. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +1 -1
  240. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +259 -215
  241. package/dist/components/BbDatePickerInput/types.d.ts +12 -5
  242. package/dist/components/BbDatePickerInput/types.js +9 -3
  243. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +223 -219
  244. package/dist/components/BbDialog/useDialogStack.d.ts +1 -1
  245. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +104 -89
  246. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +1 -0
  247. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +323 -285
  248. package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +1 -0
  249. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +411 -319
  250. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +100 -98
  251. package/dist/components/BbDropdown/DropdownRow.vue.d.ts +4 -3
  252. package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +49 -28
  253. package/dist/components/BbDropdown/normalizeGroups.d.ts +6 -0
  254. package/dist/components/BbDropdown/normalizeGroups.js +21 -15
  255. package/dist/components/BbDropdown/types.d.ts +59 -12
  256. package/dist/components/BbDropdown/types.js +16 -3
  257. package/dist/components/BbDropdown/useDropdownContext.d.ts +6 -0
  258. package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +2 -1
  259. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +179 -68
  260. package/dist/components/BbDropdownButton/types.d.ts +44 -16
  261. package/dist/components/BbDropdownButton/types.js +28 -3
  262. package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +111 -89
  263. package/dist/components/BbForm/formSchema.d.ts +13 -0
  264. package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +100 -100
  265. package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +40 -25
  266. package/dist/components/BbIndicator/types.d.ts +9 -5
  267. package/dist/components/BbIndicator/types.js +8 -3
  268. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +243 -202
  269. package/dist/components/BbNumberInput/types.d.ts +12 -5
  270. package/dist/components/BbNumberInput/types.js +9 -3
  271. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
  272. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +401 -399
  273. package/dist/components/BbOffCanvas/types.d.ts +6 -2
  274. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +81 -80
  275. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +158 -105
  276. package/dist/components/BbRadioGroup/types.d.ts +21 -7
  277. package/dist/components/BbRadioGroup/types.js +9 -4
  278. package/dist/components/BbSelect/BbSelect.vue.d.ts +4 -3
  279. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +181 -137
  280. package/dist/components/BbSelect/types.d.ts +36 -22
  281. package/dist/components/BbSelect/types.js +22 -3
  282. package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +4 -4
  283. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +600 -577
  284. package/dist/components/BbSelectPopover/knownItems.d.ts +5 -0
  285. package/dist/components/BbSelectPopover/types.d.ts +46 -12
  286. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
  287. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  288. package/dist/components/BbSwitchGroup/types.d.ts +14 -4
  289. package/dist/components/BbSwitchGroup/types.js +8 -3
  290. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1102 -995
  291. package/dist/components/BbTable/estimatedFloors.golden.d.ts +25 -0
  292. package/dist/components/BbTable/measuredFloors.d.ts +46 -0
  293. package/dist/components/BbTable/measuredFloors.js +322 -0
  294. package/dist/components/BbTable/measuredFloorsTestKit.d.ts +27 -0
  295. package/dist/components/BbTable/textRuler.d.ts +71 -0
  296. package/dist/components/BbTable/textRuler.js +121 -0
  297. package/dist/components/BbTable/utils.d.ts +113 -6
  298. package/dist/components/BbTable/utils.js +118 -65
  299. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +53 -35
  300. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +62 -45
  301. package/dist/components/BbTabs/types.d.ts +26 -11
  302. package/dist/components/BbTabs/types.js +23 -8
  303. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +205 -164
  304. package/dist/components/BbTag/types.d.ts +11 -4
  305. package/dist/components/BbTag/types.js +9 -3
  306. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +98 -57
  307. package/dist/components/BbTextInput/types.d.ts +12 -5
  308. package/dist/components/BbTextInput/types.js +9 -3
  309. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +137 -96
  310. package/dist/components/BbTextarea/types.d.ts +12 -5
  311. package/dist/components/BbTextarea/types.js +9 -3
  312. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +105 -104
  313. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +241 -197
  314. package/dist/components/BbTimePickerInput/types.d.ts +12 -5
  315. package/dist/components/BbTimePickerInput/types.js +9 -3
  316. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +74 -32
  317. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +47 -47
  318. package/dist/components/BbToast/types.d.ts +10 -5
  319. package/dist/components/BbToast/types.js +18 -3
  320. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +85 -71
  321. package/dist/components/BbTooltip/types.d.ts +13 -8
  322. package/dist/components/BbTooltip/types.js +8 -3
  323. package/dist/components/CommonField/CommonField.vue.d.ts +1 -1
  324. package/dist/components/CommonPopover/CommonPopover.vue.d.ts +1 -1
  325. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +69 -69
  326. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +53 -50
  327. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +146 -143
  328. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +7 -2
  329. package/dist/components/OptionsContainer/types.d.ts +14 -3
  330. package/dist/composables/useBbConfig.d.ts +1 -0
  331. package/dist/composables/useBbConfig.js +11 -7
  332. package/dist/composables/useBbFormContext.d.ts +4 -3
  333. package/dist/composables/useBbTabsContext.js +99 -85
  334. package/dist/composables/useChoiceIndicator.d.ts +58 -0
  335. package/dist/composables/useChoiceIndicator.js +197 -0
  336. package/dist/composables/useConfirm.d.ts +4 -4
  337. package/dist/composables/usePassthrough.d.ts +54 -1
  338. package/dist/composables/usePassthrough.js +100 -71
  339. package/dist/directives/bbTooltip.d.ts +12 -6
  340. package/dist/directives/createPopoverDirective.js +1 -1
  341. package/dist/index.d.ts +3 -1
  342. package/dist/llms-full.txt +3467 -801
  343. package/dist/llms-medium.txt +71 -53
  344. package/dist/llms.txt +2 -1
  345. package/dist/passthrough-deduper.js +6 -3
  346. package/dist/project-dts.d.ts +24 -0
  347. package/dist/project-dts.js +43 -17
  348. package/dist/styles.css +2 -2
  349. package/dist/types/AlertVariant.d.ts +14 -0
  350. package/dist/types/AlertVariant.js +9 -0
  351. package/dist/types/BadgeVariant.d.ts +14 -0
  352. package/dist/types/BadgeVariant.js +9 -0
  353. package/dist/types/ButtonVariant.d.ts +16 -0
  354. package/dist/types/ButtonVariant.js +11 -0
  355. package/dist/types/CheckboxVariant.d.ts +38 -0
  356. package/dist/types/CheckboxVariant.js +4 -0
  357. package/dist/types/CommonProps.d.ts +4 -3
  358. package/dist/types/Config.d.ts +7 -0
  359. package/dist/types/ConfirmVariant.d.ts +12 -0
  360. package/dist/types/ConfirmVariant.js +4 -0
  361. package/dist/types/DropdownItemVariant.d.ts +12 -0
  362. package/dist/types/DropdownItemVariant.js +4 -0
  363. package/dist/types/IndicatorVariant.d.ts +15 -0
  364. package/dist/types/IndicatorVariant.js +10 -0
  365. package/dist/types/InputVariant.d.ts +13 -0
  366. package/dist/types/InputVariant.js +8 -0
  367. package/dist/types/RadioVariant.d.ts +38 -0
  368. package/dist/types/RadioVariant.js +4 -0
  369. package/dist/types/TabsVariant.d.ts +13 -0
  370. package/dist/types/TabsVariant.js +8 -0
  371. package/dist/types/ToastVariant.d.ts +15 -0
  372. package/dist/types/ToastVariant.js +10 -0
  373. package/dist/types/TooltipVariant.d.ts +12 -0
  374. package/dist/types/TooltipVariant.js +4 -0
  375. package/dist/types/passthrough.d.ts +83 -15
  376. package/dist/types/passthrough.js +2 -2
  377. package/dist/types/ptComponentMap.d.ts +35 -23
  378. package/dist/utilities/functions/extractDomContainer.d.ts +20 -1
  379. package/dist/utilities/functions/extractDomContainer.js +8 -3
  380. package/dist/utils/focusVisibility.d.ts +6 -0
  381. package/dist/utils/focusVisibility.js +4 -1
  382. package/dist/utils/passthroughDeduper.d.ts +14 -0
  383. package/dist/utils/versionCheck.js +1 -1
  384. package/dist/vite-plugin.d.ts +64 -7
  385. package/dist/vite.js +385 -259
  386. package/llms.txt +2 -1
  387. package/package.json +5 -4
  388. package/scripts/lib/adoption-checklist.json +312 -0
  389. package/scripts/lib/eslint-plugin.d.ts +13 -0
  390. package/scripts/lib/eslint-plugin.mjs +75 -11
  391. package/scripts/lib/helpers-add.mjs +26 -2
  392. package/scripts/lib/idiom-scan.mjs +65 -0
  393. package/scripts/lib/mcp-config.mjs +203 -9
  394. package/scripts/lib/migrate-fix.mjs +42 -1
  395. package/scripts/lib/project-variant-dts.mjs +18 -0
  396. package/scripts/lib/validate-bb-markup.mjs +99 -2
@@ -175,6 +175,7 @@ import {
175
175
  formControlPtActive,
176
176
  TEXT_CONTROL_NATIVE_ATTRS,
177
177
  usePassthrough,
178
+ variantPt,
178
179
  } from '@/composables/usePassthrough';
179
180
  import { clamp } from '@/utilities/functions/clamp';
180
181
  import { clampPrecision } from '@/utilities/functions/clampPrecision';
@@ -213,7 +214,11 @@ import {
213
214
  type BbNumberInputSlots,
214
215
  } from './types';
215
216
 
216
- defineOptions({ inheritAttrs: false });
217
+ defineOptions({
218
+ // An app's own variants as declared `pt:<part>:<name>` props (Q76.7).
219
+ mixins: [variantPt(BB_NUMBER_INPUT_PT)],
220
+ inheritAttrs: false,
221
+ });
217
222
  // `min` / `max` / `step` drive the clamp and step math and `aria-valuemin` /
218
223
  // `aria-valuemax` (the SAFE_INTEGER sentinels stay silent), so they are
219
224
  // defaulted here, before anything reads them. `maxPrecision` / `minPrecision`
@@ -278,6 +283,11 @@ const passthrough = usePassthrough({
278
283
  parts: BB_NUMBER_INPUT_PT.parts,
279
284
  states: BB_NUMBER_INPUT_PT.states,
280
285
  active: formControlPtActive(props, () => hasValue.value),
286
+ variant: {
287
+ ...BB_NUMBER_INPUT_PT.variant,
288
+ // CommonFieldInput's default.
289
+ current: () => props.variant ?? 'outline',
290
+ },
281
291
  });
282
292
 
283
293
  const input = ref<HTMLInputElement | null>(null);
@@ -1327,7 +1337,12 @@ watch([symbols, shownMinPrecision, maxPrecision, legacy, affix], () => {
1327
1337
 
1328
1338
  ```ts
1329
1339
  import type { Responsive } from '@/types/ResponsiveSize';
1330
- import type { InputVariantType } from '@/types/InputVariant';
1340
+ import {
1341
+ INPUT_VARIANTS,
1342
+ type InputVariantBuiltIn,
1343
+ type InputVariantRegistry,
1344
+ type InputVariantType,
1345
+ } from '@/types/InputVariant';
1331
1346
  import type { HTMLAttributes, InputHTMLAttributes } from 'vue';
1332
1347
  import type { FieldCrossAlign, FieldLayout } from '@/types/FieldLayout';
1333
1348
  import type { IconType } from '@/types/Icon';
@@ -1338,6 +1353,7 @@ import {
1338
1353
  type PtMap,
1339
1354
  type PtValue,
1340
1355
  type TextControlPtPart,
1356
+ type PtVariantAttrs,
1341
1357
  } from '@/types/passthrough';
1342
1358
  import type { FormFieldProps } from '@/composables/useFormBinding';
1343
1359
  import type { CommonFieldAsteriskSlotProps } from '../CommonField/types';
@@ -1358,7 +1374,19 @@ export type BbNumberInputPtState = FormControlPtState;
1358
1374
  export const BB_NUMBER_INPUT_PT = {
1359
1375
  parts: TEXT_CONTROL_PT_PARTS,
1360
1376
  states: FORM_CONTROL_PT_STATES,
1377
+ // The input `variant` is a state on the field's parts (Q76.7), below
1378
+ // the real states; a picker's panel and rows are not the field's.
1379
+ variant: {
1380
+ names: INPUT_VARIANTS,
1381
+ option: 'inputVariants',
1382
+ parts: TEXT_CONTROL_PT_PARTS,
1383
+ },
1361
1384
  } as const satisfies {
1385
+ variant: {
1386
+ names: readonly InputVariantBuiltIn[];
1387
+ option: string;
1388
+ parts: readonly TextControlPtPart[];
1389
+ };
1362
1390
  parts: readonly BbNumberInputPtPart[];
1363
1391
  states: readonly BbNumberInputPtState[];
1364
1392
  };
@@ -1431,261 +1459,269 @@ export type BbNumberUnit = BbNumberSimpleUnit | `${string}-per-${string}`;
1431
1459
  export type BbNumberInputProps = {
1432
1460
  [K in
1433
1461
  | `pt:${BbNumberInputPtPart}`
1434
- | `pt:${BbNumberInputPtPart}:${BbNumberInputPtState}`]?: PtValue;
1435
- } & {
1436
- /**
1437
- * Passthrough, object form: `{ box: '…', 'box:errors': '…' }` — the same
1438
- * keys as the `pt:*` attributes without the prefix. See the `pt:<part>` row.
1439
- */
1440
- pt?: PtMap<BbNumberInputPtPart, BbNumberInputPtState>;
1441
- /**
1442
- * Name of the icon to be added at the end of the input.
1443
- */
1444
-
1445
- 'append:icon'?: IconType;
1446
- /**
1447
- * Guides the browser as to the type of information expected in the field.
1448
- *
1449
- * @defaultValue `'off'`
1450
- */
1451
- autocomplete?: InputHTMLAttributes['autocomplete'];
1452
-
1453
- /**
1454
- * Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.
1455
- */
1456
- autofocus?: InputHTMLAttributes['autofocus'];
1457
-
1458
- /**
1459
- * Displays a clear button when the input has a value and is being interacted with.
1460
- */
1461
- clearable?: boolean;
1462
-
1463
- /**
1464
- * Compact density: the field uses the `-compact` twins of `--bb-input-h`,
1465
- * `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on
1466
- * the component is ignored while it is on. Size a compact field with
1467
- * `--bb-input-h-compact` (and `--bb-input-py-compact`).
1468
- */
1469
- compact?: boolean;
1470
-
1471
- /**
1472
- * An ISO 4217 code (`'EUR'`): the amount shows the locale's way, symbol
1473
- * inside the text (`1.234,56 €`), leaving `#prefix` / `#suffix` free; the
1474
- * model is the number. Decimals default to the currency's; `minPrecision` /
1475
- * `maxPrecision` win. Not with `unit`.
1476
- */
1477
- currency?: string;
1478
-
1479
- /**
1480
- * The field box's look, with `BbButton`'s names and tokens. Colours only,
1481
- * so a form never reflows; `'ghost'` has no border in any state, `'none'`
1482
- * no look at all (you own hover, focus and the states). Register more with
1483
- * the plugin's `inputVariants`.
1484
- *
1485
- * @defaultValue `'outline'`
1486
- */
1487
- variant?: InputVariantType;
1488
-
1489
- /**
1490
- * Text between the label and the input. Unlike the hint it is always
1491
- * visible; it joins the input's `aria-describedby` after any `errors` /
1492
- * `warnings`, before the `hint`.
1493
- */
1494
- description?: string;
1495
-
1496
- /**
1497
- * How label and input sit together: `'vertical'`, `'horizontal'` (50/50),
1498
- * `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a
1499
- * per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).
1500
- */
1501
- layout?: Responsive<FieldLayout>;
1502
-
1503
- /**
1504
- * Vertical position of the label block in a side-by-side row; not
1505
- * `labelPosition`, the horizontal one. Omitted, the label's first line
1506
- * meets the control's.
1507
- */
1508
- labelAlign?: FieldCrossAlign;
1509
-
1510
- /**
1511
- * Vertical position of the control in a side-by-side row; not
1512
- * `inputPosition`, the horizontal one. Omitted, the control's first line
1513
- * meets the label's.
1514
- */
1515
- inputAlign?: FieldCrossAlign;
1516
-
1517
- /**
1518
- * Disables the component.
1519
- */
1520
- disabled?: boolean;
1521
-
1522
- /**
1523
- * Error messages under the field, a string or array, in an
1524
- * `aria-live="polite"` region and first in the control's
1525
- * `aria-describedby`, so they are re-read when it regains focus.
1526
- */
1527
- errors?: string | string[];
1528
-
1529
- /**
1530
- * Define if the component should be in an error state.
1531
- * It usually attaches a CSS class for styling purposes.
1532
- */
1533
- hasErrors?: boolean;
1534
-
1535
- /**
1536
- * Warning messages under the field, a string or array: amber, in their own
1537
- * `aria-live` region and in the control's `aria-describedby` after the
1538
- * errors. Non-empty turns on the warning state; errors win when both are
1539
- * set.
1540
- */
1541
- warnings?: string | string[];
1542
-
1543
- /**
1544
- * Define if the component should be in a warning state.
1545
- * Same chrome as errors with `--bb-warn`; errors take priority.
1546
- */
1547
- hasWarnings?: boolean;
1548
-
1549
- /**
1550
- * Visually hides the label of the input while maintaining accessibility.
1551
- */
1552
- hideLabel?: boolean;
1553
-
1554
- /**
1555
- * Text box to be displayed near the input, usually to indicate instructions.
1556
- */
1557
- hint?: string;
1558
-
1559
- /**
1560
- * The `id` of the native control; the label's `for` and the description
1561
- * and message ids derive from it. Generated when omitted.
1562
- */
1563
- id?: HTMLAttributes['id'];
1564
-
1565
- /**
1566
- * Text content of the label of the element.
1567
- */
1568
- label: string;
1569
-
1570
- /**
1571
- * Sets the text alignment of the label.
1572
- */
1573
- labelPosition?: 'left' | 'center' | 'right';
1574
-
1575
- /**
1576
- * Label rendering mode.
1577
- */
1578
- labelMode?: 'outside' | 'floating' | 'inside';
1579
-
1580
- /**
1581
- * Sets the component in a loading state, usually triggering some visual styles.
1582
- */
1583
- loading?: boolean;
1584
-
1585
- /**
1586
- * Maximum value cap.
1587
- *
1588
- * @defaultValue `Number.MAX_SAFE_INTEGER`
1589
- */
1590
- max?: number;
1591
-
1592
- /**
1593
- * Maximum precision of the number: fraction digits past it are refused as
1594
- * typed (never rounded). With `currency`, the currency's own digits (`2`
1595
- * for EUR, `0` for JPY, `3` for KWD), or `minPrecision` when that is larger.
1596
- *
1597
- * @defaultValue `8`
1598
- */
1599
- maxPrecision?: number;
1600
-
1601
- /**
1602
- * Fraction digits always shown (`2`: `1` shows `1,00`), also while typing,
1603
- * where the padding zeros are placeholders; the model stays the number.
1604
- * Above `maxPrecision` it gives way. Applies with `disableFormatting` too.
1605
- * With `currency`: the currency's own digits.
1606
- *
1607
- * @defaultValue `0`
1608
- */
1609
- minPrecision?: number;
1610
-
1611
- /**
1612
- * Shows the number as typed (period decimal, no grouping), with `name` on
1613
- * the visible input. Without it the field formats the locale's way while
1614
- * typing (`10.005,6`) and posts the raw value (`10005.6`) through a hidden
1615
- * input carrying `name`.
1616
- *
1617
- * @defaultValue `false`
1618
- */
1619
- disableFormatting?: boolean;
1620
-
1621
- /**
1622
- * Minimum value cap. Applied on blur and on Enter (before a surrounding
1623
- * form submits), not while typing, so a value above a `min` greater than 1
1624
- * can be typed digit by digit.
1625
- *
1626
- * @defaultValue `Number.MIN_SAFE_INTEGER`
1627
- */
1628
- min?: number;
1629
-
1630
- /**
1631
- * Used by v-model.
1632
- *
1633
- * @defaultValue `null`
1634
- */
1635
- modelValue?: number | string | null;
1636
-
1637
- /**
1638
- * Defines the name of the input.
1639
- */
1640
- name?: InputHTMLAttributes['name'];
1641
-
1642
- /**
1643
- * Keeps the hint displayed.
1644
- */
1645
- persistentHint?: boolean;
1646
-
1647
- /**
1648
- * Text shown while the field is empty.
1649
- */
1650
- placeholder?: InputHTMLAttributes['placeholder'];
1651
-
1652
- /**
1653
- * Name of the icon to be added at the start of the input.
1654
- */
1655
-
1656
- 'prepend:icon'?: IconType;
1657
-
1658
- /**
1659
- * Sets the input in a readonly state.
1660
- */
1661
- readonly?: boolean;
1662
-
1663
- /**
1664
- * Marks the input required (asterisk, aria-required, native validation in a plain form). Inside a BbForm it is not enforced; use rules="required" or the schema.
1665
- */
1666
- required?: boolean;
1667
-
1668
- /**
1669
- * Reverses the layout. Applicable in every direction the order of the label and the input is swapped.
1670
- */
1671
- reverse?: boolean;
1672
-
1673
- /**
1674
- * Incremental unit used by ArrowUp / ArrowDown and by the `increase` and `decrease` functions the slots receive.
1675
- * It is NOT applied to manual input as a step of 5 would prevent the user from inserting a value like `115` because of rounding down.
1676
- *
1677
- * @defaultValue `1`
1678
- */
1679
- step?: number;
1680
-
1681
- /**
1682
- * A unit `Intl.NumberFormat` knows (`'kilogram'`, `'celsius'`,
1683
- * `'percent'`), shown the locale's way inside the text (`20 kg`). The model
1684
- * is the number you see: `percent` showing `15 %` holds `15`. Not with
1685
- * `currency` (which wins).
1686
- */
1687
- unit?: BbNumberUnit;
1688
- } & FormFieldProps<number | string | null>;
1462
+ | `pt:${BbNumberInputPtPart}:${BbNumberInputPtState}`
1463
+ | `pt:${TextControlPtPart}:${InputVariantBuiltIn}`]?: PtValue;
1464
+ } & /* @vue-ignore */ PtVariantAttrs<
1465
+ TextControlPtPart,
1466
+ keyof InputVariantRegistry
1467
+ > & {
1468
+ /**
1469
+ * Passthrough, object form: `{ box: '…', 'box:errors': '…' }` — the same
1470
+ * keys as the `pt:*` attributes without the prefix. See the `pt:<part>` row.
1471
+ */
1472
+ /* eslint-disable @typescript-eslint/consistent-indexed-object-style -- mapped, never Record (T23) */
1473
+ pt?: PtMap<BbNumberInputPtPart, BbNumberInputPtState> & {
1474
+ [K in `${TextControlPtPart}:${InputVariantBuiltIn | keyof InputVariantRegistry}`]?: PtValue;
1475
+ };
1476
+ /* eslint-enable @typescript-eslint/consistent-indexed-object-style */
1477
+ /**
1478
+ * Name of the icon to be added at the end of the input.
1479
+ */
1480
+
1481
+ 'append:icon'?: IconType;
1482
+ /**
1483
+ * Guides the browser as to the type of information expected in the field.
1484
+ *
1485
+ * @defaultValue `'off'`
1486
+ */
1487
+ autocomplete?: InputHTMLAttributes['autocomplete'];
1488
+
1489
+ /**
1490
+ * Focuses the field when it mounts (a dialog already open included), unless the user is typing in another field.
1491
+ */
1492
+ autofocus?: InputHTMLAttributes['autofocus'];
1493
+
1494
+ /**
1495
+ * Displays a clear button when the input has a value and is being interacted with.
1496
+ */
1497
+ clearable?: boolean;
1498
+
1499
+ /**
1500
+ * Compact density: the field uses the `-compact` twins of `--bb-input-h`,
1501
+ * `--bb-input-py` and `--bb-label-spacing-y`, so a `--bb-input-h` set on
1502
+ * the component is ignored while it is on. Size a compact field with
1503
+ * `--bb-input-h-compact` (and `--bb-input-py-compact`).
1504
+ */
1505
+ compact?: boolean;
1506
+
1507
+ /**
1508
+ * An ISO 4217 code (`'EUR'`): the amount shows the locale's way, symbol
1509
+ * inside the text (`1.234,56 €`), leaving `#prefix` / `#suffix` free; the
1510
+ * model is the number. Decimals default to the currency's; `minPrecision` /
1511
+ * `maxPrecision` win. Not with `unit`.
1512
+ */
1513
+ currency?: string;
1514
+
1515
+ /**
1516
+ * The field box's look, with `BbButton`'s names and tokens. Colours only,
1517
+ * so a form never reflows; `'ghost'` has no border in any state, `'none'`
1518
+ * no look at all (you own hover, focus and the states). Register more with
1519
+ * the plugin's `inputVariants`.
1520
+ *
1521
+ * @defaultValue `'outline'`
1522
+ */
1523
+ variant?: InputVariantType;
1524
+
1525
+ /**
1526
+ * Text between the label and the input. Unlike the hint it is always
1527
+ * visible; it joins the input's `aria-describedby` after any `errors` /
1528
+ * `warnings`, before the `hint`.
1529
+ */
1530
+ description?: string;
1531
+
1532
+ /**
1533
+ * How label and input sit together: `'vertical'`, `'horizontal'` (50/50),
1534
+ * `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a
1535
+ * per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`).
1536
+ */
1537
+ layout?: Responsive<FieldLayout>;
1538
+
1539
+ /**
1540
+ * Vertical position of the label block in a side-by-side row; not
1541
+ * `labelPosition`, the horizontal one. Omitted, the label's first line
1542
+ * meets the control's.
1543
+ */
1544
+ labelAlign?: FieldCrossAlign;
1545
+
1546
+ /**
1547
+ * Vertical position of the control in a side-by-side row; not
1548
+ * `inputPosition`, the horizontal one. Omitted, the control's first line
1549
+ * meets the label's.
1550
+ */
1551
+ inputAlign?: FieldCrossAlign;
1552
+
1553
+ /**
1554
+ * Disables the component.
1555
+ */
1556
+ disabled?: boolean;
1557
+
1558
+ /**
1559
+ * Error messages under the field, a string or array, in an
1560
+ * `aria-live="polite"` region and first in the control's
1561
+ * `aria-describedby`, so they are re-read when it regains focus.
1562
+ */
1563
+ errors?: string | string[];
1564
+
1565
+ /**
1566
+ * Define if the component should be in an error state.
1567
+ * It usually attaches a CSS class for styling purposes.
1568
+ */
1569
+ hasErrors?: boolean;
1570
+
1571
+ /**
1572
+ * Warning messages under the field, a string or array: amber, in their own
1573
+ * `aria-live` region and in the control's `aria-describedby` after the
1574
+ * errors. Non-empty turns on the warning state; errors win when both are
1575
+ * set.
1576
+ */
1577
+ warnings?: string | string[];
1578
+
1579
+ /**
1580
+ * Define if the component should be in a warning state.
1581
+ * Same chrome as errors with `--bb-warn`; errors take priority.
1582
+ */
1583
+ hasWarnings?: boolean;
1584
+
1585
+ /**
1586
+ * Visually hides the label of the input while maintaining accessibility.
1587
+ */
1588
+ hideLabel?: boolean;
1589
+
1590
+ /**
1591
+ * Text box to be displayed near the input, usually to indicate instructions.
1592
+ */
1593
+ hint?: string;
1594
+
1595
+ /**
1596
+ * The `id` of the native control; the label's `for` and the description
1597
+ * and message ids derive from it. Generated when omitted.
1598
+ */
1599
+ id?: HTMLAttributes['id'];
1600
+
1601
+ /**
1602
+ * Text content of the label of the element.
1603
+ */
1604
+ label: string;
1605
+
1606
+ /**
1607
+ * Sets the text alignment of the label.
1608
+ */
1609
+ labelPosition?: 'left' | 'center' | 'right';
1610
+
1611
+ /**
1612
+ * Label rendering mode.
1613
+ */
1614
+ labelMode?: 'outside' | 'floating' | 'inside';
1615
+
1616
+ /**
1617
+ * Sets the component in a loading state, usually triggering some visual styles.
1618
+ */
1619
+ loading?: boolean;
1620
+
1621
+ /**
1622
+ * Maximum value cap.
1623
+ *
1624
+ * @defaultValue `Number.MAX_SAFE_INTEGER`
1625
+ */
1626
+ max?: number;
1627
+
1628
+ /**
1629
+ * Maximum precision of the number: fraction digits past it are refused as
1630
+ * typed (never rounded). With `currency`, the currency's own digits (`2`
1631
+ * for EUR, `0` for JPY, `3` for KWD), or `minPrecision` when that is larger.
1632
+ *
1633
+ * @defaultValue `8`
1634
+ */
1635
+ maxPrecision?: number;
1636
+
1637
+ /**
1638
+ * Fraction digits always shown (`2`: `1` shows `1,00`), also while typing,
1639
+ * where the padding zeros are placeholders; the model stays the number.
1640
+ * Above `maxPrecision` it gives way. Applies with `disableFormatting` too.
1641
+ * With `currency`: the currency's own digits.
1642
+ *
1643
+ * @defaultValue `0`
1644
+ */
1645
+ minPrecision?: number;
1646
+
1647
+ /**
1648
+ * Shows the number as typed (period decimal, no grouping), with `name` on
1649
+ * the visible input. Without it the field formats the locale's way while
1650
+ * typing (`10.005,6`) and posts the raw value (`10005.6`) through a hidden
1651
+ * input carrying `name`.
1652
+ *
1653
+ * @defaultValue `false`
1654
+ */
1655
+ disableFormatting?: boolean;
1656
+
1657
+ /**
1658
+ * Minimum value cap. Applied on blur and on Enter (before a surrounding
1659
+ * form submits), not while typing, so a value above a `min` greater than 1
1660
+ * can be typed digit by digit.
1661
+ *
1662
+ * @defaultValue `Number.MIN_SAFE_INTEGER`
1663
+ */
1664
+ min?: number;
1665
+
1666
+ /**
1667
+ * Used by v-model.
1668
+ *
1669
+ * @defaultValue `null`
1670
+ */
1671
+ modelValue?: number | string | null;
1672
+
1673
+ /**
1674
+ * Defines the name of the input.
1675
+ */
1676
+ name?: InputHTMLAttributes['name'];
1677
+
1678
+ /**
1679
+ * Keeps the hint displayed.
1680
+ */
1681
+ persistentHint?: boolean;
1682
+
1683
+ /**
1684
+ * Text shown while the field is empty.
1685
+ */
1686
+ placeholder?: InputHTMLAttributes['placeholder'];
1687
+
1688
+ /**
1689
+ * Name of the icon to be added at the start of the input.
1690
+ */
1691
+
1692
+ 'prepend:icon'?: IconType;
1693
+
1694
+ /**
1695
+ * Sets the input in a readonly state.
1696
+ */
1697
+ readonly?: boolean;
1698
+
1699
+ /**
1700
+ * Marks the input required (asterisk, aria-required, native validation in a plain form). Inside a BbForm it is not enforced; use rules="required" or the schema.
1701
+ */
1702
+ required?: boolean;
1703
+
1704
+ /**
1705
+ * Reverses the layout. Applicable in every direction the order of the label and the input is swapped.
1706
+ */
1707
+ reverse?: boolean;
1708
+
1709
+ /**
1710
+ * Incremental unit used by ArrowUp / ArrowDown and by the `increase` and `decrease` functions the slots receive.
1711
+ * It is NOT applied to manual input as a step of 5 would prevent the user from inserting a value like `115` because of rounding down.
1712
+ *
1713
+ * @defaultValue `1`
1714
+ */
1715
+ step?: number;
1716
+
1717
+ /**
1718
+ * A unit `Intl.NumberFormat` knows (`'kilogram'`, `'celsius'`,
1719
+ * `'percent'`), shown the locale's way inside the text (`20 kg`). The model
1720
+ * is the number you see: `percent` showing `15 %` holds `15`. Not with
1721
+ * `currency` (which wins).
1722
+ */
1723
+ unit?: BbNumberUnit;
1724
+ } & FormFieldProps<number | string | null>;
1689
1725
 
1690
1726
  export type BbNumberInputEvents = {
1691
1727
  /**