@dnanpm/ui-components 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/components/Accordion/Accordion.css +1 -1
  2. package/dist/components/AccordionItem/AccordionItem.css +1 -1
  3. package/dist/components/Breadcrumb/Breadcrumb.css +1 -1
  4. package/dist/components/Button/Button.css +36 -30
  5. package/dist/components/Button/Button.module.css.cjs +11 -11
  6. package/dist/components/Button/Button.module.css.js +11 -11
  7. package/dist/components/Label/Label.css +1 -1
  8. package/dist/components/Notification/Notification.css +1 -1
  9. package/dist/components/Pictograph/Pictograph.cjs +33 -0
  10. package/dist/components/Pictograph/Pictograph.cjs.map +1 -0
  11. package/dist/components/Pictograph/Pictograph.css +190 -0
  12. package/dist/components/Pictograph/Pictograph.d.ts +3 -0
  13. package/dist/components/Pictograph/Pictograph.d.ts.map +1 -0
  14. package/dist/components/Pictograph/Pictograph.js +33 -0
  15. package/dist/components/Pictograph/Pictograph.js.map +1 -0
  16. package/dist/components/Pictograph/Pictograph.module.css.cjs +22 -0
  17. package/dist/components/Pictograph/Pictograph.module.css.cjs.map +1 -0
  18. package/dist/components/Pictograph/Pictograph.module.css.js +22 -0
  19. package/dist/components/Pictograph/Pictograph.module.css.js.map +1 -0
  20. package/dist/components/Pictograph/Pictograph.types.d.ts +46 -0
  21. package/dist/components/Pictograph/Pictograph.types.d.ts.map +1 -0
  22. package/dist/components/Pictograph/PictographItem.cjs +19 -0
  23. package/dist/components/Pictograph/PictographItem.cjs.map +1 -0
  24. package/dist/components/Pictograph/PictographItem.css +63 -0
  25. package/dist/components/Pictograph/PictographItem.d.ts +3 -0
  26. package/dist/components/Pictograph/PictographItem.d.ts.map +1 -0
  27. package/dist/components/Pictograph/PictographItem.js +19 -0
  28. package/dist/components/Pictograph/PictographItem.js.map +1 -0
  29. package/dist/components/Pictograph/PictographItem.module.css.cjs +9 -0
  30. package/dist/components/Pictograph/PictographItem.module.css.cjs.map +1 -0
  31. package/dist/components/Pictograph/PictographItem.module.css.js +10 -0
  32. package/dist/components/Pictograph/PictographItem.module.css.js.map +1 -0
  33. package/dist/components/Pictograph/index.d.ts +4 -0
  34. package/dist/components/Pictograph/index.d.ts.map +1 -0
  35. package/dist/components/Spinner/Spinner.css +1 -1
  36. package/dist/index.cjs +4 -0
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/styles/utils/elevation.css +1 -1
  43. package/dist/styles/utils/focus.css +1 -1
  44. package/dist/styles/utils/text-decoration.css +1 -1
  45. package/dist/styles.css +32 -16
  46. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {/**
1
+ @layer dds-components {/**
2
2
  * Accordion Component Styles
3
3
  *
4
4
  * Layout wrapper that spaces AccordionItem children evenly.
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {/**
1
+ @layer dds-components {/**
2
2
  * AccordionItem Component Styles
3
3
  *
4
4
  * Uses native <details> element for expand/collapse behavior.
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {/**
1
+ @layer dds-components {/**
2
2
  * Breadcrumb Component Styles
3
3
  *
4
4
  * Design tokens are consumed via CSS custom properties (variables).
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {._button_188fd_1 {
1
+ @layer dds-components {._button_1nsz1_1 {
2
2
  display: inline-flex;
3
3
  align-items: center;
4
4
  justify-content: center;
@@ -15,21 +15,21 @@
15
15
  border-color 0.2s ease-in-out;
16
16
  }
17
17
 
18
- ._button--full-width_188fd_18 {
18
+ ._button--full-width_1nsz1_18 {
19
19
  width: 100%;
20
20
  min-width: 0;
21
21
  }
22
22
 
23
23
  /* ─── Sizes ─── */
24
24
 
25
- ._button--normal_188fd_25 {
25
+ ._button--normal_1nsz1_25 {
26
26
  font: var(--typography-label-lg-bold);
27
27
  height: 40px;
28
28
  min-width: 128px;
29
29
  padding: var(--spacing-ui-xs) var(--spacing-ui-lg);
30
30
  }
31
31
 
32
- ._button--small_188fd_32 {
32
+ ._button--small_1nsz1_32 {
33
33
  font: var(--typography-label-md-bold);
34
34
  height: 32px;
35
35
  min-width: 100px;
@@ -38,85 +38,91 @@
38
38
 
39
39
  /* ─── Primary variant ─── */
40
40
 
41
- ._button--primary_188fd_41 {
41
+ ._button--primary_1nsz1_41 {
42
42
  background-color: var(--color-semantic-interactive-primary-default);
43
43
  color: var(--color-semantic-foreground-inverse);
44
44
  }
45
45
 
46
- ._button--primary_188fd_41:hover {
46
+ ._button--primary_1nsz1_41:hover {
47
47
  background-color: var(--color-semantic-interactive-primary-hover);
48
+ color: var(--color-semantic-foreground-inverse);
48
49
  }
49
50
 
50
- ._button--primary_188fd_41:active {
51
+ ._button--primary_1nsz1_41:active {
51
52
  background-color: var(--color-semantic-interactive-primary-active);
53
+ color: var(--color-semantic-foreground-inverse);
52
54
  }
53
55
 
54
- ._button--primary_188fd_41:focus-visible {
56
+ ._button--primary_1nsz1_41:focus-visible {
55
57
  background-color: var(--color-semantic-interactive-primary-focus);
58
+ color: var(--color-semantic-foreground-inverse);
56
59
  }
57
60
 
58
61
  /* ─── Secondary variant ─── */
59
62
 
60
- ._button--secondary_188fd_60 {
63
+ ._button--secondary_1nsz1_63 {
61
64
  background-color: transparent;
62
65
  border: var(--borderwidth-semantic-sm) solid var(--color-semantic-interactive-secondary-default);
63
66
  color: var(--color-semantic-foreground-secondary-strong);
64
67
  }
65
68
 
66
- ._button--secondary_188fd_60:hover {
69
+ ._button--secondary_1nsz1_63:hover {
67
70
  background-color: var(--color-semantic-interactive-secondary-hover);
68
71
  border-color: var(--color-semantic-interactive-secondary-hover);
69
72
  color: var(--color-semantic-foreground-inverse);
70
73
  }
71
74
 
72
- ._button--secondary_188fd_60:active {
75
+ ._button--secondary_1nsz1_63:active {
73
76
  background-color: var(--color-semantic-interactive-secondary-active);
74
77
  border-color: var(--color-semantic-interactive-secondary-active);
75
78
  color: var(--color-semantic-foreground-inverse);
76
79
  }
77
80
 
78
- ._button--secondary_188fd_60:focus-visible {
81
+ ._button--secondary_1nsz1_63:focus-visible {
79
82
  background-color: var(--color-semantic-interactive-secondary-focus);
80
83
  color: var(--color-semantic-foreground-inverse);
81
84
  }
82
85
 
83
86
  /* ─── Tertiary variant ─── */
84
87
 
85
- ._button--tertiary_188fd_85 {
88
+ ._button--tertiary_1nsz1_88 {
86
89
  background-color: var(--color-semantic-interactive-neutral-default);
87
90
  border: var(--borderwidth-semantic-sm) solid var(--color-semantic-border-neutral-mid);
88
91
  color: var(--color-semantic-foreground-secondary-strong);
89
92
  }
90
93
 
91
- ._button--tertiary_188fd_85:hover {
94
+ ._button--tertiary_1nsz1_88:hover {
92
95
  background-color: var(--color-semantic-interactive-neutral-hover);
96
+ color: var(--color-semantic-foreground-secondary-strong);
93
97
  }
94
98
 
95
- ._button--tertiary_188fd_85:active {
99
+ ._button--tertiary_1nsz1_88:active {
96
100
  background-color: var(--color-semantic-interactive-neutral-active);
101
+ color: var(--color-semantic-foreground-secondary-strong);
97
102
  }
98
103
 
99
- ._button--tertiary_188fd_85:focus-visible {
104
+ ._button--tertiary_1nsz1_88:focus-visible {
100
105
  background-color: var(--color-semantic-interactive-neutral-focus);
106
+ color: var(--color-semantic-foreground-secondary-strong);
101
107
  }
102
108
 
103
109
  /* ─── Disabled state ─── */
104
110
 
105
- ._button--disabled_188fd_105 {
111
+ ._button--disabled_1nsz1_111 {
106
112
  pointer-events: none;
107
113
  }
108
114
 
109
- ._button--primary_188fd_41._button--disabled_188fd_105 {
115
+ ._button--primary_1nsz1_41._button--disabled_1nsz1_111 {
110
116
  background-color: var(--color-semantic-interactive-primary-disabled);
111
117
  color: var(--color-semantic-foreground-muted);
112
118
  }
113
119
 
114
- ._button--secondary_188fd_60._button--disabled_188fd_105 {
120
+ ._button--secondary_1nsz1_63._button--disabled_1nsz1_111 {
115
121
  border-color: var(--color-semantic-interactive-secondary-disabled);
116
122
  color: var(--color-semantic-foreground-muted);
117
123
  }
118
124
 
119
- ._button--tertiary_188fd_85._button--disabled_188fd_105 {
125
+ ._button--tertiary_1nsz1_88._button--disabled_1nsz1_111 {
120
126
  background-color: var(--color-semantic-interactive-neutral-disabled);
121
127
  color: var(--color-semantic-foreground-muted);
122
128
  }
@@ -125,38 +131,38 @@
125
131
  /* Styles apply from [data-color-scheme="dark"] down to (but not into) [data-color-scheme="light"]. */
126
132
 
127
133
  @scope ([data-color-scheme='dark']) to ([data-color-scheme='light']) {
128
- ._button--primary_188fd_41._button--disabled_188fd_105 {
134
+ ._button--primary_1nsz1_41._button--disabled_1nsz1_111 {
129
135
  color: var(--color-semantic-foreground-inverse-muted);
130
136
  }
131
137
 
132
- ._button--secondary_188fd_60 {
138
+ ._button--secondary_1nsz1_63 {
133
139
  border-color: var(--color-semantic-interactive-inverse-default);
134
140
  color: var(--color-semantic-foreground-inverse);
135
141
  }
136
142
 
137
- ._button--secondary_188fd_60:hover {
143
+ ._button--secondary_1nsz1_63:hover {
138
144
  background-color: var(--color-semantic-interactive-inverse-hover);
139
145
  border-color: var(--color-semantic-interactive-inverse-hover);
140
146
  color: var(--color-semantic-foreground-secondary-strong);
141
147
  }
142
148
 
143
- ._button--secondary_188fd_60:active {
149
+ ._button--secondary_1nsz1_63:active {
144
150
  background-color: var(--color-semantic-interactive-inverse-active);
145
151
  border-color: var(--color-semantic-interactive-inverse-active);
146
152
  color: var(--color-semantic-foreground-secondary-strong);
147
153
  }
148
154
 
149
- ._button--secondary_188fd_60:focus-visible {
155
+ ._button--secondary_1nsz1_63:focus-visible {
150
156
  background-color: var(--color-semantic-interactive-inverse-focus);
151
157
  color: var(--color-semantic-foreground-secondary-strong);
152
158
  }
153
159
 
154
- ._button--secondary_188fd_60._button--disabled_188fd_105 {
160
+ ._button--secondary_1nsz1_63._button--disabled_1nsz1_111 {
155
161
  border-color: var(--color-semantic-interactive-inverse-disabled);
156
162
  color: var(--color-semantic-foreground-inverse-muted);
157
163
  }
158
164
 
159
- ._button--tertiary_188fd_85._button--disabled_188fd_105 {
165
+ ._button--tertiary_1nsz1_88._button--disabled_1nsz1_111 {
160
166
  border-color: var(--color-semantic-interactive-neutral-disabled);
161
167
  color: var(--color-semantic-foreground-inverse-muted);
162
168
  }
@@ -164,11 +170,11 @@
164
170
 
165
171
  /* ─── Loading state ─── */
166
172
 
167
- ._button--loading_188fd_167 {
173
+ ._button--loading_1nsz1_173 {
168
174
  pointer-events: none;
169
175
  }
170
176
 
171
- ._button__content_188fd_171 {
177
+ ._button__content_1nsz1_177 {
172
178
  flex: 0 1 auto;
173
179
  min-width: 0;
174
180
  overflow: hidden;
@@ -176,7 +182,7 @@
176
182
  white-space: nowrap;
177
183
  }
178
184
 
179
- ._button__spinner_188fd_179 {
185
+ ._button__spinner_1nsz1_185 {
180
186
  flex: 0 0 auto;
181
187
  }
182
188
  }
@@ -1,19 +1,19 @@
1
1
  require('./Button.css');
2
2
  "use strict";
3
3
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
4
- const button = "_button_188fd_1";
5
- const button__content = "_button__content_188fd_171";
6
- const button__spinner = "_button__spinner_188fd_179";
4
+ const button = "_button_1nsz1_1";
5
+ const button__content = "_button__content_1nsz1_177";
6
+ const button__spinner = "_button__spinner_1nsz1_185";
7
7
  const styles = {
8
8
  button,
9
- "button--full-width": "_button--full-width_188fd_18",
10
- "button--normal": "_button--normal_188fd_25",
11
- "button--small": "_button--small_188fd_32",
12
- "button--primary": "_button--primary_188fd_41",
13
- "button--secondary": "_button--secondary_188fd_60",
14
- "button--tertiary": "_button--tertiary_188fd_85",
15
- "button--disabled": "_button--disabled_188fd_105",
16
- "button--loading": "_button--loading_188fd_167",
9
+ "button--full-width": "_button--full-width_1nsz1_18",
10
+ "button--normal": "_button--normal_1nsz1_25",
11
+ "button--small": "_button--small_1nsz1_32",
12
+ "button--primary": "_button--primary_1nsz1_41",
13
+ "button--secondary": "_button--secondary_1nsz1_63",
14
+ "button--tertiary": "_button--tertiary_1nsz1_88",
15
+ "button--disabled": "_button--disabled_1nsz1_111",
16
+ "button--loading": "_button--loading_1nsz1_173",
17
17
  button__content,
18
18
  button__spinner
19
19
  };
@@ -1,17 +1,17 @@
1
1
  import './Button.css';
2
- const button = "_button_188fd_1";
3
- const button__content = "_button__content_188fd_171";
4
- const button__spinner = "_button__spinner_188fd_179";
2
+ const button = "_button_1nsz1_1";
3
+ const button__content = "_button__content_1nsz1_177";
4
+ const button__spinner = "_button__spinner_1nsz1_185";
5
5
  const styles = {
6
6
  button,
7
- "button--full-width": "_button--full-width_188fd_18",
8
- "button--normal": "_button--normal_188fd_25",
9
- "button--small": "_button--small_188fd_32",
10
- "button--primary": "_button--primary_188fd_41",
11
- "button--secondary": "_button--secondary_188fd_60",
12
- "button--tertiary": "_button--tertiary_188fd_85",
13
- "button--disabled": "_button--disabled_188fd_105",
14
- "button--loading": "_button--loading_188fd_167",
7
+ "button--full-width": "_button--full-width_1nsz1_18",
8
+ "button--normal": "_button--normal_1nsz1_25",
9
+ "button--small": "_button--small_1nsz1_32",
10
+ "button--primary": "_button--primary_1nsz1_41",
11
+ "button--secondary": "_button--secondary_1nsz1_63",
12
+ "button--tertiary": "_button--tertiary_1nsz1_88",
13
+ "button--disabled": "_button--disabled_1nsz1_111",
14
+ "button--loading": "_button--loading_1nsz1_173",
15
15
  button__content,
16
16
  button__spinner
17
17
  };
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {._label_1bsev_1 {
1
+ @layer dds-components {._label_1bsev_1 {
2
2
  display: inline-block;
3
3
  max-width: 100%;
4
4
  padding: var(--spacing-ui-xxs) var(--spacing-ui-lg);
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {/**
1
+ @layer dds-components {/**
2
2
  * Notification Component Styles
3
3
  *
4
4
  * Design tokens are consumed via CSS custom properties (variables).
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const Pictograph_module = require("./Pictograph.module.css.cjs");
5
+ const cn = require("../../utils/cn/cn.cjs");
6
+ const Pictograph = ({
7
+ iconSize = "small",
8
+ alignment = "center",
9
+ mode = "horizontal",
10
+ columns = 3,
11
+ children,
12
+ className,
13
+ ref,
14
+ ...props
15
+ }) => {
16
+ return /* @__PURE__ */ jsxRuntime.jsx(
17
+ "div",
18
+ {
19
+ ref,
20
+ className: cn.cn(
21
+ Pictograph_module.default.pictograph,
22
+ Pictograph_module.default[`pictograph--${mode}`],
23
+ alignment === "center" && Pictograph_module.default["pictograph--centered"],
24
+ Pictograph_module.default[`pictograph--icon-${iconSize}`],
25
+ className
26
+ ),
27
+ ...props,
28
+ children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn.cn(Pictograph_module.default.pictograph__list, Pictograph_module.default[`pictograph__list--${columns}`]), children })
29
+ }
30
+ );
31
+ };
32
+ exports.Pictograph = Pictograph;
33
+ //# sourceMappingURL=Pictograph.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pictograph.cjs","sources":["../../../src/components/Pictograph/Pictograph.tsx"],"sourcesContent":["import { cn } from '../../utils/cn';\nimport styles from './Pictograph.module.css';\nimport type { PictographProps } from './Pictograph.types';\n\nexport const Pictograph = ({\n iconSize = 'small',\n alignment = 'center',\n mode = 'horizontal',\n columns = 3,\n children,\n className,\n ref,\n ...props\n}: PictographProps) => {\n return (\n <div\n ref={ref}\n className={cn(\n styles.pictograph,\n styles[`pictograph--${mode}`],\n alignment === 'center' && styles['pictograph--centered'],\n styles[`pictograph--icon-${iconSize}`],\n className,\n )}\n {...props}\n >\n <ul className={cn(styles.pictograph__list, styles[`pictograph__list--${columns}`])}>\n {children}\n </ul>\n </div>\n );\n};\n"],"names":["jsx","cn","styles"],"mappings":";;;;;AAIO,MAAM,aAAa,CAAC;AAAA,EACvB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAAuB;AACnB,SACIA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA,WAAWC,GAAAA;AAAAA,QACPC,kBAAAA,QAAO;AAAA,QACPA,kBAAAA,QAAO,eAAe,IAAI,EAAE;AAAA,QAC5B,cAAc,YAAYA,kBAAAA,QAAO,sBAAsB;AAAA,QACvDA,kBAAAA,QAAO,oBAAoB,QAAQ,EAAE;AAAA,QACrC;AAAA,MAAA;AAAA,MAEH,GAAG;AAAA,MAEJ,UAAAF,2BAAAA,IAAC,MAAA,EAAG,WAAWC,GAAAA,GAAGC,kBAAAA,QAAO,kBAAkBA,kBAAAA,QAAO,qBAAqB,OAAO,EAAE,CAAC,GAC5E,SAAA,CACL;AAAA,IAAA;AAAA,EAAA;AAGZ;;"}
@@ -0,0 +1,190 @@
1
+ @layer dds-components {/**
2
+ * Pictograph Component Styles
3
+ *
4
+ * Grid-based layout for pictograph items with responsive columns,
5
+ * alignment variants, and dark color scheme support.
6
+ *
7
+ * Uses container queries for responsive behavior and CSS custom properties
8
+ * to communicate layout settings to child items.
9
+ *
10
+ * Container breakpoints (matching reference):
11
+ * 440px — large mobile
12
+ * 688px — tablet
13
+ * 944px — desktop
14
+ */
15
+
16
+ ._pictograph_11vg9_16 {
17
+ --pictograph-icon-size: 40px;
18
+ --pictograph-direction: row;
19
+ --pictograph-align: flex-start;
20
+ --pictograph-text-align: left;
21
+ --pictograph-item-gap: 20px;
22
+ --pictograph-text-color: inherit;
23
+ --pictograph-icon-color: var(--color-semantic-foreground-primary-strong);
24
+
25
+ margin: 0;
26
+ container-name: pictograph;
27
+ container-type: inline-size;
28
+ }
29
+
30
+ /* ─── Mode: vertical (icon above text) ─── */
31
+
32
+ ._pictograph--vertical_11vg9_32 {
33
+ --pictograph-direction: column;
34
+ --pictograph-item-gap: 10px;
35
+ }
36
+
37
+ /* ─── List layout ─── */
38
+
39
+ ._pictograph__list_11vg9_39 {
40
+ display: grid;
41
+ gap: 30px;
42
+ list-style: none;
43
+ margin: 0;
44
+ padding: 0;
45
+ }
46
+
47
+ /* ─── Column variants (container queries) ─── */
48
+
49
+ @container pictograph (min-width: 440px) {
50
+ ._pictograph__list--5_11vg9_50 {
51
+ grid-template-columns: repeat(2, 1fr);
52
+ }
53
+ }
54
+
55
+ @container pictograph (min-width: 688px) {
56
+ ._pictograph__list--2_11vg9_56,
57
+ ._pictograph__list--3_11vg9_57,
58
+ ._pictograph__list--4_11vg9_58 {
59
+ grid-template-columns: repeat(2, 1fr);
60
+ }
61
+
62
+ ._pictograph__list--5_11vg9_50 {
63
+ grid-template-columns: repeat(3, 1fr);
64
+ }
65
+ }
66
+
67
+ @container pictograph (min-width: 944px) {
68
+ ._pictograph__list--3_11vg9_57 {
69
+ grid-template-columns: repeat(3, 1fr);
70
+ }
71
+
72
+ ._pictograph__list--4_11vg9_58 {
73
+ grid-template-columns: repeat(4, 1fr);
74
+ }
75
+
76
+ ._pictograph__list--5_11vg9_50 {
77
+ grid-template-columns: repeat(5, 1fr);
78
+ }
79
+ }
80
+
81
+ /* ─── Mode: horizontal (icon beside text) ─── */
82
+
83
+ ._pictograph--horizontal_11vg9_83 {
84
+ --pictograph-direction: row;
85
+ --pictograph-item-gap: 20px;
86
+ }
87
+
88
+ ._pictograph--horizontal_11vg9_83 ._pictograph__list_11vg9_39 {
89
+ gap: 20px 30px;
90
+ }
91
+
92
+ /* Horizontal mode: column overrides */
93
+ ._pictograph--horizontal_11vg9_83 ._pictograph__list--4_11vg9_58,
94
+ ._pictograph--horizontal_11vg9_83 ._pictograph__list--5_11vg9_50 {
95
+ grid-template-columns: 1fr;
96
+ }
97
+
98
+ @container pictograph (min-width: 440px) {
99
+ ._pictograph--horizontal_11vg9_83 ._pictograph__list--4_11vg9_58,
100
+ ._pictograph--horizontal_11vg9_83 ._pictograph__list--5_11vg9_50 {
101
+ grid-template-columns: repeat(2, 1fr);
102
+ }
103
+ }
104
+
105
+ @container pictograph (min-width: 688px) {
106
+ ._pictograph--horizontal_11vg9_83 ._pictograph__list--5_11vg9_50 {
107
+ grid-template-columns: repeat(3, 1fr);
108
+ }
109
+ }
110
+
111
+ @container pictograph (min-width: 944px) {
112
+ ._pictograph--horizontal_11vg9_83 ._pictograph__list--4_11vg9_58 {
113
+ grid-template-columns: repeat(4, 1fr);
114
+ }
115
+
116
+ ._pictograph--horizontal_11vg9_83 ._pictograph__list--5_11vg9_50 {
117
+ grid-template-columns: repeat(5, 1fr);
118
+ }
119
+ }
120
+
121
+ /* ─── Alignment: centered ─── */
122
+
123
+ ._pictograph--centered_11vg9_123 {
124
+ --pictograph-align: center;
125
+ }
126
+
127
+ ._pictograph--vertical_11vg9_32._pictograph--centered_11vg9_123 {
128
+ --pictograph-text-align: center;
129
+ }
130
+
131
+ /* ─── Icon size: small ─── */
132
+
133
+ ._pictograph--icon-small_11vg9_133 {
134
+ --pictograph-icon-size: 40px;
135
+ }
136
+
137
+ @container pictograph (min-width: 688px) {
138
+ ._pictograph--icon-small_11vg9_133 {
139
+ --pictograph-icon-size: 52px;
140
+ }
141
+ }
142
+
143
+ /* ─── Icon size: large ─── */
144
+
145
+ ._pictograph--icon-large_11vg9_145 {
146
+ --pictograph-icon-size: 52px;
147
+ }
148
+
149
+ @container pictograph (min-width: 688px) {
150
+ ._pictograph--icon-large_11vg9_145 {
151
+ --pictograph-icon-size: 72px;
152
+ }
153
+ }
154
+
155
+ /* ─── Vertical + short text: items are compact, allow more columns earlier ─── */
156
+ /* Note: :has(li > div:last-child > p:only-child) depends on PictographItem DOM structure:
157
+ <li> → <span>(icon) + <div>(text). If PictographItem markup changes, update these selectors. */
158
+
159
+ @container pictograph (min-width: 440px) {
160
+ ._pictograph--vertical_11vg9_32:has(li > div:last-child > p:only-child) ._pictograph__list--4_11vg9_58 {
161
+ grid-template-columns: repeat(2, 1fr);
162
+ }
163
+ }
164
+
165
+ /* ─── Horizontal + long text: stack items vertically at small sizes ─── */
166
+
167
+ @container pictograph (max-width: 439px) {
168
+ ._pictograph--horizontal_11vg9_83:not(:has(li > div:last-child > p:only-child)) ._pictograph__list_11vg9_39 {
169
+ --pictograph-direction: column;
170
+ --pictograph-align: flex-start;
171
+ --pictograph-item-gap: 10px;
172
+ }
173
+ }
174
+
175
+ @container pictograph (min-width: 688px) {
176
+ ._pictograph--horizontal_11vg9_83:not(:has(li > div:last-child > p:only-child)) ._pictograph__list_11vg9_39 {
177
+ gap: 30px;
178
+ }
179
+ }
180
+
181
+ /* ─── Dark color scheme ─── */
182
+ /* Styles apply from [data-color-scheme="dark"] down to (but not into) [data-color-scheme="light"]. */
183
+
184
+ @scope ([data-color-scheme='dark']) to ([data-color-scheme='light']) {
185
+ ._pictograph_11vg9_16 {
186
+ --pictograph-text-color: var(--color-semantic-foreground-inverse);
187
+ --pictograph-icon-color: var(--color-semantic-foreground-inverse);
188
+ }
189
+ }
190
+ }
@@ -0,0 +1,3 @@
1
+ import { PictographProps } from './Pictograph.types';
2
+ export declare const Pictograph: ({ iconSize, alignment, mode, columns, children, className, ref, ...props }: PictographProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=Pictograph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pictograph.d.ts","sourceRoot":"","sources":["../../../src/components/Pictograph/Pictograph.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,UAAU,GAAI,4EASxB,eAAe,4CAkBjB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import styles from "./Pictograph.module.css.js";
3
+ import { cn } from "../../utils/cn/cn.js";
4
+ const Pictograph = ({
5
+ iconSize = "small",
6
+ alignment = "center",
7
+ mode = "horizontal",
8
+ columns = 3,
9
+ children,
10
+ className,
11
+ ref,
12
+ ...props
13
+ }) => {
14
+ return /* @__PURE__ */ jsx(
15
+ "div",
16
+ {
17
+ ref,
18
+ className: cn(
19
+ styles.pictograph,
20
+ styles[`pictograph--${mode}`],
21
+ alignment === "center" && styles["pictograph--centered"],
22
+ styles[`pictograph--icon-${iconSize}`],
23
+ className
24
+ ),
25
+ ...props,
26
+ children: /* @__PURE__ */ jsx("ul", { className: cn(styles.pictograph__list, styles[`pictograph__list--${columns}`]), children })
27
+ }
28
+ );
29
+ };
30
+ export {
31
+ Pictograph
32
+ };
33
+ //# sourceMappingURL=Pictograph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pictograph.js","sources":["../../../src/components/Pictograph/Pictograph.tsx"],"sourcesContent":["import { cn } from '../../utils/cn';\nimport styles from './Pictograph.module.css';\nimport type { PictographProps } from './Pictograph.types';\n\nexport const Pictograph = ({\n iconSize = 'small',\n alignment = 'center',\n mode = 'horizontal',\n columns = 3,\n children,\n className,\n ref,\n ...props\n}: PictographProps) => {\n return (\n <div\n ref={ref}\n className={cn(\n styles.pictograph,\n styles[`pictograph--${mode}`],\n alignment === 'center' && styles['pictograph--centered'],\n styles[`pictograph--icon-${iconSize}`],\n className,\n )}\n {...props}\n >\n <ul className={cn(styles.pictograph__list, styles[`pictograph__list--${columns}`])}>\n {children}\n </ul>\n </div>\n );\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,aAAa,CAAC;AAAA,EACvB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAAuB;AACnB,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA,WAAW;AAAA,QACP,OAAO;AAAA,QACP,OAAO,eAAe,IAAI,EAAE;AAAA,QAC5B,cAAc,YAAY,OAAO,sBAAsB;AAAA,QACvD,OAAO,oBAAoB,QAAQ,EAAE;AAAA,QACrC;AAAA,MAAA;AAAA,MAEH,GAAG;AAAA,MAEJ,UAAA,oBAAC,MAAA,EAAG,WAAW,GAAG,OAAO,kBAAkB,OAAO,qBAAqB,OAAO,EAAE,CAAC,GAC5E,SAAA,CACL;AAAA,IAAA;AAAA,EAAA;AAGZ;"}
@@ -0,0 +1,22 @@
1
+ require('./Pictograph.css');
2
+ "use strict";
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
4
+ const pictograph = "_pictograph_11vg9_16";
5
+ const pictograph__list = "_pictograph__list_11vg9_39";
6
+ const styles = {
7
+ pictograph,
8
+ "pictograph--vertical": "_pictograph--vertical_11vg9_32",
9
+ pictograph__list,
10
+ "pictograph__list--5": "_pictograph__list--5_11vg9_50",
11
+ "pictograph__list--2": "_pictograph__list--2_11vg9_56",
12
+ "pictograph__list--3": "_pictograph__list--3_11vg9_57",
13
+ "pictograph__list--4": "_pictograph__list--4_11vg9_58",
14
+ "pictograph--horizontal": "_pictograph--horizontal_11vg9_83",
15
+ "pictograph--centered": "_pictograph--centered_11vg9_123",
16
+ "pictograph--icon-small": "_pictograph--icon-small_11vg9_133",
17
+ "pictograph--icon-large": "_pictograph--icon-large_11vg9_145"
18
+ };
19
+ exports.default = styles;
20
+ exports.pictograph = pictograph;
21
+ exports.pictograph__list = pictograph__list;
22
+ //# sourceMappingURL=Pictograph.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pictograph.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,22 @@
1
+ import './Pictograph.css';
2
+ const pictograph = "_pictograph_11vg9_16";
3
+ const pictograph__list = "_pictograph__list_11vg9_39";
4
+ const styles = {
5
+ pictograph,
6
+ "pictograph--vertical": "_pictograph--vertical_11vg9_32",
7
+ pictograph__list,
8
+ "pictograph__list--5": "_pictograph__list--5_11vg9_50",
9
+ "pictograph__list--2": "_pictograph__list--2_11vg9_56",
10
+ "pictograph__list--3": "_pictograph__list--3_11vg9_57",
11
+ "pictograph__list--4": "_pictograph__list--4_11vg9_58",
12
+ "pictograph--horizontal": "_pictograph--horizontal_11vg9_83",
13
+ "pictograph--centered": "_pictograph--centered_11vg9_123",
14
+ "pictograph--icon-small": "_pictograph--icon-small_11vg9_133",
15
+ "pictograph--icon-large": "_pictograph--icon-large_11vg9_145"
16
+ };
17
+ export {
18
+ styles as default,
19
+ pictograph,
20
+ pictograph__list
21
+ };
22
+ //# sourceMappingURL=Pictograph.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pictograph.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -0,0 +1,46 @@
1
+ import { ComponentPropsWithRef, ReactNode } from 'react';
2
+ export interface PictographProps extends ComponentPropsWithRef<'div'> {
3
+ /**
4
+ * Size of the icon area in each item.
5
+ * - `small`: 40px (52px on tablet and above)
6
+ * - `large`: 52px (72px on tablet and above)
7
+ * @default 'small'
8
+ */
9
+ readonly iconSize?: 'small' | 'large';
10
+ /**
11
+ * Alignment of icon and text within items.
12
+ * - In horizontal mode: controls vertical alignment between icon and text
13
+ * (`start` = tops aligned, `center` = vertically centered). Text is always left-aligned.
14
+ * - In vertical mode: controls horizontal alignment of icon and text
15
+ * (`start` = left-aligned, `center` = centered with centered text).
16
+ * @default 'center'
17
+ */
18
+ readonly alignment?: 'start' | 'center';
19
+ /**
20
+ * Layout direction of icon relative to text within each item.
21
+ * - `horizontal`: icon and text side by side
22
+ * - `vertical`: icon above text
23
+ * @default 'horizontal'
24
+ */
25
+ readonly mode?: 'horizontal' | 'vertical';
26
+ /**
27
+ * Number of columns in the grid layout (1–5) in desktop view. Columns are automatically adjusted based on available layout width.
28
+ * @default 3
29
+ */
30
+ readonly columns?: 1 | 2 | 3 | 4 | 5;
31
+ /**
32
+ * PictographItem elements to render.
33
+ */
34
+ readonly children: ReactNode;
35
+ }
36
+ export interface PictographItemProps extends ComponentPropsWithRef<'li'> {
37
+ /**
38
+ * SVG icon element. Rendered as decorative with aria-hidden="true".
39
+ */
40
+ readonly icon: ReactNode;
41
+ /**
42
+ * Text content for the pictograph item.
43
+ */
44
+ readonly children: ReactNode;
45
+ }
46
+ //# sourceMappingURL=Pictograph.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pictograph.types.d.ts","sourceRoot":"","sources":["../../../src/components/Pictograph/Pictograph.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,MAAM,WAAW,eAAgB,SAAQ,qBAAqB,CAAC,KAAK,CAAC;IACjE;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,CAAC,IAAI,CAAC;IACpE;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAChC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const PictographItem_module = require("./PictographItem.module.css.cjs");
5
+ const cn = require("../../utils/cn/cn.cjs");
6
+ const PictographItem = ({
7
+ icon,
8
+ children,
9
+ className,
10
+ ref,
11
+ ...props
12
+ }) => {
13
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { ref, className: cn.cn(PictographItem_module["pictograph-item"], className), ...props, children: [
14
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: PictographItem_module["pictograph-item__icon"], "aria-hidden": "true", children: icon }),
15
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: PictographItem_module["pictograph-item__text"], children })
16
+ ] });
17
+ };
18
+ exports.PictographItem = PictographItem;
19
+ //# sourceMappingURL=PictographItem.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictographItem.cjs","sources":["../../../src/components/Pictograph/PictographItem.tsx"],"sourcesContent":["import { cn } from '../../utils/cn';\nimport styles from './PictographItem.module.css';\nimport type { PictographItemProps } from './Pictograph.types';\n\nexport const PictographItem = ({\n icon,\n children,\n className,\n ref,\n ...props\n}: PictographItemProps) => {\n return (\n <li ref={ref} className={cn(styles['pictograph-item'], className)} {...props}>\n <span className={styles['pictograph-item__icon']} aria-hidden=\"true\">\n {icon}\n </span>\n <div className={styles['pictograph-item__text']}>{children}</div>\n </li>\n );\n};\n"],"names":["jsxs","cn","styles","jsx"],"mappings":";;;;;AAIO,MAAM,iBAAiB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAA2B;AACvB,SACIA,2BAAAA,KAAC,MAAA,EAAG,KAAU,WAAWC,GAAAA,GAAGC,sBAAO,iBAAiB,GAAG,SAAS,GAAI,GAAG,OACnE,UAAA;AAAA,IAAAC,2BAAAA,IAAC,UAAK,WAAWD,sBAAO,uBAAuB,GAAG,eAAY,QACzD,UAAA,MACL;AAAA,mCACC,OAAA,EAAI,WAAWA,sBAAO,uBAAuB,GAAI,SAAA,CAAS;AAAA,EAAA,GAC/D;AAER;;"}
@@ -0,0 +1,63 @@
1
+ @layer dds-components {/**
2
+ * PictographItem Component Styles
3
+ *
4
+ * Individual pictograph item containing an icon and text area.
5
+ * Reads CSS custom properties from the parent Pictograph component
6
+ * for direction, alignment, icon sizing, and gap.
7
+ */
8
+
9
+ ._pictograph-item_1udd7_9 {
10
+ display: flex;
11
+ flex-direction: var(--pictograph-direction);
12
+ align-items: var(--pictograph-align);
13
+ gap: var(--pictograph-item-gap);
14
+ margin: 0;
15
+ }
16
+
17
+ ._pictograph-item__icon_1udd7_17 {
18
+ flex: 0 0 auto;
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ color: var(--pictograph-icon-color);
23
+ width: var(--pictograph-icon-size);
24
+ height: var(--pictograph-icon-size);
25
+ }
26
+
27
+ ._pictograph-item__icon_1udd7_17 svg {
28
+ fill: currentColor;
29
+ width: 100%;
30
+ height: 100%;
31
+ max-width: none;
32
+ max-height: none;
33
+ }
34
+
35
+ ._pictograph-item__text_1udd7_35 {
36
+ display: flex;
37
+ flex-direction: column;
38
+ gap: 10px;
39
+ text-align: var(--pictograph-text-align);
40
+ text-wrap: balance;
41
+ color: var(--pictograph-text-color);
42
+ }
43
+
44
+ ._pictograph-item__text_1udd7_35 > *:not(dialog) {
45
+ margin-top: 0;
46
+ margin-bottom: 0;
47
+ }
48
+
49
+ /* Single paragraph gets larger font */
50
+ ._pictograph-item__text_1udd7_35 > p:only-child {
51
+ font: var(--typography-body-lg);
52
+ margin-bottom: 0;
53
+ }
54
+
55
+ /* Headings inside text area */
56
+ ._pictograph-item__text_1udd7_35 h1,
57
+ ._pictograph-item__text_1udd7_35 h2,
58
+ ._pictograph-item__text_1udd7_35 h3,
59
+ ._pictograph-item__text_1udd7_35 h4,
60
+ ._pictograph-item__text_1udd7_35 h5 {
61
+ font: var(--typography-heading-xs);
62
+ }
63
+ }
@@ -0,0 +1,3 @@
1
+ import { PictographItemProps } from './Pictograph.types';
2
+ export declare const PictographItem: ({ icon, children, className, ref, ...props }: PictographItemProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=PictographItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictographItem.d.ts","sourceRoot":"","sources":["../../../src/components/Pictograph/PictographItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,eAAO,MAAM,cAAc,GAAI,8CAM5B,mBAAmB,4CASrB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import styles from "./PictographItem.module.css.js";
3
+ import { cn } from "../../utils/cn/cn.js";
4
+ const PictographItem = ({
5
+ icon,
6
+ children,
7
+ className,
8
+ ref,
9
+ ...props
10
+ }) => {
11
+ return /* @__PURE__ */ jsxs("li", { ref, className: cn(styles["pictograph-item"], className), ...props, children: [
12
+ /* @__PURE__ */ jsx("span", { className: styles["pictograph-item__icon"], "aria-hidden": "true", children: icon }),
13
+ /* @__PURE__ */ jsx("div", { className: styles["pictograph-item__text"], children })
14
+ ] });
15
+ };
16
+ export {
17
+ PictographItem
18
+ };
19
+ //# sourceMappingURL=PictographItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictographItem.js","sources":["../../../src/components/Pictograph/PictographItem.tsx"],"sourcesContent":["import { cn } from '../../utils/cn';\nimport styles from './PictographItem.module.css';\nimport type { PictographItemProps } from './Pictograph.types';\n\nexport const PictographItem = ({\n icon,\n children,\n className,\n ref,\n ...props\n}: PictographItemProps) => {\n return (\n <li ref={ref} className={cn(styles['pictograph-item'], className)} {...props}>\n <span className={styles['pictograph-item__icon']} aria-hidden=\"true\">\n {icon}\n </span>\n <div className={styles['pictograph-item__text']}>{children}</div>\n </li>\n );\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,iBAAiB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,MAA2B;AACvB,SACI,qBAAC,MAAA,EAAG,KAAU,WAAW,GAAG,OAAO,iBAAiB,GAAG,SAAS,GAAI,GAAG,OACnE,UAAA;AAAA,IAAA,oBAAC,UAAK,WAAW,OAAO,uBAAuB,GAAG,eAAY,QACzD,UAAA,MACL;AAAA,wBACC,OAAA,EAAI,WAAW,OAAO,uBAAuB,GAAI,SAAA,CAAS;AAAA,EAAA,GAC/D;AAER;"}
@@ -0,0 +1,9 @@
1
+ require('./PictographItem.css');
2
+ "use strict";
3
+ const styles = {
4
+ "pictograph-item": "_pictograph-item_1udd7_9",
5
+ "pictograph-item__icon": "_pictograph-item__icon_1udd7_17",
6
+ "pictograph-item__text": "_pictograph-item__text_1udd7_35"
7
+ };
8
+ module.exports = styles;
9
+ //# sourceMappingURL=PictographItem.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictographItem.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,10 @@
1
+ import './PictographItem.css';
2
+ const styles = {
3
+ "pictograph-item": "_pictograph-item_1udd7_9",
4
+ "pictograph-item__icon": "_pictograph-item__icon_1udd7_17",
5
+ "pictograph-item__text": "_pictograph-item__text_1udd7_35"
6
+ };
7
+ export {
8
+ styles as default
9
+ };
10
+ //# sourceMappingURL=PictographItem.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictographItem.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,4 @@
1
+ export { Pictograph } from './Pictograph';
2
+ export { PictographItem } from './PictographItem';
3
+ export type { PictographItemProps, PictographProps } from './Pictograph.types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Pictograph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {/* ─────────────────────────────────────────────────────────────
1
+ @layer dds-components {/* ─────────────────────────────────────────────────────────────
2
2
  Spinner — base
3
3
  ───────────────────────────────────────────────────────────── */
4
4
 
package/dist/index.cjs CHANGED
@@ -8,6 +8,8 @@ const Button = require("./components/Button/Button.cjs");
8
8
  const ColorScheme = require("./components/ColorScheme/ColorScheme.cjs");
9
9
  const Label = require("./components/Label/Label.cjs");
10
10
  const Notification = require("./components/Notification/Notification.cjs");
11
+ const Pictograph = require("./components/Pictograph/Pictograph.cjs");
12
+ const PictographItem = require("./components/Pictograph/PictographItem.cjs");
11
13
  const Spinner = require("./components/Spinner/Spinner.cjs");
12
14
  const cn = require("./utils/cn/cn.cjs");
13
15
  exports.Accordion = Accordion.Accordion;
@@ -17,6 +19,8 @@ exports.Button = Button.Button;
17
19
  exports.ColorScheme = ColorScheme.ColorScheme;
18
20
  exports.Label = Label.Label;
19
21
  exports.Notification = Notification.Notification;
22
+ exports.Pictograph = Pictograph.Pictograph;
23
+ exports.PictographItem = PictographItem.PictographItem;
20
24
  exports.Spinner = Spinner.Spinner;
21
25
  exports.cn = cn.cn;
22
26
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export { Button } from './components/Button';
5
5
  export { ColorScheme } from './components/ColorScheme';
6
6
  export { Notification } from './components/Notification';
7
7
  export { Label } from './components/Label';
8
+ export { Pictograph, PictographItem } from './components/Pictograph';
8
9
  export { Spinner } from './components/Spinner';
9
10
  export type { AccordionProps } from './components/Accordion';
10
11
  export type { AccordionItemProps } from './components/AccordionItem';
@@ -13,6 +14,7 @@ export type { ButtonProps, ButtonLinkProps, ButtonVariant, ButtonSize } from './
13
14
  export type { ColorSchemeProps, ColorSchemeValue } from './components/ColorScheme';
14
15
  export type { NotificationProps, NotificationVariant } from './components/Notification';
15
16
  export type { LabelProps, LabelVariant } from './components/Label';
17
+ export type { PictographItemProps, PictographProps } from './components/Pictograph';
16
18
  export type { SpinnerColor, SpinnerProps, SpinnerSize } from './components/Spinner';
17
19
  export { cn } from './utils';
18
20
  export type { CnDictionary, CnInput } from './utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAG5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACpG,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnG,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACxF,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAG5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACpG,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnG,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACxF,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACpF,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ import { Button } from "./components/Button/Button.js";
6
6
  import { ColorScheme } from "./components/ColorScheme/ColorScheme.js";
7
7
  import { Label } from "./components/Label/Label.js";
8
8
  import { Notification } from "./components/Notification/Notification.js";
9
+ import { Pictograph } from "./components/Pictograph/Pictograph.js";
10
+ import { PictographItem } from "./components/Pictograph/PictographItem.js";
9
11
  import { Spinner } from "./components/Spinner/Spinner.js";
10
12
  import { cn } from "./utils/cn/cn.js";
11
13
  export {
@@ -16,6 +18,8 @@ export {
16
18
  ColorScheme,
17
19
  Label,
18
20
  Notification,
21
+ Pictograph,
22
+ PictographItem,
19
23
  Spinner,
20
24
  cn
21
25
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {/*
1
+ @layer dds-components {/*
2
2
  * TODO: Replace local variables (_elevation-semantic-low, high and extra-high)
3
3
  * with official design tokens once elevation tokens are added to the design token set
4
4
  */
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {._focusable_ikczm_1 {
1
+ @layer dds-components {._focusable_ikczm_1 {
2
2
  /* Marker class for shared focus treatment */
3
3
  }
4
4
 
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {._underlineLink_1nw3t_1 {
1
+ @layer dds-components {._underlineLink_1nw3t_1 {
2
2
  text-decoration: underline;
3
3
  text-underline-offset: 0.2em;
4
4
  text-decoration-skip-ink: auto;
package/dist/styles.css CHANGED
@@ -1,4 +1,4 @@
1
- @layer dna-design-system {
1
+ @layer dds-base {
2
2
 
3
3
  /**
4
4
  * Do not edit directly, this file was auto-generated.
@@ -33,6 +33,7 @@
33
33
  --color-semantic-surface-secondary-strong: #551c3e;
34
34
  --color-semantic-surface-secondary-mid: #69214c;
35
35
  --color-semantic-surface-secondary-soft: #792a59;
36
+ --color-semantic-surface-base-inverse: #121212;
36
37
  --color-semantic-border-neutral-mid: #d4d2ce;
37
38
  --color-semantic-border-neutral-soft: #e7e5e3;
38
39
  --color-semantic-border-neutral-base: #efeeed;
@@ -84,6 +85,11 @@
84
85
  --color-semantic-interactive-inverse-focus: #ffffff;
85
86
  --color-semantic-interactive-inverse-active: rgba(255, 255, 255, 0.9);
86
87
  --color-semantic-interactive-inverse-disabled: rgba(255, 255, 255, 0.3);
88
+ --color-semantic-interactive-auxiliary-default: #ffdbad;
89
+ --color-semantic-interactive-auxiliary-hover: #ffb557;
90
+ --color-semantic-interactive-auxiliary-focus: #ffb557;
91
+ --color-semantic-interactive-auxiliary-active: #ffdbad;
92
+ --color-semantic-interactive-auxiliary-disabled: rgba(255, 219, 173, 0.3);
87
93
  --spacing-ui-md: 16px;
88
94
  --spacing-ui-lg: 20px;
89
95
  --spacing-ui-sm: 12px;
@@ -113,13 +119,13 @@
113
119
  --borderwidth-semantic-xl: 5px;
114
120
  --borderwidth-semantic-xxl: 6px;
115
121
  --borderwidth-semantic-sm: 2px;
116
- --typography-font-size-heading-xxxl: 64px;
117
122
  --typography-font-size-heading-xxl: 48px;
118
- --typography-font-size-heading-xl: 36px;
119
- --typography-font-size-heading-lg: 28px;
120
- --typography-font-size-heading-md: 24px;
121
- --typography-font-size-heading-sm: 20px;
122
- --typography-font-size-heading-xs: 18px;
123
+ --typography-font-size-heading-xl: 40px;
124
+ --typography-font-size-heading-lg: 34px;
125
+ --typography-font-size-heading-md: 28px;
126
+ --typography-font-size-heading-sm: 24px;
127
+ --typography-font-size-heading-xs: 20px;
128
+ --typography-font-size-heading-xxs: 18px;
123
129
  --typography-font-size-text-lg: 20px;
124
130
  --typography-font-size-text-md: 16px;
125
131
  --typography-font-size-text-sm: 14px;
@@ -141,7 +147,7 @@
141
147
  }
142
148
  }
143
149
 
144
- @layer dna-design-system {
150
+ @layer dds-base {
145
151
 
146
152
  *,
147
153
  *::before,
@@ -173,7 +179,7 @@ video {
173
179
  }
174
180
  }
175
181
 
176
- @layer dna-design-system {
182
+ @layer dds-base {
177
183
 
178
184
  /* ==========================================================================
179
185
  Typography shorthand variables
@@ -190,7 +196,8 @@ video {
190
196
  ========================================================================== */
191
197
 
192
198
  :root {
193
- /* TODO (DDS-14): Remove these two overrides once the design-tokens font-family tokens include fallbacks. */
199
+ /* Font-family with fallbacks — Figma tokens only contain the primary font name,
200
+ so we override here to add the full fallback stack for CSS. */
194
201
  --typography-font-family-heading: 'DNA Heading', 'Helvetica Neue', Helvetica, Arial, sans-serif;
195
202
  --typography-font-family-text: 'DNA Text', 'Helvetica Neue', Helvetica, Arial, sans-serif;
196
203
 
@@ -218,12 +225,18 @@ video {
218
225
  var(--typography-font-family-text);
219
226
 
220
227
  /* Body */
221
- --typography-body-lg: var(--typography-font-weight-medium)
228
+ --typography-body-lg: var(--typography-font-weight-regular)
229
+ clamp(1.125rem, 1.083rem + 0.208cqw, 1.25rem)/var(--typography-line-height-lg)
230
+ var(--typography-font-family-text);
231
+ --typography-body-lg-medium: var(--typography-font-weight-medium)
222
232
  clamp(1.125rem, 1.083rem + 0.208cqw, 1.25rem)/var(--typography-line-height-lg)
223
233
  var(--typography-font-family-text);
224
234
  --typography-body-md: var(--typography-font-weight-regular)
225
235
  var(--typography-font-size-text-md)/var(--typography-line-height-lg)
226
236
  var(--typography-font-family-text);
237
+ --typography-body-md-medium: var(--typography-font-weight-medium)
238
+ var(--typography-font-size-text-md)/var(--typography-line-height-lg)
239
+ var(--typography-font-family-text);
227
240
  --typography-body-md-bold: var(--typography-font-weight-bold)
228
241
  var(--typography-font-size-text-md)/var(--typography-line-height-lg)
229
242
  var(--typography-font-family-text);
@@ -321,16 +334,19 @@ small {
321
334
  /*
322
335
  * Design decision (ADR-003): base links are color-driven, not underlined.
323
336
  * Long-form content uses .dds-prose which adds underline + external link icon.
337
+ *
338
+ * :where() gives these base styles zero specificity so component classes
339
+ * (e.g. Button rendered as <a>) always win without needing !important.
324
340
  */
325
- a {
341
+ :where(a) {
326
342
  color: var(--color-semantic-foreground-link);
327
343
  text-decoration: none;
328
344
  cursor: pointer;
329
345
  transition: color 0.2s ease-in-out;
330
- &:hover {
331
- color: var(--color-semantic-foreground-link-hover);
332
- text-decoration: none;
333
- }
346
+ }
347
+ :where(a:hover) {
348
+ color: var(--color-semantic-foreground-link-hover);
349
+ text-decoration: none;
334
350
  }
335
351
 
336
352
  ul {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnanpm/ui-components",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "DNA Design System - React UI Components",
5
5
  "author": "DNA Oy",
6
6
  "license": "ISC",