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

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 (350) 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 +920 -109
  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 +128 -2
  84. package/dist/ai/components.json +917 -100
  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 +18 -18
  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 +11 -5
  93. package/dist/ai/guides/installation-and-plugin-setup.md +85 -23
  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 +560 -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/approvals-inbox.md +0 -1
  107. package/dist/ai/recipes/inertia/inline-edit-workspace.md +0 -1
  108. package/dist/ai/recipes/inertia/layout-scaffold.md +5 -1
  109. package/dist/ai/recipes/inertia/ownership-atlas.md +49 -29
  110. package/dist/ai/recipes/inertia/record-form.md +0 -1
  111. package/dist/ai/recipes/inertia/records-workspace.md +26 -8
  112. package/dist/ai/recipes/inertia/upload-center.md +0 -1
  113. package/dist/ai/recipes/nuxt/approvals-inbox.md +0 -1
  114. package/dist/ai/recipes/nuxt/inline-edit-workspace.md +0 -1
  115. package/dist/ai/recipes/nuxt/layout-scaffold.md +5 -1
  116. package/dist/ai/recipes/nuxt/record-form.md +0 -1
  117. package/dist/ai/recipes/nuxt/records-workspace.md +26 -8
  118. package/dist/ai/recipes/nuxt/upload-center.md +0 -1
  119. package/dist/ai/recipes/vue/approvals-inbox.md +0 -1
  120. package/dist/ai/recipes/vue/inline-edit-workspace.md +0 -1
  121. package/dist/ai/recipes/vue/layout-scaffold.md +5 -1
  122. package/dist/ai/recipes/vue/records-workspace.md +26 -8
  123. package/dist/ai/recipes/vue/upload-center.md +0 -1
  124. package/dist/ai/source/BbAlert.md +60 -2
  125. package/dist/ai/source/BbAvatar.md +3 -3
  126. package/dist/ai/source/BbBadge.md +60 -15
  127. package/dist/ai/source/BbBadgeButton.md +8 -2
  128. package/dist/ai/source/BbBaseButton.md +3 -1
  129. package/dist/ai/source/BbBaseCheckboxGroup.md +6 -2
  130. package/dist/ai/source/BbBaseDatePicker.md +3 -1
  131. package/dist/ai/source/BbBaseDatePickerInput.md +5 -1
  132. package/dist/ai/source/BbBaseInputContainer.md +52 -1
  133. package/dist/ai/source/BbBaseRadioGroup.md +4 -0
  134. package/dist/ai/source/BbBaseRating.md +3 -1
  135. package/dist/ai/source/BbBaseSelect.md +71 -16
  136. package/dist/ai/source/BbBaseSwitchGroup.md +4 -0
  137. package/dist/ai/source/BbBaseTimePickerInput.md +5 -1
  138. package/dist/ai/source/BbBreadcrumbs.md +31 -0
  139. package/dist/ai/source/BbButton.md +51 -24
  140. package/dist/ai/source/BbCheckbox.md +15 -1
  141. package/dist/ai/source/BbCheckboxGroup.md +2 -1
  142. package/dist/ai/source/BbCollapsible.md +7 -1
  143. package/dist/ai/source/BbColorInput.md +3 -4
  144. package/dist/ai/source/BbColorPalette.md +3 -4
  145. package/dist/ai/source/BbDatePicker.md +5 -1
  146. package/dist/ai/source/BbDatePickerInput.md +5 -1
  147. package/dist/ai/source/BbDialog.md +175 -19
  148. package/dist/ai/source/BbDropdown.md +376 -69
  149. package/dist/ai/source/BbDropdownGroup.md +330 -59
  150. package/dist/ai/source/BbForm.md +93 -5
  151. package/dist/ai/source/BbIcon.md +46 -36
  152. package/dist/ai/source/BbNumberInput.md +3 -4
  153. package/dist/ai/source/BbOffCanvas.md +474 -194
  154. package/dist/ai/source/BbPopover.md +24 -17
  155. package/dist/ai/source/BbProgress.md +2 -2
  156. package/dist/ai/source/BbRadio.md +15 -1
  157. package/dist/ai/source/BbRadioGroup.md +3 -1
  158. package/dist/ai/source/BbSelect.md +50 -2
  159. package/dist/ai/source/BbSelectPopover.md +171 -23
  160. package/dist/ai/source/BbSlider.md +3 -4
  161. package/dist/ai/source/BbSwitch.md +15 -1
  162. package/dist/ai/source/BbSwitchGroup.md +8 -5
  163. package/dist/ai/source/BbTable.md +5092 -1446
  164. package/dist/ai/source/BbTabs.md +6 -7
  165. package/dist/ai/source/BbTabsList.md +6 -7
  166. package/dist/ai/source/BbTabsPanes.md +6 -7
  167. package/dist/ai/source/BbTabsRoot.md +6 -7
  168. package/dist/ai/source/BbTag.md +3 -4
  169. package/dist/ai/source/BbTextInput.md +3 -4
  170. package/dist/ai/source/BbTextarea.md +3 -4
  171. package/dist/ai/source/BbTimePicker.md +4 -1
  172. package/dist/ai/source/BbTimePickerInput.md +5 -1
  173. package/dist/ai/source/BbToast.md +3 -1
  174. package/dist/ai/source/BbTooltip.md +5 -1
  175. package/dist/ai/source/CommonInputWrapper.md +4 -0
  176. package/dist/ai/source/CommonPopover.md +6 -0
  177. package/dist/ai/source/FlatListBox.md +11 -5
  178. package/dist/ai/source/GroupedListBox.md +7 -5
  179. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +4 -4
  180. package/dist/components/BbAlert/types.d.ts +10 -1
  181. package/dist/components/BbAvatar/BbAvatar.vue.d.ts +1 -1
  182. package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +33 -33
  183. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +22 -16
  184. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +36 -15
  185. package/dist/components/BbBadge/badgeButtonContext.d.ts +21 -8
  186. package/dist/components/BbBadge/types.d.ts +8 -2
  187. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +47 -47
  188. package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +14 -14
  189. package/dist/components/BbBaseCheckboxGroup/BbBaseCheckboxGroup.vue_vue_type_script_setup_true_lang.js +30 -28
  190. package/dist/components/BbBaseCheckboxGroup/types.d.ts +2 -2
  191. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +167 -167
  192. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue.d.ts +9 -9
  193. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +78 -78
  194. package/dist/components/BbBaseDatePicker/BbBaseDatePickerMonthSelector.vue_vue_type_script_setup_true_lang.js +64 -64
  195. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue.d.ts +1 -1
  196. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +138 -138
  197. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue_vue_type_script_setup_true_lang.js +2 -2
  198. package/dist/components/BbBaseRadioGroup/BbBaseRadioGroup.vue_vue_type_script_setup_true_lang.js +24 -22
  199. package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +40 -40
  200. package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +74 -65
  201. package/dist/components/BbBaseSelect/types.d.ts +22 -0
  202. package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +5 -5
  203. package/dist/components/BbBaseSwitchGroup/BbBaseSwitchGroup.vue_vue_type_script_setup_true_lang.js +30 -28
  204. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue.d.ts +1 -1
  205. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +104 -104
  206. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +35 -35
  207. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +85 -81
  208. package/dist/components/BbCheckboxGroup/types.d.ts +2 -1
  209. package/dist/components/BbCollapsible/types.d.ts +7 -1
  210. package/dist/components/BbColorInput/BbColorInput.vue.d.ts +1 -1
  211. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +18 -18
  212. package/dist/components/BbColorPalette/BbColorPalette.vue.d.ts +2 -2
  213. package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +50 -50
  214. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +17 -17
  215. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
  216. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +100 -100
  217. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +21 -21
  218. package/dist/components/BbDialog/BbDialog.vue.d.ts +1 -1
  219. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +133 -107
  220. package/dist/components/BbDialog/types.d.ts +29 -2
  221. package/dist/components/BbDropdown/AdaptiveDropdown.vue.d.ts +2 -0
  222. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +99 -100
  223. package/dist/components/BbDropdown/BbDropdown.vue.d.ts +2 -2
  224. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +208 -201
  225. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +225 -208
  226. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +21 -21
  227. package/dist/components/BbDropdown/types.d.ts +20 -5
  228. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +5 -5
  229. package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +46 -46
  230. package/dist/components/BbIcon/iconCache.d.ts +33 -0
  231. package/dist/components/BbIcon/iconCache.js +17 -0
  232. package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +1 -1
  233. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +15 -15
  234. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
  235. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +254 -208
  236. package/dist/components/BbOffCanvas/types.d.ts +30 -5
  237. package/dist/components/BbPagination/BbPagination.vue.d.ts +1 -1
  238. package/dist/components/BbPopover/BbPopover.vue.d.ts +2 -2
  239. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +149 -146
  240. package/dist/components/BbPopover/types.d.ts +3 -2
  241. package/dist/components/BbRadioGroup/types.d.ts +3 -1
  242. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +27 -23
  243. package/dist/components/BbSelect/types.d.ts +32 -0
  244. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +221 -213
  245. package/dist/components/BbSlider/BbSlider.vue.d.ts +1 -1
  246. package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +20 -20
  247. package/dist/components/BbTable/BbTable.vue.d.ts +10 -4
  248. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1433 -600
  249. package/dist/components/BbTable/BbTableDataRow.d.ts +162 -0
  250. package/dist/components/BbTable/BbTableDataRow.js +136 -0
  251. package/dist/components/BbTable/BbTableExpandRow.d.ts +73 -0
  252. package/dist/components/BbTable/BbTableExpandRow.js +52 -0
  253. package/dist/components/BbTable/types.d.ts +324 -111
  254. package/dist/components/BbTable/utils.d.ts +92 -4
  255. package/dist/components/BbTable/utils.js +71 -36
  256. package/dist/components/BbTabs/types.d.ts +0 -8
  257. package/dist/components/BbTag/BbTag.vue.d.ts +1 -1
  258. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +18 -18
  259. package/dist/components/BbTextInput/BbTextInput.vue.d.ts +1 -1
  260. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +18 -18
  261. package/dist/components/BbTextarea/BbTextarea.vue.d.ts +1 -1
  262. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +54 -54
  263. package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +1 -1
  264. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +80 -80
  265. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +61 -61
  266. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +17 -17
  267. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +13 -13
  268. package/dist/components/BbTooltip/types.d.ts +5 -1
  269. package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +17 -17
  270. package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +5 -5
  271. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +2 -1
  272. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +83 -83
  273. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +56 -56
  274. package/dist/composables/useBaseOptions.js +30 -20
  275. package/dist/composables/useBbConfig.d.ts +27 -6
  276. package/dist/composables/useBbConfig.js +8 -2
  277. package/dist/composables/useConfig.d.ts +59 -0
  278. package/dist/composables/useConfig.js +9 -0
  279. package/dist/composables/useItemsGetter.d.ts +11 -0
  280. package/dist/composables/useItemsGetter.js +44 -18
  281. package/dist/composables/useLocale.js +10 -7
  282. package/dist/composables/useMobile.js +5 -5
  283. package/dist/composables/usePrefill.d.ts +21 -2
  284. package/dist/composables/usePrefill.js +25 -19
  285. package/dist/composables/useSsrState.d.ts +20 -0
  286. package/dist/composables/useSsrState.js +13 -0
  287. package/dist/composables/useTableWidthContext.d.ts +24 -4
  288. package/dist/composables/useTableWidthContext.js +31 -28
  289. package/dist/composables/useToast.js +5 -5
  290. package/dist/deprecation/ai-deprecations.json.d.ts +121 -11
  291. package/dist/deprecation/ai-deprecations.json.js +1 -1
  292. package/dist/directives/bbDropdown.d.ts +15 -4
  293. package/dist/directives/bbDropdown.js +31 -9
  294. package/dist/directives/createPopoverDirective.d.ts +62 -0
  295. package/dist/directives/createPopoverDirective.js +63 -23
  296. package/dist/i18n/locales/cs.json +4 -1
  297. package/dist/i18n/locales/da.json +4 -1
  298. package/dist/i18n/locales/de.json +4 -1
  299. package/dist/i18n/locales/el.json +4 -1
  300. package/dist/i18n/locales/en.json +4 -1
  301. package/dist/i18n/locales/es.json +4 -1
  302. package/dist/i18n/locales/fi.json +4 -1
  303. package/dist/i18n/locales/fr.json +4 -1
  304. package/dist/i18n/locales/hu.json +4 -1
  305. package/dist/i18n/locales/it.json +4 -1
  306. package/dist/i18n/locales/ja.json +4 -1
  307. package/dist/i18n/locales/ko.json +4 -1
  308. package/dist/i18n/locales/nb.json +4 -1
  309. package/dist/i18n/locales/nl.json +4 -1
  310. package/dist/i18n/locales/pl.json +4 -1
  311. package/dist/i18n/locales/pt.json +4 -1
  312. package/dist/i18n/locales/ro.json +4 -1
  313. package/dist/i18n/locales/ru.json +4 -1
  314. package/dist/i18n/locales/sv.json +4 -1
  315. package/dist/i18n/locales/tr.json +4 -1
  316. package/dist/i18n/locales/uk.json +4 -1
  317. package/dist/i18n/locales/zh-cn.json +4 -1
  318. package/dist/index.d.ts +7 -2
  319. package/dist/index.js +69 -67
  320. package/dist/llms-full.txt +3997 -1458
  321. package/dist/llms-medium.txt +140 -73
  322. package/dist/llms.txt +7 -6
  323. package/dist/locale-blueprint.json +4 -1
  324. package/dist/nuxt-auto-imports.d.ts +100 -0
  325. package/dist/nuxt-auto-imports.js +55 -0
  326. package/dist/nuxt-module.d.ts +22 -1
  327. package/dist/nuxt.js +22 -8
  328. package/dist/plugin.d.ts +10 -1
  329. package/dist/plugin.js +20 -19
  330. package/dist/runtime/nuxt-plugin.js +28 -21
  331. package/dist/styles.css +1 -1
  332. package/dist/utilities/misc/listboxMetrics.d.ts +3 -3
  333. package/dist/utilities/misc/listboxMetrics.js +2 -2
  334. package/dist/utilities/misc/ssrStateInjectionKey.d.ts +42 -0
  335. package/dist/utilities/misc/ssrStateInjectionKey.js +4 -0
  336. package/dist/validated/BbForm.vue_vue_type_script_setup_true_lang.js +45 -27
  337. package/dist/validated/BbSelect.vue.d.ts +2 -0
  338. package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -0
  339. package/dist/validated/useValidatedField.js +25 -23
  340. package/dist/vite.js +7 -3
  341. package/llms.txt +8 -7
  342. package/package.json +2 -2
  343. package/scripts/lib/eslint-plugin.d.ts +19 -1
  344. package/scripts/lib/eslint-plugin.mjs +155 -14
  345. package/scripts/lib/html-attributes.mjs +91 -0
  346. package/scripts/lib/validate-bb-markup.mjs +59 -11
  347. package/dist/assets/svgs/sort.svg_raw.js +0 -4
  348. package/dist/components/BbBadge/BadgeAppendIcon.vue.d.ts +0 -3
  349. package/dist/components/BbBadge/BadgeAppendIcon.vue.js +0 -5
  350. package/dist/components/BbBadge/BadgeAppendIcon.vue_vue_type_script_setup_true_lang.js +0 -22
