@drivenets/design-system 0.1.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 (399) hide show
  1. package/CHANGELOG.md +22 -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-avatar/ds-avatar.cjs +98 -0
  7. package/dist/components/ds-avatar/ds-avatar.d.cts +12 -0
  8. package/dist/components/ds-avatar/ds-avatar.d.cts.map +1 -0
  9. package/dist/components/ds-avatar/ds-avatar.d.ts +12 -0
  10. package/dist/components/ds-avatar/ds-avatar.d.ts.map +1 -0
  11. package/dist/components/ds-avatar/ds-avatar.js +97 -0
  12. package/dist/components/ds-avatar/ds-avatar.js.map +1 -0
  13. package/dist/components/ds-avatar/ds-avatar.module.cjs +17 -0
  14. package/dist/components/ds-avatar/ds-avatar.module.js +17 -0
  15. package/dist/components/ds-avatar/ds-avatar.module.js.map +1 -0
  16. package/dist/components/ds-avatar/ds-avatar.types.d.cts +44 -0
  17. package/dist/components/ds-avatar/ds-avatar.types.d.cts.map +1 -0
  18. package/dist/components/ds-avatar/ds-avatar.types.d.ts +44 -0
  19. package/dist/components/ds-avatar/ds-avatar.types.d.ts.map +1 -0
  20. package/dist/components/ds-avatar/index.cjs +1 -0
  21. package/dist/components/ds-avatar/index.d.ts +2 -0
  22. package/dist/components/ds-avatar/index.js +1 -0
  23. package/dist/components/ds-avatar-group/ds-avatar-group.cjs +93 -0
  24. package/dist/components/ds-avatar-group/ds-avatar-group.d.cts +12 -0
  25. package/dist/components/ds-avatar-group/ds-avatar-group.d.cts.map +1 -0
  26. package/dist/components/ds-avatar-group/ds-avatar-group.d.ts +12 -0
  27. package/dist/components/ds-avatar-group/ds-avatar-group.d.ts.map +1 -0
  28. package/dist/components/ds-avatar-group/ds-avatar-group.js +92 -0
  29. package/dist/components/ds-avatar-group/ds-avatar-group.js.map +1 -0
  30. package/dist/components/ds-avatar-group/ds-avatar-group.module.cjs +19 -0
  31. package/dist/components/ds-avatar-group/ds-avatar-group.module.js +19 -0
  32. package/dist/components/ds-avatar-group/ds-avatar-group.module.js.map +1 -0
  33. package/dist/components/ds-avatar-group/ds-avatar-group.types.d.cts +31 -0
  34. package/dist/components/ds-avatar-group/ds-avatar-group.types.d.cts.map +1 -0
  35. package/dist/components/ds-avatar-group/ds-avatar-group.types.d.ts +32 -0
  36. package/dist/components/ds-avatar-group/ds-avatar-group.types.d.ts.map +1 -0
  37. package/dist/components/ds-avatar-group/index.cjs +1 -0
  38. package/dist/components/ds-avatar-group/index.d.ts +2 -0
  39. package/dist/components/ds-avatar-group/index.js +1 -0
  40. package/dist/components/ds-button/ds-button.d.cts +2 -2
  41. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.cjs +23 -24
  42. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js +23 -24
  43. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js.map +1 -1
  44. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.cjs +24 -25
  45. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js +24 -25
  46. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js.map +1 -1
  47. package/dist/components/ds-chip/ds-chip.cjs +2 -1
  48. package/dist/components/ds-chip/ds-chip.d.cts +2 -1
  49. package/dist/components/ds-chip/ds-chip.d.cts.map +1 -1
  50. package/dist/components/ds-chip/ds-chip.d.ts +2 -1
  51. package/dist/components/ds-chip/ds-chip.d.ts.map +1 -1
  52. package/dist/components/ds-chip/ds-chip.js +2 -1
  53. package/dist/components/ds-chip/ds-chip.js.map +1 -1
  54. package/dist/components/ds-chip/ds-chip.types.d.cts +13 -0
  55. package/dist/components/ds-chip/ds-chip.types.d.cts.map +1 -1
  56. package/dist/components/ds-chip/ds-chip.types.d.ts +13 -0
  57. package/dist/components/ds-chip/ds-chip.types.d.ts.map +1 -1
  58. package/dist/components/ds-chip-group/ds-chip-group.cjs +2 -2
  59. package/dist/components/ds-chip-group/ds-chip-group.d.cts +2 -2
  60. package/dist/components/ds-chip-group/ds-chip-group.d.ts +2 -2
  61. package/dist/components/ds-chip-group/ds-chip-group.js +2 -2
  62. package/dist/components/ds-chip-group/ds-chip-group.js.map +1 -1
  63. package/dist/components/ds-chip-group/ds-chip-group.types.d.cts +9 -0
  64. package/dist/components/ds-chip-group/ds-chip-group.types.d.cts.map +1 -1
  65. package/dist/components/ds-chip-group/ds-chip-group.types.d.ts +9 -0
  66. package/dist/components/ds-chip-group/ds-chip-group.types.d.ts.map +1 -1
  67. package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.cjs +1 -0
  68. package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.js +1 -0
  69. package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.js.map +1 -1
  70. package/dist/components/ds-confirmation/ds-confirmation.d.cts +8 -8
  71. package/dist/components/ds-confirmation/ds-confirmation.d.ts +8 -8
  72. package/dist/components/ds-date-input/ds-date-input.d.cts +2 -2
  73. package/dist/components/ds-date-input/ds-date-input.d.ts +2 -2
  74. package/dist/components/ds-date-input/ds-date-input.js +2 -2
  75. package/dist/components/ds-date-input/ds-date-input.js.map +1 -1
  76. package/dist/components/ds-date-input/ds-date-input.module.cjs +22 -22
  77. package/dist/components/ds-date-input/ds-date-input.module.js +22 -22
  78. package/dist/components/ds-date-input/ds-date-input.module.js.map +1 -1
  79. package/dist/components/ds-date-input/ds-date-input.utils.cjs +9 -2
  80. package/dist/components/ds-date-input/ds-date-input.utils.js +9 -2
  81. package/dist/components/ds-date-input/ds-date-input.utils.js.map +1 -1
  82. package/dist/components/ds-drawer/ds-drawer.cjs +3 -3
  83. package/dist/components/ds-drawer/ds-drawer.d.cts +9 -9
  84. package/dist/components/ds-drawer/ds-drawer.d.cts.map +1 -1
  85. package/dist/components/ds-drawer/ds-drawer.d.ts +9 -9
  86. package/dist/components/ds-drawer/ds-drawer.d.ts.map +1 -1
  87. package/dist/components/ds-drawer/ds-drawer.js +5 -5
  88. package/dist/components/ds-drawer/ds-drawer.js.map +1 -1
  89. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js +3 -3
  90. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js.map +1 -1
  91. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts +1 -1
  92. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts.map +1 -1
  93. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts +1 -1
  94. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts.map +1 -1
  95. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.cts +2 -2
  96. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.ts +2 -2
  97. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.cjs +2 -2
  98. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.js +2 -2
  99. package/dist/components/ds-file-upload/utils/format-file-size.cjs +1 -1
  100. package/dist/components/ds-file-upload/utils/format-file-size.js +1 -1
  101. package/dist/components/ds-file-upload/utils/format-file-size.js.map +1 -1
  102. package/dist/components/ds-form-control/ds-form-control.cjs +2 -5
  103. package/dist/components/ds-form-control/ds-form-control.d.cts +8 -8
  104. package/dist/components/ds-form-control/ds-form-control.js +2 -5
  105. package/dist/components/ds-form-control/ds-form-control.js.map +1 -1
  106. package/dist/components/ds-loader/ds-loader.cjs +60 -0
  107. package/dist/components/ds-loader/ds-loader.d.cts +15 -0
  108. package/dist/components/ds-loader/ds-loader.d.cts.map +1 -0
  109. package/dist/components/ds-loader/ds-loader.d.ts +15 -0
  110. package/dist/components/ds-loader/ds-loader.d.ts.map +1 -0
  111. package/dist/components/ds-loader/ds-loader.js +59 -0
  112. package/dist/components/ds-loader/ds-loader.js.map +1 -0
  113. package/dist/components/ds-loader/ds-loader.module.cjs +15 -0
  114. package/dist/components/ds-loader/ds-loader.module.js +15 -0
  115. package/dist/components/ds-loader/ds-loader.module.js.map +1 -0
  116. package/dist/components/ds-loader/ds-loader.types.cjs +6 -0
  117. package/dist/components/ds-loader/ds-loader.types.d.cts +27 -0
  118. package/dist/components/ds-loader/ds-loader.types.d.cts.map +1 -0
  119. package/dist/components/ds-loader/ds-loader.types.d.ts +27 -0
  120. package/dist/components/ds-loader/ds-loader.types.d.ts.map +1 -0
  121. package/dist/components/ds-loader/ds-loader.types.js +6 -0
  122. package/dist/components/ds-loader/ds-loader.types.js.map +1 -0
  123. package/dist/components/ds-loader/index.cjs +2 -0
  124. package/dist/components/ds-loader/index.d.ts +2 -0
  125. package/dist/components/ds-loader/index.js +2 -0
  126. package/dist/components/ds-loader/pulsing-icon.cjs +37 -0
  127. package/dist/components/ds-loader/pulsing-icon.js +37 -0
  128. package/dist/components/ds-loader/pulsing-icon.js.map +1 -0
  129. package/dist/components/ds-loader/spinner-icon.cjs +74 -0
  130. package/dist/components/ds-loader/spinner-icon.js +74 -0
  131. package/dist/components/ds-loader/spinner-icon.js.map +1 -0
  132. package/dist/components/ds-modal/ds-modal.cjs +2 -2
  133. package/dist/components/ds-modal/ds-modal.d.cts +8 -8
  134. package/dist/components/ds-modal/ds-modal.d.cts.map +1 -1
  135. package/dist/components/ds-modal/ds-modal.d.ts +8 -8
  136. package/dist/components/ds-modal/ds-modal.d.ts.map +1 -1
  137. package/dist/components/ds-modal/ds-modal.js +2 -2
  138. package/dist/components/ds-modal/ds-modal.js.map +1 -1
  139. package/dist/components/ds-panel/ds-panel.d.cts +2 -2
  140. package/dist/components/ds-panel/ds-panel.d.ts +2 -2
  141. package/dist/components/ds-select/ds-select.cjs +1 -1
  142. package/dist/components/ds-select/ds-select.d.cts +2 -2
  143. package/dist/components/ds-select/ds-select.d.ts +2 -2
  144. package/dist/components/ds-select/ds-select.js +1 -1
  145. package/dist/components/ds-select/ds-select.js.map +1 -1
  146. package/dist/components/ds-skeleton/ds-skeleton-circle.cjs +59 -0
  147. package/dist/components/ds-skeleton/ds-skeleton-circle.d.cts +18 -0
  148. package/dist/components/ds-skeleton/ds-skeleton-circle.d.cts.map +1 -0
  149. package/dist/components/ds-skeleton/ds-skeleton-circle.d.ts +18 -0
  150. package/dist/components/ds-skeleton/ds-skeleton-circle.d.ts.map +1 -0
  151. package/dist/components/ds-skeleton/ds-skeleton-circle.js +58 -0
  152. package/dist/components/ds-skeleton/ds-skeleton-circle.js.map +1 -0
  153. package/dist/components/ds-skeleton/ds-skeleton-rect.cjs +61 -0
  154. package/dist/components/ds-skeleton/ds-skeleton-rect.d.cts +18 -0
  155. package/dist/components/ds-skeleton/ds-skeleton-rect.d.cts.map +1 -0
  156. package/dist/components/ds-skeleton/ds-skeleton-rect.d.ts +18 -0
  157. package/dist/components/ds-skeleton/ds-skeleton-rect.d.ts.map +1 -0
  158. package/dist/components/ds-skeleton/ds-skeleton-rect.js +60 -0
  159. package/dist/components/ds-skeleton/ds-skeleton-rect.js.map +1 -0
  160. package/dist/components/ds-skeleton/ds-skeleton-text.cjs +91 -0
  161. package/dist/components/ds-skeleton/ds-skeleton-text.d.cts +21 -0
  162. package/dist/components/ds-skeleton/ds-skeleton-text.d.cts.map +1 -0
  163. package/dist/components/ds-skeleton/ds-skeleton-text.d.ts +21 -0
  164. package/dist/components/ds-skeleton/ds-skeleton-text.d.ts.map +1 -0
  165. package/dist/components/ds-skeleton/ds-skeleton-text.js +90 -0
  166. package/dist/components/ds-skeleton/ds-skeleton-text.js.map +1 -0
  167. package/dist/components/ds-skeleton/ds-skeleton.cjs +13 -0
  168. package/dist/components/ds-skeleton/ds-skeleton.config.cjs +62 -0
  169. package/dist/components/ds-skeleton/ds-skeleton.config.js +59 -0
  170. package/dist/components/ds-skeleton/ds-skeleton.config.js.map +1 -0
  171. package/dist/components/ds-skeleton/ds-skeleton.d.cts +32 -0
  172. package/dist/components/ds-skeleton/ds-skeleton.d.cts.map +1 -0
  173. package/dist/components/ds-skeleton/ds-skeleton.d.ts +32 -0
  174. package/dist/components/ds-skeleton/ds-skeleton.d.ts.map +1 -0
  175. package/dist/components/ds-skeleton/ds-skeleton.js +14 -0
  176. package/dist/components/ds-skeleton/ds-skeleton.js.map +1 -0
  177. package/dist/components/ds-skeleton/ds-skeleton.module.cjs +15 -0
  178. package/dist/components/ds-skeleton/ds-skeleton.module.js +15 -0
  179. package/dist/components/ds-skeleton/ds-skeleton.module.js.map +1 -0
  180. package/dist/components/ds-skeleton/ds-skeleton.types.cjs +8 -0
  181. package/dist/components/ds-skeleton/ds-skeleton.types.d.cts +91 -0
  182. package/dist/components/ds-skeleton/ds-skeleton.types.d.cts.map +1 -0
  183. package/dist/components/ds-skeleton/ds-skeleton.types.d.ts +93 -0
  184. package/dist/components/ds-skeleton/ds-skeleton.types.d.ts.map +1 -0
  185. package/dist/components/ds-skeleton/ds-skeleton.types.js +7 -0
  186. package/dist/components/ds-skeleton/ds-skeleton.types.js.map +1 -0
  187. package/dist/components/ds-skeleton/index.cjs +5 -0
  188. package/dist/components/ds-skeleton/index.d.ts +5 -0
  189. package/dist/components/ds-skeleton/index.js +5 -0
  190. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.cts +2 -2
  191. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts +2 -2
  192. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts.map +1 -1
  193. package/dist/components/ds-spinner/ds-spinner.cjs +43 -45
  194. package/dist/components/ds-spinner/ds-spinner.js +43 -45
  195. package/dist/components/ds-spinner/ds-spinner.js.map +1 -1
  196. package/dist/components/ds-stepper/components/ds-step-content.d.cts +2 -2
  197. package/dist/components/ds-stepper/components/ds-step-content.d.ts +2 -2
  198. package/dist/components/ds-stepper/components/ds-step-next-button.d.cts +2 -2
  199. package/dist/components/ds-stepper/components/ds-step-next-button.d.ts +2 -2
  200. package/dist/components/ds-stepper/components/ds-step.d.cts +2 -2
  201. package/dist/components/ds-stepper/components/ds-step.d.ts +2 -2
  202. package/dist/components/ds-stepper/ds-stepper.d.cts +2 -2
  203. package/dist/components/ds-stepper/ds-stepper.d.ts +2 -2
  204. package/dist/components/ds-table/components/core-table/core-table.cjs +82 -185
  205. package/dist/components/ds-table/components/core-table/core-table.js +82 -185
  206. package/dist/components/ds-table/components/core-table/core-table.js.map +1 -1
  207. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.cjs +61 -72
  208. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js +61 -72
  209. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js.map +1 -1
  210. package/dist/components/ds-table/components/ds-table-row/ds-table-row.cjs +80 -81
  211. package/dist/components/ds-table/components/ds-table-row/ds-table-row.js +80 -81
  212. package/dist/components/ds-table/components/ds-table-row/ds-table-row.js.map +1 -1
  213. package/dist/components/ds-table/ds-table.cjs +3 -3
  214. package/dist/components/ds-table/ds-table.d.cts +2 -3
  215. package/dist/components/ds-table/ds-table.d.cts.map +1 -1
  216. package/dist/components/ds-table/ds-table.d.ts +2 -3
  217. package/dist/components/ds-table/ds-table.d.ts.map +1 -1
  218. package/dist/components/ds-table/ds-table.js +3 -3
  219. package/dist/components/ds-table/ds-table.js.map +1 -1
  220. package/dist/components/ds-table/ds-table.types.d.cts +0 -4
  221. package/dist/components/ds-table/ds-table.types.d.cts.map +1 -1
  222. package/dist/components/ds-table/ds-table.types.d.ts +0 -4
  223. package/dist/components/ds-table/ds-table.types.d.ts.map +1 -1
  224. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.cjs +7 -4
  225. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js +7 -4
  226. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js.map +1 -1
  227. package/dist/components/ds-table/filters/hooks/use-table-filters.cjs +94 -87
  228. package/dist/components/ds-table/filters/hooks/use-table-filters.js +94 -87
  229. package/dist/components/ds-table/filters/hooks/use-table-filters.js.map +1 -1
  230. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.cjs +37 -0
  231. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.js +36 -0
  232. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.js.map +1 -0
  233. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.cjs +9 -0
  234. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.js +9 -0
  235. package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.js.map +1 -0
  236. package/dist/components/ds-tabs/components/ds-tabs-content/index.cjs +1 -0
  237. package/dist/components/ds-tabs/components/ds-tabs-content/index.js +1 -0
  238. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.cjs +6 -0
  239. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.js +6 -0
  240. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.js.map +1 -0
  241. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.cjs +41 -0
  242. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.js +40 -0
  243. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.js.map +1 -0
  244. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.cjs +6 -0
  245. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.js +6 -0
  246. package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.js.map +1 -0
  247. package/dist/components/ds-tabs/components/ds-tabs-list/index.cjs +1 -0
  248. package/dist/components/ds-tabs/components/ds-tabs-list/index.js +1 -0
  249. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.cjs +178 -0
  250. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.js +177 -0
  251. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.js.map +1 -0
  252. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.cjs +15 -0
  253. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.js +15 -0
  254. package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.js.map +1 -0
  255. package/dist/components/ds-tabs/components/ds-tabs-tab/index.cjs +1 -0
  256. package/dist/components/ds-tabs/components/ds-tabs-tab/index.js +1 -0
  257. package/dist/components/ds-tabs/ds-tabs.cjs +71 -0
  258. package/dist/components/ds-tabs/ds-tabs.d.cts +43 -0
  259. package/dist/components/ds-tabs/ds-tabs.d.cts.map +1 -0
  260. package/dist/components/ds-tabs/ds-tabs.d.ts +43 -0
  261. package/dist/components/ds-tabs/ds-tabs.d.ts.map +1 -0
  262. package/dist/components/ds-tabs/ds-tabs.js +70 -0
  263. package/dist/components/ds-tabs/ds-tabs.js.map +1 -0
  264. package/dist/components/ds-tabs/ds-tabs.module.cjs +6 -0
  265. package/dist/components/ds-tabs/ds-tabs.module.js +6 -0
  266. package/dist/components/ds-tabs/ds-tabs.module.js.map +1 -0
  267. package/dist/components/ds-tabs/ds-tabs.types.d.cts +91 -0
  268. package/dist/components/ds-tabs/ds-tabs.types.d.cts.map +1 -0
  269. package/dist/components/ds-tabs/ds-tabs.types.d.ts +92 -0
  270. package/dist/components/ds-tabs/ds-tabs.types.d.ts.map +1 -0
  271. package/dist/components/ds-tabs/index.cjs +1 -0
  272. package/dist/components/ds-tabs/index.d.ts +2 -0
  273. package/dist/components/ds-tabs/index.js +1 -0
  274. package/dist/components/ds-tag/ds-tag.cjs +254 -0
  275. package/dist/components/ds-tag/ds-tag.d.cts +25 -0
  276. package/dist/components/ds-tag/ds-tag.d.cts.map +1 -0
  277. package/dist/components/ds-tag/ds-tag.d.ts +25 -0
  278. package/dist/components/ds-tag/ds-tag.d.ts.map +1 -0
  279. package/dist/components/ds-tag/ds-tag.js +253 -0
  280. package/dist/components/ds-tag/ds-tag.js.map +1 -0
  281. package/dist/components/ds-tag/ds-tag.module.cjs +17 -0
  282. package/dist/components/ds-tag/ds-tag.module.js +17 -0
  283. package/dist/components/ds-tag/ds-tag.module.js.map +1 -0
  284. package/dist/components/ds-tag/ds-tag.types.d.cts +68 -0
  285. package/dist/components/ds-tag/ds-tag.types.d.cts.map +1 -0
  286. package/dist/components/ds-tag/ds-tag.types.d.ts +68 -0
  287. package/dist/components/ds-tag/ds-tag.types.d.ts.map +1 -0
  288. package/dist/components/ds-tag/index.cjs +1 -0
  289. package/dist/components/ds-tag/index.d.ts +2 -0
  290. package/dist/components/ds-tag/index.js +1 -0
  291. package/dist/components/ds-tag-filter/ds-tag-filter.cjs +325 -0
  292. package/dist/components/ds-tag-filter/ds-tag-filter.d.cts +24 -0
  293. package/dist/components/ds-tag-filter/ds-tag-filter.d.cts.map +1 -0
  294. package/dist/components/ds-tag-filter/ds-tag-filter.d.ts +24 -0
  295. package/dist/components/ds-tag-filter/ds-tag-filter.d.ts.map +1 -0
  296. package/dist/components/ds-tag-filter/ds-tag-filter.js +324 -0
  297. package/dist/components/ds-tag-filter/ds-tag-filter.js.map +1 -0
  298. package/dist/components/ds-tag-filter/ds-tag-filter.module.cjs +17 -0
  299. package/dist/components/ds-tag-filter/ds-tag-filter.module.js +17 -0
  300. package/dist/components/ds-tag-filter/ds-tag-filter.module.js.map +1 -0
  301. package/dist/components/ds-tag-filter/ds-tag-filter.types.d.cts +71 -0
  302. package/dist/components/ds-tag-filter/ds-tag-filter.types.d.cts.map +1 -0
  303. package/dist/components/ds-tag-filter/ds-tag-filter.types.d.ts +72 -0
  304. package/dist/components/ds-tag-filter/ds-tag-filter.types.d.ts.map +1 -0
  305. package/dist/components/ds-tag-filter/hooks/use-tag-overflow-calculation.cjs +137 -0
  306. package/dist/components/ds-tag-filter/hooks/use-tag-overflow-calculation.js +137 -0
  307. package/dist/components/ds-tag-filter/hooks/use-tag-overflow-calculation.js.map +1 -0
  308. package/dist/components/ds-tag-filter/index.cjs +1 -0
  309. package/dist/components/ds-tag-filter/index.d.ts +2 -0
  310. package/dist/components/ds-tag-filter/index.js +1 -0
  311. package/dist/components/ds-tag-filter/utils.cjs +54 -0
  312. package/dist/components/ds-tag-filter/utils.js +52 -0
  313. package/dist/components/ds-tag-filter/utils.js.map +1 -0
  314. package/dist/components/ds-text-input/ds-text-input.js +2 -2
  315. package/dist/components/ds-toggle/ds-toggle.d.cts +2 -2
  316. package/dist/components/ds-toggle/ds-toggle.d.ts +2 -2
  317. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.cts +5 -5
  318. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.ts +5 -5
  319. package/dist/index.cjs +34 -2
  320. package/dist/index.d.cts +20 -3
  321. package/dist/index.d.ts +28 -4
  322. package/dist/index.js +22 -3
  323. package/dist/index.min.css +1 -1
  324. package/package.json +10 -4
  325. package/src/components/ds-avatar/_mixins.scss +45 -0
  326. package/src/components/ds-avatar/ds-avatar.module.scss +52 -0
  327. package/src/components/ds-avatar/ds-avatar.tsx +42 -0
  328. package/src/components/ds-avatar/ds-avatar.types.ts +41 -0
  329. package/src/components/ds-avatar/index.ts +2 -0
  330. package/src/components/ds-avatar-group/ds-avatar-group.module.scss +70 -0
  331. package/src/components/ds-avatar-group/ds-avatar-group.tsx +51 -0
  332. package/src/components/ds-avatar-group/ds-avatar-group.types.ts +27 -0
  333. package/src/components/ds-avatar-group/index.ts +2 -0
  334. package/src/components/ds-button/versions/ds-button-legacy/ds-button-legacy.tsx +1 -7
  335. package/src/components/ds-button/versions/ds-button-new/ds-button-new.tsx +4 -2
  336. package/src/components/ds-chip/ds-chip.tsx +2 -1
  337. package/src/components/ds-chip/ds-chip.types.tsx +13 -0
  338. package/src/components/ds-chip/index.tsx +8 -0
  339. package/src/components/ds-chip-group/ds-chip-group.tsx +2 -2
  340. package/src/components/ds-chip-group/ds-chip-group.types.ts +8 -0
  341. package/src/components/ds-chip-group/hooks/use-chip-row-calculation.ts +5 -0
  342. package/src/components/ds-chip-group/index.ts +1 -0
  343. package/src/components/ds-date-input/ds-date-input.module.scss +1 -0
  344. package/src/components/ds-date-input/ds-date-input.utils.ts +16 -2
  345. package/src/components/ds-drawer/ds-drawer.tsx +4 -1
  346. package/src/components/ds-dropdown-menu/ds-dropdown-menu.types.tsx +4 -1
  347. package/src/components/ds-file-upload/utils/format-file-size.ts +1 -1
  348. package/src/components/ds-form-control/ds-form-control.tsx +9 -2
  349. package/src/components/ds-loader/ds-loader.module.scss +57 -0
  350. package/src/components/ds-loader/ds-loader.tsx +18 -0
  351. package/src/components/ds-loader/ds-loader.types.ts +24 -0
  352. package/src/components/ds-loader/index.ts +2 -0
  353. package/src/components/ds-loader/pulsing-icon.tsx +17 -0
  354. package/src/components/ds-loader/spinner-icon.tsx +37 -0
  355. package/src/components/ds-modal/ds-modal.tsx +7 -1
  356. package/src/components/ds-select/ds-select.tsx +1 -1
  357. package/src/components/ds-skeleton/ds-skeleton-circle.tsx +29 -0
  358. package/src/components/ds-skeleton/ds-skeleton-rect.tsx +36 -0
  359. package/src/components/ds-skeleton/ds-skeleton-text.tsx +49 -0
  360. package/src/components/ds-skeleton/ds-skeleton.config.ts +68 -0
  361. package/src/components/ds-skeleton/ds-skeleton.module.scss +72 -0
  362. package/src/components/ds-skeleton/ds-skeleton.tsx +9 -0
  363. package/src/components/ds-skeleton/ds-skeleton.types.ts +92 -0
  364. package/src/components/ds-skeleton/index.ts +5 -0
  365. package/src/components/ds-spinner/ds-spinner.tsx +1 -1
  366. package/src/components/ds-table/components/core-table/core-table.tsx +16 -16
  367. package/src/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.tsx +10 -13
  368. package/src/components/ds-table/components/ds-table-row/ds-table-row.tsx +0 -2
  369. package/src/components/ds-table/ds-table.tsx +6 -5
  370. package/src/components/ds-table/ds-table.types.ts +0 -5
  371. package/src/components/ds-table/filters/adapters/create-dual-range-filter-adapter.tsx +2 -4
  372. package/src/components/ds-table/filters/hooks/use-table-filters.ts +10 -5
  373. package/src/components/ds-table/utils/story-data-generator.ts +7 -7
  374. package/src/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.scss +18 -0
  375. package/src/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.tsx +12 -0
  376. package/src/components/ds-tabs/components/ds-tabs-content/index.ts +1 -0
  377. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.scss +31 -0
  378. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.scss +27 -0
  379. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.tsx +14 -0
  380. package/src/components/ds-tabs/components/ds-tabs-list/index.ts +1 -0
  381. package/src/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.scss +242 -0
  382. package/src/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.tsx +130 -0
  383. package/src/components/ds-tabs/components/ds-tabs-tab/index.ts +1 -0
  384. package/src/components/ds-tabs/ds-tabs.module.scss +14 -0
  385. package/src/components/ds-tabs/ds-tabs.tsx +46 -0
  386. package/src/components/ds-tabs/ds-tabs.types.ts +97 -0
  387. package/src/components/ds-tabs/index.ts +2 -0
  388. package/src/components/ds-tag/ds-tag.module.scss +112 -0
  389. package/src/components/ds-tag/ds-tag.tsx +124 -0
  390. package/src/components/ds-tag/ds-tag.types.tsx +67 -0
  391. package/src/components/ds-tag/index.tsx +2 -0
  392. package/src/components/ds-tag-filter/ds-tag-filter.module.scss +72 -0
  393. package/src/components/ds-tag-filter/ds-tag-filter.tsx +178 -0
  394. package/src/components/ds-tag-filter/ds-tag-filter.types.ts +68 -0
  395. package/src/components/ds-tag-filter/hooks/use-tag-overflow-calculation.ts +135 -0
  396. package/src/components/ds-tag-filter/index.ts +2 -0
  397. package/src/components/ds-tag-filter/utils.test.ts +401 -0
  398. package/src/components/ds-tag-filter/utils.ts +65 -0
  399. package/src/index.ts +7 -0
