bitboss-ui 3.0.0-beta.66 → 3.0.0-beta.67

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 (799) hide show
  1. package/README.md +3 -2
  2. package/bin/bitboss-ui-mcp.mjs +40 -9
  3. package/dist/_virtual/_plugin-vue_export-helper.js +1 -2
  4. package/dist/ai/BbAlert.md +1 -1
  5. package/dist/ai/BbAvatar.md +1 -1
  6. package/dist/ai/BbBadge.md +1 -1
  7. package/dist/ai/BbBadgeButton.md +2 -2
  8. package/dist/ai/BbBaseButton.md +1 -1
  9. package/dist/ai/BbBreadcrumbs.md +1 -1
  10. package/dist/ai/BbButton.md +7 -1
  11. package/dist/ai/BbCalendar.md +101 -21
  12. package/dist/ai/BbCheckbox.md +4 -0
  13. package/dist/ai/BbCheckboxGroup.md +1 -1
  14. package/dist/ai/BbColorInput.md +3 -2
  15. package/dist/ai/BbConfirm.md +2 -1
  16. package/dist/ai/BbDatePicker.md +30 -18
  17. package/dist/ai/BbDatePickerInput.md +84 -22
  18. package/dist/ai/BbDialog.md +6 -3
  19. package/dist/ai/BbDropdown.md +5 -5
  20. package/dist/ai/BbDropdownButton.md +4 -1
  21. package/dist/ai/BbForm.md +4 -4
  22. package/dist/ai/BbNumberInput.md +16 -12
  23. package/dist/ai/BbOffCanvas.md +5 -5
  24. package/dist/ai/BbPagination.md +1 -1
  25. package/dist/ai/BbRadio.md +4 -0
  26. package/dist/ai/BbRadioGroup.md +1 -1
  27. package/dist/ai/BbRating.md +4 -4
  28. package/dist/ai/BbSelect.md +5 -4
  29. package/dist/ai/BbSelectPopover.md +3 -4
  30. package/dist/ai/BbSlider.md +1 -1
  31. package/dist/ai/BbSwitch.md +4 -0
  32. package/dist/ai/BbTable.md +19 -6
  33. package/dist/ai/BbTabs.md +1 -1
  34. package/dist/ai/BbTabsList.md +1 -1
  35. package/dist/ai/BbTag.md +2 -2
  36. package/dist/ai/BbTextInput.md +4 -4
  37. package/dist/ai/BbTextarea.md +1 -1
  38. package/dist/ai/BbTimePicker.md +3 -2
  39. package/dist/ai/BbTimePickerInput.md +7 -10
  40. package/dist/ai/BbTooltip.md +2 -2
  41. package/dist/ai/BbTree.md +2 -2
  42. package/dist/ai/ChipsBox.md +1 -1
  43. package/dist/ai/CommonField.md +2 -2
  44. package/dist/ai/CommonFieldInput.md +1 -1
  45. package/dist/ai/FlatListBox.md +1 -1
  46. package/dist/ai/GroupedListBox.md +1 -1
  47. package/dist/ai/ListBox.md +1 -1
  48. package/dist/ai/OptionsContainer.md +1 -1
  49. package/dist/ai/changelog.json +245 -537
  50. package/dist/ai/components.json +57 -57
  51. package/dist/ai/composables/useBbConfig.md +2 -2
  52. package/dist/ai/guides/component-picker.md +3 -2
  53. package/dist/ai/guides/design-language.md +25 -2
  54. package/dist/ai/guides/design-tokens.md +27 -13
  55. package/dist/ai/guides/eslint-rules.md +1 -1
  56. package/dist/ai/guides/fetch-items-playbook.md +1 -0
  57. package/dist/ai/guides/icons-policy.md +1 -1
  58. package/dist/ai/guides/inline-edit-playbook.md +1 -1
  59. package/dist/ai/guides/installation-and-plugin-setup.md +16 -16
  60. package/dist/ai/guides/migration/components/bb-select.md +1 -2
  61. package/dist/ai/guides/migration/components/bb-table.md +3 -3
  62. package/dist/ai/guides/migration/v2-to-v3.md +49 -1
  63. package/dist/ai/guides/migration/v3-beta-tooling.md +3 -3
  64. package/dist/ai/guides/passthrough.md +51 -10
  65. package/dist/ai/guides/validated-forms.md +3 -3
  66. package/dist/ai/guides/validation-libraries.md +11 -13
  67. package/dist/ai/helpers/inertia/manifest.json +2 -2
  68. package/dist/ai/manifest/common.json +3 -1
  69. package/dist/ai/manifest/components/BbAvatar.tree.json +1 -1
  70. package/dist/ai/manifest/components/BbBadge.json +2 -2
  71. package/dist/ai/manifest/components/BbBadge.tree.json +1 -1
  72. package/dist/ai/manifest/components/BbBadgeButton.json +2 -2
  73. package/dist/ai/manifest/components/BbBadgeButton.tree.json +1 -1
  74. package/dist/ai/manifest/components/BbBaseButton.json +2 -2
  75. package/dist/ai/manifest/components/BbBaseCheckboxIcon.json +1 -1
  76. package/dist/ai/manifest/components/BbBaseRadioIcon.json +1 -1
  77. package/dist/ai/manifest/components/BbBaseSwitchIcon.json +1 -1
  78. package/dist/ai/manifest/components/BbBreadcrumbs.json +3 -3
  79. package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
  80. package/dist/ai/manifest/components/BbButton.json +2 -2
  81. package/dist/ai/manifest/components/BbButton.tree.json +5 -0
  82. package/dist/ai/manifest/components/BbCalendar.json +27 -25
  83. package/dist/ai/manifest/components/BbCalendar.tree.json +16 -2
  84. package/dist/ai/manifest/components/BbCheckbox.json +1 -1
  85. package/dist/ai/manifest/components/BbCheckbox.tree.json +4 -1
  86. package/dist/ai/manifest/components/BbCheckboxGroup.json +2 -2
  87. package/dist/ai/manifest/components/BbColorInput.json +18 -17
  88. package/dist/ai/manifest/components/BbColorPalette.json +1 -1
  89. package/dist/ai/manifest/components/BbConfirm.json +2 -1
  90. package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
  91. package/dist/ai/manifest/components/BbDatePicker.json +28 -26
  92. package/dist/ai/manifest/components/BbDatePicker.tree.json +1 -1
  93. package/dist/ai/manifest/components/BbDatePickerInput.json +36 -34
  94. package/dist/ai/manifest/components/BbDatePickerInput.tree.json +3 -2
  95. package/dist/ai/manifest/components/BbDialog.json +3 -3
  96. package/dist/ai/manifest/components/BbDialog.tree.json +4 -1
  97. package/dist/ai/manifest/components/BbDropdown.json +9 -9
  98. package/dist/ai/manifest/components/BbDropdown.tree.json +2 -2
  99. package/dist/ai/manifest/components/BbDropdownButton.json +3 -3
  100. package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
  101. package/dist/ai/manifest/components/BbDropzone.json +1 -1
  102. package/dist/ai/manifest/components/BbHost.tree.json +1 -1
  103. package/dist/ai/manifest/components/BbNumberInput.json +8 -8
  104. package/dist/ai/manifest/components/BbOffCanvas.json +3 -3
  105. package/dist/ai/manifest/components/BbOffCanvas.tree.json +6 -3
  106. package/dist/ai/manifest/components/BbPagination.json +1 -1
  107. package/dist/ai/manifest/components/BbPagination.tree.json +1 -1
  108. package/dist/ai/manifest/components/BbRadio.json +1 -1
  109. package/dist/ai/manifest/components/BbRadio.tree.json +4 -1
  110. package/dist/ai/manifest/components/BbRadioGroup.json +2 -2
  111. package/dist/ai/manifest/components/BbRating.json +7 -7
  112. package/dist/ai/manifest/components/BbRating.tree.json +2 -2
  113. package/dist/ai/manifest/components/BbSelect.json +21 -21
  114. package/dist/ai/manifest/components/BbSelectPopover.json +9 -9
  115. package/dist/ai/manifest/components/BbSelectPopover.tree.json +1 -0
  116. package/dist/ai/manifest/components/BbSlider.json +11 -11
  117. package/dist/ai/manifest/components/BbSwitch.json +1 -1
  118. package/dist/ai/manifest/components/BbSwitch.tree.json +4 -1
  119. package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
  120. package/dist/ai/manifest/components/BbTable.json +22 -22
  121. package/dist/ai/manifest/components/BbTable.tree.json +3 -1
  122. package/dist/ai/manifest/components/BbTabs.json +6 -6
  123. package/dist/ai/manifest/components/BbTabsList.json +4 -4
  124. package/dist/ai/manifest/components/BbTabsPanels.json +2 -2
  125. package/dist/ai/manifest/components/BbTag.json +2 -2
  126. package/dist/ai/manifest/components/BbTextInput.json +4 -4
  127. package/dist/ai/manifest/components/BbTextInput.tree.json +2 -2
  128. package/dist/ai/manifest/components/BbTextarea.json +2 -2
  129. package/dist/ai/manifest/components/BbTimePicker.json +6 -6
  130. package/dist/ai/manifest/components/BbTimePickerInput.json +18 -18
  131. package/dist/ai/manifest/components/BbToast.json +1 -1
  132. package/dist/ai/manifest/components/BbToast.tree.json +1 -1
  133. package/dist/ai/manifest/components/BbTooltip.tree.json +2 -2
  134. package/dist/ai/manifest/components/BbTree.json +3 -3
  135. package/dist/ai/manifest/components/BbTree.tree.json +1 -1
  136. package/dist/ai/manifest/components/CommonField.json +2 -2
  137. package/dist/ai/manifest/components/CommonFieldInput.tree.json +1 -1
  138. package/dist/ai/manifest/components/CommonPopover.tree.json +3 -0
  139. package/dist/ai/manifest/components/FlatListBox.json +1 -1
  140. package/dist/ai/manifest/components/GroupedListBox.json +1 -1
  141. package/dist/ai/manifest/components/ListBox.json +1 -1
  142. package/dist/ai/manifest/components/OptionsContainer.json +1 -1
  143. package/dist/ai/manifest/index.json +2 -2
  144. package/dist/ai/manifest/types.advanced.json +2 -2
  145. package/dist/ai/manifest/types.api.json +1 -1
  146. package/dist/ai/source/BbAvatar.md +1 -1
  147. package/dist/ai/source/BbBadge.md +30 -10
  148. package/dist/ai/source/BbBadgeButton.md +30 -10
  149. package/dist/ai/source/BbBaseButton.md +270 -267
  150. package/dist/ai/source/BbBaseCheckboxIcon.md +55 -51
  151. package/dist/ai/source/BbBaseRadioIcon.md +49 -45
  152. package/dist/ai/source/BbBaseSwitchIcon.md +56 -52
  153. package/dist/ai/source/BbBreadcrumbs.md +62 -47
  154. package/dist/ai/source/BbButton.md +89 -4
  155. package/dist/ai/source/BbCalendar.md +508 -118
  156. package/dist/ai/source/BbCheckbox.md +215 -171
  157. package/dist/ai/source/BbCheckboxGroup.md +20 -16
  158. package/dist/ai/source/BbColorInput.md +74 -18
  159. package/dist/ai/source/BbColorPalette.md +135 -121
  160. package/dist/ai/source/BbConfirm.md +25 -7
  161. package/dist/ai/source/BbConfirmPortal.md +16 -6
  162. package/dist/ai/source/BbDatePicker.md +204 -161
  163. package/dist/ai/source/BbDatePickerInput.md +289 -23
  164. package/dist/ai/source/BbDialog.md +145 -131
  165. package/dist/ai/source/BbDropdown.md +48 -10
  166. package/dist/ai/source/BbDropdownButton.md +56 -13
  167. package/dist/ai/source/BbDropdownGroup.md +48 -10
  168. package/dist/ai/source/BbDropzone.md +86 -78
  169. package/dist/ai/source/BbNumberInput.md +60 -22
  170. package/dist/ai/source/BbOffCanvas.md +155 -140
  171. package/dist/ai/source/BbPagination.md +97 -85
  172. package/dist/ai/source/BbRadio.md +204 -160
  173. package/dist/ai/source/BbRadioGroup.md +17 -15
  174. package/dist/ai/source/BbRating.md +157 -144
  175. package/dist/ai/source/BbSelect.md +77 -8
  176. package/dist/ai/source/BbSelectPopover.md +381 -336
  177. package/dist/ai/source/BbSlider.md +200 -187
  178. package/dist/ai/source/BbSwitch.md +79 -8
  179. package/dist/ai/source/BbSwitchGroup.md +20 -16
  180. package/dist/ai/source/BbTable.md +470 -386
  181. package/dist/ai/source/BbTabs.md +62 -22
  182. package/dist/ai/source/BbTabsList.md +62 -22
  183. package/dist/ai/source/BbTabsPanels.md +62 -22
  184. package/dist/ai/source/BbTabsRoot.md +62 -22
  185. package/dist/ai/source/BbTag.md +41 -21
  186. package/dist/ai/source/BbTextInput.md +45 -11
  187. package/dist/ai/source/BbTextarea.md +39 -7
  188. package/dist/ai/source/BbTimePicker.md +116 -103
  189. package/dist/ai/source/BbTimePickerInput.md +64 -8
  190. package/dist/ai/source/BbToast.md +26 -18
  191. package/dist/ai/source/BbToastPortal.md +26 -18
  192. package/dist/ai/source/BbTooltip.md +2 -2
  193. package/dist/ai/source/BbTree.md +16 -3
  194. package/dist/ai/source/CommonField.md +2 -2
  195. package/dist/ai/source/CommonFieldInput.md +2 -2
  196. package/dist/ai/source/CommonPopover.md +7 -0
  197. package/dist/ai/source/CommonTimeSelector.md +3 -1
  198. package/dist/ai/source/FlatListBox.md +1 -1
  199. package/dist/ai/source/GroupedListBox.md +1 -1
  200. package/dist/ai/source/ListBox.md +1 -1
  201. package/dist/ai/source/OptionsContainer.md +1 -1
  202. package/dist/assets/css/reset.css_inline.js +1 -2
  203. package/dist/assets/svgs/alert.svg_raw.js +1 -2
  204. package/dist/assets/svgs/calendar.svg_raw.js +1 -2
  205. package/dist/assets/svgs/check_stroke.svg_raw.js +1 -2
  206. package/dist/assets/svgs/chevron_down.svg_raw.js +1 -2
  207. package/dist/assets/svgs/chevron_right.svg_raw.js +1 -2
  208. package/dist/assets/svgs/clear.svg_raw.js +1 -2
  209. package/dist/assets/svgs/clock.svg_raw.js +1 -2
  210. package/dist/assets/svgs/error.svg_raw.js +1 -2
  211. package/dist/assets/svgs/search.svg_raw.js +1 -2
  212. package/dist/assets/svgs/spinner.svg_raw.js +1 -2
  213. package/dist/assets/svgs/star.svg_raw.js +1 -2
  214. package/dist/assets/svgs/user.svg_raw.js +1 -2
  215. package/dist/components/BbAccordion/BbAccordion.vue.js +1 -2
  216. package/dist/components/BbAccordion/BbAccordion.vue_vue_type_script_setup_true_lang.js +21 -22
  217. package/dist/components/BbAccordion/types.js +1 -2
  218. package/dist/components/BbAlert/BbAlert.vue.js +1 -2
  219. package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +28 -29
  220. package/dist/components/BbAlert/types.js +1 -2
  221. package/dist/components/BbAsterisk/BbAsterisk.vue.js +1 -2
  222. package/dist/components/BbAsterisk/BbAsterisk.vue_vue_type_script_setup_true_lang.js +1 -2
  223. package/dist/components/BbAsterisk/types.js +1 -2
  224. package/dist/components/BbAvatar/BbAvatar.vue.js +1 -2
  225. package/dist/components/BbAvatar/BbAvatar.vue_vue_type_script_setup_true_lang.js +20 -21
  226. package/dist/components/BbAvatar/types.js +1 -2
  227. package/dist/components/BbBadge/BadgeBodyContent.vue.js +1 -2
  228. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +13 -14
  229. package/dist/components/BbBadge/BbBadge.vue.js +1 -2
  230. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +31 -33
  231. package/dist/components/BbBadge/BbBadgeButton.vue.js +1 -2
  232. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +11 -16
  233. package/dist/components/BbBadge/badgeButtonContext.js +1 -2
  234. package/dist/components/BbBadge/types.d.ts +20 -4
  235. package/dist/components/BbBadge/types.js +7 -2
  236. package/dist/components/BbBaseButton/BbBaseButton.vue.js +1 -2
  237. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +12 -13
  238. package/dist/components/BbBaseButton/RouterComponent.vue.js +1 -2
  239. package/dist/components/BbBaseButton/RouterComponent.vue_vue_type_script_setup_true_lang.js +8 -9
  240. package/dist/components/BbBaseButton/types.d.ts +4 -2
  241. package/dist/components/BbBaseButton/types.js +6 -2
  242. package/dist/components/BbBaseButton/useLinkState.js +5 -6
  243. package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue.js +1 -2
  244. package/dist/components/BbBaseCheckboxIcon/BbBaseCheckboxIcon.vue_vue_type_script_setup_true_lang.js +16 -17
  245. package/dist/components/BbBaseCheckboxIcon/types.d.ts +4 -2
  246. package/dist/components/BbBaseCheckboxIcon/types.js +3 -3
  247. package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue.js +1 -2
  248. package/dist/components/BbBaseRadioIcon/BbBaseRadioIcon.vue_vue_type_script_setup_true_lang.js +13 -14
  249. package/dist/components/BbBaseRadioIcon/types.d.ts +4 -2
  250. package/dist/components/BbBaseRadioIcon/types.js +3 -3
  251. package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue.js +1 -2
  252. package/dist/components/BbBaseSwitchIcon/BbBaseSwitchIcon.vue_vue_type_script_setup_true_lang.js +15 -16
  253. package/dist/components/BbBaseSwitchIcon/types.d.ts +4 -2
  254. package/dist/components/BbBaseSwitchIcon/types.js +3 -3
  255. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue.js +1 -2
  256. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +156 -167
  257. package/dist/components/BbBreadcrumbs/estimateBreadcrumbItemWidth.js +1 -2
  258. package/dist/components/BbBreadcrumbs/types.d.ts +19 -5
  259. package/dist/components/BbBreadcrumbs/types.js +8 -3
  260. package/dist/components/BbButton/BbButton.vue.js +1 -2
  261. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +41 -42
  262. package/dist/components/BbButton/toggleRoving.js +2 -3
  263. package/dist/components/BbButton/types.d.ts +4 -2
  264. package/dist/components/BbButton/types.js +8 -2
  265. package/dist/components/BbCalendar/BbCalendar.vue.d.ts +41 -71
  266. package/dist/components/BbCalendar/BbCalendar.vue.js +1 -2
  267. package/dist/components/BbCalendar/BbCalendar.vue_vue_type_script_setup_true_lang.js +261 -280
  268. package/dist/components/BbCalendar/CalendarMonthPanel.vue.js +1 -2
  269. package/dist/components/BbCalendar/CalendarMonthPanel.vue_vue_type_script_setup_true_lang.js +15 -17
  270. package/dist/components/BbCalendar/CalendarYearPanel.vue.js +1 -2
  271. package/dist/components/BbCalendar/CalendarYearPanel.vue_vue_type_script_setup_true_lang.js +55 -57
  272. package/dist/components/BbCalendar/calendarHost.js +1 -2
  273. package/dist/components/BbCalendar/types.d.ts +75 -30
  274. package/dist/components/BbCalendar/types.js +54 -3
  275. package/dist/components/BbCalendar/useCalendarContext.js +1 -2
  276. package/dist/components/BbCalendar/useCalendarGrid.js +180 -193
  277. package/dist/components/BbCalendar/useDayGrid.d.ts +17 -0
  278. package/dist/components/BbCalendar/useDayGrid.js +159 -155
  279. package/dist/components/BbCalendar/useDayjsLocale.d.ts +6 -0
  280. package/dist/components/BbCalendar/useDayjsLocale.js +10 -4
  281. package/dist/components/BbCalendar/useToday.js +1 -2
  282. package/dist/components/BbCheckbox/BbCheckbox.vue.js +1 -2
  283. package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +109 -116
  284. package/dist/components/BbCheckbox/types.d.ts +4 -2
  285. package/dist/components/BbCheckbox/types.js +3 -3
  286. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.d.ts +21 -3
  287. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue.js +1 -2
  288. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +126 -132
  289. package/dist/components/BbCheckboxGroup/types.d.ts +12 -6
  290. package/dist/components/BbCheckboxGroup/types.js +8 -9
  291. package/dist/components/BbCollapsible/BbCollapsible.vue.js +1 -2
  292. package/dist/components/BbCollapsible/BbCollapsible.vue_vue_type_script_setup_true_lang.js +12 -13
  293. package/dist/components/BbCollapsible/types.js +1 -2
  294. package/dist/components/BbColorInput/BbColorInput.vue.js +1 -2
  295. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +171 -151
  296. package/dist/components/BbColorInput/types.d.ts +26 -11
  297. package/dist/components/BbColorInput/types.js +18 -9
  298. package/dist/components/BbColorPalette/BbColorPalette.vue.js +1 -2
  299. package/dist/components/BbColorPalette/BbColorPalette.vue_vue_type_script_setup_true_lang.js +218 -226
  300. package/dist/components/BbColorPalette/types.d.ts +12 -4
  301. package/dist/components/BbColorPalette/types.js +4 -3
  302. package/dist/components/BbConfirm/BbConfirm.vue.js +1 -2
  303. package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +108 -97
  304. package/dist/components/BbConfirm/BbConfirmHost.js +9 -10
  305. package/dist/components/BbConfirm/BbConfirmPortal.vue.js +1 -2
  306. package/dist/components/BbConfirm/BbConfirmPortal.vue_vue_type_script_setup_true_lang.js +2 -3
  307. package/dist/components/BbConfirm/confirmEntry.js +1 -2
  308. package/dist/components/BbConfirm/types.d.ts +8 -4
  309. package/dist/components/BbConfirm/types.js +3 -3
  310. package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +44 -88
  311. package/dist/components/BbDatePicker/BbDatePicker.vue.js +1 -2
  312. package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +172 -230
  313. package/dist/components/BbDatePicker/types.d.ts +44 -19
  314. package/dist/components/BbDatePicker/types.js +6 -3
  315. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +70 -194
  316. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.js +1 -2
  317. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +481 -596
  318. package/dist/components/BbDatePickerInput/dateFieldLayout.js +1 -2
  319. package/dist/components/BbDatePickerInput/types.d.ts +62 -14
  320. package/dist/components/BbDatePickerInput/types.js +67 -7
  321. package/dist/components/BbDialog/BbDialog.vue.d.ts +1 -1
  322. package/dist/components/BbDialog/BbDialog.vue.js +1 -2
  323. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +221 -224
  324. package/dist/components/BbDialog/types.d.ts +5 -3
  325. package/dist/components/BbDialog/types.js +3 -3
  326. package/dist/components/BbDialog/useDialogStack.js +1 -2
  327. package/dist/components/BbDropdown/AdaptiveDropdown.vue.js +1 -2
  328. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +56 -57
  329. package/dist/components/BbDropdown/BbDropdown.vue.js +1 -2
  330. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +259 -294
  331. package/dist/components/BbDropdown/BbDropdownGroup.vue.js +1 -2
  332. package/dist/components/BbDropdown/BbDropdownGroup.vue_vue_type_script_setup_true_lang.js +19 -22
  333. package/dist/components/BbDropdown/BbDropdownList.vue.js +1 -2
  334. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +337 -354
  335. package/dist/components/BbDropdown/DropdownPipelineResolver.vue.js +1 -2
  336. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +127 -127
  337. package/dist/components/BbDropdown/DropdownRow.vue.js +1 -2
  338. package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +21 -22
  339. package/dist/components/BbDropdown/normalizeGroups.js +20 -21
  340. package/dist/components/BbDropdown/types.d.ts +20 -4
  341. package/dist/components/BbDropdown/types.js +28 -2
  342. package/dist/components/BbDropdown/useDropdownContext.js +1 -2
  343. package/dist/components/BbDropdown/useDropdownGroupRegistry.js +1 -2
  344. package/dist/components/BbDropdownButton/BbDropdownButton.vue.js +1 -2
  345. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +61 -62
  346. package/dist/components/BbDropdownButton/types.d.ts +16 -5
  347. package/dist/components/BbDropdownButton/types.js +13 -8
  348. package/dist/components/BbDropzone/BbDropzone.vue.d.ts +9 -1
  349. package/dist/components/BbDropzone/BbDropzone.vue.js +1 -2
  350. package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +141 -150
  351. package/dist/components/BbDropzone/types.d.ts +4 -2
  352. package/dist/components/BbDropzone/types.js +8 -2
  353. package/dist/components/BbForm/BbForm.vue.js +1 -2
  354. package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +154 -159
  355. package/dist/components/BbForm/BbFormCustomField.js +2 -3
  356. package/dist/components/BbForm/bindFormField.js +2 -3
  357. package/dist/components/BbForm/formFields.js +1 -2
  358. package/dist/components/BbForm/formSchema.js +15 -53
  359. package/dist/components/BbHost/BbHost.vue.js +1 -2
  360. package/dist/components/BbHost/BbHost.vue_vue_type_script_setup_true_lang.js +1 -2
  361. package/dist/components/BbHost/BbHostOpening.js +12 -14
  362. package/dist/components/BbHoverCard/BbHoverCard.vue.js +1 -2
  363. package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +147 -152
  364. package/dist/components/BbHoverCard/BbHoverCardPortal.vue.js +1 -2
  365. package/dist/components/BbHoverCard/BbHoverCardPortal.vue_vue_type_script_setup_true_lang.js +1 -2
  366. package/dist/components/BbHoverCard/hoverCardFocus.js +1 -2
  367. package/dist/components/BbHoverCard/types.js +1 -2
  368. package/dist/components/BbIcon/BbIcon.vue.js +1 -2
  369. package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +24 -25
  370. package/dist/components/BbIcon/iconCache.js +1 -2
  371. package/dist/components/BbIcon/types.js +1 -2
  372. package/dist/components/BbIndicator/BbIndicator.vue.js +1 -2
  373. package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +9 -10
  374. package/dist/components/BbIndicator/types.js +1 -2
  375. package/dist/components/BbNumberInput/BbNumberInput.vue.js +1 -2
  376. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +336 -369
  377. package/dist/components/BbNumberInput/numberDisplay.js +1 -2
  378. package/dist/components/BbNumberInput/platform.js +1 -2
  379. package/dist/components/BbNumberInput/types.d.ts +27 -6
  380. package/dist/components/BbNumberInput/types.js +11 -10
  381. package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
  382. package/dist/components/BbOffCanvas/BbOffCanvas.vue.js +1 -2
  383. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +388 -411
  384. package/dist/components/BbOffCanvas/hostCloseLabel.js +1 -2
  385. package/dist/components/BbOffCanvas/sheetAttrs.js +1 -2
  386. package/dist/components/BbOffCanvas/sheetSnap.js +3 -8
  387. package/dist/components/BbOffCanvas/types.d.ts +5 -3
  388. package/dist/components/BbOffCanvas/types.js +3 -3
  389. package/dist/components/BbOffCanvas/useOffCanvasStack.js +1 -2
  390. package/dist/components/BbPagination/BbPagination.vue.js +1 -2
  391. package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +84 -85
  392. package/dist/components/BbPagination/paginationFit.js +0 -1
  393. package/dist/components/BbPagination/types.d.ts +12 -4
  394. package/dist/components/BbPagination/types.js +4 -3
  395. package/dist/components/BbPopover/BbPopover.vue.js +1 -2
  396. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +141 -160
  397. package/dist/components/BbPopover/BbPopoverPortal.vue.js +1 -2
  398. package/dist/components/BbPopover/BbPopoverPortal.vue_vue_type_script_setup_true_lang.js +1 -2
  399. package/dist/components/BbPopover/types.js +1 -2
  400. package/dist/components/BbProgress/BbProgress.vue.js +1 -2
  401. package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +16 -17
  402. package/dist/components/BbProgress/types.js +1 -2
  403. package/dist/components/BbPtScope/BbPtScope.vue.js +1 -2
  404. package/dist/components/BbPtScope/BbPtScope.vue_vue_type_script_setup_true_lang.js +1 -2
  405. package/dist/components/BbRadio/BbRadio.vue.js +1 -2
  406. package/dist/components/BbRadio/BbRadio.vue_vue_type_script_setup_true_lang.js +46 -50
  407. package/dist/components/BbRadio/types.d.ts +4 -2
  408. package/dist/components/BbRadio/types.js +3 -3
  409. package/dist/components/BbRadioGroup/BbRadioGroup.vue.d.ts +20 -2
  410. package/dist/components/BbRadioGroup/BbRadioGroup.vue.js +1 -2
  411. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +178 -184
  412. package/dist/components/BbRadioGroup/types.d.ts +12 -6
  413. package/dist/components/BbRadioGroup/types.js +8 -9
  414. package/dist/components/BbRating/BbRating.vue.js +1 -2
  415. package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +143 -155
  416. package/dist/components/BbRating/types.d.ts +15 -5
  417. package/dist/components/BbRating/types.js +10 -3
  418. package/dist/components/BbSelect/BbSelect.vue.d.ts +51 -73
  419. package/dist/components/BbSelect/BbSelect.vue.js +1 -2
  420. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +173 -205
  421. package/dist/components/BbSelect/types.d.ts +29 -5
  422. package/dist/components/BbSelect/types.js +17 -2
  423. package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +21 -23
  424. package/dist/components/BbSelectPopover/BbSelectPopover.vue.js +1 -2
  425. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +536 -598
  426. package/dist/components/BbSelectPopover/knownItems.js +1 -2
  427. package/dist/components/BbSelectPopover/sheetChipAttrs.js +1 -2
  428. package/dist/components/BbSelectPopover/types.d.ts +20 -6
  429. package/dist/components/BbSelectPopover/types.js +9 -3
  430. package/dist/components/BbSlider/BbSlider.vue.d.ts +18 -17
  431. package/dist/components/BbSlider/BbSlider.vue.js +1 -2
  432. package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +213 -235
  433. package/dist/components/BbSlider/types.d.ts +14 -4
  434. package/dist/components/BbSlider/types.js +10 -3
  435. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.js +1 -2
  436. package/dist/components/BbSmoothHeight/BbSmoothHeight.vue_vue_type_script_setup_true_lang.js +14 -21
  437. package/dist/components/BbSmoothHeight/types.js +1 -2
  438. package/dist/components/BbSpinner/BbSpinner.vue.js +1 -2
  439. package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +14 -15
  440. package/dist/components/BbSpinner/types.js +1 -2
  441. package/dist/components/BbSwitch/BbSwitch.vue.js +1 -2
  442. package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +110 -117
  443. package/dist/components/BbSwitch/types.d.ts +21 -2
  444. package/dist/components/BbSwitch/types.js +8 -5
  445. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.d.ts +16 -2
  446. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue.js +1 -2
  447. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +155 -160
  448. package/dist/components/BbSwitchGroup/types.d.ts +11 -4
  449. package/dist/components/BbSwitchGroup/types.js +4 -5
  450. package/dist/components/BbTable/BbTable.vue.d.ts +1 -1
  451. package/dist/components/BbTable/BbTable.vue.js +1 -2
  452. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1128 -1301
  453. package/dist/components/BbTable/BbTableDataRow.js +1 -2
  454. package/dist/components/BbTable/BbTableEdgeRow.js +1 -2
  455. package/dist/components/BbTable/BbTableExpandRow.js +1 -2
  456. package/dist/components/BbTable/BbTableSelectToggle.js +17 -18
  457. package/dist/components/BbTable/gridWidgets.js +2 -7
  458. package/dist/components/BbTable/measuredFloors.js +67 -65
  459. package/dist/components/BbTable/textRuler.d.ts +3 -1
  460. package/dist/components/BbTable/textRuler.js +40 -39
  461. package/dist/components/BbTable/types.d.ts +40 -8
  462. package/dist/components/BbTable/types.js +45 -3
  463. package/dist/components/BbTable/useRowReorder.js +179 -203
  464. package/dist/components/BbTable/utils.d.ts +7 -1
  465. package/dist/components/BbTable/utils.js +35 -40
  466. package/dist/components/BbTabs/BbTabs.vue.d.ts +23 -16
  467. package/dist/components/BbTabs/BbTabs.vue.js +1 -2
  468. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +24 -30
  469. package/dist/components/BbTabs/BbTabsList.vue.js +1 -2
  470. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +19 -24
  471. package/dist/components/BbTabs/BbTabsPanels.vue.js +1 -2
  472. package/dist/components/BbTabs/BbTabsPanels.vue_vue_type_script_setup_true_lang.js +4 -7
  473. package/dist/components/BbTabs/BbTabsRoot.vue.js +1 -2
  474. package/dist/components/BbTabs/BbTabsRoot.vue_vue_type_script_setup_true_lang.js +6 -7
  475. package/dist/components/BbTabs/tablistName.js +1 -2
  476. package/dist/components/BbTabs/types.d.ts +37 -10
  477. package/dist/components/BbTabs/types.js +11 -3
  478. package/dist/components/BbTag/BbTag.vue.js +1 -2
  479. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +218 -243
  480. package/dist/components/BbTag/types.d.ts +20 -12
  481. package/dist/components/BbTag/types.js +19 -9
  482. package/dist/components/BbTextInput/BbTextInput.vue.d.ts +22 -8
  483. package/dist/components/BbTextInput/BbTextInput.vue.js +1 -2
  484. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +136 -142
  485. package/dist/components/BbTextInput/types.d.ts +15 -5
  486. package/dist/components/BbTextInput/types.js +22 -12
  487. package/dist/components/BbTextarea/BbTextarea.vue.d.ts +22 -8
  488. package/dist/components/BbTextarea/BbTextarea.vue.js +1 -2
  489. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +142 -144
  490. package/dist/components/BbTextarea/types.d.ts +15 -5
  491. package/dist/components/BbTextarea/types.js +22 -12
  492. package/dist/components/BbTimePicker/BbTimePicker.vue.d.ts +15 -9
  493. package/dist/components/BbTimePicker/BbTimePicker.vue.js +1 -2
  494. package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +108 -114
  495. package/dist/components/BbTimePicker/types.d.ts +14 -4
  496. package/dist/components/BbTimePicker/types.js +4 -3
  497. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.d.ts +31 -31
  498. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue.js +1 -2
  499. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +295 -327
  500. package/dist/components/BbTimePickerInput/types.d.ts +26 -5
  501. package/dist/components/BbTimePickerInput/types.js +17 -7
  502. package/dist/components/BbToast/BbToast.vue.js +1 -2
  503. package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +12 -17
  504. package/dist/components/BbToast/BbToastMessage.vue.js +1 -2
  505. package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +72 -74
  506. package/dist/components/BbToast/BbToastPortal.vue.js +1 -2
  507. package/dist/components/BbToast/BbToastPortal.vue_vue_type_script_setup_true_lang.js +2 -3
  508. package/dist/components/BbToast/BbToastRegion.vue.js +1 -2
  509. package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +31 -32
  510. package/dist/components/BbToast/types.d.ts +17 -5
  511. package/dist/components/BbToast/types.js +12 -13
  512. package/dist/components/BbTooltip/BbTooltip.vue.js +1 -2
  513. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +120 -121
  514. package/dist/components/BbTooltip/tooltipWarmup.js +0 -1
  515. package/dist/components/BbTooltip/types.js +1 -2
  516. package/dist/components/BbTree/BbTree.vue.d.ts +2 -3
  517. package/dist/components/BbTree/BbTree.vue.js +1 -2
  518. package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +28 -27
  519. package/dist/components/BbTree/BbTreeLevel.vue.js +1 -2
  520. package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +12 -20
  521. package/dist/components/BbTree/context.js +1 -2
  522. package/dist/components/BbTree/types.d.ts +13 -3
  523. package/dist/components/BbTree/types.js +4 -3
  524. package/dist/components/ChipsBox/ChipsBox.vue.js +1 -2
  525. package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +24 -26
  526. package/dist/components/ClearableButton/ClearableButton.vue.js +1 -2
  527. package/dist/components/ClearableButton/ClearableButton.vue_vue_type_script_setup_true_lang.js +1 -2
  528. package/dist/components/CloseIcon/CloseButton.vue.js +1 -2
  529. package/dist/components/CloseIcon/CloseButton.vue_vue_type_script_setup_true_lang.js +3 -4
  530. package/dist/components/CommaBox/CommaBox.vue.js +1 -2
  531. package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +20 -22
  532. package/dist/components/CommonField/CommonField.vue.js +1 -2
  533. package/dist/components/CommonField/CommonField.vue_vue_type_script_setup_true_lang.js +78 -73
  534. package/dist/components/CommonField/types.d.ts +2 -2
  535. package/dist/components/CommonFieldInput/CommonFieldInput.vue.js +1 -2
  536. package/dist/components/CommonFieldInput/CommonFieldInput.vue_vue_type_script_setup_true_lang.js +20 -21
  537. package/dist/components/CommonPopover/CommonPopover.vue.js +1 -2
  538. package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +92 -91
  539. package/dist/components/CommonTimeSelector/CommonTimeSelector.vue.js +1 -2
  540. package/dist/components/CommonTimeSelector/CommonTimeSelector.vue_vue_type_script_setup_true_lang.js +29 -38
  541. package/dist/components/CommonTimeSelector/useMeridiem.js +1 -2
  542. package/dist/components/ErrorIcon/ErrorIcon.vue.js +1 -2
  543. package/dist/components/ErrorIcon/ErrorIcon.vue_vue_type_script_setup_true_lang.js +1 -2
  544. package/dist/components/FlatListBox/FlatListBox.vue.js +1 -2
  545. package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +149 -156
  546. package/dist/components/FlatListBox/types.d.ts +1 -1
  547. package/dist/components/GroupedListBox/GroupedListBox.vue.js +1 -2
  548. package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +104 -111
  549. package/dist/components/GroupedListBox/types.d.ts +1 -1
  550. package/dist/components/ListBox/ListBox.vue.js +1 -2
  551. package/dist/components/ListBox/ListBox.vue_vue_type_script_setup_true_lang.js +21 -22
  552. package/dist/components/ListBox/types.d.ts +1 -1
  553. package/dist/components/OptionsContainer/OptionsContainer.vue.js +1 -2
  554. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +19 -23
  555. package/dist/components/OptionsContainer/types.d.ts +1 -1
  556. package/dist/components/Transitions/ScaleFade.vue.js +1 -2
  557. package/dist/components/Transitions/ScaleFade.vue_vue_type_script_setup_true_lang.js +1 -2
  558. package/dist/components/Transitions/Slide.vue.js +4 -5
  559. package/dist/components/Transitions/Slide.vue_vue_type_script_setup_true_lang.js +4 -5
  560. package/dist/components/WarningIcon/WarningIcon.vue.js +1 -2
  561. package/dist/components/WarningIcon/WarningIcon.vue_vue_type_script_setup_true_lang.js +1 -2
  562. package/dist/composables/autoHost.js +1 -2
  563. package/dist/composables/formSubmitLock.js +1 -2
  564. package/dist/composables/hostOpenings.js +6 -11
  565. package/dist/composables/hostRegistry.js +1 -2
  566. package/dist/composables/overlayRegistry.js +2 -3
  567. package/dist/composables/ssrMarker.js +1 -2
  568. package/dist/composables/useActiveInactiveState.js +1 -2
  569. package/dist/composables/useArray.js +1 -2
  570. package/dist/composables/useBaseOptions.js +19 -20
  571. package/dist/composables/useBbConfig.js +1 -2
  572. package/dist/composables/useBbDialog.js +18 -22
  573. package/dist/composables/useBbDropdown.js +3 -4
  574. package/dist/composables/useBbForm.js +6 -10
  575. package/dist/composables/useBbFormField.js +1 -2
  576. package/dist/composables/useBbOffCanvas.js +4 -5
  577. package/dist/composables/useBbTable.js +2 -3
  578. package/dist/composables/useBbTabs.js +51 -63
  579. package/dist/composables/useBodyScrollLock.js +1 -2
  580. package/dist/composables/useBreakpoint.js +1 -2
  581. package/dist/composables/useCancelableFunction.js +1 -2
  582. package/dist/composables/useCharacterCounter.js +2 -3
  583. package/dist/composables/useChoiceIndicator.js +4 -9
  584. package/dist/composables/useClosingInert.js +3 -8
  585. package/dist/composables/useCoarsePointer.js +1 -2
  586. package/dist/composables/useCoherence.js +1 -2
  587. package/dist/composables/useConfig.js +1 -2
  588. package/dist/composables/useConfirm.d.ts +22 -24
  589. package/dist/composables/useConfirm.js +7 -8
  590. package/dist/composables/useCountdown.js +6 -7
  591. package/dist/composables/useEscapeStackEntry.js +1 -2
  592. package/dist/composables/useFormBinding.js +6 -9
  593. package/dist/composables/useFrameworkDetection.js +1 -2
  594. package/dist/composables/useHashedWatcher.js +1 -2
  595. package/dist/composables/useHydrated.js +1 -2
  596. package/dist/composables/useId.js +1 -2
  597. package/dist/composables/useImeDismissBlur.js +2 -7
  598. package/dist/composables/useIndexById.js +1 -2
  599. package/dist/composables/useInertiaPage.js +1 -2
  600. package/dist/composables/useItemText.js +3 -3
  601. package/dist/composables/useItemValue.js +1 -2
  602. package/dist/composables/useItemsGetter.js +12 -19
  603. package/dist/composables/useKeyboardInset.js +0 -1
  604. package/dist/composables/useListboxFocus.js +1 -2
  605. package/dist/composables/useLocale.js +7 -8
  606. package/dist/composables/useLogger.js +1 -2
  607. package/dist/composables/useMobile.js +1 -2
  608. package/dist/composables/useOnDemandOpener.js +12 -13
  609. package/dist/composables/useOnFalsy.js +1 -2
  610. package/dist/composables/useOnTruthy.js +1 -2
  611. package/dist/composables/useOverlayNavigation.js +6 -11
  612. package/dist/composables/useOverlayYield.js +1 -2
  613. package/dist/composables/usePassthrough.js +207 -123
  614. package/dist/composables/usePrefill.js +11 -16
  615. package/dist/composables/useQuery.js +9 -22
  616. package/dist/composables/useRefusedCloseAnnouncement.js +1 -2
  617. package/dist/composables/useRoute.js +1 -2
  618. package/dist/composables/useRouter.js +1 -2
  619. package/dist/composables/useSafeArea.js +10 -11
  620. package/dist/composables/useSafeAreaInternal.js +4 -5
  621. package/dist/composables/useSegmentedFields.js +5 -17
  622. package/dist/composables/useServerPrefetch.js +1 -2
  623. package/dist/composables/useSheetSurface.js +1 -2
  624. package/dist/composables/useSsrState.js +1 -2
  625. package/dist/composables/useTableWidthContext.js +2 -3
  626. package/dist/composables/useToast.js +3 -4
  627. package/dist/composables/useToggleInput.js +1 -2
  628. package/dist/composables/useTopLayer.js +1 -2
  629. package/dist/composables/useTypeahead.js +0 -1
  630. package/dist/composables/useUntil.js +1 -2
  631. package/dist/composables/useUrlQueryParam.d.ts +1 -1
  632. package/dist/composables/useUrlQueryParam.js +1 -2
  633. package/dist/composables/useViewportWidth.js +2 -3
  634. package/dist/deprecation/ai-deprecations.json.js +1 -2
  635. package/dist/deprecation/removedProps.js +1 -2
  636. package/dist/directives/bbColor.js +7 -8
  637. package/dist/directives/bbDate.js +7 -8
  638. package/dist/directives/bbDialog.js +1 -2
  639. package/dist/directives/bbDropdown.js +14 -15
  640. package/dist/directives/bbHoverCard.js +8 -9
  641. package/dist/directives/bbOffCanvas.js +1 -2
  642. package/dist/directives/bbPopover.js +12 -13
  643. package/dist/directives/bbTime.js +7 -8
  644. package/dist/directives/bbTooltip.js +1 -2
  645. package/dist/directives/createPopoverDirective.js +6 -17
  646. package/dist/directives/directivePortal.js +1 -2
  647. package/dist/directives/overlayTrigger.js +24 -25
  648. package/dist/directives/renderingInstance.js +4 -8
  649. package/dist/i18n/locales/cs.json +8 -1
  650. package/dist/i18n/locales/da.json +8 -1
  651. package/dist/i18n/locales/de-CH.json +8 -1
  652. package/dist/i18n/locales/de.json +8 -1
  653. package/dist/i18n/locales/el.json +8 -1
  654. package/dist/i18n/locales/en-GB.json +8 -1
  655. package/dist/i18n/locales/en.json +8 -1
  656. package/dist/i18n/locales/es-MX.json +8 -1
  657. package/dist/i18n/locales/es.json +8 -1
  658. package/dist/i18n/locales/fi.json +8 -1
  659. package/dist/i18n/locales/fr.json +8 -1
  660. package/dist/i18n/locales/hu.json +8 -1
  661. package/dist/i18n/locales/it.json +8 -1
  662. package/dist/i18n/locales/ja.json +8 -1
  663. package/dist/i18n/locales/ko.json +8 -1
  664. package/dist/i18n/locales/nb.json +8 -1
  665. package/dist/i18n/locales/nl.json +8 -1
  666. package/dist/i18n/locales/pl.json +8 -1
  667. package/dist/i18n/locales/pt-BR.json +8 -1
  668. package/dist/i18n/locales/pt-PT.json +8 -1
  669. package/dist/i18n/locales/ro.json +8 -1
  670. package/dist/i18n/locales/ru.json +8 -1
  671. package/dist/i18n/locales/sv.json +8 -1
  672. package/dist/i18n/locales/tr.json +8 -1
  673. package/dist/i18n/locales/uk.json +8 -1
  674. package/dist/i18n/locales/zh-CN.json +8 -1
  675. package/dist/i18n/locales/zh-HK.json +8 -1
  676. package/dist/i18n/locales/zh-TW.json +8 -1
  677. package/dist/i18n/regionHints.js +1 -2
  678. package/dist/i18n/regions.js +1 -2
  679. package/dist/icon-scan.js +6 -11
  680. package/dist/index.js +87 -87
  681. package/dist/llms-full.txt +550 -230
  682. package/dist/llms-medium.txt +44 -20
  683. package/dist/locale-blueprint.json +8 -1
  684. package/dist/nuxt-auto-imports.js +1 -2
  685. package/dist/nuxt.js +21 -22
  686. package/dist/passthrough-deduper.js +1 -2
  687. package/dist/plugin.js +15 -16
  688. package/dist/project-dts.js +1 -2
  689. package/dist/runtime/nuxt-plugin.js +25 -26
  690. package/dist/styles.css +2 -2
  691. package/dist/types/AlertVariant.js +1 -2
  692. package/dist/types/BadgeVariant.js +1 -2
  693. package/dist/types/ButtonVariant.js +1 -2
  694. package/dist/types/CheckboxVariant.js +1 -2
  695. package/dist/types/ConfirmVariant.js +1 -2
  696. package/dist/types/DatePickerType.d.ts +10 -5
  697. package/dist/types/DatePickerType.js +3 -4
  698. package/dist/types/DropdownItemVariant.js +1 -2
  699. package/dist/types/FieldLayout.js +1 -2
  700. package/dist/types/IndicatorVariant.js +1 -2
  701. package/dist/types/InputVariant.js +1 -2
  702. package/dist/types/RadioVariant.js +1 -2
  703. package/dist/types/TabsVariant.js +1 -2
  704. package/dist/types/ToastVariant.js +1 -2
  705. package/dist/types/TooltipVariant.js +1 -2
  706. package/dist/types/passthrough.d.ts +112 -2
  707. package/dist/types/passthrough.js +19 -13
  708. package/dist/types/ptComponentMap.d.ts +31 -31
  709. package/dist/utilities/functions/animationsSettled.js +1 -2
  710. package/dist/utilities/functions/bytesToUnit.js +1 -2
  711. package/dist/utilities/functions/chunk.js +1 -2
  712. package/dist/utilities/functions/clamp.js +1 -2
  713. package/dist/utilities/functions/clampPrecision.js +1 -2
  714. package/dist/utilities/functions/convertDateValue.d.ts +5 -2
  715. package/dist/utilities/functions/convertDateValue.js +19 -13
  716. package/dist/utilities/functions/curry.js +1 -2
  717. package/dist/utilities/functions/deburr.js +1 -2
  718. package/dist/utilities/functions/elementLabel.js +1 -2
  719. package/dist/utilities/functions/empty.js +1 -2
  720. package/dist/utilities/functions/extractDomContainer.js +1 -2
  721. package/dist/utilities/functions/findInTree.js +1 -2
  722. package/dist/utilities/functions/flattenTree.js +1 -2
  723. package/dist/utilities/functions/get.js +1 -2
  724. package/dist/utilities/functions/hasVnodeListener.js +1 -2
  725. package/dist/utilities/functions/hash.js +1 -2
  726. package/dist/utilities/functions/head.js +1 -2
  727. package/dist/utilities/functions/identity.js +1 -2
  728. package/dist/utilities/functions/indexBy.js +1 -2
  729. package/dist/utilities/functions/isDateDisabled.js +23 -19
  730. package/dist/utilities/functions/isEqual.js +1 -2
  731. package/dist/utilities/functions/isHex.js +1 -2
  732. package/dist/utilities/functions/isImeComposing.js +1 -2
  733. package/dist/utilities/functions/isNil.js +1 -2
  734. package/dist/utilities/functions/isNotEmpty.js +1 -2
  735. package/dist/utilities/functions/isNotNil.js +1 -2
  736. package/dist/utilities/functions/isTextEntry.js +1 -2
  737. package/dist/utilities/functions/isoWeek.d.ts +36 -0
  738. package/dist/utilities/functions/isoWeek.js +21 -0
  739. package/dist/utilities/functions/itemProps.js +1 -2
  740. package/dist/utilities/functions/last.js +1 -2
  741. package/dist/utilities/functions/matchAnyKey.js +1 -2
  742. package/dist/utilities/functions/noop.js +1 -2
  743. package/dist/utilities/functions/normalizeDateBound.d.ts +4 -0
  744. package/dist/utilities/functions/normalizeDateBound.js +11 -10
  745. package/dist/utilities/functions/parsePaginationNumber.js +1 -2
  746. package/dist/utilities/functions/parseSize.js +1 -2
  747. package/dist/utilities/functions/parseWidthString.js +1 -2
  748. package/dist/utilities/functions/percentage.js +1 -2
  749. package/dist/utilities/functions/pickBy.js +1 -2
  750. package/dist/utilities/functions/range.js +1 -2
  751. package/dist/utilities/functions/readableValue.js +1 -2
  752. package/dist/utilities/functions/reject.js +1 -2
  753. package/dist/utilities/functions/resolveEnumProp.js +1 -2
  754. package/dist/utilities/functions/responsiveDefault.js +1 -2
  755. package/dist/utilities/functions/settlesVisible.js +1 -2
  756. package/dist/utilities/functions/slotKey.js +1 -2
  757. package/dist/utilities/functions/snapToStep.js +1 -2
  758. package/dist/utilities/functions/sort.js +1 -2
  759. package/dist/utilities/functions/throttle.js +1 -2
  760. package/dist/utilities/functions/toggleInput.js +1 -2
  761. package/dist/utilities/functions/transpose.js +1 -2
  762. package/dist/utilities/functions/validateDateFormat.js +1 -2
  763. package/dist/utilities/functions/wait.js +1 -2
  764. package/dist/utilities/functions/waitFor.js +2 -7
  765. package/dist/utilities/functions/warnRemovedAttrs.js +2 -5
  766. package/dist/utilities/functions/when.js +1 -2
  767. package/dist/utilities/misc/autofocus.js +1 -2
  768. package/dist/utilities/misc/iconsInjectionKey.js +1 -2
  769. package/dist/utilities/misc/listboxMetrics.js +1 -2
  770. package/dist/utilities/misc/maskaDataOptions.d.ts +12 -0
  771. package/dist/utilities/misc/maskaDataOptions.js +36 -0
  772. package/dist/utilities/misc/pageText.d.ts +16 -0
  773. package/dist/utilities/misc/pageText.js +10 -0
  774. package/dist/utilities/misc/ssrStateInjectionKey.js +1 -2
  775. package/dist/utilities/misc/ssrValue.js +1 -2
  776. package/dist/utilities/misc/transitions.js +1 -2
  777. package/dist/utils/copyData.js +1 -2
  778. package/dist/utils/cssLayers.js +1 -2
  779. package/dist/utils/focusVisibility.js +1 -2
  780. package/dist/utils/injectLibraryStyles.js +3 -12
  781. package/dist/utils/overlayEscapeStack.js +1 -2
  782. package/dist/utils/overlaySurfaceIsolation.js +1 -2
  783. package/dist/utils/passthrough.js +2 -3
  784. package/dist/utils/ptScope.js +1 -2
  785. package/dist/utils/versionCheck.js +2 -3
  786. package/dist/vite-plugin.d.ts +1 -1
  787. package/dist/vite.js +364 -437
  788. package/package.json +14 -10
  789. package/scripts/lib/adoption-checklist.json +1 -1
  790. package/scripts/lib/check-queue.mjs +102 -0
  791. package/scripts/lib/consumer-install.mjs +64 -0
  792. package/scripts/lib/css-comment-text.mjs +16 -0
  793. package/scripts/lib/eslint-plugin.mjs +9 -7
  794. package/scripts/lib/hidden-label-placeholder.mjs +19 -6
  795. package/scripts/lib/mcp-config.mjs +1 -1
  796. package/scripts/lib/pack.mjs +55 -0
  797. package/scripts/lib/quiet-gate.mjs +385 -0
  798. package/scripts/lib/reactive-v-model.mjs +11 -5
  799. package/scripts/lib/validate-bb-markup.mjs +77 -3
