@drivenets/design-system 0.0.3 → 0.0.5

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 (247) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +51 -0
  3. package/dist/components/ds-alert-banner/ds-alert-banner.cjs +157 -52
  4. package/dist/components/ds-alert-banner/ds-alert-banner.d.cts +5 -5
  5. package/dist/components/ds-alert-banner/ds-alert-banner.d.cts.map +1 -1
  6. package/dist/components/ds-alert-banner/ds-alert-banner.js +157 -52
  7. package/dist/components/ds-alert-banner/ds-alert-banner.js.map +1 -1
  8. package/dist/components/ds-alert-banner/ds-alert-banner.types.d.cts.map +1 -1
  9. package/dist/components/ds-alert-banner/ds-alert-banner.types.js.map +1 -1
  10. package/dist/components/ds-breadcrumb/ds-breadcrumb.cjs +59 -16
  11. package/dist/components/ds-breadcrumb/ds-breadcrumb.js +59 -16
  12. package/dist/components/ds-breadcrumb/ds-breadcrumb.js.map +1 -1
  13. package/dist/components/ds-button/ds-button.cjs +18 -2
  14. package/dist/components/ds-button/ds-button.d.cts +2 -2
  15. package/dist/components/ds-button/ds-button.d.cts.map +1 -1
  16. package/dist/components/ds-button/ds-button.d.ts +2 -2
  17. package/dist/components/ds-button/ds-button.js +18 -2
  18. package/dist/components/ds-button/ds-button.js.map +1 -1
  19. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.cjs +79 -10
  20. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js +79 -10
  21. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js.map +1 -1
  22. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.cjs +78 -10
  23. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js +78 -10
  24. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js.map +1 -1
  25. package/dist/components/ds-checkbox/ds-checkbox.cjs +89 -18
  26. package/dist/components/ds-checkbox/ds-checkbox.js +89 -18
  27. package/dist/components/ds-checkbox/ds-checkbox.js.map +1 -1
  28. package/dist/components/ds-chip/ds-chip.cjs +100 -30
  29. package/dist/components/ds-chip/ds-chip.js +100 -30
  30. package/dist/components/ds-chip/ds-chip.js.map +1 -1
  31. package/dist/components/ds-chip-group/ds-chip-group.cjs +6 -6
  32. package/dist/components/ds-chip-group/ds-chip-group.js +6 -6
  33. package/dist/components/ds-chip-group/ds-chip-group.js.map +1 -1
  34. package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.js.map +1 -1
  35. package/dist/components/ds-confirmation/ds-confirmation.cjs +210 -56
  36. package/dist/components/ds-confirmation/ds-confirmation.d.cts +8 -8
  37. package/dist/components/ds-confirmation/ds-confirmation.d.ts +8 -8
  38. package/dist/components/ds-confirmation/ds-confirmation.js +210 -56
  39. package/dist/components/ds-confirmation/ds-confirmation.js.map +1 -1
  40. package/dist/components/ds-dialog/ds-dialog.js.map +1 -1
  41. package/dist/components/ds-drawer/ds-drawer.cjs +261 -61
  42. package/dist/components/ds-drawer/ds-drawer.d.cts +9 -9
  43. package/dist/components/ds-drawer/ds-drawer.d.ts +9 -9
  44. package/dist/components/ds-drawer/ds-drawer.js +261 -61
  45. package/dist/components/ds-drawer/ds-drawer.js.map +1 -1
  46. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.cjs +481 -135
  47. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js +481 -135
  48. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js.map +1 -1
  49. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.cjs +146 -56
  50. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.cts +2 -2
  51. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.ts +2 -2
  52. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.js +146 -56
  53. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.js.map +1 -1
  54. package/dist/components/ds-file-upload/components/file-upload/file-upload.cjs +190 -69
  55. package/dist/components/ds-file-upload/components/file-upload/file-upload.js +190 -69
  56. package/dist/components/ds-file-upload/components/file-upload/file-upload.js.map +1 -1
  57. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.cjs +273 -132
  58. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.js +273 -132
  59. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.js.map +1 -1
  60. package/dist/components/ds-file-upload/ds-file-upload.cjs +96 -16
  61. package/dist/components/ds-file-upload/ds-file-upload.js +96 -16
  62. package/dist/components/ds-file-upload/ds-file-upload.js.map +1 -1
  63. package/dist/components/ds-file-upload/errors/file-upload-errors.js.map +1 -1
  64. package/dist/components/ds-file-upload/hooks/use-file-upload.cjs +93 -93
  65. package/dist/components/ds-file-upload/hooks/use-file-upload.js +93 -93
  66. package/dist/components/ds-file-upload/hooks/use-file-upload.js.map +1 -1
  67. package/dist/components/ds-file-upload/types/accept-types.js.map +1 -1
  68. package/dist/components/ds-file-upload/utils/accept-utils.js.map +1 -1
  69. package/dist/components/ds-file-upload/utils/constants.js.map +1 -1
  70. package/dist/components/ds-file-upload/utils/file-factory.js.map +1 -1
  71. package/dist/components/ds-file-upload/utils/format-file-size.js.map +1 -1
  72. package/dist/components/ds-file-upload/utils/generate-helper-text.js.map +1 -1
  73. package/dist/components/ds-file-upload/utils/get-error-message.js.map +1 -1
  74. package/dist/components/ds-file-upload/utils/is-file-equal.js.map +1 -1
  75. package/dist/components/ds-form-control/ds-form-control.cjs +119 -34
  76. package/dist/components/ds-form-control/ds-form-control.d.cts +7 -7
  77. package/dist/components/ds-form-control/ds-form-control.d.ts +7 -7
  78. package/dist/components/ds-form-control/ds-form-control.d.ts.map +1 -1
  79. package/dist/components/ds-form-control/ds-form-control.js +119 -34
  80. package/dist/components/ds-form-control/ds-form-control.js.map +1 -1
  81. package/dist/components/ds-form-control/ds-form-control.types.js.map +1 -1
  82. package/dist/components/ds-grid/ds-grid.js.map +1 -1
  83. package/dist/components/ds-icon/ds-icon.cjs +84 -13
  84. package/dist/components/ds-icon/ds-icon.js +84 -13
  85. package/dist/components/ds-icon/ds-icon.js.map +1 -1
  86. package/dist/components/ds-icon/ds-icon.types.d.cts.map +1 -1
  87. package/dist/components/ds-icon/ds-icon.types.js.map +1 -1
  88. package/dist/components/ds-modal/ds-modal.cjs +222 -55
  89. package/dist/components/ds-modal/ds-modal.d.cts +8 -8
  90. package/dist/components/ds-modal/ds-modal.d.ts +8 -8
  91. package/dist/components/ds-modal/ds-modal.d.ts.map +1 -1
  92. package/dist/components/ds-modal/ds-modal.js +222 -55
  93. package/dist/components/ds-modal/ds-modal.js.map +1 -1
  94. package/dist/components/ds-number-input/ds-number-input.cjs +136 -49
  95. package/dist/components/ds-number-input/ds-number-input.js +136 -49
  96. package/dist/components/ds-number-input/ds-number-input.js.map +1 -1
  97. package/dist/components/ds-panel/ds-panel.cjs +111 -19
  98. package/dist/components/ds-panel/ds-panel.d.cts +2 -2
  99. package/dist/components/ds-panel/ds-panel.d.cts.map +1 -1
  100. package/dist/components/ds-panel/ds-panel.d.ts +2 -2
  101. package/dist/components/ds-panel/ds-panel.js +111 -19
  102. package/dist/components/ds-panel/ds-panel.js.map +1 -1
  103. package/dist/components/ds-password-input/ds-password-input.cjs +108 -41
  104. package/dist/components/ds-password-input/ds-password-input.js +108 -41
  105. package/dist/components/ds-password-input/ds-password-input.js.map +1 -1
  106. package/dist/components/ds-popover/ds-popover.cjs +50 -12
  107. package/dist/components/ds-popover/ds-popover.js +50 -12
  108. package/dist/components/ds-popover/ds-popover.js.map +1 -1
  109. package/dist/components/ds-radio-group/ds-radio-group.cjs +209 -53
  110. package/dist/components/ds-radio-group/ds-radio-group.js +209 -53
  111. package/dist/components/ds-radio-group/ds-radio-group.js.map +1 -1
  112. package/dist/components/ds-segment-group/ds-segment-group.cjs +215 -0
  113. package/dist/components/ds-segment-group/ds-segment-group.d.cts +26 -0
  114. package/dist/components/ds-segment-group/ds-segment-group.d.cts.map +1 -0
  115. package/dist/components/ds-segment-group/ds-segment-group.d.ts +26 -0
  116. package/dist/components/ds-segment-group/ds-segment-group.d.ts.map +1 -0
  117. package/dist/components/ds-segment-group/ds-segment-group.js +214 -0
  118. package/dist/components/ds-segment-group/ds-segment-group.js.map +1 -0
  119. package/dist/components/ds-segment-group/ds-segment-group.module.cjs +12 -0
  120. package/dist/components/ds-segment-group/ds-segment-group.module.js +12 -0
  121. package/dist/components/ds-segment-group/ds-segment-group.module.js.map +1 -0
  122. package/dist/components/ds-segment-group/ds-segment-group.types.cjs +2 -0
  123. package/dist/components/ds-segment-group/ds-segment-group.types.d.cts +52 -0
  124. package/dist/components/ds-segment-group/ds-segment-group.types.d.cts.map +1 -0
  125. package/dist/components/ds-segment-group/ds-segment-group.types.d.ts +52 -0
  126. package/dist/components/ds-segment-group/ds-segment-group.types.d.ts.map +1 -0
  127. package/dist/components/ds-segment-group/ds-segment-group.types.js +2 -0
  128. package/dist/components/ds-segment-group/index.cjs +2 -0
  129. package/dist/components/ds-segment-group/index.d.ts +2 -0
  130. package/dist/components/ds-segment-group/index.js +2 -0
  131. package/dist/components/ds-select/ds-select.cjs +198 -89
  132. package/dist/components/ds-select/ds-select.d.cts +2 -2
  133. package/dist/components/ds-select/ds-select.d.cts.map +1 -1
  134. package/dist/components/ds-select/ds-select.d.ts +2 -2
  135. package/dist/components/ds-select/ds-select.js +198 -89
  136. package/dist/components/ds-select/ds-select.js.map +1 -1
  137. package/dist/components/ds-select/select-items-chips.cjs +73 -22
  138. package/dist/components/ds-select/select-items-chips.js +73 -22
  139. package/dist/components/ds-select/select-items-chips.js.map +1 -1
  140. package/dist/components/ds-smart-tabs/ds-smart-tabs.cjs +208 -46
  141. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.cts +2 -2
  142. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.cts.map +1 -1
  143. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts +2 -2
  144. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts.map +1 -1
  145. package/dist/components/ds-smart-tabs/ds-smart-tabs.js +208 -46
  146. package/dist/components/ds-smart-tabs/ds-smart-tabs.js.map +1 -1
  147. package/dist/components/ds-smart-tabs/ds-smart-tabs.types.js.map +1 -1
  148. package/dist/components/ds-spinner/ds-spinner.cjs +90 -20
  149. package/dist/components/ds-spinner/ds-spinner.js +90 -20
  150. package/dist/components/ds-spinner/ds-spinner.js.map +1 -1
  151. package/dist/components/ds-spinner/ds-spinner.types.js.map +1 -1
  152. package/dist/components/ds-status-badge/ds-status-badge.cjs +54 -11
  153. package/dist/components/ds-status-badge/ds-status-badge.js +54 -11
  154. package/dist/components/ds-status-badge/ds-status-badge.js.map +1 -1
  155. package/dist/components/ds-stepper/components/ds-step-content.cjs +59 -13
  156. package/dist/components/ds-stepper/components/ds-step-content.d.cts +2 -2
  157. package/dist/components/ds-stepper/components/ds-step-content.js +59 -13
  158. package/dist/components/ds-stepper/components/ds-step-content.js.map +1 -1
  159. package/dist/components/ds-stepper/components/ds-step-description.cjs +14 -5
  160. package/dist/components/ds-stepper/components/ds-step-description.js +14 -5
  161. package/dist/components/ds-stepper/components/ds-step-description.js.map +1 -1
  162. package/dist/components/ds-stepper/components/ds-step-label.cjs +14 -5
  163. package/dist/components/ds-stepper/components/ds-step-label.js +14 -5
  164. package/dist/components/ds-stepper/components/ds-step-label.js.map +1 -1
  165. package/dist/components/ds-stepper/components/ds-step-next-button.cjs +23 -6
  166. package/dist/components/ds-stepper/components/ds-step-next-button.d.cts +2 -2
  167. package/dist/components/ds-stepper/components/ds-step-next-button.js +23 -6
  168. package/dist/components/ds-stepper/components/ds-step-next-button.js.map +1 -1
  169. package/dist/components/ds-stepper/components/ds-step.cjs +106 -25
  170. package/dist/components/ds-stepper/components/ds-step.d.cts +2 -2
  171. package/dist/components/ds-stepper/components/ds-step.js +106 -25
  172. package/dist/components/ds-stepper/components/ds-step.js.map +1 -1
  173. package/dist/components/ds-stepper/ds-stepper.cjs +62 -15
  174. package/dist/components/ds-stepper/ds-stepper.d.cts +2 -2
  175. package/dist/components/ds-stepper/ds-stepper.d.cts.map +1 -1
  176. package/dist/components/ds-stepper/ds-stepper.js +62 -15
  177. package/dist/components/ds-stepper/ds-stepper.js.map +1 -1
  178. package/dist/components/ds-stepper/hooks/use-stepper.js.map +1 -1
  179. package/dist/components/ds-stepper/hooks/use-steps.cjs +29 -9
  180. package/dist/components/ds-stepper/hooks/use-steps.js +29 -9
  181. package/dist/components/ds-stepper/hooks/use-steps.js.map +1 -1
  182. package/dist/components/ds-system-status/ds-system-status.cjs +37 -7
  183. package/dist/components/ds-system-status/ds-system-status.js +37 -7
  184. package/dist/components/ds-system-status/ds-system-status.js.map +1 -1
  185. package/dist/components/ds-system-status/ds-system-status.types.js.map +1 -1
  186. package/dist/components/ds-table/components/core-table/core-table.cjs +281 -48
  187. package/dist/components/ds-table/components/core-table/core-table.js +281 -48
  188. package/dist/components/ds-table/components/core-table/core-table.js.map +1 -1
  189. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.cjs +134 -50
  190. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js +134 -50
  191. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js.map +1 -1
  192. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.cjs +140 -43
  193. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.js +140 -43
  194. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.js.map +1 -1
  195. package/dist/components/ds-table/components/ds-table-header/ds-table-header.cjs +37 -6
  196. package/dist/components/ds-table/components/ds-table-header/ds-table-header.js +37 -6
  197. package/dist/components/ds-table/components/ds-table-header/ds-table-header.js.map +1 -1
  198. package/dist/components/ds-table/components/ds-table-row/ds-table-row.cjs +272 -100
  199. package/dist/components/ds-table/components/ds-table-row/ds-table-row.js +272 -100
  200. package/dist/components/ds-table/components/ds-table-row/ds-table-row.js.map +1 -1
  201. package/dist/components/ds-table/context/ds-table-context.js.map +1 -1
  202. package/dist/components/ds-table/ds-table.cjs +15 -15
  203. package/dist/components/ds-table/ds-table.d.cts +2 -2
  204. package/dist/components/ds-table/ds-table.js +15 -15
  205. package/dist/components/ds-table/ds-table.js.map +1 -1
  206. package/dist/components/ds-table/hooks/use-drag-and-drop.cjs +126 -38
  207. package/dist/components/ds-table/hooks/use-drag-and-drop.js +126 -38
  208. package/dist/components/ds-table/hooks/use-drag-and-drop.js.map +1 -1
  209. package/dist/components/ds-table/utils/column-styling.js.map +1 -1
  210. package/dist/components/ds-table/utils/create-columns-grid-template.js.map +1 -1
  211. package/dist/components/ds-table/utils/merge-refs.js.map +1 -1
  212. package/dist/components/ds-text-input/ds-text-input.cjs +128 -43
  213. package/dist/components/ds-text-input/ds-text-input.js +128 -43
  214. package/dist/components/ds-text-input/ds-text-input.js.map +1 -1
  215. package/dist/components/ds-text-input/ds-text-input.types.js.map +1 -1
  216. package/dist/components/ds-textarea/ds-textarea.cjs +66 -22
  217. package/dist/components/ds-textarea/ds-textarea.js +66 -22
  218. package/dist/components/ds-textarea/ds-textarea.js.map +1 -1
  219. package/dist/components/ds-toast/ds-toast-context.cjs +62 -17
  220. package/dist/components/ds-toast/ds-toast-context.js +62 -17
  221. package/dist/components/ds-toast/ds-toast-context.js.map +1 -1
  222. package/dist/components/ds-toast/ds-toast.cjs +90 -26
  223. package/dist/components/ds-toast/ds-toast.js +90 -26
  224. package/dist/components/ds-toast/ds-toast.js.map +1 -1
  225. package/dist/components/ds-tooltip/ds-tooltip.cjs +51 -13
  226. package/dist/components/ds-tooltip/ds-tooltip.js +51 -13
  227. package/dist/components/ds-tooltip/ds-tooltip.js.map +1 -1
  228. package/dist/components/ds-typography/ds-typography.cjs +51 -7
  229. package/dist/components/ds-typography/ds-typography.config.js.map +1 -1
  230. package/dist/components/ds-typography/ds-typography.js +51 -7
  231. package/dist/components/ds-typography/ds-typography.js.map +1 -1
  232. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.cjs +91 -30
  233. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.cts +5 -5
  234. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.ts +5 -5
  235. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.js +91 -30
  236. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.js.map +1 -1
  237. package/dist/index.cjs +3 -0
  238. package/dist/index.d.cts +3 -1
  239. package/dist/index.d.ts +4 -1
  240. package/dist/index.js +3 -1
  241. package/dist/index.min.css +1 -1
  242. package/package.json +8 -2
  243. package/src/components/ds-segment-group/ds-segment-group.module.scss +99 -0
  244. package/src/components/ds-segment-group/ds-segment-group.tsx +76 -0
  245. package/src/components/ds-segment-group/ds-segment-group.types.tsx +64 -0
  246. package/src/components/ds-segment-group/index.tsx +2 -0
  247. package/src/index.ts +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drivenets/design-system",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.cts",