@@ -0,0 +1,57 @@
1
+ .loaderContainer {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ }
6
+
7
+ .loader {
8
+ animation: spin 1s linear infinite;
9
+ }
10
+
11
+ @keyframes spin {
12
+ 0% {
13
+ transform: rotate(0deg);
14
+ }
15
+
16
+ 100% {
17
+ transform: rotate(360deg);
18
+ }
19
+ }
20
+
21
+ .pulsingIcon {
22
+ --loader-pulsing-color: #5452f6;
23
+
24
+ color: var(--loader-pulsing-color);
25
+ }
26
+
27
+ .pulsingOuter {
28
+ fill: currentcolor;
29
+ opacity: 0.3;
30
+ transform-origin: center;
31
+ animation: pulse 1.4s ease-in-out infinite;
32
+ }
33
+
34
+ .pulsingInner {
35
+ fill: currentcolor;
36
+ }
37
+
38
+ @keyframes pulse {
39
+ 0%,
40
+ 100% {
41
+ transform: scale(0.7);
42
+ opacity: 0.3;
43
+ }
44
+
45
+ 50% {
46
+ transform: scale(1.1);
47
+ opacity: 0.15;
48
+ }
49
+ }
50
+
51
+ .spinnerGradient {
52
+ --loader-spinner-color: #4192f6;
53
+
54
+ background: conic-gradient(from 90deg, var(--loader-spinner-color) 0deg, transparent 360deg);
55
+ height: 100%;
56
+ width: 100%;
57
+ }
@@ -0,0 +1,18 @@
1
+ import classNames from 'classnames';
2
+ import styles from './ds-loader.module.scss';
3
+ import type { DsLoaderProps } from './ds-loader.types';
4
+ import PulsingIcon from './pulsing-icon';
5
+ import SpinnerIcon from './spinner-icon';
6
+
7
+ /**
8
+ * Design system Loader component
9
+ */
10
+ const DsLoader = ({ variant = 'spinner', className, ...props }: DsLoaderProps) => {
11
+ return (
12
+ <div className={classNames(styles.loaderContainer, className)} {...props}>
13
+ {variant === 'pulsing' ? <PulsingIcon /> : <SpinnerIcon />}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ export default DsLoader;
@@ -0,0 +1,24 @@
1
+ import type React from 'react';
2
+
3
+ export const loaderVariants = ['spinner', 'pulsing'] as const;
4
+ export type LoaderVariant = (typeof loaderVariants)[number];
5
+
6
+ export interface DsLoaderProps {
7
+ /**
8
+ * Loader variant
9
+ * @default 'spinner'
10
+ */
11
+ variant?: LoaderVariant;
12
+ /**
13
+ * Additional CSS class names
14
+ */
15
+ className?: string;
16
+ /**
17
+ * Additional styles to apply to the component
18
+ */
19
+ style?: React.CSSProperties;
20
+ /**
21
+ * Ref to the loader container element
22
+ */
23
+ ref?: React.Ref<HTMLDivElement>;
24
+ }
@@ -0,0 +1,2 @@
1
+ export { default as DsLoader } from './ds-loader';
2
+ export * from './ds-loader.types';
@@ -0,0 +1,17 @@
1
+ import styles from './ds-loader.module.scss';
2
+
3
+ const PulsingIcon = () => (
4
+ <svg
5
+ className={styles.pulsingIcon}
6
+ width="24"
7
+ height="24"
8
+ viewBox="0 0 24 24"
9
+ fill="none"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ >
12
+ <circle className={styles.pulsingOuter} cx="12" cy="12" r="8" />
13
+ <circle className={styles.pulsingInner} cx="12" cy="12" r="5.5" />
14
+ </svg>
15
+ );
16
+
17
+ export default PulsingIcon;
@@ -0,0 +1,37 @@
1
+ import styles from './ds-loader.module.scss';
2
+
3
+ const SpinnerIcon = () => (
4
+ <svg
5
+ className={styles.loader}
6
+ width="24"
7
+ height="24"
8
+ viewBox="0 0 24 24"
9
+ fill="none"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ >
12
+ <mask id="path-2-inside-1_14836_15182" fill="white">
13
+ <path d="M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4Z" />
14
+ </mask>
15
+ <g clipPath="url(#paint0_angular_14836_15182_clip_path)" mask="url(#path-2-inside-1_14836_15182)">
16
+ <g transform="matrix(-0.008 0 0 0.008 12 12)">
17
+ <foreignObject x="-1375" y="-1375" width="2750" height="2750">
18
+ <div className={styles.spinnerGradient} />
19
+ </foreignObject>
20
+ </g>
21
+ </g>
22
+ <path
23
+ d="M12 4L12 7C9.23858 7 7 9.23858 7 12L4 12L1 12C1 5.92487 5.92487 1 12 1L12 4ZM4 12L7 12C7 14.7614 9.23858 17 12 17L12 20L12 23C5.92487 23 1 18.0751 1 12L4 12ZM12 20L12 17C14.7614 17 17 14.7614 17 12L20 12L23 12C23 18.0751 18.0751 23 12 23L12 20ZM20 12L17 12C17 9.23858 14.7614 7 12 7L12 4L12 1C18.0751 1 23 5.92487 23 12L20 12Z"
24
+ mask="url(#path-2-inside-1_14836_15182)"
25
+ />
26
+ <defs>
27
+ <clipPath id="paint0_angular_14836_15182_clip_path">
28
+ <path
29
+ d="M12 4L12 7C9.23858 7 7 9.23858 7 12L4 12L1 12C1 5.92487 5.92487 1 12 1L12 4ZM4 12L7 12C7 14.7614 9.23858 17 12 17L12 20L12 23C5.92487 23 1 18.0751 1 12L4 12ZM12 20L12 17C14.7614 17 17 14.7614 17 12L20 12L23 12C23 18.0751 18.0751 23 12 23L12 20ZM20 12L17 12C17 9.23858 14.7614 7 12 7L12 4L12 1C18.0751 1 23 5.92487 23 12L20 12Z"
30
+ mask="url(#path-2-inside-1_14836_15182)"
31
+ />
32
+ </clipPath>
33
+ </defs>
34
+ </svg>
35
+ );
36
+
37
+ export default SpinnerIcon;
@@ -40,7 +40,13 @@ const DsModal = ({
40
40
  <Dialog.Positioner>
41
41
  <Dialog.Content
42
42
  style={style}
43
- className={classNames(styles.modal, styles[`cols-${String(columns)}`], className)}
43
+ className={classNames(
44
+ styles.modal,
45
+ className,
46
+
47
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
48
+ styles[`cols-${columns}`],
49
+ )}
44
50
  >
45
51
  <div className={classNames(styles.content)}>{children}</div>
46
52
  </Dialog.Content>
@@ -66,7 +66,7 @@ const DsSelect = ({
66
66
  onValueChange: (details) => {
67
67
  // Single select mode.
68
68
  if (!multiselectProps.multiple) {
69
- multiselectProps.onValueChange?.(details.value[0]);
69
+ multiselectProps.onValueChange?.(details.value[0] ?? '');
70
70
  return;
71
71
  }
72
72
 
@@ -0,0 +1,29 @@
1
+ import type { CSSProperties } from 'react';
2
+ import classNames from 'classnames';
3
+ import type { DsSkeletonCircleProps } from './ds-skeleton.types';
4
+ import { circleSizeMap } from './ds-skeleton.config';
5
+ import styles from './ds-skeleton.module.scss';
6
+
7
+ /**
8
+ * Circle skeleton component - for avatars and icons
9
+ * Matches DsAvatar sizes
10
+ */
11
+ const DsSkeletonCircle = ({ size = 'regular', color = 'gray', className, style }: DsSkeletonCircleProps) => {
12
+ const pixelSize = typeof size === 'number' ? size : circleSizeMap[size];
13
+
14
+ const circleStyle: CSSProperties = {
15
+ width: `${String(pixelSize)}px`,
16
+ height: `${String(pixelSize)}px`,
17
+ ...style,
18
+ };
19
+
20
+ return (
21
+ <span
22
+ className={classNames(styles.skeleton, styles.circle, styles[color], className)}
23
+ style={circleStyle}
24
+ aria-hidden="true"
25
+ />
26
+ );
27
+ };
28
+
29
+ export default DsSkeletonCircle;
@@ -0,0 +1,36 @@
1
+ import type React from 'react';
2
+ import classNames from 'classnames';
3
+ import type { DsSkeletonRectProps } from './ds-skeleton.types';
4
+ import { radiusMap } from './ds-skeleton.config';
5
+ import styles from './ds-skeleton.module.scss';
6
+
7
+ /**
8
+ * Rectangle skeleton component - for buttons, images, and custom shapes
9
+ */
10
+ const DsSkeletonRect = ({
11
+ width,
12
+ height,
13
+ radius = 'default',
14
+ color = 'gray',
15
+ className,
16
+ style,
17
+ }: DsSkeletonRectProps) => {
18
+ const borderRadius = typeof radius === 'number' ? radius : radiusMap[radius];
19
+
20
+ const rectStyle: React.CSSProperties = {
21
+ width: typeof width === 'number' ? `${String(width)}px` : width,
22
+ height: typeof height === 'number' ? `${String(height)}px` : height,
23
+ borderRadius: `${String(borderRadius)}px`,
24
+ ...style,
25
+ };
26
+
27
+ return (
28
+ <span
29
+ className={classNames(styles.skeleton, styles.rectangle, styles[color], className)}
30
+ style={rectStyle}
31
+ aria-hidden="true"
32
+ />
33
+ );
34
+ };
35
+
36
+ export default DsSkeletonRect;
@@ -0,0 +1,49 @@
1
+ import type { CSSProperties } from 'react';
2
+ import classNames from 'classnames';
3
+ import type { DsSkeletonTextProps } from './ds-skeleton.types';
4
+ import { typographyHeightMap, DEFAULT_LINE_GAP, radiusMap } from './ds-skeleton.config';
5
+ import styles from './ds-skeleton.module.scss';
6
+
7
+ /**
8
+ * Text skeleton component - matches typography variants
9
+ * It renders pill-shaped lines that match the height of text content
10
+ */
11
+ const DsSkeletonText = ({
12
+ typographyVariant = 'body-sm-reg',
13
+ color = 'gray',
14
+ lines = 1,
15
+ width,
16
+ radius = 'default',
17
+ className,
18
+ style,
19
+ }: DsSkeletonTextProps) => {
20
+ const height = typographyHeightMap[typographyVariant];
21
+ const borderRadius = typeof radius === 'number' ? radius : radiusMap[radius];
22
+
23
+ const getLineWidth = (): string | number => {
24
+ if (width !== undefined) {
25
+ return width;
26
+ }
27
+
28
+ return '100%';
29
+ };
30
+
31
+ const lineClassName = classNames(styles.skeleton, styles.text, styles[color], className);
32
+
33
+ const createLineStyle = (lineWidth: string | number): CSSProperties => ({
34
+ height,
35
+ width: typeof lineWidth === 'number' ? String(lineWidth) + 'px' : lineWidth,
36
+ borderRadius,
37
+ ...style,
38
+ });
39
+
40
+ return (
41
+ <div aria-hidden="true" className={styles.container} style={{ gap: DEFAULT_LINE_GAP }}>
42
+ {Array.from({ length: lines }, (_, index) => (
43
+ <span key={index} className={lineClassName} style={createLineStyle(getLineWidth())} />
44
+ ))}
45
+ </div>
46
+ );
47
+ };
48
+
49
+ export default DsSkeletonText;
@@ -0,0 +1,68 @@
1
+ import type { DsAvatarSize } from '../ds-avatar';
2
+ import type { SemanticVariant } from '../ds-typography';
3
+ import type { SkeletonRadiusVariant } from './ds-skeleton.types';
4
+
5
+ /**
6
+ * Circle size mapping matching DsAvatar component
7
+ * Maps semantic size names to pixel values
8
+ */
9
+ export const circleSizeMap: Record<DsAvatarSize, number> = Object.freeze({
10
+ xsm: 24,
11
+ sm: 32,
12
+ regular: 40,
13
+ md: 48,
14
+ lg: 64,
15
+ xl: 80,
16
+ });
17
+
18
+ /**
19
+ * Typography variant height mapping
20
+ * Maps semantic variants to approximate heights in pixels
21
+ * Based on line-height values from design system
22
+ */
23
+ export const typographyHeightMap: Record<SemanticVariant, number> = Object.freeze({
24
+ // Body variants - based on line-height
25
+ 'body-md-reg': 20,
26
+ 'body-md-md': 20,
27
+ 'body-md-semi-bold': 20,
28
+ 'body-md-bold': 20,
29
+ 'body-md-link': 20,
30
+
31
+ 'body-sm-reg': 18,
32
+ 'body-sm-md': 18,
33
+ 'body-sm-semi-bold': 18,
34
+ 'body-sm-bold': 18,
35
+ 'body-sm-link': 18,
36
+
37
+ 'body-xs-reg': 16,
38
+ 'body-xs-md': 16,
39
+ 'body-xs-semi-bold': 16,
40
+ 'body-xs-bold': 16,
41
+ 'body-xs-link': 16,
42
+
43
+ // Code variants
44
+ 'code-sm-reg': 18,
45
+ 'code-sm-semi-bold': 18,
46
+ 'code-xs-reg': 16,
47
+ 'code-xs-semi-bold': 16,
48
+
49
+ // Heading variants - based on line-height
50
+ heading1: 64,
51
+ heading2: 54,
52
+ heading3: 48,
53
+ heading4: 36,
54
+ });
55
+
56
+ /**
57
+ * Border radius mapping
58
+ * Maps semantic radius names to pixel values
59
+ */
60
+ export const radiusMap: Record<SkeletonRadiusVariant, number> = Object.freeze({
61
+ default: 4, // Standard button/card radius
62
+ round: 999, // Pill-shaped (fully rounded)
63
+ });
64
+
65
+ /**
66
+ * Default gap between skeleton lines in pixels
67
+ */
68
+ export const DEFAULT_LINE_GAP = 8;
@@ -0,0 +1,72 @@
1
+ .skeleton {
2
+ animation: shimmer 2s linear infinite;
3
+ }
4
+
5
+ .gray {
6
+ --skeleton-gray-base: #f3f5fa;
7
+ --skeleton-gray-accent: #e3e3e3;
8
+
9
+ background: linear-gradient(
10
+ 90deg,
11
+ var(--skeleton-gray-base) 0%,
12
+ var(--skeleton-gray-base) 33%,
13
+ var(--skeleton-gray-accent) 50%,
14
+ var(--skeleton-gray-base) 66%,
15
+ var(--skeleton-gray-base) 100%
16
+ );
17
+ background-size: 300% 100%;
18
+ }
19
+
20
+ .blue {
21
+ --skeleton-blue-accent: #759cec;
22
+ --skeleton-blue-base: #dfe9ff;
23
+
24
+ background: linear-gradient(
25
+ 90deg,
26
+ var(--skeleton-blue-base) 0%,
27
+ var(--skeleton-blue-base) 33%,
28
+ var(--skeleton-blue-accent) 50%,
29
+ var(--skeleton-blue-base) 66%,
30
+ var(--skeleton-blue-base) 100%
31
+ );
32
+ background-size: 300% 100%;
33
+ }
34
+
35
+ .text {
36
+ display: block;
37
+ margin-bottom: var(--spacing-xs);
38
+
39
+ &:last-child {
40
+ margin-bottom: 0;
41
+ }
42
+ }
43
+
44
+ .circle {
45
+ display: inline-block;
46
+ border-radius: 50%;
47
+ flex-shrink: 0;
48
+ }
49
+
50
+ .rectangle {
51
+ display: inline-block;
52
+ flex-shrink: 0;
53
+ }
54
+
55
+ .container {
56
+ display: flex;
57
+ flex-direction: column;
58
+ }
59
+
60
+ @keyframes shimmer {
61
+ 0% {
62
+ background-position: 100% 0;
63
+ }
64
+
65
+ 60% {
66
+ background-position: 0 0;
67
+ }
68
+
69
+ 100% {
70
+ background-position: 0 0;
71
+ }
72
+ }
@@ -0,0 +1,9 @@
1
+ import DsSkeletonText from './ds-skeleton-text';
2
+ import DsSkeletonCircle from './ds-skeleton-circle';
3
+ import DsSkeletonRect from './ds-skeleton-rect';
4
+
5
+ export default {
6
+ Text: DsSkeletonText,
7
+ Circle: DsSkeletonCircle,
8
+ Rect: DsSkeletonRect,
9
+ };
@@ -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';