@drivenets/design-system 0.15.0 → 0.17.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 (206) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/index.cjs +1092 -381
  3. package/dist/index.d.cts +886 -1204
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.ts +886 -1204
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1076 -377
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.min.css +1 -1
  10. package/package.json +36 -34
  11. package/src/components/ds-alert-banner/ds-alert-banner.tsx +16 -6
  12. package/src/components/ds-autocomplete/ds-autocomplete.figma.ts +36 -0
  13. package/src/components/ds-autocomplete/ds-autocomplete.tsx +2 -0
  14. package/src/components/ds-avatar/ds-avatar.figma.ts +30 -0
  15. package/src/components/ds-avatar/ds-avatar.tsx +6 -1
  16. package/src/components/ds-avatar/ds-avatar.types.ts +5 -2
  17. package/src/components/ds-avatar-group/ds-avatar-group.figma.ts +27 -0
  18. package/src/components/ds-avatar-group/ds-avatar-group.tsx +6 -1
  19. package/src/components/ds-avatar-group/ds-avatar-group.types.ts +3 -1
  20. package/src/components/ds-breadcrumb/ds-breadcrumb.figma.ts +19 -0
  21. package/src/components/ds-breadcrumb/ds-breadcrumb.tsx +2 -0
  22. package/src/components/ds-button/ds-button.tsx +2 -0
  23. package/src/components/ds-button-v3/ds-button-v3.figma.ts +3 -3
  24. package/src/components/ds-button-v3/ds-button-v3.tsx +6 -0
  25. package/src/components/ds-button-v3/index.ts +2 -0
  26. package/src/components/ds-card/ds-card.tsx +7 -3
  27. package/src/components/ds-card/figma/ds-card-content.figma.ts +2 -2
  28. package/src/components/ds-card/figma/ds-card-footer.figma.ts +2 -2
  29. package/src/components/ds-card/figma/ds-card-header.figma.ts +2 -2
  30. package/src/components/ds-card/figma/ds-card.figma.ts +2 -2
  31. package/src/components/ds-catalog-layout/ds-catalog-layout.figma.ts +51 -0
  32. package/src/components/ds-catalog-layout/ds-catalog-layout.tsx +15 -6
  33. package/src/components/ds-checkbox/ds-checkbox-level-2.figma.ts +40 -0
  34. package/src/components/ds-checkbox/ds-checkbox.figma.ts +45 -0
  35. package/src/components/ds-checkbox/ds-checkbox.module.scss +1 -1
  36. package/src/components/ds-checkbox/ds-checkbox.tsx +9 -1
  37. package/src/components/ds-checkbox-group/ds-checkbox-group.figma.ts +15 -0
  38. package/src/components/ds-checkbox-group/ds-checkbox-group.tsx +2 -0
  39. package/src/components/ds-chip/ds-chip.tsx +2 -0
  40. package/src/components/ds-chip-group/ds-chip-group.tsx +2 -0
  41. package/src/components/ds-comment-bubble/components/ds-comment-thread/ds-comment-thread.tsx +1 -0
  42. package/src/components/ds-comment-bubble/components/ds-thread-item/ds-thread-item.tsx +1 -0
  43. package/src/components/ds-comment-bubble/ds-comment-bubble.tsx +1 -0
  44. package/src/components/ds-comment-card/ds-comment-card.tsx +1 -0
  45. package/src/components/ds-comment-indicator/ds-comment-indicator.tsx +1 -0
  46. package/src/components/ds-comments-drawer/components/comments-filter-modal/index.ts +0 -1
  47. package/src/components/ds-comments-drawer/ds-comments-drawer.tsx +1 -0
  48. package/src/components/ds-confirmation/ds-confirmation.tsx +13 -10
  49. package/src/components/ds-date-input/ds-date-input.tsx +2 -0
  50. package/src/components/ds-date-picker/ds-date-picker.figma.ts +2 -2
  51. package/src/components/ds-date-picker/ds-date-picker.tsx +9 -0
  52. package/src/components/ds-date-picker/ds-date-picker.types.ts +1 -1
  53. package/src/components/ds-date-range-picker/ds-date-range-picker.tsx +2 -0
  54. package/src/components/ds-dialog/ds-dialog.tsx +9 -0
  55. package/src/components/ds-dialog/ds-dialog.types.ts +1 -1
  56. package/src/components/ds-divider/ds-divider.figma.ts +19 -0
  57. package/src/components/ds-divider/ds-divider.tsx +2 -0
  58. package/src/components/ds-drawer/ds-drawer.tsx +19 -8
  59. package/src/components/ds-drawer/figma/ds-drawer-content.figma.ts +15 -0
  60. package/src/components/ds-drawer/figma/ds-drawer-footer.figma.ts +19 -0
  61. package/src/components/ds-drawer/figma/ds-drawer-header.figma.ts +16 -0
  62. package/src/components/ds-drawer/figma/ds-drawer.figma.ts +36 -0
  63. package/src/components/ds-dropdown-menu/ds-dropdown-menu.module.scss +12 -3
  64. package/src/components/ds-dropdown-menu/ds-dropdown-menu.tsx +24 -6
  65. package/src/components/ds-dropdown-menu/ds-dropdown-menu.types.ts +10 -1
  66. package/src/components/ds-dropdown-menu/figma/ds-dropdown-menu-footer.figma.ts +11 -0
  67. package/src/components/ds-dropdown-menu/figma/ds-dropdown-menu-group.figma.ts +23 -0
  68. package/src/components/ds-dropdown-menu/figma/ds-dropdown-menu-item.figma.ts +29 -0
  69. package/src/components/ds-dropdown-menu/figma/ds-dropdown-menu-separator.figma.ts +11 -0
  70. package/src/components/ds-dropdown-menu/figma/ds-dropdown-menu.figma.ts +24 -0
  71. package/src/components/ds-expandable-text-input/ds-expandable-text-input.figma.ts +24 -0
  72. package/src/components/ds-expandable-text-input/ds-expandable-text-input.tsx +1 -0
  73. package/src/components/ds-file-upload/components/file-upload-item/index.ts +0 -1
  74. package/src/components/ds-file-upload/ds-file-upload.figma.ts +29 -0
  75. package/src/components/ds-file-upload/ds-file-upload.tsx +2 -0
  76. package/src/components/ds-filter-status-icon/ds-filter-status-icon.figma.ts +22 -0
  77. package/src/components/ds-filter-status-icon/ds-filter-status-icon.tsx +1 -0
  78. package/src/components/ds-form-control/ds-form-control.figma.ts +2 -2
  79. package/src/components/ds-form-control/ds-form-control.tsx +16 -11
  80. package/src/components/ds-grid/index.ts +3 -0
  81. package/src/components/ds-icon/ds-icon.tsx +2 -0
  82. package/src/components/ds-icon/figma/ds-icon-material.figma.batch.ts +1 -1
  83. package/src/components/ds-icon/figma/ds-icon-special.figma.batch.ts +1 -1
  84. package/src/components/ds-key-value-pair/ds-key-value-pair.figma.ts +24 -0
  85. package/src/components/ds-key-value-pair/ds-key-value-pair.tsx +2 -0
  86. package/src/components/ds-loader/ds-loader.figma.ts +11 -0
  87. package/src/components/ds-loader/ds-loader.tsx +2 -0
  88. package/src/components/ds-modal/ds-modal.tsx +17 -7
  89. package/src/components/ds-modal/figma/ds-modal-content.figma.ts +2 -2
  90. package/src/components/ds-modal/figma/ds-modal-footer.figma.ts +2 -2
  91. package/src/components/ds-modal/figma/ds-modal-header.figma.ts +2 -2
  92. package/src/components/ds-modal/figma/ds-modal.figma.ts +2 -2
  93. package/src/components/ds-number-input/ds-number-input.tsx +3 -0
  94. package/src/components/ds-panel/ds-panel.figma.ts +16 -0
  95. package/src/components/ds-panel/index.ts +2 -0
  96. package/src/components/ds-password-input/ds-password-input.tsx +2 -0
  97. package/src/components/ds-popover/ds-popover.tsx +9 -0
  98. package/src/components/ds-popover/figma/ds-popover-content-item.figma.ts +18 -0
  99. package/src/components/ds-popover/figma/ds-popover-content.figma.ts +15 -0
  100. package/src/components/ds-popover/figma/ds-popover-footer.figma.ts +19 -0
  101. package/src/components/ds-popover/figma/ds-popover-header.figma.ts +16 -0
  102. package/src/components/ds-popover/figma/ds-popover.figma.ts +34 -0
  103. package/src/components/ds-progress-arc/ds-progress-arc.figma.ts +23 -0
  104. package/src/components/ds-progress-arc/ds-progress-arc.tsx +2 -0
  105. package/src/components/ds-progress-donut/ds-progress-donut.figma.ts +45 -0
  106. package/src/components/ds-progress-donut/ds-progress-donut.tsx +2 -0
  107. package/src/components/ds-progress-linear/ds-progress-linear.figma.ts +26 -0
  108. package/src/components/ds-progress-linear/ds-progress-linear.tsx +2 -0
  109. package/src/components/ds-progress-task-bar/ds-progress-task-bar.figma.ts +2 -2
  110. package/src/components/ds-progress-task-bar/ds-progress-task-bar.tsx +2 -0
  111. package/src/components/ds-radio-group/ds-radio-group.tsx +3 -0
  112. package/src/components/ds-radio-group/figma/ds-radio-group-item.figma.ts +24 -0
  113. package/src/components/ds-radio-group/figma/ds-radio-group.figma.ts +14 -0
  114. package/src/components/ds-segment-group/ds-segment-group.tsx +3 -0
  115. package/src/components/ds-segment-group/figma/ds-segment-group-item.figma.ts +25 -0
  116. package/src/components/ds-segment-group/figma/ds-segment-group.figma.ts +23 -0
  117. package/src/components/ds-select/ds-select.figma.ts +2 -2
  118. package/src/components/ds-select/ds-select.tsx +2 -0
  119. package/src/components/ds-site-node/ds-site-node.figma.ts +27 -0
  120. package/src/components/ds-site-node/ds-site-node.module.scss +59 -0
  121. package/src/components/ds-site-node/ds-site-node.tsx +73 -0
  122. package/src/components/ds-site-node/ds-site-node.types.ts +36 -0
  123. package/src/components/ds-site-node/hooks/use-is-overflowing.ts +31 -0
  124. package/src/components/ds-site-node/index.ts +3 -0
  125. package/src/components/ds-skeleton/ds-skeleton-circle.tsx +2 -0
  126. package/src/components/ds-skeleton/ds-skeleton-rect.tsx +2 -0
  127. package/src/components/ds-skeleton/ds-skeleton-text.tsx +2 -0
  128. package/src/components/ds-skeleton/ds-skeleton.ts +7 -1
  129. package/src/components/ds-smart-tabs/ds-smart-tabs.tsx +7 -2
  130. package/src/components/ds-spinner/ds-spinner.figma.ts +19 -0
  131. package/src/components/ds-spinner/ds-spinner.tsx +2 -0
  132. package/src/components/ds-split-button/ds-split-button.figma.ts +2 -2
  133. package/src/components/ds-split-button/ds-split-button.tsx +6 -0
  134. package/src/components/ds-status-badge/ds-status-badge.tsx +2 -0
  135. package/src/components/ds-status-badge-v2/ds-status-badge-v2.figma.ts +2 -2
  136. package/src/components/ds-status-badge-v2/index.ts +2 -0
  137. package/src/components/ds-stepper/components/ds-step-content.tsx +2 -0
  138. package/src/components/ds-stepper/components/ds-step-next-button.tsx +2 -0
  139. package/src/components/ds-stepper/components/ds-step.tsx +2 -0
  140. package/src/components/ds-stepper/ds-stepper.figma.ts +38 -0
  141. package/src/components/ds-stepper/ds-stepper.tsx +1 -0
  142. package/src/components/ds-system-status/ds-system-status.tsx +2 -0
  143. package/src/components/ds-table/components/ds-table-group-header-cell/index.ts +0 -1
  144. package/src/components/ds-table/components/ds-table-header/ds-table-header.module.scss +2 -2
  145. package/src/components/ds-table/components/ds-table-header/ds-table-header.tsx +2 -4
  146. package/src/components/ds-table/components/edit/cell-editors/ds-table-edit-cell-checkbox.tsx +1 -0
  147. package/src/components/ds-table/components/edit/cell-editors/ds-table-edit-cell-date.tsx +1 -0
  148. package/src/components/ds-table/components/edit/cell-editors/ds-table-edit-cell-number.tsx +1 -0
  149. package/src/components/ds-table/components/edit/cell-editors/ds-table-edit-cell-select.tsx +1 -0
  150. package/src/components/ds-table/components/edit/cell-editors/ds-table-edit-cell-text.tsx +1 -0
  151. package/src/components/ds-table/components/edit/ds-table-editable-cell/ds-table-editable-cell.tsx +1 -0
  152. package/src/components/ds-table/components/edit/ds-table-editing-cell/ds-table-editing-cell.tsx +1 -0
  153. package/src/components/ds-table/ds-table.module.scss +15 -0
  154. package/src/components/ds-table/ds-table.tsx +39 -34
  155. package/src/components/ds-table/ds-table.types.ts +6 -0
  156. package/src/components/ds-table/figma/ds-table-expandable.figma.ts +2 -2
  157. package/src/components/ds-table/figma/ds-table.figma.ts +2 -2
  158. package/src/components/ds-table/index.ts +3 -0
  159. package/src/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.tsx +2 -0
  160. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.tsx +2 -0
  161. package/src/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.tsx +2 -0
  162. package/src/components/ds-tabs/ds-tabs.tsx +2 -0
  163. package/src/components/ds-tabs/figma/ds-tabs-tab-vertical.figma.ts +2 -2
  164. package/src/components/ds-tabs/figma/ds-tabs-tab.figma.ts +2 -2
  165. package/src/components/ds-tabs/figma/ds-tabs-vertical.figma.ts +2 -2
  166. package/src/components/ds-tabs/figma/ds-tabs.figma.ts +2 -2
  167. package/src/components/ds-tag/ds-tag.tsx +2 -0
  168. package/src/components/ds-tag-filter/ds-tag-filter.tsx +2 -0
  169. package/src/components/ds-text-input/ds-input-field-v02.figma.ts +87 -0
  170. package/src/components/ds-text-input/ds-text-input.figma.ts +2 -2
  171. package/src/components/ds-text-input/ds-text-input.tsx +2 -0
  172. package/src/components/ds-textarea/ds-textarea.tsx +2 -0
  173. package/src/components/ds-time-picker/ds-time-picker.figma.ts +2 -2
  174. package/src/components/ds-time-picker/ds-time-picker.tsx +2 -0
  175. package/src/components/ds-toast/ds-toast-context.tsx +1 -0
  176. package/src/components/ds-toast/ds-toast.figma.ts +34 -0
  177. package/src/components/ds-toast/ds-toast.tsx +3 -0
  178. package/src/components/ds-toggle/ds-toggle.figma.ts +39 -0
  179. package/src/components/ds-toggle/ds-toggle.tsx +2 -0
  180. package/src/components/ds-tooltip/ds-tooltip.figma.ts +16 -0
  181. package/src/components/ds-tooltip/ds-tooltip.module.scss +8 -1
  182. package/src/components/ds-tooltip/ds-tooltip.tsx +35 -15
  183. package/src/components/ds-tooltip/ds-tooltip.types.ts +40 -0
  184. package/src/components/ds-tree/ds-tree.module.scss +2 -2
  185. package/src/components/ds-tree/ds-tree.tsx +22 -0
  186. package/src/components/ds-tree/ds-tree.types.ts +16 -0
  187. package/src/components/ds-typography/ds-typography.config.ts +1 -1
  188. package/src/components/ds-typography/ds-typography.figma.ts +63 -0
  189. package/src/components/ds-typography/ds-typography.module.scss +16 -0
  190. package/src/components/ds-typography/ds-typography.tsx +64 -7
  191. package/src/components/ds-typography/ds-typography.types.ts +13 -0
  192. package/src/components/ds-typography/hooks/use-truncation.ts +151 -0
  193. package/src/components/ds-user-card/ds-user-card.figma.ts +16 -0
  194. package/src/components/ds-user-card/ds-user-card.module.scss +25 -0
  195. package/src/components/ds-user-card/ds-user-card.tsx +31 -0
  196. package/src/components/ds-user-card/ds-user-card.types.ts +26 -0
  197. package/src/components/ds-user-card/index.ts +2 -0
  198. package/src/components/ds-vertical-tabs/ds-vertical-tabs.tsx +17 -4
  199. package/src/components/ds-workspace-layout/ds-workspace-layout.tsx +19 -8
  200. package/src/index.ts +2 -0
  201. package/src/styles/_root.scss +468 -363
  202. package/src/styles/shared/_dropdown.scss +2 -2
  203. package/src/styles/styles.scss +0 -3
  204. package/src/styles/_colors.scss +0 -65
  205. package/src/styles/_root_new.scss +0 -451
  206. package/src/styles/_spacing.scss +0 -47