@@ -136,10 +136,11 @@ It mirrors `<input type="…">`, so the names should already be familiar:
136
136
  | ------------------ | -------------------- | --------------------- | ------------- |
137
137
  | `date` _(default)_ | the day grid | `2026-08-14` | ISO instant |
138
138
  | `datetime` | day grid + time rail | `2026-08-14` + `time` | ISO instant |
139
+ | `week` | day grid, week rows | `2026-W44` | — |
139
140
  | `month` | the 12-month grid | `2026-08` | — |
140
141
  | `year` | the year list | `2026` | — |
141
142
 
142
- `month` and `year` are **calendar labels, not instants**. A month has no
143
+ `week`, `month` and `year` are **calendar labels, not instants**. A month has no
143
144
  timezone, and pinning one to an instant is how you lose it: the start of August
144
145
  in Rome is the 31st of July in UTC, so a value stored that way reads back as the
145
146
  wrong month. They force `floating`, ignore `utc`, and warn if you pass it.
@@ -163,6 +164,12 @@ selectable — it cannot silently delete the month you named.
163
164
  The month grid pages by year and the year list by decade; arrows, Home/End and
164
165
  PageUp/PageDown all keep working, one unit up.
165
166
 
167
+ `type="week"` keeps the day grid and its keyboard, adds a week-number column
168
+ (Monday first, always), and makes any day pick its ISO week: the value is
169
+ `2026-W44`, the activator slot's `text` reads "Week 44, 2026", and `min` /
170
+ `max` (a week or a date) enable a week only when all seven days are inside.
171
+ See [BbCalendar § Weeks](./BbCalendar.md#weeks).
172
+
166
173
  ### Multi-selection
167
174
 
168
175
  `multiple` turns every pick into a toggle: the value is a **sorted array** and
@@ -357,7 +364,8 @@ desktop, the sheet itself on a phone — it also carries the sizing tokens, so
357
364
  bottom sheet on a phone only, applied after `panel`), `header` (the
358
365
  navigation bar), `arrow` (the previous / next buttons), `month` and `year`
