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
@@ -109,6 +109,8 @@ useOnTruthy(active, () => emit('active'));
109
109
 
110
110
  const {
111
111
  getter,
112
+ clientReproducible,
113
+ hydratedFromSsr,
112
114
  items: internalItems,
113
115
  loading,
114
116
  } = useItemsGetter({
@@ -122,6 +124,8 @@ const alignToCoherenceSettings = () => {
122
124
  };
123
125
 
124
126
  const { hasPrefilled } = usePrefill({
127
+ alreadyLoaded: hydratedFromSsr,
128
+ clientReproducible,
125
129
  trigger: true,
126
130
  currentValue: props.modelValue,
127
131
  multiple: props.multiple,
@@ -186,7 +186,7 @@
186
186
  </template>
187
187
 
188
188
  <script setup lang="ts">
189
- import { config } from 'virtual:bitboss-ui/config';
189
+ import { useConfig } from '@/composables/useConfig';
190
190
  import { computed, onBeforeUnmount, ref, watch } from 'vue';
191
191
  import { createReusableTemplate } from '@vueuse/core';
192
192
  import { isEmpty } from '@/utilities/functions/empty';
@@ -222,9 +222,13 @@ const props = withDefaults(defineProps<BaseTimePickerInputProps>(), {
222
222
  disableWriting: false,
223
223
  autocomplete: 'off',
224
224
  });
225
+
225
226
  const emit = defineEmits<BaseTimePickerInputEvents>();
227
+
226
228
  defineSlots<BaseTimePickerInputSlots>();
227
229
 
230
+ const config = useConfig();
231
+
228
232
  const { t } = useLocale();
229
233
  const logger = useLogger();
230
234
 
@@ -802,6 +802,37 @@ export type BbBreadcrumbsSlots = {
802
802
  display: none;
803
803
  }
804
804
 
805
+ /*
806
+ * Flush outer edge. A crumb paints no background in ANY state (base, hover
807
+ * and `aria-current` are all transparent, and BbBaseButton's ring is
808
+ * zero-spread), so its 4px inline padding is visible only as rhythm
809
+ * BETWEEN crumbs — at the component's own edge it is an invisible box
810
+ * pushing the first glyph off the text column it should align with. The
811
+ * list adds `--bb-ring-size` more, which is NOT dead: `overflow: hidden`
812
+ * clips at the padding box, so without it the ellipsis focus ring loses
813
+ * its outer 2px. Hence two different moves — zero the padding that buys
814
+ * nothing, bleed back the padding that does.
815
+ *
816
+ * Both are scoped to a list that IS the outer edge. With a prepend/append
817
+ * edge slot the list is interior, and the crumb next to that slot keeps
818
+ * its padding so the spacing there stays the same as between two crumbs.
819
+ */
820
+ &__container > &__list:first-child {
821
+ margin-inline-start: calc(-1 * var(--bb-ring-size));
822
+ }
823
+
824
+ &__container > &__list:last-child {
825
+ margin-inline-end: calc(-1 * var(--bb-ring-size));
826
+ }
827
+
828
+ &__container > &__list:first-child > &__item:first-of-type &__breadcrumb {
829
+ padding-inline-start: 0;
830
+ }
831
+
832
+ &__container > &__list:last-child > &__item:last-of-type &__breadcrumb {
833
+ padding-inline-end: 0;
834
+ }
835
+
805
836
  &__breadcrumb[aria-disabled='true'],
806
837
  &__breadcrumb:disabled {
807
838
  cursor: not-allowed;
@@ -27,8 +27,18 @@
27
27
  <!-- v-if'd so idle buttons carry no spinner node (and no running
28
28
  keyframe animation). The <Transition> keeps the fade smooth: the
29
29
  node persists through the leave phase, so the sibling cross-fade
30
- and label-slide CSS keep matching while everything animates back. -->
31
- <Transition appear name="bb-button-spinner">
30
+ and label-slide CSS keep matching while everything animates back.
31
+
32
+ The <Transition> itself waits for the first load. It is two component
33
+ instances (the wrapper and BaseTransition) that render nothing at all
34
+ until `loading` first turns true, and a button that never loads —
35
+ every button in a table cell, and most buttons anywhere — paid for
36
+ both on every mount. `appear` is what makes the deferral invisible:
37
+ mounting the transition WITH its child already inside runs the enter
38
+ animation, exactly as a plain toggle would have. From then on
39
+ `hasLoadedOnce` stays true, so the leave animation has its transition
40
+ to run in. -->
41
+ <Transition v-if="hasLoadedOnce" appear name="bb-button-spinner">
32
42
  <BbSpinner v-if="loading" class="bb-button__spinner" />
33
43
  </Transition>
34
44
  <BbIcon
@@ -59,11 +69,12 @@
59
69
  <script setup lang="ts">
60
70
  import { BbBaseButton, BbSpinner } from '@/index';
61
71
  import BbIcon from '../BbIcon/BbIcon.vue';
62
- import { computed, ref, toRef, useAttrs, watchEffect } from 'vue';
72
+ import { computed, ref, useAttrs, watchEffect } from 'vue';
63
73
  import { pickBy } from '@/utilities/functions/pickBy';
64
74
  import { noop } from '@/utilities/functions/noop';
65
75
  import { useLocale } from '@/composables/useLocale';
66
76
  import { useLogger } from '@/composables/useLogger';
77
+ import { useUntil } from '@/composables/useUntil';
67
78
  import { removedPropsFor } from '@/deprecation/removedProps';
68
79
  import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
69
80
  import { extractDomContainer } from '@/utilities/functions/extractDomContainer';
@@ -128,6 +139,9 @@ const loading = computed(
128
139
  () => props.loading || (!!internalLoading.value && !props.disableAutoLoading)
129
140
  );
130
141
 
142
+ /** Latches on the first load; gates the spinner's <Transition> — see the template. */
143
+ const hasLoadedOnce = useUntil(loading);
144
+
131
145
  const onClick = async (event: Event) => {
132
146
  if (loading.value && !props.interactiveWhileLoading) {
133
147
  // router-link doesn't allow for prevent default but the logic stays
@@ -141,9 +155,20 @@ const onClick = async (event: Event) => {
141
155
  const falseVal = props.falseValue;
142
156
  modelValue.value = isEqual(modelValue.value, trueVal) ? falseVal : trueVal;
143
157
  }
158
+ // Call the handler FIRST, then decide. Auto-loading is documented as
159
+ // tracking *async* click handlers, but the counter used to increment before
160
+ // the call, so a plain sync handler still passed through a loading state for
161
+ // one microtask. In isolation that never paints — the flip and Vue's
162
+ // re-render settle in the same drain. In a real app it does: a consumer's
163
+ // sync handler that opened a dialog flickered the spinner on every click,
164
+ // and `disable-auto-loading` was the only cure. A sync handler now never
165
+ // touches the counter at all, so there is no window to catch.
166
+ const result = ((attrs.onClick ?? noop) as (...args: any[]) => any)(event);
167
+ if (!result || typeof result.then !== 'function') return result;
168
+
144
169
  internalLoading.value++;
145
170
  try {
146
- await ((attrs.onClick ?? noop) as (...args: any[]) => any)(event);
171
+ return await result;
147
172
  } finally {
148
173
  // Always release the auto-loading counter, even if the handler rejects,
149
174
  // so a failing async onClick doesn't leave the button stuck loading.
@@ -176,27 +201,29 @@ const sizeClasses = computed(() => {
176
201
  );
177
202
  });
178
203
 
179
- const propsToPass = toRef(() => ({
204
+ /** Props consumed here, never forwarded to the base button. */
205
+ const OWN_PROPS = new Set([
206
+ 'append:icon',
207
+ 'disableAutoLoading',
208
+ 'disabled',
209
+ 'interactiveWhileLoading',
210
+ 'falseValue',
211
+ 'group',
212
+ 'icon',
213
+ 'loading',
214
+ 'modelValue',
215
+ 'prepend:icon',
216
+ 'size',
217
+ 'trueValue',
218
+ 'variant',
219
+ ]);
220
+
221
+ // A `computed`, not a getter `toRef`: the getter re-ran the whole pick on
222
+ // every read — once per render of every button — which a virtualized table
223
+ // mounting a couple of buttons per row turned into measurable scroll cost.
224
+ const propsToPass = computed(() => ({
180
225
  ...forwardedAttrs.value,
181
- ...pickBy(
182
- props,
183
- (_, key) =>
184
- ![
185
- 'append:icon',
186
- 'disableAutoLoading',
187
- 'disabled',
188
- 'interactiveWhileLoading',
189
- 'falseValue',
190
- 'group',
191
- 'icon',
192
- 'loading',
193
- 'modelValue',
194
- 'prepend:icon',
195
- 'size',
196
- 'trueValue',
197
- 'variant',
198
- ].includes(key)
199
- ),
226
+ ...pickBy(props, (_, key) => !OWN_PROPS.has(key)),
200
227
  }));
201
228
 
202
229
  /**
@@ -315,9 +315,23 @@ export type BbCheckboxSlots = {
315
315
  .bb-base-input-container__layout--horizontal {
316
316
  align-items: flex-start;
317
317
 
318
+ /*
319
+ * `align-items` + `min-height` are what pin the control to the
320
+ * LABEL'S FIRST LINE instead of the block centre — measured: with a
321
+ * 4-line label the control's mid sits exactly on the first line's
322
+ * mid, and 28px above the block centre.
323
+ *
324
+ * There used to be a `display: inline-flex` here too, and it was
325
+ * doing none of that vertical work — but it silently killed
326
+ * `input-position`, whose only lever is `justify-items` (a grid
327
+ * property, inert on a flex container). So a described row with
328
+ * `input-position="right"` painted its control at the START of the
329
+ * column: 182px out on a 198px column (Q20.2). Removing the one
330
+ * declaration restores left/center/right and leaves the vertical
331
+ * geometry byte-identical.
332
+ */
318
333
  .bb-base-input-container__control {
319
334
  align-items: center;
320
- display: inline-flex;
321
335
  min-height: var(--bb-label-lh);
322
336
  }
323
337
  }
@@ -282,7 +282,8 @@ export type BbCheckboxGroupProps<T> = {
282
282
  /**
283
283
  * Legend rendering mode. `'outside'` renders the legend above the fieldset in the normal flow;
284
284
  * `'inside'` overlays the legend inside the fieldset border.
285
- * Floating mode is not supported for checkbox groups.
285
+ * Floating mode is not supported for option groups (checkbox, radio or
286
+ * switch) — there is no single field for the legend to float against.
286
287
  */
287
288
  legendMode?: 'outside' | 'inside';
288
289
 
@@ -68,9 +68,15 @@ export type BbCollapsibleProps = {
68
68
  /**
69
69
  * Used by v-model to trigger opening / closing the collapsible.
70
70
  *
71
+ * Optional, matching the runtime: `withDefaults` supplies `false`, so an
72
+ * omitted binding renders closed and Vue never warns. It was typed required
73
+ * while carrying that default, which made the manifest publish a row that
74
+ * was `required: true` AND `default: false` — a contradiction that read as
75
+ * a generator bug.
76
+ *
71
77
  * @defaultValue `false`
72
78
  */
73
- modelValue: boolean;
79
+ modelValue?: boolean;
74
80
  };
75
81
 
76
82
  export type BbCollapsibleSlots = {
@@ -66,7 +66,7 @@
66
66
 
67
67
  <script setup lang="ts">
68
68
  import { ref, computed } from 'vue';
69
- import { config } from 'virtual:bitboss-ui/config';
69
+ import { useConfig } from '@/composables/useConfig';
70
70
  import { isNotNil } from '@/utilities/functions/isNotNil';
71
71
  import { removedPropsFor } from '@/deprecation/removedProps';
72
72
  import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
@@ -78,7 +78,6 @@ import type {
78
78
  BbColorInputEvents,
79
79
  BbColorInputSlots,
80
80
  } from './types';
81
- export type { BbColorInputProps, BbColorInputEvents, BbColorInputSlots };
82
81
 
83
82
  const props = withDefaults(defineProps<BbColorInputProps>(), {
84
83
  // `undefined` (declared, not omitted) keeps `adaptive` three-state: it
@@ -87,10 +86,10 @@ const props = withDefaults(defineProps<BbColorInputProps>(), {
87
86
  // keeping the Boolean type so the valueless `adaptive` shorthand → `true`.
88
87
  adaptive: undefined,
89
88
  });
90
-
91
89
  const emit = defineEmits<BaseColorInputEvents>();
92
-
93
90
  defineSlots<BbColorInputSlots>();
91
+ const config = useConfig();
92
+ export type { BbColorInputProps, BbColorInputEvents, BbColorInputSlots };
94
93
 
95
94
  if (process.env.NODE_ENV !== 'production')
96
95
  warnRemovedAttrs('BbColorInput', removedPropsFor('BbColorInput'));
@@ -80,7 +80,7 @@
80
80
 
81
81
  <script setup lang="ts">
82
82
  import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue';
83
- import { config } from 'virtual:bitboss-ui/config';
83
+ import { useConfig } from '@/composables/useConfig';
84
84
  import { createReusableTemplate } from '@vueuse/core';
85
85
  import { extractDomContainer } from '@/utilities/functions/extractDomContainer';
86
86
  import { useClosingInert } from '@/composables/useClosingInert';
@@ -98,7 +98,6 @@ import type {
98
98
  BbColorPaletteSlots,
99
99
  } from './types';
100
100
  import { transitions } from '@/utilities/misc/transitions';
101
- export type { BbColorPaletteProps, BbColorPaletteEvents, BbColorPaletteSlots };
102
101
 
103
102
  const props = withDefaults(defineProps<BbColorPaletteProps>(), {
104
103
  // `undefined` (declared, not omitted) keeps `adaptive` three-state: it disables
@@ -112,10 +111,10 @@ const props = withDefaults(defineProps<BbColorPaletteProps>(), {
112
111
  eyeDropper: false,
113
112
  transitionDuration: transitions.medium,
114
113
  });
115
-
116
114
  const emit = defineEmits<BbColorPaletteEvents>();
117
-
118
115
  defineSlots<BbColorPaletteSlots>();
116
+ const config = useConfig();
117
+ export type { BbColorPaletteProps, BbColorPaletteEvents, BbColorPaletteSlots };
119
118
 
120
119
  if (process.env.NODE_ENV !== 'production')
121
120
  warnRemovedAttrs('BbColorPalette', removedPropsFor('BbColorPalette'));
@@ -104,7 +104,7 @@
104
104
  </template>
105
105
 
106
106
  <script setup lang="ts">
107
- import { config } from 'virtual:bitboss-ui/config';
107
+ import { useConfig } from '@/composables/useConfig';
108
108
  import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue';
109
109
  import { createReusableTemplate } from '@vueuse/core';
110
110
  import { extractDomContainer } from '@/utilities/functions/extractDomContainer';
@@ -144,7 +144,11 @@ const props = withDefaults(defineProps<BbDatePickerProps>(), {
144
144
  });
145
145
 
146
146
  const emit = defineEmits<BbDatePickerEvents>();
147
+
147
148
  defineSlots<BbDatePickerSlots>();
149
+
150
+ const config = useConfig();
151
+
148
152
  /**
149
153
  * The time rail is a `datetime` affordance only. Every former `props.datetime`
150
154
  * read goes through this, so the type union stays the single source of truth.
@@ -88,7 +88,7 @@ import BaseDatePickerInput from '../BbBaseDatePickerInput/BbBaseDatePickerInput.
88
88
  import BaseInputContainer from '../BbBaseInputContainer/BbBaseInputContainer.vue';
89
89
  import type { BaseDatePickerInputEvents } from '../BbBaseDatePickerInput/types';
90
90
  import { ref, computed, onBeforeUnmount, onDeactivated } from 'vue';
91
- import { config } from 'virtual:bitboss-ui/config';
91
+ import { useConfig } from '@/composables/useConfig';
92
92
  import { removedPropsFor } from '@/deprecation/removedProps';
93
93
  import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
94
94
  import { isNotEmpty } from '@/utilities/functions/isNotEmpty';
@@ -106,9 +106,13 @@ const props = withDefaults(defineProps<BbDatePickerInputProps>(), {
106
106
  // resolves to `true`.
107
107
  adaptive: undefined,
108
108
  });
109
+
109
110
  const emit = defineEmits<BaseDatePickerInputEvents>();
111
+
110
112
  defineSlots<BbDatePickerInputSlots>();
111
113
 
114
+ const config = useConfig();
115
+
112
116
  if (process.env.NODE_ENV !== 'production')
113
117
  warnRemovedAttrs('BbDatePickerInput', removedPropsFor('BbDatePickerInput'));
114
118