bitboss-ui 3.0.0-beta.48 → 3.0.0-beta.49

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 (356) hide show
  1. package/README.md +24 -7
  2. package/bin/bitboss-ui-mcp.mjs +15 -3
  3. package/bin/bitboss-ui.mjs +115 -13
  4. package/dist/ai/BbAvatar.md +1 -1
  5. package/dist/ai/BbBreadcrumbs.md +65 -65
  6. package/dist/ai/BbButton.md +16 -5
  7. package/dist/ai/BbCheckbox.md +0 -2
  8. package/dist/ai/BbCheckboxGroup.md +13 -20
  9. package/dist/ai/BbDatePickerInput.md +4 -2
  10. package/dist/ai/BbDialog.md +1 -8
  11. package/dist/ai/BbDropdown.md +231 -220
  12. package/dist/ai/BbDropdownButton.md +65 -65
  13. package/dist/ai/BbDropdownGroup.md +2 -2
  14. package/dist/ai/BbDropzone.md +10 -10
  15. package/dist/ai/BbForm.md +43 -52
  16. package/dist/ai/BbHoverCard.md +4 -2
  17. package/dist/ai/BbNumberInput.md +88 -21
  18. package/dist/ai/BbPopover.md +29 -23
  19. package/dist/ai/BbProgress.md +48 -22
  20. package/dist/ai/BbRadioGroup.md +13 -19
  21. package/dist/ai/BbSelect.md +16 -36
  22. package/dist/ai/BbSelectPopover.md +14 -30
  23. package/dist/ai/BbSmoothHeight.md +0 -2
  24. package/dist/ai/BbSwitchGroup.md +13 -20
  25. package/dist/ai/BbTable.md +11 -10
  26. package/dist/ai/BbTabs.md +106 -105
  27. package/dist/ai/BbTabsList.md +2 -2
  28. package/dist/ai/BbTabsPanels.md +1 -1
  29. package/dist/ai/BbTabsRoot.md +2 -2
  30. package/dist/ai/BbTooltip.md +24 -10
  31. package/dist/ai/BbTree.md +14 -11
  32. package/dist/ai/changelog.json +256 -5
  33. package/dist/ai/components.json +36 -34
  34. package/dist/ai/composables/useBbDropdownContext.md +16 -16
  35. package/dist/ai/composables/useBbFormField.md +5 -1
  36. package/dist/ai/composables/useBbTabsContext.md +14 -14
  37. package/dist/ai/guides/agent-contract.md +27 -27
  38. package/dist/ai/guides/ai-router.md +1 -1
  39. package/dist/ai/guides/component-picker.md +3 -3
  40. package/dist/ai/guides/fetch-items-playbook.md +1 -1
  41. package/dist/ai/guides/icons-policy.md +10 -10
  42. package/dist/ai/guides/inertia-helpers.md +120 -67
  43. package/dist/ai/guides/installation-and-plugin-setup.md +43 -15
  44. package/dist/ai/guides/migration/components/bb-breadcrumbs.md +3 -2
  45. package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -16
  46. package/dist/ai/guides/migration/components/bb-dropdown-button.md +9 -8
  47. package/dist/ai/guides/migration/components/bb-dropdown.md +15 -14
  48. package/dist/ai/guides/migration/components/bb-radio-group.md +2 -1
  49. package/dist/ai/guides/migration/components/bb-select-popover.md +6 -1
  50. package/dist/ai/guides/migration/components/bb-select.md +10 -2
  51. package/dist/ai/guides/migration/components/bb-switch-group.md +2 -1
  52. package/dist/ai/guides/migration/components/bb-tabs.md +9 -8
  53. package/dist/ai/guides/migration/components/bb-tooltip.md +1 -1
  54. package/dist/ai/guides/migration/v2-to-v3.md +114 -17
  55. package/dist/ai/guides/migration/v3-beta-tooling.md +11 -0
  56. package/dist/ai/guides/options-items-playbook.md +30 -24
  57. package/dist/ai/guides/passthrough.md +2 -2
  58. package/dist/ai/guides/preset-components.md +18 -3
  59. package/dist/ai/guides/typescript-generic-components.md +1 -1
  60. package/dist/ai/guides/validated-forms.md +11 -22
  61. package/dist/ai/guides/validation-providers.md +4 -3
  62. package/dist/ai/helpers/inertia/manifest.json +636 -0
  63. package/dist/ai/helpers/inertia/types.ts +15 -0
  64. package/dist/ai/helpers/inertia/useAsyncFn.ts +110 -0
  65. package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +102 -0
  66. package/dist/ai/helpers/inertia/useDeleteCmd.ts +30 -0
  67. package/dist/ai/helpers/inertia/useHasChanged.ts +36 -0
  68. package/dist/ai/helpers/inertia/useIndexById.ts +23 -0
  69. package/dist/ai/helpers/inertia/useLazyProp.ts +148 -0
  70. package/dist/ai/helpers/inertia/useLazyPropGetter.ts +50 -0
  71. package/dist/ai/helpers/inertia/useLoading.ts +20 -0
  72. package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +88 -0
  73. package/dist/ai/helpers/inertia/usePromiseForm.ts +62 -0
  74. package/dist/ai/helpers/inertia/useProp.ts +63 -0
  75. package/dist/ai/helpers/inertia/useQuery.ts +19 -0
  76. package/dist/ai/helpers/inertia/useQueryObject.ts +116 -0
  77. package/dist/ai/helpers/inertia/useResourceContext.ts +69 -0
  78. package/dist/ai/helpers/inertia/useRouteQuery.ts +54 -0
  79. package/dist/ai/helpers/inertia/useScreenSizes.ts +23 -0
  80. package/dist/ai/helpers/inertia/useTableContext.ts +34 -0
  81. package/dist/ai/helpers/inertia/useTableSelectionContext.ts +48 -0
  82. package/dist/ai/helpers/inertia/useUntil.ts +33 -0
  83. package/dist/ai/helpers/inertia/utils.ts +24 -0
  84. package/dist/ai/index.md +6 -6
  85. package/dist/ai/manifest/components/BbBreadcrumbs.json +10 -6
  86. package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
  87. package/dist/ai/manifest/components/BbButton.json +1 -1
  88. package/dist/ai/manifest/components/BbCheckboxGroup.json +2 -2
  89. package/dist/ai/manifest/components/BbDropdown.json +23 -20
  90. package/dist/ai/manifest/components/BbDropdown.tree.json +2 -2
  91. package/dist/ai/manifest/components/BbDropdownButton.json +22 -19
  92. package/dist/ai/manifest/components/BbDropdownButton.tree.json +1 -1
  93. package/dist/ai/manifest/components/BbDropdownGroup.json +2 -2
  94. package/dist/ai/manifest/components/BbForm.json +1 -0
  95. package/dist/ai/manifest/components/BbNumberInput.json +6 -1
  96. package/dist/ai/manifest/components/BbNumberInput.tree.json +2 -1
  97. package/dist/ai/manifest/components/BbPopover.json +1 -0
  98. package/dist/ai/manifest/components/BbProgress.json +6 -6
  99. package/dist/ai/manifest/components/BbProgress.tree.json +1 -0
  100. package/dist/ai/manifest/components/BbRadioGroup.json +2 -2
  101. package/dist/ai/manifest/components/BbSelect.json +2 -2
  102. package/dist/ai/manifest/components/BbSelectPopover.json +2 -2
  103. package/dist/ai/manifest/components/BbSwitchGroup.json +2 -2
  104. package/dist/ai/manifest/components/BbTabs.json +7 -6
  105. package/dist/ai/manifest/components/BbTabsList.json +3 -3
  106. package/dist/ai/manifest/components/BbTabsPanels.json +1 -1
  107. package/dist/ai/manifest/components/BbTabsRoot.json +5 -4
  108. package/dist/ai/manifest/components/BbTooltip.json +1 -1
  109. package/dist/ai/manifest/index.json +2 -2
  110. package/dist/ai/manifest/meta.json +2 -0
  111. package/dist/ai/manifest/types.advanced.json +10 -9
  112. package/dist/ai/manifest/types.api.json +5 -4
  113. package/dist/ai/recipes/inertia/approvals-inbox.md +16 -18
  114. package/dist/ai/recipes/inertia/inline-edit-workspace.md +23 -33
  115. package/dist/ai/recipes/inertia/layout-scaffold.md +16 -16
  116. package/dist/ai/recipes/inertia/onboarding.md +6 -10
  117. package/dist/ai/recipes/inertia/ownership-atlas.md +15 -18
  118. package/dist/ai/recipes/inertia/record-form.md +11 -11
  119. package/dist/ai/recipes/inertia/records-workspace.md +38 -41
  120. package/dist/ai/recipes/inertia/settings-workspace.md +26 -38
  121. package/dist/ai/recipes/inertia/upload-center.md +31 -39
  122. package/dist/ai/recipes/inertia/wizard-form.md +10 -19
  123. package/dist/ai/recipes/nuxt/approvals-inbox.md +7 -8
  124. package/dist/ai/recipes/nuxt/inline-edit-workspace.md +14 -24
  125. package/dist/ai/recipes/nuxt/layout-scaffold.md +16 -16
  126. package/dist/ai/recipes/nuxt/onboarding.md +2 -6
  127. package/dist/ai/recipes/nuxt/ownership-atlas.md +7 -9
  128. package/dist/ai/recipes/nuxt/record-form.md +5 -5
  129. package/dist/ai/recipes/nuxt/records-workspace.md +29 -31
  130. package/dist/ai/recipes/nuxt/settings-workspace.md +22 -34
  131. package/dist/ai/recipes/nuxt/upload-center.md +22 -29
  132. package/dist/ai/recipes/nuxt/wizard-form.md +3 -11
  133. package/dist/ai/recipes/vue/approvals-inbox.md +7 -8
  134. package/dist/ai/recipes/vue/inline-edit-workspace.md +14 -24
  135. package/dist/ai/recipes/vue/layout-scaffold.md +16 -16
  136. package/dist/ai/recipes/vue/onboarding.md +2 -6
  137. package/dist/ai/recipes/vue/ownership-atlas.md +7 -9
  138. package/dist/ai/recipes/vue/record-form.md +5 -5
  139. package/dist/ai/recipes/vue/records-workspace.md +29 -31
  140. package/dist/ai/recipes/vue/settings-workspace.md +22 -34
  141. package/dist/ai/recipes/vue/upload-center.md +22 -29
  142. package/dist/ai/recipes/vue/wizard-form.md +3 -11
  143. package/dist/ai/source/BbAccordion.md +1 -1
  144. package/dist/ai/source/BbAlert.md +3 -3
  145. package/dist/ai/source/BbBadge.md +2 -2
  146. package/dist/ai/source/BbBadgeButton.md +5 -4
  147. package/dist/ai/source/BbBaseButton.md +1 -1
  148. package/dist/ai/source/BbBaseRadioIcon.md +1 -0
  149. package/dist/ai/source/BbBaseSwitchIcon.md +1 -0
  150. package/dist/ai/source/BbBreadcrumbs.md +63 -42
  151. package/dist/ai/source/BbButton.md +71 -33
  152. package/dist/ai/source/BbCalendar.md +17 -16
  153. package/dist/ai/source/BbCheckbox.md +3 -2
  154. package/dist/ai/source/BbCheckboxGroup.md +11 -4
  155. package/dist/ai/source/BbColorInput.md +10 -9
  156. package/dist/ai/source/BbConfirm.md +1 -1
  157. package/dist/ai/source/BbConfirmPortal.md +1 -1
  158. package/dist/ai/source/BbDatePicker.md +2 -2
  159. package/dist/ai/source/BbDatePickerInput.md +47 -20
  160. package/dist/ai/source/BbDialog.md +5 -5
  161. package/dist/ai/source/BbDropdown.md +230 -158
  162. package/dist/ai/source/BbDropdownButton.md +19 -12
  163. package/dist/ai/source/BbDropdownGroup.md +126 -93
  164. package/dist/ai/source/BbForm.md +25 -1
  165. package/dist/ai/source/BbIndicator.md +4 -0
  166. package/dist/ai/source/BbNumberInput.md +855 -19
  167. package/dist/ai/source/BbOffCanvas.md +27 -11
  168. package/dist/ai/source/BbPagination.md +3 -3
  169. package/dist/ai/source/BbPopover.md +152 -8
  170. package/dist/ai/source/BbPopoverPortal.md +11 -0
  171. package/dist/ai/source/BbProgress.md +82 -18
  172. package/dist/ai/source/BbRadioGroup.md +12 -5
  173. package/dist/ai/source/BbRating.md +11 -9
  174. package/dist/ai/source/BbSelect.md +16 -10
  175. package/dist/ai/source/BbSelectPopover.md +29 -23
  176. package/dist/ai/source/BbSlider.md +12 -6
  177. package/dist/ai/source/BbSwitch.md +3 -2
  178. package/dist/ai/source/BbSwitchGroup.md +5 -2
  179. package/dist/ai/source/BbTable.md +102 -18
  180. package/dist/ai/source/BbTabs.md +27 -23
  181. package/dist/ai/source/BbTabsList.md +26 -22
  182. package/dist/ai/source/BbTabsPanels.md +26 -22
  183. package/dist/ai/source/BbTabsRoot.md +25 -21
  184. package/dist/ai/source/BbTag.md +10 -9
  185. package/dist/ai/source/BbTextInput.md +5 -4
  186. package/dist/ai/source/BbTextarea.md +6 -5
  187. package/dist/ai/source/BbTimePicker.md +1 -1
  188. package/dist/ai/source/BbTimePickerInput.md +46 -9
  189. package/dist/ai/source/BbToast.md +10 -7
  190. package/dist/ai/source/BbToastPortal.md +10 -7
  191. package/dist/ai/source/BbTooltip.md +54 -8
  192. package/dist/ai/source/BbTree.md +21 -3
  193. package/dist/ai/source/CommonField.md +6 -4
  194. package/dist/ai/source/CommonFieldInput.md +15 -10
  195. package/dist/ai/source/CommonPopover.md +6 -0
  196. package/dist/ai/source/CommonTimeSelector.md +5 -4
  197. package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +10 -8
  198. package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +8 -8
  199. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +45 -45
  200. package/dist/components/BbBreadcrumbs/types.d.ts +25 -17
  201. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +84 -71
  202. package/dist/components/BbButton/toggleRoving.d.ts +6 -0
  203. package/dist/components/BbButton/toggleRoving.js +45 -0
  204. package/dist/components/BbButton/types.d.ts +4 -1
  205. package/dist/components/BbCalendar/BbCalendar.vue_vue_type_script_setup_true_lang.js +178 -178
  206. package/dist/components/BbCalendar/CalendarMonthPanel.vue_vue_type_script_setup_true_lang.js +15 -15
  207. package/dist/components/BbCalendar/CalendarYearPanel.vue_vue_type_script_setup_true_lang.js +28 -28
  208. package/dist/components/BbCalendar/useCalendarGrid.js +141 -139
  209. package/dist/components/BbCalendar/useDayjsLocale.d.ts +38 -15
  210. package/dist/components/BbCalendar/useDayjsLocale.js +31 -30
  211. package/dist/components/BbCheckbox/BbCheckbox.vue_vue_type_script_setup_true_lang.js +48 -48
  212. package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +81 -80
  213. package/dist/components/BbCheckboxGroup/types.d.ts +6 -2
  214. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +69 -69
  215. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +363 -349
  216. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +91 -86
  217. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +298 -289
  218. package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +322 -356
  219. package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +17 -15
  220. package/dist/components/BbDropdown/DropdownRow.vue.d.ts +40 -0
  221. package/dist/components/BbDropdown/DropdownRow.vue.js +5 -0
  222. package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +60 -0
  223. package/dist/components/BbDropdown/normalizeGroups.d.ts +8 -2
  224. package/dist/components/BbDropdown/normalizeGroups.js +60 -46
  225. package/dist/components/BbDropdown/types.d.ts +119 -88
  226. package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +11 -2
  227. package/dist/components/BbDropdownButton/types.d.ts +2 -2
  228. package/dist/components/BbForm/BbForm.vue.d.ts +9 -0
  229. package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +114 -105
  230. package/dist/components/BbForm/BbFormCustomField.js +1 -1
  231. package/dist/components/BbForm/bindFormField.js +2 -1
  232. package/dist/components/BbForm/formFields.d.ts +5 -0
  233. package/dist/components/BbNumberInput/BbNumberInput.vue.d.ts +0 -1
  234. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +452 -125
  235. package/dist/components/BbNumberInput/numberDisplay.d.ts +256 -0
  236. package/dist/components/BbNumberInput/numberDisplay.js +499 -0
  237. package/dist/components/BbNumberInput/types.d.ts +54 -1
  238. package/dist/components/BbNumberInput/warroom/corpus.d.ts +58 -0
  239. package/dist/components/BbNumberInput/warroom/currency-verify.rows.d.ts +28 -0
  240. package/dist/components/BbNumberInput/warroom/currency.rows.d.ts +2 -0
  241. package/dist/components/BbNumberInput/warroom/harness.d.ts +217 -0
  242. package/dist/components/BbNumberInput/warroom/oracle.d.ts +150 -0
  243. package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +7 -7
  244. package/dist/components/BbPopover/BbPopover.vue.d.ts +1 -0
  245. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +207 -164
  246. package/dist/components/BbPopover/types.d.ts +11 -0
  247. package/dist/components/BbProgress/BbProgress.vue_vue_type_script_setup_true_lang.js +15 -7
  248. package/dist/components/BbProgress/types.d.ts +23 -7
  249. package/dist/components/BbProgress/types.js +1 -1
  250. package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +102 -101
  251. package/dist/components/BbRadioGroup/types.d.ts +6 -2
  252. package/dist/components/BbRating/BbRating.vue_vue_type_script_setup_true_lang.js +63 -63
  253. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +156 -154
  254. package/dist/components/BbSelect/types.d.ts +6 -2
  255. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +2 -1
  256. package/dist/components/BbSelectPopover/types.d.ts +6 -2
  257. package/dist/components/BbSlider/BbSlider.vue_vue_type_script_setup_true_lang.js +153 -153
  258. package/dist/components/BbSwitch/BbSwitch.vue_vue_type_script_setup_true_lang.js +62 -62
  259. package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +131 -130
  260. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +711 -676
  261. package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +1 -1
  262. package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +1 -1
  263. package/dist/components/BbTabs/types.d.ts +25 -21
  264. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +76 -76
  265. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +58 -58
  266. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +82 -82
  267. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +246 -236
  268. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +102 -97
  269. package/dist/components/BbTooltip/tooltipWarmup.d.ts +23 -0
  270. package/dist/components/BbTooltip/tooltipWarmup.js +7 -0
  271. package/dist/components/BbTooltip/types.d.ts +7 -2
  272. package/dist/components/BbTree/BbTree.vue_vue_type_script_setup_true_lang.js +29 -21
  273. package/dist/components/BbTree/BbTreeLevel.vue_vue_type_script_setup_true_lang.js +10 -7
  274. package/dist/components/CommonFieldInput/CommonFieldInput.vue_vue_type_script_setup_true_lang.js +37 -36
  275. package/dist/components/CommonTimeSelector/CommonTimeSelector.vue_vue_type_script_setup_true_lang.js +9 -9
  276. package/dist/composables/formSubmitLock.d.ts +6 -0
  277. package/dist/composables/formSubmitLock.js +4 -0
  278. package/dist/composables/useBaseOptions.d.ts +7 -1
  279. package/dist/composables/useBaseOptions.js +32 -32
  280. package/dist/composables/useBbDropdownContext.d.ts +8 -8
  281. package/dist/composables/useBbFormField.d.ts +9 -0
  282. package/dist/composables/useBbFormField.js +5 -3
  283. package/dist/composables/useBbTabsContext.d.ts +10 -10
  284. package/dist/composables/useBbTabsContext.js +18 -18
  285. package/dist/composables/useFormBinding.d.ts +11 -0
  286. package/dist/composables/useFormBinding.js +15 -13
  287. package/dist/composables/useItemText.d.ts +5 -1
  288. package/dist/composables/useItemText.js +8 -3
  289. package/dist/composables/useItemValue.d.ts +5 -1
  290. package/dist/composables/useItemValue.js +8 -3
  291. package/dist/composables/useLocale.js +10 -9
  292. package/dist/deprecation/ai-deprecations.json.d.ts +130 -0
  293. package/dist/deprecation/ai-deprecations.json.js +1 -1
  294. package/dist/deprecation/removedProps.js +1 -1
  295. package/dist/directives/bbDropdown.js +1 -1
  296. package/dist/i18n/index.d.ts +7 -12
  297. package/dist/i18n/locales/cs.json +11 -14
  298. package/dist/i18n/locales/da.json +13 -16
  299. package/dist/i18n/locales/de-CH.json +137 -0
  300. package/dist/i18n/locales/de.json +14 -17
  301. package/dist/i18n/locales/el.json +10 -13
  302. package/dist/i18n/locales/en-GB.json +137 -0
  303. package/dist/i18n/locales/en.json +8 -11
  304. package/dist/i18n/locales/es-MX.json +137 -0
  305. package/dist/i18n/locales/es.json +16 -19
  306. package/dist/i18n/locales/fi.json +8 -11
  307. package/dist/i18n/locales/fr.json +23 -26
  308. package/dist/i18n/locales/hu.json +8 -11
  309. package/dist/i18n/locales/it.json +12 -15
  310. package/dist/i18n/locales/ja.json +13 -16
  311. package/dist/i18n/locales/ko.json +10 -13
  312. package/dist/i18n/locales/nb.json +13 -16
  313. package/dist/i18n/locales/nl.json +21 -24
  314. package/dist/i18n/locales/pl.json +10 -13
  315. package/dist/i18n/locales/{pt.json → pt-BR.json} +19 -22
  316. package/dist/i18n/locales/pt-PT.json +137 -0
  317. package/dist/i18n/locales/ro.json +22 -25
  318. package/dist/i18n/locales/ru.json +11 -14
  319. package/dist/i18n/locales/sv.json +16 -19
  320. package/dist/i18n/locales/tr.json +14 -17
  321. package/dist/i18n/locales/uk.json +11 -14
  322. package/dist/i18n/locales/{zh-cn.json → zh-CN.json} +10 -13
  323. package/dist/i18n/locales/zh-HK.json +137 -0
  324. package/dist/i18n/locales/zh-TW.json +137 -0
  325. package/dist/i18n/regionHints.d.ts +16 -0
  326. package/dist/i18n/regionHints.js +49 -0
  327. package/dist/i18n/regions.d.ts +286 -0
  328. package/dist/i18n/regions.js +265 -0
  329. package/dist/index.d.ts +1 -1
  330. package/dist/index.js +4 -4
  331. package/dist/llms-full.txt +1785 -1637
  332. package/dist/llms-medium.txt +74 -46
  333. package/dist/llms.txt +7 -7
  334. package/dist/locale-blueprint.json +16 -13
  335. package/dist/styles.css +2 -2
  336. package/dist/types/ptComponentMap.d.ts +1 -1
  337. package/dist/utilities/functions/slotKey.d.ts +2 -2
  338. package/dist/utils/versionCheck.js +1 -1
  339. package/dist/vite-plugin.d.ts +22 -19
  340. package/dist/vite.js +309 -297
  341. package/llms.txt +7 -7
  342. package/package.json +5 -3
  343. package/scripts/lib/agent-manifest.mjs +2 -1
  344. package/scripts/lib/eslint-disable.mjs +12 -4
  345. package/scripts/lib/eslint-plugin.d.ts +5 -1
  346. package/scripts/lib/eslint-plugin.mjs +187 -6
  347. package/scripts/lib/helper-canon.mjs +176 -0
  348. package/scripts/lib/helpers-add.mjs +1303 -0
  349. package/scripts/lib/local-components.mjs +33 -4
  350. package/scripts/lib/locale-check.mjs +165 -0
  351. package/scripts/lib/redundant-item-accessor.mjs +398 -0
  352. package/scripts/lib/renamed-item-field.mjs +343 -0
  353. package/scripts/lib/slot-key.mjs +2 -2
  354. package/scripts/lib/slot-renames.mjs +1 -1
  355. package/scripts/lib/validate-bb-markup.mjs +123 -56
  356. package/dist/i18n/index.js +0 -27