359
366
  (the heading buttons), `cellColumnHeader` (each weekday letter), `day` (one whole
360
- day cell) and `dayButton` (the button inside it), `monthItem` and
367
+ day cell) and `dayButton` (the button inside it), `week` (one row with
368
+ `type="week"`) and `weekNumber` (its ISO week number), `monthItem` and
361
369
  `yearItem` (one button of the month / year panel).
362
370
 
363
371
  States: `open` follows the surface; `arrow` is `disabled` at a `min` / `max`
@@ -365,7 +373,9 @@ bound; `month` and `year` are `active` while their panel is open. The cells
365
373
  resolve per node — on `day` and `dayButton`: `selected`, `disabled`, `today`,
366
374
  `outside` (a day of the previous or next month), `rangeStart` / `rangeEnd` /
367
375
  `inRange` (a committed range) and `highlighted` (the keyboard cursor). The
368
- panel items carry the same set without `today` and `outside`.
376
+ panel items carry the same set without `today` and `outside`; the week rows
377
+ (`week`, `weekNumber`) carry `selected`, `rangeStart`, `rangeEnd` and
378
+ `inRange`, per row.
369
379
 
370
380
  `day` is the whole cell and `dayButton` the rounded mark inside it: a
371
381
  background on `pt:day` paints the full cell square, so restyle the mark on
