@drivenets/design-system 0.2.0 → 0.3.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 (278) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/ds-alert-banner/ds-alert-banner.d.cts +5 -5
  3. package/dist/components/ds-alert-banner/ds-alert-banner.d.cts.map +1 -1
  4. package/dist/components/ds-alert-banner/ds-alert-banner.d.ts +5 -5
  5. package/dist/components/ds-alert-banner/ds-alert-banner.types.d.cts.map +1 -1
  6. package/dist/components/ds-button/ds-button.d.cts +2 -2
  7. package/dist/components/ds-button/ds-button.d.ts +2 -2
  8. package/dist/components/ds-button/ds-button.d.ts.map +1 -1
  9. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.cjs +23 -24
  10. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js +23 -24
  11. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js.map +1 -1
  12. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.cjs +24 -25
  13. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js +24 -25
  14. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js.map +1 -1
  15. package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.cjs +1 -0
  16. package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.js +1 -0
  17. package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.js.map +1 -1
  18. package/dist/components/ds-confirmation/ds-confirmation.d.cts +8 -8
  19. package/dist/components/ds-confirmation/ds-confirmation.d.ts +8 -8
  20. package/dist/components/ds-date-input/ds-date-input.d.cts +2 -2
  21. package/dist/components/ds-date-input/ds-date-input.d.cts.map +1 -1
  22. package/dist/components/ds-date-input/ds-date-input.d.ts +2 -2
  23. package/dist/components/ds-date-input/ds-date-input.module.cjs +22 -22
  24. package/dist/components/ds-date-input/ds-date-input.module.js +22 -22
  25. package/dist/components/ds-date-input/ds-date-input.module.js.map +1 -1
  26. package/dist/components/ds-date-input/ds-date-input.utils.cjs +9 -2
  27. package/dist/components/ds-date-input/ds-date-input.utils.js +9 -2
  28. package/dist/components/ds-date-input/ds-date-input.utils.js.map +1 -1
  29. package/dist/components/ds-drawer/ds-drawer.cjs +3 -3
  30. package/dist/components/ds-drawer/ds-drawer.d.cts +9 -9
  31. package/dist/components/ds-drawer/ds-drawer.d.cts.map +1 -1
  32. package/dist/components/ds-drawer/ds-drawer.d.ts +9 -9
  33. package/dist/components/ds-drawer/ds-drawer.d.ts.map +1 -1
  34. package/dist/components/ds-drawer/ds-drawer.js +3 -3
  35. package/dist/components/ds-drawer/ds-drawer.js.map +1 -1
  36. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts +1 -1
  37. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts.map +1 -1
  38. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts +1 -1
  39. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts.map +1 -1
  40. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.cts +2 -2
  41. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.ts +2 -2
  42. package/dist/components/ds-file-upload/utils/format-file-size.cjs +1 -1
  43. package/dist/components/ds-file-upload/utils/format-file-size.js +1 -1
  44. package/dist/components/ds-file-upload/utils/format-file-size.js.map +1 -1
  45. package/dist/components/ds-form-control/ds-form-control.cjs +2 -5
  46. package/dist/components/ds-form-control/ds-form-control.d.cts +8 -8
  47. package/dist/components/ds-form-control/ds-form-control.js +2 -5
  48. package/dist/components/ds-form-control/ds-form-control.js.map +1 -1
  49. package/dist/components/ds-loader/ds-loader.cjs +60 -0
  50. package/dist/components/ds-loader/ds-loader.d.cts +15 -0
  51. package/dist/components/ds-loader/ds-loader.d.cts.map +1 -0
  52. package/dist/components/ds-loader/ds-loader.d.ts +15 -0
  53. package/dist/components/ds-loader/ds-loader.d.ts.map +1 -0
  54. package/dist/components/ds-loader/ds-loader.js +59 -0
  55. package/dist/components/ds-loader/ds-loader.js.map +1 -0
  56. package/dist/components/ds-loader/ds-loader.module.cjs +15 -0
  57. package/dist/components/ds-loader/ds-loader.module.js +15 -0
  58. package/dist/components/ds-loader/ds-loader.module.js.map +1 -0
  59. package/dist/components/ds-loader/ds-loader.types.cjs +6 -0
  60. package/dist/components/ds-loader/ds-loader.types.d.cts +27 -0
  61. package/dist/components/ds-loader/ds-loader.types.d.cts.map +1 -0
  62. package/dist/components/ds-loader/ds-loader.types.d.ts +27 -0
  63. package/dist/components/ds-loader/ds-loader.types.d.ts.map +1 -0
  64. package/dist/components/ds-loader/ds-loader.types.js +6 -0
  65. package/dist/components/ds-loader/ds-loader.types.js.map +1 -0
  66. package/dist/components/ds-loader/index.cjs +2 -0
  67. package/dist/components/ds-loader/index.d.ts +2 -0
  68. package/dist/components/ds-loader/index.js +2 -0
  69. package/dist/components/ds-loader/pulsing-icon.cjs +37 -0
  70. package/dist/components/ds-loader/pulsing-icon.js +37 -0
  71. package/dist/components/ds-loader/pulsing-icon.js.map +1 -0
  72. package/dist/components/ds-loader/spinner-icon.cjs +74 -0
  73. package/dist/components/ds-loader/spinner-icon.js +74 -0
  74. package/dist/components/ds-loader/spinner-icon.js.map +1 -0
  75. package/dist/components/ds-modal/ds-modal.cjs +2 -2
  76. package/dist/components/ds-modal/ds-modal.d.cts +8 -8
  77. package/dist/components/ds-modal/ds-modal.d.cts.map +1 -1
  78. package/dist/components/ds-modal/ds-modal.d.ts +8 -8
  79. package/dist/components/ds-modal/ds-modal.d.ts.map +1 -1
  80. package/dist/components/ds-modal/ds-modal.js +2 -2
  81. package/dist/components/ds-modal/ds-modal.js.map +1 -1
  82. package/dist/components/ds-panel/ds-panel.d.cts +2 -2
  83. package/dist/components/ds-panel/ds-panel.d.ts +2 -2
  84. package/dist/components/ds-select/ds-select.cjs +1 -1
  85. package/dist/components/ds-select/ds-select.d.cts +2 -2
  86. package/dist/components/ds-select/ds-select.d.ts +2 -2
  87. package/dist/components/ds-select/ds-select.js +1 -1
  88. package/dist/components/ds-select/ds-select.js.map +1 -1
  89. package/dist/components/ds-skeleton/ds-skeleton-circle.cjs +59 -0
  90. package/dist/components/ds-skeleton/ds-skeleton-circle.d.cts +18 -0
  91. package/dist/components/ds-skeleton/ds-skeleton-circle.d.cts.map +1 -0
  92. package/dist/components/ds-skeleton/ds-skeleton-circle.d.ts +18 -0
  93. package/dist/components/ds-skeleton/ds-skeleton-circle.d.ts.map +1 -0
  94. package/dist/components/ds-skeleton/ds-skeleton-circle.js +58 -0
  95. package/dist/components/ds-skeleton/ds-skeleton-circle.js.map +1 -0
  96. package/dist/components/ds-skeleton/ds-skeleton-rect.cjs +61 -0
  97. package/dist/components/ds-skeleton/ds-skeleton-rect.d.cts +18 -0
  98. package/dist/components/ds-skeleton/ds-skeleton-rect.d.cts.map +1 -0
  99. package/dist/components/ds-skeleton/ds-skeleton-rect.d.ts +18 -0
  100. package/dist/components/ds-skeleton/ds-skeleton-rect.d.ts.map +1 -0
  101. package/dist/components/ds-skeleton/ds-skeleton-rect.js +60 -0
  102. package/dist/components/ds-skeleton/ds-skeleton-rect.js.map +1 -0
  103. package/dist/components/ds-skeleton/ds-skeleton-text.cjs +91 -0
  104. package/dist/components/ds-skeleton/ds-skeleton-text.d.cts +21 -0
  105. package/dist/components/ds-skeleton/ds-skeleton-text.d.cts.map +1 -0
  106. package/dist/components/ds-skeleton/ds-skeleton-text.d.ts +21 -0
  107. package/dist/components/ds-skeleton/ds-skeleton-text.d.ts.map +1 -0
  108. package/dist/components/ds-skeleton/ds-skeleton-text.js +90 -0
  109. package/dist/components/ds-skeleton/ds-skeleton-text.js.map +1 -0
  110. package/dist/components/ds-skeleton/ds-skeleton.cjs +13 -0
  111. package/dist/components/ds-skeleton/ds-skeleton.config.cjs +62 -0
  112. package/dist/components/ds-skeleton/ds-skeleton.config.js +59 -0
  113. package/dist/components/ds-skeleton/ds-skeleton.config.js.map +1 -0
  114. package/dist/components/ds-skeleton/ds-skeleton.d.cts +32 -0
  115. package/dist/components/ds-skeleton/ds-skeleton.d.cts.map +1 -0
  116. package/dist/components/ds-skeleton/ds-skeleton.d.ts +32 -0
  117. package/dist/components/ds-skeleton/ds-skeleton.d.ts.map +1 -0
  118. package/dist/components/ds-skeleton/ds-skeleton.js +14 -0
  119. package/dist/components/ds-skeleton/ds-skeleton.js.map +1 -0
  120. package/dist/components/ds-skeleton/ds-skeleton.module.cjs +15 -0
  121. package/dist/components/ds-skeleton/ds-skeleton.module.js +15 -0
  122. package/dist/components/ds-skeleton/ds-skeleton.module.js.map +1 -0
  123. package/dist/components/ds-skeleton/ds-skeleton.types.cjs +8 -0
  124. package/dist/components/ds-skeleton/ds-skeleton.types.d.cts +91 -0
  125. package/dist/components/ds-skeleton/ds-skeleton.types.d.cts.map +1 -0
  126. package/dist/components/ds-skeleton/ds-skeleton.types.d.ts +93 -0
  127. package/dist/components/ds-skeleton/ds-skeleton.types.d.ts.map +1 -0
  128. package/dist/components/ds-skeleton/ds-skeleton.types.js +7 -0
  129. package/dist/components/ds-skeleton/ds-skeleton.types.js.map +1 -0
  130. package/dist/components/ds-skeleton/index.cjs +5 -0
  131. package/dist/components/ds-skeleton/index.d.ts +5 -0
  132. package/dist/components/ds-skeleton/index.js +5 -0
  133. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.cts +2 -2
  134. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts +2 -2
  135. package/dist/components/ds-spinner/ds-spinner.cjs +43 -45
  136. package/dist/components/ds-spinner/ds-spinner.js +43 -45
  137. package/dist/components/ds-spinner/ds-spinner.js.map +1 -1
  138. package/dist/components/ds-stepper/components/ds-step-content.d.cts +2 -2
  139. package/dist/components/ds-stepper/components/ds-step-content.d.ts +2 -2
  140. package/dist/components/ds-stepper/components/ds-step-next-button.d.cts +2 -2
  141. package/dist/components/ds-stepper/components/ds-step-next-button.d.ts +2 -2
  142. package/dist/components/ds-stepper/components/ds-step.d.cts +2 -2
  143. package/dist/components/ds-stepper/components/ds-step.d.ts +2 -2
  144. package/dist/components/ds-stepper/ds-stepper.d.cts +2 -2
  145. package/dist/components/ds-stepper/ds-stepper.d.ts +2 -2
  146. package/dist/components/ds-table/components/core-table/core-table.cjs +82 -185
  147. package/dist/components/ds-table/components/core-table/core-table.js +82 -185
  148. package/dist/components/ds-table/components/core-table/core-table.js.map +1 -1
  149. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.cjs +61 -72
  150. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js +61 -72
  151. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js.map +1 -1
  152. package/dist/components/ds-table/components/ds-table-row/ds-table-row.cjs +80 -81
  153. package/dist/components/ds-table/components/ds-table-row/ds-table-row.js +80 -81
  154. package/dist/components/ds-table/components/ds-table-row/ds-table-row.js.map +1 -1
  155. package/dist/components/ds-table/ds-table.cjs +3 -3
  156. package/dist/components/ds-table/ds-table.d.cts +2 -3
  157. package/dist/components/ds-table/ds-table.d.cts.map +1 -1
  158. package/dist/components/ds-table/ds-table.d.ts +2 -3
  159. package/dist/components/ds-table/ds-table.d.ts.map +1 -1
  160. package/dist/components/ds-table/ds-table.js +3 -3
  161. package/dist/components/ds-table/ds-table.js.map +1 -1
  162. package/dist/components/ds-table/ds-table.types.d.cts +0 -4
  163. package/dist/components/ds-table/ds-table.types.d.cts.map +1 -1
  164. package/dist/components/ds-table/ds-table.types.d.ts +0 -4
  165. package/dist/components/ds-table/ds-table.types.d.ts.map +1 -1
  166. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.cjs +7 -4
  167. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js +7 -4
  168. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js.map +1 -1
  169. package/dist/components/ds-table/filters/hooks/use-table-filters.cjs +94 -87
  170. package/dist/components/ds-table/filters/hooks/use-table-filters.js +94 -87
  171. package/dist/components/ds-table/filters/hooks/use-table-filters.js.map +1 -1
  172. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.cjs +37 -0
  173. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.js +36 -0
  174. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.js.map +1 -0
  175. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.cjs +9 -0
  176. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.js +9 -0
  177. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.js.map +1 -0
  178. package/dist/components/ds-tabs/components/ds-tabs-content/index.cjs +1 -0
  179. package/dist/components/ds-tabs/components/ds-tabs-content/index.js +1 -0
  180. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.cjs +6 -0
  181. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.js +6 -0
  182. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.js.map +1 -0
  183. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.cjs +41 -0
  184. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.js +40 -0
  185. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.js.map +1 -0
  186. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.cjs +6 -0
  187. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.js +6 -0
  188. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.js.map +1 -0
  189. package/dist/components/ds-tabs/components/ds-tabs-list/index.cjs +1 -0
  190. package/dist/components/ds-tabs/components/ds-tabs-list/index.js +1 -0
  191. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.cjs +178 -0
  192. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.js +177 -0
  193. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.js.map +1 -0
  194. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.cjs +15 -0
  195. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.js +15 -0
  196. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.js.map +1 -0
  197. package/dist/components/ds-tabs/components/ds-tabs-tab/index.cjs +1 -0
  198. package/dist/components/ds-tabs/components/ds-tabs-tab/index.js +1 -0
  199. package/dist/components/ds-tabs/ds-tabs.cjs +71 -0
  200. package/dist/components/ds-tabs/ds-tabs.d.cts +43 -0
  201. package/dist/components/ds-tabs/ds-tabs.d.cts.map +1 -0
  202. package/dist/components/ds-tabs/ds-tabs.d.ts +43 -0
  203. package/dist/components/ds-tabs/ds-tabs.d.ts.map +1 -0
  204. package/dist/components/ds-tabs/ds-tabs.js +70 -0
  205. package/dist/components/ds-tabs/ds-tabs.js.map +1 -0
  206. package/dist/components/ds-tabs/ds-tabs.module.cjs +6 -0
  207. package/dist/components/ds-tabs/ds-tabs.module.js +6 -0
  208. package/dist/components/ds-tabs/ds-tabs.module.js.map +1 -0
  209. package/dist/components/ds-tabs/ds-tabs.types.d.cts +91 -0
  210. package/dist/components/ds-tabs/ds-tabs.types.d.cts.map +1 -0
  211. package/dist/components/ds-tabs/ds-tabs.types.d.ts +92 -0
  212. package/dist/components/ds-tabs/ds-tabs.types.d.ts.map +1 -0
  213. package/dist/components/ds-tabs/index.cjs +1 -0
  214. package/dist/components/ds-tabs/index.d.ts +2 -0
  215. package/dist/components/ds-tabs/index.js +1 -0
  216. package/dist/components/ds-tag/ds-tag.d.cts +2 -2
  217. package/dist/components/ds-tag/ds-tag.d.ts +2 -2
  218. package/dist/components/ds-tag-filter/ds-tag-filter.d.cts +2 -2
  219. package/dist/components/ds-tag-filter/ds-tag-filter.d.ts +2 -2
  220. package/dist/components/ds-toggle/ds-toggle.d.cts +2 -2
  221. package/dist/components/ds-toggle/ds-toggle.d.ts +2 -2
  222. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.cts +5 -5
  223. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.ts +5 -5
  224. package/dist/index.cjs +20 -0
  225. package/dist/index.d.cts +12 -3
  226. package/dist/index.d.ts +16 -4
  227. package/dist/index.js +12 -1
  228. package/dist/index.min.css +1 -1
  229. package/package.json +5 -3
  230. package/src/components/ds-button/versions/ds-button-legacy/ds-button-legacy.tsx +1 -7
  231. package/src/components/ds-button/versions/ds-button-new/ds-button-new.tsx +4 -2
  232. package/src/components/ds-chip-group/hooks/use-chip-row-calculation.ts +5 -0
  233. package/src/components/ds-date-input/ds-date-input.module.scss +1 -0
  234. package/src/components/ds-date-input/ds-date-input.utils.ts +16 -2
  235. package/src/components/ds-drawer/ds-drawer.tsx +4 -1
  236. package/src/components/ds-dropdown-menu/ds-dropdown-menu.types.tsx +4 -1
  237. package/src/components/ds-file-upload/utils/format-file-size.ts +1 -1
  238. package/src/components/ds-form-control/ds-form-control.tsx +9 -2
  239. package/src/components/ds-loader/ds-loader.module.scss +57 -0
  240. package/src/components/ds-loader/ds-loader.tsx +18 -0
  241. package/src/components/ds-loader/ds-loader.types.ts +24 -0
  242. package/src/components/ds-loader/index.ts +2 -0
  243. package/src/components/ds-loader/pulsing-icon.tsx +17 -0
  244. package/src/components/ds-loader/spinner-icon.tsx +37 -0
  245. package/src/components/ds-modal/ds-modal.tsx +7 -1
  246. package/src/components/ds-select/ds-select.tsx +1 -1
  247. package/src/components/ds-skeleton/ds-skeleton-circle.tsx +29 -0
  248. package/src/components/ds-skeleton/ds-skeleton-rect.tsx +36 -0
  249. package/src/components/ds-skeleton/ds-skeleton-text.tsx +49 -0
  250. package/src/components/ds-skeleton/ds-skeleton.config.ts +68 -0
  251. package/src/components/ds-skeleton/ds-skeleton.module.scss +72 -0
  252. package/src/components/ds-skeleton/ds-skeleton.tsx +9 -0
  253. package/src/components/ds-skeleton/ds-skeleton.types.ts +92 -0
  254. package/src/components/ds-skeleton/index.ts +5 -0
  255. package/src/components/ds-spinner/ds-spinner.tsx +1 -1
  256. package/src/components/ds-table/components/core-table/core-table.tsx +16 -16
  257. package/src/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.tsx +10 -13
  258. package/src/components/ds-table/components/ds-table-row/ds-table-row.tsx +0 -2
  259. package/src/components/ds-table/ds-table.tsx +6 -5
  260. package/src/components/ds-table/ds-table.types.ts +0 -5
  261. package/src/components/ds-table/filters/adapters/create-dual-range-filter-adapter.tsx +2 -4
  262. package/src/components/ds-table/filters/hooks/use-table-filters.ts +10 -5
  263. package/src/components/ds-table/utils/story-data-generator.ts +7 -7
  264. package/src/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.scss +18 -0
  265. package/src/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.tsx +12 -0
  266. package/src/components/ds-tabs/components/ds-tabs-content/index.ts +1 -0
  267. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.scss +31 -0
  268. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.scss +27 -0
  269. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.tsx +14 -0
  270. package/src/components/ds-tabs/components/ds-tabs-list/index.ts +1 -0
  271. package/src/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.scss +242 -0
  272. package/src/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.tsx +130 -0
  273. package/src/components/ds-tabs/components/ds-tabs-tab/index.ts +1 -0
  274. package/src/components/ds-tabs/ds-tabs.module.scss +14 -0
  275. package/src/components/ds-tabs/ds-tabs.tsx +46 -0
  276. package/src/components/ds-tabs/ds-tabs.types.ts +97 -0
  277. package/src/components/ds-tabs/index.ts +2 -0
  278. package/src/index.ts +3 -0
