bitboss-ui 3.0.0-beta.2 → 3.0.0-beta.20

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 (337) hide show
  1. package/README.md +72 -33
  2. package/dist/ai/BbAccordion.md +3 -3
  3. package/dist/ai/BbAlert.md +9 -5
  4. package/dist/ai/BbAsterisk.md +17 -0
  5. package/dist/ai/BbAvatar.md +12 -3
  6. package/dist/ai/BbBadge.md +15 -10
  7. package/dist/ai/BbBadgeButton.md +16 -16
  8. package/dist/ai/BbBaseButton.md +16 -16
  9. package/dist/ai/BbBaseCheckbox.md +8 -8
  10. package/dist/ai/BbBaseCheckboxGroup.md +13 -13
  11. package/dist/ai/BbBaseCheckboxIcon.md +26 -9
  12. package/dist/ai/BbBaseColorInput.md +11 -11
  13. package/dist/ai/BbBaseDatePicker.md +6 -6
  14. package/dist/ai/BbBaseDatePickerInput.md +15 -15
  15. package/dist/ai/BbBaseInputContainer.md +12 -12
  16. package/dist/ai/BbBaseNumberInput.md +8 -8
  17. package/dist/ai/BbBaseRadio.md +5 -5
  18. package/dist/ai/BbBaseRadioGroup.md +7 -7
  19. package/dist/ai/BbBaseRadioIcon.md +25 -9
  20. package/dist/ai/BbBaseRating.md +5 -5
  21. package/dist/ai/BbBaseSelect.md +22 -21
  22. package/dist/ai/BbBaseSlider.md +9 -9
  23. package/dist/ai/BbBaseSwitch.md +8 -8
  24. package/dist/ai/BbBaseSwitchGroup.md +13 -13
  25. package/dist/ai/BbBaseSwitchIcon.md +28 -10
  26. package/dist/ai/BbBaseTag.md +10 -10
  27. package/dist/ai/BbBaseTextInput.md +9 -9
  28. package/dist/ai/BbBaseTextarea.md +9 -9
  29. package/dist/ai/BbBaseTimePickerInput.md +13 -13
  30. package/dist/ai/BbBreadcrumbs.md +2 -2
  31. package/dist/ai/BbButton.md +15 -15
  32. package/dist/ai/BbCheckbox.md +18 -17
  33. package/dist/ai/BbCheckboxGroup.md +15 -14
  34. package/dist/ai/BbCollapsible.md +11 -9
  35. package/dist/ai/BbColorInput.md +15 -15
  36. package/dist/ai/BbColorPalette.md +12 -6
  37. package/dist/ai/BbConfirm.md +12 -5
  38. package/dist/ai/BbDatePicker.md +13 -13
  39. package/dist/ai/BbDatePickerInput.md +20 -20
  40. package/dist/ai/BbDialog.md +78 -12
  41. package/dist/ai/BbDropdown.md +132 -22
  42. package/dist/ai/BbDropdownButton.md +12 -12
  43. package/dist/ai/BbDropdownGroup.md +1 -1
  44. package/dist/ai/BbDropzone.md +4 -4
  45. package/dist/ai/BbForm.md +49 -14
  46. package/dist/ai/BbIcon.md +6 -0
  47. package/dist/ai/BbIndicator.md +5 -5
  48. package/dist/ai/BbNumberInput.md +11 -11
  49. package/dist/ai/BbOffCanvas.md +90 -20
  50. package/dist/ai/BbPagination.md +3 -3
  51. package/dist/ai/BbPopover.md +32 -17
  52. package/dist/ai/BbProgress.md +7 -4
  53. package/dist/ai/BbRadio.md +16 -15
  54. package/dist/ai/BbRadioGroup.md +20 -17
  55. package/dist/ai/BbRating.md +11 -11
  56. package/dist/ai/BbSelect.md +138 -37
  57. package/dist/ai/BbSelectPopover.md +40 -41
  58. package/dist/ai/BbSlider.md +37 -22
  59. package/dist/ai/BbSmoothHeight.md +1 -1
  60. package/dist/ai/BbSwitch.md +25 -10
  61. package/dist/ai/BbSwitchGroup.md +17 -14
  62. package/dist/ai/BbTable.md +791 -88
  63. package/dist/ai/BbTabs.md +28 -14
  64. package/dist/ai/BbTabsList.md +1 -1
  65. package/dist/ai/BbTabsPanes.md +1 -1
  66. package/dist/ai/BbTabsRoot.md +10 -10
  67. package/dist/ai/BbTag.md +14 -14
  68. package/dist/ai/BbTextInput.md +16 -15
  69. package/dist/ai/BbTextarea.md +13 -13
  70. package/dist/ai/BbTimePicker.md +10 -10
  71. package/dist/ai/BbTimePickerInput.md +17 -17
  72. package/dist/ai/BbToast.md +1 -1
  73. package/dist/ai/BbToastPortal.md +1 -1
  74. package/dist/ai/BbTooltip.md +12 -10
  75. package/dist/ai/BbTree.md +1 -1
  76. package/dist/ai/ChipsBox.md +1 -1
  77. package/dist/ai/CommonInputWrapper.md +10 -10
  78. package/dist/ai/CommonPopover.md +6 -6
  79. package/dist/ai/FlatListBox.md +5 -5
  80. package/dist/ai/GroupedListBox.md +5 -5
  81. package/dist/ai/ListBox.md +4 -4
  82. package/dist/ai/OptionsContainer.md +4 -4
  83. package/dist/ai/changelog.json +110 -2
  84. package/dist/ai/components.json +882 -90
  85. package/dist/ai/composables/useBbConfig.md +72 -11
  86. package/dist/ai/composables/useConfirm.md +5 -3
  87. package/dist/ai/guides/ai-router.md +9 -4
  88. package/dist/ai/guides/component-picker.md +2 -2
  89. package/dist/ai/guides/design-language.md +14 -14
  90. package/dist/ai/guides/design-tokens.md +25 -18
  91. package/dist/ai/guides/fetch-items-playbook.md +1 -1
  92. package/dist/ai/guides/icons-policy.md +4 -2
  93. package/dist/ai/guides/installation-and-plugin-setup.md +74 -9
  94. package/dist/ai/guides/migration/components/bb-checkbox-group.md +30 -0
  95. package/dist/ai/guides/migration/components/bb-checkbox.md +37 -3
  96. package/dist/ai/guides/migration/components/bb-collapsible.md +5 -5
  97. package/dist/ai/guides/migration/components/bb-dialog.md +62 -34
  98. package/dist/ai/guides/migration/components/bb-offcanvas.md +29 -13
  99. package/dist/ai/guides/migration/components/bb-rating.md +8 -2
  100. package/dist/ai/guides/migration/components/bb-select.md +5 -2
  101. package/dist/ai/guides/migration/components/bb-table.md +446 -28
  102. package/dist/ai/guides/migration/components/bb-text-input.md +6 -6
  103. package/dist/ai/guides/migration/v2-to-v3.md +260 -89
  104. package/dist/ai/guides/ssr-prefill.md +120 -0
  105. package/dist/ai/index.md +10 -9
  106. package/dist/ai/recipes/inertia/layout-scaffold.md +5 -1
  107. package/dist/ai/recipes/inertia/ownership-atlas.md +41 -20
  108. package/dist/ai/recipes/inertia/records-workspace.md +26 -7
  109. package/dist/ai/recipes/nuxt/layout-scaffold.md +5 -1
  110. package/dist/ai/recipes/nuxt/records-workspace.md +26 -7
  111. package/dist/ai/recipes/vue/layout-scaffold.md +5 -1
  112. package/dist/ai/recipes/vue/records-workspace.md +26 -7
  113. package/dist/ai/source/BbAlert.md +60 -2
  114. package/dist/ai/source/BbAvatar.md +3 -3
  115. package/dist/ai/source/BbBadge.md +60 -15
  116. package/dist/ai/source/BbBadgeButton.md +8 -2
  117. package/dist/ai/source/BbBaseButton.md +3 -1
  118. package/dist/ai/source/BbBaseCheckboxGroup.md +6 -2
  119. package/dist/ai/source/BbBaseDatePicker.md +3 -1
  120. package/dist/ai/source/BbBaseDatePickerInput.md +5 -1
  121. package/dist/ai/source/BbBaseInputContainer.md +52 -1
  122. package/dist/ai/source/BbBaseRadioGroup.md +4 -0
  123. package/dist/ai/source/BbBaseRating.md +3 -1
  124. package/dist/ai/source/BbBaseSelect.md +71 -16
  125. package/dist/ai/source/BbBaseSwitchGroup.md +4 -0
  126. package/dist/ai/source/BbBaseTimePickerInput.md +5 -1
  127. package/dist/ai/source/BbBreadcrumbs.md +31 -0
  128. package/dist/ai/source/BbButton.md +51 -24
  129. package/dist/ai/source/BbCheckbox.md +15 -1
  130. package/dist/ai/source/BbCheckboxGroup.md +2 -1
  131. package/dist/ai/source/BbCollapsible.md +7 -1
  132. package/dist/ai/source/BbColorInput.md +3 -4
  133. package/dist/ai/source/BbColorPalette.md +3 -4
  134. package/dist/ai/source/BbDatePicker.md +5 -1
  135. package/dist/ai/source/BbDatePickerInput.md +5 -1
  136. package/dist/ai/source/BbDialog.md +175 -19
  137. package/dist/ai/source/BbDropdown.md +376 -69
  138. package/dist/ai/source/BbDropdownGroup.md +330 -59
  139. package/dist/ai/source/BbForm.md +93 -5
  140. package/dist/ai/source/BbIcon.md +46 -36
  141. package/dist/ai/source/BbNumberInput.md +3 -4
  142. package/dist/ai/source/BbOffCanvas.md +474 -194
  143. package/dist/ai/source/BbPopover.md +24 -17
  144. package/dist/ai/source/BbProgress.md +2 -2
  145. package/dist/ai/source/BbRadio.md +15 -1
  146. package/dist/ai/source/BbRadioGroup.md +3 -1
  147. package/dist/ai/source/BbSelect.md +50 -2
  148. package/dist/ai/source/BbSelectPopover.md +171 -23
  149. package/dist/ai/source/BbSlider.md +3 -4
  150. package/dist/ai/source/BbSwitch.md +15 -1
  151. package/dist/ai/source/BbSwitchGroup.md +8 -5
  152. package/dist/ai/source/BbTable.md +4642 -1387
  153. package/dist/ai/source/BbTabs.md +6 -7
  154. package/dist/ai/source/BbTabsList.md +6 -7
  155. package/dist/ai/source/BbTabsPanes.md +6 -7
  156. package/dist/ai/source/BbTabsRoot.md +6 -7
  157. package/dist/ai/source/BbTag.md +3 -4
  158. package/dist/ai/source/BbTextInput.md +3 -4
  159. package/dist/ai/source/BbTextarea.md +3 -4
  160. package/dist/ai/source/BbTimePicker.md +4 -1
  161. package/dist/ai/source/BbTimePickerInput.md +5 -1
  162. package/dist/ai/source/BbToast.md +3 -1
  163. package/dist/ai/source/BbTooltip.md +5 -1
  164. package/dist/ai/source/CommonInputWrapper.md +4 -0
  165. package/dist/ai/source/CommonPopover.md +6 -0
  166. package/dist/ai/source/FlatListBox.md +11 -5
  167. package/dist/ai/source/GroupedListBox.md +7 -5
  168. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +4 -4
  169. package/dist/components/BbAlert/types.d.ts +10 -1
  170. package/dist/components/BbAvatar/BbAvatar.vue.d.ts +1 -1
  171. package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +33 -33
  172. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +22 -16
  173. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +36 -15
  174. package/dist/components/BbBadge/badgeButtonContext.d.ts +21 -8
  175. package/dist/components/BbBadge/types.d.ts +8 -2
  176. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +47 -47
  177. package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +14 -14
  178. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +30 -28
  179. package/dist/components/BbBaseCheckboxGroup/types.d.ts +2 -2
  180. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +167 -167
  181. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +9 -9
  182. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +78 -78
  183. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +64 -64
  184. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +1 -1
  185. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +138 -138
  186. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +2 -2
  187. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +24 -22
  188. package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +40 -40
  189. package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +74 -65
  190. package/dist/components/BbBaseSelect/types.d.ts +22 -0
  191. package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +5 -5
  192. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +30 -28
  193. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +1 -1
  194. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +104 -104
  195. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +35 -35
  196. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +85 -81
  197. package/dist/components/BbCheckboxGroup/types.d.ts +2 -1
  198. package/dist/components/BbCollapsible/types.d.ts +7 -1
  199. package/dist/components/BbColorInput/BbColorInput.vue.d.ts +1 -1
  200. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +18 -18
  201. package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +2 -2
  202. package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +50 -50
  203. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +17 -17
  204. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
  205. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +100 -100
  206. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +21 -21
  207. package/dist/components/BbDialog/BbDialog.vue.d.ts +1 -1
  208. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +133 -107
  209. package/dist/components/BbDialog/types.d.ts +29 -2
  210. package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +2 -0
  211. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +99 -100
  212. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +2 -2
  213. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +208 -201
  214. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +225 -208
  215. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +21 -21
  216. package/dist/components/BbDropdown/types.d.ts +20 -5
  217. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +5 -5
  218. package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +46 -46
  219. package/dist/components/BbIcon/iconCache.d.ts +33 -0
  220. package/dist/components/BbIcon/iconCache.js +17 -0
  221. package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +1 -1
  222. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +15 -15
  223. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
  224. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +254 -208
  225. package/dist/components/BbOffCanvas/types.d.ts +30 -5
  226. package/dist/components/BbPagination/BbPagination.vue.d.ts +1 -1
  227. package/dist/components/BbPopover/BbPopover.vue.d.ts +2 -2
  228. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +149 -146
  229. package/dist/components/BbPopover/types.d.ts +3 -2
  230. package/dist/components/BbRadioGroup/types.d.ts +3 -1
  231. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +27 -23
  232. package/dist/components/BbSelect/types.d.ts +32 -0
  233. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +221 -213
  234. package/dist/components/BbSlider/BbSlider.vue.d.ts +1 -1
  235. package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +20 -20
  236. package/dist/components/BbTable/BbTable.vue.d.ts +8 -4
  237. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1319 -616
  238. package/dist/components/BbTable/BbTableDataRow.d.ts +162 -0
  239. package/dist/components/BbTable/BbTableDataRow.js +136 -0
  240. package/dist/components/BbTable/BbTableExpandRow.d.ts +73 -0
  241. package/dist/components/BbTable/BbTableExpandRow.js +52 -0
  242. package/dist/components/BbTable/types.d.ts +247 -86
  243. package/dist/components/BbTable/utils.d.ts +87 -4
  244. package/dist/components/BbTable/utils.js +71 -36
  245. package/dist/components/BbTabs/types.d.ts +0 -8
  246. package/dist/components/BbTag/BbTag.vue.d.ts +1 -1
  247. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +18 -18
  248. package/dist/components/BbTextInput/BbTextInput.vue.d.ts +1 -1
  249. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +18 -18
  250. package/dist/components/BbTextarea/BbTextarea.vue.d.ts +1 -1
  251. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +54 -54
  252. package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +1 -1
  253. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +80 -80
  254. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +61 -61
  255. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +17 -17
  256. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +13 -13
  257. package/dist/components/BbTooltip/types.d.ts +5 -1
  258. package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +17 -17
  259. package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +5 -5
  260. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +2 -1
  261. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +83 -83
  262. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +56 -56
  263. package/dist/composables/useBaseOptions.js +30 -20
  264. package/dist/composables/useBbConfig.d.ts +27 -6
  265. package/dist/composables/useBbConfig.js +8 -2
  266. package/dist/composables/useConfig.d.ts +59 -0
  267. package/dist/composables/useConfig.js +9 -0
  268. package/dist/composables/useItemsGetter.d.ts +11 -0
  269. package/dist/composables/useItemsGetter.js +44 -18
  270. package/dist/composables/useLocale.js +10 -7
  271. package/dist/composables/useMobile.js +5 -5
  272. package/dist/composables/usePrefill.d.ts +21 -2
  273. package/dist/composables/usePrefill.js +25 -19
  274. package/dist/composables/useSsrState.d.ts +20 -0
  275. package/dist/composables/useSsrState.js +13 -0
  276. package/dist/composables/useToast.js +5 -5
  277. package/dist/deprecation/ai-deprecations.json.d.ts +99 -11
  278. package/dist/deprecation/ai-deprecations.json.js +1 -1
  279. package/dist/directives/bbDropdown.d.ts +15 -4
  280. package/dist/directives/bbDropdown.js +31 -9
  281. package/dist/directives/createPopoverDirective.d.ts +62 -0
  282. package/dist/directives/createPopoverDirective.js +63 -23
  283. package/dist/i18n/locales/cs.json +4 -1
  284. package/dist/i18n/locales/da.json +4 -1
  285. package/dist/i18n/locales/de.json +4 -1
  286. package/dist/i18n/locales/el.json +4 -1
  287. package/dist/i18n/locales/en.json +4 -1
  288. package/dist/i18n/locales/es.json +4 -1
  289. package/dist/i18n/locales/fi.json +4 -1
  290. package/dist/i18n/locales/fr.json +4 -1
  291. package/dist/i18n/locales/hu.json +4 -1
  292. package/dist/i18n/locales/it.json +4 -1
  293. package/dist/i18n/locales/ja.json +4 -1
  294. package/dist/i18n/locales/ko.json +4 -1
  295. package/dist/i18n/locales/nb.json +4 -1
  296. package/dist/i18n/locales/nl.json +4 -1
  297. package/dist/i18n/locales/pl.json +4 -1
  298. package/dist/i18n/locales/pt.json +4 -1
  299. package/dist/i18n/locales/ro.json +4 -1
  300. package/dist/i18n/locales/ru.json +4 -1
  301. package/dist/i18n/locales/sv.json +4 -1
  302. package/dist/i18n/locales/tr.json +4 -1
  303. package/dist/i18n/locales/uk.json +4 -1
  304. package/dist/i18n/locales/zh-cn.json +4 -1
  305. package/dist/index.d.ts +7 -2
  306. package/dist/index.js +69 -67
  307. package/dist/llms-full.txt +3712 -1381
  308. package/dist/llms-medium.txt +113 -43
  309. package/dist/llms.txt +7 -6
  310. package/dist/locale-blueprint.json +4 -1
  311. package/dist/nuxt-auto-imports.d.ts +100 -0
  312. package/dist/nuxt-auto-imports.js +55 -0
  313. package/dist/nuxt-module.d.ts +22 -1
  314. package/dist/nuxt.js +22 -8
  315. package/dist/plugin.d.ts +10 -1
  316. package/dist/plugin.js +20 -19
  317. package/dist/runtime/nuxt-plugin.js +28 -21
  318. package/dist/styles.css +1 -1
  319. package/dist/utilities/misc/listboxMetrics.d.ts +3 -3
  320. package/dist/utilities/misc/listboxMetrics.js +2 -2
  321. package/dist/utilities/misc/ssrStateInjectionKey.d.ts +42 -0
  322. package/dist/utilities/misc/ssrStateInjectionKey.js +4 -0
  323. package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +45 -27
  324. package/dist/validated/BbSelect.vue.d.ts +2 -0
  325. package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -0
  326. package/dist/validated/useValidatedField.js +25 -23
  327. package/dist/vite.js +6 -2
  328. package/llms.txt +8 -7
  329. package/package.json +2 -2
  330. package/scripts/lib/eslint-plugin.d.ts +19 -1
  331. package/scripts/lib/eslint-plugin.mjs +146 -0
  332. package/scripts/lib/html-attributes.mjs +91 -0
  333. package/scripts/lib/validate-bb-markup.mjs +59 -4
  334. package/dist/assets/svgs/sort.svg_raw.js +0 -4
  335. package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +0 -3
  336. package/dist/components/BbBadge/BadgeAppendIcon.vue.js +0 -5
  337. package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +0 -22