@@ -453,7 +463,7 @@ and digit typeahead; the time rail exposes labelled columns. Always pass a
453
463
 
454
464
  | Prop | Type | Default | Required | Description |
455
465
  | --- | --- | --- | --- | --- |
456
- | `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `arrow`, `cellColumnHeader`, `day`, `dayButton`, `header`, `item`, `month`, `monthItem`, `panel`, `root`, `sheet`, `year`, `yearItem`. States: `active`, `disabled`, `highlighted`, `inRange`, `open`, `outside`, `rangeEnd`, `rangeStart`, `selected`, `today`. What each one is: _Passthrough parts and states_ below. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. In `<script>` a `pt` value is typed `BbDatePickerProps['pt']` (`PtValue` is not exported): § Typing `pt` in `<script>`. |
466
+ | `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `arrow`, `cellColumnHeader`, `day`, `dayButton`, `header`, `item`, `month`, `monthItem`, `panel`, `root`, `sheet`, `week`, `weekNumber`, `year`, `yearItem`. States: `disabled`, `open`, `highlighted`, `inRange`, `outside`, `rangeEnd`, `rangeStart`, `selected`, `today`, `active`. What each one is: _Passthrough parts and states_ below. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. In `<script>` a `pt` value is typed `BbDatePickerProps['pt']` (`PtValue` is not exported): § Typing `pt` in `<script>`. |
457
467
  | `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the `activator` slot is not rendered and click + ARIA are attached programmatically to the referenced element — mirroring the `BbColorPalette` activator API. |
458
468
  | `activeSegment` | `'start'` \| `'end'` | | | Which end the time rail edits in range + `type="datetime"` (`v-model:active-segment`). Standalone use manages this internally; an embedding host (the date input) drives it from its focused field. Ignored outside range + datetime. |
459
469
  | `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile, open in a bottom off-canvas sheet instead of a floating popover. When unset, falls back to the global `config.adaptive`. |
