@boostdev/design-system-components 1.1.2 → 1.2.0

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 (169) hide show
  1. package/AGENTS.md +13 -10
  2. package/dist/client.cjs +77 -99
  3. package/dist/client.css +611 -580
  4. package/dist/client.d.cts +13 -16
  5. package/dist/client.d.ts +13 -16
  6. package/dist/client.js +87 -109
  7. package/dist/index.cjs +77 -99
  8. package/dist/index.css +611 -580
  9. package/dist/index.d.cts +13 -16
  10. package/dist/index.d.ts +13 -16
  11. package/dist/index.js +87 -109
  12. package/dist/native/index.cjs +9 -8
  13. package/dist/native/index.d.cts +1 -1
  14. package/dist/native/index.d.ts +1 -1
  15. package/dist/native/index.js +9 -8
  16. package/dist/web-components/{chunk-O4UFI2RX.js → chunk-3REOIRDW.js} +13 -11
  17. package/dist/web-components/{chunk-K5CE6HSB.js → chunk-6MH5UWUD.js} +74 -17
  18. package/dist/web-components/{chunk-VM3YHGQ2.js → chunk-AJSXNDAP.js} +1 -2
  19. package/dist/web-components/{chunk-LSC4N56Q.js → chunk-BX3IPVOB.js} +1 -2
  20. package/dist/web-components/{chunk-CJ5ZOO42.js → chunk-DI46Q2EA.js} +50 -1
  21. package/dist/web-components/{chunk-CAPI25CU.js → chunk-DZRSJGPB.js} +3 -3
  22. package/dist/web-components/{chunk-VSS5ITNE.js → chunk-EBJM3VD4.js} +1 -3
  23. package/dist/web-components/{chunk-O7I63SQX.js → chunk-HHHRF2PS.js} +6 -12
  24. package/dist/web-components/{chunk-OTX4COSV.js → chunk-JUKB3BUP.js} +3 -4
  25. package/dist/web-components/{chunk-IQGLIQSO.js → chunk-N6IMUOY4.js} +2 -5
  26. package/dist/web-components/{chunk-QDRH46TF.js → chunk-QLZ2362S.js} +1 -3
  27. package/dist/web-components/{chunk-IK3PTFZ4.js → chunk-T6AETZRP.js} +1 -3
  28. package/dist/web-components/{chunk-4BX6AWXX.js → chunk-X3FKVHLK.js} +2 -4
  29. package/dist/web-components/{chunk-A67LCT7C.js → chunk-XNA6WTXG.js} +3 -4
  30. package/dist/web-components/{chunk-XIENXR7H.js → chunk-YRXCVKHV.js} +1 -3
  31. package/dist/web-components/{chunk-6T3RKUKG.js → chunk-ZTC6GRP7.js} +1 -2
  32. package/dist/web-components/globals.js +1 -1
  33. package/dist/web-components/index.js +16 -16
  34. package/dist/web-components/interaction/bds-accordion.js +1 -1
  35. package/dist/web-components/interaction/bds-button.d.ts +2 -2
  36. package/dist/web-components/interaction/bds-button.js +1 -1
  37. package/dist/web-components/interaction/bds-dialog.js +1 -1
  38. package/dist/web-components/interaction/bds-drawer.js +1 -1
  39. package/dist/web-components/interaction/form/bds-checkbox.js +1 -1
  40. package/dist/web-components/interaction/form/bds-combobox.js +1 -1
  41. package/dist/web-components/interaction/form/bds-number-input.js +1 -1
  42. package/dist/web-components/interaction/form/bds-radio.js +1 -1
  43. package/dist/web-components/interaction/form/bds-segmented-control.d.ts +20 -3
  44. package/dist/web-components/interaction/form/bds-segmented-control.js +1 -1
  45. package/dist/web-components/interaction/form/bds-select.js +1 -1
  46. package/dist/web-components/interaction/form/bds-switch.js +1 -1
  47. package/dist/web-components/interaction/form/bds-textarea.js +1 -1
  48. package/dist/web-components/ui/bds-alert.js +1 -1
  49. package/dist/web-components/ui/bds-card.js +1 -1
  50. package/dist/web-components/ui/bds-notification-banner.js +1 -1
  51. package/package.json +2 -2
  52. package/src/components/interaction/Button/Button.module.css +12 -11
  53. package/src/components/interaction/Button/Button.native.tsx +10 -9
  54. package/src/components/interaction/Button/Button.tsx +1 -1
  55. package/src/components/interaction/Command/Command.module.css +3 -7
  56. package/src/components/interaction/Dialog/Dialog.module.css +7 -5
  57. package/src/components/interaction/Drawer/Drawer.module.css +49 -1
  58. package/src/components/interaction/DropdownMenu/DropdownMenu.module.css +1 -3
  59. package/src/components/interaction/Popover/Popover.module.css +1 -3
  60. package/src/components/interaction/form/Checkbox/Checkbox.module.css +1 -3
  61. package/src/components/interaction/form/Combobox/Combobox.module.css +2 -6
  62. package/src/components/interaction/form/FormInput/FormInput.module.css +1 -3
  63. package/src/components/interaction/form/NumberInput/NumberInput.module.css +16 -4
  64. package/src/components/interaction/form/Radio/Radio.module.css +6 -16
  65. package/src/components/interaction/form/SegmentedControl/SegmentedControl.mdx +70 -25
  66. package/src/components/interaction/form/SegmentedControl/SegmentedControl.module.css +55 -33
  67. package/src/components/interaction/form/SegmentedControl/SegmentedControl.spec.tsx +127 -56
  68. package/src/components/interaction/form/SegmentedControl/SegmentedControl.stories.tsx +89 -72
  69. package/src/components/interaction/form/SegmentedControl/SegmentedControl.tsx +40 -62
  70. package/src/components/interaction/form/SegmentedControl/index.ts +1 -1
  71. package/src/components/interaction/form/Select/Select.module.css +2 -4
  72. package/src/components/interaction/form/Switch/Switch.module.css +5 -7
  73. package/src/components/interaction/form/Switch/Switch.native.spec.tsx +9 -9
  74. package/src/components/interaction/form/Switch/Switch.native.tsx +2 -2
  75. package/src/components/interaction/form/Textarea/Textarea.module.css +1 -3
  76. package/src/components/interaction/form/atoms/InputContainer.stories.tsx +64 -0
  77. package/src/components/interaction/form/atoms/Label.stories.tsx +33 -0
  78. package/src/components/interaction/form/atoms/Message.stories.tsx +33 -0
  79. package/src/components/layout/Card/Card.module.css +1 -3
  80. package/src/components/ui/Accordion/Accordion.module.css +1 -2
  81. package/src/components/ui/Alert/Alert.module.css +1 -2
  82. package/src/components/ui/Calendar/Calendar.module.css +2 -5
  83. package/src/components/ui/Carousel/Carousel.module.css +1 -3
  84. package/src/components/ui/NotificationBanner/NotificationBanner.module.css +1 -2
  85. package/src/components/ui/Pagination/Pagination.module.css +1 -2
  86. package/src/components/ui/SkipLink/SkipLink.module.css +1 -2
  87. package/src/components/ui/Table/Table.module.css +1 -2
  88. package/src/css/bdc.css +16 -11
  89. package/src/index.ts +1 -1
  90. package/src/web-components/globals.ts +3 -3
  91. package/src/web-components/interaction/BdsAccordion.mdx +51 -0
  92. package/src/web-components/interaction/BdsAccordion.stories.tsx +85 -0
  93. package/src/web-components/interaction/BdsCollapsible.mdx +46 -0
  94. package/src/web-components/interaction/BdsCollapsible.stories.tsx +87 -0
  95. package/src/web-components/interaction/BdsDialog.mdx +49 -0
  96. package/src/web-components/interaction/BdsDialog.stories.tsx +75 -0
  97. package/src/web-components/interaction/BdsDrawer.mdx +50 -0
  98. package/src/web-components/interaction/BdsDrawer.stories.tsx +66 -0
  99. package/src/web-components/interaction/BdsSkipLink.mdx +34 -0
  100. package/src/web-components/interaction/BdsSkipLink.stories.tsx +55 -0
  101. package/src/web-components/interaction/BdsTabs.mdx +47 -0
  102. package/src/web-components/interaction/BdsTabs.stories.tsx +80 -0
  103. package/src/web-components/interaction/BdsTooltip.mdx +38 -0
  104. package/src/web-components/interaction/BdsTooltip.stories.tsx +68 -0
  105. package/src/web-components/interaction/bds-accordion.ts +1 -2
  106. package/src/web-components/interaction/bds-button.ts +15 -13
  107. package/src/web-components/interaction/bds-dialog.ts +2 -5
  108. package/src/web-components/interaction/bds-drawer.ts +50 -1
  109. package/src/web-components/interaction/form/BdsCheckbox.mdx +39 -0
  110. package/src/web-components/interaction/form/BdsCheckbox.stories.tsx +73 -0
  111. package/src/web-components/interaction/form/BdsCombobox.mdx +52 -0
  112. package/src/web-components/interaction/form/BdsCombobox.stories.tsx +91 -0
  113. package/src/web-components/interaction/form/BdsFileInput.mdx +44 -0
  114. package/src/web-components/interaction/form/BdsFileInput.stories.tsx +84 -0
  115. package/src/web-components/interaction/form/BdsNumberInput.mdx +41 -0
  116. package/src/web-components/interaction/form/BdsNumberInput.stories.tsx +90 -0
  117. package/src/web-components/interaction/form/BdsRadio.mdx +41 -0
  118. package/src/web-components/interaction/form/BdsRadio.stories.tsx +90 -0
  119. package/src/web-components/interaction/form/BdsSegmentedControl.mdx +42 -0
  120. package/src/web-components/interaction/form/BdsSegmentedControl.stories.tsx +92 -0
  121. package/src/web-components/interaction/form/BdsSelect.mdx +38 -0
  122. package/src/web-components/interaction/form/BdsSelect.stories.tsx +93 -0
  123. package/src/web-components/interaction/form/BdsSlider.mdx +49 -0
  124. package/src/web-components/interaction/form/BdsSlider.stories.tsx +89 -0
  125. package/src/web-components/interaction/form/BdsSwitch.mdx +39 -0
  126. package/src/web-components/interaction/form/BdsSwitch.stories.tsx +73 -0
  127. package/src/web-components/interaction/form/BdsTextarea.mdx +41 -0
  128. package/src/web-components/interaction/form/BdsTextarea.stories.tsx +79 -0
  129. package/src/web-components/interaction/form/bds-checkbox.ts +1 -3
  130. package/src/web-components/interaction/form/bds-combobox.ts +1 -3
  131. package/src/web-components/interaction/form/bds-number-input.ts +3 -4
  132. package/src/web-components/interaction/form/bds-radio.ts +6 -12
  133. package/src/web-components/interaction/form/bds-segmented-control.ts +91 -20
  134. package/src/web-components/interaction/form/bds-select.ts +2 -4
  135. package/src/web-components/interaction/form/bds-switch.ts +3 -4
  136. package/src/web-components/interaction/form/bds-textarea.ts +1 -3
  137. package/src/web-components/ui/BdsAvatar.mdx +67 -0
  138. package/src/web-components/ui/BdsAvatar.stories.tsx +62 -0
  139. package/src/web-components/ui/BdsBreadcrumb.mdx +63 -0
  140. package/src/web-components/ui/BdsBreadcrumb.stories.tsx +59 -0
  141. package/src/web-components/ui/BdsCard.mdx +83 -0
  142. package/src/web-components/ui/BdsCard.stories.tsx +90 -0
  143. package/src/web-components/ui/BdsDescriptionList.mdx +67 -0
  144. package/src/web-components/ui/BdsDescriptionList.stories.tsx +79 -0
  145. package/src/web-components/ui/BdsIconWrapper.mdx +70 -0
  146. package/src/web-components/ui/BdsIconWrapper.stories.tsx +76 -0
  147. package/src/web-components/ui/BdsLink.mdx +75 -0
  148. package/src/web-components/ui/BdsLink.stories.tsx +64 -0
  149. package/src/web-components/ui/BdsLoading.mdx +62 -0
  150. package/src/web-components/ui/BdsLoading.stories.tsx +37 -0
  151. package/src/web-components/ui/BdsNotificationBanner.mdx +90 -0
  152. package/src/web-components/ui/BdsNotificationBanner.stories.tsx +93 -0
  153. package/src/web-components/ui/BdsProgress.mdx +63 -0
  154. package/src/web-components/ui/BdsProgress.stories.tsx +70 -0
  155. package/src/web-components/ui/BdsProgressCircle.mdx +64 -0
  156. package/src/web-components/ui/BdsProgressCircle.stories.tsx +69 -0
  157. package/src/web-components/ui/BdsRating.mdx +61 -0
  158. package/src/web-components/ui/BdsRating.stories.tsx +39 -0
  159. package/src/web-components/ui/BdsSectionHeader.mdx +69 -0
  160. package/src/web-components/ui/BdsSectionHeader.stories.tsx +56 -0
  161. package/src/web-components/ui/BdsSeparator.mdx +63 -0
  162. package/src/web-components/ui/BdsSeparator.stories.tsx +47 -0
  163. package/src/web-components/ui/BdsSkeleton.mdx +67 -0
  164. package/src/web-components/ui/BdsSkeleton.stories.tsx +50 -0
  165. package/src/web-components/ui/BdsTypography.mdx +83 -0
  166. package/src/web-components/ui/BdsTypography.stories.tsx +51 -0
  167. package/src/web-components/ui/bds-alert.ts +1 -2
  168. package/src/web-components/ui/bds-card.ts +1 -3
  169. package/src/web-components/ui/bds-notification-banner.ts +1 -2
