@drivenets/design-system 0.0.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/components/ds-alert-banner/ds-alert-banner.d.ts +5 -5
  3. package/dist/components/ds-alert-banner/ds-alert-banner.d.ts.map +1 -1
  4. package/dist/components/ds-avatar/ds-avatar.cjs +98 -0
  5. package/dist/components/ds-avatar/ds-avatar.d.cts +12 -0
  6. package/dist/components/ds-avatar/ds-avatar.d.cts.map +1 -0
  7. package/dist/components/ds-avatar/ds-avatar.d.ts +12 -0
  8. package/dist/components/ds-avatar/ds-avatar.d.ts.map +1 -0
  9. package/dist/components/ds-avatar/ds-avatar.js +97 -0
  10. package/dist/components/ds-avatar/ds-avatar.js.map +1 -0
  11. package/dist/components/ds-avatar/ds-avatar.module.cjs +17 -0
  12. package/dist/components/ds-avatar/ds-avatar.module.js +17 -0
  13. package/dist/components/ds-avatar/ds-avatar.module.js.map +1 -0
  14. package/dist/components/ds-avatar/ds-avatar.types.d.cts +44 -0
  15. package/dist/components/ds-avatar/ds-avatar.types.d.cts.map +1 -0
  16. package/dist/components/ds-avatar/ds-avatar.types.d.ts +44 -0
  17. package/dist/components/ds-avatar/ds-avatar.types.d.ts.map +1 -0
  18. package/dist/components/ds-avatar/index.cjs +1 -0
  19. package/dist/components/ds-avatar/index.d.ts +2 -0
  20. package/dist/components/ds-avatar/index.js +1 -0
  21. package/dist/components/ds-avatar-group/ds-avatar-group.cjs +93 -0
  22. package/dist/components/ds-avatar-group/ds-avatar-group.d.cts +12 -0
  23. package/dist/components/ds-avatar-group/ds-avatar-group.d.cts.map +1 -0
  24. package/dist/components/ds-avatar-group/ds-avatar-group.d.ts +12 -0
  25. package/dist/components/ds-avatar-group/ds-avatar-group.d.ts.map +1 -0
  26. package/dist/components/ds-avatar-group/ds-avatar-group.js +92 -0
  27. package/dist/components/ds-avatar-group/ds-avatar-group.js.map +1 -0
  28. package/dist/components/ds-avatar-group/ds-avatar-group.module.cjs +19 -0
  29. package/dist/components/ds-avatar-group/ds-avatar-group.module.js +19 -0
  30. package/dist/components/ds-avatar-group/ds-avatar-group.module.js.map +1 -0
  31. package/dist/components/ds-avatar-group/ds-avatar-group.types.d.cts +31 -0
  32. package/dist/components/ds-avatar-group/ds-avatar-group.types.d.cts.map +1 -0
  33. package/dist/components/ds-avatar-group/ds-avatar-group.types.d.ts +32 -0
  34. package/dist/components/ds-avatar-group/ds-avatar-group.types.d.ts.map +1 -0
  35. package/dist/components/ds-avatar-group/index.cjs +1 -0
  36. package/dist/components/ds-avatar-group/index.d.ts +2 -0
  37. package/dist/components/ds-avatar-group/index.js +1 -0
  38. package/dist/components/ds-button/ds-button.d.cts +2 -2
  39. package/dist/components/ds-button/ds-button.d.ts +2 -2
  40. package/dist/components/ds-button/ds-button.d.ts.map +1 -1
  41. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.module.cjs +18 -18
  42. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.module.js +18 -18
  43. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.module.js.map +1 -1
  44. package/dist/components/ds-chip/ds-chip.cjs +2 -1
  45. package/dist/components/ds-chip/ds-chip.d.cts +2 -1
  46. package/dist/components/ds-chip/ds-chip.d.cts.map +1 -1
  47. package/dist/components/ds-chip/ds-chip.d.ts +2 -1
  48. package/dist/components/ds-chip/ds-chip.d.ts.map +1 -1
  49. package/dist/components/ds-chip/ds-chip.js +2 -1
  50. package/dist/components/ds-chip/ds-chip.js.map +1 -1
  51. package/dist/components/ds-chip/ds-chip.types.d.cts +13 -0
  52. package/dist/components/ds-chip/ds-chip.types.d.cts.map +1 -1
  53. package/dist/components/ds-chip/ds-chip.types.d.ts +13 -0
  54. package/dist/components/ds-chip/ds-chip.types.d.ts.map +1 -1
  55. package/dist/components/ds-chip-group/ds-chip-group.cjs +2 -2
  56. package/dist/components/ds-chip-group/ds-chip-group.d.cts +2 -2
  57. package/dist/components/ds-chip-group/ds-chip-group.d.ts +2 -2
  58. package/dist/components/ds-chip-group/ds-chip-group.js +2 -2
  59. package/dist/components/ds-chip-group/ds-chip-group.js.map +1 -1
  60. package/dist/components/ds-chip-group/ds-chip-group.types.d.cts +9 -0
  61. package/dist/components/ds-chip-group/ds-chip-group.types.d.cts.map +1 -1
  62. package/dist/components/ds-chip-group/ds-chip-group.types.d.ts +9 -0
  63. package/dist/components/ds-chip-group/ds-chip-group.types.d.ts.map +1 -1
  64. package/dist/components/ds-confirmation/ds-confirmation.d.cts +8 -8
  65. package/dist/components/ds-confirmation/ds-confirmation.d.cts.map +1 -1
  66. package/dist/components/ds-confirmation/ds-confirmation.d.ts +8 -8
  67. package/dist/components/ds-date-input/ds-date-input.cjs +352 -0
  68. package/dist/components/ds-date-input/ds-date-input.d.cts +31 -0
  69. package/dist/components/ds-date-input/ds-date-input.d.cts.map +1 -0
  70. package/dist/components/ds-date-input/ds-date-input.d.ts +31 -0
  71. package/dist/components/ds-date-input/ds-date-input.d.ts.map +1 -0
  72. package/dist/components/ds-date-input/ds-date-input.js +351 -0
  73. package/dist/components/ds-date-input/ds-date-input.js.map +1 -0
  74. package/dist/components/ds-date-input/ds-date-input.module.cjs +29 -0
  75. package/dist/components/ds-date-input/ds-date-input.module.js +29 -0
  76. package/dist/components/ds-date-input/ds-date-input.module.js.map +1 -0
  77. package/dist/components/ds-date-input/ds-date-input.types.d.cts +92 -0
  78. package/dist/components/ds-date-input/ds-date-input.types.d.cts.map +1 -0
  79. package/dist/components/ds-date-input/ds-date-input.types.d.ts +92 -0
  80. package/dist/components/ds-date-input/ds-date-input.types.d.ts.map +1 -0
  81. package/dist/components/ds-date-input/ds-date-input.utils.cjs +169 -0
  82. package/dist/components/ds-date-input/ds-date-input.utils.js +164 -0
  83. package/dist/components/ds-date-input/ds-date-input.utils.js.map +1 -0
  84. package/dist/components/ds-date-input/index.cjs +1 -0
  85. package/dist/components/ds-date-input/index.d.ts +2 -0
  86. package/dist/components/ds-date-input/index.js +1 -0
  87. package/dist/components/ds-divider/ds-divider.cjs +47 -0
  88. package/dist/components/ds-divider/ds-divider.d.cts +8 -0
  89. package/dist/components/ds-divider/ds-divider.d.cts.map +1 -0
  90. package/dist/components/ds-divider/ds-divider.d.ts +8 -0
  91. package/dist/components/ds-divider/ds-divider.d.ts.map +1 -0
  92. package/dist/components/ds-divider/ds-divider.js +46 -0
  93. package/dist/components/ds-divider/ds-divider.js.map +1 -0
  94. package/dist/components/ds-divider/ds-divider.module.cjs +10 -0
  95. package/dist/components/ds-divider/ds-divider.module.js +10 -0
  96. package/dist/components/ds-divider/ds-divider.module.js.map +1 -0
  97. package/dist/components/ds-divider/ds-divider.types.d.cts +25 -0
  98. package/dist/components/ds-divider/ds-divider.types.d.cts.map +1 -0
  99. package/dist/components/ds-divider/ds-divider.types.d.ts +25 -0
  100. package/dist/components/ds-divider/ds-divider.types.d.ts.map +1 -0
  101. package/dist/components/ds-divider/index.cjs +1 -0
  102. package/dist/components/ds-divider/index.d.ts +2 -0
  103. package/dist/components/ds-divider/index.js +1 -0
  104. package/dist/components/ds-drawer/ds-drawer.d.ts +9 -9
  105. package/dist/components/ds-drawer/ds-drawer.js +2 -2
  106. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.cjs +80 -24
  107. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.d.cts +1 -0
  108. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.d.cts.map +1 -1
  109. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.d.ts +1 -0
  110. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.d.ts.map +1 -1
  111. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js +83 -27
  112. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js.map +1 -1
  113. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.module.cjs +20 -18
  114. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.module.js +20 -18
  115. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.module.js.map +1 -1
  116. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts +5 -1
  117. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts.map +1 -1
  118. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts +5 -1
  119. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts.map +1 -1
  120. package/dist/components/ds-dropdown-menu/index.d.ts +1 -1
  121. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.cts +2 -2
  122. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.ts +2 -2
  123. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.cjs +2 -2
  124. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.js +2 -2
  125. package/dist/components/ds-form-control/ds-form-control.cjs +3 -0
  126. package/dist/components/ds-form-control/ds-form-control.d.cts +9 -7
  127. package/dist/components/ds-form-control/ds-form-control.d.cts.map +1 -1
  128. package/dist/components/ds-form-control/ds-form-control.d.ts +10 -7
  129. package/dist/components/ds-form-control/ds-form-control.d.ts.map +1 -1
  130. package/dist/components/ds-form-control/ds-form-control.js +3 -0
  131. package/dist/components/ds-form-control/ds-form-control.js.map +1 -1
  132. package/dist/components/ds-modal/ds-modal.d.cts +8 -8
  133. package/dist/components/ds-modal/ds-modal.d.cts.map +1 -1
  134. package/dist/components/ds-modal/ds-modal.d.ts +8 -8
  135. package/dist/components/ds-modal/ds-modal.d.ts.map +1 -1
  136. package/dist/components/ds-panel/ds-panel.d.cts +2 -2
  137. package/dist/components/ds-panel/ds-panel.d.ts +2 -2
  138. package/dist/components/ds-radio-group/ds-radio-group.types.d.cts +1 -1
  139. package/dist/components/ds-radio-group/ds-radio-group.types.d.cts.map +1 -1
  140. package/dist/components/ds-radio-group/ds-radio-group.types.d.ts +1 -1
  141. package/dist/components/ds-radio-group/ds-radio-group.types.d.ts.map +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-smart-tabs/ds-smart-tabs.d.cts +2 -2
  145. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts +2 -2
  146. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts.map +1 -1
  147. package/dist/components/ds-stepper/components/ds-step-content.d.cts +2 -2
  148. package/dist/components/ds-stepper/components/ds-step-content.d.ts +2 -2
  149. package/dist/components/ds-stepper/components/ds-step-next-button.d.cts +2 -2
  150. package/dist/components/ds-stepper/components/ds-step-next-button.d.ts +2 -2
  151. package/dist/components/ds-stepper/components/ds-step.d.cts +2 -2
  152. package/dist/components/ds-stepper/components/ds-step.d.ts +2 -2
  153. package/dist/components/ds-stepper/ds-stepper.d.cts +2 -2
  154. package/dist/components/ds-stepper/ds-stepper.d.ts +2 -2
  155. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.types.d.cts +1 -0
  156. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.types.d.cts.map +1 -1
  157. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.types.d.ts +1 -1
  158. package/dist/components/ds-table/ds-table.d.cts +2 -2
  159. package/dist/components/ds-table/ds-table.d.ts +2 -2
  160. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.cjs +55 -0
  161. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.d.cts +49 -0
  162. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.d.cts.map +1 -0
  163. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.d.ts +50 -0
  164. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.d.ts.map +1 -0
  165. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.js +55 -0
  166. package/dist/components/ds-table/filters/adapters/create-checkbox-filter-adapter.js.map +1 -0
  167. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.cjs +87 -0
  168. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.d.cts +44 -0
  169. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.d.cts.map +1 -0
  170. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.d.ts +44 -0
  171. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.d.ts.map +1 -0
  172. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js +87 -0
  173. package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js.map +1 -0
  174. package/dist/components/ds-table/filters/adapters/create-filter-adapter.cjs +83 -0
  175. package/dist/components/ds-table/filters/adapters/create-filter-adapter.d.cts +111 -0
  176. package/dist/components/ds-table/filters/adapters/create-filter-adapter.d.cts.map +1 -0
  177. package/dist/components/ds-table/filters/adapters/create-filter-adapter.d.ts +111 -0
  178. package/dist/components/ds-table/filters/adapters/create-filter-adapter.d.ts.map +1 -0
  179. package/dist/components/ds-table/filters/adapters/create-filter-adapter.js +83 -0
  180. package/dist/components/ds-table/filters/adapters/create-filter-adapter.js.map +1 -0
  181. package/dist/components/ds-table/filters/adapters/index.cjs +3 -0
  182. package/dist/components/ds-table/filters/adapters/index.d.ts +3 -0
  183. package/dist/components/ds-table/filters/adapters/index.js +3 -0
  184. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.cjs +22 -0
  185. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.cts +17 -0
  186. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.cts.map +1 -0
  187. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.ts +18 -0
  188. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.d.ts.map +1 -0
  189. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.js +22 -0
  190. package/dist/components/ds-table/filters/components/checkbox-filter/checkbox-filter.js.map +1 -0
  191. package/dist/components/ds-table/filters/components/checkbox-filter/index.cjs +1 -0
  192. package/dist/components/ds-table/filters/components/checkbox-filter/index.d.ts +1 -0
  193. package/dist/components/ds-table/filters/components/checkbox-filter/index.js +1 -0
  194. package/dist/components/ds-table/filters/components/range-filter/index.cjs +1 -0
  195. package/dist/components/ds-table/filters/components/range-filter/index.d.ts +1 -0
  196. package/dist/components/ds-table/filters/components/range-filter/index.js +1 -0
  197. package/dist/components/ds-table/filters/components/range-filter/range-filter.cjs +177 -0
  198. package/dist/components/ds-table/filters/components/range-filter/range-filter.d.cts +14 -0
  199. package/dist/components/ds-table/filters/components/range-filter/range-filter.d.cts.map +1 -0
  200. package/dist/components/ds-table/filters/components/range-filter/range-filter.d.ts +16 -0
  201. package/dist/components/ds-table/filters/components/range-filter/range-filter.d.ts.map +1 -0
  202. package/dist/components/ds-table/filters/components/range-filter/range-filter.js +177 -0
  203. package/dist/components/ds-table/filters/components/range-filter/range-filter.js.map +1 -0
  204. package/dist/components/ds-table/filters/components/range-filter/range-filter.module.cjs +11 -0
  205. package/dist/components/ds-table/filters/components/range-filter/range-filter.module.js +11 -0
  206. package/dist/components/ds-table/filters/components/range-filter/range-filter.module.js.map +1 -0
  207. package/dist/components/ds-table/filters/hooks/index.cjs +1 -0
  208. package/dist/components/ds-table/filters/hooks/index.d.ts +1 -0
  209. package/dist/components/ds-table/filters/hooks/index.js +1 -0
  210. package/dist/components/ds-table/filters/hooks/use-table-filters.cjs +211 -0
  211. package/dist/components/ds-table/filters/hooks/use-table-filters.d.cts +65 -0
  212. package/dist/components/ds-table/filters/hooks/use-table-filters.d.cts.map +1 -0
  213. package/dist/components/ds-table/filters/hooks/use-table-filters.d.ts +66 -0
  214. package/dist/components/ds-table/filters/hooks/use-table-filters.d.ts.map +1 -0
  215. package/dist/components/ds-table/filters/hooks/use-table-filters.js +211 -0
  216. package/dist/components/ds-table/filters/hooks/use-table-filters.js.map +1 -0
  217. package/dist/components/ds-table/filters/index.cjs +6 -0
  218. package/dist/components/ds-table/filters/index.d.ts +11 -0
  219. package/dist/components/ds-table/filters/index.js +6 -0
  220. package/dist/components/ds-table/filters/types/filter-adapter.types.d.cts +101 -0
  221. package/dist/components/ds-table/filters/types/filter-adapter.types.d.cts.map +1 -0
  222. package/dist/components/ds-table/filters/types/filter-adapter.types.d.ts +102 -0
  223. package/dist/components/ds-table/filters/types/filter-adapter.types.d.ts.map +1 -0
  224. package/dist/components/ds-table/index.cjs +5 -0
  225. package/dist/components/ds-table/index.d.ts +8 -0
  226. package/dist/components/ds-table/index.js +5 -0
  227. package/dist/components/ds-tag/ds-tag.cjs +254 -0
  228. package/dist/components/ds-tag/ds-tag.d.cts +25 -0
  229. package/dist/components/ds-tag/ds-tag.d.cts.map +1 -0
  230. package/dist/components/ds-tag/ds-tag.d.ts +25 -0
  231. package/dist/components/ds-tag/ds-tag.d.ts.map +1 -0
  232. package/dist/components/ds-tag/ds-tag.js +253 -0
  233. package/dist/components/ds-tag/ds-tag.js.map +1 -0
  234. package/dist/components/ds-tag/ds-tag.module.cjs +17 -0
  235. package/dist/components/ds-tag/ds-tag.module.js +17 -0
  236. package/dist/components/ds-tag/ds-tag.module.js.map +1 -0
  237. package/dist/components/ds-tag/ds-tag.types.d.cts +68 -0
  238. package/dist/components/ds-tag/ds-tag.types.d.cts.map +1 -0
  239. package/dist/components/ds-tag/ds-tag.types.d.ts +68 -0
  240. package/dist/components/ds-tag/ds-tag.types.d.ts.map +1 -0
  241. package/dist/components/ds-tag/index.cjs +1 -0
  242. package/dist/components/ds-tag/index.d.ts +2 -0
  243. package/dist/components/ds-tag/index.js +1 -0
  244. package/dist/components/ds-tag-filter/ds-tag-filter.cjs +325 -0
  245. package/dist/components/ds-tag-filter/ds-tag-filter.d.cts +24 -0
  246. package/dist/components/ds-tag-filter/ds-tag-filter.d.cts.map +1 -0
  247. package/dist/components/ds-tag-filter/ds-tag-filter.d.ts +24 -0
  248. package/dist/components/ds-tag-filter/ds-tag-filter.d.ts.map +1 -0
  249. package/dist/components/ds-tag-filter/ds-tag-filter.js +324 -0
  250. package/dist/components/ds-tag-filter/ds-tag-filter.js.map +1 -0
  251. package/dist/components/ds-tag-filter/ds-tag-filter.module.cjs +17 -0
  252. package/dist/components/ds-tag-filter/ds-tag-filter.module.js +17 -0
  253. package/dist/components/ds-tag-filter/ds-tag-filter.module.js.map +1 -0
  254. package/dist/components/ds-tag-filter/ds-tag-filter.types.d.cts +71 -0
  255. package/dist/components/ds-tag-filter/ds-tag-filter.types.d.cts.map +1 -0
  256. package/dist/components/ds-tag-filter/ds-tag-filter.types.d.ts +72 -0
  257. package/dist/components/ds-tag-filter/ds-tag-filter.types.d.ts.map +1 -0
  258. package/dist/components/ds-tag-filter/hooks/use-tag-overflow-calculation.cjs +137 -0
  259. package/dist/components/ds-tag-filter/hooks/use-tag-overflow-calculation.js +137 -0
  260. package/dist/components/ds-tag-filter/hooks/use-tag-overflow-calculation.js.map +1 -0
  261. package/dist/components/ds-tag-filter/index.cjs +1 -0
  262. package/dist/components/ds-tag-filter/index.d.ts +2 -0
  263. package/dist/components/ds-tag-filter/index.js +1 -0
  264. package/dist/components/ds-tag-filter/utils.cjs +54 -0
  265. package/dist/components/ds-tag-filter/utils.js +52 -0
  266. package/dist/components/ds-tag-filter/utils.js.map +1 -0
  267. package/dist/components/ds-text-input/ds-text-input.js +2 -2
  268. package/dist/components/ds-toggle/ds-toggle.cjs +192 -0
  269. package/dist/components/ds-toggle/ds-toggle.d.cts +24 -0
  270. package/dist/components/ds-toggle/ds-toggle.d.cts.map +1 -0
  271. package/dist/components/ds-toggle/ds-toggle.d.ts +24 -0
  272. package/dist/components/ds-toggle/ds-toggle.d.ts.map +1 -0
  273. package/dist/components/ds-toggle/ds-toggle.js +191 -0
  274. package/dist/components/ds-toggle/ds-toggle.js.map +1 -0
  275. package/dist/components/ds-toggle/ds-toggle.module.cjs +13 -0
  276. package/dist/components/ds-toggle/ds-toggle.module.js +13 -0
  277. package/dist/components/ds-toggle/ds-toggle.module.js.map +1 -0
  278. package/dist/components/ds-toggle/ds-toggle.types.d.cts +67 -0
  279. package/dist/components/ds-toggle/ds-toggle.types.d.cts.map +1 -0
  280. package/dist/components/ds-toggle/ds-toggle.types.d.ts +67 -0
  281. package/dist/components/ds-toggle/ds-toggle.types.d.ts.map +1 -0
  282. package/dist/components/ds-toggle/index.cjs +1 -0
  283. package/dist/components/ds-toggle/index.d.ts +2 -0
  284. package/dist/components/ds-toggle/index.js +1 -0
  285. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.cts +5 -5
  286. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.ts +5 -5
  287. package/dist/index.cjs +31 -2
  288. package/dist/index.d.cts +23 -2
  289. package/dist/index.d.ts +30 -2
  290. package/dist/index.js +21 -3
  291. package/dist/index.min.css +1 -1
  292. package/package.json +7 -2
  293. package/src/components/ds-avatar/_mixins.scss +45 -0
  294. package/src/components/ds-avatar/ds-avatar.module.scss +52 -0
  295. package/src/components/ds-avatar/ds-avatar.tsx +42 -0
  296. package/src/components/ds-avatar/ds-avatar.types.ts +41 -0
  297. package/src/components/ds-avatar/index.ts +2 -0
  298. package/src/components/ds-avatar-group/ds-avatar-group.module.scss +70 -0
  299. package/src/components/ds-avatar-group/ds-avatar-group.tsx +51 -0
  300. package/src/components/ds-avatar-group/ds-avatar-group.types.ts +27 -0
  301. package/src/components/ds-avatar-group/index.ts +2 -0
  302. package/src/components/ds-button/versions/ds-button-new/ds-button-new.module.scss +0 -1
  303. package/src/components/ds-chip/ds-chip.tsx +2 -1
  304. package/src/components/ds-chip/ds-chip.types.tsx +13 -0
  305. package/src/components/ds-chip/index.tsx +8 -0
  306. package/src/components/ds-chip-group/ds-chip-group.tsx +2 -2
  307. package/src/components/ds-chip-group/ds-chip-group.types.ts +8 -0
  308. package/src/components/ds-chip-group/index.ts +1 -0
  309. package/src/components/ds-date-input/ds-date-input.module.scss +246 -0
  310. package/src/components/ds-date-input/ds-date-input.tsx +309 -0
  311. package/src/components/ds-date-input/ds-date-input.types.tsx +104 -0
  312. package/src/components/ds-date-input/ds-date-input.utils.ts +242 -0
  313. package/src/components/ds-date-input/index.ts +2 -0
  314. package/src/components/ds-divider/ds-divider.module.scss +21 -0
  315. package/src/components/ds-divider/ds-divider.tsx +22 -0
  316. package/src/components/ds-divider/ds-divider.types.ts +21 -0
  317. package/src/components/ds-divider/index.ts +2 -0
  318. package/src/components/ds-dropdown-menu/ds-dropdown-menu.module.scss +11 -3
  319. package/src/components/ds-dropdown-menu/ds-dropdown-menu.tsx +17 -1
  320. package/src/components/ds-dropdown-menu/ds-dropdown-menu.types.tsx +5 -0
  321. package/src/components/ds-form-control/ds-form-control.tsx +2 -0
  322. package/src/components/ds-radio-group/ds-radio-group.types.tsx +1 -1
  323. package/src/components/ds-table/filters/hooks/index.ts +1 -0
  324. package/src/components/ds-table/index.ts +2 -0
  325. package/src/components/ds-tag/ds-tag.module.scss +112 -0
  326. package/src/components/ds-tag/ds-tag.tsx +124 -0
  327. package/src/components/ds-tag/ds-tag.types.tsx +67 -0
  328. package/src/components/ds-tag/index.tsx +2 -0
  329. package/src/components/ds-tag-filter/ds-tag-filter.module.scss +72 -0
  330. package/src/components/ds-tag-filter/ds-tag-filter.tsx +178 -0
  331. package/src/components/ds-tag-filter/ds-tag-filter.types.ts +68 -0
  332. package/src/components/ds-tag-filter/hooks/use-tag-overflow-calculation.ts +135 -0
  333. package/src/components/ds-tag-filter/index.ts +2 -0
  334. package/src/components/ds-tag-filter/utils.test.ts +401 -0
  335. package/src/components/ds-tag-filter/utils.ts +65 -0
  336. package/src/components/ds-toggle/ds-toggle.module.scss +154 -0
  337. package/src/components/ds-toggle/ds-toggle.tsx +78 -0
  338. package/src/components/ds-toggle/ds-toggle.types.tsx +76 -0
  339. package/src/components/ds-toggle/index.tsx +2 -0
  340. package/src/index.ts +7 -0