@@ -463,13 +473,13 @@ and digit typeahead; the time rail exposes labelled columns. Always pass a
463
473
  | `disabled` | `boolean \| undefined` | `false` | | Disables the activator and the calendar. |
464
474
  | `disableFlip` | `boolean \| undefined` | `false` | | Disable the automatic flip to the opposite side on overflow. |
465
475
  | `eager` | `boolean \| undefined` | `false` | | Render popover content before it is first shown. |
466
- | `firstDayOfWeek` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| undefined` | `the locale's week start` | | First day of the week (0 = Sunday … 6 = Saturday). Omitted, the active locale's week start: Monday for `it`, `de`, `fr`, `en-gb`…, Sunday for bare `en` (US) and `pt` (Brazil). |
467
- | `floating` | `boolean \| undefined` | `false` | | Emit plain calendar strings instead of zoned ISO instants. Implied (and forced) by `type="month"` and `type="year"`. |
476
+ | `firstDayOfWeek` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| undefined` | `the locale's week start` | | First day of the week (0 = Sunday … 6 = Saturday). Omitted, the active locale's week start: Monday for `it`, `de`, `fr`, `en-gb`…, Sunday for bare `en` (US) and `pt` (Brazil). Ignored under `type="week"`: ISO weeks run Monday to Sunday, so a week grid always starts on Monday. |
477
+ | `floating` | `boolean \| undefined` | `false` | | Emit plain calendar strings instead of zoned ISO instants. Implied (and forced) by `type="week"`, `type="month"` and `type="year"`. |
468
478
  | `label` | `string \| undefined` | | | Accessible label. The activator is named by it followed by the activator's own text ("Due date 12 Sep"), through `aria-labelledby`. |
469
- | `max` | `string \| undefined` | | | Maximum selectable value, in this `type`'s shape. A finer bound is accepted and ceiled to the unit, with a warning. |
470
- | `min` | `string \| undefined` | | | Minimum selectable value, in this `type`'s shape — `YYYY-MM-DD` (`YYYY-MM-DDTHH:mm` with `datetime`, `YYYY-MM` with `month`, `YYYY` with `year`). A finer bound is accepted and floored to the unit, with a warning. |
471
- | `modelValue` | `string \| string[] \| null` | | yes | v-model: `null` when empty, a string, a `[start, end]` pair with `range`, or a sorted array with `multiple`. The string is `YYYY-MM-DD` when `floating` (`YYYY-MM` / `YYYY` for `month` / `year`), otherwise a zoned ISO instant (carrying the time under `datetime`). |
472
- | `multiple` | `boolean` | `false` | | Multi-selection: each pick toggles a value in a sorted array (days, months or years), and the panel stays open until dismissed. Needs an array `modelValue` (`[]` when empty, never `null`). Throws with `range` or `type="datetime"`. |
479
+ | `max` | `string \| undefined` | | | Maximum selectable value, in this `type`'s shape. A finer bound is accepted and ceiled to the unit, with a warning (`week`: as `min`). |
480
+ | `min` | `string \| undefined` | | | Minimum selectable value, in this `type`'s shape — `YYYY-MM-DD` (`YYYY-MM-DDTHH:mm` with `datetime`, `YYYY-MM` with `month`, `YYYY` with `year`; a week or a date with `week`, whole weeks only). A finer bound is accepted and floored to the unit, with a warning. |
481
+ | `modelValue` | `string \| string[] \| null` | | yes | v-model: `null` when empty, a string, a `[start, end]` pair with `range`, or a sorted array with `multiple`. The string is `YYYY-MM-DD` when `floating` (`YYYY-Www` / `YYYY-MM` / `YYYY` for `week` / `month` / `year`), otherwise a zoned ISO instant (carrying the time under `datetime`). |
482
+ | `multiple` | `boolean` | `false` | | Multi-selection: each pick toggles a value in a sorted array (days, weeks, months or years), and the panel stays open until dismissed. Needs an array `modelValue` (`[]` when empty, never `null`). Throws with `range` or `type="datetime"`. |
473
483
  | `numberOfMonths` | `number \| undefined` | `1` | | How many months the popover shows side by side (day grids only); the phone sheet always shows one. Too narrow for them all, the months wrap. |
474
484
  | `offCanvasProps` | `Partial<BbOffCanvasProps> \| undefined` | | | Props for the phone sheet (the `BbOffCanvas` that `adaptive` renders on mobile), spread over its defaults. A `pt` inside it styles only the sheet (passthrough guide § Inside the sheet). The sheet hides its ✕; `{ hideClose: false }` brings it back. |
475
485
  | `offset` | `number \| undefined` | `4` | | Space the popover keeps from the activator. |
@@ -478,12 +488,12 @@ and digit typeahead; the time rail exposes labelled columns. Always pass a
478
488
  | `range` | `boolean` | `false` | | Enables range selection (`[start, end]`). |
479
489
  | `readonly` | `boolean \| undefined` | `false` | | Prevents opening while keeping the activator visible. |
480
490
  | `seconds` | `boolean \| undefined` | `false` | | Adds the seconds column (requires `type="datetime"`). |
481
- | `selectable` | `((date: string) => boolean) \| undefined` | | | Predicate invoked per candidate; return `false` to disable it. Receives the value in this `type`'s shape — `YYYY-MM` under `month`, `YYYY` under `year`. |
491
+ | `selectable` | `((date: string) => boolean) \| undefined` | | | Predicate invoked per candidate; return `false` to disable it. Receives the value in this `type`'s shape — `YYYY-Www` under `week` (so a week is enabled or disabled whole), `YYYY-MM` under `month`, `YYYY` under `year`. |
482
492
  | `step` | `number \| undefined` | `1` | | Minute-column granularity and arrow stepping (requires `type="datetime"`). |
483
493
  | `time` | `string \| string[] \| null \| undefined` | | | Companion time model (`v-model:time`), 24-hour `HH:mm` / `HH:mm:ss`. With `floating` it is the only carrier of the time; otherwise it mirrors the time inside `modelValue`. Requires `type="datetime"`. |
484
494
  | `transitionDuration` | `number \| undefined` | `250` | | Popover/sheet transition duration in milliseconds. |
485
- | `type` | `'date'` \| `'month'` \| `'year'` \| `'datetime'` | `"date"` | | What the picker selects and emits: `date` (a day), `datetime` (a day plus a time rail), `month` (`YYYY-MM`) or `year` (`YYYY`). `month` / `year` force `floating`, ignore `utc`, and leave the time props inert. |
486
- | `utc` | `boolean \| undefined` | `false` | | Emit UTC (`...Z`) instead of the local offset. Ignored with `floating`, and therefore with `type="month"`/`type="year"`. |
495
+ | `type` | `'date'` \| `'month'` \| `'year'` \| `'week'` \| `'datetime'` | `"date"` | | What the picker selects and emits: `date` (a day), `datetime` (a day plus a time rail), `week` (an ISO week, `YYYY-Www`: any day of a row picks its week), `month` (`YYYY-MM`) or `year` (`YYYY`). `week` / `month` / `year` force `floating`, ignore `utc`, and leave the time props inert. |
496
+ | `utc` | `boolean \| undefined` | `false` | | Emit UTC (`...Z`) instead of the local offset. Ignored with `floating`, and therefore with `type="week"`/`type="month"`/`type="year"`. |
487
497
 
488
498
  ## Passthrough parts and states
489
499
 
@@ -497,6 +507,8 @@ and digit typeahead; the time rail exposes labelled columns. Always pass a
497
507
  | `month` | The month heading button; it opens the month panel. |
498
508
  | `year` | The year heading button; it opens the year panel. |
499
509
  | `cellColumnHeader` | Each weekday letter above the grid — a broadcast. |
510
+ | `week` | One row of seven days with `type="week"` — the band a picked week paints and the hover outline. A broadcast resolved per row. |
511
+ | `weekNumber` | The ISO week number heading each row with `type="week"` — a broadcast resolved per row. |
500
512
  | `day` | One whole day cell — a broadcast resolved per day. A background here paints the full cell square; restyle the round mark on `dayButton`. |
501
513
  | `dayButton` | The button inside a day cell — the mark that shows selection. A broadcast resolved per day. |
502
514
  | `monthItem` | One month button of the month panel (the home grid of `type="month"`) — a broadcast resolved per month. |
@@ -511,10 +523,10 @@ States are listed in precedence order: when two are on at once and their entries
511
523
  | --- | --- |
512
524
  | `outside` | Per node, on `day` / `dayButton`: a day of the previous or next month, shown to fill the grid. |
513
525
  | `today` | Per node, on `day` / `dayButton`: today. |
514
- | `inRange` | Per node, on the cells (`day`, `dayButton`, `monthItem`, `yearItem`): inside a committed range, between its ends. |
515
- | `selected` | Per node, on the cells: a chosen day, month or year; on `item`, the picked time's entry in each column. |
516
- | `rangeStart` | Per node, on the cells: a committed range's first day, month or year. |
517
- | `rangeEnd` | Per node, on the cells: a committed range's last day, month or year. |
526
+ | `inRange` | Per node, on the cells (`day`, `dayButton`, `monthItem`, `yearItem`) and the week rows (`week`, `weekNumber`): inside a committed range, between its ends. |
527
+ | `selected` | Per node, on the cells: a chosen day, month or year; on `week` / `weekNumber`, a chosen week (a range's ends too, as on its days); on `item`, the picked time's entry in each column. |
528
+ | `rangeStart` | Per node, on the cells and the week rows: a committed range's first day, week, month or year. |
529
+ | `rangeEnd` | Per node, on the cells and the week rows: a committed range's last day, week, month or year. |
518
530
  | `disabled` | Component-wide while the picker is `disabled`. Also per node: on the cells, one outside `min` / `max` or refused by `selectable`; on `arrow`, at a bound or while the month / year panel is open. |
519
531
  | `active` | Per node, on `month` / `year`: its panel is open. |
520
532
  | `open` | Component-wide: the calendar is showing. |
@@ -574,7 +586,7 @@ Set these on the element, or on a class you put on it, to retune this component
574
586
  - Listed nodes are the ones `BbDatePicker`'s API reaches or that declare a documented CSS variable; the rest fold into "also mounts". The complete tree, repeats and undocumented locals included, is `manifest/components/BbDatePicker.tree.json`.
575
587
 
576
588
  - `BbDatePicker` _(this component)_ — its own template binds: `panel` → `div`; hands `BbCalendar` the pt map ` passthrough.forward(DATE_PICKER_CALENDAR_PARTS, BB_CALENDAR_PT.states) ` (ours → theirs); hands `BbOffCanvas` the pt map `{ panel: 'root', sheet: 'root' }` (ours → theirs)
577
- - `BbCalendar` _(public — [contract](./BbCalendar.md))_ — its own pt parts (`BbCalendar`): `header` → `div.bb-calendar__header`, `arrow` → `BbBaseButton`, `month` → `BbBaseButton`, `year` → `BbBaseButton`, `day` → `div.bb-calendar__day`, `dayButton` → `button.bb-calendar__day-button`; documented CSS variables: `--cell`, `--unit-row`; also mounts `ScaleFade`, `Slide`, `CalendarMonthPanel`, `CalendarYearPanel`
589
+ - `BbCalendar` _(public — [contract](./BbCalendar.md))_ — its own pt parts (`BbCalendar`): `header` → `div.bb-calendar__header`, `arrow` → `BbBaseButton`, `month` → `BbBaseButton`, `year` → `BbBaseButton`, `week` → `div.bb-calendar__week`, `weekNumber` → `div.bb-calendar__week-number`, `day` → `div.bb-calendar__day`, `dayButton` → `button.bb-calendar__day-button`; documented CSS variables: `--cell`, `--unit-row`, `--wk`; also mounts `ScaleFade`, `Slide`, `CalendarMonthPanel`, `CalendarYearPanel`
578
590
  - `BbBaseButton` _(public — [contract](./BbBaseButton.md))_ — its own pt parts (`BbBaseButton`): `root` → `RouterComponent`, `root` → `a`, `root` → `component`; also mounts `RouterComponent`
579
591
  - `CommonTimeSelector` _(internal — not importable, reach it through `BbCalendar`)_ — its own pt parts (`BbCalendar`): `header` → `div.bb-time-selector__header`, `cellColumnHeader` → `div.bb-time-selector__cell-column-header`, `item` → `BbBaseButton`; documented CSS variables: `--time-mark`; also mounts `BbBaseButton`
580
592
  - `BbOffCanvas` _(public — [contract](./BbOffCanvas.md))_ — its own pt parts (`BbOffCanvas`): `header` → `div.bb-offcanvas__header`, `title` → `span.bb-offcanvas__title`, `description` → `p.bb-offcanvas__description`, `close` → `CloseButton`, `content` → `div.bb-offcanvas__content`, `footer` → `div.bb-offcanvas__footer`; documented CSS variables: `--stack-x`, `--snap-y`, `--stack-fill`, `--stack-transition-duration`, `--px`, `--handle-w`, `--handle-h`, `--handle-bg`, `--safe-top`, `--close-size`
@@ -40,7 +40,7 @@
40
40
  | `--border-focus` | `pt:box` | `CommonFieldInput` | frame while focused, or --active |
41
41
  | `--ring-size` | `pt:box` | `CommonFieldInput` | ring width; 0 is a variant declining the ring |
42
42
  | `--ring-color` | `pt:box` | `CommonFieldInput` | ring colour; state owns it, not variants |
43
- | `--elev` | `pt:box` | `CommonFieldInput` | Resting lift, alone in `box-shadow`: the ring is the box's outline (Q81.6), so a theme's `--elev: none` never takes the ring with it. |
43
+ | `--elev` | `pt:box` | `CommonFieldInput` | Resting lift, alone in `box-shadow`: the ring is the box's outline, so a theme's `--elev: none` never takes the ring with it. |
44
44
  | `--frost` | `pt:box` | `CommonFieldInput` | Plate frost — a full `backdrop-filter` value (see --bb-surface-filter). Routed through a local rather than read from the token directly, so a chrome-less variant can decline it: frosting a ghost field gives it the plate it is contractually not supposed to have. |
45
45
  | `--inside-label-clearance` | `pt:box`, `pt:prefix`, `pt:suffix` | `CommonFieldInput` | Height and top padding added above the text for a label rendered inside the box. Zero here; the `--inside-label` rules at the bottom of this file raise it to one label line, or two with a description. |
46
46
  | `--w` | `pt:icon` | `BbIcon` | `--w` is set inline by BbIcon from the size prop. The `initial` default seals it: without it an ancestor's `--w` (e.g. a dropdown's width bridge) would inherit in and size the icon. The `--size` indirection stays so higher-specificity rules (e.g. `.bb-badge .bb-icon`) can re-point it. |
