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

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 (252) hide show
  1. package/README.md +55 -3
  2. package/bin/bitboss-ui-mcp.mjs +419 -9
  3. package/bin/bitboss-ui.mjs +293 -22
  4. package/dist/ai/BbAccordion.md +21 -23
  5. package/dist/ai/BbAlert.md +6 -12
  6. package/dist/ai/BbAvatar.md +60 -24
  7. package/dist/ai/BbBadge.md +12 -20
  8. package/dist/ai/BbBaseButton.md +14 -16
  9. package/dist/ai/BbBaseCheckboxIcon.md +6 -10
  10. package/dist/ai/BbBaseColorInput.md +1 -0
  11. package/dist/ai/BbBaseDatePickerInput.md +1 -0
  12. package/dist/ai/BbBaseNumberInput.md +1 -0
  13. package/dist/ai/BbBaseRadioIcon.md +6 -10
  14. package/dist/ai/BbBaseSelect.md +1 -0
  15. package/dist/ai/BbBaseSwitchIcon.md +5 -9
  16. package/dist/ai/BbBaseTag.md +1 -0
  17. package/dist/ai/BbBaseTextInput.md +2 -1
  18. package/dist/ai/BbBaseTextarea.md +1 -0
  19. package/dist/ai/BbBaseTimePickerInput.md +1 -0
  20. package/dist/ai/BbBreadcrumbs.md +23 -34
  21. package/dist/ai/BbButton.md +35 -47
  22. package/dist/ai/BbCheckbox.md +21 -37
  23. package/dist/ai/BbCheckboxGroup.md +13 -13
  24. package/dist/ai/BbCollapsible.md +14 -26
  25. package/dist/ai/BbColorInput.md +27 -23
  26. package/dist/ai/BbColorPalette.md +23 -35
  27. package/dist/ai/BbConfirm.md +17 -32
  28. package/dist/ai/BbDatePickerInput.md +29 -21
  29. package/dist/ai/BbDialog.md +159 -62
  30. package/dist/ai/BbDropdown.md +21 -25
  31. package/dist/ai/BbDropdownButton.md +13 -30
  32. package/dist/ai/BbDropzone.md +9 -11
  33. package/dist/ai/BbIcon.md +44 -33
  34. package/dist/ai/BbIndicator.md +2 -2
  35. package/dist/ai/BbNumberInput.md +32 -20
  36. package/dist/ai/BbOffCanvas.md +42 -42
  37. package/dist/ai/BbPagination.md +21 -23
  38. package/dist/ai/BbPopover.md +15 -17
  39. package/dist/ai/BbProgress.md +40 -51
  40. package/dist/ai/BbRadio.md +9 -9
  41. package/dist/ai/BbRadioGroup.md +7 -11
  42. package/dist/ai/BbRating.md +8 -12
  43. package/dist/ai/BbSelect.md +46 -36
  44. package/dist/ai/BbSelectPopover.md +19 -31
  45. package/dist/ai/BbSlider.md +15 -19
  46. package/dist/ai/BbSmoothHeight.md +16 -31
  47. package/dist/ai/BbSpinner.md +118 -74
  48. package/dist/ai/BbSwitch.md +25 -18
  49. package/dist/ai/BbSwitchGroup.md +9 -14
  50. package/dist/ai/BbTable.md +102 -55
  51. package/dist/ai/BbTabs.md +59 -82
  52. package/dist/ai/BbTag.md +26 -23
  53. package/dist/ai/BbTextInput.md +63 -27
  54. package/dist/ai/BbTextarea.md +42 -34
  55. package/dist/ai/BbTimePickerInput.md +14 -0
  56. package/dist/ai/BbToast.md +14 -34
  57. package/dist/ai/BbTooltip.md +22 -20
  58. package/dist/ai/BbTree.md +46 -72
  59. package/dist/ai/CommonInputWrapper.md +1 -0
  60. package/dist/ai/changelog.json +170 -62
  61. package/dist/ai/components.json +1678 -11
  62. package/dist/ai/composables/useConfirm.md +5 -2
  63. package/dist/ai/composables/useToast.md +4 -2
  64. package/dist/ai/guides/agent-contract.md +7 -4
  65. package/dist/ai/guides/ai-router.md +37 -22
  66. package/dist/ai/guides/component-picker.md +23 -18
  67. package/dist/ai/guides/design-language.md +151 -21
  68. package/dist/ai/guides/design-tokens.md +29 -4
  69. package/dist/ai/guides/icons-policy.md +46 -21
  70. package/dist/ai/guides/installation-and-plugin-setup.md +286 -17
  71. package/dist/ai/guides/migration/components/bb-rating.md +26 -1
  72. package/dist/ai/guides/migration/components/bb-tooltip.md +18 -0
  73. package/dist/ai/guides/migration/v2-to-v3.md +50 -23
  74. package/dist/ai/index.md +1 -1
  75. package/dist/ai/recipes/inertia/approvals-inbox.md +3 -3
  76. package/dist/ai/recipes/inertia/inline-edit-workspace.md +2 -2
  77. package/dist/ai/recipes/inertia/onboarding.md +2 -2
  78. package/dist/ai/recipes/inertia/ownership-atlas.md +6 -6
  79. package/dist/ai/recipes/inertia/record-form.md +5 -5
  80. package/dist/ai/recipes/inertia/records-workspace.md +4 -4
  81. package/dist/ai/recipes/inertia/upload-center.md +6 -6
  82. package/dist/ai/recipes/inertia/wizard-form.md +5 -5
  83. package/dist/ai/recipes/nuxt/approvals-inbox.md +3 -3
  84. package/dist/ai/recipes/nuxt/inline-edit-workspace.md +2 -2
  85. package/dist/ai/recipes/nuxt/onboarding.md +2 -2
  86. package/dist/ai/recipes/nuxt/record-form.md +5 -5
  87. package/dist/ai/recipes/nuxt/records-workspace.md +4 -4
  88. package/dist/ai/recipes/nuxt/upload-center.md +6 -6
  89. package/dist/ai/recipes/nuxt/wizard-form.md +5 -5
  90. package/dist/ai/recipes/vue/approvals-inbox.md +3 -3
  91. package/dist/ai/recipes/vue/inline-edit-workspace.md +2 -2
  92. package/dist/ai/recipes/vue/onboarding.md +2 -2
  93. package/dist/ai/recipes/vue/record-form.md +10 -10
  94. package/dist/ai/recipes/vue/records-workspace.md +4 -4
  95. package/dist/ai/recipes/vue/upload-center.md +6 -6
  96. package/dist/ai/recipes/vue/wizard-form.md +5 -5
  97. package/dist/ai/source/BbBadge.md +1 -1
  98. package/dist/ai/source/BbBaseCheckbox.md +1 -1
  99. package/dist/ai/source/BbBaseColorInput.md +7 -0
  100. package/dist/ai/source/BbBaseDatePicker.md +5 -5
  101. package/dist/ai/source/BbBaseDatePickerInput.md +9 -2
  102. package/dist/ai/source/BbBaseNumberInput.md +7 -0
  103. package/dist/ai/source/BbBaseRadio.md +1 -1
  104. package/dist/ai/source/BbBaseRating.md +5 -5
  105. package/dist/ai/source/BbBaseSelect.md +8 -1
  106. package/dist/ai/source/BbBaseSlider.md +5 -5
  107. package/dist/ai/source/BbBaseSwitch.md +1 -1
  108. package/dist/ai/source/BbBaseTag.md +7 -0
  109. package/dist/ai/source/BbBaseTextInput.md +7 -0
  110. package/dist/ai/source/BbBaseTextarea.md +7 -0
  111. package/dist/ai/source/BbBaseTimePickerInput.md +8 -1
  112. package/dist/ai/source/BbBreadcrumbs.md +20 -1
  113. package/dist/ai/source/BbButton.md +2 -2
  114. package/dist/ai/source/BbColorInput.md +14 -0
  115. package/dist/ai/source/BbDatePickerInput.md +14 -0
  116. package/dist/ai/source/BbDialog.md +39 -8
  117. package/dist/ai/source/BbDropdown.md +1 -1
  118. package/dist/ai/source/BbDropzone.md +5 -5
  119. package/dist/ai/source/BbIcon.md +23 -10
  120. package/dist/ai/source/BbNumberInput.md +14 -0
  121. package/dist/ai/source/BbOffCanvas.md +50 -28
  122. package/dist/ai/source/BbPagination.md +2 -2
  123. package/dist/ai/source/BbPopover.md +12 -1
  124. package/dist/ai/source/BbSelect.md +14 -0
  125. package/dist/ai/source/BbSelectPopover.md +45 -7
  126. package/dist/ai/source/BbSpinner.md +2 -2
  127. package/dist/ai/source/BbTable.md +11 -11
  128. package/dist/ai/source/BbTag.md +14 -0
  129. package/dist/ai/source/BbTextInput.md +14 -0
  130. package/dist/ai/source/BbTextarea.md +14 -0
  131. package/dist/ai/source/BbTimePickerInput.md +14 -0
  132. package/dist/ai/source/BbTooltip.md +57 -10
  133. package/dist/ai/source/ChipsBox.md +1 -1
  134. package/dist/ai/source/CommaBox.md +1 -1
  135. package/dist/ai/source/CommonInputWrapper.md +128 -33
  136. package/dist/ai/source/GuidesComponent.md +14 -7
  137. package/dist/ai/source/OptionsContainer.md +1 -1
  138. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +1 -1
  139. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +1 -1
  140. package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
  141. package/dist/components/BbBaseColorInput/BbBaseColorInput.vue_vue_type_script_setup_true_lang.js +4 -1
  142. package/dist/components/BbBaseColorInput/types.d.ts +5 -0
  143. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +4 -4
  144. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +1 -1
  145. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +5 -2
  146. package/dist/components/BbBaseDatePickerInput/types.d.ts +5 -0
  147. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +1 -1
  148. package/dist/components/BbBaseNumberInput/BbBaseNumberInput.vue_vue_type_script_setup_true_lang.js +4 -1
  149. package/dist/components/BbBaseNumberInput/types.d.ts +5 -0
  150. package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +1 -1
  151. package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +3 -3
  152. package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +4 -1
  153. package/dist/components/BbBaseSelect/types.d.ts +5 -0
  154. package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +3 -3
  155. package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +1 -1
  156. package/dist/components/BbBaseTag/BbBaseTag.vue_vue_type_script_setup_true_lang.js +4 -1
  157. package/dist/components/BbBaseTag/types.d.ts +5 -0
  158. package/dist/components/BbBaseTextInput/BbBaseTextInput.vue_vue_type_script_setup_true_lang.js +4 -1
  159. package/dist/components/BbBaseTextInput/types.d.ts +5 -0
  160. package/dist/components/BbBaseTextarea/BbBaseTextarea.vue_vue_type_script_setup_true_lang.js +4 -1
  161. package/dist/components/BbBaseTextarea/types.d.ts +5 -0
  162. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +5 -2
  163. package/dist/components/BbBaseTimePickerInput/types.d.ts +5 -0
  164. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +71 -71
  165. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +2 -2
  166. package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +5 -2
  167. package/dist/components/BbColorInput/types.d.ts +12 -0
  168. package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +4 -2
  169. package/dist/components/BbDatePickerInput/types.d.ts +12 -0
  170. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +102 -97
  171. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +1 -1
  172. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +58 -58
  173. package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +2 -2
  174. package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +33 -35
  175. package/dist/components/BbIcon/iconCache.d.ts +30 -0
  176. package/dist/components/BbIcon/iconCache.js +21 -3
  177. package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +5 -2
  178. package/dist/components/BbNumberInput/types.d.ts +12 -0
  179. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +57 -56
  180. package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +2 -2
  181. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +138 -138
  182. package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +4 -2
  183. package/dist/components/BbSelect/types.d.ts +12 -0
  184. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +43 -43
  185. package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +1 -1
  186. package/dist/components/BbSpinner/types.d.ts +1 -1
  187. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +8 -8
  188. package/dist/components/BbTable/BbTableDataRow.js +2 -2
  189. package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +5 -2
  190. package/dist/components/BbTag/types.d.ts +12 -0
  191. package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +5 -2
  192. package/dist/components/BbTextInput/types.d.ts +12 -0
  193. package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +5 -2
  194. package/dist/components/BbTextarea/types.d.ts +12 -0
  195. package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +4 -2
  196. package/dist/components/BbTimePickerInput/types.d.ts +12 -0
  197. package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +62 -62
  198. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +81 -78
  199. package/dist/components/BbTooltip/types.d.ts +8 -1
  200. package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +1 -1
  201. package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +1 -1
  202. package/dist/components/CommonInputWrapper/CommonInputWrapper.vue.d.ts +1 -0
  203. package/dist/components/CommonInputWrapper/CommonInputWrapper.vue_vue_type_script_setup_true_lang.js +4 -2
  204. package/dist/components/CommonInputWrapper/types.d.ts +10 -0
  205. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +1 -1
  206. package/dist/composables/useConfirm.d.ts +22 -0
  207. package/dist/composables/useConfirm.js +43 -40
  208. package/dist/composables/useSafeAreaInternal.js +1 -1
  209. package/dist/composables/useToast.d.ts +16 -0
  210. package/dist/composables/useToast.js +20 -16
  211. package/dist/composables/useViewportWidth.d.ts +20 -6
  212. package/dist/composables/useViewportWidth.js +8 -7
  213. package/dist/icon-scan.d.ts +276 -0
  214. package/dist/icon-scan.js +485 -0
  215. package/dist/icons-whitelist.d.ts +5 -4
  216. package/dist/index.d.ts +2 -0
  217. package/dist/input-variants.d.ts +18 -0
  218. package/dist/llms-full.txt +2173 -1537
  219. package/dist/llms-medium.txt +504 -82
  220. package/dist/llms.txt +1 -1
  221. package/dist/nuxt-module.d.ts +1 -0
  222. package/dist/nuxt.js +10 -7
  223. package/dist/plugin.js +1 -0
  224. package/dist/runtime/nuxt-plugin.js +2 -1
  225. package/dist/styles.css +1 -1
  226. package/dist/types/Config.d.ts +18 -0
  227. package/dist/types/InputVariant.d.ts +22 -0
  228. package/dist/utils/cssLayers.d.ts +91 -0
  229. package/dist/utils/cssLayers.js +43 -0
  230. package/dist/utils/injectLibraryStyles.d.ts +3 -1
  231. package/dist/utils/injectLibraryStyles.js +24 -23
  232. package/dist/validated/BbColorInput.vue_vue_type_script_setup_true_lang.js +1 -0
  233. package/dist/validated/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +1 -0
  234. package/dist/validated/BbNumberInput.vue_vue_type_script_setup_true_lang.js +1 -0
  235. package/dist/validated/BbSelect.vue_vue_type_script_setup_true_lang.js +1 -0
  236. package/dist/validated/BbTag.vue_vue_type_script_setup_true_lang.js +1 -0
  237. package/dist/validated/BbTextInput.vue_vue_type_script_setup_true_lang.js +1 -0
  238. package/dist/validated/BbTextarea.vue_vue_type_script_setup_true_lang.js +1 -0
  239. package/dist/validated/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +1 -0
  240. package/dist/validated/index.d.ts +1 -0
  241. package/dist/vite-plugin.d.ts +89 -12
  242. package/dist/vite.js +331 -281
  243. package/llms.txt +1 -1
  244. package/package.json +7 -5
  245. package/scripts/lib/ensure-manifest.mjs +28 -5
  246. package/scripts/lib/eslint-plugin.d.ts +35 -0
  247. package/scripts/lib/eslint-plugin.mjs +299 -3
  248. package/scripts/lib/hand-roll-hints.mjs +50 -6
  249. package/scripts/lib/html-attributes.mjs +42 -0
  250. package/scripts/lib/mcp-config.mjs +38 -34
  251. package/scripts/lib/public-type-exports.mjs +246 -0
  252. package/scripts/lib/validate-bb-markup.mjs +205 -12