@@ -737,22 +737,23 @@ function Button({
737
737
  }) {
738
738
  const { colors: colors2 } = useTheme();
739
739
  const { height, px, fontSize, radius } = sizeTokens[size];
740
- const primaryColor = colors2.colorGreen;
741
- const onPrimaryColor = colors2.colorOnGreen;
742
- const ghostTextColor = colors2.colorGreenStrong;
740
+ const primaryColor = colors2.colorInteractive;
741
+ const onPrimaryColor = colors2.colorOnInteractive;
742
+ const outlineTextColor = colors2.colorInteractiveOnBg;
743
+ const isOutline = variant === "outline" || variant === "ghost";
743
744
  const containerStyle = {
744
745
  height,
745
746
  paddingHorizontal: px,
746
747
  borderRadius: radius,
747
748
  opacity: disabled ? 0.4 : 1,
748
749
  ...variant === "default" && { backgroundColor: primaryColor },
749
- ...variant === "ghost" && {
750
+ ...isOutline && {
750
751
  backgroundColor: "transparent",
751
752
  borderWidth: 1,
752
- borderColor: ghostTextColor
753
+ borderColor: outlineTextColor
753
754
  }
754
755
  };
755
- const textColor = variant === "default" ? onPrimaryColor : ghostTextColor;
756
+ const textColor = variant === "default" ? onPrimaryColor : outlineTextColor;
756
757
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
757
758
  import_react_native15.Pressable,
758
759
  {
@@ -855,8 +856,8 @@ function Switch({
855
856
  accessibilityLabel: label,
856
857
  accessibilityRole: "switch",
857
858
  accessibilityState: { checked: value, disabled },
858
- thumbColor: value ? colors2.colorOnInteractive : colors2.colorOnBg,
859
- trackColor: { false: colors2.colorBgSubtle, true: colors2.colorInteractive }
859
+ thumbColor: colors2.colorInteractive,
860
+ trackColor: { false: colors2.colorBgSubtle, true: colors2.colorBlueSubtle }
860
861
  }
861
862
  ),
862
863
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Label, { label })
@@ -141,7 +141,7 @@ interface ButtonGroupProps {
141
141
  }
142
142
  declare function ButtonGroup({ children, variant, accessibilityLabel, style }: ButtonGroupProps): react_jsx_runtime.JSX.Element;
143
143
 
144
- type ButtonVariant = 'default' | 'ghost';
144
+ type ButtonVariant = 'default' | 'outline' | 'ghost';
145
145
  type ButtonSize = 'small' | 'medium' | 'large';
146
146
  interface ButtonProps {
147
147
  children?: ReactNode;
@@ -141,7 +141,7 @@ interface ButtonGroupProps {
141
141
  }
142
142
  declare function ButtonGroup({ children, variant, accessibilityLabel, style }: ButtonGroupProps): react_jsx_runtime.JSX.Element;
143
143
 
144
- type ButtonVariant = 'default' | 'ghost';
144
+ type ButtonVariant = 'default' | 'outline' | 'ghost';
145
145
  type ButtonSize = 'small' | 'medium' | 'large';
146
146
  interface ButtonProps {
147
147
  children?: ReactNode;
@@ -684,22 +684,23 @@ function Button({
684
684
  }) {
685
685
  const { colors: colors2 } = useTheme();
686
686
  const { height, px, fontSize, radius } = sizeTokens[size];
687
- const primaryColor = colors2.colorGreen;
688
- const onPrimaryColor = colors2.colorOnGreen;
689
- const ghostTextColor = colors2.colorGreenStrong;
687
+ const primaryColor = colors2.colorInteractive;
688
+ const onPrimaryColor = colors2.colorOnInteractive;
689
+ const outlineTextColor = colors2.colorInteractiveOnBg;
690
+ const isOutline = variant === "outline" || variant === "ghost";
690
691
  const containerStyle = {
691
692
  height,
692
693
  paddingHorizontal: px,
693
694
  borderRadius: radius,
694
695
  opacity: disabled ? 0.4 : 1,
695
696
  ...variant === "default" && { backgroundColor: primaryColor },
696
- ...variant === "ghost" && {
697
+ ...isOutline && {
697
698
  backgroundColor: "transparent",
698
699
  borderWidth: 1,
699
- borderColor: ghostTextColor
700
+ borderColor: outlineTextColor
700
701
  }
701
702
  };
702
- const textColor = variant === "default" ? onPrimaryColor : ghostTextColor;
703
+ const textColor = variant === "default" ? onPrimaryColor : outlineTextColor;
703
704
  return /* @__PURE__ */ jsxs5(
704
705
  Pressable4,
705
706
  {
@@ -802,8 +803,8 @@ function Switch({
802
803
  accessibilityLabel: label,
803
804
  accessibilityRole: "switch",
804
805
  accessibilityState: { checked: value, disabled },
805
- thumbColor: value ? colors2.colorOnInteractive : colors2.colorOnBg,
806
- trackColor: { false: colors2.colorBgSubtle, true: colors2.colorInteractive }
806
+ thumbColor: colors2.colorInteractive,
807
+ trackColor: { false: colors2.colorBgSubtle, true: colors2.colorBlueSubtle }
807
808
  }
808
809
  ),
809
810
  /* @__PURE__ */ jsx18(Label, { label })
@@ -14,9 +14,9 @@ var BdsButton = class extends i2 {
14
14
  }
15
15
 
16
16
  @keyframes pulse {
17
- 0% { transform: scale(1); box-shadow: 0 0 0 0 rgb(from var(--button_pulse-color, var(--button_color, var(--bds-color_green))) r g b / 50%); }
18
- 70% { transform: scale(1.01); box-shadow: 0 0 0 var(--bds-space_m) rgb(from var(--button_pulse-color, var(--button_color, var(--bds-color_green))) r g b / 0%); }
19
- 100% { transform: scale(1); box-shadow: 0 0 0 0 rgb(from var(--button_pulse-color, var(--button_color, var(--bds-color_green))) r g b / 0%); }
17
+ 0% { transform: scale(1); box-shadow: 0 0 0 0 rgb(from var(--button_pulse-color, var(--button_color, var(--bds-color_interactive))) r g b / 50%); }
18
+ 70% { transform: scale(1.01); box-shadow: 0 0 0 var(--bds-space_m) rgb(from var(--button_pulse-color, var(--button_color, var(--bds-color_interactive))) r g b / 0%); }
19
+ 100% { transform: scale(1); box-shadow: 0 0 0 0 rgb(from var(--button_pulse-color, var(--button_color, var(--bds-color_interactive))) r g b / 0%); }
20
20
  }
21
21
 
22
22
  :host {
@@ -40,16 +40,16 @@ var BdsButton = class extends i2 {
40
40
  white-space: nowrap;
41
41
  line-height: 1;
42
42
 
43
- --button_color: var(--bds-color_green);
44
- --button_on-color: var(--bds-color_on-green);
43
+ --button_color: var(--bds-color_interactive);
44
+ --button_on-color: var(--bds-color_on-interactive);
45
+ --button_color--on-bg: var(--bds-color_interactive_on-bg);
45
46
 
46
47
  background-color: var(--button_bg, var(--button_color));
47
48
  color: var(--button_text, var(--button_on-color));
48
49
  border: var(--button_border, none);
49
50
  --bdc_color: transparent;
50
51
 
51
- outline: var(--bdc-outline_width) solid var(--bdc_color);
52
- outline-offset: var(--bdc-outline_offset);
52
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
53
53
  transition: var(--bds-animation_transition),
54
54
  --bdc_color var(--bds-animation_transition-duration) var(--bds-animation_easing);
55
55
  }
@@ -59,10 +59,11 @@ var BdsButton = class extends i2 {
59
59
  }
60
60
 
61
61
  /* Variants */
62
- .button.ghost {
62
+ .button.outline,
63
+ .button.ghost /* deprecated — use variant="outline" */ {
63
64
  --button_bg: transparent;
64
- --button_text: var(--button_color);
65
- --bdc_color: var(--button_color);
65
+ --button_text: var(--button_color--on-bg);
66
+ --bdc_color: var(--button_color--on-bg);
66
67
  }
67
68
 
68
69
  /* Sizes */
@@ -131,7 +132,8 @@ var BdsButton = class extends i2 {
131
132
  --bdc_color: currentcolor;
132
133
  }
133
134
 
134
- /* Ghost hover */
135
+ /* Outline hover */
136
+ .button.outline:hover,
135
137
  .button.ghost:hover {
136
138
  --button_bg: var(--button_color);
137
139
  --button_text: var(--button_on-color);
@@ -1,4 +1,5 @@
1
1
  import {
2
+ A,
2
3
  T,
3
4
  i,
4
5
  i2
@@ -31,7 +32,7 @@ var BdsSegmentedControl = class extends i2 {
31
32
  position: absolute;
32
33
  inset-block: 0.25rem;
33
34
  border-radius: calc(var(--bds-border_radius--s) - 2px);
34
- background-color: var(--segmented_thumb-color, var(--bds-color_bg));
35
+ background-color: var(--segmented_thumb-color, var(--bds-color_interactive));
35
36
  box-shadow: var(--bds-shadow_m);
36
37
  transition: inset-inline-start var(--bds-animation_transition-duration) var(--bds-animation_easing),
37
38
  inline-size var(--bds-animation_transition-duration) var(--bds-animation_easing);
@@ -62,10 +63,11 @@ var BdsSegmentedControl = class extends i2 {
62
63
  transition: color var(--bds-animation_transition-duration) var(--bds-animation_easing);
63
64
  user-select: none;
64
65
  white-space: nowrap;
66
+ text-decoration: none;
65
67
  }
66
68
 
67
69
  .item.--active {
68
- color: var(--segmented_color--active, var(--bds-color_interactive_on-bg));
70
+ color: var(--segmented_color--active, var(--bds-color_on-interactive));
69
71
  }
70
72
 
71
73
  .item.--disabled {
@@ -77,12 +79,46 @@ var BdsSegmentedControl = class extends i2 {
77
79
  outline: var(--bds-outline_default);
78
80
  outline-offset: var(--bds-outline_offset);
79
81
  }
82
+
83
+ /* Outline variant: sliding inset-border indicator (positioned via JS like .thumb) */
84
+ .indicator {
85
+ position: absolute;
86
+ inset-block: 0.25rem;
87
+ border-radius: calc(var(--bds-border_radius--s) - 2px);
88
+ pointer-events: none;
89
+ z-index: 2;
90
+ display: none;
91
+ transition: inset-inline-start var(--bds-animation_transition-duration) var(--bds-animation_easing),
92
+ inline-size var(--bds-animation_transition-duration) var(--bds-animation_easing);
93
+ }
94
+
95
+ /* Outline variant — no thumb, sliding inset-border indicator, interactive active color */
96
+ :host([variant='outline']) .thumb {
97
+ display: none;
98
+ }
99
+
100
+ :host([variant='outline']) .item.--active {
101
+ color: var(--segmented_color--active, var(--bds-color_interactive));
102
+ }
103
+
104
+ :host([variant='outline']) .indicator {
105
+ display: block;
106
+ box-shadow: inset 0 0 0 2px var(--bds-color_interactive);
107
+ }
108
+
109
+ @media (prefers-reduced-motion: reduce) {
110
+ .thumb,
111
+ .indicator {
112
+ transition: none;
113
+ }
114
+ }
80
115
  `;
81
116
  static properties = {
82
117
  name: { type: String, reflect: true },
83
118
  value: { type: String },
84
119
  options: { type: String },
85
- disabled: { type: Boolean, reflect: true }
120
+ disabled: { type: Boolean, reflect: true },
121
+ variant: { type: String, reflect: true }
86
122
  };
87
123
  _internals;
88
124
  _uid = Math.random().toString(36).slice(2, 8);
@@ -93,6 +129,7 @@ var BdsSegmentedControl = class extends i2 {
93
129
  this.value = "";
94
130
  this.options = "[]";
95
131
  this.disabled = false;
132
+ this.variant = "outline";
96
133
  }
97
134
  get _options() {
98
135
  try {
@@ -105,21 +142,32 @@ var BdsSegmentedControl = class extends i2 {
105
142
  super.updated(changed);
106
143
  if (changed.has("value") || changed.has("options")) {
107
144
  this._internals.setFormValue?.(this.value || null);
108
- this._updateThumb();
145
+ if (this.variant === "filled") this._updateThumb();
146
+ if (this.variant === "outline") this._updateIndicator();
147
+ }
148
+ if (changed.has("variant")) {
149
+ if (this.variant === "filled") this._updateThumb();
150
+ if (this.variant === "outline") this._updateIndicator();
109
151
  }
110
152
  }
111
- _updateThumb() {
112
- const opts = this._options;
113
- const selectedIndex = Math.max(0, opts.findIndex((o) => o.value === this.value));
114
- const items = this.shadowRoot?.querySelectorAll(".item");
115
- const thumb = this.shadowRoot?.querySelector(".thumb");
116
- if (!items || !thumb || items.length === 0) return;
153
+ _positionSlider(el, items, selectedIndex) {
154
+ if (!el || items.length === 0) return;
117
155
  const item = items[selectedIndex];
118
156
  if (!item) return;
119
157
  const controlRect = item.parentElement.getBoundingClientRect();
120
158
  const itemRect = item.getBoundingClientRect();
121
- thumb.style.insetInlineStart = `${itemRect.left - controlRect.left}px`;
122
- thumb.style.inlineSize = `${itemRect.width}px`;
159
+ el.style.insetInlineStart = `${itemRect.left - controlRect.left}px`;
160
+ el.style.inlineSize = `${itemRect.width}px`;
161
+ }
162
+ _updateThumb() {
163
+ const selectedIndex = Math.max(0, this._options.findIndex((o) => o.value === this.value));
164
+ const items = this.shadowRoot?.querySelectorAll(".item");
165
+ this._positionSlider(this.shadowRoot?.querySelector(".thumb"), items, selectedIndex);
166
+ }
167
+ _updateIndicator() {
168
+ const selectedIndex = Math.max(0, this._options.findIndex((o) => o.value === this.value));
169
+ const items = this.shadowRoot?.querySelectorAll(".item");
170
+ this._positionSlider(this.shadowRoot?.querySelector(".indicator"), items, selectedIndex);
123
171
  }
124
172
  formResetCallback() {
125
173
  const firstOption = this._options[0];
@@ -135,15 +183,24 @@ var BdsSegmentedControl = class extends i2 {
135
183
  return T`
136
184
  <div class="control" role="group">
137
185
  <span class="thumb" aria-hidden="true"></span>
186
+ <span class="indicator" aria-hidden="true"></span>
138
187
  ${opts.map((opt, i3) => {
139
- const id = `bds-seg-${this._uid}-${i3}`;
140
188
  const isActive = opt.value === this.value;
141
189
  const isDisabled = this.disabled || opt.disabled;
190
+ const itemClass = `item ${isActive ? "--active" : ""} ${isDisabled ? "--disabled" : ""}`.trim();
191
+ if (opt.href) {
192
+ return T`
193
+ <a
194
+ class=${itemClass}
195
+ href=${isDisabled ? A : opt.href}
196
+ aria-current=${isActive ? "page" : A}
197
+ ?aria-disabled=${isDisabled}
198
+ >${opt.label}</a>
199
+ `;
200
+ }
201
+ const id = `bds-seg-${this._uid}-${i3}`;
142
202
  return T`
143
- <label
144
- class="item ${isActive ? "--active" : ""} ${isDisabled ? "--disabled" : ""}"
145
- for=${id}
146
- >
203
+ <label class=${itemClass} for=${id}>
147
204
  <input
148
205
  id=${id}
149
206
  type="radio"
@@ -74,8 +74,7 @@ var BdsNotificationBanner = class extends i2 {
74
74
  border-radius: 50%;
75
75
  transition: var(--bds-animation_transition);
76
76
  --bdc_color: currentcolor;
77
- outline: var(--bdc-outline_width) solid var(--bdc_color);
78
- outline-offset: var(--bdc-outline_offset);
77
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
79
78
  }
80
79
 
81
80
  .dismiss svg {
@@ -87,8 +87,7 @@ var BdsAlert = class extends i2 {
87
87
  transition: var(--bds-animation_transition);
88
88
  border-radius: 50%;
89
89
  --bdc_color: currentcolor;
90
- outline: var(--bdc-outline_width) solid var(--bdc_color);
91
- outline-offset: var(--bdc-outline_offset);
90
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
92
91
  }
93
92
 
94
93
  .dismiss svg {
@@ -24,11 +24,26 @@ var BdsDrawer = class extends i2 {
24
24
  border: none;
25
25
  background: transparent;
26
26
  overflow: hidden;
27
+ transition:
28
+ display var(--bds-animation_transition-duration) allow-discrete,
29
+ overlay var(--bds-animation_transition-duration) allow-discrete;
27
30
  }
28
31
 
29
32
  .drawer::backdrop {
30
33
  background-color: var(--color_backdrop, rgb(0 0 0 / 50%));
31
34
  backdrop-filter: blur(3px);
35
+ transition:
36
+ display var(--bds-animation_transition-duration) allow-discrete,
37
+ overlay var(--bds-animation_transition-duration) allow-discrete,
38
+ background-color var(--bds-animation_transition-duration) var(--bds-animation_easing),
39
+ backdrop-filter var(--bds-animation_transition-duration) var(--bds-animation_easing);
40
+ }
41
+
42
+ @starting-style {
43
+ .drawer[open]::backdrop {
44
+ background-color: transparent;
45
+ backdrop-filter: blur(0);
46
+ }
32
47
  }
33
48
 
34
49
  .panel {
@@ -42,16 +57,42 @@ var BdsDrawer = class extends i2 {
42
57
  color: var(--drawer_on-color, var(--bds-color_on-bg));
43
58
  box-shadow: var(--bds-shadow_xl);
44
59
  overflow: hidden;
45
- transition: var(--bds-animation_transition);
60
+ translate: 100% 0;
61
+ transition: translate var(--bds-animation_transition-duration) var(--bds-animation_easing);
46
62
  }
47
63
 
48
64
  :host([side='right']) .panel {
49
65
  inset-inline-end: 0;
66
+ translate: 100% 0;
50
67
  }
51
68
 
52
69
  :host([side='left']) .panel,
53
70
  :host(:not([side])) .panel {
54
71
  inset-inline-start: 0;
72
+ translate: -100% 0;
73
+ }
74
+
75
+ .drawer[open] .panel {
76
+ translate: 0 0;
77
+ }
78
+
79
+ :host([side='right']) .drawer[open] .panel,
80
+ :host(:not([side])) .drawer[open] .panel {
81
+ animation: bds-drawer-slide-right var(--bds-animation_transition-duration) var(--bds-animation_easing) both;
82
+ }
83
+
84
+ :host([side='left']) .drawer[open] .panel {
85
+ animation: bds-drawer-slide-left var(--bds-animation_transition-duration) var(--bds-animation_easing) both;
86
+ }
87
+
88
+ @keyframes bds-drawer-slide-right {
89
+ from { translate: 100% 0; }
90
+ to { translate: 0 0; }
91
+ }
92
+
93
+ @keyframes bds-drawer-slide-left {
94
+ from { translate: -100% 0; }
95
+ to { translate: 0 0; }
55
96
  }
56
97
 
57
98
  .header {
@@ -105,9 +146,17 @@ var BdsDrawer = class extends i2 {
105
146
  }
106
147
 
107
148
  @media (prefers-reduced-motion: reduce) {
149
+ .drawer,
150
+ .drawer::backdrop,
108
151
  .panel {
109
152
  transition: none;
110
153
  }
154
+
155
+ :host([side='right']) .drawer[open] .panel,
156
+ :host(:not([side])) .drawer[open] .panel,
157
+ :host([side='left']) .drawer[open] .panel {
158
+ animation: none;
159
+ }
111
160
  }
112
161
  `;
113
162
  static properties = {
@@ -27,7 +27,7 @@ var bdcCss = `
27
27
  @property --bdc-outline_shadow {
28
28
  syntax: '*';
29
29
  inherits: false;
30
- initial-value: none;
30
+ initial-value: 0 0 0 0 transparent;
31
31
  }
32
32
 
33
33
  @layer component {
@@ -39,9 +39,9 @@ var bdcCss = `
39
39
  --bdc_color--error: var(--bds-color_error);
40
40
 
41
41
  --bdc-outline_width: 1px;
42
- --bdc-outline_offset: -1px;
42
+ --bdc-outline_offset: -1px; /* available for consumer use; bdc borders now use inset box-shadow */
43
43
  --bdc-outline_radius: var(--bds-border_radius--xs);
44
- --bdc-outline_shadow: none;
44
+ --bdc-outline_shadow: 0 0 0 0 transparent;
45
45
  }
46
46
  }
47
47
  `;
@@ -27,10 +27,8 @@ var BdsTextarea = class extends i2 {
27
27
  --bdc_color: currentcolor;
28
28
  --bdc-outline_radius: var(--bds-border_radius--xs);
29
29
 
30
- outline: var(--bdc-outline_width) solid var(--bdc_color);
31
- outline-offset: var(--bdc-outline_offset);
32
30
  border-radius: var(--textarea_radius, var(--bdc-outline_radius));
33
- box-shadow: var(--textarea_shadow, var(--bdc-outline_shadow));
31
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--textarea_shadow, var(--bdc-outline_shadow));
34
32
  background-color: var(--textarea_color_bg, var(--bds-color_bg));
35
33
  color: var(--textarea_color, var(--bds-color_on-bg));
36
34
  resize: vertical;
@@ -33,10 +33,8 @@ var BdsRadio = class extends i2 {
33
33
  --bdc_color: currentcolor;
34
34
  --bdc-outline_radius: 50%;
35
35
 
36
- outline: var(--bdc-outline_width) solid var(--bdc_color);
37
- outline-offset: var(--bdc-outline_offset);
38
36
  border-radius: 50%;
39
- box-shadow: var(--radio_shadow, var(--bdc-outline_shadow));
37
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--radio_shadow, var(--bdc-outline_shadow));
40
38
  border: none;
41
39
  appearance: none;
42
40
  background-color: var(--radio_color_bg, var(--bds-color_bg));
@@ -46,18 +44,14 @@ var BdsRadio = class extends i2 {
46
44
  }
47
45
 
48
46
  .input:checked {
49
- background-color: var(--radio_color-active, var(--bdc-color_active));
47
+ background: radial-gradient(
48
+ circle,
49
+ var(--radio_color-active, var(--bdc-color_active)) 35%,
50
+ var(--radio_color_bg, var(--bds-color_bg)) 42%
51
+ );
50
52
  --bdc_color: var(--radio_color-active, var(--bdc-color_active));
51
53
  }
52
54
 
53
- .input:checked::after {
54
- content: '';
55
- position: absolute;
56
- inset: 25%;
57
- border-radius: 50%;
58
- background-color: var(--radio_color-on-active, var(--bdc-color_on-active));
59
- }
60
-
61
55
  .input:focus-visible {
62
56
  outline: var(--bds-outline_default);
63
57
  outline-offset: var(--bds-outline_offset);
@@ -31,10 +31,8 @@ var BdsNumberInput = class extends i2 {
31
31
  --bdc_color: currentcolor;
32
32
  --bdc-outline_radius: var(--bds-border_radius--xs);
33
33
 
34
- outline: var(--bdc-outline_width) solid var(--bdc_color);
35
- outline-offset: var(--bdc-outline_offset);
36
34
  border-radius: var(--number-input_radius, var(--bdc-outline_radius));
37
- box-shadow: var(--number-input_shadow, var(--bdc-outline_shadow));
35
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--number-input_shadow, var(--bdc-outline_shadow));
38
36
  background-color: var(--number-input_color_bg, var(--bds-color_bg));
39
37
  color: var(--number-input_color, var(--bds-color_on-bg));
40
38
  text-align: center;
@@ -62,12 +60,13 @@ var BdsNumberInput = class extends i2 {
62
60
  display: flex;
63
61
  align-items: center;
64
62
  justify-content: center;
63
+ margin: 1px;
65
64
  inline-size: 2rem;
66
65
  block-size: 2rem;
67
66
  border-radius: var(--bds-border_radius--xs);
68
67
  cursor: pointer;
69
68
  flex-shrink: 0;
70
- color: var(--bds-color_on-bg);
69
+ color: var(--bds-color_interactive);
71
70
  transition: var(--bds-animation_transition);
72
71
  }
73
72
 
@@ -18,10 +18,8 @@ var BdsDialog = class extends i2 {
18
18
  --bdc_color: currentcolor;
19
19
  --bdc-outline_radius: var(--bds-border_radius--m);
20
20
 
21
- outline: var(--bdc-outline_width) solid var(--bdc_color);
22
- outline-offset: var(--bdc-outline_offset);
23
21
  border-radius: var(--dialog_radius, var(--bdc-outline_radius));
24
- box-shadow: var(--dialog_shadow, var(--bdc-outline_shadow));
22
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--dialog_shadow, var(--bdc-outline_shadow));
25
23
  background-color: var(--dialog_color, var(--bds-color_grey--subtle));
26
24
  color: var(--dialog_on-color, var(--bds-color_on-grey--subtle));
27
25
  padding: var(--bds-space_l);
@@ -55,8 +53,7 @@ var BdsDialog = class extends i2 {
55
53
  border: var(--dialog_close-border, none);
56
54
  --bdc_color: currentcolor;
57
55
 
58
- outline: var(--bdc-outline_width) solid var(--bdc_color);
59
- outline-offset: var(--bdc-outline_offset);
56
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
60
57
  cursor: pointer;
61
58
  }
62
59
 
@@ -32,10 +32,8 @@ var BdsCombobox = class extends i2 {
32
32
  --bdc_color: currentcolor;
33
33
  --bdc-outline_radius: var(--bds-border_radius--xs);
34
34
 
35
- outline: var(--bdc-outline_width) solid var(--bdc_color);
36
- outline-offset: var(--bdc-outline_offset);
37
35
  border-radius: var(--combobox_radius, var(--bdc-outline_radius));
38
- box-shadow: var(--combobox_shadow, var(--bdc-outline_shadow));
36
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--combobox_shadow, var(--bdc-outline_shadow));
39
37
  background-color: var(--combobox_color_bg, var(--bds-color_bg));
40
38
  color: var(--combobox_color, var(--bds-color_on-bg));
41
39
  box-sizing: border-box;
@@ -33,10 +33,8 @@ var BdsCheckbox = class extends i2 {
33
33
  --bdc_color: currentcolor;
34
34
  --bdc-outline_radius: var(--bds-border_radius--xs);
35
35
 
36
- outline: var(--bdc-outline_width) solid var(--bdc_color);
37
- outline-offset: var(--bdc-outline_offset);
38
36
  border-radius: var(--checkbox_radius, var(--bdc-outline_radius));
39
- box-shadow: var(--checkbox_shadow, var(--bdc-outline_shadow));
37
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--checkbox_shadow, var(--bdc-outline_shadow));
40
38
  border: none;
41
39
  appearance: none;
42
40
  background-color: var(--checkbox_color_bg, var(--bds-color_bg));
@@ -32,10 +32,8 @@ var BdsSelect = class extends i2 {
32
32
  --bdc_color: currentcolor;
33
33
  --bdc-outline_radius: var(--bds-border_radius--xs);
34
34
 
35
- outline: var(--bdc-outline_width) solid var(--bdc_color);
36
- outline-offset: var(--bdc-outline_offset);
37
35
  border-radius: var(--select_radius, var(--bdc-outline_radius));
38
- box-shadow: var(--select_shadow, var(--bdc-outline_shadow));
36
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--select_shadow, var(--bdc-outline_shadow));
39
37
  background-color: var(--select_color_bg, var(--bds-color_bg));
40
38
  color: var(--select_color, var(--bds-color_on-bg));
41
39
  appearance: none;
@@ -60,7 +58,7 @@ var BdsSelect = class extends i2 {
60
58
  pointer-events: none;
61
59
  inline-size: 1rem;
62
60
  block-size: 1rem;
63
- color: currentcolor;
61
+ color: var(--select_chevron-color, var(--bds-color_interactive));
64
62
  }
65
63
 
66
64
  .chevron svg {
@@ -32,8 +32,7 @@ var BdsSwitch = class extends i2 {
32
32
  background-color: var(--switch_color_bg, var(--bds-color_bg--subtle));
33
33
  --bdc_color: currentcolor;
34
34
 
35
- outline: var(--bdc-outline_width) solid var(--bdc_color);
36
- outline-offset: var(--bdc-outline_offset);
35
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
37
36
  transition: background-color 0.2s ease;
38
37
  flex-shrink: 0;
39
38
  }
@@ -45,7 +44,7 @@ var BdsSwitch = class extends i2 {
45
44
  inline-size: 1.1rem;
46
45
  block-size: 1.1rem;
47
46
  border-radius: 50%;
48
- background-color: var(--switch_thumb_color, var(--bds-color_bg));
47
+ background-color: var(--switch_thumb_color, var(--bds-color_interactive));
49
48
  transition: inset-inline-start 0.2s ease;
50
49
  }
51
50
 
@@ -58,7 +57,7 @@ var BdsSwitch = class extends i2 {
58
57
  }
59
58
 
60
59
  .input:checked + .track {
61
- background-color: var(--switch_color-active, var(--bdc-color_active));
60
+ background-color: var(--switch_color-active, var(--bdc-color_active--subtle));
62
61
  }
63
62
 
64
63
  .input:checked + .track .thumb {
@@ -30,9 +30,7 @@ var BdsCard = class extends i2 {
30
30
 
31
31
  .card.--outlined {
32
32
  --bdc_color: currentcolor;
33
- outline: var(--bdc-outline_width) solid var(--bdc_color);
34
- outline-offset: var(--bdc-outline_offset);
35
- box-shadow: var(--bds-shadow_s);
33
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--bds-shadow_s);
36
34
  }
37
35
 
38
36
  .card.--padding-none { padding: 0; }
@@ -11,9 +11,8 @@ var BdsAccordion = class extends i2 {
11
11
  display: block;
12
12
  --bdc_color: var(--bds-color_bg--subtle);
13
13
  --bdc-outline_radius: var(--bds-border_radius--s);
14
- outline: var(--bdc-outline_width) solid var(--bdc_color);
15
- outline-offset: var(--bdc-outline_offset);
16
14
  border-radius: var(--accordion_radius, var(--bdc-outline_radius));
15
+ box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
17
16
  overflow: hidden;
18
17
  }
19
18
  `;
@@ -1 +1 @@
1
- import "./chunk-CAPI25CU.js";
1
+ import "./chunk-DZRSJGPB.js";