package/README.md CHANGED
@@ -6,7 +6,7 @@ Vue 3 component library used across BitBoss products. It ships typed building bl
6
6
 
7
7
  ## What’s in the package
8
8
 
9
- Published artifacts are **`dist/`** (ESM JavaScript, `.d.ts`, the two stylesheets **`styles.css`** and **`reset.css`**, and the `dist/ai/` knowledge base), plus the **`bin/`** CLI, **`scripts/lib/`** (ESLint plugin and markup validator), the root **`llms.txt`**, and this **README**. The sections below match how the library is organised in code and in the [documentation](https://ui-components-docs.vercel.app/).
9
+ Published artifacts are **`dist/`** (ESM JavaScript, `.d.ts`, the two stylesheets **`styles.css`** and **`reset.css`**, and the `dist/ai/` knowledge base), plus the **`bin/`** CLI, **`scripts/lib/`** (ESLint plugin and markup validator), the root **`llms.txt`**, and this **README**. The sections below match how the library is organised in code and in the [documentation](https://ui-components.bitboss.it/).
10
10
 
11
11
  ### Styles
12
12
 
@@ -36,46 +36,53 @@ Full detail: `ai/guides/installation-and-plugin-setup.md`.
36
36
 
37
37
  ### Composables
38
38
 
39
- | Composable | Role |
40
- | ----------------------------- | ---------------------------------------------------------- |
41
- | `useBbConfig` | Global options for the kit (locale, defaults, etc.). |
42
- | `useBroadcastChannelInstance` | Shared `BroadcastChannel` helper for cross-tab messaging. |
43
- | `useConfirm` | Programmatic confirm / modal flows. |
44
- | `useCountdown` | Countdown timer state. |
45
- | `useMobile` | Mobile / viewport-oriented behaviour. |
46
- | `useQueue` | Simple async task queue. |
47
- | `useSafeArea` | Claim a screen edge for a docked panel so toasts avoid it. |
48
- | `useToast` | Toast notifications API. |
39
+ | Composable | Role |
40
+ | ---------------------- | --------------------------------------------------------------------- |
41
+ | `useBbConfig` | Global options for the kit (locale, defaults, etc.). |
42
+ | `useBbDropdownContext` | Read a `BbDropdown`'s resolved groups/selections from anywhere by id. |
43
+ | `useBbTableContext` | Imperative handle onto a `BbTable` by id. |
44
+ | `useBbTabsContext` | Programmatic tab selection for a `BbTabs` by id. |
45
+ | `useConfirm` | Programmatic confirm / modal flows. |
46
+ | `useCountdown` | Countdown timer state. |
47
+ | `useId` | SSR-safe unique ids. |
48
+ | `useMobile` | Mobile / viewport-oriented behaviour. |
49
+ | `useSafeArea` | Claim a screen edge for a docked panel so toasts avoid it. |
50
+ | `useToast` | Toast notifications API. |
49
51
 
50
- ### Base\* components (primitives) _(reference-only - prefer `Bb*` equivalents for consumer code)_
52
+ ### Utilities
51
53
 
52
- Headless or low-level pieces used inside **Bb\*** wrappers or your own compositions:
54
+ - **`slotKey`** — the normalizer behind every dynamic per-item named slot (`BbDropdown`, `BbTable`, `BbTabs`, `BbTree`, `BbBreadcrumbs`). Import it when building slot names programmatically instead of restating the rule.
53
55
 
54
- - **Actions:** `BbBaseButton`
55
- - **Text & numbers:** `BaseTextInput`, `BaseTextarea`, `BaseNumberInput`, `BaseTag`
56
- - **Choice:** `BaseCheckbox`, `BaseCheckboxGroup`, `BaseRadio`, `BaseRadioGroup`, `BaseSwitch`, `BaseSwitchGroup`, `BaseSlider`, `BaseRating`
57
- - **Choice glyphs (presentational SVGs):** `BbBaseCheckboxIcon`, `BbBaseRadioIcon`, `BbBaseSwitchIcon`
58
- - **Rich inputs:** `BaseSelect`, `BaseColorInput`, `BaseDatePicker`, `BaseDatePickerInput`
59
- - **Layout / chrome:** `BaseInputContainer`, `BaseDialog`
56
+ ### Directives
57
+
58
+ `vBbTooltip`, `vBbDropdown`, `vBbColor`, `vBbDate`, `vBbTime` plus a
59
+ `Bb*DirectivePlugin` for each, for app-level registration. Prefer the directive
60
+ over the component for simple no-slot cases.
61
+
62
+ ### Base\* primitives
63
+
64
+ The styled `Base*` input controls and the input chrome (`BbBaseInputContainer`,
65
+ `CommonInputWrapper` — label, prepend/append, prefix/suffix, clear button,
66
+ spacing) are **internal composition layers and are not exported**. Use the full
67
+ public inputs (`BbTextInput`, `BbSelect`, …); pass `hideLabel` for a
68
+ bare/inline control. The exported primitives are **`BbBaseButton`** and the
69
+ presentational glyphs **`BbBaseCheckboxIcon`**, **`BbBaseRadioIcon`**,
70
+ **`BbBaseSwitchIcon`**.
60
71
 
61
72
  ### Bb\* components (composed)
62
73
 
63
74
  Product-ready components with labels, hints, errors, and consistent styling:
64
75
 
65
- - **Forms & actions:** `BbTextInput`, `BbTextarea`, `BbNumberInput`, `BbSelect`, `BbCheckbox`, `BbCheckboxGroup`, `BbRadio`, `BbRadioGroup`, `BbSwitch`, `BbSwitchGroup`, `BbSlider`, `BbRating`, `BbColorInput`, `BbDatePickerInput`, `BbButton`, `BbBadge`, `BbIndicator`, `BbTag`, `BbDropdown`, `BbDropdownButton`
66
- - **Feedback:** `BbAlert`, `BbProgress`, `BbSpinner`, `BbToast`, `BbTooltip`
67
- - **Layout & navigation:** `BbAccordion`, `BbCollapsible`, `BbTab`, `BbBreadcrumbs`, `BbPagination`,`BbSmoothHeight`
76
+ - **Forms & actions:** `BbTextInput`, `BbTextarea`, `BbNumberInput`, `BbSelect`, `BbSelectPopover`, `BbCheckbox`, `BbCheckboxGroup`, `BbRadio`, `BbRadioGroup`, `BbSwitch`, `BbSwitchGroup`, `BbSlider`, `BbRating`, `BbColorInput`, `BbColorPalette`, `BbDatePicker`, `BbDatePickerInput`, `BbTimePicker`, `BbTimePickerInput`, `BbButton`, `BbBadge`, `BbBadgeButton`, `BbIndicator`, `BbTag`, `BbDropdown`, `BbDropdownGroup`, `BbDropdownButton`, `BbAsterisk`
77
+ - **Feedback:** `BbAlert`, `BbProgress`, `BbSpinner`, `BbToast`, `BbToastPortal`, `BbTooltip`
78
+ - **Layout & navigation:** `BbAccordion`, `BbCollapsible`, `BbTabs` (+ `BbTabsRoot`, `BbTabsList`, `BbTabsPanes`), `BbBreadcrumbs`, `BbPagination`, `BbSmoothHeight`
68
79
  - **Overlays & panels:** `BbDialog`, `BbConfirm`, `BbConfirmPortal`, `BbOffCanvas`, `BbPopover`
69
80
  - **Data:** `BbTable`, `BbTree`
70
81
  - **Media & files:** `BbAvatar`, `BbDropzone`, `BbIcon`
71
82
 
72
- ### Shared input shells _(internal layout primitives - not for direct consumer use)_
73
-
74
- - **`CommonInputWrapper`** — the internal input-chrome primitive (label, prepend/append, prefix/suffix, clear button, spacing) that every `Bb*` input composes. Not exported; use the full public inputs (`BbTextInput`, `BbSelect`, …).
75
-
76
83
  ### Exported component types
77
84
 
78
- For most **Base\*** and **Bb\*** components, the package exports matching **props**, **events**, and (where relevant) **slots** types (for example `BbSelectProps`, `BaseSelectEvents`). Use them for typed wrappers and design-system layers; the docs list the full set per component.
85
+ For the public **Bb\*** components, the package exports matching **props**, **events**, and (where relevant) **slots** types (for example `BbSelectProps`, `BbTableEvents`), plus supporting shapes like `BbDropdownItem` and `DropdownGroupItemsGetter`. Use them for typed wrappers and design-system layers; the docs list the full set per component.
79
86
 
80
87
  ---
81
88
 
@@ -83,7 +90,7 @@ For most **Base\*** and **Bb\*** components, the package exports matching **prop
83
90
 
84
91
  **Primary docs (components, props, guides):**
85
92
 
86
- - [BitBoss UI documentation](https://ui-components-docs.vercel.app/) — site with guides and API reference.
93
+ - [BitBoss UI documentation](https://ui-components.bitboss.it/) — site with guides and API reference.
87
94
 
88
95
  **For AI coding agents:**
89
96
 
@@ -93,10 +100,10 @@ v3 prerelease; pin an exact version (`bitboss-ui@3.0.0-alpha.5`) for stable
93
100
  links. Sizes grow with the catalogue — treat them as the current order of
94
101
  magnitude, not a contract.
95
102
 
96
- - [Core knowledge base](https://cdn.jsdelivr.net/npm/bitboss-ui@alpha/dist/llms-medium.txt) (~110 KB) — **start here if you can only fetch one file.** Hard rules, setup, component picker, design language, and the full component catalogue.
97
- - [Index](https://cdn.jsdelivr.net/npm/bitboss-ui@alpha/llms.txt) (~19 KB) — link index into every document.
98
- - [components.json](https://cdn.jsdelivr.net/npm/bitboss-ui@alpha/dist/ai/components.json) — machine-readable API surface, for programmatic validation.
99
- - [Complete knowledge base](https://cdn.jsdelivr.net/npm/bitboss-ui@alpha/dist/llms-full.txt) (~3.2 MB) — everything concatenated. Bulk ingestion only; too large to prompt with.
103
+ - [Core knowledge base](https://llms-bitboss-ui.bitboss.it/dist/llms-medium.txt) (~110 KB) — **start here if you can only fetch one file.** Hard rules, setup, component picker, design language, and the full component catalogue.
104
+ - [Index](https://llms-bitboss-ui.bitboss.it/llms.txt) (~19 KB) — link index into every document.
105
+ - [components.json](https://llms-bitboss-ui.bitboss.it/dist/ai/components.json) — machine-readable API surface, for programmatic validation.
106
+ - [Complete knowledge base](https://llms-bitboss-ui.bitboss.it/dist/llms-full.txt) (~3.2 MB) — everything concatenated. Bulk ingestion only; too large to prompt with.
100
107
 
101
108
  Already installed? Prefer the local copy under `node_modules/bitboss-ui/dist/ai/`,
102
109
  run `npx bitboss-ui ai-init` to write agent pointers, and
@@ -321,6 +328,38 @@ migrations — a value that must move to a slot, directive, or CSS — are repor
321
328
  with a migration-guide link but left for you. Run `eslint --fix`, then the
322
329
  remaining reports are exactly the by-hand cases.
323
330
 
331
+ #### The one v2 break a codemod cannot own: `reverse`
332
+
333
+ `reverse` on `BbCheckbox` / `BbRadio` / `BbSwitch` kept its **name** and
334
+ inverted its **meaning** in v3. Both versions render the same default layout,
335
+ so only explicit values moved:
336
+
337
+ | v2 | v3 |
338
+ | ----------------------------- | --------- |
339
+ | `:reverse="false"` | `reverse` |
340
+ | `reverse` / `:reverse="true"` | delete it |
341
+
342
+ That is invisible to every other check — `:reverse="false"` is a declared prop,
343
+ correctly typed, holding its own default value — and it cannot go in the
344
+ rename table above, because the table is keyed by prop _name_: an entry for
345
+ `reverse` would rewrite the legitimate v3 spellings too.
346
+
347
+ So it has its own rule, `bitboss-ui/no-reverse-false` (in `recommended`). It
348
+ flags only a **literal** `:reverse="false"` and offers both corrections as
349
+ editor suggestions — a dynamic `:reverse="isRtl"` that merely evaluates false
350
+ is left alone. For a bulk sweep of a v2 codebase, opt into the fix:
351
+
352
+ ```js
353
+ {
354
+ rules: {
355
+ 'bitboss-ui/no-reverse-false': ['error', { assumeV2: true }],
356
+ },
357
+ }
358
+ ```
359
+
360
+ `assumeV2` is off by default because the two readings produce opposite
361
+ layouts — turn it on only for files you know came from v2, then turn it off.
362
+
324
363
  Every real HTML attribute (plus `aria-*` / `data-*`) falls through untouched, so
325
364
  attribute inheritance is never flagged. Escape hatches when you do need one:
326
365
 
@@ -399,7 +438,7 @@ MIT — see [`LICENSE`](LICENSE).
399
438
 
400
439
  ## Support
401
440
 
402
- - **Usage and APIs:** see the [documentation](https://ui-components-docs.vercel.app/).
441
+ - **Usage and APIs:** see the [documentation](https://ui-components.bitboss.it/).
403
442
  - **Company / licensing / commercial:** [BitBoss](https://www.bitboss.it/).
404
443
 
405
444
  ### Reporting a bug
@@ -529,10 +529,10 @@ is generated for you.
529
529
 
530
530
  | Prop | Type | Default | Required | Description |
531
531
  | --- | --- | --- | --- | --- |
532
- | `eager` | `boolean \| undefined` | | | Prevents rendering content before it's made visible. |
532
+ | `eager` | `boolean \| undefined` | `false` | | Prevents rendering content before it's made visible. |
533
533
  | `id` | `string \| undefined` | | | The identifier of the component. |
534
534
  | `modelValue` | `boolean \| undefined` | `false` | | Used by v-model to trigger opening / closing the collapsible. An accordion with no `v-model` starts closed. |
535
- | `transitionDuration` | `number \| undefined` | `transitions.medium` | | How long the transition has to last in milliseconds |
535
+ | `transitionDuration` | `number \| undefined` | `250` | | How long the transition has to last in milliseconds |
536
536
 
537
537
  ## Events
538
538
 
@@ -546,4 +546,4 @@ is generated for you.
546
546
  ## See Also
547
547
 
548
548
  - [BbCollapsible](./BbCollapsible.md) — Toggles visibility of collapsible content blocks.
549
- - [BbTabs](./BbTabs.md) — Switches between tabbed content views (shadcn-like strip; BbTabRoot enables split layouts).
549
+ - [BbTabs](./BbTabs.md) — Switches between tabbed content views (shadcn-like strip; the co-located BbTabsRoot / BbTabsList / BbTabsPanes exports enable split layouts).
@@ -139,8 +139,12 @@ Bind `v-model` when the visibility matters to you:
139
139
  </p>
140
140
  </div>
141
141
 
142
+ <!--
143
+ `v-model` alone owns the dismissal, so the alert plays its own leave
144
+ transition. Pairing it with a `v-if` on the SAME element unmounts the
145
+ node the instant the model flips and the animation never runs.
146
+ -->
142
147
  <BbAlert
143
- v-if="showBanner"
144
148
  v-model="showBanner"
145
149
  close-label="Dismiss email verification reminder"
146
150
  icon="lucide:mail"
@@ -149,7 +153,7 @@ Bind `v-model` when the visibility matters to you:
149
153
  variant="primary"
150
154
  />
151
155
  <BbButton
152
- v-else
156
+ v-if="!showBanner"
153
157
  prepend:icon="lucide:mail"
154
158
  variant="ghost"
155
159
  @click="showBanner = true"
@@ -392,14 +396,14 @@ const publish = () => {
392
396
  | --- | --- | --- | --- | --- |
393
397
  | `ariaLive` | `"off" \| "polite" \| "assertive" \| undefined` | | | ARIA live region politeness. Defaults to `'assertive'` for destructive/warning variants, otherwise `'polite'`. |
394
398
  | `closeLabel` | `string \| undefined` | | | Visually hidden string used to label the close button. |
395
- | `hideClose` | `boolean \| undefined` | | | Defines whether to hide the close button. |
399
+ | `hideClose` | `boolean \| undefined` | `false` | | Defines whether to hide the close button. |
396
400
  | `icon` | `string \| undefined` | | | Name of a registered icon to use, or a full raw `<svg>` string (e.g. an SVG file imported with `?raw`). |
397
401
  | `iconSize` | `number \| ({ size?: any; } & string) \| keyof Sizes \| undefined` | `"16"` | | Size of the icon to use. |
398
402
  | `modelValue` | `any` | `true` | | Used by v-model, set type to any to avoid Vue casting it as false. Alerts are visible on mount; the model dismisses them. |
399
403
  | `role` | `"alert" \| "status" \| undefined` | | | Accessibility role for the alert container. Defaults to `'alert'` for destructive/warning variants, otherwise `'status'`. |
400
404
  | `text` | `string \| undefined` | | | Text content of the alert body. |
401
405
  | `title` | `string \| undefined` | | | Text content of the alert title. |
402
- | `transitionDuration` | `number \| undefined` | `transitions.medium` | | Transition duration in milliseconds for enter/leave. |
406
+ | `transitionDuration` | `number \| undefined` | `250` | | Transition duration in milliseconds for enter/leave. |
403
407
  | `variant` | `keyof AlertVariantRegistry \| undefined` | `"outline"` | | Visual variant of the alert. |
404
408
 
405
409
  ## Events
@@ -414,4 +418,4 @@ const publish = () => {
414
418
 
415
419
  ## See Also
416
420
 
417
- - [BbToast](./BbToast.md) — Shows transient notification messages.
421
+ - [BbToast](./BbToast.md) — Shows transient notification messages (includes the co-located BbToastPortal export).
@@ -33,6 +33,23 @@ you compose a bespoke label outside those controls.
33
33
  Wrap it in an element with your own spacing if the default `margin-inline-start`
34
34
  doesn't suit the layout; the glyph inherits nothing else from its surroundings.
35
35
 
36
+ ### It is `aria-hidden` — the control carries the requirement
37
+
38
+ The span renders `aria-hidden="true"`, so **screen readers never announce it**.
39
+ That is deliberate: an asterisk read aloud as "star" is noise, and a marker
40
+ placed in a label is not a reliable way to convey a requirement. What actually
41
+ carries mandatoriness to assistive tech is the **`required` attribute on the
42
+ control** — which the library sets from your `required` prop.
43
+
44
+ The practical consequence: the marker is a _visual_ affordance only, and
45
+ `required` is the real thing. Never ship a field that shows the asterisk
46
+ without `required` (sighted users see a requirement that assistive tech cannot
47
+ perceive), and never assume the asterisk is doing accessibility work.
48
+
49
+ `showAsterisk` on the validated controls is also gated on the plugin option, so
50
+ with `requiredAsterisk: false` there is no way to render the marker through
51
+ them at all — placing `BbAsterisk` by hand is then the only route.
52
+
36
53
  ## Props
37
54
 
38
55
  - None.
@@ -83,8 +83,17 @@ not hero examples.
83
83
  The fallback surface is **always painted with the primary design token** —
84
84
  `--bb-primary` behind, `--bb-primary-fg` for the initials/icon, the same
85
85
  pairing as a primary button — so initials stay legible in light and dark and
86
- every avatar matches your theme automatically. There is no per-avatar tinting
87
- API: theming happens through the tokens, not a prop.
86
+ every avatar matches your theme automatically.
87
+
88
+ There is no tinting **prop**, but there are three component locals on
89
+ `.bb-avatar` for the cases the theme cannot cover — a per-tenant or
90
+ per-user colour: `--bg-color` (fallback surface, defaults to `--bb-primary`),
91
+ `--text-color` (initials, `--bb-primary-fg`) and `--default-icon-color` (the
92
+ placeholder glyph). Set them on the avatar or on a class you put on it:
93
+
94
+ ```vue
95
+ <BbAvatar text="Acme Studio" :style="{ '--bg-color': tenant.color }" />
96
+ ```
88
97
 
89
98
  **The size scale**
90
99
 
@@ -512,4 +521,4 @@ available in visible text or an adjacent label.
512
521
 
513
522
  ## See Also
514
523
 
515
- - [BbBadge](./BbBadge.md) — Displays compact status counters or labels, the floating mode acts as notification dot.
524
+ - [BbBadge](./BbBadge.md) — Displays a compact inline status counter or label. It sits in the flow for a bubble or dot anchored OVER another element, use BbIndicator (includes the co-located BbBadgeButton export).
@@ -4,7 +4,7 @@
4
4
 
5
5
  - Safety level: **Consumer API**
6
6
  - Group: **Feedback**
7
- - Description: Displays compact status counters or labels, the floating mode acts as notification dot.
7
+ - Description: Displays a compact inline status counter or label. It sits in the flow for a bubble or dot anchored OVER another element, use BbIndicator (includes the co-located BbBadgeButton export).
8
8
  - Usage rule: Prefer this component for consumer-facing implementations.
9
9
  - Implementation source (only when the contract below is not enough): [source/BbBadge.md](./source/BbBadge.md)
10
10
 
@@ -309,9 +309,12 @@ state in the handler. Prefer `secondary` / `outline` for filter chips; reserve
309
309
  ```
310
310
 
311
311
  The clear button inherits the variant's foreground, so it reads on every surface
312
- — light on a filled `primary`, dark on a `secondary`/`outline`. Set
313
- `clearable-label` for the button's accessible name (defaults to the localized
314
- `badge.clearLabel`).
312
+ — light on a filled `primary`, dark on a `secondary`/`outline`. By default its
313
+ accessible name composes the localized verb with the badge's own text a chip
314
+ reading "Italy" announces "Remove Italy", with no per-chip wiring. Set
315
+ `clearable-label` only when that composition is wrong for the context (it
316
+ replaces the whole name). With a `BbBadgeButton` body the composition is
317
+ skipped and the button falls back to the bare localized `badge.clearLabel`.
315
318
 
316
319
  Icons combine with `clearable`: a **`prepend:icon`** stays (it leads the label);
317
320
  an **`append:icon`** shares the trailing slot with the clear button — the icon
@@ -695,8 +698,10 @@ selectors like `.bb-badge > .bb-badge__content`, which no longer match.
695
698
  - An icon-only badge (`icon`) has no visible text; the default slot is rendered
696
699
  as a screen-reader-only label — never leave it empty. In button mode that
697
700
  label is also the **button's accessible name**, so it is doubly required.
698
- - The `clearable` button has an accessible name from `clearable-label` (or the
699
- localized `badge.clearLabel`).
701
+ - The `clearable` button's accessible name is composed by default: the
702
+ localized `badge.clearLabel` verb plus the badge body's text ("Remove
703
+ Italy"). `clearable-label` replaces the whole name; with a `BbBadgeButton`
704
+ body the composition is skipped (bare verb only).
700
705
  - A clickable **and** clearable badge is two tab stops (body, then clear). That
701
706
  is intended: two actions, two controls.
702
707
  - Keyboard focus on either control rings the whole pill, so the focused target
@@ -709,10 +714,10 @@ selectors like `.bb-badge > .bb-badge__content`, which no longer match.
709
714
  | Prop | Type | Default | Required | Description |
710
715
  | --- | --- | --- | --- | --- |
711
716
  | `append:icon` | `string \| undefined` | | | Icon rendered after the label. On a `clearable` badge it shares the trailing slot with the clear button: the icon shows at rest and the clear button reveals over it on hover/focus. |
712
- | `clearable` | `boolean \| undefined` | | | Renders a trailing clear button and emits `click:clear` when pressed — turns the badge into a dismissible token (the pattern formerly served by `BbChip`). |
713
- | `clearableLabel` | `string \| undefined` | | | Accessible label for the clear button. Falls back to the localized `badge.clearLabel` key. |
717
+ | `clearable` | `boolean \| undefined` | `false` | | Renders a trailing clear button and emits `click:clear` when pressed — turns the badge into a dismissible token (the pattern formerly served by `BbChip`). |
718
+ | `clearableLabel` | `string \| undefined` | | | Accessible label for the clear button. Rarely needed: unset, the name is **composed** from the localized `badge.clearLabel` verb and the badge's own text — "Remove Italy", not a bare "Remove" — which is already the right name in almost ever… |
714
719
  | `icon` | `string \| undefined` | | | Renders an icon-only badge. When set, `prepend:icon` / `append:icon` are ignored and the default slot becomes the badge's visually hidden accessible label — always provide it. |
715
- | `loading` | `boolean \| undefined` | | | Shows a spinner in place of the leftmost icon, mirroring `BbButton`: it replaces the `icon` glyph or the `prepend:icon` when one is set; when the `append:icon` is the sole icon it replaces that instead (e.g. a select-activator chevron while… |
720
+ | `loading` | `boolean \| undefined` | `false` | | Shows a spinner in place of the leftmost icon, mirroring `BbButton`: it replaces the `icon` glyph or the `prepend:icon` when one is set; when the `append:icon` is the sole icon it replaces that instead (e.g. a select-activator chevron while… |
716
721
  | `prepend:icon` | `string \| undefined` | | | Icon rendered before the label. |
717
722
  | `size` | `keyof Sizes \| undefined` | `"md"` | | Preset size of the badge. |
718
723
  | `variant` | `keyof BadgeVariantRegistry \| undefined` | `"primary"` | | Visual variant: `primary`, `secondary`, `destructive`, or `outline`. Register more via the vite plugin `badgeVariants` option and style `.bb-badge--<variant>` (set `--bg` / `--color`). |
@@ -727,6 +732,6 @@ selectors like `.bb-badge > .bb-badge__content`, which no longer match.
727
732
 
728
733
  ## See Also
729
734
 
730
- - [BbIndicator](./BbIndicator.md) — Anchors a notification bubble (count/short text) or a dot over a wrapped element, with floating and corner-placement options.
735
+ - [BbIndicator](./BbIndicator.md) — Anchors a notification bubble (count/short text) or a dot over a wrapped element.
731
736
  - [BbAvatar](./BbAvatar.md) — Displays an avatar and has a fallback content slot.
732
737
  - [BbBadgeButton](./BbBadgeButton.md) — Makes a badge's body interactive: slotted as a direct child of BbBadge it renders the badge body as a real button/link with full BbBaseButton parity, leaving `clearable` free to remain a separate control.
@@ -12,21 +12,21 @@
12
12
 
13
13
  | Prop | Type | Default | Required | Description |
14
14
  | --- | --- | --- | --- | --- |
15
- | `activeClass` | `string \| undefined` | | | CSS class applied when the component renders as a link and the target of the link is the current route or the url matches partially. Ported for Inertia compatibility. |
16
- | `ariaCurrentValue` | `"page" \| "step" \| "location" \| "date" \| "time" \| "true" \| "false" \| undefined` | | | Value forwarded to the `aria-current` attribute when the component renders as a router link and the target route is an exact match. Use to communicate the current location to assistive technologies. |
17
- | `async` | `boolean \| undefined` | | | Inertia: runs the visit without blocking — the page stays interactive and several async visits can be in flight at once. |
15
+ | `activeClass` | `string \| undefined` | `'router-link-active'` | | CSS class applied when the component renders as a link and the target of the link is the current route or the url matches partially. Ported for Inertia compatibility. |
16
+ | `ariaCurrentValue` | `"page" \| "step" \| "location" \| "date" \| "time" \| "true" \| "false" \| undefined` | `'page'` | | Value forwarded to the `aria-current` attribute when the component renders as a router link and the target route is an exact match. Use to communicate the current location to assistive technologies. |
17
+ | `async` | `boolean \| undefined` | `false` | | Inertia: runs the visit without blocking — the page stays interactive and several async visits can be in flight at once. |
18
18
  | `cacheFor` | `string \| number \| (string \| number)[] \| undefined` | | | Inertia: how long a prefetched response stays fresh before it is re-fetched. A single duration, or `[staleAfter, expiresAfter]`. Typed platform-agnostically (matching BbButton) so the library's types never require `@inertiajs/vue3` to be in… |
19
19
  | `cacheTags` | `string \| string[] \| undefined` | | | Inertia: tags to file this visit's prefetch cache under, so a later request can invalidate the whole tagged group. |
20
20
  | `component` | `string \| undefined` | | | Inertia: the page component this visit resolves to. Rarely set by hand — the server normally decides it. |
21
21
  | `data` | `object \| undefined` | | | Request payload forwarded to Inertia when navigating via `href` in an Inertia-enabled app. Ignored when not using Inertia. |
22
- | `disabled` | `boolean \| undefined` | | | Disables user interaction. - When rendering as a native button, sets the `disabled` attribute. - When rendering as a link (anchor/Inertia), removes `href`, adds `aria-disabled="true"`, and prevents navigation while keeping focusable semanti… |
22
+ | `disabled` | `boolean \| undefined` | `false` | | Disables user interaction. - When rendering as a native button, sets the `disabled` attribute. - When rendering as a link (anchor/Inertia), removes `href`, adds `aria-disabled="true"`, and prevents navigation while keeping focusable semanti… |
23
23
  | `download` | `string \| boolean \| undefined` | | | Marks an `href` link as a download. Renders a plain `<a download>` doing a native navigation — never an Inertia/router visit — so file downloads (including same-origin, `blob:` and `data:` URLs) work. Pass a string to set the suggested file… |
24
- | `exactActiveClass` | `string \| undefined` | | | CSS class applied when the component renders as a link and the target of the link and the url matches exactly. Ported for Inertia compatibility. |
24
+ | `exactActiveClass` | `string \| undefined` | `'router-link-exact-active'` | | CSS class applied when the component renders as a link and the target of the link and the url matches exactly. Ported for Inertia compatibility. |
25
25
  | `except` | `string[] \| undefined` | | | Inertia: the inverse of `only` — properties to EXCLUDE from a partial reload. Pass one or the other, not both. |
26
- | `external` | `boolean \| undefined` | | | Forces an `href` link to render as a plain `<a>` (native navigation), bypassing Inertia/router interception — the same intent as Nuxt's `NuxtLink` `external`. Use for links outside the SPA. One of the native-anchor signals alongside `target… |
26
+ | `external` | `boolean \| undefined` | `false` | | Forces an `href` link to render as a plain `<a>` (native navigation), bypassing Inertia/router interception — the same intent as Nuxt's `NuxtLink` `external`. Use for links outside the SPA. One of the native-anchor signals alongside `target… |
27
27
  | `headers` | `object \| undefined` | | | Additional HTTP headers forwarded to Inertia when navigating via `href` in an Inertia-enabled app. |
28
28
  | `href` | `string \| undefined` | | | Hyperlink reference used when rendering as an anchor (or as an Inertia link in Inertia-enabled apps). If provided and not disabled, the component renders as an anchor/Inertia link. |
29
- | `instant` | `boolean \| undefined` | | | Inertia: navigate optimistically on click and reconcile when the response lands, instead of waiting for the round trip. |
29
+ | `instant` | `boolean \| undefined` | `false` | | Inertia: navigate optimistically on click and reconcile when the response lands, instead of waiting for the round trip. |
30
30
  | `method` | `"get" \| "post" \| "put" \| "patch" \| "delete" \| undefined` | | | HTTP method used for Inertia navigation when `href` is provided in an Inertia-enabled app. Ignored otherwise. |
31
31
  | `onBefore` | `(() => void) \| undefined` | | | Lifecycle hook invoked by Inertia right before the request is sent. |
32
32
  | `onCancel` | `(() => void) \| undefined` | | | Lifecycle hook invoked by Inertia when a request is cancelled. |
@@ -41,17 +41,17 @@
41
41
  | `onSuccess` | `(() => void) \| undefined` | | | Lifecycle hook invoked by Inertia when a request succeeds. |
42
42
  | `pageProps` | `Record<string, unknown> \| ((currentProps: Record<string, unknown>, sharedProps: Record<string, unknown>) => Record<string, unknown>) \| null \| undefined` | | | Inertia: props to merge into the next page optimistically, before the server responds. Either an object or a function of the current props. Typed platform-agnostically (matching BbButton) so the library's types never require `@inertiajs/vue… |
43
43
  | `prefetch` | `string \| boolean \| string[] \| undefined` | | | Inertia: fetch and cache this link's page ahead of the click. `true` uses the default trigger; a string or list of strings picks them (`'mount'`, `'hover'`, `'click'`). |
44
- | `preserveScroll` | `boolean \| ((props: Record<string, unknown>) => boolean) \| undefined` | | | Controls whether Inertia should preserve the current scroll position after navigation. Can be a boolean or a predicate receiving the visit props. |
45
- | `preserveState` | `boolean \| ((props: Record<string, unknown>) => boolean) \| null \| undefined` | | | Controls whether Inertia should preserve the current state after navigation. Can be a boolean or a predicate receiving the visit props. |
46
- | `preserveUrl` | `boolean \| undefined` | | | Inertia: keep the current URL in the address bar even though the page content changes. |
47
- | `queryStringArrayFormat` | `"brackets" \| "indices" \| undefined` | | | Format to use when serializing array values into the query string for Inertia requests. |
44
+ | `preserveScroll` | `boolean \| ((props: Record<string, unknown>) => boolean) \| undefined` | `false` | | Controls whether Inertia should preserve the current scroll position after navigation. Can be a boolean or a predicate receiving the visit props. |
45
+ | `preserveState` | `boolean \| ((props: Record<string, unknown>) => boolean) \| null \| undefined` | `false` | | Controls whether Inertia should preserve the current state after navigation. Can be a boolean or a predicate receiving the visit props. |
46
+ | `preserveUrl` | `boolean \| undefined` | `false` | | Inertia: keep the current URL in the address bar even though the page content changes. |
47
+ | `queryStringArrayFormat` | `"brackets" \| "indices" \| undefined` | `'brackets'` | | Format to use when serializing array values into the query string for Inertia requests. |
48
48
  | `rel` | `string \| undefined` | | | Relationship between the current document and the linked resource. Useful for security when opening new tabs (e.g. `noopener noreferrer`). |
49
- | `replace` | `boolean \| undefined` | | | Uses history replacement instead of push navigation. - With Vue Router (`to`), calls `router.replace`. - With Inertia (`href`), performs a replace visit. |
50
- | `tag` | `ButtonTag \| undefined` | | | Element to render for the plain (non-link, non-router) button: - `'button'` (default) — real button semantics and keyboard behavior - `'div'` / `'span'` — a clickable box nested inside another button or link, where a nested `<button>` would… |
49
+ | `replace` | `boolean \| undefined` | `false` | | Uses history replacement instead of push navigation. - With Vue Router (`to`), calls `router.replace`. - With Inertia (`href`), performs a replace visit. |
50
+ | `tag` | `ButtonTag \| undefined` | `'button'` | | Element to render for the plain (non-link, non-router) button: - `'button'` (default) — real button semantics and keyboard behavior - `'div'` / `'span'` — a clickable box nested inside another button or link, where a nested `<button>` would… |
51
51
  | `target` | `string \| undefined` | | | Target browsing context for anchor/Inertia links (e.g. `_self`, `_blank`). Ignored when rendering as a native button. |
52
52
  | `to` | `string \| wt \| bt \| undefined` | | | Route location to navigate to. When provided (and not disabled), the component renders as a Vue Router link. |
53
- | `type` | `"button" \| "submit" \| "reset" \| undefined` | | | Native `type` attribute used when rendering as a button (e.g. `button`, `submit`, `reset`). |
54
- | `viewTransition` | `boolean \| undefined` | | | Inertia: run the page swap inside a View Transition, where the browser supports one. |
53
+ | `type` | `"button" \| "submit" \| "reset" \| undefined` | `'button'` | | Native `type` attribute used when rendering as a button (e.g. `button`, `submit`, `reset`). |
54
+ | `viewTransition` | `boolean \| undefined` | `false` | | Inertia: run the page swap inside a View Transition, where the browser supports one. |
55
55
 
56
56
  ## Events
57
57
 
@@ -63,5 +63,5 @@
63
63
 
64
64
  ## See Also
65
65
 
66
- - [BbBadge](./BbBadge.md) — Displays compact status counters or labels, the floating mode acts as notification dot.
66
+ - [BbBadge](./BbBadge.md) — Displays a compact inline status counter or label. It sits in the flow for a bubble or dot anchored OVER another element, use BbIndicator (includes the co-located BbBadgeButton export).
67
67
  - [BbBaseButton](./BbBaseButton.md) — Unstyled button/link primitive: element resolution (button/anchor/router link) and the full navigation engine, with no visual chrome. Use for any clickable or navigable surface that is not a variant-first BbButton — cards, list rows, custom links.
@@ -455,22 +455,22 @@ const sent = ref(false);
455
455
 
456
456
  | Prop | Type | Default | Required | Description |
457
457
  | --- | --- | --- | --- | --- |
458
- | `activeClass` | `string \| undefined` | | | CSS class applied when the component renders as a link and the target of the link is the current route or the url matches partially. Ported for Inertia compatibility. |
459
- | `ariaCurrentValue` | `"page" \| "step" \| "location" \| "date" \| "time" \| "true" \| "false" \| undefined` | | | Value forwarded to the `aria-current` attribute when the component renders as a router link and the target route is an exact match. Use to communicate the current location to assistive technologies. |
460
- | `async` | `boolean \| undefined` | | | Inertia: runs the visit without blocking — the page stays interactive and several async visits can be in flight at once. |
461
- | `block` | `boolean \| undefined` | | | Makes the component take the full available width (block-level layout). Adds the `bb-base-button--block` modifier class. |
458
+ | `activeClass` | `string \| undefined` | `'router-link-active'` | | CSS class applied when the component renders as a link and the target of the link is the current route or the url matches partially. Ported for Inertia compatibility. |
459
+ | `ariaCurrentValue` | `"page" \| "step" \| "location" \| "date" \| "time" \| "true" \| "false" \| undefined` | `'page'` | | Value forwarded to the `aria-current` attribute when the component renders as a router link and the target route is an exact match. Use to communicate the current location to assistive technologies. |
460
+ | `async` | `boolean \| undefined` | `false` | | Inertia: runs the visit without blocking — the page stays interactive and several async visits can be in flight at once. |
461
+ | `block` | `boolean \| undefined` | `false` | | Makes the component take the full available width (block-level layout). Adds the `bb-base-button--block` modifier class. |
462
462
  | `cacheFor` | `string \| number \| (string \| number)[] \| undefined` | | | Inertia: how long a prefetched response stays fresh before it is re-fetched. A single duration, or `[staleAfter, expiresAfter]`. Typed platform-agnostically (matching BbButton) so the library's types never require `@inertiajs/vue3` to be in… |
463
463
  | `cacheTags` | `string \| string[] \| undefined` | | | Inertia: tags to file this visit's prefetch cache under, so a later request can invalidate the whole tagged group. |
464
464
  | `component` | `string \| undefined` | | | Inertia: the page component this visit resolves to. Rarely set by hand — the server normally decides it. |
465
465
  | `data` | `object \| undefined` | | | Request payload forwarded to Inertia when navigating via `href` in an Inertia-enabled app. Ignored when not using Inertia. |
466
- | `disabled` | `boolean \| undefined` | | | Disables user interaction. - When rendering as a native button, sets the `disabled` attribute. - When rendering as a link (anchor/Inertia), removes `href`, adds `aria-disabled="true"`, and prevents navigation while keeping focusable semanti… |
466
+ | `disabled` | `boolean \| undefined` | `false` | | Disables user interaction. - When rendering as a native button, sets the `disabled` attribute. - When rendering as a link (anchor/Inertia), removes `href`, adds `aria-disabled="true"`, and prevents navigation while keeping focusable semanti… |
467
467
  | `download` | `string \| boolean \| undefined` | | | Marks an `href` link as a download. Renders a plain `<a download>` doing a native navigation — never an Inertia/router visit — so file downloads (including same-origin, `blob:` and `data:` URLs) work. Pass a string to set the suggested file… |
468
- | `exactActiveClass` | `string \| undefined` | | | CSS class applied when the component renders as a link and the target of the link and the url matches exactly. Ported for Inertia compatibility. |
468
+ | `exactActiveClass` | `string \| undefined` | `'router-link-exact-active'` | | CSS class applied when the component renders as a link and the target of the link and the url matches exactly. Ported for Inertia compatibility. |
469
469
  | `except` | `string[] \| undefined` | | | Inertia: the inverse of `only` — properties to EXCLUDE from a partial reload. Pass one or the other, not both. |
470
- | `external` | `boolean \| undefined` | | | Forces an `href` link to render as a plain `<a>` (native navigation), bypassing Inertia/router interception — the same intent as Nuxt's `NuxtLink` `external`. Use for links outside the SPA. One of the native-anchor signals alongside `target… |
470
+ | `external` | `boolean \| undefined` | `false` | | Forces an `href` link to render as a plain `<a>` (native navigation), bypassing Inertia/router interception — the same intent as Nuxt's `NuxtLink` `external`. Use for links outside the SPA. One of the native-anchor signals alongside `target… |
471
471
  | `headers` | `object \| undefined` | | | Additional HTTP headers forwarded to Inertia when navigating via `href` in an Inertia-enabled app. |
472
472
  | `href` | `string \| undefined` | | | Hyperlink reference used when rendering as an anchor (or as an Inertia link in Inertia-enabled apps). If provided and not disabled, the component renders as an anchor/Inertia link. |
473
- | `instant` | `boolean \| undefined` | | | Inertia: navigate optimistically on click and reconcile when the response lands, instead of waiting for the round trip. |
473
+ | `instant` | `boolean \| undefined` | `false` | | Inertia: navigate optimistically on click and reconcile when the response lands, instead of waiting for the round trip. |
474
474
  | `method` | `"get" \| "post" \| "put" \| "patch" \| "delete" \| undefined` | | | HTTP method used for Inertia navigation when `href` is provided in an Inertia-enabled app. Ignored otherwise. |
475
475
  | `onBefore` | `(() => void) \| undefined` | | | Lifecycle hook invoked by Inertia right before the request is sent. |
476
476
  | `onCancel` | `(() => void) \| undefined` | | | Lifecycle hook invoked by Inertia when a request is cancelled. |
@@ -485,18 +485,18 @@ const sent = ref(false);
485
485
  | `onSuccess` | `(() => void) \| undefined` | | | Lifecycle hook invoked by Inertia when a request succeeds. |
486
486
  | `pageProps` | `Record<string, unknown> \| ((currentProps: Record<string, unknown>, sharedProps: Record<string, unknown>) => Record<string, unknown>) \| null \| undefined` | | | Inertia: props to merge into the next page optimistically, before the server responds. Either an object or a function of the current props. Typed platform-agnostically (matching BbButton) so the library's types never require `@inertiajs/vue… |
487
487
  | `prefetch` | `string \| boolean \| string[] \| undefined` | | | Inertia: fetch and cache this link's page ahead of the click. `true` uses the default trigger; a string or list of strings picks them (`'mount'`, `'hover'`, `'click'`). |
488
- | `preserveScroll` | `boolean \| ((props: Record<string, unknown>) => boolean) \| undefined` | | | Controls whether Inertia should preserve the current scroll position after navigation. Can be a boolean or a predicate receiving the visit props. |
489
- | `preserveState` | `boolean \| ((props: Record<string, unknown>) => boolean) \| null \| undefined` | | | Controls whether Inertia should preserve the current state after navigation. Can be a boolean or a predicate receiving the visit props. |
490
- | `preserveUrl` | `boolean \| undefined` | | | Inertia: keep the current URL in the address bar even though the page content changes. |
491
- | `queryStringArrayFormat` | `"brackets" \| "indices" \| undefined` | | | Format to use when serializing array values into the query string for Inertia requests. |
488
+ | `preserveScroll` | `boolean \| ((props: Record<string, unknown>) => boolean) \| undefined` | `false` | | Controls whether Inertia should preserve the current scroll position after navigation. Can be a boolean or a predicate receiving the visit props. |
489
+ | `preserveState` | `boolean \| ((props: Record<string, unknown>) => boolean) \| null \| undefined` | `false` | | Controls whether Inertia should preserve the current state after navigation. Can be a boolean or a predicate receiving the visit props. |
490
+ | `preserveUrl` | `boolean \| undefined` | `false` | | Inertia: keep the current URL in the address bar even though the page content changes. |
491
+ | `queryStringArrayFormat` | `"brackets" \| "indices" \| undefined` | `'brackets'` | | Format to use when serializing array values into the query string for Inertia requests. |
492
492
  | `rel` | `string \| undefined` | | | Relationship between the current document and the linked resource. Useful for security when opening new tabs (e.g. `noopener noreferrer`). |
493
- | `replace` | `boolean \| undefined` | | | Uses history replacement instead of push navigation. - With Vue Router (`to`), calls `router.replace`. - With Inertia (`href`), performs a replace visit. |
494
- | `tag` | `ButtonTag \| undefined` | | | Element to render for the plain (non-link, non-router) button: - `'button'` (default) — real button semantics and keyboard behavior - `'div'` / `'span'` — a clickable box nested inside another button or link, where a nested `<button>` would… |
493
+ | `replace` | `boolean \| undefined` | `false` | | Uses history replacement instead of push navigation. - With Vue Router (`to`), calls `router.replace`. - With Inertia (`href`), performs a replace visit. |
494
+ | `tag` | `ButtonTag \| undefined` | `'button'` | | Element to render for the plain (non-link, non-router) button: - `'button'` (default) — real button semantics and keyboard behavior - `'div'` / `'span'` — a clickable box nested inside another button or link, where a nested `<button>` would… |
495
495
  | `target` | `string \| undefined` | | | Target browsing context for anchor/Inertia links (e.g. `_self`, `_blank`). Ignored when rendering as a native button. |
496
496
  | `text` | `string \| undefined` | | | Fallback text content rendered when no default slot is provided. |
497
497
  | `to` | `string \| wt \| bt \| undefined` | | | Route location to navigate to. When provided (and not disabled), the component renders as a Vue Router link. |
498
498
  | `type` | `"button" \| "submit" \| "reset" \| undefined` | `"button"` | | Native `type` attribute used when rendering as a button (e.g. `button`, `submit`, `reset`). |
499
- | `viewTransition` | `boolean \| undefined` | | | Inertia: run the page swap inside a View Transition, where the browser supports one. |
499
+ | `viewTransition` | `boolean \| undefined` | `false` | | Inertia: run the page swap inside a View Transition, where the browser supports one. |
500
500
 
501
501
  ## Events
502
502
 
@@ -510,4 +510,4 @@ const sent = ref(false);
510
510
 
511
511
  - [BbButton](./BbButton.md) — Button with loading state, tooltip, and icon support.
512
512
  - [BbDropdownButton](./BbDropdownButton.md) — A button with primary action and all other actions collected in a dropdown.
513
- - [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content.
513
+ - [BbDropdown](./BbDropdown.md) — Displays contextual action menus and menu content (includes the co-located BbDropdownGroup export, which is how a selectable group is bound).
@@ -17,19 +17,19 @@
17
17
  | Prop | Type | Default | Required | Description |
18
18
  | --- | --- | --- | --- | --- |
19
19
  | `ariaDescribedby` | `string \| undefined` | | | ID of the element that describes this checkbox for assistive technologies. Forwarded to the input as `aria-describedby`. |
20
- | `autofocus` | `Booleanish \| undefined` | | | Automatically focuses the checkbox when the page/component loads. Use sparingly to avoid usability issues. |
20
+ | `autofocus` | `Booleanish \| undefined` | `false` | | Automatically focuses the checkbox when the page/component loads. Use sparingly to avoid usability issues. |
21
21
  | `checked` | `boolean \| undefined` | `undefined` | | Forces the checkbox checked state (controlled prop). When omitted, the checked state is derived from `modelValue === trueValue`. Deliberately `undefined` rather than `false`, so "unset" stays distinguishable from an explicit `:checked="fals… |
22
- | `disabled` | `boolean \| undefined` | | | Disables user interaction. Also applied when `readonly` is set, since native checkboxes do not support `readonly`. |
22
+ | `disabled` | `boolean \| undefined` | `false` | | Disables user interaction. Also applied when `readonly` is set, since native checkboxes do not support `readonly`. |
23
23
  | `falseValue` | `any` | `false` | | Value submitted/emitted when the checkbox is unchecked. Accepts any serializable value. Serialized to a string for form submission. |
24
- | `hasErrors` | `boolean \| undefined` | | | Puts the component into an error state (adds error styling class `bb-base-checkbox--errors`). |
25
- | `hasWarning` | `boolean \| undefined` | | | Puts the component into a warning state (adds `bb-base-checkbox--warnings`). Errors take priority when both are set. |
24
+ | `hasErrors` | `boolean \| undefined` | `false` | | Puts the component into an error state (adds error styling class `bb-base-checkbox--errors`). |
25
+ | `hasWarning` | `boolean \| undefined` | `false` | | Puts the component into a warning state (adds `bb-base-checkbox--warnings`). Errors take priority when both are set. |
26
26
  | `id` | `string \| undefined` | | | Identifier forwarded to the input. |
27
- | `indeterminate` | `boolean \| undefined` | | | Renders the checkbox in the indeterminate state (neither checked nor unchecked). Note: the native `indeterminate` state resets on user click; this component re-applies it to keep UI and prop aligned. |
27
+ | `indeterminate` | `boolean \| undefined` | `false` | | Renders the checkbox in the indeterminate state (neither checked nor unchecked). Note: the native `indeterminate` state resets on user click; this component re-applies it to keep UI and prop aligned. |
28
28
  | `modelValue` | `any` | | | Bound value for `v-model`. When it equals `trueValue` the checkbox is considered checked, otherwise unchecked. |
29
29
  | `name` | `string \| undefined` | | | Name attribute of the input, used during form submission. |
30
- | `readonly` | `boolean \| undefined` | | | Puts the input in a read-only state. Since checkboxes do not support native `readonly`, the input is disabled while styled as read-only. |
31
- | `required` | `boolean \| undefined` | | | Marks the input as required for form validation. |
32
- | `submitWhenFalse` | `boolean \| undefined` | | | When unchecked, submits a hidden input with `falseValue` so that a value is still posted with the form. When checked, the visible input submits `trueValue` as usual. |
30
+ | `readonly` | `boolean \| undefined` | `false` | | Puts the input in a read-only state. Since checkboxes do not support native `readonly`, the input is disabled while styled as read-only. |
31
+ | `required` | `boolean \| undefined` | `false` | | Marks the input as required for form validation. |
32
+ | `submitWhenFalse` | `boolean \| undefined` | `false` | | When unchecked, submits a hidden input with `falseValue` so that a value is still posted with the form. When checked, the visible input submits `trueValue` as usual. |
33
33
  | `trueValue` | `any` | `true` | | Value submitted/emitted when the checkbox is checked. Accepts any serializable value. Serialized to a string for form submission. |
34
34
 
35
35
  ## Events
@@ -17,34 +17,34 @@
17
17
  | Prop | Type | Default | Required | Description |
18
18
  | --- | --- | --- | --- | --- |
19
19
  | `ariaDescribedby` | `string \| undefined` | | | ID of the element that describes the entire checkbox group for assistive technologies. Forwarded to each generated input as `aria-describedby`. |
20
- | `autofocus` | `Booleanish \| undefined` | | | Automatically focuses the first checkbox on mount when true. Applied only to the first option. |
21
- | `dependencies` | `unknown[] \| undefined` | | | List of reactive values which, when changed, trigger items re-fetching. Useful to reload options based on external inputs. |
20
+ | `autofocus` | `Booleanish \| undefined` | `false` | | Automatically focuses the first checkbox on mount when true. Applied only to the first option. |
21
+ | `dependencies` | `unknown[] \| undefined` | `[]` | | List of reactive values which, when changed, trigger items re-fetching. Useful to reload options based on external inputs. |
22
22
  | `depsDebounceTime` | `number \| undefined` | `0` | | Debounce delay (ms) applied when reacting to `dependencies` changes. |
23
23
  | `direction` | `"horizontal" \| "vertical" \| undefined` | `"horizontal"` | | Direction of the group layout. - `horizontal`: options flow in rows - `vertical`: options stack in a column |
24
- | `disabled` | `boolean \| undefined` | | | Disables interaction for the whole group. |
25
- | `enforceCoherence` | `boolean \| undefined` | | | Enforces that `modelValue` contains only values present in `items`. Incoherent values are removed and `update:modelValue` is emitted with a coherent array. Please check out {@link https://ui-components-docs.vercel.app/it/guides/coherence th… |
26
- | `hasErrors` | `boolean \| undefined` | | | Puts the component into an error state adds the error styling class. |
27
- | `hasWarning` | `boolean \| undefined` | | | Puts the component into a warning state. Errors take priority when both are set. |
28
- | `hideLabel` | `boolean \| undefined` | | | Visually hides each option's label text (the text rendered next to every input) while keeping it accessible to screen readers. |
24
+ | `disabled` | `boolean \| undefined` | `false` | | Disables interaction for the whole group. |
25
+ | `enforceCoherence` | `boolean \| undefined` | `false` | | Enforces that `modelValue` contains only values present in `items`. Incoherent values are removed and `update:modelValue` is emitted with a coherent array. Please check out {@link https://ui-components.bitboss.it/it/guides/coherence the doc… |
26
+ | `hasErrors` | `boolean \| undefined` | `false` | | Puts the component into an error state adds the error styling class. |
27
+ | `hasWarning` | `boolean \| undefined` | `false` | | Puts the component into a warning state. Errors take priority when both are set. |
28
+ | `hideLabel` | `boolean \| undefined` | `false` | | Visually hides each option's label text (the text rendered next to every input) while keeping it accessible to screen readers. |
29
29
  | `id` | `string \| undefined` | | | Identifier of the group. Used to derive per-option IDs for accessible labeling. |
30
30
  | `items` | `T[] \| ((prefill: boolean, modelValue?: any) => T[] \| Promise<T[]>)` | `[]` | yes | Items provider. Can be: - An array of items - A sync/async function `(prefill, modelValue) => items` When a function is provided, it is invoked on prefill and when dependencies change to load options dynamically. |
31
- | `itemText` | `(T extends object ? string \| ((item: T) => string) : (item: T) => string) \| undefined` | | | Defines how to derive the display text from an item. Accepts a nested key path into the item or a function `(item) => string`. |
32
- | `itemValue` | `(T extends object ? string \| ((item: T) => string) : (item: T) => any) \| undefined` | | | Defines how to derive the value from an item. Accepts a nested key path into the item or a function `(item) => any`. |
33
- | `loadingText` | `string \| undefined` | | | Text displayed while items are loading. |
31
+ | `itemText` | `(T extends object ? string \| ((item: T) => string) : (item: T) => string) \| undefined` | `JSON.stringify(item)` | | Defines how to derive the display text from an item. Accepts a nested key path into the item or a function `(item) => string`. |
32
+ | `itemValue` | `(T extends object ? string \| ((item: T) => string) : (item: T) => any) \| undefined` | `JSON.stringify(item)` | | Defines how to derive the value from an item. Accepts a nested key path into the item or a function `(item) => any`. |
33
+ | `loadingText` | `string \| undefined` | `'Loading...'` | | Text displayed while items are loading. |
34
34
  | `max` | `number \| undefined` | `Infinity` | | Maximum number of selectable items. |
35
35
  | `modelValue` | `any` | | yes | Selected values for the group. Used with `v-model`. Single value when `multiple` is false, array when `multiple` is true. |
36
36
  | `modelValueDebounceTime` | `number \| undefined` | `0` | | Debounce delay (ms) applied when reacting to `modelValue` changes. |
37
37
  | `multiple` | `boolean \| undefined` | `true` | | Enables multi-selection behavior. When `true`, `modelValue` must be an array and emitted updates are arrays. When `false`, `modelValue` must be a single value (or `null`) and emitted updates are single values. |
38
38
  | `name` | `string \| undefined` | | | Name attribute applied to each input for form submission. |
39
- | `noDataText` | `string \| undefined` | | | Text displayed when there are no items to show. |
40
- | `readonly` | `boolean \| undefined` | | | Makes all checkboxes read-only. Since checkboxes do not support native `readonly`, inputs are disabled while styled as read-only. |
39
+ | `noDataText` | `string \| undefined` | `'No data to display'` | | Text displayed when there are no items to show. |
40
+ | `readonly` | `boolean \| undefined` | `false` | | Makes all checkboxes read-only. Since checkboxes do not support native `readonly`, inputs are disabled while styled as read-only. |
41
41
  | `selectable` | `boolean \| ((item: T) => boolean) \| undefined` | `true` | | Defines whether options are selectable. Can be a global boolean that affects all options or a function that accepts an item and returns a boolean that only affects that item. Non-selectable options are rendered disabled. |
42
42
 
43
43
  ## Events
44
44
 
45
45
  - `active` — `(e: "active"): void` — Emitted when the group becomes active (focus/click enters it).
46
46
  - `blur` — `(e: "blur", event: FocusEvent): void` — Emitted when one of the generated checkbox inputs loses focus. Forwards the original DOM `FocusEvent`.
47
- - `change` — `(e: "change", event: Event): void` — Emitted when a checkbox option is toggled. Forwards the original DOM `Event` from the checkbox input.
47
+ - `change` — `(e: "change", event: Event): void` — Emitted when an option is toggled. Forwards the original DOM `Event` from the checkbox input.
48
48
  - `click` — `(e: "click", event: MouseEvent): void` — Emitted when one of the generated checkbox inputs is clicked. Forwards the original DOM `MouseEvent`.
49
49
  - `focus` — `(e: "focus", event: FocusEvent): void` — Emitted when one of the generated checkbox inputs receives focus. Forwards the original DOM `FocusEvent`.
50
50
  - `inactive` — `(e: "inactive"): void` — Emitted when focus/click moves outside the group after it was active. Useful for validation-on-blur flows at group level.