@@ -0,0 +1,24 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=35301-70996
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-dropdown-menu
3
+ // component=DsDropdownMenu
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const items = instance.getSlot('.partsDropdownList');
9
+
10
+ const footer = instance.findInstance('DAP_dropdown-footer_v01', { traverseInstances: true });
11
+ let footerCode: figma.ResultSection[] | undefined;
12
+ if (footer.type === 'INSTANCE') {
13
+ footerCode = footer.executeTemplate().example;
14
+ }
15
+
16
+ export default {
17
+ example: figma.code`<DsDropdownMenu.Root>
18
+ <DsDropdownMenu.Trigger>{/* trigger element */}</DsDropdownMenu.Trigger>
19
+ <DsDropdownMenu.Content>${items}${footerCode}</DsDropdownMenu.Content>
20
+ </DsDropdownMenu.Root>`,
21
+ imports: ["import { DsDropdownMenu } from '@drivenets/design-system';"],
22
+ id: 'ds-dropdown-menu',
23
+ metadata: { nestable: false },
24
+ } satisfies figma.Template;
@@ -0,0 +1,24 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=17353-7836
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-expandable-text-input
3
+ // component=DsExpandableTextInput
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const type = instance.getEnum('Type', {
9
+ Persistent: 'persistent',
10
+ Expandable: 'expandable',
11
+ });
12
+
13
+ const isExpandable = type !== 'persistent';
14
+
15
+ const component = isExpandable ? 'DsExpandableTextInput' : 'DsAutocomplete';
16
+
17
+ export default {
18
+ example: isExpandable
19
+ ? figma.code`<DsExpandableTextInput icon="search" />`
20
+ : figma.code`<DsAutocomplete options={[]} showTrigger={false} />`,
21
+ imports: [`import { ${component} } from '@drivenets/design-system';`],
22
+ id: 'ds-expandable-text-input',
23
+ metadata: { nestable: true },
24
+ } satisfies figma.Template;
@@ -112,3 +112,4 @@ export function DsExpandableTextInput({
112
112
  function InputExpander({ children }: { children: ReactNode }) {
113
113
  return <div className={styles.inputExpander}>{children}</div>;
114
114
  }
115
+ DsExpandableTextInput.displayName = 'DsExpandableTextInput';
@@ -1,2 +1 @@
1
1
  export { FileUploadItem } from './file-upload-item';
2
- export type { FileUploadItemProps } from './file-upload-item.types';
@@ -0,0 +1,29 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=15128-184303
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-file-upload
3
+ // component=DsFileUpload
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const state = instance.getEnum('State', {
9
+ Default: 'default',
10
+ Error: 'error',
11
+ Disabled: 'disabled',
12
+ Focus: 'focus',
13
+ 'Drop Hover': 'dropHover',
14
+ });
15
+
16
+ const attrs = [
17
+ 'adapter={adapter}',
18
+ state === 'disabled' ? 'disabled' : '',
19
+ state === 'error' ? 'errorText="Upload failed"' : '',
20
+ ]
21
+ .filter(Boolean)
22
+ .join(' ');
23
+
24
+ export default {
25
+ example: figma.code`<DsFileUpload ${attrs} />`,
26
+ imports: ["import { DsFileUpload } from '@drivenets/design-system';"],
27
+ id: 'ds-file-upload',
28
+ metadata: { nestable: false },
29
+ } satisfies figma.Template;
@@ -43,4 +43,6 @@ const DsFileUpload: React.FC<DsFileUploadProps> = ({
43
43
  return <FileUpload {...fileUploadProps} {...props} />;
44
44
  };
45
45
 
46
+ DsFileUpload.displayName = 'DsFileUpload';
47
+
46
48
  export default DsFileUpload;
@@ -0,0 +1,22 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=27983-34074
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-filter-status-icon
3
+ // component=DsFilterStatusIcon
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const status = instance.getEnum('type', {
9
+ running: 'running',
10
+ warning: 'warning',
11
+ failed: 'failed',
12
+ paused: 'paused',
13
+ });
14
+ const active = instance.getEnum('state', { active: true, 'non-active': false });
15
+ const activeProp = active ? '' : ' active={false}';
16
+
17
+ export default {
18
+ example: figma.code`<DsFilterStatusIcon status="${status}"${activeProp} />`,
19
+ imports: ["import { DsFilterStatusIcon } from '@drivenets/design-system';"],
20
+ id: 'ds-filter-status-icon',
21
+ metadata: { nestable: true },
22
+ } satisfies figma.Template;
@@ -33,3 +33,4 @@ export const DsFilterStatusIcon = ({
33
33
  />
34
34
  );
35
35
  };
36
+ DsFilterStatusIcon.displayName = 'DsFilterStatusIcon';
@@ -70,7 +70,7 @@ const formControlAttrs = [labelAttr, requiredAttr, hideLabelAttr, statusAttr, me
70
70
 
71
71
  export default {
72
72
  example: figma.code`<DsFormControl ${formControlAttrs}>${description}${child}</DsFormControl>`,
73
- imports: ["import { DsFormControl } from '@drivenets/design-system'"],
73
+ imports: ["import { DsFormControl } from '@drivenets/design-system';"],
74
74
  id: 'ds-form-control',
75
75
  metadata: { nestable: false },
76
- };
76
+ } satisfies figma.Template;
@@ -41,7 +41,7 @@ const DsFormControlDescription: React.FC<DsFormControlDescriptionProps> = ({ chi
41
41
  return <div className={classNames(styles.description, className)}>{children}</div>;
42
42
  };
43
43
 
44
- const DsFormControl = ({
44
+ const DsFormControlRoot = ({
45
45
  id,
46
46
  status,
47
47
  label,
@@ -96,15 +96,20 @@ const DsFormControl = ({
96
96
  );
97
97
  };
98
98
 
99
- DsFormControl.TextInput = controlify(DsTextInput);
100
- DsFormControl.NumberInput = controlify(DsNumberInput);
101
- DsFormControl.PasswordInput = controlify(DsPasswordInput);
102
- /** @deprecated DsDateInput is deprecated. Use DsDatePicker or DsDateRangePicker instead. */
103
- DsFormControl.DateInput = controlify(DsDateInput);
104
- DsFormControl.DatePicker = controlify(DsDatePicker);
105
- DsFormControl.TimePicker = controlify(DsTimePicker);
106
- DsFormControl.Textarea = controlify(DsTextarea);
107
- DsFormControl.Select = controlify(DsSelect);
108
- DsFormControl.Description = DsFormControlDescription;
99
+ DsFormControlDescription.displayName = 'DsFormControl.Description';
100
+
101
+ const DsFormControl = Object.assign(DsFormControlRoot, {
102
+ displayName: 'DsFormControl',
103
+ TextInput: controlify(DsTextInput),
104
+ NumberInput: controlify(DsNumberInput),
105
+ PasswordInput: controlify(DsPasswordInput),
106
+ /** @deprecated DsDateInput is deprecated. Use DsDatePicker or DsDateRangePicker instead. */
107
+ DateInput: controlify(DsDateInput),
108
+ DatePicker: controlify(DsDatePicker),
109
+ TimePicker: controlify(DsTimePicker),
110
+ Textarea: controlify(DsTextarea),
111
+ Select: controlify(DsSelect),
112
+ Description: DsFormControlDescription,
113
+ });
109
114
 
110
115
  export default DsFormControl;
@@ -8,3 +8,6 @@ export const DsGridItem = withResponsiveProps(DsGridItemBase, ['colSpan', 'rowSp
8
8
 
9
9
  export type DsGridProps = ComponentProps<typeof DsGrid>;
10
10
  export type DsGridItemProps = ComponentProps<typeof DsGridItem>;
11
+
12
+ DsGrid.displayName = 'DsGrid';
13
+ DsGridItem.displayName = 'DsGridItem';
@@ -45,4 +45,6 @@ const DsIcon = ({
45
45
  );
46
46
  };
47
47
 
48
+ DsIcon.displayName = 'DsIcon';
49
+
48
50
  export default DsIcon;
@@ -4,7 +4,7 @@ const batch = figma.batch as { icon: string; filled: boolean; id: string };
4
4
 
5
5
  export default {
6
6
  example: figma.code`<DsIcon icon="${batch.icon}"${batch.filled ? ' filled' : ''} />`,
7
- imports: ["import { DsIcon } from '@drivenets/design-system'"],
7
+ imports: ["import { DsIcon } from '@drivenets/design-system';"],
8
8
  id: batch.id,
9
9
  metadata: { nestable: true, props: { icon: batch.icon } },
10
10
  };
@@ -12,7 +12,7 @@ export default {
12
12
  example: icon
13
13
  ? figma.code`<DsIcon icon="${icon}" />`
14
14
  : figma.code`{/* This icon is not available in @drivenets/design-system */}`,
15
- imports: ["import { DsIcon } from '@drivenets/design-system'"],
15
+ imports: ["import { DsIcon } from '@drivenets/design-system';"],
16
16
  id: batch.id,
17
17
  metadata: { nestable: true, props: { icon } },
18
18
  };
@@ -0,0 +1,24 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=28373-92227
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-key-value-pair
3
+ // component=DsKeyValuePair
4
+ //
5
+ // `Direction` maps to `orientation`. `keyLabel` and `value` are content, not derivable
6
+ // from Figma, so they are emitted as placeholders for the developer to fill in (see
7
+ // `ds-user-card.figma.ts`). Read-only vs editable is consumer edit-mode state rather than
8
+ // a Figma variant, so `readOnly`/`editInput` are left at their defaults.
9
+ import figma from 'figma';
10
+
11
+ const instance = figma.selectedInstance;
12
+
13
+ const orientation =
14
+ instance.getEnum('Direction', {
15
+ vertical: 'vertical',
16
+ horizontal: 'horizontal',
17
+ }) ?? 'vertical';
18
+
19
+ export default {
20
+ example: figma.code`<DsKeyValuePair keyLabel="Label" value="Value" orientation="${orientation}" />`,
21
+ imports: ["import { DsKeyValuePair } from '@drivenets/design-system';"],
22
+ id: 'ds-key-value-pair',
23
+ metadata: { nestable: true },
24
+ } satisfies figma.Template;
@@ -44,4 +44,6 @@ const DsKeyValuePair = ({
44
44
  );
45
45
  };
46
46
 
47
+ DsKeyValuePair.displayName = 'DsKeyValuePair';
48
+
47
49
  export default DsKeyValuePair;
@@ -0,0 +1,11 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=14836-15179
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-loader
3
+ // component=DsLoader
4
+ import figma from 'figma';
5
+
6
+ export default {
7
+ example: figma.code`<DsLoader />`,
8
+ imports: ["import { DsLoader } from '@drivenets/design-system';"],
9
+ id: 'ds-loader',
10
+ metadata: { nestable: true },
11
+ } satisfies figma.Template;
@@ -15,4 +15,6 @@ const DsLoader = ({ variant = 'spinner', className, ...props }: DsLoaderProps) =
15
15
  );
16
16
  };
17
17
 
18
+ DsLoader.displayName = 'DsLoader';
19
+
18
20
  export default DsLoader;
@@ -13,7 +13,7 @@ import { DsTypography } from '../ds-typography';
13
13
  * Supports custom header, footer, and body content with grid-based sizing.
14
14
  * Use columns prop to control modal width (1-12 grid columns).
15
15
  */
16
- const DsModal = ({
16
+ const DsModalRoot = ({
17
17
  open,
18
18
  columns = 6,
19
19
  dividers = false,
@@ -138,11 +138,21 @@ const Actions = ({
138
138
  </div>
139
139
  );
140
140
 
141
- DsModal.Header = Header;
142
- DsModal.Title = Title;
143
- DsModal.CloseTrigger = CloseTrigger;
144
- DsModal.Body = Body;
145
- DsModal.Footer = Footer;
146
- DsModal.Actions = Actions;
141
+ Header.displayName = 'DsModal.Header';
142
+ Title.displayName = 'DsModal.Title';
143
+ CloseTrigger.displayName = 'DsModal.CloseTrigger';
144
+ Body.displayName = 'DsModal.Body';
145
+ Footer.displayName = 'DsModal.Footer';
146
+ Actions.displayName = 'DsModal.Actions';
147
+
148
+ const DsModal = Object.assign(DsModalRoot, {
149
+ displayName: 'DsModal',
150
+ Header,
151
+ Title,
152
+ CloseTrigger,
153
+ Body,
154
+ Footer,
155
+ Actions,
156
+ });
147
157
 
148
158
  export default DsModal;
@@ -12,7 +12,7 @@ const content = instance.getSlot('Modal content slot');
12
12
 
13
13
  export default {
14
14
  example: figma.code`<DsModal.Body>${content}</DsModal.Body>`,
15
- imports: ["import { DsModal } from '@drivenets/design-system'"],
15
+ imports: ["import { DsModal } from '@drivenets/design-system';"],
16
16
  id: 'ds-modal-content',
17
17
  metadata: { nestable: true },
18
- };
18
+ } satisfies figma.Template;
@@ -13,7 +13,7 @@ const rightButtons = instance.getSlot('right side buttons');
13
13
 
14
14
  export default {
15
15
  example: figma.code`<DsModal.Footer><DsModal.Actions>${rightButtons}</DsModal.Actions></DsModal.Footer>`,
16
- imports: ["import { DsModal } from '@drivenets/design-system'"],
16
+ imports: ["import { DsModal } from '@drivenets/design-system';"],
17
17
  id: 'ds-modal-footer',
18
18
  metadata: { nestable: true },
19
- };
19
+ } satisfies figma.Template;
@@ -15,7 +15,7 @@ const title = titleNode.type === 'TEXT' ? titleNode.textContent : 'Modal title';
15
15
 
16
16
  export default {
17
17
  example: figma.code`<DsModal.Header><DsModal.Title>${title}</DsModal.Title><DsModal.CloseTrigger /></DsModal.Header>`,
18
- imports: ["import { DsModal } from '@drivenets/design-system'"],
18
+ imports: ["import { DsModal } from '@drivenets/design-system';"],
19
19
  id: 'ds-modal-header',
20
20
  metadata: { nestable: true },
21
- };
21
+ } satisfies figma.Template;
@@ -30,7 +30,7 @@ if (footer.type === 'INSTANCE') {
30
30
 
31
31
  export default {
32
32
  example: figma.code`<DsModal open columns={6} onOpenChange={() => {}}>${headerCode}${contentCode}${footerCode}</DsModal>`,
33
- imports: ["import { DsModal } from '@drivenets/design-system'"],
33
+ imports: ["import { DsModal } from '@drivenets/design-system';"],
34
34
  id: 'ds-modal',
35
35
  metadata: { nestable: false },
36
- };
36
+ } satisfies figma.Template;
@@ -35,6 +35,7 @@ const DsNumberInput: FC<DsNumberInputProps> = ({
35
35
  return (
36
36
  <NumberInput.Root
37
37
  id={id}
38
+ ids={{ input: id }}
38
39
  min={min}
39
40
  max={max}
40
41
  step={step}
@@ -71,4 +72,6 @@ const DsNumberInput: FC<DsNumberInputProps> = ({
71
72
  );
72
73
  };
73
74
 
75
+ DsNumberInput.displayName = 'DsNumberInput';
76
+
74
77
  export default DsNumberInput;
@@ -0,0 +1,16 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=15978-26200
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-panel
3
+ // component=DsPanel
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const open = instance.getEnum('type', { expanded: true, collapsed: false });
9
+ const openAttr = open ? 'open' : 'open={false}';
10
+
11
+ export default {
12
+ example: figma.code`<DsPanel ${openAttr}>{/* panel content */}</DsPanel>`,
13
+ imports: ["import { DsPanel } from '@drivenets/design-system';"],
14
+ id: 'ds-panel',
15
+ metadata: { nestable: false },
16
+ } satisfies figma.Template;
@@ -3,3 +3,5 @@ import { DsPanelBase } from './ds-panel';
3
3
 
4
4
  export const DsPanel = withResponsiveProps(DsPanelBase, ['width']);
5
5
  export type { DsPanelProps, DsPanelVariant, DsPanelCollapseButtonProps } from './ds-panel.types';
6
+
7
+ DsPanel.displayName = 'DsPanel';
@@ -64,4 +64,6 @@ const DsPasswordInput: FC<DsPasswordInputProps> = ({
64
64
  );
65
65
  };
66
66
 
67
+ DsPasswordInput.displayName = 'DsPasswordInput';
68
+
67
69
  export default DsPasswordInput;
@@ -146,6 +146,15 @@ const DsPopoverLegacy = ({
146
146
  </DsPopoverRoot>
147
147
  );
148
148
 
149
+ DsPopoverLegacy.displayName = 'DsPopover';
150
+ DsPopoverRoot.displayName = 'DsPopover.Root';
151
+ DsPopoverTrigger.displayName = 'DsPopover.Trigger';
152
+ DsPopoverPanel.displayName = 'DsPopover.Panel';
153
+ DsPopoverHeader.displayName = 'DsPopover.Header';
154
+ DsPopoverContent.displayName = 'DsPopover.Content';
155
+ DsPopoverContentItem.displayName = 'DsPopover.ContentItem';
156
+ DsPopoverFooter.displayName = 'DsPopover.Footer';
157
+
149
158
  export const DsPopover = Object.assign(DsPopoverLegacy, {
150
159
  Root: DsPopoverRoot,
151
160
  Trigger: DsPopoverTrigger,
@@ -0,0 +1,18 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=37891-84870
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-popover
3
+ // component=DsPopover.ContentItem
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const headlineNode = instance.findText('Content-item-headline', { traverseInstances: true });
9
+ const headlineAttr = headlineNode.type === 'TEXT' ? ` headline="${headlineNode.textContent}"` : '';
10
+
11
+ const body = instance.getSlot('Slot');
12
+
13
+ export default {
14
+ example: figma.code`<DsPopover.ContentItem${headlineAttr}>${body}</DsPopover.ContentItem>`,
15
+ imports: ["import { DsPopover } from '@drivenets/design-system';"],
16
+ id: 'ds-popover-content-item',
17
+ metadata: { nestable: true },
18
+ } satisfies figma.Template;
@@ -0,0 +1,15 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=37891-84883
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-popover
3
+ // component=DsPopover.Content
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const items = instance.getSlot('Slot');
9
+
10
+ export default {
11
+ example: figma.code`<DsPopover.Content>${items}</DsPopover.Content>`,
12
+ imports: ["import { DsPopover } from '@drivenets/design-system';"],
13
+ id: 'ds-popover-content',
14
+ metadata: { nestable: true },
15
+ } satisfies figma.Template;
@@ -0,0 +1,19 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=37891-84845
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-popover
3
+ // component=DsPopover.Footer
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const button = instance.findInstance('DAP_Button_v03', { traverseInstances: true });
9
+ let buttonCode: figma.ResultSection[] | undefined;
10
+ if (button.type === 'INSTANCE') {
11
+ buttonCode = button.executeTemplate().example;
12
+ }
13
+
14
+ export default {
15
+ example: figma.code`<DsPopover.Footer>${buttonCode}</DsPopover.Footer>`,
16
+ imports: ["import { DsPopover } from '@drivenets/design-system';"],
17
+ id: 'ds-popover-footer',
18
+ metadata: { nestable: true },
19
+ } satisfies figma.Template;
@@ -0,0 +1,16 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=37891-11066
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-popover
3
+ // component=DsPopover.Header
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const titleNode = instance.findText('Title', { traverseInstances: true });
9
+ const title = titleNode.type === 'TEXT' ? titleNode.textContent : 'Popover title';
10
+
11
+ export default {
12
+ example: figma.code`<DsPopover.Header>${title}</DsPopover.Header>`,
13
+ imports: ["import { DsPopover } from '@drivenets/design-system';"],
14
+ id: 'ds-popover-header',
15
+ metadata: { nestable: true },
16
+ } satisfies figma.Template;
@@ -0,0 +1,34 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=37891-84942
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-popover
3
+ // component=DsPopover
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const header = instance.findInstance('DAP_popover-header_v01', { traverseInstances: true });
9
+ let headerCode: figma.ResultSection[] | undefined;
10
+ if (header.type === 'INSTANCE') {
11
+ headerCode = header.executeTemplate().example;
12
+ }
13
+
14
+ const content = instance.findInstance('DAP_popover-content_v01', { traverseInstances: true });
15
+ let contentCode: figma.ResultSection[] | undefined;
16
+ if (content.type === 'INSTANCE') {
17
+ contentCode = content.executeTemplate().example;
18
+ }
19
+
20
+ const footer = instance.findInstance('DAP_popover-footer_v01', { traverseInstances: true });
21
+ let footerCode: figma.ResultSection[] | undefined;
22
+ if (footer.type === 'INSTANCE') {
23
+ footerCode = footer.executeTemplate().example;
24
+ }
25
+
26
+ export default {
27
+ example: figma.code`<DsPopover.Root>
28
+ <DsPopover.Trigger>{/* trigger element */}</DsPopover.Trigger>
29
+ <DsPopover.Panel>${headerCode}${contentCode}${footerCode}</DsPopover.Panel>
30
+ </DsPopover.Root>`,
31
+ imports: ["import { DsPopover } from '@drivenets/design-system';"],
32
+ id: 'ds-popover',
33
+ metadata: { nestable: false },
34
+ } satisfies figma.Template;
@@ -0,0 +1,23 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=15179-8747
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-progress-arc
3
+ // component=DsProgressArc
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const size = instance.getEnum('Size', {
9
+ small: 'small',
10
+ medium: 'medium',
11
+ });
12
+ const variant = instance.getEnum('State', {
13
+ fill: 'default',
14
+ success: 'success',
15
+ error: 'error',
16
+ });
17
+
18
+ export default {
19
+ example: figma.code`<DsProgressArc variant="${variant}" size="${size}" value={0} />`,
20
+ imports: ["import { DsProgressArc } from '@drivenets/design-system';"],
21
+ id: 'ds-progress-arc',
22
+ metadata: { nestable: false },
23
+ } satisfies figma.Template;
@@ -108,4 +108,6 @@ const DsProgressArc = ({
108
108
  );
109
109
  };
110
110
 
111
+ DsProgressArc.displayName = 'DsProgressArc';
112
+
111
113
  export default DsProgressArc;
@@ -0,0 +1,45 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=15179-8570
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-progress-donut
3
+ // component=DsProgressDonut
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const size = instance.getEnum('Size', {
9
+ small: 'small',
10
+ medium: 'medium',
11
+ });
12
+ const variant = instance.getEnum('Status', {
13
+ 'fill 10%': 'default',
14
+ 'fill 20%': 'default',
15
+ 'fill 30%': 'default',
16
+ 'fill 40%': 'default',
17
+ 'fill 50%': 'default',
18
+ 'fill 60%': 'default',
19
+ 'fill 70%': 'default',
20
+ 'fill 80%': 'default',
21
+ 'fill 90%': 'default',
22
+ Success: 'success',
23
+ success: 'success',
24
+ error: 'error',
25
+ failed: 'error',
26
+ });
27
+ const value = instance.getEnum('Status', {
28
+ 'fill 10%': 10,
29
+ 'fill 20%': 20,
30
+ 'fill 30%': 30,
31
+ 'fill 40%': 40,
32
+ 'fill 50%': 50,
33
+ 'fill 60%': 60,
34
+ 'fill 70%': 70,
35
+ 'fill 80%': 80,
36
+ 'fill 90%': 90,
37
+ });
38
+ const valueProp = typeof value === 'number' ? ` value={${String(value)}}` : '';
39
+
40
+ export default {
41
+ example: figma.code`<DsProgressDonut variant="${variant}" size="${size}"${valueProp} />`,
42
+ imports: ["import { DsProgressDonut } from '@drivenets/design-system';"],
43
+ id: 'ds-progress-donut',
44
+ metadata: { nestable: false },
45
+ } satisfies figma.Template;
@@ -80,4 +80,6 @@ const DsProgressDonut = ({
80
80
  );
81
81
  };
82
82
 
83
+ DsProgressDonut.displayName = 'DsProgressDonut';
84
+
83
85
  export default DsProgressDonut;
@@ -0,0 +1,26 @@
1
+ // url=https://www.figma.com/design/nha3m67y7S57cHCSuQO2gp/DAP-Design-System-1.2?node-id=15179-12155
2
+ // source=https://github.com/drivenets/design-system/tree/main/packages/design-system/src/components/ds-progress-linear
3
+ // component=DsProgressLinear
4
+ import figma from 'figma';
5
+
6
+ const instance = figma.selectedInstance;
7
+
8
+ const size = instance.getEnum('Size', {
9
+ Small: 'small',
10
+ Medium: 'medium',
11
+ Large: 'large',
12
+ });
13
+ const variant = instance.getEnum('Type', {
14
+ initial: 'initial',
15
+ progress: 'progress',
16
+ interrupted: 'interrupted',
17
+ success: 'success',
18
+ error: 'error',
19
+ });
20
+
21
+ export default {
22
+ example: figma.code`<DsProgressLinear variant="${variant}" size="${size}" value={0} />`,
23
+ imports: ["import { DsProgressLinear } from '@drivenets/design-system';"],
24
+ id: 'ds-progress-linear',
25
+ metadata: { nestable: false },
26
+ } satisfies figma.Template;