@@ -19,6 +19,7 @@
19
19
  'common-input-wrapper--warnings': showWarning,
20
20
  'common-input-wrapper--loading': loading,
21
21
  'common-input-wrapper--readonly': readonly,
22
+ [`common-input-wrapper--${variant}`]: variant !== 'none',
22
23
  }"
23
24
  >
24
25
  <slot name="prepend-outer" />
@@ -94,6 +95,7 @@ const props = withDefaults(defineProps<CommonInputWrapperProps>(), {
94
95
  // catches null/undefined). default: undefined keeps it undefined when unset
95
96
  // so consumers that don't forward it still get the intended "assume value".
96
97
  hasValue: undefined,
98
+ variant: 'outline',
97
99
  });
98
100
  const emit = defineEmits<CommonInputWrapperEvents>();
99
101
 
@@ -177,6 +179,7 @@ const onClickClear = () => {
177
179
 
178
180
  ```ts
179
181
  import type { IconType } from '@/types/Icon';
182
+ import type { InputVariantType } from '@/types/InputVariant';
180
183
 
181
184
  export type CommonInputWrapperProps = {
182
185
  /**
@@ -246,6 +249,16 @@ export type CommonInputWrapperProps = {
246
249
  * Whether the input is readonly.
247
250
  */
248
251
  readonly?: boolean;
252
+
253
+ /**
254
+ * Visual variant of the field box. Controls colours only — background,
255
+ * border colour, focus border — while height, padding and border WIDTH
256
+ * stay identical across variants, so switching one never reflows a form.
257
+ * Mirrors the equally named `BbButton` variants.
258
+ *
259
+ * @defaultValue `'outline'`
260
+ */
261
+ variant?: InputVariantType;
249
262
  };
250
263
 
251
264
  export type CommonInputWrapperEvents = {
@@ -295,7 +308,37 @@ export type CommonInputWrapperSlots = {
295
308
 
296
309
  ```css
297
310
  /* @inherit --h — read off embedded .bb-button elements, which define it */
311
+ /*
312
+ * STRUCTURE vs LOOK. The inner box's geometry — height, padding, radius and
313
+ * border WIDTH — is declared once and never varies. Everything a variant may
314
+ * change is a colour, routed through the five look variables below, so
315
+ * `variant="ghost"` and `variant="outline"` measure the same to the pixel and
316
+ * switching one never reflows a form. `--<variant>` modifiers only assign
317
+ * those variables; a custom variant registered via `inputVariants` does the
318
+ * same from a project stylesheet.
319
+ *
320
+ * State (errors, warnings) contributes ONE input to the look: `--state-border`.
321
+ * A variant that shows a border reads it (`var(--state-border, <rest>)`); a
322
+ * variant with no border ignores it. That is how ghost stays borderless under
323
+ * errors without a `:not(--ghost)` on every state rule (owner ruling
324
+ * 2026-09-10: the icon and the messages carry the state). The ring colour is
325
+ * state-owned and applies to every variant.
326
+ */
298
327
  .common-input-wrapper {
328
+ /* Look variables — the `none` variant is exactly these fallbacks:
329
+ geometry intact, every colour transparent, and NO ring (`none` opts out
330
+ of variant styling, and a ring is styling — owner, 2026-09-10). The ring
331
+ COLOUR stays state-owned (`--ring-color`); whether a ring is drawn at all
332
+ is the variant's call, through `--ring-size`. */
333
+ --bg: transparent;
334
+ --bg-hover: var(--bg);
335
+ --bg-focus: var(--bg);
336
+ --bg-disabled: var(--bg);
337
+ --border-color: transparent;
338
+ --border-focus: var(--border-color);
339
+ --ring-size: 0px;
340
+ --ring-color: var(--bb-ring);
341
+
299
342
  align-items: center;
300
343
  display: inline-flex;
301
344
  /* Grid/flex item: without this its automatic minimum is the trigger's
@@ -303,9 +346,50 @@ export type CommonInputWrapperSlots = {
303
346
  See the note on `.bb-base-input-container`. */
304
347
  min-width: 0;
305
348
 
349
+ /* ── Variants: the same names and tokens as BbButton ─────────────────── */
350
+
351
+ /* The default. A raised panel with the neutral border — inputs are
352
+ surfaces, so unlike the transparent button outline the box keeps
353
+ `--bb-panel`; the border, focus and ring match the button. */
354
+ &--outline {
355
+ --bg: var(--bb-panel);
356
+ --bg-disabled: var(--bb-muted);
357
+ --border-color: var(--state-border, var(--bb-outline-border));
358
+ --border-focus: var(--state-border, var(--bb-primary));
359
+ --ring-size: var(--bb-ring-size);
360
+ }
361
+
362
+ /* A soft tinted surface with a faint border, for fields on a panel that
363
+ should sit back from primary content. Focus keeps the hover wash, as the
364
+ secondary button does. */
365
+ &--secondary {
366
+ --bg: var(--bb-secondary);
367
+ --bg-hover: var(--bb-secondary-hover);
368
+ --bg-focus: var(--bb-secondary-hover);
369
+ --bg-disabled: var(--bb-muted);
370
+ --border-color: var(--state-border, var(--bb-secondary-border));
371
+ --border-focus: var(--state-border, var(--bb-primary));
372
+ --ring-size: var(--bb-ring-size);
373
+ }
374
+
375
+ /* Chrome-less until engaged: no border in ANY state (not even errors), a
376
+ hover wash as the affordance, and the SAME wash under the focus ring —
377
+ a ring around nothing reads as a glitch (owner, 2026-09-10; the ghost
378
+ button does the same). The inline-edit cell. */
379
+ &--ghost {
380
+ --bg: var(--bb-ghost);
381
+ --bg-hover: var(--bb-ghost-hover);
382
+ --bg-focus: var(--bb-ghost-hover);
383
+ --bg-disabled: transparent;
384
+ --border-color: var(--bb-ghost-border);
385
+ --border-focus: var(--bb-ghost-border);
386
+ --ring-size: var(--bb-ring-size);
387
+ }
388
+
306
389
  &--active > .common-input-wrapper__inner {
307
- border-color: var(--bb-primary);
308
- box-shadow: 0px 0px 0px var(--bb-ring-size) var(--ring-color);
390
+ background-color: var(--bg-focus);
391
+ border-color: var(--border-focus);
392
+ box-shadow: 0px 0px 0px var(--ring-size) var(--ring-color);
309
393
  }
310
394
 
311
395
  &--compact {
@@ -318,44 +402,24 @@ export type CommonInputWrapperSlots = {
318
402
  }
319
403
  }
320
404
 
321
- &--disabled .common-input-wrapper__inner {
322
- background-color: var(--bb-muted);
323
-
324
- input,
325
- textarea {
326
- color: var(--bb-text-muted);
327
- }
328
-
329
- &:focus-within {
330
- border-color: var(--bb-border);
331
- box-shadow: 0px 0px 0px 0px var(--bb-ring);
332
- }
333
- }
334
-
335
- &--errors .common-input-wrapper__inner {
405
+ &--errors {
336
406
  --ring-color: var(--bb-ring-danger);
337
- border-color: var(--bb-danger);
338
-
339
- &:focus-within {
340
- border-color: var(--bb-danger);
341
- }
407
+ --state-border: var(--bb-danger);
342
408
  }
343
409
 
344
- &--warnings .common-input-wrapper__inner {
410
+ &--warnings {
345
411
  --ring-color: var(--bb-ring-warn);
346
- border-color: var(--bb-warn);
347
-
348
- &:focus-within {
349
- border-color: var(--bb-warn);
350
- }
412
+ --state-border: var(--bb-warn);
351
413
  }
352
414
 
353
415
  &__inner {
354
- --ring-color: var(--bb-ring);
355
416
  --inside-label-clearance: 0px;
356
417
  align-items: center;
357
- background-color: var(--bb-panel);
358
- border: var(--bb-border-w) solid var(--bb-border);
418
+ background-color: var(--bg);
419
+ /* The width is structure and is the same for every variant — a
420
+ transparent border keeps the box height where a removed one would
421
+ not. Variants set only the colour. */
422
+ border: var(--bb-border-w) solid var(--border-color);
359
423
  border-radius: var(--bb-radius);
360
424
  box-shadow: 0px 0px 0px 0px var(--bb-ring);
361
425
  display: inline-flex;
@@ -379,9 +443,14 @@ export type CommonInputWrapperSlots = {
379
443
  min-height var(--bb-transition-medium) var(--bb-ease),
380
444
  padding-top var(--bb-transition-medium) var(--bb-ease);
381
445
 
446
+ &:hover {
447
+ background-color: var(--bg-hover);
448
+ }
449
+
382
450
  &:focus-within {
383
- border-color: var(--bb-primary);
384
- box-shadow: 0px 0px 0px var(--bb-ring-size) var(--ring-color);
451
+ background-color: var(--bg-focus);
452
+ border-color: var(--border-focus);
453
+ box-shadow: 0px 0px 0px var(--ring-size) var(--ring-color);
385
454
  }
386
455
 
387
456
  input,
@@ -471,6 +540,11 @@ export type CommonInputWrapperSlots = {
471
540
  align-self: stretch;
472
541
  color: var(--bb-text-muted);
473
542
  display: inline-grid;
543
+ /* Never shrink. The input's flex basis claims the row, so as a default
544
+ flex item the affix shrank below its text and — being end-justified —
545
+ spilled it LEFT, where the box clips (`https://` rendered `ttps://`).
546
+ The input is the one that gives way; it keeps its 50px floor. */
547
+ flex: none;
474
548
  font-size: var(--bb-input-fs);
475
549
  height: calc(var(--bb-input-h) - var(--bb-border-w) * 2);
476
550
  min-width: var(--bb-input-prefix-w);
@@ -495,6 +569,27 @@ export type CommonInputWrapperSlots = {
495
569
  margin-right: calc(var(--bb-input-px) * -1);
496
570
  }
497
571
 
572
+ /* Disabled — after the variants and the inner hover/focus rules so it wins
573
+ the cascade at equal specificity: no hover wash, no ring, rest border. */
574
+ &--disabled .common-input-wrapper__inner {
575
+ background-color: var(--bg-disabled);
576
+
577
+ input,
578
+ textarea {
579
+ color: var(--bb-text-muted);
580
+ }
581
+
582
+ &:hover {
583
+ background-color: var(--bg-disabled);
584
+ }
585
+
586
+ &:focus-within {
587
+ background-color: var(--bg-disabled);
588
+ border-color: var(--border-color);
589
+ box-shadow: 0px 0px 0px 0px var(--bb-ring);
590
+ }
591
+ }
592
+
498
593
  .bb-clearable-button {
499
594
  color: var(--bb-text-muted);
500
595
  }
@@ -250,6 +250,13 @@ watch(selectedExamplePath, (examplePath) => {
250
250
  </script>
251
251
 
252
252
  <style scoped lang="postcss">
253
+ /*
254
+ * Tailwind v4: an SFC \3c style> block is its own PostCSS pass, so `@apply`
255
+ * cannot see the theme or the class-based `dark` variant without this.
256
+ * Emits nothing itself — it only makes the utilities resolvable.
257
+ */
258
+ @reference '../../assets/css/index.css';
259
+
253
260
  .guides-component {
254
261
  @apply overflow-hidden border text-[color:var(--bb-text)];
255
262
  background: var(--bb-panel);
@@ -278,7 +285,7 @@ watch(selectedExamplePath, (examplePath) => {
278
285
  }
279
286
 
280
287
  .guides-component__code {
281
- @apply rounded px-1 py-0.5 font-mono text-[13px];
288
+ @apply rounded-sm px-1 py-0.5 font-mono text-[13px];
282
289
  background: var(--bb-muted);
283
290
  color: var(--bb-text);
284
291
  }
@@ -288,12 +295,12 @@ watch(selectedExamplePath, (examplePath) => {
288
295
  }
289
296
 
290
297
  .guides-component__select-label {
291
- @apply text-[11px] font-semibold uppercase tracking-[0.06em];
298
+ @apply text-[11px] font-semibold tracking-[0.06em] uppercase;
292
299
  color: var(--bb-text-muted);
293
300
  }
294
301
 
295
302
  .guides-component__select {
296
- @apply w-full px-3 py-2 text-sm outline-none;
303
+ @apply w-full px-3 py-2 text-sm outline-hidden;
297
304
  background: var(--bb-panel);
298
305
  border: var(--bb-border-w) solid var(--bb-border);
299
306
  border-radius: var(--bb-radius);
@@ -311,7 +318,7 @@ watch(selectedExamplePath, (examplePath) => {
311
318
  }
312
319
 
313
320
  .guides-component__tab {
314
- @apply whitespace-nowrap px-2.5 py-1.5 text-[13px] transition-colors;
321
+ @apply px-2.5 py-1.5 text-[13px] whitespace-nowrap transition-colors;
315
322
  border-radius: var(--bb-radius);
316
323
  color: var(--bb-text-muted);
317
324
  }
@@ -343,7 +350,7 @@ watch(selectedExamplePath, (examplePath) => {
343
350
  }
344
351
 
345
352
  .guides-component__preview-card {
346
- @apply border-b lg:border-b-0 lg:border-r;
353
+ @apply border-b lg:border-r lg:border-b-0;
347
354
  border-color: var(--bb-border);
348
355
  }
349
356
 
@@ -352,7 +359,7 @@ watch(selectedExamplePath, (examplePath) => {
352
359
  }
353
360
 
354
361
  .guides-component__preview-title {
355
- @apply text-[11px] font-semibold uppercase tracking-[0.06em];
362
+ @apply text-[11px] font-semibold tracking-[0.06em] uppercase;
356
363
  color: var(--bb-text-muted);
357
364
  }
358
365
 
@@ -369,7 +376,7 @@ watch(selectedExamplePath, (examplePath) => {
369
376
  }
370
377
 
371
378
  .guides-component__source {
372
- @apply m-0 max-h-[28rem] overflow-auto p-3 font-mono text-[13px] leading-relaxed;
379
+ @apply m-0 max-h-112 overflow-auto p-3 font-mono text-[13px] leading-relaxed;
373
380
  background: color-mix(in oklab, var(--bb-text) 90%, transparent);
374
381
  border-radius: var(--bb-radius);
375
382
  color: color-mix(in oklab, var(--bb-panel) 90%, white);
@@ -50,7 +50,7 @@
50
50
  <span
51
51
  :class="{
52
52
  [`${classPrefix}-option__text`]: true,
53
- 'sr-only': hideLabel,
53
+ 'bb-sr-only': hideLabel,
54
54
  }"
55
55
  ><slot
56
56
  :checked="!!option.selected"
@@ -4,7 +4,7 @@ import n from "../BbSpinner/BbSpinner.vue.js";
4
4
  import { useBadgeHost as r } from "./badgeButtonContext.js";
5
5
  import { Fragment as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, defineComponent as l, openBlock as u, renderSlot as d, unref as f } from "vue";
6
6
  //#region src/components/BbBadge/BadgeBodyContent.vue?vue&type=script&setup=true&lang.ts
7
- var p = { class: "bb-badge__content sr-only" }, m = { class: "bb-badge__content" }, h = /*@__PURE__*/ l({
7
+ var p = { class: "bb-badge__content bb-sr-only" }, m = { class: "bb-badge__content" }, h = /*@__PURE__*/ l({
8
8
  __name: "BadgeBodyContent",
9
9
  setup(l) {
10
10
  let h = r() ?? e().throw("[BbBadge] internal body renderer mounted outside a badge — this is a bug.");
@@ -20,7 +20,7 @@ var O = ["id"], k = {
20
20
  "aria-labelledby"
21
21
  ], j = {
22
22
  key: 3,
23
- class: "sr-only"
23
+ class: "bb-sr-only"
24
24
  }, M = /*@__PURE__*/ v({
25
25
  __name: "BbBadge",
26
26
  props: {
@@ -78,7 +78,7 @@ var g = /*@__PURE__*/ s({
78
78
  autofocus: _.autofocus,
79
79
  "aria-readonly": _.readonly ? !0 : void 0,
80
80
  checked: S.value,
81
- class: "sr-only",
81
+ class: "bb-sr-only",
82
82
  disabled: _.disabled,
83
83
  id: _.id,
84
84
  indeterminate: _.indeterminate,
@@ -41,6 +41,7 @@ var S = [
41
41
  autofocus: {},
42
42
  clearable: { type: Boolean },
43
43
  compact: { type: Boolean },
44
+ variant: {},
44
45
  disabled: { type: Boolean },
45
46
  hasErrors: { type: Boolean },
46
47
  hasWarning: { type: Boolean },
@@ -108,6 +109,7 @@ var S = [
108
109
  loading: E.loading,
109
110
  "prepend:icon": E["prepend:icon"],
110
111
  readonly: E.readonly,
112
+ variant: E.variant,
111
113
  "onClick:clear": t[1] ||= (t) => e.$emit("update:modelValue", null)
112
114
  }, d({
113
115
  "prepend-outer": y(() => [_(e.$slots, "prepend-outer")]),
@@ -176,7 +178,8 @@ var S = [
176
178
  "has-warning",
177
179
  "loading",
178
180
  "prepend:icon",
179
- "readonly"
181
+ "readonly",
182
+ "variant"
180
183
  ]));
181
184
  }
182
185
  });
@@ -1,3 +1,4 @@
1
+ import { InputVariantType } from '../../types/InputVariant';
1
2
  import { IconType } from '../../types/Icon';
2
3
  import { HTMLAttributes, InputHTMLAttributes } from 'vue';
3
4
  /**
@@ -48,6 +49,10 @@ export type BaseColorInputProps = {
48
49
  * Display the component in a compact layout.
49
50
  */
50
51
  compact?: boolean;
52
+ /**
53
+ * Visual variant of the field box, forwarded to `CommonInputWrapper`.
54
+ */
55
+ variant?: InputVariantType;
51
56
  /**
52
57
  * Disable all interactions.
53
58
  */
@@ -27,14 +27,14 @@ import Te from "dayjs/plugin/weekOfYear";
27
27
  //#region src/components/BbBaseDatePicker/BbBaseDatePicker.vue?vue&type=script&setup=true&lang.ts
28
28
  var Ee = {
29
29
  "aria-live": "polite",
30
- class: "sr-only"
30
+ class: "bb-sr-only"
31
31
  }, De = {
32
32
  "aria-live": "polite",
33
- class: "sr-only"
33
+ class: "bb-sr-only"
34
34
  }, Oe = { class: "bb-base-date-picker__body" }, ke = {
35
35
  key: 0,
36
36
  class: "bb-base-date-picker__controls"
37
- }, Ae = { class: "sr-only" }, je = { class: "bb-base-date-picker__nav-center" }, Me = { class: "sr-only" }, Ne = { class: "bb-base-date-picker__content" }, Pe = ["id"], w = /*@__PURE__*/ ge({
37
+ }, Ae = { class: "bb-sr-only" }, je = { class: "bb-base-date-picker__nav-center" }, Me = { class: "bb-sr-only" }, Ne = { class: "bb-base-date-picker__content" }, Pe = ["id"], w = /*@__PURE__*/ ge({
38
38
  __name: "BbBaseDatePicker",
39
39
  props: {
40
40
  disabled: { type: Boolean },
@@ -397,7 +397,7 @@ var Ee = {
397
397
  id: `${b(Le)}-status`,
398
398
  "aria-atomic": "true",
399
399
  "aria-live": "polite",
400
- class: "sr-only",
400
+ class: "bb-sr-only",
401
401
  role: "status"
402
402
  }, y(We.value), 9, Pe)
403
403
  ], 6));
@@ -24,7 +24,7 @@ var ne = ["aria-label", "onKeydown"], re = {
24
24
  "tabindex"
25
25
  ], M = { class: "bb-base-date-picker__date-append" }, N = {
26
26
  "aria-live": "polite",
27
- class: "sr-only",
27
+ class: "bb-sr-only",
28
28
  role: "status"
29
29
  }, se = 366, P = /*@__PURE__*/ b({
30
30
  __name: "BbBaseDatePickerInputDaySelector",
@@ -61,6 +61,7 @@ var we = ["data-value"], Te = [
61
61
  autofocus: {},
62
62
  clearable: { type: Boolean },
63
63
  compact: { type: Boolean },
64
+ variant: {},
64
65
  disabled: { type: Boolean },
65
66
  firstDayOfWeek: {},
66
67
  floating: { type: Boolean },
@@ -589,6 +590,7 @@ var we = ["data-value"], Te = [
589
590
  loading: T.loading,
590
591
  "prepend:icon": T["prepend:icon"],
591
592
  readonly: T.readonly,
593
+ variant: T.variant,
592
594
  "onClick:clear": it,
593
595
  onFocusin: Je
594
596
  }, le({
@@ -706,7 +708,7 @@ var we = ["data-value"], Te = [
706
708
  onClick: (e) => x(yt)(U.value[n + 1], { select: !0 })
707
709
  }, b(pt(U.value[n], U.value[n + 1])), 11, Ee)) : ce("", !0)], 64))), 128))], 6), h("span", {
708
710
  id: Pe,
709
- class: "bb-base-date-picker-input__accessible-description sr-only"
711
+ class: "bb-base-date-picker-input__accessible-description bb-sr-only"
710
712
  }, b(x(A)("baseDatePickerInput.dateFormat")) + " " + b(Lt.value), 1)]),
711
713
  _: 2
712
714
  }, [e.$slots.prefix ? {
@@ -729,7 +731,8 @@ var we = ["data-value"], Te = [
729
731
  "has-warning",
730
732
  "loading",
731
733
  "prepend:icon",
732
- "readonly"
734
+ "readonly",
735
+ "variant"
733
736
  ]));
734
737
  }
735
738
  });
@@ -1,3 +1,4 @@
1
+ import { InputVariantType } from '../../types/InputVariant';
1
2
  import { DatePickerType } from '../../types/DatePickerType';
2
3
  import { HTMLAttributes, InputHTMLAttributes } from 'vue';
3
4
  import { IconType } from '../../types/Icon';
@@ -53,6 +54,10 @@ export type BaseDatePickerInputProps = {
53
54
  * Applies the compact density styles to the control.
54
55
  */
55
56
  compact?: boolean;
57
+ /**
58
+ * Visual variant of the field box, forwarded to `CommonInputWrapper`.
59
+ */
60
+ variant?: InputVariantType;
56
61
  /**
57
62
  * Disables the input, calendar trigger, and popover.
58
63
  */
@@ -1,10 +1,10 @@
1
1
  import { BaseInputContainerProps, BaseInputContainerSlots } from './types';
2
2
  type __VLS_Slots = BaseInputContainerSlots;
3
3
  declare const __VLS_base: import('vue').DefineComponent<BaseInputContainerProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<BaseInputContainerProps> & Readonly<{}>, {
4
+ reverse: boolean;
4
5
  labelPosition: "left" | "center" | "right";
5
6
  direction: import('../..').InputDirection;
6
7
  tag: import('../../types/CommonProps').ContainerTag;
7
- reverse: boolean;
8
8
  labelTag: import('../../types/CommonProps').LabelTag;
9
9
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
10
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -30,6 +30,7 @@ var v = [
30
30
  autofocus: {},
31
31
  clearable: { type: Boolean },
32
32
  compact: { type: Boolean },
33
+ variant: {},
33
34
  disabled: { type: Boolean },
34
35
  hasErrors: { type: Boolean },
35
36
  hasWarning: { type: Boolean },
@@ -139,6 +140,7 @@ var v = [
139
140
  "prepend:icon": x["prepend:icon"],
140
141
  readonly: x.readonly,
141
142
  "reserve-append-space": x.clearable,
143
+ variant: x.variant,
142
144
  "onClick:clear": n[0] ||= (t) => e.$emit("update:modelValue", null)
143
145
  }, s({
144
146
  "prepend-outer": g(() => [p(e.$slots, "prepend-outer", {
@@ -207,7 +209,8 @@ var v = [
207
209
  "loading",
208
210
  "prepend:icon",
209
211
  "readonly",
210
- "reserve-append-space"
212
+ "reserve-append-space",
213
+ "variant"
211
214
  ]));
212
215
  }
213
216
  });
@@ -1,3 +1,4 @@
1
+ import { InputVariantType } from '../../types/InputVariant';
1
2
  import { HTMLAttributes, InputHTMLAttributes } from 'vue';
2
3
  import { IconType } from '../../types/Icon';
3
4
  /**
@@ -29,6 +30,10 @@ export type BaseNumberInputProps = {
29
30
  * Apply the compact density variant.
30
31
  */
31
32
  compact?: boolean;
33
+ /**
34
+ * Visual variant of the field box, forwarded to `CommonInputWrapper`.
35
+ */
36
+ variant?: InputVariantType;
32
37
  /**
33
38
  * Disable manual input and the exposed increase/decrease helpers.
34
39
  */
@@ -92,7 +92,7 @@ var m = /*@__PURE__*/ o({
92
92
  "bb-base-radio--focused": v.value,
93
93
  "bb-base-radio--focus-visible": y.value,
94
94
  "bb-base-radio--readonly": e.readonly
95
- }]) }, [i("input", c(C.value, { class: "sr-only" }), null, 16), p(e.$slots, "icon", u(s(w.value)), () => [a(t, {
95
+ }]) }, [i("input", c(C.value, { class: "bb-sr-only" }), null, 16), p(e.$slots, "icon", u(s(w.value)), () => [a(t, {
96
96
  checked: _.value,
97
97
  disabled: !!e.disabled,
98
98
  "focus-visible": y.value,
@@ -13,7 +13,7 @@ var w = [
13
13
  "aria-labelledby",
14
14
  "aria-readonly",
15
15
  "role"
16
- ], T = ["id"], E = { class: "bb-base-rating__label-text sr-only" }, D = [
16
+ ], T = ["id"], E = { class: "bb-base-rating__label-text bb-sr-only" }, D = [
17
17
  "id",
18
18
  "aria-describedby",
19
19
  "autofocus",
@@ -142,7 +142,7 @@ var w = [
142
142
  V.value ? (_(), f("span", {
143
143
  key: 0,
144
144
  id: S(R),
145
- class: "sr-only"
145
+ class: "bb-sr-only"
146
146
  }, x(S(H)), 9, T)) : d("", !0),
147
147
  (_(!0), f(l, null, y(Y.value, (n, r) => (_(), f("label", {
148
148
  key: n.value,
@@ -159,7 +159,7 @@ var w = [
159
159
  "aria-describedby": U.value,
160
160
  autofocus: e.autofocus && !r,
161
161
  checked: n.checked,
162
- class: "sr-only",
162
+ class: "bb-sr-only",
163
163
  disabled: n.disabled,
164
164
  name: n.name,
165
165
  required: e.required,
@@ -36,6 +36,7 @@ var re = ["id"], ie = [
36
36
  clearable: { type: Boolean },
37
37
  comma: { type: Boolean },
38
38
  compact: { type: Boolean },
39
+ variant: {},
39
40
  dependencies: {},
40
41
  depsDebounceTime: {},
41
42
  disabled: { type: Boolean },
@@ -203,6 +204,7 @@ var re = ["id"], ie = [
203
204
  loading: i,
204
205
  "prepend:icon": P["prepend:icon"],
205
206
  readonly: e.readonly,
207
+ variant: e.variant,
206
208
  "onClick:clear": () => {
207
209
  s(), x(le);
208
210
  },
@@ -270,7 +272,7 @@ var re = ["id"], ie = [
270
272
  class: S(["bb-base-select__display-value", [{ "bb-base-select__placeholder": !a }]])
271
273
  }, A(a || e.placeholder), 3))], 8, re), m("span", {
272
274
  id: `${j(z)}__selection`,
273
- class: "sr-only"
275
+ class: "bb-sr-only"
274
276
  }, A(ue(a)), 9, oe)]),
275
277
  _: 2
276
278
  }, [e.$slots.prefix ? {
@@ -294,6 +296,7 @@ var re = ["id"], ie = [
294
296
  "loading",
295
297
  "prepend:icon",
296
298
  "readonly",
299
+ "variant",
297
300
  "onClick:clear",
298
301
  "onContainer:click"
299
302
  ]), (E(!0), p(l, null, O(me.value, (e) => (E(), p("input", b({
@@ -1,3 +1,4 @@
1
+ import { InputVariantType } from '../../types/InputVariant';
1
2
  import { HTMLAttributes, InputHTMLAttributes } from 'vue';
2
3
  import { IconType } from '../../types/Icon';
3
4
  import { BbSelectResolvedOption } from '../BbSelectPopover/types';
@@ -55,6 +56,10 @@ export type BaseSelectProps<Item = any> = {
55
56
  * Apply the compact density variant.
56
57
  */
57
58
  compact?: boolean;
59
+ /**
60
+ * Visual variant of the field box, forwarded to `CommonInputWrapper`.
61
+ */
62
+ variant?: InputVariantType;
58
63
  /**
59
64
  * Additional dependencies that trigger item reloading when changed.
60
65
  * @defaultValue `[]`
@@ -238,7 +238,7 @@ var le = {
238
238
  id: e.id,
239
239
  ref_key: "hiddenInput",
240
240
  ref: j,
241
- class: "sr-only",
241
+ class: "bb-sr-only",
242
242
  disabled: e.disabled,
243
243
  name: e.name,
244
244
  readonly: !0,
@@ -328,10 +328,10 @@ var le = {
328
328
  }),
329
329
  S.range && S.id ? (_(), f(l, { key: 0 }, [p("span", {
330
330
  id: `${S.id}__thumb_label_lower`,
331
- class: "sr-only"
331
+ class: "bb-sr-only"
332
332
  }, b(x(T)("slider.minimumThumb").value), 9, pe), p("span", {
333
333
  id: `${S.id}__thumb_label_higher`,
334
- class: "sr-only"
334
+ class: "bb-sr-only"
335
335
  }, b(x(T)("slider.maximumThumb").value), 9, me)], 64)) : d("", !0)
336
336
  ], 16));
337
337
  }
@@ -78,7 +78,7 @@ var g = /*@__PURE__*/ s({
78
78
  autofocus: _.autofocus,
79
79
  "aria-readonly": _.readonly ? !0 : void 0,
80
80
  checked: S.value,
81
- class: "sr-only",
81
+ class: "bb-sr-only",
82
82
  disabled: _.disabled,
83
83
  id: _.id,
84
84
  indeterminate: _.indeterminate,