@@ -412,17 +412,18 @@ const setPreset = (days: number) => {
412
412
  </script>
413
413
  ```
414
414
 
415
- ### `type` — day, month, year, or day + time
415
+ ### `type` — day, week, month, year, or day + time
416
416
 
417
417
  `type` decides which segments the field renders and what it emits. It mirrors
418
418
  `<input type="…">`:
419
419
 
420
- | `type` | segments | emits | range emits |
421
- | ------------------ | -------------- | --------------------- | ------------------------ |
422
- | `date` _(default)_ | `DD/MM/YYYY` | ISO / `YYYY-MM-DD` | `[start, end]` |
423
- | `datetime` | + `HH:mm(:ss)` | ISO carrying the time | `[start, end]` |
424
- | `month` | `MM/YYYY` | `2026-08` | `['2026-01', '2026-03']` |
425
- | `year` | `YYYY` | `2026` | `['2026', '2028']` |
420
+ | `type` | segments | emits | range emits |
421
+ | ------------------ | -------------- | --------------------- | -------------------------- |
422
+ | `date` _(default)_ | `DD/MM/YYYY` | ISO / `YYYY-MM-DD` | `[start, end]` |
423
+ | `datetime` | + `HH:mm(:ss)` | ISO carrying the time | `[start, end]` |
424
+ | `week` | `W44 2026` | `2026-W44` | `['2026-W41', '2026-W43']` |
425
+ | `month` | `MM/YYYY` | `2026-08` | `['2026-01', '2026-03']` |
426
+ | `year` | `YYYY` | `2026` | `['2026', '2028']` |
426
427
 
427
428
  ```vue
428
429
  <BbDatePickerInput v-model="period" label="Reporting period" type="month" />
@@ -435,7 +436,7 @@ promising `DD/MM/YYYY` to a two-segment field would be worse than no hint at
435
436
  all. The calendar button opens the matching terminal grid, so typing and
436
437
  picking always produce the same shape.
437
438
 
438
- `month` and `year` are **calendar labels, not instants**: they force `floating`,
439
+ `week`, `month` and `year` are **calendar labels, not instants**: they force `floating`,
439
440
  ignore `utc`, and make the time props inert. This is deliberate rather than
440
441
  squeamish — the start of August in Rome is the 31st of July in UTC, so a month
441
442
  stored as an instant reads back as the wrong month for half the world.
@@ -446,6 +447,60 @@ a DEV warning, so `min="2026-03-15"` under `type="month"` leaves the whole of
446
447
  March selectable instead of quietly deleting it. `selectable` receives the same
447
448
  shape it emits.
448
449
 
450
+ #### Weeks
451
+
452
+ `type="week"` types and emits an ISO 8601 week. The field shows a literal `W`,
453
+ a week segment and a year segment (`W44 2026`, in every locale), and the
454
+ calendar picks the whole week of any day you click, with a week-number column
455
+ and Monday-first rows. The year segment is the **ISO week-year**: the week of
456
+ 29 December 2025 is `W01 2026`. A typed `W53` in a year with 52 weeks snaps
457
+ to `W52` when the field is read, as 31 February snaps to the 28th.
458
+
459
+ `min` / `max` take a week (`max="2026-W52"`) or a date, and a week counts only
460
+ when all seven days are inside: `min="2026-10-28"` (a Wednesday) leaves that
461
+ week out, and a typed week below it moves to the first whole week inside, with
462
+ the usual `error` event. The trigger's accessible name reads the week and its
463
+ dates ("week 44, October 26 – November 1, 2026"); the dates are never shown.
464
+ The calendar side — the week rows, the hover outline, ranges of weeks — is
465
+ [BbCalendar § Weeks](./BbCalendar.md#weeks), and `pt:week` /
466
+ `pt:week-number` restyle its rows from this field.
467
+
468
+ **A delivery week and a sprint of weeks**
469
+
470
+ ```vue
471
+ <template>
472
+ <div class="grid max-w-xs gap-4">
473
+ <BbDatePickerInput
474
+ v-model="delivery"
475
+ description="Orders ship on the Monday of the week you pick."
476
+ label="Delivery week"
477
+ min="2026-10-28"
478
+ type="week"
479
+ />
480
+ <BbDatePickerInput
481
+ v-model="sprint"
482
+ label="Sprint"
483
+ max="2026-W52"
484
+ range
485
+ type="week"
486
+ />
487
+ </div>
488
+ </template>
489
+
490
+ <script setup lang="ts">
491
+ import { ref } from 'vue';
492
+ import { BbDatePickerInput } from 'bitboss-ui';
493
+
494
+ /**
495
+ * `type="week"`: the value is the ISO week, `YYYY-Www`. Any day of a calendar
496
+ * row picks its week; the field types it as `W44 2026`. `min` on a Wednesday
497
+ * leaves that week out, because a week counts only when all seven days fit.
498
+ */
499
+ const delivery = ref<string | null>('2026-W45');
500
+ const sprint = ref<string[]>(['2026-W45', '2026-W46']);
501
+ </script>
502
+ ```
503
+
449
504
  ### Time selection
450
505
 
451
506
  Set `type="datetime"` and the field grows 24-hour `HH:mm` segments after the date
@@ -764,12 +819,17 @@ table cell (`<BbDatePickerInput compact hide-label variant="ghost" />`) — no
764
819
  register through the plugin's `inputVariants` option. The full ladder is in
765
820
  the `BbTextInput` guide.
766
821
 
822
+ The calendar panel renders inside the field, so it reads the field's
823
+ `--bb-radius`, capped at half a control height: a pill field
824
+ (`style="--bb-radius: 999px"`) gets a rounded panel, never a clipped one, and a
825
+ `0px` app stays square.
826
+
767
827
  ### Restyling with passthrough
768
828
 
769
829
  `pt` reaches a named part of the control with a class list — or, in the
770
830
  object form, a style and attributes — optionally only while a state is on.
771
- Parts: `root` (the container), `label`, `description`, `message` (the errors / warnings region — one node each, only one ever shows), `hint` (the helper line — shown on focus, or always with `persistent-hint`), `box` (the bordered field box), `input` (the native control), `icon` (`prepend:icon` + `append:icon` — a broadcast; the state glyphs are chrome), `spinner` (the spinner shown while `loading`), `prefix`, `suffix`, `clear` (the ✕ that empties the field). Plus `panel` (the calendar surface you see — the popover's painted bubble on desktop, the sheet itself on a phone; it carries the sizing tokens, so `pt:panel="[--px:2px]"` tightens it), `sheet` (the bottom sheet on a phone only) and the calendar's own parts, forwarded to it: `header`, `arrow`, `month`, `year`, `cellColumnHeader`, `day` (the whole cell), `dayButton` (the mark inside it), `monthItem` and `yearItem` — the `BbDatePicker` guide describes each node. `input` is every segment field; the calendar trigger is `activator`.
772
- States: `errors`, `warnings` (never beside errors), `loading`, `disabled`, `readonly`, `hasValue` (written `pt:box:has-value`). Plus `open` (the calendar is showing), and the calendar's per-node states: `selected`, `disabled`, `today`, `outside`, `rangeStart` / `rangeEnd` / `inRange` and `highlighted` on the cells, `active` on `month` / `year`. A name outside that list is a type error and an
831
+ Parts: `root` (the container), `label`, `description`, `message` (the errors / warnings region — one node each, only one ever shows), `hint` (the helper line — shown on focus, or always with `persistent-hint`), `box` (the bordered field box), `input` (the native control), `icon` (`prepend:icon` + `append:icon` — a broadcast; the state glyphs are chrome), `spinner` (the spinner shown while `loading`), `prefix`, `suffix`, `clear` (the ✕ that empties the field). Plus `panel` (the calendar surface you see — the popover's painted bubble on desktop, the sheet itself on a phone; it carries the sizing tokens, so `pt:panel="[--px:2px]"` tightens it), `sheet` (the bottom sheet on a phone only) and the calendar's own parts, forwarded to it: `header`, `arrow`, `month`, `year`, `cellColumnHeader`, `day` (the whole cell), `dayButton` (the mark inside it), `week` (one row with `type="week"`), `weekNumber` (its ISO week number), `monthItem` and `yearItem` — the `BbDatePicker` guide describes each node. `input` is every segment field; the calendar trigger is `activator`.
832
+ States: `errors`, `warnings` (never beside errors), `loading`, `disabled`, `readonly`, `hasValue` (written `pt:box:has-value`). Plus `open` (the calendar is showing), and the calendar's per-node states: `selected`, `disabled`, `today`, `outside`, `rangeStart` / `rangeEnd` / `inRange` and `highlighted` on the cells, `selected` / `rangeStart` / `rangeEnd` / `inRange` on the week rows (`pt:week:selected`, `pt:week-number`), `active` on `month` / `year`. A name outside that list is a type error and an
773
833
  ESLint error.
774
834
 
775
835
  The invoice due-date field above, restyled through those parts: a muted
@@ -909,7 +969,7 @@ label>')` matches nothing; query each segment by its own label instead. See
909
969
 
910
970
  | Prop | Type | Default | Required | Description |
911
971
  | --- | --- | --- | --- | --- |
912
- | `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `activator`, `arrow`, `box`, `cellColumnHeader`, `clear`, `day`, `dayButton`, `description`, `header`, `hint`, `icon`, `input`, `item`, `label`, `message`, `month`, `monthItem`, `panel`, `prefix`, `root`, `sheet`, `spinner`, `suffix`, `year`, `yearItem`. States: `active`, `disabled`, `errors`, `ghost`, `hasValue`, `highlighted`, `inRange`, `loading`, `open`, `outline`, `outside`, `rangeEnd`, `rangeStart`, `readonly`, `secondary`, `selected`, `today`, `warnings`. What each one is: _Passthrough parts and states_ below. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. In `<script>` a `pt` value is typed `BbDatePickerInputProps['pt']` (`PtValue` is not exported): § Typing `pt` in `<script>`. |
972
+ | `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `activator`, `arrow`, `box`, `cellColumnHeader`, `clear`, `day`, `dayButton`, `description`, `header`, `hint`, `icon`, `input`, `item`, `label`, `message`, `month`, `monthItem`, `panel`, `prefix`, `root`, `sheet`, `spinner`, `suffix`, `week`, `weekNumber`, `year`, `yearItem`. States: `disabled`, `errors`, `ghost`, `hasValue`, `loading`, `open`, `outline`, `readonly`, `secondary`, `warnings`, `highlighted`, `inRange`, `outside`, `rangeEnd`, `rangeStart`, `selected`, `today`, `active`. What each one is: _Passthrough parts and states_ below. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. In `<script>` a `pt` value is typed `BbDatePickerInputProps['pt']` (`PtValue` is not exported): § Typing `pt` in `<script>`. |
913
973
  | `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile the calendar opens inside a bottom off-canvas sheet instead of a floating popover, mirroring the adaptive behaviour of `BbPopover`/`BbSelect`. When unset, falls back to the global `config.adaptive`. |
914
974
  | `ampm` | `boolean \| undefined` | `false` | | 12-hour display with an AM/PM segment (requires `type="datetime"`). Purely a field-composition concern: `modelValue` and the `time` model stay 24-hour regardless. Type `A`/`P` (or ArrowUp/Down) to set the meridiem. |
915
975
  | `append:icon` | `string \| undefined` | | | Name of the icon to be added at the end of the input. |
@@ -922,7 +982,7 @@ label>')` matches nothing; query each segment by its own label instead. See
922
982
  | `disabled` | `boolean \| undefined` | `false` | | Disables the component. |
923
983
  | `disableWriting` | `boolean \| "mobile" \| "desktop" \| undefined` | `false` | | Disables typing into the input. Use `'mobile'` to disable typing only on mobile, `'desktop'` to disable typing only on desktop. |
924
984
  | `errors` | `string \| string[] \| undefined` | | | Error messages under the field, a string or array, in an `aria-live="polite"` region and first in the control's `aria-describedby`, so they are re-read when it regains focus. |
925
- | `firstDayOfWeek` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| undefined` | `the locale's week start` | | First day of the week (0 = Sunday … 6 = Saturday). Omitted, the active locale's week start: Monday for `it`, `de`, `fr`, `en-gb`…, Sunday for bare `en` (US) and `pt` (Brazil). |
985
+ | `firstDayOfWeek` | `0 \| 1 \| 2 \| 3 \| 4 \| 5 \| 6 \| undefined` | `the locale's week start` | | First day of the week (0 = Sunday … 6 = Saturday). Omitted, the active locale's week start: Monday for `it`, `de`, `fr`, `en-gb`…, Sunday for bare `en` (US) and `pt` (Brazil). Ignored under `type="week"`: ISO weeks run Monday to Sunday, so a week grid always starts on Monday. |
926
986
  | `floating` | `boolean \| undefined` | `false` | | If true the date will have a format YYYY-MM-DD instead of the default ISO string. |
927
987
  | `formless` | `boolean \| undefined` | `false` | | Keep this control out of the enclosing `BbForm` entirely: not submitted, not dirty, not reset, not validated. For a control that is not form data (a filter, a "show advanced" switch). |
928
988
  | `hasErrors` | `boolean \| undefined` | `false` | | Define if the component should be in an error state. It usually attaches a CSS class for styling purposes. |
@@ -937,8 +997,8 @@ label>')` matches nothing; query each segment by its own label instead. See
937
997
  | `labelPosition` | `"left" \| "center" \| "right" \| undefined` | | | Sets the text alignment of the label. |
938
998
  | `layout` | `Responsive<FieldLayout> \| undefined` | | | How label and input sit together: `'vertical'`, `'horizontal'` (50/50), `'auto'`, `'label-fill'`, `'input-fill'`, a ratio like `'xx xxxxx'`, or a per-breakpoint map (`{ default: 'vertical', md: 'xx xxxxx' }`). |
939
999
  | `loading` | `boolean \| undefined` | `false` | | Sets the component in a loading state, usually triggering some visual styles. |
940
- | `max` | `string \| undefined` | | | Maximum selectable date in `YYYY-MM-DD` format — or, with `type="datetime"`, `YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values outside both patterns throw during setup to surface configuration mistakes. |
941
- | `min` | `string \| undefined` | | | Minimum selectable date in `YYYY-MM-DD` format — or, with `type="datetime"`, `YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values outside both patterns throw during setup to surface configuration mistakes. |
1000
+ | `max` | `string \| undefined` | | | Maximum selectable date in `YYYY-MM-DD` format — or, with `type="datetime"`, `YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values outside both patterns throw during setup to surface configuration mistakes. `type="week"`: a week (`YYYY-Www`) or a date, whole weeks only. |
1001
+ | `min` | `string \| undefined` | | | Minimum selectable date in `YYYY-MM-DD` format — or, with `type="datetime"`, `YYYY-MM-DDTHH:mm` to tighten the boundary day to a minute. Values outside both patterns throw during setup to surface configuration mistakes. `type="week"`: a week (`YYYY-Www`) or a date, whole weeks only. |
942
1002
  | `modelValue` | `string \| string[] \| null \| undefined` | | | Used by v-model. Can be null, a single string, or an array of strings based on whether a range or single date is needed. |
943
1003
  | `name` | `string \| undefined` | | | Defines the name of the input. |
944
1004
  | `numberOfMonths` | `number \| undefined` | `1` | | How many months the calendar popover shows side by side (day grids only); the phone sheet always shows one. Too narrow for them all, the months wrap. |
@@ -952,11 +1012,11 @@ label>')` matches nothing; query each segment by its own label instead. See
952
1012
  | `reverse` | `boolean \| undefined` | `false` | | Reverses the layout. Applicable in every direction the order of the label and the input is swapped. |
953
1013
  | `rules` | `RuleExpression<string \| string[] \| null>` | | | vee-validate rules for this field. Only inside a `BbForm`. |
954
1014
  | `seconds` | `boolean \| undefined` | `false` | | Adds the seconds segment (requires `type="datetime"`). Without it, an incoming value carrying seconds displays truncated and is left untouched until the user commits an edit, at which point seconds zero out. |
955
- | `selectable` | `((date: string) => boolean) \| undefined` | | | Function that accepts a `string` object and returns a boolean. `false` meaning the date cannot be selected. |
1015
+ | `selectable` | `((date: string) => boolean) \| undefined` | | | Function that accepts a `string` object and returns a boolean. `false` meaning the date cannot be selected. Under `type="week"` it receives the week value (`2026-W44`). |
956
1016
  | `step` | `number \| undefined` | `1` | | Minute granularity for the calendar's minute column and arrow stepping (requires `type="datetime"`). Constrains what the component produces, never what it accepts: a typed off-grid value (e.g. `10:07` with `step: 15`) is emitted verbatim, and no column row highlights for it. |
957
1017
  | `time` | `string \| string[] \| null \| undefined` | | | `v-model:time`: the time part, always 24-hour `HH:mm` / `HH:mm:ss`. With `floating` it is the only carrier of the time; otherwise it mirrors `modelValue`'s, and writing it rewrites that. Requires `type="datetime"`. |
958
1018
  | `transitionDuration` | `number \| undefined` | | | Transition duration, in milliseconds, for the popover appearance. |
959
- | `type` | `'date'` \| `'month'` \| `'year'` \| `'datetime'` | `"date"` | | What the field edits, and so its segments and emitted shape: `date` (`DD/MM/YYYY`), `datetime` (adds the time segments and rail), `month` (`MM/YYYY`, emits `YYYY-MM`) or `year` (`YYYY`). `month` / `year` force `floating`, ignore `utc`, and leave the time props inert. |
1019
+ | `type` | `'date'` \| `'month'` \| `'year'` \| `'week'` \| `'datetime'` | `"date"` | | What the field edits, so its segments and emitted shape: `date` (`DD/MM/YYYY`), `datetime` (adds the time segments and rail), `week` (`W44 2026`, emits `2026-W44`), `month` (`MM/YYYY`, emits `YYYY-MM`) or `year` (`YYYY`). The last three force `floating` and ignore `utc` and the time props. |
960
1020
  | `utc` | `boolean \| undefined` | `false` | | Emits UTC ISO strings (`…Z`) instead of the local offset (`…+01:00`). Emission only: incoming values parse the same either way, and the field always displays local time. Ignored with `floating`. |
961
1021
  | `validationLabel` | `string \| undefined` | | | The field's name in validation messages (`{field}`): "Email is not valid". Defaults to the `label` (or `legend`), then "This field"; never the `name`. Set it when the label is hidden or reads badly in a sentence (icon-only, a question). `BbForm` only. |
962
1022
  | `validationMode` | `'aggressive'` \| `'balanced'` \| `'lazy'` \| `'submit-only'` \| `'submit-live'` | | | When the field validates: `aggressive` (each change), `balanced` (on leave, then live while in error), `lazy` (on leave), `submit-only`, `submit-live`. Unset: the `BbForm`'s `validation-mode`, then `formControls.validationMode` (`'balanced'`). `BbForm` only. |
@@ -989,6 +1049,8 @@ label>')` matches nothing; query each segment by its own label instead. See
989
1049
  | `month` | The month heading button; it opens the month panel. |
990
1050
  | `year` | The year heading button; it opens the year panel. |
991
1051
  | `cellColumnHeader` | Each weekday letter above the grid — a broadcast. |
1052
+ | `week` | One row of seven days with `type="week"` — the band a picked week paints and the hover outline. A broadcast resolved per row. |
1053
+ | `weekNumber` | The ISO week number heading each row with `type="week"` — a broadcast resolved per row. |
992
1054
  | `day` | One whole day cell — a broadcast resolved per day. A background here paints the full cell square; restyle the round mark on `dayButton`. |
993
1055
  | `dayButton` | The button inside a day cell — the mark that shows selection. A broadcast resolved per day. |
994
1056
  | `monthItem` | One month button of the month panel (the home grid of `type="month"`) — a broadcast resolved per month. |
@@ -1002,10 +1064,10 @@ States are listed in precedence order: when two are on at once and their entries
1002
1064
  | `hasValue` | Component-wide: the control holds a value, by its own rule (`0` counts on `BbNumberInput`, `''` on `BbColorInput`). |
1003
1065
  | `outside` | Per node, on `day` / `dayButton`: a day of the previous or next month, shown to fill the grid. |
1004
1066
  | `today` | Per node, on `day` / `dayButton`: today. |
1005
- | `inRange` | Per node, on the cells (`day`, `dayButton`, `monthItem`, `yearItem`): inside a committed range, between its ends. |
1006
- | `selected` | Per node, on the cells: a chosen day, month or year; on `item`, the picked time's entry in each column. |
1007
- | `rangeStart` | Per node, on the cells: a committed range's first day, month or year. |
1008
- | `rangeEnd` | Per node, on the cells: a committed range's last day, month or year. |
1067
+ | `inRange` | Per node, on the cells (`day`, `dayButton`, `monthItem`, `yearItem`) and the week rows (`week`, `weekNumber`): inside a committed range, between its ends. |
1068
+ | `selected` | Per node, on the cells: a chosen day, month or year; on `week` / `weekNumber`, a chosen week (a range's ends too, as on its days); on `item`, the picked time's entry in each column. |
1069
+ | `rangeStart` | Per node, on the cells and the week rows: a committed range's first day, week, month or year. |
1070
+ | `rangeEnd` | Per node, on the cells and the week rows: a committed range's last day, week, month or year. |
1009
1071
  | `readonly` | Component-wide: the control is `readonly` — shown, focusable, not editable. |
1010
1072
  | `disabled` | Component-wide while the input is `disabled`. Also per node, on the calendar's cells: one outside `min` / `max` or refused by `selectable`; on `arrow`, at a bound or while the month / year panel is open. |
1011
1073
  | `warnings` | Component-wide: the control is in its warning state (`warnings` / `has-warnings`) and not in an error state — errors win, so the two are never on together. |
@@ -1065,7 +1127,7 @@ Set these on the element, or on a class you put on it, to retune this component
1065
1127
 
1066
1128
  - `BbDatePickerInput` _(this component)_ — its own template binds: `controlAttrs` → `input.bb-segmented-field__input`, `input` → `input.bb-segmented-field__input`, `activator` → `button.bb-segmented-field__activator`, `suffix` → `span.bb-field-input__suffix`; hands `BbDatePicker` the pt map `passthrough.forward(PICKER_PARTS, BB_DATE_PICKER_PT.states)` (ours → theirs)
1067
1129
  - `BbDatePicker` _(public — [contract](./BbDatePicker.md))_ — its own pt parts (`BbDatePicker`): `panel` → `div`; hands `BbCalendar` the pt map ` passthrough.forward(DATE_PICKER_CALENDAR_PARTS, BB_CALENDAR_PT.states) ` (ours → theirs); hands `BbOffCanvas` the pt map `{ panel: 'root', sheet: 'root' }` (ours → theirs); documented CSS variables: `--cell`, `--unit-row`; also mounts `CommonPopover`
1068
- - `BbCalendar` _(public — [contract](./BbCalendar.md))_ — its own pt parts (`BbCalendar`): `header` → `div.bb-calendar__header`, `arrow` → `BbBaseButton`, `month` → `BbBaseButton`, `year` → `BbBaseButton`, `day` → `div.bb-calendar__day`, `dayButton` → `button.bb-calendar__day-button`; documented CSS variables: `--cell`, `--unit-row`; also mounts `ScaleFade`, `Slide`, `CalendarMonthPanel`, `CalendarYearPanel`
1130
+ - `BbCalendar` _(public — [contract](./BbCalendar.md))_ — its own pt parts (`BbCalendar`): `header` → `div.bb-calendar__header`, `arrow` → `BbBaseButton`, `month` → `BbBaseButton`, `year` → `BbBaseButton`, `week` → `div.bb-calendar__week`, `weekNumber` → `div.bb-calendar__week-number`, `day` → `div.bb-calendar__day`, `dayButton` → `button.bb-calendar__day-button`; documented CSS variables: `--cell`, `--unit-row`, `--wk`; also mounts `ScaleFade`, `Slide`, `CalendarMonthPanel`, `CalendarYearPanel`
1069
1131
  - `BbBaseButton` _(public — [contract](./BbBaseButton.md))_ — its own pt parts (`BbBaseButton`): `root` → `RouterComponent`, `root` → `a`, `root` → `component`; also mounts `RouterComponent`
1070
1132
  - `CommonTimeSelector` _(internal — not importable, reach it through `BbCalendar`)_ — its own pt parts (`BbCalendar`): `header` → `div.bb-time-selector__header`, `cellColumnHeader` → `div.bb-time-selector__cell-column-header`, `item` → `BbBaseButton`; documented CSS variables: `--time-mark`; also mounts `BbBaseButton`
1071
1133
  - `BbOffCanvas` _(public — [contract](./BbOffCanvas.md))_ — its own pt parts (`BbOffCanvas`): `header` → `div.bb-offcanvas__header`, `title` → `span.bb-offcanvas__title`, `description` → `p.bb-offcanvas__description`, `close` → `CloseButton`, `content` → `div.bb-offcanvas__content`, `footer` → `div.bb-offcanvas__footer`; documented CSS variables: `--stack-x`, `--snap-y`, `--stack-fill`, `--stack-transition-duration`, `--px`, `--handle-w`, `--handle-h`, `--handle-bg`, `--safe-top`, `--close-size`
@@ -575,6 +575,9 @@ const save = (saved: Member) => {
575
575
  writes it, so a module constant is safe.
576
576
  - An edit-only dialog, always opened with a row, needs no `default-data` and no
577
577
  guard: its body exists only while an opening holds data.
578
+ - **`data` is typed by your annotation, not by `default-data`.** Write the slot
579
+ type on the template: `<template #default="{ data }: { data: Member }">`, and
580
+ `vue-tsc` catches `data.nmae`.
578
581
 
579
582
  **Whose surroundings the dialog takes.** The directive sits on the trigger in
580
583
  the template, so the dialog it opens follows the trigger's surroundings: a
@@ -1797,7 +1800,7 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
1797
1800
  | `queryKey` | `string \| undefined` | `"dialog"` | | The query key `navigation` writes. |
1798
1801
  | `replace` | `boolean \| undefined` | `false` | | With `navigation`, replaces the history entry instead of pushing one, so Back leaves the page instead of closing the dialog. |
1799
1802
  | `size` | `Responsive<NonNullable<number \| CssSize \| keyof BbDialogSizes \| undefined>> \| undefined` | `"sm"` | | Controls the maximum width of the dialog. Accepts named presets from `'xs'` to `'2xl'`, a custom CSS width string, or a numeric pixel value — or a per-breakpoint map (e.g. `{ default: 'sm', lg: 'lg' }`) to switch width responsively. |
1800
- | `snap` | `BbSnapPoint \| undefined` | | | The phone sheet's snap stop (Q71.8), one of the `snapPoints` entries. The desktop dialog ignores it. |
1803
+ | `snap` | `BbSnapPoint \| undefined` | | | The phone sheet's snap stop, one of the `snapPoints` entries. The desktop dialog ignores it. |
1801
1804
  | `snapPoints` | `BbSnapPoint[] \| undefined` | | | Heights the phone sheet rests at, smallest first: a screen fraction (`0.5`; `1` = as tall as it gets) or pixels (`'240px'`). The first is the opening height; `v-model:snap` reads and sets the stop. Sheet only: the centred dialog ignores it. |
1802
1805
  | `stack` | `string \| undefined` | | | Name of this dialog's stack. Dialogs with the same `stack` replace one another: only the latest opened shows, the rest of the stack hide beneath it. Dialogs in different stacks, or with no `stack`, never affect each other and stay fully visible. |
1803
1806
  | `title` | `string \| undefined` | | | Title text announced to assistive technologies. If omitted, no header is rendered (unless a `header` slot is supplied) and accessibility must be handled manually. |
@@ -1828,7 +1831,7 @@ States are listed in precedence order: when two are on at once and their entries
1828
1831
  ## Events
1829
1832
 
1830
1833
  - `hidden` — `(): void` — Emitted after the close transition completes and the dialog is fully dismissed.
1831
- - `hide` — `(result: BbDialogResult): void` — Emitted as soon as the dialog starts to close (model becomes false), with the opening's result: the same object its promise settles with, `{ completed: true, value }` or `{ completed: false, reason }` (Q73.6).
1834
+ - `hide` — `(result: BbDialogResult): void` — Emitted as soon as the dialog starts to close (model becomes false), with the opening's result: the same object its promise settles with, `{ completed: true, value }` or `{ completed: false, reason }`.
1832
1835
  - `show` — `(): void` — Emitted as soon as the dialog starts to open (model becomes true).
1833
1836
  - `shown` — `(): void` — Emitted once the open transition has run (symmetric with `hidden`): the dialog is settled, so code that measures or anchors to its content sees the final layout. Not emitted for a dialog closed before it finished opening.
1834
1837
  - `update:modelValue` — `(value: boolean): void` — Emitted with the new value whenever `v-model` changes.
@@ -1854,7 +1857,7 @@ Set these on the element, or on a class you put on it, to retune this component
1854
1857
  | `--transition-timing-function` | `.bb-dialog` | `var(--bb-ease)` | |
1855
1858
  | `--bg` | `.bb-dialog` | `var(--bb-panel)` | |
1856
1859
  | `--fg` | `.bb-dialog` | `var(--bb-text)` | |
1857
- | `--close-size` | `.bb-dialog__header` | `28px` | Shared by the close control and by the space the title reserves for it, * so the two can never drift apart. |
1860
+ | `--close-size` | `.bb-dialog__header` | `28px` | Shared by the close control and by the space the title reserves for it, so the two can never drift apart. |
1858
1861
  | `--gap` | `.bb-dialog__footer` | `8px` | |
1859
1862
 
1860
1863
  ## Component tree
@@ -1363,7 +1363,7 @@ const items: BbDropdownItem[] = [
1363
1363
  ];
1364
1364
 
1365
1365
  /** Status glyph per workspace row — color inherits via currentColor. */
1366
- // `value` is optional on a row (Q53.17), so a slot reading it may see none.
1366
+ // `value` is optional on a row, so a slot reading it may see none.
1367
1367
  const envIcon = (key?: string): IconType => {
1368
1368
  if (key === 'production') return 'lucide:circle-check';
1369
1369
  if (key === 'staging') return 'lucide:circle-dashed';
@@ -1808,8 +1808,8 @@ long lists.
1808
1808
 
1809
1809
  `compact` walks the same ladder `BbSelect` does, so a dense toolbar can hold a
1810
1810
  select and a menu that agree: flyout rows go 28px → 24px, sheet rows 44px →
1811
- 36px. The label does not shrink — density here is height, exactly as it is for a
1812
- select.
1811
+ 36px, and the flyout's `header` / `footer` pad 6px instead of 8px. The label
1812
+ does not shrink — density here is height, exactly as it is for a select.
1813
1813
 
1814
1814
  The sheet stops at 36px and never follows the flyout down to 24px. A menu row is
1815
1815
  a touch target whose mis-tap fires the neighbouring **command**, where a
@@ -2325,7 +2325,7 @@ it, and at the top level closes the sheet.
2325
2325
 
2326
2326
  | Prop | Type | Default | Required | Description |
2327
2327
  | --- | --- | --- | --- | --- |
2328
- | `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `footer`, `header`, `input`, `item`, `itemDescription`, `itemIcon`, `itemText`, `list`, `panel`, `root`, `sheet`. States: `activeLink`, `disabled`, `exactActiveLink`, `open`, `selected`, `default`, `destructive`. What each one is: _Passthrough parts and states_ below. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. In `<script>` a `pt` value is typed `BbDropdownProps['pt']` (`PtValue` is not exported): § Typing `pt` in `<script>`. |
2328
+ | `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `footer`, `header`, `input`, `item`, `itemDescription`, `itemIcon`, `itemText`, `list`, `panel`, `root`, `sheet`. States: `open`, `activeLink`, `default`, `destructive`, `disabled`, `exactActiveLink`, `selected`. What each one is: _Passthrough parts and states_ below. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. In `<script>` a `pt` value is typed `BbDropdownProps['pt']` (`PtValue` is not exported): § Typing `pt` in `<script>`. |
2329
2329
  | `activator` | `Record<string, any> \| HTMLElement \| null \| undefined` | | | An external activator element or component ref: the activator slot is not rendered, and the listeners and ARIA (`aria-haspopup` / `aria-expanded` / `aria-controls`) are attached to it; don't add your own. |
2330
2330
  | `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile (below `config.mobileMaxWidth`), renders the menu as a bottom sheet that drills into submenus one level at a time instead of hover flyouts; slots and selection are unchanged. Unset: the global `config.adaptive`. |
2331
2331
  | `anchor` | `Record<string, any> \| HTMLElement \| null \| undefined` | `the activator element` | | The element the panel positions against when it should differ from the activator (a wrapper the activator is part of); an HTMLElement or component ref. It also drives a percentage `width`. Ignored with `placement="cursor"`. |
@@ -2415,7 +2415,7 @@ Set these on the element, or on a class you put on it, to retune this component
2415
2415
  | Property | Set on | Default | What it is |
2416
2416
  | --- | --- | --- | --- |
2417
2417
  | `--bg` | `.bb-dropdown__group-search` | `var(--bb-panel)` | |
2418
- | `--menu-inset` | `.bb-dropdown` | `4px` | Inset between the menu's outer chrome and its first item — owned here and * consumed by both `.bb-dropdown__list`'s padding and the submenu * lead-in below, so the two can never drift apart. |
2418
+ | `--menu-inset` | `.bb-dropdown` | `4px` | Inset between the menu's outer chrome and its first item — owned here and consumed by both `.bb-dropdown__list`'s padding and the submenu lead-in below, so the two can never drift apart. |
2419
2419
 
2420
2420
  ## Component tree
2421
2421
 
@@ -622,6 +622,9 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
622
622
 
623
623
  ### Accessibility
624
624
 
625
+ - On a touch screen the toggle's invisible hit area reaches 44×44 outward
626
+ (never across into the main button) when the split button has no element
627
+ beside it; beside another control it follows BbButton's 4px rule.
625
628
  - The chevron toggle carries its own localized `aria-label` (from the
626
629
  `locale` config) and reflects open state via `aria-expanded` — no extra
627
630
  wiring needed.
@@ -694,7 +697,7 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
694
697
  | `tag` | `'button'` \| `'div'` \| `'span'` \| `'label'` | `'button'` | | Element to render for the plain (non-link, non-router) button: `'button'` (default), `'div'`/`'span'` when nesting inside another button or link, or `'label'` for a file-upload trigger. Ignored when `href`/`to` make the button render as a link. |
695
698
  | `target` | `string \| undefined` | | | Sets or retrieves the window or frame at which to target content. |
696
699
  | `text` | `string \| undefined` | | | Text content of the component. |
697
- | `to` | `string \| wt \| bt \| undefined` | | | Route Location the link should navigate to when clicked on. |
700
+ | `to` | `string \| et \| X \| undefined` | | | Route Location the link should navigate to when clicked on. |
698
701
  | `toggle:icon` | `string \| undefined` | | | Replaces the chevron shown inside the dropdown toggle button. A constrained alternative to a slot: only the toggle's icon changes, so the button keeps its semantics. Named after the part it sits in (the `toggle`), the way `prepend:icon` / `append:icon` name theirs. |
699
702
  | `transitionDuration` | `number \| undefined` | `150` | | How long the transition has to last in milliseconds. Menus use the fast transition (150) rather than the medium one (250) the other popovers default to: a menu is opened to pick one command and is gone again, so it answers faster than a panel the user reads or edits in. |
700
703
  | `type` | `"button" \| "reset" \| "submit" \| undefined` | | | Gets the classification and default behavior of the button. |
package/dist/ai/BbForm.md CHANGED
@@ -83,7 +83,7 @@ submitted, counts toward `dirty`, is reset and is validated if it has rules.
83
83
  Describe the whole form once, in the schema library you already use, and hand
84
84
  it to the `schema` prop. There is no adapter to import and no extra package
85
85
  to install: any [Standard Schema](https://standardschema.dev) works, which
86
- covers Zod 3.24+ and 4, Valibot 1, ArkType 2 and Yup 1.7+.
86
+ covers Zod 4, Valibot 1, ArkType 2 and Yup 1.7+.
87
87
 
88
88
  **Sign-up form with a Zod schema**
89
89
 
@@ -1338,7 +1338,7 @@ the control, the form's own state and whatever ref you bound all agree
1338
1338
  afterwards.
1339
1339
  The same holds for vee-validate's `resetField` and `setFieldValue`.
1340
1340
 
1341
- > Fixed in 3.0.0-beta.15 (Q18.4). Before that the value pipe only ran one way:
1341
+ > Fixed in 3.0.0-beta.15. Before that the value pipe only ran one way:
1342
1342
  > a reset moved the form's internal value but never told your model, so the
1343
1343
  > form reported itself pristine while the user's text was still on screen.
1344
1344
 
@@ -1856,8 +1856,8 @@ renders a red asterisk beside its label ([`BbAsterisk`](./BbAsterisk.md) does th
1856
1856
  With a `schema`, the schema decides, with every Standard Schema
1857
1857
  library above: a field gets the asterisk when its key is required in the
1858
1858
  schema (not optional, no default, not nullable, and its parent object required
1859
- too). Zod 4, ArkType and Joi are read through their JSON Schema; Zod 3, Yup,
1860
- Valibot and Effect through their own schema shape — nothing to wrap, no
1859
+ too). Zod 4, ArkType and Joi are read through their JSON Schema; Yup, Valibot
1860
+ and Effect through their own schema shape — nothing to wrap, no
1861
1861
  `required` to add. The
1862
1862
  marker follows a per-step schema as it changes, and a field the schema (or a
1863
1863
  `required` rule) requires gets `aria-required="true"`, so assistive tech hears
@@ -41,7 +41,7 @@
41
41
  | `--border-focus` | `pt:box` | `CommonFieldInput` | frame while focused, or --active |
42
42
  | `--ring-size` | `pt:box` | `CommonFieldInput` | ring width; 0 is a variant declining the ring |
43
43
  | `--ring-color` | `pt:box` | `CommonFieldInput` | ring colour; state owns it, not variants |
44
- | `--elev` | `pt:box` | `CommonFieldInput` | Resting lift, alone in `box-shadow`: the ring is the box's outline (Q81.6), so a theme's `--elev: none` never takes the ring with it. |
44
+ | `--elev` | `pt:box` | `CommonFieldInput` | Resting lift, alone in `box-shadow`: the ring is the box's outline, so a theme's `--elev: none` never takes the ring with it. |
45
45
  | `--frost` | `pt:box` | `CommonFieldInput` | Plate frost — a full `backdrop-filter` value (see --bb-surface-filter). Routed through a local rather than read from the token directly, so a chrome-less variant can decline it: frosting a ghost field gives it the plate it is contractually not supposed to have. |
46
46
  | `--inside-label-clearance` | `pt:box`, `pt:prefix`, `pt:suffix` | `CommonFieldInput` | Height and top padding added above the text for a label rendered inside the box. Zero here; the `--inside-label` rules at the bottom of this file raise it to one label line, or two with a description. |
47
47
  | `--w` | `pt:icon` | `BbIcon` | `--w` is set inline by BbIcon from the size prop. The `initial` default seals it: without it an ancestor's `--w` (e.g. a dropdown's width bridge) would inherit in and size the icon. The `--size` indirection stays so higher-specificity rules (e.g. `.bb-badge .bb-icon`) can re-point it. |
@@ -302,8 +302,9 @@ const temperature = ref<number | null>(21);
302
302
  - the **`increase()` / `decrease()`** scope functions.
303
303
 
304
304
  Those functions are handed to the `prepend` / `append` / `prefix` / `suffix`
305
- slots as scope props, so you build a plus/minus stepper without wiring any state
306
- yourself. For a stepper rendered _outside_ the field, drive `v-model` directly
305
+ slots as scope props, with **`increaseDisabled` / `decreaseDisabled`** (true at
306
+ `max` / `min` and while `disabled` or `readonly`), so you build a plus/minus
307
+ stepper without wiring any state yourself. For a stepper rendered _outside_ the field, drive `v-model` directly
307
308
  (`model += step`) rather than reaching for a template ref. Stepping respects
308
309
  `min`/`max`/`maxPrecision` and is a no-op while `disabled` or `readonly`.
309
310
 
@@ -329,18 +330,20 @@ stays free while the buttons move in fixed increments.
329
330
  :min="1"
330
331
  name="quantity"
331
332
  >
332
- <template #prepend="{ decrease }">
333
+ <template #prepend="{ decrease, decreaseDisabled }">
333
334
  <BbButton
334
335
  aria-label="Decrease quantity"
336
+ :disabled="decreaseDisabled"
335
337
  icon="lucide:minus"
336
338
  size="xs"
337
339
  variant="ghost"
338
340
  @click="decrease"
339
341
  />
340
342
  </template>
341
- <template #append="{ increase }">
343
+ <template #append="{ increase, increaseDisabled }">
342
344
  <BbButton
343
345
  aria-label="Increase quantity"
346
+ :disabled="increaseDisabled"
344
347
  icon="lucide:plus"
345
348
  size="xs"
346
349
  variant="ghost"
@@ -444,7 +447,8 @@ icon (`hasWarnings`) shares the error icon's slot — shown when `hasWarnings` i
444
447
  and there is no error.
445
448
 
446
449
  Every content slot (`prefix`, `suffix`, `prepend`, `append`, `prepend:outer`,
447
- `append:outer`) receives `{ increase, decrease }` scope, so stepper buttons can
450
+ `append:outer`) receives `{ increase, decrease, increaseDisabled, decreaseDisabled }`
451
+ scope, so stepper buttons can
448
452
  live anywhere in the ring. Put interactive controls in the _outer_ slots or use
449
453
  the scoped callbacks; plain `prefix`/`suffix` text is decoration only.
450
454
 
@@ -955,14 +959,14 @@ States are listed in precedence order: when two are on at once and their entries
955
959
 
956
960
  ## Slots
957
961
 
958
- - `append` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void }` — Content rendered after the number input, at the end of the inner container. Typically used to place increment/decrement buttons next to the input.
959
- - `append:outer` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void }` — Content rendered after the entire input control, outside the input chrome.
962
+ - `append` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void; increaseDisabled: boolean; decreaseDisabled: boolean }` — Content rendered after the number input, at the end of the inner container. Typically used to place increment/decrement buttons next to the input.
963
+ - `append:outer` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void; increaseDisabled: boolean; decreaseDisabled: boolean }` — Content rendered after the entire input control, outside the input chrome.
960
964
  - `description` — scope: `BbNumberInputDescriptionSlotProps` `{ text: string; hasErrors: boolean; hasWarnings: boolean }` — Replaces the description text. Provided alone (no `description` prop) it still renders the description region and wires it into `aria-describedby`.
961
965
  - `label` — scope: `BbNumberInputLabelSlotProps` `{ showAsterisk?: boolean; text: string; hasErrors: boolean; hasWarnings: boolean }` — Replaces the default label text rendered above the number input.
962
- - `prefix` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void }` — Inline content rendered at the start of the input field area, before the typed number.
963
- - `prepend` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void }` — Content rendered before the number input, at the start of the inner container.
964
- - `prepend:outer` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void }` — Content rendered before the entire input control, outside the input chrome.
965
- - `suffix` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void }` — Inline content rendered at the end of the input field area, after the typed number.
966
+ - `prefix` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void; increaseDisabled: boolean; decreaseDisabled: boolean }` — Inline content rendered at the start of the input field area, before the typed number.
967
+ - `prepend` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void; increaseDisabled: boolean; decreaseDisabled: boolean }` — Content rendered before the number input, at the start of the inner container.
968
+ - `prepend:outer` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void; increaseDisabled: boolean; decreaseDisabled: boolean }` — Content rendered before the entire input control, outside the input chrome.
969
+ - `suffix` — scope: `BbNumberInputStepSlotProps` `{ increase: () => void; decrease: () => void; increaseDisabled: boolean; decreaseDisabled: boolean }` — Inline content rendered at the end of the input field area, after the typed number.
966
970
 
967
971
  ## CSS custom properties
968
972