@@ -31,6 +31,10 @@
31
31
  "!**/stories",
32
32
  "!**/*.stories.*"
33
33
  ],
34
+ "repository": {
35
+ "url": "https://github.com/drivenets/design-system",
36
+ "directory": "/packages/design-system"
37
+ },
34
38
  "dependencies": {
35
39
  "@ark-ui/react": "^5.18.0",
36
40
  "@dnd-kit/core": "^6.3.1",
@@ -60,6 +64,7 @@
60
64
  "@chromatic-com/storybook": "^4.1.3",
61
65
  "@faker-js/faker": "^9.7.0",
62
66
  "@hookform/resolvers": "^5.0.1",
67
+ "@rollup/plugin-babel": "^6.1.0",
63
68
  "@storybook/addon-a11y": "^10.1.9",
64
69
  "@storybook/addon-docs": "^10.1.9",
65
70
  "@storybook/addon-vitest": "^10.1.9",
@@ -71,6 +76,7 @@
71
76
  "@types/react": "^19.2.7",
72
77
  "@vitest/browser": "^4.0.16",
73
78
  "@vitest/browser-playwright": "^4.0.15",
79
+ "babel-plugin-react-compiler": "^1.0.0",
74
80
  "eslint": "^9.39.2",
75
81
  "eslint-plugin-jsx-a11y": "^6.10.2",
76
82
  "eslint-plugin-react": "^7.37.5",
@@ -91,7 +97,7 @@
91
97
  "vite": "^7.3.0",
92
98
  "vitest": "^4.0.16",
93
99
  "zod": "^3.24.2",
94
- "@drivenets/vite-plugin-design-system": "0.0.3"
100
+ "@drivenets/vite-plugin-design-system": "0.0.4"
95
101
  },