@@ -1159,7 +1159,7 @@ export type BbCalendarSlots = {
1159
1159
  set inline from the column count), so it is always exactly as tall as the
1160
1160
  grid. */
1161
1161
  &--datetime {
1162
- padding-right: var(--rail-w, 252px);
1162
+ padding-inline-end: var(--rail-w, 252px);
1163
1163
  position: relative;
1164
1164
  }
1165
1165
 
@@ -1175,7 +1175,7 @@ export type BbCalendarSlots = {
1175
1175
  contain-intrinsic-inline-size: var(--natural-w);
1176
1176
 
1177
1177
  container: bb-calendar / inline-size;
1178
- padding-right: 0;
1178
+ padding-inline-end: 0;
1179
1179
  width: min(100%, var(--natural-w));
1180
1180
  }
1181
1181
 
@@ -1360,7 +1360,7 @@ export type BbCalendarSlots = {
1360
1360
  /* Out of flow only while it leaves, so the box's height is the
1361
1361
  incoming month (slots included) and can ease to it. */
1362
1362
  &[class*='leave-active'] {
1363
- left: 0;
1363
+ inset-inline-start: 0;
1364
1364
  position: absolute;
1365
1365
  top: 0;
1366
1366
  }
@@ -1431,10 +1431,10 @@ export type BbCalendarSlots = {
1431
1431
  border-radius: 0;
1432
1432
  content: '';
1433
1433
  height: calc(var(--cell) - 4px);
1434
- left: 0;
1434
+ inset-inline-end: 0;
1435
+ inset-inline-start: 0;
1435
1436
  pointer-events: none;
1436
1437
  position: absolute;
1437
- right: 0;
1438
1438
  top: 2px;
1439
1439
  transition: background-color var(--bb-transition-fast);
1440
1440
  z-index: 0;
@@ -1448,12 +1448,12 @@ export type BbCalendarSlots = {
1448
1448
  /* Endpoints extend the wash on their inner side only, under the solid cap */
1449
1449
  &--first:not([class*='--last'])::before {
1450
1450
  background-color: color-mix(in oklab, var(--bb-primary) 15%, transparent);
1451
- left: 50%;
1451
+ inset-inline-start: 50%;
1452
1452
  }
1453
1453
 
1454
1454
  &--last:not([class*='--first'])::before {
1455
1455
  background-color: color-mix(in oklab, var(--bb-primary) 15%, transparent);
1456
- right: 50%;
1456
+ inset-inline-end: 50%;
1457
1457
  }
1458
1458
 
1459
1459
  /* Round the band where it terminates at a row wrap */
@@ -1473,12 +1473,12 @@ export type BbCalendarSlots = {
1473
1473
 
1474
1474
  &--preview-end::before {
1475
1475
  border-radius: 0 var(--bb-radius-sm) var(--bb-radius-sm) 0;
1476
- right: 2px;
1476
+ inset-inline-end: 2px;
1477
1477
  }
1478
1478
 
1479
1479
  &--preview-start::before {
1480
1480
  border-radius: var(--bb-radius-sm) 0 0 var(--bb-radius-sm);
1481
- left: 2px;
1481
+ inset-inline-start: 2px;
1482
1482
  }
1483
1483
 
1484
1484
  /* Days of the previous / next month are live controls: muted, never
@@ -1501,6 +1501,7 @@ export type BbCalendarSlots = {
1501
1501
  bottom: 2px;
1502
1502
  content: '';
1503
1503
  height: 2px;
1504
+ /* stylelint-disable-next-line property-disallowed-list -- geometry: centred with a physical translate */
1504
1505
  left: 50%;
1505
1506
  position: absolute;
1506
1507
  transform: translateX(-50%);
@@ -1590,7 +1591,7 @@ export type BbCalendarSlots = {
1590
1591
  &__button-menu {
1591
1592
  background-color: var(--bg);
1592
1593
  height: 100%;
1593
- left: 0;
1594
+ inset-inline-start: 0;
1594
1595
  position: absolute;
1595
1596
  top: 0;
1596
1597
  width: 100%;
@@ -1689,7 +1690,7 @@ export type BbCalendarSlots = {
1689
1690
  var(--bb-primary) 15%,
1690
1691
  transparent
1691
1692
  );
1692
- left: 50%;
1693
+ inset-inline-start: 50%;
1693
1694
  }
1694
1695
 
1695
1696
  &--last:not([class*='--first'])::before {
@@ -1698,7 +1699,7 @@ export type BbCalendarSlots = {
1698
1699
  var(--bb-primary) 15%,
1699
1700
  transparent
1700
1701
  );
1701
- right: 50%;
1702
+ inset-inline-end: 50%;
1702
1703
  }
1703
1704
 
1704
1705
  /* Row wraps: cap the band where the grid breaks. */
@@ -1819,7 +1820,7 @@ export type BbCalendarSlots = {
1819
1820
  */
1820
1821
  @container bb-calendar (width < 335px) {
1821
1822
  .bb-time-selector {
1822
- border-left: 0;
1823
+ border-inline-start: 0;
1823
1824
  border-top: var(--bb-border-w) solid var(--bb-border);
1824
1825
  margin-top: 8px;
1825
1826
  padding: 8px 0 0;
@@ -1835,7 +1836,7 @@ export type BbCalendarSlots = {
1835
1836
 
1836
1837
  @container bb-calendar (335px <= width < 385px) {
1837
1838
  :is(.bb-calendar--seconds, .bb-calendar--ampm) .bb-time-selector {
1838
- border-left: 0;
1839
+ border-inline-start: 0;
1839
1840
  border-top: var(--bb-border-w) solid var(--bb-border);
1840
1841
  margin-top: 8px;
1841
1842
  padding: 8px 0 0;
@@ -1851,7 +1852,7 @@ export type BbCalendarSlots = {
1851
1852
 
1852
1853
  @container bb-calendar (385px <= width < 389px) {
1853
1854
  .bb-calendar--ampm .bb-time-selector {
1854
- border-left: 0;
1855
+ border-inline-start: 0;
1855
1856
  border-top: var(--bb-border-w) solid var(--bb-border);
1856
1857
  margin-top: 8px;
1857
1858
  padding: 8px 0 0;
@@ -1867,7 +1868,7 @@ export type BbCalendarSlots = {
1867
1868
 
1868
1869
  @container bb-calendar (389px <= width < 439px) {
1869
1870
  .bb-calendar--seconds.bb-calendar--ampm .bb-time-selector {
1870
- border-left: 0;
1871
+ border-inline-start: 0;
1871
1872
  border-top: var(--bb-border-w) solid var(--bb-border);
1872
1873
  margin-top: 8px;
1873
1874
  padding: 8px 0 0;
@@ -26,7 +26,7 @@
26
26
  :layout="layout"
27
27
  :name="name"
28
28
  :passthrough="passthrough"
29
- :readonly="readonly"
29
+ :readonly="fieldReadonly"
30
30
  :reverse="reverse"
31
31
  :show-asterisk="showAsterisk"
32
32
  :show-hint="showHint"
@@ -71,7 +71,7 @@
71
71
  :has-errors="!!fieldHasErrors"
72
72
  :has-warnings="!!fieldHasWarnings && !fieldHasErrors"
73
73
  :indeterminate="!!indeterminate"
74
- :readonly="!!readonly"
74
+ :readonly="!!fieldReadonly"
75
75
  v-bind="passthrough.icon"
76
76
  />
77
77
  <!-- eslint-enable vue/attributes-order -->
@@ -137,6 +137,7 @@ const {
137
137
  showAsterisk,
138
138
  errors: fieldErrors,
139
139
  ariaRequired: fieldAriaRequired,
140
+ readonly: fieldReadonly,
140
141
  } = useFormBinding(declaredProps, declaredEmit, {
141
142
  componentName: 'BbCheckbox',
142
143
  identifierFallback: () => declaredProps.label,
@@ -29,7 +29,7 @@
29
29
  :loading="loading"
30
30
  :name="name"
31
31
  :passthrough="containerPassthrough"
32
- :readonly="readonly"
32
+ :readonly="fieldReadonly"
33
33
  :reverse="reverse"
34
34
  :show-asterisk="showAsterisk"
35
35
  :show-hint="showHint"
@@ -112,7 +112,7 @@
112
112
  :has-errors="!!fieldHasErrors"
113
113
  :has-warnings="!!fieldHasWarnings && !fieldHasErrors"
114
114
  :indeterminate="false"
115
- :readonly="!!readonly"
115
+ :readonly="!!fieldReadonly"
116
116
  v-bind="passthrough.part('icon', rowStates, option.item)"
117
117
  />
118
118
  <!-- eslint-enable vue/attributes-order -->
@@ -194,6 +194,7 @@ const {
194
194
  emit,
195
195
  showAsterisk,
196
196
  errors: fieldErrors,
197
+ readonly: fieldReadonly,
197
198
  } = useFormBinding(declaredProps, declaredEmit, {
198
199
  componentName: 'BbCheckboxGroup',
199
200
  identifierFallback: () => declaredProps.legend,
@@ -298,6 +299,7 @@ const { options } = useBaseOptions({
298
299
  itemText: props.itemText as any,
299
300
  itemProps: toRef(props, 'itemProps'),
300
301
  itemValue: props.itemValue as any,
302
+ optionDefaults: true,
301
303
  // A ref, not the setup-time number: a runtime `:max` change must re-gate rows.
302
304
  max: toRef(props, 'max'),
303
305
  selectable: toRef(props, 'selectable'),
@@ -754,14 +756,18 @@ export type BbCheckboxGroupProps<T> = {
754
756
  /**
755
757
  * Defines a path that returns a property of the object to use as text or a function that returns a string.
756
758
  *
757
- * @defaultValue `JSON.stringify(item)`
759
+ * Unset: own `label`, else `text` (`{ label, value }` needs no accessor).
760
+ *
761
+ * @defaultValue own `label`, else `text`, else `JSON.stringify(item)`
758
762
  */
759
763
  itemText?: ItemAccessor<T, string>;
760
764
 
761
765
  /**
762
766
  * Defines a path that returns a property of the object to use as value or a function that returns any value.
763
767
  *
764
- * @defaultValue the whole item
768
+ * Unset: own `value`, even `null`.
769
+ *
770
+ * @defaultValue own `value`, else the whole item
765
771
  */
766
772
  itemValue?: ItemAccessor<T>;
767
773
 
@@ -1072,6 +1078,7 @@ export type BbCheckboxGroupSlots<T> = {
1072
1078
  .bb-checkbox-group {
1073
1079
  .bb-field__layout--horizontal {
1074
1080
  .bb-field__label {
1081
+ /* stylelint-disable-next-line declaration-property-value-disallowed-list -- support: `float: inline-start` needs Chrome 118, above the 114 floor */
1075
1082
  float: left;
1076
1083
  }
1077
1084
  }
@@ -28,7 +28,7 @@
28
28
  :loading="loading"
29
29
  :name="name"
30
30
  :passthrough="passthrough"
31
- :readonly="readonly"
31
+ :readonly="fieldReadonly"
32
32
  :reverse="reverse"
33
33
  :show-asterisk="showAsterisk"
34
34
  :show-hint="showHint"
@@ -52,7 +52,7 @@
52
52
  ref="wrapperRef"
53
53
  :append:icon="props['append:icon']"
54
54
  class="bb-color-input__field"
55
- :clearable="clearable && hasValue && !readonly && !disabled"
55
+ :clearable="clearable && hasValue && !fieldReadonly && !disabled"
56
56
  :compact="compact"
57
57
  :disabled="disabled"
58
58
  :has-errors="fieldHasErrors"
@@ -61,7 +61,7 @@
61
61
  :loading="loading"
62
62
  :passthrough="passthrough"
63
63
  :prepend:icon="props['prepend:icon']"
64
- :readonly="readonly"
64
+ :readonly="fieldReadonly"
65
65
  :variant="variant"
66
66
  @click:clear="emit('update:modelValue', null)"
67
67
  >
@@ -76,7 +76,7 @@
76
76
  :aria-disabled="disabled || undefined"
77
77
  :aria-invalid="fieldHasErrors ? true : undefined"
78
78
  :aria-labelledby="ariaLabelledby"
79
- :aria-readonly="readonly || undefined"
79
+ :aria-readonly="fieldReadonly || undefined"
80
80
  :aria-required="fieldAriaRequired"
81
81
  :autocomplete="autocomplete"
82
82
  :autofocus="autofocus"
@@ -84,7 +84,7 @@
84
84
  :disabled="disabled"
85
85
  :name="name"
86
86
  :placeholder="placeholder"
87
- :readonly="readonly"
87
+ :readonly="fieldReadonly"
88
88
  :required="fieldRequired"
89
89
  size="1"
90
90
  type="text"
@@ -99,7 +99,7 @@
99
99
  :adaptive="adaptive"
100
100
  :alpha="alpha"
101
101
  :anchor="wrapperRef"
102
- :disabled="disabled || readonly"
102
+ :disabled="disabled || fieldReadonly"
103
103
  :eye-dropper="eyeDropper"
104
104
  :label="indicatorLabel"
105
105
  :model-value="fieldModel"
@@ -126,7 +126,7 @@
126
126
  <button
127
127
  v-bind="indicatorBindings(dotProps)"
128
128
  class="bb-color-input__indicator"
129
- :disabled="disabled || readonly"
129
+ :disabled="disabled || fieldReadonly"
130
130
  :style="{ backgroundColor: fieldModel ?? undefined }"
131
131
  type="button"
132
132
  />
@@ -197,6 +197,7 @@ const {
197
197
  required: fieldRequired,
198
198
  ariaRequired: fieldAriaRequired,
199
199
  model: fieldModel,
200
+ readonly: fieldReadonly,
200
201
  } = useFormBinding(declaredProps, declaredEmit, {
201
202
  componentName: 'BbColorInput',
202
203
  identifierFallback: () => declaredProps.label,
@@ -900,11 +901,11 @@ export type BbColorInputSlots = {
900
901
  &::after {
901
902
  content: '';
902
903
  height: calc(var(--bb-input-h) - 2 * var(--bb-border-w));
903
- position: absolute;
904
- right: max(
904
+ inset-inline-end: max(
905
905
  calc((var(--bb-input-icon) - var(--bb-input-h)) / 2),
906
906
  calc(var(--bb-input-px) * -1)
907
907
  );
908
+ position: absolute;
908
909
  top: 50%;
909
910
  transform: translateY(-50%);
910
911
  width: var(--bb-input-h);
@@ -354,7 +354,7 @@ export type BbConfirmPortalSlotProps<P = any> = {
354
354
  display: flex;
355
355
  justify-content: flex-end;
356
356
  > :not(:last-child) {
357
- margin-right: 12px;
357
+ margin-inline-end: 12px;
358
358
  }
359
359
  }
360
360
  }
@@ -166,7 +166,7 @@ export type BbConfirmPortalSlotProps<P = any> = {
166
166
  display: flex;
167
167
  justify-content: flex-end;
168
168
  > :not(:last-child) {
169
- margin-right: 12px;
169
+ margin-inline-end: 12px;
170
170
  }
171
171
  }
172
172
  }
@@ -938,7 +938,7 @@ export type BbDatePickerSlots = {
938
938
  .bb-calendar--datetime {
939
939
  display: flex;
940
940
  flex-direction: column;
941
- padding-right: 0;
941
+ padding-inline-end: 0;
942
942
  }
943
943
 
944
944
  /* The time rail in the sheet: one touch scale for the whole panel. The
@@ -955,7 +955,7 @@ export type BbDatePickerSlots = {
955
955
  --time-row-h: var(--sheet-cell, 40px);
956
956
  --time-col-w: var(--sheet-cell, 40px);
957
957
 
958
- border-left: 0;
958
+ border-inline-start: 0;
959
959
  border-top: var(--bb-border-w) solid var(--bb-border);
960
960
  height: 252px;
961
961
  margin: 12px 0 0;
@@ -28,7 +28,7 @@
28
28
  :loading="loading"
29
29
  :name="name"
30
30
  :passthrough="passthrough"
31
- :readonly="readonly"
31
+ :readonly="fieldReadonly"
32
32
  :reverse="reverse"
33
33
  :show-asterisk="showAsterisk"
34
34
  :show-hint="showHint"
@@ -64,7 +64,7 @@
64
64
  :loading="loading"
65
65
  :passthrough="passthrough"
66
66
  :prepend:icon="props['prepend:icon']"
67
- :readonly="readonly"
67
+ :readonly="fieldReadonly"
68
68
  :variant="variant"
69
69
  @click="onFieldTap"
70
70
  @click:clear="onClickClear"
@@ -179,7 +179,7 @@
179
179
  :off-canvas-props="offCanvasProps"
180
180
  :pt="passthrough.forward(PICKER_PARTS, BB_DATE_PICKER_PT.states)"
181
181
  :range="range"
182
- :readonly="readonly"
182
+ :readonly="fieldReadonly"
183
183
  :seconds="seconds"
184
184
  :selectable="selectable"
185
185
  :step="step"
@@ -198,7 +198,7 @@
198
198
  <!-- eslint-disable vue/attributes-order -- the picker's activator props first, `pt:activator` LAST (PASSTHROUGH.md T17) -->
199
199
  <button
200
200
  class="bb-segmented-field__activator"
201
- :disabled="disabled || readonly"
201
+ :disabled="disabled || fieldReadonly"
202
202
  type="button"
203
203
  v-bind="mergeProps(activatorProps, passthrough.activator)"
204
204
  >
@@ -290,7 +290,11 @@ import { isNotEmpty } from '@/utilities/functions/isNotEmpty';
290
290
  import { normalizeDateBound } from '@/utilities/functions/normalizeDateBound';
291
291
  import { warnRemovedAttrs } from '@/utilities/functions/warnRemovedAttrs';
292
292
  import calendarIcon from '@/assets/svgs/calendar.svg?raw';
293
- import { useDayjsLocale } from '../BbCalendar/useDayjsLocale';
293
+ import {
294
+ formatDateOf,
295
+ timeFieldsOf,
296
+ useDayjsLocale,
297
+ } from '../BbCalendar/useDayjsLocale';
294
298
  import BbDatePicker from '../BbDatePicker/BbDatePicker.vue';
295
299
  import {
296
300
  BB_DATE_PICKER_PT,
@@ -336,6 +340,7 @@ const {
336
340
  required: fieldRequired,
337
341
  ariaRequired: fieldAriaRequired,
338
342
  model: fieldModel,
343
+ readonly: fieldReadonly,
339
344
  } = useFormBinding(declaredProps, declaredEmit, {
340
345
  componentName: 'BbDatePickerInput',
341
346
  identifierFallback: () => declaredProps.label,
@@ -510,6 +515,13 @@ const onFieldTap = (event: MouseEvent) => {
510
515
  return;
511
516
  openPicker();
512
517
  };
518
+ /** A key that would change a segment's value (step, clear, type). */
519
+ const changesSegment = (event: KeyboardEvent) =>
520
+ event.key === 'ArrowUp' ||
521
+ event.key === 'ArrowDown' ||
522
+ event.key === 'Backspace' ||
523
+ event.key === 'Delete' ||
524
+ (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey);
513
525
  const onSegmentKeydown = (
514
526
  descriptor: FieldDescriptor,
515
527
  event: KeyboardEvent
@@ -519,6 +531,12 @@ const onSegmentKeydown = (
519
531
  openPicker();
520
532
  return;
521
533
  }
534
+ // Q60.17: a read-only field (its `readonly`, or its form saving) refuses
535
+ // the keys that change a segment; moving between segments still works.
536
+ if (props.readonly && changesSegment(event)) {
537
+ event.preventDefault();
538
+ return;
539
+ }
522
540
  onFieldKeydown(descriptor, event);
523
541
  };
524
542
 
@@ -849,17 +867,29 @@ const onTimeSelect = ({ unit, value }: { unit: TimeUnit; value: string }) => {
849
867
  combineFieldsToModelValue({ finalize: false });
850
868
  };
851
869
 
852
- /** Spoken value format for the calendar button: date, plus time with `type="datetime"`. */
853
- const spokenValueFormat = computed(() => {
854
- // Announce what was actually picked: a month has no day to read out.
855
- if (props.type === 'year') return 'YYYY';
856
- if (props.type === 'month') return 'MMMM YYYY';
857
- if (!isDateTime.value) return 'D MMMM YYYY';
858
- if (props.ampm)
859
- return props.seconds ? 'D MMMM YYYY h:mm:ss A' : 'D MMMM YYYY h:mm A';
860
- return props.seconds ? 'D MMMM YYYY HH:mm:ss' : 'D MMMM YYYY HH:mm';
870
+ /**
871
+ * How the calendar button speaks a value: date, plus time with
872
+ * `type="datetime"`, in the locale's own long form (Intl / CLDR, see
873
+ * `formatDateOf`) — "7. října 2026", "2026年10月7日", "7 de octubre de 2026".
874
+ * A month has no day to read out, a year neither.
875
+ */
876
+ const spokenDateOptions = computed((): Intl.DateTimeFormatOptions => {
877
+ if (props.type === 'year') return { year: 'numeric' };
878
+ if (props.type === 'month') return { year: 'numeric', month: 'long' };
879
+ return { year: 'numeric', month: 'long', day: 'numeric' };
861
880
  });
862
881
 
882
+ const spokenValue = (value: Dayjs) => {
883
+ const date = formatDateOf(value, config.locale, spokenDateOptions.value);
884
+ if (!isDateTime.value) return date;
885
+ const time = formatDateOf(
886
+ value,
887
+ config.locale,
888
+ timeFieldsOf(!!props.ampm, !!props.seconds)
889
+ );
890
+ return `${date} ${time}`;
891
+ };
892
+
863
893
  /**
864
894
  * Q56.10 (owner, 2026-09-28): the trigger's name reads exactly what the field
865
895
  * displays — the segments, time included — not `modelValue`, which under
@@ -890,16 +920,13 @@ const accessibleButtonLabel = computed(() => {
890
920
  if (!start || !end) return t('datePickerInput.emptyRange').value;
891
921
  return t(
892
922
  'datePickerInput.changeSelectionRange',
893
- start.format(spokenValueFormat.value),
894
- end.format(spokenValueFormat.value)
923
+ spokenValue(start),
924
+ spokenValue(end)
895
925
  ).value;
896
926
  }
897
927
  const shown = displayedValue('start');
898
928
  if (!shown) return t('datePickerInput.emptySelection').value;
899
- return t(
900
- 'datePickerInput.changeSelection',
901
- shown.format(spokenValueFormat.value)
902
- ).value;
929
+ return t('datePickerInput.changeSelection', spokenValue(shown)).value;
903
930
  });
904
931
 
905
932
  const isDateDisabled = (date: Dayjs) => {
@@ -1205,7 +1205,7 @@ export type { BbDialogSlots as BaseDialogSlots };
1205
1205
  * the space here instead — only when there is actually a control to
1206
1206
  * clear, so `hideClose` keeps the full width. */
1207
1207
  &:has(~ .bb-close-button) {
1208
- padding-right: calc(var(--close-size) + 4px);
1208
+ padding-inline-end: calc(var(--close-size) + 4px);
1209
1209
  }
1210
1210
  }
1211
1211
 
@@ -1217,8 +1217,8 @@ export type { BbDialogSlots as BaseDialogSlots };
1217
1217
  > .bb-close-button {
1218
1218
  --size: var(--close-size);
1219
1219
  --p: 7px;
1220
+ inset-inline-end: calc(var(--px) - var(--p));
1220
1221
  position: absolute;
1221
- right: calc(var(--px) - var(--p));
1222
1222
  top: calc(var(--py) - var(--p));
1223
1223
  }
1224
1224
 
@@ -1241,7 +1241,7 @@ export type { BbDialogSlots as BaseDialogSlots };
1241
1241
  does. The × sits at the top-right, and a one-line title is short
1242
1242
  enough that the description's first line can still run under it. */
1243
1243
  &:has(~ .bb-close-button) {
1244
- padding-right: calc(var(--close-size) + 4px);
1244
+ padding-inline-end: calc(var(--close-size) + 4px);
1245
1245
  }
1246
1246
  }
1247
1247
  }
@@ -1268,8 +1268,8 @@ export type { BbDialogSlots as BaseDialogSlots };
1268
1268
  > .bb-close-button {
1269
1269
  --size: 28px;
1270
1270
  --p: 7px;
1271
+ inset-inline-end: calc(var(--px) - var(--p));
1271
1272
  position: absolute;
1272
- right: calc(var(--px) - var(--p));
1273
1273
  top: calc(var(--py) - var(--p));
1274
1274
  }
1275
1275
  }
@@ -1345,6 +1345,6 @@ export type { BbDialogSlots as BaseDialogSlots };
1345
1345
 
1346
1346
  body:has(.bb-dialog--visible) {
1347
1347
  overflow: hidden;
1348
- padding-right: var(--scrollbar-width);
1348
+ padding-inline-end: var(--scrollbar-width);
1349
1349
  }
1350
1350
  ```