@@ -17,7 +17,8 @@ The three single controls share their prop surface (`BbSwitch` re-exports
17
17
  | `color?: string` | removed | style via theme tokens / CSS |
18
18
  | `indeterminate` loose type (checkbox) | `boolean` | retype |
19
19
  | `name: string` required (**BbRadio** only; checkbox/switch already optional) | `name?: string` (auto-generated per button when omitted) | relaxation — a hand-composed group still needs one shared explicit `name`, since generated ones differ per button |
20
- | — | `description`, `compact` | additive |
20
+ | — | `description` | additive (all three) |
21
+ | — | `compact` — **group components only** | additive on `BbCheckboxGroup` / `BbRadioGroup` / `BbSwitchGroup`; the three single controls have no `compact` prop |
21
22
 
22
23
  ## The `reverse` flip, precisely
23
24
 
@@ -42,5 +43,38 @@ So explicit values translate **by inversion**:
42
43
  + <BbCheckbox v-model="ok" reverse label="I agree" />
43
44
  ```
44
45
 
45
- `rg -n 'reverse' --type vue` and review each hit on these components — the
46
- compiler cannot catch a boolean that changed meaning.
46
+ ### Finding every site
47
+
48
+ The compiler cannot catch a boolean that changed meaning — it is a declared
49
+ prop, correctly typed, holding its own default value. **`bitboss-ui/eslint-plugin`
50
+ can**, and does: `bitboss-ui/no-reverse-false` (in `recommended`) flags every
51
+ literal `:reverse="false"` on these three components and offers both
52
+ corrections as editor suggestions.
53
+
54
+ For a codebase that used the v2 spelling **extensively**, do the sweep in one
55
+ pass instead of clicking through them:
56
+
57
+ ```js
58
+ // eslint.config.js — temporarily, for the migration run
59
+ {
60
+ rules: {
61
+ // Rewrites `:reverse="false"` → `reverse` (the v2 layout) everywhere.
62
+ 'bitboss-ui/no-reverse-false': ['error', { assumeV2: true }],
63
+ },
64
+ }
65
+ ```
66
+
67
+ ```sh
68
+ npx eslint --fix 'src/**/*.vue'
69
+ ```
70
+
71
+ Then drop `assumeV2` again. It is **off by default on purpose**: the two
72
+ readings of `:reverse="false"` produce opposite layouts, so an unrequested
73
+ `--fix` would silently flip every row in a codebase that wrote the redundant
74
+ prop meaning nothing by it. Turn it on only when you know the file you are
75
+ sweeping came from v2.
76
+
77
+ What the rule deliberately leaves alone: a dynamic `:reverse="isRtl"` that
78
+ merely evaluates false is legitimate v3 code, and only the template AST can
79
+ tell the two apart. It also flags `reverse="false"` — the unbound string form,
80
+ which is truthy, so it reads as off and behaves as on.
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  title: 'Migration v2→v3: BbCollapsible'
3
- summary: The tag prop is removed; the root is always a div.
3
+ summary: The tag prop is removed; the root is always a span.
4
4
  ---
5
5
 
6
6
  # BbCollapsible — v2 → v3
7
7
 
8
8
  ## Changes
9
9
 
10
- | v2 | v3 | Kind |
11
- | ------------------------------------------- | --------- | ------------------------------------------------------------------------------ |
12
- | `tag?: string` (default `'div'`) | removed | root is a `div`; wrap in a semantic element if you passed `tag="section"` etc. |
13
- | `modelValue`, `eager`, `transitionDuration` | unchanged | — |
10
+ | v2 | v3 | Kind |
11
+ | ------------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
12
+ | `tag?: string` (default `'div'`) | removed | the root is a **`span`** (`display: grid`) — an inline element, so it is valid inside a `<p>`; wrap in a semantic element if you passed `tag="section"` etc. |
13
+ | `modelValue`, `eager`, `transitionDuration` | unchanged | — |
14
14
 
15
15
  ## Edits
16
16
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: 'Migration v2→v3: BbDialog'
3
- summary: 'showClose inverted to hideClose, several presentation props and the #close/#description slots removed, default widths changed, adaptive bottom sheet on mobile by default, --bb-dialog-* tokens replaced by --bb-panel-p plus locals.'
3
+ summary: 'showClose inverted to hideClose, #close removed (description restored in beta.19), default widths changed, adaptive bottom sheet on mobile by default, --bb-dialog-* tokens replaced by --bb-panel-p plus locals.'
4
4
  ---
5
5
 
6
6
  # BbDialog — v2 → v3
@@ -13,8 +13,8 @@ v2's `BbDialog` was a re-export of `BaseDialog`; v3 makes it first-class
13
13
  | v2 | v3 | Kind |
14
14
  | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
15
15
  | `showClose?: boolean` (default `true`) | `hideClose?: boolean` (default `false`) | rename, polarity inverted |
16
- | `description` | removed | put it in the default slot / `header` slot |
17
- | `#description` slot | removed | same and the `aria-describedby` wiring goes with it |
16
+ | `description` | **kept** (restored in 3.0.0-beta.19) | carries over unchanged; see below |
17
+ | `#description` slot | **kept** (restored in 3.0.0-beta.19) | carries over unchanged |
18
18
  | `#close` slot | removed | a custom close control goes inside `#header`, which replaces the default ✕ — no `hide-close` alongside it |
19
19
  | `hideHeader` | removed | omit `title` and the header collapses; or use the `header` slot |
20
20
  | `compact` | removed | spacing is token-driven now (`--bb-panel-p`) |
@@ -39,27 +39,49 @@ v2's `BbDialog` was a re-export of `BaseDialog`; v3 makes it first-class
39
39
 
40
40
  ```diff
41
41
  - <BbDialog v-model="open" :show-close="false" size="md" description="Review before sending">
42
- + <BbDialog v-model="open" hide-close size="md">
43
- + <template #header="{ titleId }">
44
- + <h2 :id="titleId">Review before sending</h2>
45
- + </template>
42
+ + <BbDialog v-model="open" hide-close size="md" description="Review before sending">
46
43
 
47
44
  </BbDialog>
48
45
  ```
49
46
 
47
+ ## `description` came back in 3.0.0-beta.19
48
+
49
+ Early v3 (beta.18 and before) dropped `description` and `#description`, and
50
+ told you to move the copy into `#header` or the body. That reversed in
51
+ **3.0.0-beta.19**: both are back, unchanged from v2, and `aria-describedby` is
52
+ wired again.
53
+
54
+ If you already migrated away from it, nothing is broken — `#header` still
55
+ works. You can move back for the shorter form:
56
+
57
+ ```diff
58
+ <BbDialog v-model="open" title="Review before sending">
59
+ - <template #header="{ titleId }">
60
+ - <h2 :id="titleId">Review before sending</h2>
61
+ - <p class="muted">This sends to all 412 subscribers.</p>
62
+ - </template>
63
+ + <template #description>This sends to all 412 subscribers.</template>
64
+ ```
65
+
66
+ It renders one muted line under the title, and it is the only thing
67
+ `aria-describedby` points at — the body is deliberately not described, since
68
+ arbitrary body markup would be read aloud in full. Keep it to a sentence.
69
+
50
70
  ## CSS and tokens
51
71
 
52
72
  The `--bb-dialog-*` family is gone. Padding comes from the shared
53
- `--bb-panel-p`; the rest are unprefixed locals on `.bb-dialog` or plain CSS
54
- rules. `BbOffCanvas` is identical throughout with `.bb-offcanvas__*` parts.
73
+ `--bb-panel-p` and the local axis pair `--px` / `--py` on `.bb-dialog`; the
74
+ rest are unprefixed locals on `.bb-dialog` or plain CSS rules. `BbOffCanvas`
75
+ is identical throughout with `.bb-offcanvas__*` parts and the same `--px` /
76
+ `--py` names.
55
77
 
56
78
  | v2 token | v3 |
57
79
  | -------------------------------------------- | -------------------------------------------------------------------------------------- |
58
- | `--bb-dialog-px` / `--bb-dialog-py` (`24px`) | `--bb-panel-p` (`16px`) — **one** value on both axes; asymmetry needs a CSS rule |
80
+ | `--bb-dialog-px` / `--bb-dialog-py` (`24px`) | local `--px` / `--py` on `.bb-dialog`, each branching off `--bb-panel-p` (`16px`) |
59
81
  | `--bb-dialog-close` (`12px`) | **delete it** — v3's default already reproduces v2's control size |
60
82
  | `--bb-dialog-title-size` (`18px`) | local `--dialog-title-fs` on `.bb-dialog`, default `calc(var(--bb-fs) + 2px)` = `16px` |
61
83
  | `--bb-dialog-title-weight` (`600`) | no knob — `500` is hard-coded; override with a CSS rule |
62
- | — | local `--dialog-gap`, default `--bb-panel-p` — the body↔footer vertical rhythm |
84
+ | — | local `--dialog-gap`, default `--py` — the body↔footer vertical rhythm |
63
85
 
64
86
  ### `--bb-dialog-close` → delete it
65
87
 
@@ -102,43 +124,48 @@ specificity — a two-class `.my-dialog .bb-dialog__title` loses.
102
124
 
103
125
  ### Asymmetric padding
104
126
 
105
- `--bb-panel-p` is a single value used on both axes; there is no
106
- `--bb-panel-px`/`--bb-panel-py` pair. If your v2 theme set `--bb-dialog-px` ≠
107
- `--bb-dialog-py`, set `--bb-panel-p` to the **horizontal** value (it also
108
- positions the close button) and override the vertical with a `padding-block`
109
- rule on the part classes.
127
+ The local pair `--px` / `--py` splits the axes; each branches off
128
+ `var(--bb-panel-p)`, so setting `--bb-panel-p` alone still moves both. Like
129
+ every unprefixed component token, set the pair on the component's class, never
130
+ `:root` (other components also use `--px` as a sealed local of their own, so a
131
+ dialog-scoped value never leaks into the buttons or alerts inside). v2's `--bb-dialog-px` / `--bb-dialog-py` map onto it directly:
110
132
 
111
133
  ```css
112
- /* v2: --bb-dialog-px: 24px; header --bb-dialog-py: 10px; body --bb-dialog-py: 20px */
134
+ /* v2: --bb-dialog-px: 24px; --bb-dialog-py: 10px */
113
135
  .my-dialog {
114
- --bb-panel-p: 24px; /* horizontal + close-button inset */
136
+ --px: 24px; /* horizontal padding + close-button inline inset */
137
+ --py: 10px; /* vertical padding + close-button block inset */
115
138
  }
139
+ ```
140
+
141
+ Per-**part** vertical differences (header `py: 10px`, body `py: 20px`) work by
142
+ scoping the token to the part class — the padding rules resolve it on the part
143
+ elements and the token inherits:
144
+
145
+ ```css
116
146
  .my-dialog .bb-dialog__header {
117
- padding-block: 10px 5px; /* the library halves the header's bottom padding */
118
- }
119
- .my-dialog .bb-dialog__body .bb-dialog__body-content {
120
- padding-block: 0 20px;
121
- }
122
- .my-dialog .bb-dialog__body:first-child .bb-dialog__body-content {
123
- padding-top: 20px;
147
+ --py: 10px; /* top 10px, bottom py/2 = 5px; the × inset follows */
124
148
  }
125
- .my-dialog .bb-dialog__footer {
126
- padding-block: 20px;
149
+ .my-dialog .bb-dialog__body-content {
150
+ --py: 20px; /* bottom padding, and top in the headerless case */
127
151
  }
128
152
  ```
129
153
 
130
- Use `padding-block`, not the `padding` shorthand, so the horizontal half keeps
131
- tracking `--bb-panel-p`. Library selectors are `.bb-dialog .bb-dialog__header`
154
+ Derived spacings scale with it (header bottom is `py / 2`; the close button's
155
+ block inset tracks the header's `py`). For exact literals instead of those
156
+ ratios, use a `padding-block` rule on the part class — `padding-block`, not
157
+ the `padding` shorthand, so the horizontal half keeps tracking
158
+ `--px`. Library selectors are `.bb-dialog .bb-dialog__header`
132
159
  (0,2,0), `.bb-dialog__body-content` (0,1,0),
133
160
  `.bb-dialog__body:first-child .bb-dialog__body-content` (0,2,1) and
134
- `.bb-dialog .bb-dialog__footer` (0,2,0) — the three-class app rules above beat
135
- all four.
161
+ `.bb-dialog .bb-dialog__footer` (0,2,0) — a three-class app rule beats all
162
+ four.
136
163
 
137
164
  ### `--dialog-gap`
138
165
 
139
166
  If only the vertical rhythm _between parts_ differs, `--dialog-gap` does it
140
- without a padding rule — it replaces `--bb-panel-p` in the body's bottom padding
141
- and the footer's block padding:
167
+ without a padding rule — it replaces `--py` in the body's bottom
168
+ padding and the footer's block padding:
142
169
 
143
170
  ```css
144
171
  .my-dialog {
@@ -147,7 +174,8 @@ and the footer's block padding:
147
174
  ```
148
175
 
149
176
  It does **not** reach the header's top padding, any horizontal padding, or the
150
- body's top padding in the headerless case; those still read `--bb-panel-p`.
177
+ body's top padding in the headerless case; those still read `--py` (and
178
+ `--px` for the horizontal slots).
151
179
 
152
180
  ### `.bb-confirm`
153
181
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: 'Migration v2→v3: BbOffCanvas'
3
- summary: 'direction→side; showClose→hideClose; description and the #close/#description slots removed; size defaults change; adaptive drawer configs unify on offCanvasProps.'
3
+ summary: 'direction→side; showClose→hideClose; #close removed (description restored in beta.19); size defaults change; adaptive drawer configs unify on offCanvasProps.'
4
4
  ---
5
5
 
6
6
  # BbOffCanvas — v2 → v3
@@ -11,8 +11,8 @@ summary: 'direction→side; showClose→hideClose; description and the #close/#d
11
11
  | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
12
12
  | `direction?: 'left' \| 'top' \| 'right' \| 'bottom'` (default `'left'`) | `side?: 'left' \| 'top' \| 'right' \| 'bottom'` (default `'left'`) | **⚠ silent** — a leftover `direction` is ignored and the panel falls back to `'left'` |
13
13
  | `showClose?: boolean` (default `true`) | `hideClose?: boolean` (default `false`) | rename, polarity inverted |
14
- | `description?: string` | removed | put the copy in the default slot or own the header via `#header`; the `aria-describedby` wiring goes with it |
15
- | `#description` slot | removed | same nothing links body copy to the panel automatically now |
14
+ | `description?: string` | **kept** (restored in 3.0.0-beta.19) | carries over unchanged; `aria-describedby` is wired again |
15
+ | `#description` slot | **kept** (restored in 3.0.0-beta.19) | carries over unchanged |
16
16
  | `#close` slot | removed | a custom close control goes inside `#header`, see below |
17
17
  | `size?: 'sm' \| 'md' \| 'lg'` | `size?: Responsive<'xs'…'2xl' \| 'auto' \| CSS length>` | widened — **defaults changed**, same trap as BbDialog: v2 `{ sm: 384, md: 652, lg: 896 }` → v3 `{ xs: 320, sm: 384, md: 448, lg: 512, xl: 576, '2xl': 672 }`. Pin via `offCanvasDefaultSizes` if needed. |
18
18
  | — | `draggable`, `stack` / `stackGap`, `persistent`, `disabled`, `fullscreen`, `eager`, `focusTarget`, `title` | additive |
@@ -41,9 +41,24 @@ renames to `side` for the same reason:
41
41
  + <BbDialog :off-canvas-props="{ side: 'bottom' }" />
42
42
  ```
43
43
 
44
- The failure mode for leftover `direction` is silent (Vue does not warn on
45
- unknown props; it falls through `$attrs`). `vue-tsc` catches it in typed
46
- templates; `bitboss-ui/eslint-plugin` catches it everywhere and
44
+ **The two leftovers fail differently check both.** Measured with `vue-tsc`
45
+ against this repo:
46
+
47
+ - **Inside `offCanvasProps`** (`:off-canvas-props="{ direction: 'bottom' }"`) a
48
+ typed template **does** catch it: the value is a fresh object literal typed
49
+ `Partial<BbOffCanvasProps>`, so TypeScript's excess-property check fires —
50
+ `TS2353: 'direction' does not exist in type 'Partial<BbOffCanvasProps>'`.
51
+ - **As an attribute on the component** (`<BbOffCanvas direction="right">`) it is
52
+ **silent**, and `vue-tsc` does **not** catch it by default: an unknown
53
+ attribute is legal Vue, lands on `$attrs`, and type-checks clean. Verified —
54
+ a made-up `totallyBogusProp` passes too. The panel just falls back to
55
+ `'left'`.
56
+
57
+ For that second case `vueCompilerOptions.checkUnknownProps` would catch it, but
58
+ it is blunt: it also rejects legitimate fallthrough like `aria-label` /
59
+ `aria-describedby`, which these guides tell you to use. Prefer
60
+ **`npx bitboss-ui check`**, which knows the difference, or
61
+ `bitboss-ui/eslint-plugin`, which catches it everywhere and
47
62
  **`eslint --fix` auto-renames it**. Grep: `rg -i 'direction' --type vue` in
48
63
  offcanvas markup.
49
64
 
@@ -65,15 +80,16 @@ Pure rename — the `Partial<BbOffCanvasProps>` object is unchanged.
65
80
 
66
81
  Also silent on upgrade; `eslint --fix` auto-renames it.
67
82
 
68
- ## `description` and `#close` are gone
83
+ ## `#close` is gone; `description` came back in beta.19
69
84
 
70
- v3's slot set is `header | title | default | footer` — no `#close`, no
71
- `#description`, and no `description` prop. Same removal as
72
- [BbDialog](./bb-dialog.md).
85
+ v3's slot set is `header | title | description | default | footer` — no
86
+ `#close`.
73
87
 
74
- `description` copy moves into the default slot. Nothing wires
75
- `aria-describedby` for you any more; add it yourself if a screen reader needs
76
- the panel described rather than just labelled.
88
+ `description` and `#description` were dropped in early v3 and **restored in
89
+ 3.0.0-beta.19**, unchanged from v2 and with `aria-describedby` wired again
90
+ same reversal as [BbDialog](./bb-dialog.md). One muted line under the title;
91
+ keep it to a sentence, and leave longer copy in the default slot (which is
92
+ deliberately not described).
77
93
 
78
94
  **`#header` replaces the ✕, so `hide-close` is redundant beside it.** The
79
95
  default header renders `#title` + a `CloseButton`; providing `#header` replaces
@@ -38,7 +38,12 @@ The block name is unchanged; the star's state modifier is not.
38
38
  | — | `.bb-base-rating--warnings`, `--forced-clear` (new) |
39
39
 
40
40
  v2 styled unfilled stars with `:not(--highlighted)`; v3 gives them a positive
41
- name. Everything else survives unchanged: `.bb-base-rating`, `--disabled`,
41
+ name. `--empty` is a **hook for your CSS**, not a painted default: the shipped
42
+ sheet has no `&--empty` rule, because an empty star is just the base
43
+ `__option` colour. So porting `:not(--highlighted)` to `--empty` works, and
44
+ writing nothing also works.
45
+
46
+ Everything else survives unchanged: `.bb-base-rating`, `--disabled`,
42
47
  `--errors`, `--readonly`, `--has-value`, `__inner-container`, `__option`,
43
48
  `__label-text`. Nothing warns — a `--highlighted` rule just stops matching.
44
49
 
@@ -61,7 +66,8 @@ rule now fights the library's. Delete the workaround and keep the prop.
61
66
 
62
67
  `--bb-rating-size` was a `:root` global in v2, read as
63
68
  `.bb-base-rating { --size: var(--bb-rating-size) }`. v3 drops the global and
64
- hard-defaults the local:
69
+ hard-defaults the local to **`24px`** (`BbBaseRating/index.css:4`). Move your
70
+ override off `:root` and onto the block — the value itself is yours to keep:
65
71
 
66
72
  ```diff
67
73
  - :root { --bb-rating-size: 32px; }
@@ -139,5 +139,8 @@ virtualizer's `estimateSize`; a CSS override desynchronises the paint from the
139
139
  scroll math and the list mispositions. Use `item-height` / `header-height` (or
140
140
  `compact`) instead — they move both halves together.
141
141
 
142
- The panel is teleported, so a wrapper class on your `<BbSelect>` does not reach
143
- it scope on `.bb-select-popover` or on the surrounding page/theme class.
142
+ The panel is **not** teleported there is no `Teleport` anywhere in
143
+ `BbSelect`, `BbBaseSelect` or `BbSelectPopover` so it stays inside your
144
+ `<BbSelect>` and a wrapper class does reach it. Scoping on `.bb-select-popover`
145
+ is still the clearer target, and CSS custom properties inherit into the panel
146
+ either way.