96
102
  "scripts": {
97
103
  "lint": "eslint --max-warnings=0 .",
@@ -0,0 +1,99 @@
1
+ .segmentGroupRoot {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ position: relative;
5
+ background: var(--color-background-secondary);
6
+ border: 1px solid var(--color-border-contrast);
7
+ border-radius: 4px;
8
+ gap: var(--spacing-2xs);
9
+ height: 36px;
10
+ padding: var(--spacing-3xs);
11
+
12
+ &.small {
13
+ height: 28px;
14
+ padding: var(--spacing-4xs);
15
+
16
+ .segmentItem {
17
+ padding: var(--spacing-4xs) var(--spacing-xs);
18
+ }
19
+ }
20
+ }
21
+
22
+ .segmentItem {
23
+ position: relative;
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ padding: var(--spacing-3xs) var(--spacing-sm);
28
+ gap: var(--spacing-2xs);
29
+ flex: 1;
30
+ z-index: 1;
31
+ cursor: pointer;
32
+ border-radius: 4px;
33
+
34
+ &[data-state='checked'] {
35
+ .segmentItemText {
36
+ color: var(--color-font-main);
37
+ font-weight: var(--font-weight-medium);
38
+ }
39
+ }
40
+
41
+ &[data-state='unchecked'] {
42
+ background: transparent;
43
+
44
+ .segmentItemText {
45
+ color: var(--color-background-action);
46
+ }
47
+
48
+ &:hover:not([data-disabled]) {
49
+ background: var(--color-background-action-secondary);
50
+ }
51
+
52
+ &:active:not([data-disabled]) {
53
+ background: var(--color-background);
54
+ border-color: var(--color-border-contrast);
55
+ }
56
+ }
57
+
58
+ &[data-disabled] {
59
+ cursor: not-allowed;
60
+ background: var(--color-background-secondary);
61
+
62
+ .segmentItemText {
63
+ color: var(--color-font-disabled);
64
+ }
65
+ }
66
+
67
+ &:focus-visible {
68
+ outline: 2px solid var(--color-border-action-secondary);
69
+ outline-offset: 2px;
70
+ }
71
+ }
72
+
73
+ [data-scope='segment-group'][data-part='item-control'] {
74
+ position: absolute;
75
+ inset: 0;
76
+ pointer-events: none;
77
+ }
78
+
79
+ .segmentItemText {
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ white-space: nowrap;
84
+ transition: color 150ms ease-in-out;
85
+ }
86
+
87
+ .segmentIndicator {
88
+ position: absolute;
89
+ background: var(--color-background);
90
+ border: 1px solid var(--color-border-contrast);
91
+ border-radius: 4px;
92
+ box-shadow: 0 1.25px 4px 0 rgba(0, 0, 0, 0.25);
93
+ z-index: 0;
94
+ pointer-events: none;
95
+ width: var(--width);
96
+ height: var(--height);
97
+ left: var(--left);
98
+ top: var(--top);
99
+ }
@@ -0,0 +1,76 @@
1
+ import type React from 'react';
2
+ import { SegmentGroup } from '@ark-ui/react/segment-group';
3
+ import classNames from 'classnames';
4
+ import styles from './ds-segment-group.module.scss';
5
+ import DsTypography from '../ds-typography/ds-typography';
6
+ import {
7
+ type DsSegmentGroupItemProps,
8
+ type DsSegmentGroupItemTextProps,
9
+ type DsSegmentGroupRootProps,
10
+ } from './ds-segment-group.types';
11
+
12
+ /**
13
+ * Root component - provides segment group context
14
+ */
15
+ const Root: React.FC<DsSegmentGroupRootProps> = ({
16
+ className,
17
+ children,
18
+ onValueChange,
19
+ size = 'default',
20
+ ...props
21
+ }) => (
22
+ <SegmentGroup.Root
23
+ className={classNames(styles.segmentGroupRoot, size === 'small' && styles.small, className)}
24
+ onValueChange={(details) => onValueChange?.(details.value)}
25
+ {...props}
26
+ >
27
+ <SegmentGroup.Indicator className={styles.segmentIndicator} />
28
+ {children}
29
+ </SegmentGroup.Root>
30
+ );
31
+
32
+ /**
33
+ * Item component - renders a single segment button
34
+ */
35
+ const Item: React.FC<DsSegmentGroupItemProps> = ({ value, label, className, style, children, ...props }) => {
36
+ return (
37
+ <SegmentGroup.Item
38
+ value={value}
39
+ className={classNames(styles.segmentItem, className)}
40
+ style={style}
41
+ {...props}
42
+ >
43
+ {label ? <ItemText>{label}</ItemText> : children}
44
+ <SegmentGroup.ItemControl />
45
+ <SegmentGroup.ItemHiddenInput />
46
+ </SegmentGroup.Item>
47
+ );
48
+ };
49
+
50
+ /**
51
+ * ItemText component - renders text content within an item
52
+ */
53
+ const ItemText: React.FC<DsSegmentGroupItemTextProps> = ({ className, children, ...props }) => (
54
+ <SegmentGroup.ItemText className={classNames(styles.segmentItemText, className)} {...props} asChild>
55
+ <DsTypography variant="body-sm-reg">{children}</DsTypography>
56
+ </SegmentGroup.ItemText>
57
+ );
58
+
59
+ /**
60
+ * Design system SegmentGroup component
61
+ *
62
+ * @example
63
+ * <DsSegmentGroup.Root value={value} onValueChange={setValue} size="default">
64
+ * <DsSegmentGroup.Indicator />
65
+ * <DsSegmentGroup.Item value="option1" label="Option 1" />
66
+ * <DsSegmentGroup.Item value="option2">
67
+ * <DsIcon icon="settings" />
68
+ * <DsSegmentGroup.ItemText>Option 2</DsSegmentGroup.ItemText>
69
+ * </DsSegmentGroup.Item>
70
+ * </DsSegmentGroup.Root>
71
+ */
72
+ export const DsSegmentGroup = {
73
+ Root,
74
+ Item,
75
+ ItemText,
76
+ };
@@ -0,0 +1,64 @@
1
+ import { type ReactNode } from 'react';
2
+ import {
3
+ type SegmentGroupItemProps,
4
+ type SegmentGroupItemTextProps,
5
+ type SegmentGroupRootProps,
6
+ } from '@ark-ui/react/segment-group';
7
+
8
+ /**
9
+ * Size variants for the segment group
10
+ */
11
+ export type DsSegmentGroupSize = 'small' | 'default';
12
+
13
+ /**
14
+ * Props for the DsSegmentGroup Root component
15
+ */
16
+ export interface DsSegmentGroupRootProps extends Pick<
17
+ SegmentGroupRootProps,
18
+ 'value' | 'defaultValue' | 'disabled' | 'name' | 'className' | 'style' | 'children'
19
+ > {
20
+ /**
21
+ * Size variant of the segment group
22
+ * @default 'default'
23
+ */
24
+ size?: DsSegmentGroupSize;
25
+ /**
26
+ * Event handler called when the selected value changes
27
+ */
28
+ onValueChange?: (value: string | null) => void;
29
+ }
30
+
31
+ /**
32
+ * Props for the DsSegmentGroup Item component
33
+ */
34
+ export type DsSegmentGroupItemProps = Pick<
35
+ SegmentGroupItemProps,
36
+ 'id' | 'value' | 'disabled' | 'className' | 'style'
37
+ > &
38
+ (
39
+ | {
40
+ /**
41
+ * The segment group item content
42
+ */
43
+ children: ReactNode;
44
+ /**
45
+ * Optional label text for the segment item
46
+ */
47
+ label?: never;
48
+ }
49
+ | {
50
+ /**
51
+ * The segment group item content
52
+ */
53
+ children?: never;
54
+ /**
55
+ * Optional label text for the segment item
56
+ */
57
+ label: string;
58
+ }
59
+ );
60
+
61
+ /**
62
+ * Props for the DsSegmentGroup ItemText component
63
+ */
64
+ export type DsSegmentGroupItemTextProps = Pick<SegmentGroupItemTextProps, 'className' | 'style' | 'children'>;
@@ -0,0 +1,2 @@
1
+ export { DsSegmentGroup } from './ds-segment-group';
2
+ export * from './ds-segment-group.types';
package/src/index.ts CHANGED
@@ -19,6 +19,7 @@ export * from './components/ds-panel';
19
19
  export * from './components/ds-password-input';
20
20
  export * from './components/ds-popover';
21
21
  export * from './components/ds-radio-group';
22
+ export * from './components/ds-segment-group';
22
23
  export * from './components/ds-select';
23
24
  export * from './components/ds-smart-tabs';
24
25
  export * from './components/ds-spinner';