@@ -0,0 +1,92 @@
1
+ import type { CSSProperties, Ref } from 'react';
2
+ import type { DsAvatarSize } from '../ds-avatar';
3
+ import type { SemanticVariant } from '../ds-typography';
4
+
5
+ export const skeletonColorVariants = ['gray', 'blue'] as const;
6
+ export type SkeletonColorVariant = (typeof skeletonColorVariants)[number];
7
+
8
+ export const skeletonRadiusVariants = ['default', 'round'] as const;
9
+ export type SkeletonRadiusVariant = (typeof skeletonRadiusVariants)[number];
10
+
11
+ /**
12
+ * Shared base props for all skeleton components
13
+ */
14
+ export interface DsSkeletonBaseProps {
15
+ /**
16
+ * Color variant of the skeleton
17
+ * @default 'gray'
18
+ */
19
+ color?: SkeletonColorVariant;
20
+ /**
21
+ * Additional CSS class names
22
+ */
23
+ className?: string;
24
+ /**
25
+ * Additional inline styles
26
+ */
27
+ style?: CSSProperties;
28
+ /**
29
+ * Ref to the skeleton element
30
+ */
31
+ ref?: Ref<HTMLSpanElement>;
32
+ }
33
+
34
+ /**
35
+ * Props for DsSkeleton.Text component
36
+ * Typography-based text skeleton with configurable lines
37
+ */
38
+ export interface DsSkeletonTextProps extends DsSkeletonBaseProps {
39
+ /**
40
+ * Typography variant - determines the height of the skeleton
41
+ * @default 'body-sm-reg'
42
+ */
43
+ typographyVariant?: SemanticVariant;
44
+ /**
45
+ * Number of lines to render
46
+ * @default 1
47
+ */
48
+ lines?: number;
49
+ /**
50
+ * Width of skeleton. Last line will have varied width if not specified.
51
+ * Can be a number (px) or string ('50%', '200px')
52
+ * @default '100%' (last line varies between 40-80%)
53
+ */
54
+ width?: string | number;
55
+ /**
56
+ * Border radius: 'default' (4px), 'round' (pill-shaped), or custom px value
57
+ * @default 'default'
58
+ */
59
+ radius?: SkeletonRadiusVariant | number;
60
+ }
61
+
62
+ /**
63
+ * Props for DsSkeleton.Circle component
64
+ * Circular skeleton for avatars and icons
65
+ */
66
+ export interface DsSkeletonCircleProps extends DsSkeletonBaseProps {
67
+ /**
68
+ * Size of the circle - matches DsAvatar sizes or custom pixel value
69
+ * @default 'regular'
70
+ */
71
+ size?: DsAvatarSize | number;
72
+ }
73
+
74
+ /**
75
+ * Props for DsSkeleton.Rect component
76
+ * Rectangular skeleton for buttons, images, and custom shapes
77
+ */
78
+ export interface DsSkeletonRectProps extends DsSkeletonBaseProps {
79
+ /**
80
+ * Width of rectangle. Can be number (px) or string ('50%', '200px')
81
+ */
82
+ width: string | number;
83
+ /**
84
+ * Height of rectangle. Can be number (px) or string ('50%', '200px')
85
+ */
86
+ height: string | number;
87
+ /**
88
+ * Border radius: 'default' (4px), 'round' (pill-shaped), or custom px value
89
+ * @default 'default'
90
+ */
91
+ radius?: SkeletonRadiusVariant | number;
92
+ }
@@ -0,0 +1,5 @@
1
+ export * from './ds-skeleton.types';
2
+ export { default as DsSkeleton } from './ds-skeleton';
3
+ export { default as DsSkeletonText } from './ds-skeleton-text';
4
+ export { default as DsSkeletonCircle } from './ds-skeleton-circle';
5
+ export { default as DsSkeletonRect } from './ds-skeleton-rect';
@@ -26,7 +26,7 @@ const DsSpinner: React.FC<DsSpinnerProps> = ({ size = 'medium', className, style
26
26
  const strokeDasharray = `${String(0.25 * circumference)} ${String(circumference)}`;
27
27
 
28
28
  return (
29
- <div className={classNames(styles.spinnerContainer, styles[size], className)} style={style} {...props}>
29
+ <div className={classNames(styles.spinnerContainer, className)} style={style} {...props}>
30
30
  <svg
31
31
  className={classNames(styles.progressCircle, styles.spin)}
32
32
  width={actualSize}
@@ -4,8 +4,8 @@ import styles from './core-table.module.scss';
4
4
 
5
5
  type TableProps = HTMLAttributes<HTMLTableElement> & { ref?: Ref<HTMLTableElement> };
6
6
 
7
- function Table({ className, ref, ...props }: TableProps) {
8
- return <table ref={ref} className={classnames(styles.table, className)} {...props} />;
7
+ function Table({ className, ...props }: TableProps) {
8
+ return <table className={classnames(styles.table, className)} {...props} />;
9
9
  }
10
10
 
11
11
  Table.displayName = 'Table';
@@ -14,8 +14,8 @@ type TableHeaderProps = HTMLAttributes<HTMLTableSectionElement> & {
14
14
  ref?: Ref<HTMLTableSectionElement>;
15
15
  };
16
16
 
17
- function TableHeader({ className, ref, ...props }: TableHeaderProps) {
18
- return <thead ref={ref} className={classnames(styles.tableHeader, className)} {...props} />;
17
+ function TableHeader(props: TableHeaderProps) {
18
+ return <thead {...props} />;
19
19
  }
20
20
 
21
21
  TableHeader.displayName = 'TableHeader';
@@ -24,8 +24,8 @@ type TableBodyProps = HTMLAttributes<HTMLTableSectionElement> & {
24
24
  ref?: Ref<HTMLTableSectionElement>;
25
25
  };
26
26
 
27
- function TableBody({ className, ref, ...props }: TableBodyProps) {
28
- return <tbody ref={ref} className={classnames(styles.tableBody, className)} {...props} />;
27
+ function TableBody(props: TableBodyProps) {
28
+ return <tbody {...props} />;
29
29
  }
30
30
 
31
31
  TableBody.displayName = 'TableBody';
@@ -34,8 +34,8 @@ type TableFooterProps = HTMLAttributes<HTMLTableSectionElement> & {
34
34
  ref?: Ref<HTMLTableSectionElement>;
35
35
  };
36
36
 
37
- function TableFooter({ className, ref, ...props }: TableFooterProps) {
38
- return <tfoot ref={ref} className={classnames(styles.tableFooter, className)} {...props} />;
37
+ function TableFooter({ className, ...props }: TableFooterProps) {
38
+ return <tfoot className={classnames(styles.tableFooter, className)} {...props} />;
39
39
  }
40
40
 
41
41
  TableFooter.displayName = 'TableFooter';
@@ -44,8 +44,8 @@ type TableRowProps = HTMLAttributes<HTMLTableRowElement> & {
44
44
  ref?: Ref<HTMLTableRowElement>;
45
45
  };
46
46
 
47
- function TableRow({ className, ref, ...props }: TableRowProps) {
48
- return <tr ref={ref} className={classnames(styles.tableRow, className)} {...props} />;
47
+ function TableRow(props: TableRowProps) {
48
+ return <tr {...props} />;
49
49
  }
50
50
 
51
51
  TableRow.displayName = 'TableRow';
@@ -54,8 +54,8 @@ type TableHeadProps = ThHTMLAttributes<HTMLTableCellElement> & {
54
54
  ref?: Ref<HTMLTableCellElement>;
55
55
  };
56
56
 
57
- function TableHead({ className, ref, ...props }: TableHeadProps) {
58
- return <th ref={ref} className={classnames(styles.tableHead, className)} {...props} />;
57
+ function TableHead({ className, ...props }: TableHeadProps) {
58
+ return <th className={classnames(styles.tableHead, className)} {...props} />;
59
59
  }
60
60
 
61
61
  TableHead.displayName = 'TableHead';
@@ -64,8 +64,8 @@ type TableCellProps = TdHTMLAttributes<HTMLTableCellElement> & {
64
64
  ref?: Ref<HTMLTableCellElement>;
65
65
  };
66
66
 
67
- function TableCell({ className, ref, ...props }: TableCellProps) {
68
- return <td ref={ref} className={classnames(styles.tableCell, className)} {...props} />;
67
+ function TableCell({ className, ...props }: TableCellProps) {
68
+ return <td className={classnames(styles.tableCell, className)} {...props} />;
69
69
  }
70
70
 
71
71
  TableCell.displayName = 'TableCell';
@@ -74,8 +74,8 @@ type TableCaptionProps = HTMLAttributes<HTMLTableCaptionElement> & {
74
74
  ref?: Ref<HTMLTableCaptionElement>;
75
75
  };
76
76
 
77
- function TableCaption({ className, ref, ...props }: TableCaptionProps) {
78
- return <caption ref={ref} className={classnames(styles.tableCaption, className)} {...props} />;
77
+ function TableCaption({ className, ...props }: TableCaptionProps) {
78
+ return <caption className={classnames(styles.tableCaption, className)} {...props} />;
79
79
  }
80
80
 
81
81
  TableCaption.displayName = 'TableCaption';
@@ -5,6 +5,7 @@ import { DsButton } from '../../../ds-button';
5
5
  import { DsIcon } from '../../../ds-icon';
6
6
  import styles from './ds-table-bulk-actions.module.scss';
7
7
  import type { BulkActionsProps } from './ds-table-bulk-actions.types';
8
+ import { DsTypography } from '../../../ds-typography';
8
9
 
9
10
  const DsTableBulkActions: React.FC<BulkActionsProps> = ({ numSelectedRows, actions, onClearSelection }) => {
10
11
  const [isRendered, setIsRendered] = useState(false);
@@ -31,24 +32,21 @@ const DsTableBulkActions: React.FC<BulkActionsProps> = ({ numSelectedRows, actio
31
32
  return (
32
33
  <div className={classnames(styles.bulkActionsContainer, animationClass)}>
33
34
  <div className={styles.selectedCountContainer}>
34
- <h3 className={classnames(styles.selectedCountBadge, styles.bold)}>{numSelectedRows}</h3>
35
+ <DsTypography variant="heading1" className={styles.selectedCountBadge}>
36
+ {numSelectedRows}
37
+ </DsTypography>
35
38
  </div>
36
39
  <div className={styles.bulkActionsContent}>
37
- <span className={styles.bulkActionsInfo}>items selected</span>
40
+ <DsTypography variant="body-md-semi-bold" className={styles.bulkActionsInfo}>
41
+ Items selected
42
+ </DsTypography>
38
43
 
39
44
  <div className={styles.bulkActionsActions}>
40
45
  {actions.map((action, index) => (
41
- <DsButton
42
- key={index}
43
- variant="borderless"
44
- size="small"
45
- className={styles.actionButton}
46
- contentClassName={styles.actionButtonContent}
47
- onClick={action.onClick}
48
- >
46
+ <button key={index} type="button" className={styles.actionButton} onClick={action.onClick}>
49
47
  <DsIcon icon={action.icon} />
50
- <span className={(styles['p-s'], styles.medium)}>{action.label}</span>
51
- </DsButton>
48
+ <DsTypography variant="body-xs-md">{action.label}</DsTypography>
49
+ </button>
52
50
  ))}
53
51
  </div>
54
52
 
@@ -60,7 +58,6 @@ const DsTableBulkActions: React.FC<BulkActionsProps> = ({ numSelectedRows, actio
60
58
  onClick={onClearSelection}
61
59
  >
62
60
  <DsIcon icon="close" />
63
- <span className={(styles['p-s'], styles.medium)}>Esc</span>
64
61
  </DsButton>
65
62
  </div>
66
63
  </div>
@@ -50,7 +50,6 @@ const DsTableRow = <TData,>({ ref, row, virtualRow }: DsTableRowProps<TData>) =>
50
50
  renderExpandedRow,
51
51
  virtualized,
52
52
  bordered,
53
- highlightOnHover,
54
53
  rowSize,
55
54
  toggleRowExpanded,
56
55
  primaryRowActions,
@@ -100,7 +99,6 @@ const DsTableRow = <TData,>({ ref, row, virtualRow }: DsTableRowProps<TData>) =>
100
99
  },
101
100
  virtualized && styles.virtualizedRow,
102
101
  onRowClick && styles.clickableRow,
103
- highlightOnHover && styles.highlightHoverRow,
104
102
  !bordered && styles.rowNoBorder,
105
103
  isExpanded && styles.expanded,
106
104
  )}
@@ -44,7 +44,6 @@ const DsTable = <TData extends { id: string }, TValue>({
44
44
  stickyHeader = true,
45
45
  bordered = true,
46
46
  fullWidth = true,
47
- highlightOnHover = true,
48
47
  rowSize = 'medium',
49
48
  expandable = false,
50
49
  renderExpandedRow,
@@ -215,16 +214,13 @@ const DsTable = <TData extends { id: string }, TValue>({
215
214
 
216
215
  const selectedRows = Object.entries(rowSelection)
217
216
  .filter(([, selected]) => selected)
218
- // This is not necessarily a redundant condition. It depends on `noUncheckedIndexedAccess`.
219
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
220
217
  .map(([key]) => rowsById[key]?.original)
221
- .filter(Boolean);
218
+ .filter((v) => !!v);
222
219
 
223
220
  const contextValue: DsTableContextType<TData, TValue> = {
224
221
  stickyHeader,
225
222
  bordered,
226
223
  fullWidth,
227
- highlightOnHover,
228
224
  rowSize,
229
225
  expandable,
230
226
  selectable,
@@ -279,6 +275,11 @@ const DsTable = <TData extends { id: string }, TValue>({
279
275
  rowVirtualizer.getVirtualItems().length ? (
280
276
  rowVirtualizer.getVirtualItems().map((virtualRow: VirtualItem) => {
281
277
  const row = rows[virtualRow.index];
278
+
279
+ if (!row) {
280
+ return null;
281
+ }
282
+
282
283
  return <DsTableRow key={row.id} row={row} virtualRow={virtualRow} />;
283
284
  })
284
285
  ) : (
@@ -235,11 +235,6 @@ export interface DsDataTableProps<TData, TValue> {
235
235
  */
236
236
  fullWidth?: boolean;
237
237
 
238
- /**
239
- * Whether the table has highlight on hover
240
- */
241
- highlightOnHover?: boolean;
242
-
243
238
  /**
244
239
  * Row size variant (small: 36px, medium: 48px, large: 64px)
245
240
  * @default 'medium'
@@ -74,9 +74,9 @@ export function createDualRangeFilterAdapter<TData>(
74
74
  // Check each field's range
75
75
  for (const [fieldKey, range] of Object.entries(filterValue)) {
76
76
  const hasFilter = range.from !== undefined || range.to !== undefined;
77
+ const fieldValue = rowValue[fieldKey];
77
78
 
78
- if (hasFilter) {
79
- const fieldValue = rowValue[fieldKey];
79
+ if (hasFilter && fieldValue !== undefined) {
80
80
  const matchesFrom = range.from === undefined || fieldValue >= range.from;
81
81
  const matchesTo = range.to === undefined || fieldValue <= range.to;
82
82
 
@@ -147,8 +147,6 @@ export function createDualRangeFilterAdapter<TData>(
147
147
  <RangeFilter
148
148
  key={fieldKey}
149
149
  label={fieldLabel}
150
- // This is not necessarily a redundant condition. It depends on `noUncheckedIndexedAccess`.
151
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
152
150
  value={value[fieldKey] || {}}
153
151
  onChange={(rangeValue) =>
154
152
  onChange({
@@ -91,11 +91,16 @@ export function useTableFilters<TData, TValue, TCellValue>(
91
91
  const [columnFilters, setColumnFilters] = useState<ColumnFilterState<TValue>[]>([]);
92
92
  const [filterChips, setFilterChips] = useState<ChipItem[]>([]);
93
93
 
94
+ const getValueByAdapterId = (adapterId: string) => {
95
+ // Should be safe to cast because it's being filled in the initialState
96
+ return filterState[adapterId] as TValue;
97
+ };
98
+
94
99
  // Generate filter nav items with counts (updates as user changes filters in modal)
95
100
  const filterNavItems: FilterNavItem[] = _filterAdapters.map((adapter) => ({
96
101
  id: adapter.id,
97
102
  label: adapter.label,
98
- count: adapter.getActiveFiltersCount(filterState[adapter.id]),
103
+ count: adapter.getActiveFiltersCount(getValueByAdapterId(adapter.id)),
99
104
  }));
100
105
 
101
106
  // Enhance column definitions with filter functions and renderers
@@ -131,7 +136,7 @@ export function useTableFilters<TData, TValue, TCellValue>(
131
136
  const chips: ChipItem[] = [];
132
137
 
133
138
  _filterAdapters.forEach((adapter) => {
134
- const value = filterState[adapter.id];
139
+ const value = getValueByAdapterId(adapter.id);
135
140
 
136
141
  if (adapter.getActiveFiltersCount(value) > 0) {
137
142
  filters.push({
@@ -170,13 +175,13 @@ export function useTableFilters<TData, TValue, TCellValue>(
170
175
  return;
171
176
  }
172
177
 
173
- const currentValue = filterState[filterKey];
178
+ const currentValue = getValueByAdapterId(filterKey);
174
179
  const newValue = adapter.fromChip(chip, currentValue);
175
180
 
176
181
  // Regenerate chips to check if this was the last one
177
182
  const chips: ChipItem[] = [];
178
183
  _filterAdapters.forEach((adapter) => {
179
- const value = adapter.id === filterKey ? newValue : filterState[adapter.id];
184
+ const value = adapter.id === filterKey ? newValue : getValueByAdapterId(adapter.id);
180
185
  const adapterChips = adapter.toChips(value);
181
186
  chips.push(...adapterChips);
182
187
  });
@@ -211,7 +216,7 @@ export function useTableFilters<TData, TValue, TCellValue>(
211
216
  return null;
212
217
  }
213
218
 
214
- const value = filterState[adapter.id];
219
+ const value = getValueByAdapterId(adapter.id);
215
220
  const onChange = (newValue: TValue) => updateFilter(adapter.id, newValue);
216
221
 
217
222
  return adapter.renderFilter(value, onChange);
@@ -43,23 +43,23 @@ export const generatePersonData = (
43
43
  const statuses: Status[] = ['single', 'relationship', 'complicated'];
44
44
 
45
45
  // Generate all data first for sorting
46
- const allData: Person[] = Array.from({ length: totalRows }).map((_, index) => {
46
+ const allData = Array.from({ length: totalRows }).map((_, index) => {
47
47
  const i = index + 1;
48
48
  return {
49
49
  id: i.toString(),
50
- firstName: firstNames[i % firstNames.length],
51
- lastName: lastNames[i % lastNames.length],
50
+ firstName: firstNames[i % firstNames.length] as string,
51
+ lastName: lastNames[i % lastNames.length] as string,
52
52
  age: 20 + (i % 50),
53
53
  visits: Math.floor(Math.random() * 500) + 1,
54
- status: statuses[i % statuses.length],
54
+ status: statuses[i % statuses.length] as Status,
55
55
  progress: Math.floor(Math.random() * 100) + 1,
56
- };
56
+ } satisfies Person;
57
57
  });
58
58
 
59
59
  // Apply sorting if provided
60
60
  const sortedData = [...allData];
61
- if (sorting.length) {
62
- const sort = sorting[0];
61
+ const sort = sorting[0];
62
+ if (sort) {
63
63
  const { id, desc } = sort;
64
64
  sortedData.sort((a, b) => {
65
65
  const aValue = a[id as keyof Person];
@@ -0,0 +1,18 @@
1
+ $animation-duration: 0.2s;
2
+ $animation-translate: -4px;
3
+
4
+ .tabContent {
5
+ padding: var(--spacing-standard) 0;
6
+ animation: fadeIn $animation-duration ease-in;
7
+ }
8
+
9
+ @keyframes fadeIn {
10
+ from {
11
+ opacity: 0;
12
+ transform: translateY($animation-translate);
13
+ }
14
+ to {
15
+ opacity: 1;
16
+ transform: translateY(0);
17
+ }
18
+ }
@@ -0,0 +1,12 @@
1
+ import { Tabs } from '@ark-ui/react/tabs';
2
+ import classNames from 'classnames';
3
+ import type { DsTabsContentProps } from '../../ds-tabs.types';
4
+ import styles from './ds-tabs-content.module.scss';
5
+
6
+ export const DsTabsContent = ({ value, className, style, children }: DsTabsContentProps) => {
7
+ return (
8
+ <Tabs.Content value={value} className={classNames(styles.tabContent, className)} style={style}>
9
+ {children}
10
+ </Tabs.Content>
11
+ );
12
+ };
@@ -0,0 +1 @@
1
+ export { DsTabsContent } from './ds-tabs-content';
@@ -0,0 +1,31 @@
1
+ $indicator-border-radius: 4px;
2
+ $indicator-thickness: 2px;
3
+ $indicator-offset: -4px;
4
+ $transition-duration: 0.2s;
5
+
6
+ .indicator {
7
+ position: absolute;
8
+ background: var(--color-background-selected);
9
+ transition:
10
+ left $transition-duration ease-in-out,
11
+ top $transition-duration ease-in-out,
12
+ width $transition-duration ease-in-out,
13
+ height $transition-duration ease-in-out,
14
+ opacity $transition-duration ease-in-out;
15
+ border-radius: $indicator-border-radius;
16
+ pointer-events: none;
17
+
18
+ [data-orientation='horizontal'] & {
19
+ bottom: $indicator-offset;
20
+ height: $indicator-thickness;
21
+ left: var(--left);
22
+ width: var(--width);
23
+ }
24
+
25
+ [data-orientation='vertical'] & {
26
+ left: 0;
27
+ width: $indicator-thickness;
28
+ top: var(--top);
29
+ height: var(--height);
30
+ }
31
+ }
@@ -0,0 +1,27 @@
1
+ $border-width: 1px;
2
+
3
+ .tabList {
4
+ display: flex;
5
+ position: relative;
6
+
7
+ [data-orientation='horizontal'] & {
8
+ flex-direction: row;
9
+ align-items: center;
10
+ border-bottom: $border-width solid var(--color-border-main);
11
+ gap: var(--spacing-xs);
12
+ }
13
+
14
+ [data-orientation='vertical'] & {
15
+ flex-direction: column;
16
+ align-items: stretch;
17
+ border-right: $border-width solid var(--color-border-main);
18
+ }
19
+
20
+ [data-orientation='vertical'][data-size='medium'] & {
21
+ gap: var(--spacing-xs);
22
+ }
23
+
24
+ [data-orientation='vertical'][data-size='small'] & {
25
+ gap: var(--spacing-3xs);
26
+ }
27
+ }
@@ -0,0 +1,14 @@
1
+ import { Tabs } from '@ark-ui/react/tabs';
2
+ import classNames from 'classnames';
3
+ import type { DsTabsListProps } from '../../ds-tabs.types';
4
+ import styles from './ds-tabs-list.module.scss';
5
+ import indicatorStyles from './ds-tabs-indicator.module.scss';
6
+
7
+ export const DsTabsList = ({ className, style, children }: DsTabsListProps) => {
8
+ return (
9
+ <Tabs.List className={classNames(styles.tabList, className)} style={style}>
10
+ {children}
11
+ <Tabs.Indicator className={indicatorStyles.indicator} />
12
+ </Tabs.List>
13
+ );
14
+ };
@@ -0,0 +1 @@
1
+ export { DsTabsList } from './ds-tabs-list';