@@ -0,0 +1,67 @@
1
+ import type { CSSProperties, KeyboardEvent, MouseEvent, ReactNode, Ref } from 'react';
2
+
3
+ export const tagSizes = ['medium', 'small'] as const;
4
+ export type TagSize = (typeof tagSizes)[number];
5
+
6
+ export const tagVariants = ['default', 'include', 'exclude'] as const;
7
+ export type TagVariant = (typeof tagVariants)[number];
8
+
9
+ export interface DsTagProps {
10
+ /**
11
+ * Ref to the tag element
12
+ */
13
+ ref?: Ref<HTMLElement>;
14
+ /**
15
+ * The label text to display in the tag
16
+ */
17
+ label: ReactNode;
18
+ /**
19
+ * Additional CSS class names
20
+ */
21
+ className?: string;
22
+ /**
23
+ * Locale object (you can pass custom strings for localization)
24
+ */
25
+ locale?: {
26
+ deleteAriaLabel?: string;
27
+ };
28
+ /**
29
+ * Additional styles to apply to the component
30
+ */
31
+ style?: CSSProperties;
32
+ /**
33
+ * Optional click handler, if not present Tag will not be in "clickable" state
34
+ */
35
+ onClick?: (event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>) => void;
36
+ /**
37
+ * Callback function when the delete icon is clicked
38
+ */
39
+ onDelete?: (event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>) => void;
40
+ /**
41
+ * Size of the tag
42
+ * @default 'medium'
43
+ */
44
+ size?: TagSize;
45
+ /**
46
+ * Whether the tag is in a selected/pressed state
47
+ * @default false
48
+ */
49
+ selected?: boolean;
50
+ /**
51
+ * Variant of the tag
52
+ * @default 'default'
53
+ */
54
+ variant?: TagVariant;
55
+ /**
56
+ * Whether the tag is disabled
57
+ * @default false
58
+ */
59
+ disabled?: boolean;
60
+
61
+ slots?: {
62
+ /**
63
+ * Icon to display at the start of the input
64
+ */
65
+ icon?: ReactNode;
66
+ };
67
+ }
@@ -0,0 +1,2 @@
1
+ export { default as DsTag } from './ds-tag';
2
+ export type { TagSize, TagVariant, DsTagProps } from './ds-tag.types';
@@ -0,0 +1,72 @@
1
+ .container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--spacing-xs);
5
+ padding: var(--spacing-xs) var(--spacing-standard);
6
+ background: var(--color-background-selected-weak);
7
+ border: 1px solid var(--color-outline-weak);
8
+ border-radius: var(--spacing-3xs);
9
+ max-height: 88px; // hardcoded value required in the design
10
+ overflow: hidden;
11
+
12
+ &.expanded {
13
+ max-height: none;
14
+ }
15
+ }
16
+
17
+ .row1 {
18
+ display: flex;
19
+ align-items: center;
20
+ width: 100%;
21
+ gap: var(--spacing-xs);
22
+ flex-shrink: 0;
23
+ }
24
+
25
+ .row2 {
26
+ display: flex;
27
+ align-items: center;
28
+ width: 100%;
29
+ gap: var(--spacing-xs);
30
+ flex-wrap: wrap;
31
+ }
32
+
33
+ .label {
34
+ color: var(--color-font-secondary);
35
+ white-space: nowrap;
36
+ flex-shrink: 0;
37
+ }
38
+
39
+ .expandTag {
40
+ cursor: pointer;
41
+ flex-shrink: 0;
42
+ }
43
+
44
+ .itemCheckbox {
45
+ display: flex;
46
+ align-items: center;
47
+ }
48
+
49
+ .clearContent {
50
+ background: transparent !important;
51
+ }
52
+
53
+ .clearButton {
54
+ margin-left: auto;
55
+ padding: 0;
56
+ flex-shrink: 0;
57
+ }
58
+
59
+ // Hidden container for measuring element widths
60
+ // Must render all elements to get accurate measurements
61
+ .measurementContainer {
62
+ pointer-events: none;
63
+ display: flex;
64
+ align-items: center;
65
+ gap: var(--spacing-xs);
66
+
67
+ // Ensure it doesn't affect layout
68
+ height: 0;
69
+ overflow: hidden;
70
+ position: absolute;
71
+ visibility: hidden;
72
+ }
@@ -0,0 +1,178 @@
1
+ import { useRef, useState } from 'react';
2
+ import { createPortal } from 'react-dom';
3
+ import classNames from 'classnames';
4
+ import styles from './ds-tag-filter.module.scss';
5
+ import type { DsTagFilterProps, TagFilterItem } from './ds-tag-filter.types';
6
+ import { useTagOverflowCalculation } from './hooks/use-tag-overflow-calculation';
7
+ import { DsTypography } from '../ds-typography';
8
+ import { DsTag } from '../ds-tag';
9
+ import { DsButton } from '../ds-button';
10
+ import { DsIcon } from '../ds-icon';
11
+
12
+ /**
13
+ * Design system TagFilter component
14
+ *
15
+ * A component for displaying active filters as tags with overflow handling.
16
+ * Shows visible tags in up to 2 rows, with the Expand button to show hidden items.
17
+ */
18
+ const DsTagFilter = ({
19
+ items,
20
+ locale = {},
21
+ className,
22
+ style,
23
+ onClearAll,
24
+ onItemDelete,
25
+ onItemSelect,
26
+ onExpand,
27
+ }: DsTagFilterProps) => {
28
+ const [expanded, setExpanded] = useState(false);
29
+ const containerRef = useRef<HTMLDivElement>(null);
30
+ const measurementRef = useRef<HTMLDivElement>(null);
31
+
32
+ const { row1TagCount, row2TagCount, hasOverflow } = useTagOverflowCalculation({
33
+ containerRef,
34
+ measurementRef,
35
+ totalItems: items.length,
36
+ expanded,
37
+ });
38
+
39
+ const {
40
+ label = 'Filtered by:',
41
+ clearButton = 'Clear all filters',
42
+ hiddenCountPlural = 'filters',
43
+ hiddenCountSingular = 'filter',
44
+ collapseTagLabel = 'Collapse',
45
+ } = locale;
46
+
47
+ // Split items into row sections
48
+ const row1Tags = items.slice(0, row1TagCount);
49
+ const row2Tags = items.slice(row1TagCount, row1TagCount + row2TagCount);
50
+ const hiddenTags = expanded ? [] : items.slice(row1TagCount + row2TagCount);
51
+
52
+ if (items.length === 0) {
53
+ return null;
54
+ }
55
+
56
+ const hiddenCount = hiddenTags.length;
57
+ const hasRow2Content = row2Tags.length > 0 || hasOverflow;
58
+
59
+ const renderTag = (item: TagFilterItem) => {
60
+ const tagProps = item.slotProps?.tag || {};
61
+
62
+ return (
63
+ <DsTag
64
+ {...tagProps}
65
+ key={item.id}
66
+ label={item.label}
67
+ selected={item.selected}
68
+ onClick={onItemSelect ? () => onItemSelect(item) : undefined}
69
+ onDelete={onItemDelete ? () => onItemDelete(item) : undefined}
70
+ />
71
+ );
72
+ };
73
+
74
+ const handleExpandToggle = () => {
75
+ const newExpanded = !expanded;
76
+ setExpanded(newExpanded);
77
+ onExpand?.(newExpanded);
78
+ };
79
+
80
+ // Measurement container rendered via portal to keep it outside the component's DOM tree
81
+ // This prevents Testing Library from finding duplicate elements
82
+ // We use it to calculate the number of remaining tags to render
83
+ const measurementContainer = (
84
+ <div ref={measurementRef} className={styles.measurementContainer} aria-hidden="true">
85
+ {label && (
86
+ <span data-measure-label="">
87
+ <DsTypography variant="body-sm-reg" className={styles.label}>
88
+ {label}
89
+ </DsTypography>
90
+ </span>
91
+ )}
92
+ {items.map((item) => (
93
+ <DsTag
94
+ key={item.id}
95
+ data-measure-tag=""
96
+ label={item.label}
97
+ selected={item.selected}
98
+ onClick={onItemSelect ? () => onItemSelect(item) : undefined}
99
+ onDelete={onItemDelete ? () => onItemDelete(item) : undefined}
100
+ />
101
+ ))}
102
+ {onClearAll && (
103
+ <DsButton
104
+ data-measure-clear=""
105
+ design="v1.2"
106
+ buttonType="tertiary"
107
+ variant="ghost"
108
+ className={styles.clearButton}
109
+ contentClassName={styles.clearContent}
110
+ size="small"
111
+ >
112
+ <DsIcon icon="close" />
113
+ {clearButton}
114
+ </DsButton>
115
+ )}
116
+ <DsTag data-measure-expand="" label="+99 filters" className={styles.expandTag} />
117
+ </div>
118
+ );
119
+
120
+ /**
121
+ * IMPORTANT!
122
+ * If you make any changes to this layout (styling, JSX, anything that affects it.)
123
+ * please, apply the exact same changes to the "measurementContainer"
124
+ */
125
+ return (
126
+ <>
127
+ <div
128
+ ref={containerRef}
129
+ className={classNames(styles.container, expanded && styles.expanded, className)}
130
+ style={style}
131
+ >
132
+ <div className={styles.row1}>
133
+ {label && (
134
+ <DsTypography variant="body-sm-reg" className={styles.label}>
135
+ {label}
136
+ </DsTypography>
137
+ )}
138
+ {row1Tags.map((item) => renderTag(item))}
139
+ {onClearAll && (
140
+ <DsButton
141
+ design="v1.2"
142
+ buttonType="tertiary"
143
+ variant="ghost"
144
+ className={styles.clearButton}
145
+ contentClassName={styles.clearContent}
146
+ size="small"
147
+ onClick={onClearAll}
148
+ >
149
+ <DsIcon icon="close" />
150
+ {clearButton}
151
+ </DsButton>
152
+ )}
153
+ </div>
154
+
155
+ {hasRow2Content && (
156
+ <div className={styles.row2}>
157
+ {row2Tags.map((item) => renderTag(item))}
158
+ {hasOverflow && (
159
+ <DsTag
160
+ label={
161
+ expanded
162
+ ? collapseTagLabel
163
+ : `+${String(hiddenCount)} ${hiddenCount === 1 ? hiddenCountSingular : hiddenCountPlural}`
164
+ }
165
+ selected={expanded}
166
+ className={styles.expandTag}
167
+ onClick={handleExpandToggle}
168
+ />
169
+ )}
170
+ </div>
171
+ )}
172
+ </div>
173
+ {createPortal(measurementContainer, document.body)}
174
+ </>
175
+ );
176
+ };
177
+
178
+ export default DsTagFilter;
@@ -0,0 +1,68 @@
1
+ import type { CSSProperties } from 'react';
2
+ import type { DsTagProps } from '../ds-tag';
3
+
4
+ export interface TagFilterItem {
5
+ /**
6
+ * Unique identifier for the tag
7
+ */
8
+ id: string;
9
+ /**
10
+ * The label text to display in the tag
11
+ */
12
+ label: string;
13
+ /**
14
+ * Additional metadata to store with the tag
15
+ */
16
+ metadata?: Record<string, unknown>;
17
+ /**
18
+ * Whether the tag is selected/checked
19
+ */
20
+ selected?: boolean;
21
+ /**
22
+ * Additional props to pass to the components
23
+ */
24
+ slotProps?: {
25
+ tag?: Partial<DsTagProps>;
26
+ };
27
+ }
28
+
29
+ export interface DsTagFilterProps {
30
+ /**
31
+ * Array of tag items to display
32
+ */
33
+ items: TagFilterItem[];
34
+ /**
35
+ * Locale object (you can pass custom strings for localization)
36
+ */
37
+ locale?: {
38
+ label?: string;
39
+ clearButton?: string;
40
+ collapseTagLabel?: string;
41
+ hiddenCountSingular?: string;
42
+ hiddenCountPlural?: string;
43
+ };
44
+ /**
45
+ * Callback when "Clear all" is clicked
46
+ */
47
+ onClearAll?: () => void;
48
+ /**
49
+ * Callback when a tag is deleted/removed
50
+ */
51
+ onItemDelete?: (item: TagFilterItem) => void;
52
+ /**
53
+ * Callback when a tag is selected
54
+ */
55
+ onItemSelect?: (item: TagFilterItem) => void;
56
+ /**
57
+ * Callback when the Expand button is clicked
58
+ */
59
+ onExpand?: (expanded?: boolean) => void;
60
+ /**
61
+ * Additional CSS class names
62
+ */
63
+ className?: string;
64
+ /**
65
+ * Additional styles to apply to the component
66
+ */
67
+ style?: CSSProperties;
68
+ }
@@ -0,0 +1,135 @@
1
+ import { type RefObject, useCallback, useLayoutEffect, useState } from 'react';
2
+ import { fitTagsInRow, getContainerAvailableWidth, getElementMeasurements } from '../utils';
3
+
4
+ interface UseTagOverflowCalculationOptions {
5
+ containerRef: RefObject<HTMLDivElement | null>;
6
+ measurementRef: RefObject<HTMLDivElement | null>;
7
+ totalItems: number;
8
+ expanded: boolean;
9
+ }
10
+
11
+ interface UseTagOverflowCalculationResult {
12
+ row1TagCount: number;
13
+ row2TagCount: number;
14
+ hasOverflow: boolean;
15
+ }
16
+
17
+ // Extra space needed per row for animated delete button that appears on hover
18
+ const TAG_HOVER_BUTTON_SPACE = 20;
19
+
20
+ /**
21
+ * Custom hook to calculate how many tags can fit in 2 rows.
22
+ *
23
+ * Row 1: Label + Tags + Clear Button
24
+ * Row 2: Remaining Tags + Expand Tag (only if overflow)
25
+ *
26
+ * Measures actual element widths to determine optimal placement.
27
+ */
28
+ export const useTagOverflowCalculation = ({
29
+ containerRef,
30
+ measurementRef,
31
+ totalItems,
32
+ expanded,
33
+ }: UseTagOverflowCalculationOptions): UseTagOverflowCalculationResult => {
34
+ const [state, setState] = useState<UseTagOverflowCalculationResult>({
35
+ row1TagCount: 0,
36
+ row2TagCount: 0,
37
+ hasOverflow: false,
38
+ });
39
+
40
+ const calculateLayout = useCallback(() => {
41
+ if (!containerRef.current || !measurementRef.current) {
42
+ return;
43
+ }
44
+
45
+ const container = containerRef.current;
46
+ const measurementContainer = measurementRef.current;
47
+
48
+ const { tagWidths, labelWidth, clearButtonWidth, expandTagWidth, gap } =
49
+ getElementMeasurements(measurementContainer);
50
+
51
+ if (tagWidths.length === 0) {
52
+ setState({ row1TagCount: 0, row2TagCount: 0, hasOverflow: false });
53
+ return;
54
+ }
55
+
56
+ const containerWidth = getContainerAvailableWidth(container);
57
+
58
+ // Calculate Row 1 available space (Label + Tags + Clear Button)
59
+ const row1AvailableWidth = containerWidth - labelWidth - clearButtonWidth - TAG_HOVER_BUTTON_SPACE;
60
+
61
+ // Calculate how many tags fit in Row 1
62
+ const row1Result = fitTagsInRow(tagWidths, row1AvailableWidth, gap);
63
+ const remainingTags = tagWidths.slice(row1Result.count);
64
+
65
+ if (remainingTags.length === 0) {
66
+ // All tags fit in Row 1, no overflow
67
+ setState({ row1TagCount: row1Result.count, row2TagCount: 0, hasOverflow: false });
68
+ return;
69
+ }
70
+
71
+ // Calculate with expand tag reserved (pessimistic)
72
+ const row2AvailableWithExpand = containerWidth - expandTagWidth - TAG_HOVER_BUTTON_SPACE;
73
+ const row2WithExpandResult = fitTagsInRow(remainingTags, row2AvailableWithExpand, gap);
74
+
75
+ // Check if there's overflow (more remaining tags than fit in Row 2 with expand)
76
+ const overflowExists = remainingTags.length > row2WithExpandResult.count;
77
+
78
+ if (overflowExists) {
79
+ // Use the count with expand tag space reserved
80
+ setState({
81
+ row1TagCount: row1Result.count,
82
+ row2TagCount: row2WithExpandResult.count,
83
+ hasOverflow: true,
84
+ });
85
+ } else {
86
+ // No overflow - recalculate Row 2 without reserving expand tag space
87
+ const row2AvailableWithoutExpand = containerWidth - TAG_HOVER_BUTTON_SPACE;
88
+ const row2FullResult = fitTagsInRow(remainingTags, row2AvailableWithoutExpand, gap);
89
+
90
+ // Double-check: if even without expand tag we can't fit all, we have overflow
91
+ if (row2FullResult.count < remainingTags.length) {
92
+ setState({
93
+ row1TagCount: row1Result.count,
94
+ row2TagCount: row2WithExpandResult.count,
95
+ hasOverflow: true,
96
+ });
97
+ } else {
98
+ setState({ row1TagCount: row1Result.count, row2TagCount: row2FullResult.count, hasOverflow: false });
99
+ }
100
+ }
101
+ }, [containerRef, measurementRef]);
102
+
103
+ useLayoutEffect(() => {
104
+ // Use requestAnimationFrame to ensure DOM is fully laid out
105
+ const rafId = requestAnimationFrame(() => {
106
+ calculateLayout();
107
+ });
108
+
109
+ const resizeObserver = new ResizeObserver(() => {
110
+ requestAnimationFrame(() => {
111
+ calculateLayout();
112
+ });
113
+ });
114
+
115
+ if (containerRef.current) {
116
+ resizeObserver.observe(containerRef.current);
117
+ }
118
+
119
+ return () => {
120
+ cancelAnimationFrame(rafId);
121
+ resizeObserver.disconnect();
122
+ };
123
+ }, [containerRef, measurementRef, totalItems, expanded, calculateLayout]);
124
+
125
+ // When expanded, show all tags
126
+ if (expanded) {
127
+ return {
128
+ row1TagCount: state.row1TagCount,
129
+ row2TagCount: totalItems - state.row1TagCount,
130
+ hasOverflow: true, // Keep expand button visible to allow collapse
131
+ };
132
+ }
133
+
134
+ return state;
135
+ };
@@ -0,0 +1,2 @@
1
+ export { default as DsTagFilter } from './ds-tag-filter';
2
+ export type { TagFilterItem, DsTagFilterProps } from './ds-tag-filter.types';