@dsn-starter-kit/components-web 1.0.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 (161) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/button/Button.d.ts +50 -0
  4. package/dist/button/Button.d.ts.map +1 -0
  5. package/dist/button/Button.js +247 -0
  6. package/dist/button/Button.js.map +1 -0
  7. package/dist/button/Button.test.d.ts +2 -0
  8. package/dist/button/Button.test.d.ts.map +1 -0
  9. package/dist/button/Button.test.js +299 -0
  10. package/dist/button/Button.test.js.map +1 -0
  11. package/dist/button/button-styles.generated.d.ts +2 -0
  12. package/dist/button/button-styles.generated.d.ts.map +1 -0
  13. package/dist/button/button-styles.generated.js +4 -0
  14. package/dist/button/button-styles.generated.js.map +1 -0
  15. package/dist/button/index.d.ts +3 -0
  16. package/dist/button/index.d.ts.map +1 -0
  17. package/dist/button/index.js +2 -0
  18. package/dist/button/index.js.map +1 -0
  19. package/dist/heading/Heading.d.ts +30 -0
  20. package/dist/heading/Heading.d.ts.map +1 -0
  21. package/dist/heading/Heading.js +79 -0
  22. package/dist/heading/Heading.js.map +1 -0
  23. package/dist/heading/Heading.test.d.ts +2 -0
  24. package/dist/heading/Heading.test.d.ts.map +1 -0
  25. package/dist/heading/Heading.test.js +157 -0
  26. package/dist/heading/Heading.test.js.map +1 -0
  27. package/dist/heading/heading-styles.generated.d.ts +2 -0
  28. package/dist/heading/heading-styles.generated.d.ts.map +1 -0
  29. package/dist/heading/heading-styles.generated.js +4 -0
  30. package/dist/heading/heading-styles.generated.js.map +1 -0
  31. package/dist/heading/index.d.ts +3 -0
  32. package/dist/heading/index.d.ts.map +1 -0
  33. package/dist/heading/index.js +2 -0
  34. package/dist/heading/index.js.map +1 -0
  35. package/dist/icon/Icon.d.ts +31 -0
  36. package/dist/icon/Icon.d.ts.map +1 -0
  37. package/dist/icon/Icon.js +110 -0
  38. package/dist/icon/Icon.js.map +1 -0
  39. package/dist/icon/Icon.test.d.ts +2 -0
  40. package/dist/icon/Icon.test.d.ts.map +1 -0
  41. package/dist/icon/Icon.test.js +193 -0
  42. package/dist/icon/Icon.test.js.map +1 -0
  43. package/dist/icon/icon-paths.generated.d.ts +2 -0
  44. package/dist/icon/icon-paths.generated.d.ts.map +1 -0
  45. package/dist/icon/icon-paths.generated.js +56 -0
  46. package/dist/icon/icon-paths.generated.js.map +1 -0
  47. package/dist/icon/icon-styles.generated.d.ts +2 -0
  48. package/dist/icon/icon-styles.generated.d.ts.map +1 -0
  49. package/dist/icon/icon-styles.generated.js +4 -0
  50. package/dist/icon/icon-styles.generated.js.map +1 -0
  51. package/dist/icon/index.d.ts +3 -0
  52. package/dist/icon/index.d.ts.map +1 -0
  53. package/dist/icon/index.js +2 -0
  54. package/dist/icon/index.js.map +1 -0
  55. package/dist/index.d.ts +52 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +71 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/link/Link.d.ts +52 -0
  60. package/dist/link/Link.d.ts.map +1 -0
  61. package/dist/link/Link.js +260 -0
  62. package/dist/link/Link.js.map +1 -0
  63. package/dist/link/Link.test.d.ts +2 -0
  64. package/dist/link/Link.test.d.ts.map +1 -0
  65. package/dist/link/Link.test.js +256 -0
  66. package/dist/link/Link.test.js.map +1 -0
  67. package/dist/link/index.d.ts +3 -0
  68. package/dist/link/index.d.ts.map +1 -0
  69. package/dist/link/index.js +2 -0
  70. package/dist/link/index.js.map +1 -0
  71. package/dist/link/link-styles.generated.d.ts +2 -0
  72. package/dist/link/link-styles.generated.d.ts.map +1 -0
  73. package/dist/link/link-styles.generated.js +4 -0
  74. package/dist/link/link-styles.generated.js.map +1 -0
  75. package/dist/ordered-list/OrderedList.d.ts +32 -0
  76. package/dist/ordered-list/OrderedList.d.ts.map +1 -0
  77. package/dist/ordered-list/OrderedList.js +72 -0
  78. package/dist/ordered-list/OrderedList.js.map +1 -0
  79. package/dist/ordered-list/OrderedList.test.d.ts +2 -0
  80. package/dist/ordered-list/OrderedList.test.d.ts.map +1 -0
  81. package/dist/ordered-list/OrderedList.test.js +82 -0
  82. package/dist/ordered-list/OrderedList.test.js.map +1 -0
  83. package/dist/ordered-list/index.d.ts +2 -0
  84. package/dist/ordered-list/index.d.ts.map +1 -0
  85. package/dist/ordered-list/index.js +2 -0
  86. package/dist/ordered-list/index.js.map +1 -0
  87. package/dist/ordered-list/ordered-list-styles.generated.d.ts +2 -0
  88. package/dist/ordered-list/ordered-list-styles.generated.d.ts.map +1 -0
  89. package/dist/ordered-list/ordered-list-styles.generated.js +4 -0
  90. package/dist/ordered-list/ordered-list-styles.generated.js.map +1 -0
  91. package/dist/paragraph/Paragraph.d.ts +26 -0
  92. package/dist/paragraph/Paragraph.d.ts.map +1 -0
  93. package/dist/paragraph/Paragraph.js +60 -0
  94. package/dist/paragraph/Paragraph.js.map +1 -0
  95. package/dist/paragraph/Paragraph.test.d.ts +2 -0
  96. package/dist/paragraph/Paragraph.test.d.ts.map +1 -0
  97. package/dist/paragraph/Paragraph.test.js +121 -0
  98. package/dist/paragraph/Paragraph.test.js.map +1 -0
  99. package/dist/paragraph/index.d.ts +3 -0
  100. package/dist/paragraph/index.d.ts.map +1 -0
  101. package/dist/paragraph/index.js +2 -0
  102. package/dist/paragraph/index.js.map +1 -0
  103. package/dist/paragraph/paragraph-styles.generated.d.ts +2 -0
  104. package/dist/paragraph/paragraph-styles.generated.d.ts.map +1 -0
  105. package/dist/paragraph/paragraph-styles.generated.js +4 -0
  106. package/dist/paragraph/paragraph-styles.generated.js.map +1 -0
  107. package/dist/unordered-list/UnorderedList.d.ts +22 -0
  108. package/dist/unordered-list/UnorderedList.d.ts.map +1 -0
  109. package/dist/unordered-list/UnorderedList.js +42 -0
  110. package/dist/unordered-list/UnorderedList.js.map +1 -0
  111. package/dist/unordered-list/UnorderedList.test.d.ts +2 -0
  112. package/dist/unordered-list/UnorderedList.test.d.ts.map +1 -0
  113. package/dist/unordered-list/UnorderedList.test.js +56 -0
  114. package/dist/unordered-list/UnorderedList.test.js.map +1 -0
  115. package/dist/unordered-list/index.d.ts +2 -0
  116. package/dist/unordered-list/index.d.ts.map +1 -0
  117. package/dist/unordered-list/index.js +2 -0
  118. package/dist/unordered-list/index.js.map +1 -0
  119. package/dist/unordered-list/unordered-list-styles.generated.d.ts +2 -0
  120. package/dist/unordered-list/unordered-list-styles.generated.d.ts.map +1 -0
  121. package/dist/unordered-list/unordered-list-styles.generated.js +4 -0
  122. package/dist/unordered-list/unordered-list-styles.generated.js.map +1 -0
  123. package/package.json +42 -0
  124. package/src/button/Button.test.ts +360 -0
  125. package/src/button/Button.ts +299 -0
  126. package/src/button/button-demo.html +477 -0
  127. package/src/button/button-styles.generated.ts +3 -0
  128. package/src/button/button.shadow.css +20 -0
  129. package/src/button/index.ts +2 -0
  130. package/src/heading/Heading.test.ts +186 -0
  131. package/src/heading/Heading.ts +104 -0
  132. package/src/heading/heading-styles.generated.ts +3 -0
  133. package/src/heading/heading.shadow.css +11 -0
  134. package/src/heading/index.ts +2 -0
  135. package/src/icon/Icon.test.ts +228 -0
  136. package/src/icon/Icon.ts +136 -0
  137. package/src/icon/icon-paths.generated.ts +55 -0
  138. package/src/icon/icon-styles.generated.ts +3 -0
  139. package/src/icon/icon.shadow.css +13 -0
  140. package/src/icon/index.ts +2 -0
  141. package/src/index.ts +83 -0
  142. package/src/link/Link.test.ts +309 -0
  143. package/src/link/Link.ts +284 -0
  144. package/src/link/index.ts +2 -0
  145. package/src/link/link-styles.generated.ts +3 -0
  146. package/src/link/link.shadow.css +15 -0
  147. package/src/ordered-list/OrderedList.test.ts +97 -0
  148. package/src/ordered-list/OrderedList.ts +84 -0
  149. package/src/ordered-list/index.ts +1 -0
  150. package/src/ordered-list/ordered-list-styles.generated.ts +3 -0
  151. package/src/ordered-list/ordered-list.shadow.css +11 -0
  152. package/src/paragraph/Paragraph.test.ts +143 -0
  153. package/src/paragraph/Paragraph.ts +77 -0
  154. package/src/paragraph/index.ts +2 -0
  155. package/src/paragraph/paragraph-styles.generated.ts +3 -0
  156. package/src/paragraph/paragraph.shadow.css +11 -0
  157. package/src/unordered-list/UnorderedList.test.ts +66 -0
  158. package/src/unordered-list/UnorderedList.ts +50 -0
  159. package/src/unordered-list/index.ts +1 -0
  160. package/src/unordered-list/unordered-list-styles.generated.ts +3 -0
  161. package/src/unordered-list/unordered-list.shadow.css +11 -0
@@ -0,0 +1,157 @@
1
+ import { describe, it, expect, beforeAll, beforeEach } from 'vitest';
2
+ import { DsnHeading, defineHeading } from './Heading';
3
+ // Register the custom element once for all tests
4
+ beforeAll(() => {
5
+ defineHeading();
6
+ });
7
+ function createElement(attrs = {}) {
8
+ const el = document.createElement('dsn-heading');
9
+ for (const [key, value] of Object.entries(attrs)) {
10
+ el.setAttribute(key, value);
11
+ }
12
+ document.body.appendChild(el);
13
+ return el;
14
+ }
15
+ function getInternalHeading(el) {
16
+ return el.shadowRoot.querySelector('h1, h2, h3, h4, h5, h6');
17
+ }
18
+ describe('DsnHeading', () => {
19
+ beforeEach(() => {
20
+ document.body.innerHTML = '';
21
+ });
22
+ describe('rendering', () => {
23
+ it('creates a shadow root', () => {
24
+ const el = createElement();
25
+ expect(el.shadowRoot).not.toBeNull();
26
+ });
27
+ it('renders an internal heading element', () => {
28
+ const el = createElement();
29
+ const h = getInternalHeading(el);
30
+ expect(h).not.toBeNull();
31
+ });
32
+ it('renders a style element in shadow DOM', () => {
33
+ const el = createElement();
34
+ const style = el.shadowRoot.querySelector('style');
35
+ expect(style).not.toBeNull();
36
+ expect(style.textContent).toContain('.dsn-heading');
37
+ });
38
+ it('renders a slot for content projection', () => {
39
+ const el = createElement();
40
+ const slot = el.shadowRoot.querySelector('slot');
41
+ expect(slot).not.toBeNull();
42
+ });
43
+ });
44
+ describe('level attribute', () => {
45
+ it('defaults to h2', () => {
46
+ const el = createElement();
47
+ const h = getInternalHeading(el);
48
+ expect(h.tagName).toBe('H2');
49
+ });
50
+ it('renders h1 when level is 1', () => {
51
+ const el = createElement({ level: '1' });
52
+ const h = getInternalHeading(el);
53
+ expect(h.tagName).toBe('H1');
54
+ });
55
+ it('renders h3 when level is 3', () => {
56
+ const el = createElement({ level: '3' });
57
+ const h = getInternalHeading(el);
58
+ expect(h.tagName).toBe('H3');
59
+ });
60
+ it('renders h4 when level is 4', () => {
61
+ const el = createElement({ level: '4' });
62
+ const h = getInternalHeading(el);
63
+ expect(h.tagName).toBe('H4');
64
+ });
65
+ it('renders h5 when level is 5', () => {
66
+ const el = createElement({ level: '5' });
67
+ const h = getInternalHeading(el);
68
+ expect(h.tagName).toBe('H5');
69
+ });
70
+ it('renders h6 when level is 6', () => {
71
+ const el = createElement({ level: '6' });
72
+ const h = getInternalHeading(el);
73
+ expect(h.tagName).toBe('H6');
74
+ });
75
+ it('updates element when level changes', () => {
76
+ const el = createElement({ level: '2' });
77
+ expect(getInternalHeading(el).tagName).toBe('H2');
78
+ el.setAttribute('level', '4');
79
+ expect(getInternalHeading(el).tagName).toBe('H4');
80
+ });
81
+ });
82
+ describe('appearance attribute', () => {
83
+ it('defaults appearance to match level', () => {
84
+ const el = createElement({ level: '3' });
85
+ const h = getInternalHeading(el);
86
+ expect(h.className).toContain('dsn-heading--heading-3');
87
+ });
88
+ it('allows appearance independent of level', () => {
89
+ const el = createElement({ level: '2', appearance: 'heading-4' });
90
+ const h = getInternalHeading(el);
91
+ expect(h.tagName).toBe('H2');
92
+ expect(h.className).toContain('dsn-heading--heading-4');
93
+ });
94
+ it('updates classes when appearance changes', () => {
95
+ const el = createElement({ appearance: 'heading-1' });
96
+ const h = getInternalHeading(el);
97
+ expect(h.className).toContain('dsn-heading--heading-1');
98
+ el.setAttribute('appearance', 'heading-5');
99
+ expect(h.className).toContain('dsn-heading--heading-5');
100
+ expect(h.className).not.toContain('dsn-heading--heading-1');
101
+ });
102
+ });
103
+ describe('level property', () => {
104
+ it('returns "2" when no attribute set', () => {
105
+ const el = createElement();
106
+ expect(el.level).toBe('2');
107
+ });
108
+ it('reflects the attribute value', () => {
109
+ const el = createElement({ level: '3' });
110
+ expect(el.level).toBe('3');
111
+ });
112
+ it('sets the attribute when property is set', () => {
113
+ const el = createElement();
114
+ el.level = '5';
115
+ expect(el.getAttribute('level')).toBe('5');
116
+ });
117
+ });
118
+ describe('appearance property', () => {
119
+ it('defaults to heading-2 when no attributes set', () => {
120
+ const el = createElement();
121
+ expect(el.appearance).toBe('heading-2');
122
+ });
123
+ it('reflects the attribute value', () => {
124
+ const el = createElement({ appearance: 'heading-3' });
125
+ expect(el.appearance).toBe('heading-3');
126
+ });
127
+ it('sets the attribute when property is set', () => {
128
+ const el = createElement();
129
+ el.appearance = 'heading-6';
130
+ expect(el.getAttribute('appearance')).toBe('heading-6');
131
+ });
132
+ });
133
+ describe('base class', () => {
134
+ it('always includes dsn-heading base class', () => {
135
+ const el = createElement();
136
+ const h = getInternalHeading(el);
137
+ expect(h.className).toContain('dsn-heading');
138
+ });
139
+ it('includes base class with heading-1 appearance', () => {
140
+ const el = createElement({ appearance: 'heading-1' });
141
+ const h = getInternalHeading(el);
142
+ expect(h.className).toContain('dsn-heading');
143
+ expect(h.className).toContain('dsn-heading--heading-1');
144
+ });
145
+ });
146
+ describe('custom element registration', () => {
147
+ it('is defined as dsn-heading', () => {
148
+ expect(customElements.get('dsn-heading')).toBe(DsnHeading);
149
+ });
150
+ it('does not re-register if already defined', () => {
151
+ // Should not throw
152
+ defineHeading();
153
+ expect(customElements.get('dsn-heading')).toBe(DsnHeading);
154
+ });
155
+ });
156
+ });
157
+ //# sourceMappingURL=Heading.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heading.test.js","sourceRoot":"","sources":["../../src/heading/Heading.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const headingStyles = "/**\n * Shadow DOM wrapper styles for the Heading Web Component.\n * The core heading styles are imported from the shared HTML/CSS source.\n */\n\n:host {\n display: block;\n}\n\n/* Shared heading styles - single source of truth */\n/**\n * Heading Component\n * Uses semantic component tokens for consistent styling\n *\n * Each appearance level has its own complete set of tokens\n * (font-family, font-weight, color, font-size, line-height, margin).\n *\n * The `level` prop controls the semantic HTML element (h1\u2013h6).\n * The `appearance` prop controls the visual style, independently of level.\n */\n\n.dsn-heading {\n margin-block-start: 0;\n text-wrap: balance;\n}\n\n/* Heading 1 Appearance */\n.dsn-heading--heading-1 {\n font-family: var(--dsn-heading-level-1-font-family);\n font-weight: var(--dsn-heading-level-1-font-weight);\n color: var(--dsn-heading-level-1-color);\n font-size: var(--dsn-heading-level-1-font-size);\n line-height: var(--dsn-heading-level-1-line-height);\n margin-block-end: var(--dsn-heading-level-1-margin-block-end);\n}\n\n/* Heading 2 Appearance */\n.dsn-heading--heading-2 {\n font-family: var(--dsn-heading-level-2-font-family);\n font-weight: var(--dsn-heading-level-2-font-weight);\n color: var(--dsn-heading-level-2-color);\n font-size: var(--dsn-heading-level-2-font-size);\n line-height: var(--dsn-heading-level-2-line-height);\n margin-block-end: var(--dsn-heading-level-2-margin-block-end);\n}\n\n/* Heading 3 Appearance */\n.dsn-heading--heading-3 {\n font-family: var(--dsn-heading-level-3-font-family);\n font-weight: var(--dsn-heading-level-3-font-weight);\n color: var(--dsn-heading-level-3-color);\n font-size: var(--dsn-heading-level-3-font-size);\n line-height: var(--dsn-heading-level-3-line-height);\n margin-block-end: var(--dsn-heading-level-3-margin-block-end);\n}\n\n/* Heading 4 Appearance */\n.dsn-heading--heading-4 {\n font-family: var(--dsn-heading-level-4-font-family);\n font-weight: var(--dsn-heading-level-4-font-weight);\n color: var(--dsn-heading-level-4-color);\n font-size: var(--dsn-heading-level-4-font-size);\n line-height: var(--dsn-heading-level-4-line-height);\n margin-block-end: var(--dsn-heading-level-4-margin-block-end);\n}\n\n/* Heading 5 Appearance */\n.dsn-heading--heading-5 {\n font-family: var(--dsn-heading-level-5-font-family);\n font-weight: var(--dsn-heading-level-5-font-weight);\n color: var(--dsn-heading-level-5-color);\n font-size: var(--dsn-heading-level-5-font-size);\n line-height: var(--dsn-heading-level-5-line-height);\n margin-block-end: var(--dsn-heading-level-5-margin-block-end);\n}\n\n/* Heading 6 Appearance */\n.dsn-heading--heading-6 {\n font-family: var(--dsn-heading-level-6-font-family);\n font-weight: var(--dsn-heading-level-6-font-weight);\n color: var(--dsn-heading-level-6-color);\n font-size: var(--dsn-heading-level-6-font-size);\n line-height: var(--dsn-heading-level-6-line-height);\n margin-block-end: var(--dsn-heading-level-6-margin-block-end);\n}\n\n";
2
+ //# sourceMappingURL=heading-styles.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading-styles.generated.d.ts","sourceRoot":"","sources":["../../src/heading/heading-styles.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,o9FAA+8F,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Auto-generated — do not edit manually.
2
+ // Source: heading.shadow.css + components-html source
3
+ export const headingStyles = "/**\n * Shadow DOM wrapper styles for the Heading Web Component.\n * The core heading styles are imported from the shared HTML/CSS source.\n */\n\n:host {\n display: block;\n}\n\n/* Shared heading styles - single source of truth */\n/**\n * Heading Component\n * Uses semantic component tokens for consistent styling\n *\n * Each appearance level has its own complete set of tokens\n * (font-family, font-weight, color, font-size, line-height, margin).\n *\n * The `level` prop controls the semantic HTML element (h1–h6).\n * The `appearance` prop controls the visual style, independently of level.\n */\n\n.dsn-heading {\n margin-block-start: 0;\n text-wrap: balance;\n}\n\n/* Heading 1 Appearance */\n.dsn-heading--heading-1 {\n font-family: var(--dsn-heading-level-1-font-family);\n font-weight: var(--dsn-heading-level-1-font-weight);\n color: var(--dsn-heading-level-1-color);\n font-size: var(--dsn-heading-level-1-font-size);\n line-height: var(--dsn-heading-level-1-line-height);\n margin-block-end: var(--dsn-heading-level-1-margin-block-end);\n}\n\n/* Heading 2 Appearance */\n.dsn-heading--heading-2 {\n font-family: var(--dsn-heading-level-2-font-family);\n font-weight: var(--dsn-heading-level-2-font-weight);\n color: var(--dsn-heading-level-2-color);\n font-size: var(--dsn-heading-level-2-font-size);\n line-height: var(--dsn-heading-level-2-line-height);\n margin-block-end: var(--dsn-heading-level-2-margin-block-end);\n}\n\n/* Heading 3 Appearance */\n.dsn-heading--heading-3 {\n font-family: var(--dsn-heading-level-3-font-family);\n font-weight: var(--dsn-heading-level-3-font-weight);\n color: var(--dsn-heading-level-3-color);\n font-size: var(--dsn-heading-level-3-font-size);\n line-height: var(--dsn-heading-level-3-line-height);\n margin-block-end: var(--dsn-heading-level-3-margin-block-end);\n}\n\n/* Heading 4 Appearance */\n.dsn-heading--heading-4 {\n font-family: var(--dsn-heading-level-4-font-family);\n font-weight: var(--dsn-heading-level-4-font-weight);\n color: var(--dsn-heading-level-4-color);\n font-size: var(--dsn-heading-level-4-font-size);\n line-height: var(--dsn-heading-level-4-line-height);\n margin-block-end: var(--dsn-heading-level-4-margin-block-end);\n}\n\n/* Heading 5 Appearance */\n.dsn-heading--heading-5 {\n font-family: var(--dsn-heading-level-5-font-family);\n font-weight: var(--dsn-heading-level-5-font-weight);\n color: var(--dsn-heading-level-5-color);\n font-size: var(--dsn-heading-level-5-font-size);\n line-height: var(--dsn-heading-level-5-line-height);\n margin-block-end: var(--dsn-heading-level-5-margin-block-end);\n}\n\n/* Heading 6 Appearance */\n.dsn-heading--heading-6 {\n font-family: var(--dsn-heading-level-6-font-family);\n font-weight: var(--dsn-heading-level-6-font-weight);\n color: var(--dsn-heading-level-6-color);\n font-size: var(--dsn-heading-level-6-font-size);\n line-height: var(--dsn-heading-level-6-line-height);\n margin-block-end: var(--dsn-heading-level-6-margin-block-end);\n}\n\n";
4
+ //# sourceMappingURL=heading-styles.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading-styles.generated.js","sourceRoot":"","sources":["../../src/heading/heading-styles.generated.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,48FAA48F,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { DsnHeading, defineHeading } from './Heading';
2
+ export type { HeadingLevel, HeadingAppearance } from './Heading';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/heading/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DsnHeading, defineHeading } from './Heading';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/heading/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * DSN Icon Web Component
3
+ *
4
+ * A custom element that renders SVG icons from the design system icon set.
5
+ * Icons are inlined as SVG markup for Shadow DOM encapsulation.
6
+ *
7
+ * @example
8
+ * ```html
9
+ * <dsn-icon name="check" size="md"></dsn-icon>
10
+ * <dsn-icon name="settings" size="lg" label="Open settings"></dsn-icon>
11
+ * ```
12
+ */
13
+ import { iconPaths } from './icon-paths.generated';
14
+ export type IconSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
15
+ export type IconName = keyof typeof iconPaths;
16
+ export declare class DsnIcon extends HTMLElement {
17
+ static get observedAttributes(): string[];
18
+ private _svg;
19
+ constructor();
20
+ connectedCallback(): void;
21
+ attributeChangedCallback(): void;
22
+ private _render;
23
+ get name(): string;
24
+ set name(value: string);
25
+ get size(): IconSize;
26
+ set size(value: IconSize);
27
+ get label(): string;
28
+ set label(value: string);
29
+ }
30
+ export declare function defineIcon(tagName?: string): void;
31
+ //# sourceMappingURL=Icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/icon/Icon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACzE,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAC;AAE9C,qBAAa,OAAQ,SAAQ,WAAW;IACtC,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,OAAO,CAAC,IAAI,CAA8B;;IAW1C,iBAAiB,IAAI,IAAI;IAIzB,wBAAwB,IAAI,IAAI;IAIhC,OAAO,CAAC,OAAO;IAwDf,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAGD,IAAI,IAAI,IAAI,QAAQ,CAEnB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAEvB;IAGD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAMtB;CACF;AAGD,wBAAgB,UAAU,CAAC,OAAO,SAAa,GAAG,IAAI,CAIrD"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * DSN Icon Web Component
3
+ *
4
+ * A custom element that renders SVG icons from the design system icon set.
5
+ * Icons are inlined as SVG markup for Shadow DOM encapsulation.
6
+ *
7
+ * @example
8
+ * ```html
9
+ * <dsn-icon name="check" size="md"></dsn-icon>
10
+ * <dsn-icon name="settings" size="lg" label="Open settings"></dsn-icon>
11
+ * ```
12
+ */
13
+ import { iconStyles } from './icon-styles.generated';
14
+ import { iconPaths } from './icon-paths.generated';
15
+ export class DsnIcon extends HTMLElement {
16
+ static get observedAttributes() {
17
+ return ['name', 'size', 'label'];
18
+ }
19
+ constructor() {
20
+ super();
21
+ this._svg = null;
22
+ this.attachShadow({ mode: 'open' });
23
+ const style = document.createElement('style');
24
+ style.textContent = iconStyles;
25
+ this.shadowRoot.appendChild(style);
26
+ }
27
+ connectedCallback() {
28
+ this._render();
29
+ }
30
+ attributeChangedCallback() {
31
+ this._render();
32
+ }
33
+ _render() {
34
+ const name = this.name;
35
+ const size = this.size;
36
+ const label = this.label;
37
+ // Remove existing SVG if any
38
+ if (this._svg) {
39
+ this._svg.remove();
40
+ this._svg = null;
41
+ }
42
+ if (!name || !(name in iconPaths)) {
43
+ return;
44
+ }
45
+ const paths = iconPaths[name];
46
+ // Build SVG element
47
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
48
+ svg.setAttribute('viewBox', '0 0 24 24');
49
+ svg.setAttribute('fill', 'none');
50
+ svg.setAttribute('stroke', 'currentColor');
51
+ svg.setAttribute('stroke-width', '2');
52
+ svg.setAttribute('stroke-linecap', 'round');
53
+ svg.setAttribute('stroke-linejoin', 'round');
54
+ // Apply CSS classes
55
+ const classes = ['dsn-icon'];
56
+ if (size !== 'md') {
57
+ classes.push(`dsn-icon--${size}`);
58
+ }
59
+ svg.setAttribute('class', classes.join(' '));
60
+ // Accessibility
61
+ if (label) {
62
+ svg.setAttribute('role', 'img');
63
+ svg.setAttribute('aria-label', label);
64
+ }
65
+ else {
66
+ svg.setAttribute('aria-hidden', 'true');
67
+ }
68
+ // Add paths
69
+ for (const d of paths) {
70
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
71
+ path.setAttribute('d', d);
72
+ svg.appendChild(path);
73
+ }
74
+ this._svg = svg;
75
+ this.shadowRoot.appendChild(svg);
76
+ }
77
+ // Property: name
78
+ get name() {
79
+ return this.getAttribute('name') || '';
80
+ }
81
+ set name(value) {
82
+ this.setAttribute('name', value);
83
+ }
84
+ // Property: size
85
+ get size() {
86
+ return this.getAttribute('size') || 'md';
87
+ }
88
+ set size(value) {
89
+ this.setAttribute('size', value);
90
+ }
91
+ // Property: label (accessible label)
92
+ get label() {
93
+ return this.getAttribute('label') || '';
94
+ }
95
+ set label(value) {
96
+ if (value) {
97
+ this.setAttribute('label', value);
98
+ }
99
+ else {
100
+ this.removeAttribute('label');
101
+ }
102
+ }
103
+ }
104
+ // Register the custom element
105
+ export function defineIcon(tagName = 'dsn-icon') {
106
+ if (!customElements.get(tagName)) {
107
+ customElements.define(tagName, DsnIcon);
108
+ }
109
+ }
110
+ //# sourceMappingURL=Icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../src/icon/Icon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Icon.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.test.d.ts","sourceRoot":"","sources":["../../src/icon/Icon.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,193 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { DsnIcon, defineIcon } from './Icon';
3
+ // Register the custom element for tests
4
+ defineIcon();
5
+ function createElement(attrs = {}) {
6
+ const el = document.createElement('dsn-icon');
7
+ for (const [key, value] of Object.entries(attrs)) {
8
+ el.setAttribute(key, value);
9
+ }
10
+ document.body.appendChild(el);
11
+ return el;
12
+ }
13
+ describe('DsnIcon', () => {
14
+ beforeEach(() => {
15
+ document.body.innerHTML = '';
16
+ });
17
+ describe('registration', () => {
18
+ it('should be registered as dsn-icon', () => {
19
+ expect(customElements.get('dsn-icon')).toBe(DsnIcon);
20
+ });
21
+ it('should be an instance of HTMLElement', () => {
22
+ const el = createElement({ name: 'check' });
23
+ expect(el).toBeInstanceOf(HTMLElement);
24
+ });
25
+ it('should have a shadow root', () => {
26
+ const el = createElement({ name: 'check' });
27
+ expect(el.shadowRoot).not.toBeNull();
28
+ });
29
+ });
30
+ describe('rendering', () => {
31
+ it('should render an SVG when name is set', () => {
32
+ const el = createElement({ name: 'check' });
33
+ const svg = el.shadowRoot.querySelector('svg');
34
+ expect(svg).not.toBeNull();
35
+ });
36
+ it('should not render an SVG when name is empty', () => {
37
+ const el = createElement();
38
+ const svg = el.shadowRoot.querySelector('svg');
39
+ expect(svg).toBeNull();
40
+ });
41
+ it('should not render an SVG for unknown icon names', () => {
42
+ const el = createElement({ name: 'nonexistent-icon' });
43
+ const svg = el.shadowRoot.querySelector('svg');
44
+ expect(svg).toBeNull();
45
+ });
46
+ it('should render path elements inside the SVG', () => {
47
+ const el = createElement({ name: 'check' });
48
+ const paths = el.shadowRoot.querySelectorAll('svg path');
49
+ expect(paths.length).toBeGreaterThan(0);
50
+ });
51
+ it('should have correct SVG attributes', () => {
52
+ const el = createElement({ name: 'check' });
53
+ const svg = el.shadowRoot.querySelector('svg');
54
+ expect(svg.getAttribute('viewBox')).toBe('0 0 24 24');
55
+ expect(svg.getAttribute('fill')).toBe('none');
56
+ expect(svg.getAttribute('stroke')).toBe('currentColor');
57
+ expect(svg.getAttribute('stroke-width')).toBe('2');
58
+ expect(svg.getAttribute('stroke-linecap')).toBe('round');
59
+ expect(svg.getAttribute('stroke-linejoin')).toBe('round');
60
+ });
61
+ it('should update SVG when name attribute changes', () => {
62
+ const el = createElement({ name: 'check' });
63
+ const pathsBefore = el.shadowRoot.querySelectorAll('svg path');
64
+ el.setAttribute('name', 'plus');
65
+ const pathsAfter = el.shadowRoot.querySelectorAll('svg path');
66
+ // plus has 2 paths, check has 1
67
+ expect(pathsAfter.length).toBe(2);
68
+ expect(pathsBefore.length).toBe(1);
69
+ });
70
+ it('should remove SVG when name is set to unknown', () => {
71
+ const el = createElement({ name: 'check' });
72
+ expect(el.shadowRoot.querySelector('svg')).not.toBeNull();
73
+ el.setAttribute('name', 'invalid');
74
+ expect(el.shadowRoot.querySelector('svg')).toBeNull();
75
+ });
76
+ });
77
+ describe('sizes', () => {
78
+ it('should default to md size', () => {
79
+ const el = createElement({ name: 'check' });
80
+ const svg = el.shadowRoot.querySelector('svg');
81
+ expect(svg.classList.contains('dsn-icon')).toBe(true);
82
+ // md is default, no modifier class needed
83
+ expect(svg.classList.contains('dsn-icon--md')).toBe(false);
84
+ });
85
+ it.each(['sm', 'lg', 'xl', '2xl', '3xl', '4xl'])('should apply dsn-icon--%s class for size="%s"', (size) => {
86
+ const el = createElement({ name: 'check', size });
87
+ const svg = el.shadowRoot.querySelector('svg');
88
+ expect(svg.classList.contains(`dsn-icon--${size}`)).toBe(true);
89
+ });
90
+ it('should update size class when size attribute changes', () => {
91
+ const el = createElement({ name: 'check', size: 'sm' });
92
+ let svg = el.shadowRoot.querySelector('svg');
93
+ expect(svg.classList.contains('dsn-icon--sm')).toBe(true);
94
+ el.setAttribute('size', 'lg');
95
+ svg = el.shadowRoot.querySelector('svg');
96
+ expect(svg.classList.contains('dsn-icon--lg')).toBe(true);
97
+ expect(svg.classList.contains('dsn-icon--sm')).toBe(false);
98
+ });
99
+ });
100
+ describe('accessibility', () => {
101
+ it('should be aria-hidden when no label is provided', () => {
102
+ const el = createElement({ name: 'check' });
103
+ const svg = el.shadowRoot.querySelector('svg');
104
+ expect(svg.getAttribute('aria-hidden')).toBe('true');
105
+ });
106
+ it('should have role=img and aria-label when label is provided', () => {
107
+ const el = createElement({ name: 'check', label: 'Checkmark' });
108
+ const svg = el.shadowRoot.querySelector('svg');
109
+ expect(svg.getAttribute('role')).toBe('img');
110
+ expect(svg.getAttribute('aria-label')).toBe('Checkmark');
111
+ });
112
+ it('should not have aria-hidden when label is provided', () => {
113
+ const el = createElement({ name: 'check', label: 'Checkmark' });
114
+ const svg = el.shadowRoot.querySelector('svg');
115
+ expect(svg.hasAttribute('aria-hidden')).toBe(false);
116
+ });
117
+ it('should update accessibility when label changes', () => {
118
+ const el = createElement({ name: 'check' });
119
+ let svg = el.shadowRoot.querySelector('svg');
120
+ expect(svg.getAttribute('aria-hidden')).toBe('true');
121
+ el.setAttribute('label', 'Done');
122
+ svg = el.shadowRoot.querySelector('svg');
123
+ expect(svg.getAttribute('role')).toBe('img');
124
+ expect(svg.getAttribute('aria-label')).toBe('Done');
125
+ });
126
+ });
127
+ describe('properties', () => {
128
+ it('should reflect name property to attribute', () => {
129
+ const el = createElement();
130
+ el.name = 'star';
131
+ expect(el.getAttribute('name')).toBe('star');
132
+ });
133
+ it('should reflect size property to attribute', () => {
134
+ const el = createElement({ name: 'check' });
135
+ el.size = 'lg';
136
+ expect(el.getAttribute('size')).toBe('lg');
137
+ });
138
+ it('should reflect label property to attribute', () => {
139
+ const el = createElement({ name: 'check' });
140
+ el.label = 'Done';
141
+ expect(el.getAttribute('label')).toBe('Done');
142
+ });
143
+ it('should remove label attribute when set to empty string', () => {
144
+ const el = createElement({ name: 'check', label: 'Done' });
145
+ el.label = '';
146
+ expect(el.hasAttribute('label')).toBe(false);
147
+ });
148
+ it('should return correct default values for properties', () => {
149
+ const el = createElement({ name: 'check' });
150
+ expect(el.name).toBe('check');
151
+ expect(el.size).toBe('md');
152
+ expect(el.label).toBe('');
153
+ });
154
+ });
155
+ describe('icons', () => {
156
+ const iconNames = [
157
+ 'arrow-left',
158
+ 'arrow-right',
159
+ 'check',
160
+ 'chevron-down',
161
+ 'chevron-left',
162
+ 'chevron-right',
163
+ 'chevron-up',
164
+ 'download',
165
+ 'edit',
166
+ 'heart',
167
+ 'home',
168
+ 'menu',
169
+ 'minus',
170
+ 'plus',
171
+ 'search',
172
+ 'settings',
173
+ 'star',
174
+ 'trash',
175
+ 'user',
176
+ 'x',
177
+ ];
178
+ it.each(iconNames)('should render icon "%s"', (name) => {
179
+ const el = createElement({ name });
180
+ const svg = el.shadowRoot.querySelector('svg');
181
+ expect(svg).not.toBeNull();
182
+ const paths = svg.querySelectorAll('path');
183
+ expect(paths.length).toBeGreaterThan(0);
184
+ });
185
+ });
186
+ describe('defineIcon', () => {
187
+ it('should not throw when called multiple times', () => {
188
+ expect(() => defineIcon()).not.toThrow();
189
+ expect(() => defineIcon()).not.toThrow();
190
+ });
191
+ });
192
+ });
193
+ //# sourceMappingURL=Icon.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.test.js","sourceRoot":"","sources":["../../src/icon/Icon.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE7C,wCAAwC;AACxC,UAAU,EAAE,CAAC;AAEb,SAAS,aAAa,CAAC,QAAgC,EAAE;IACvD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAY,CAAC;IACzD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,UAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,EAAE,CAAC,UAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAEhE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,EAAE,CAAC,UAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAE/D,gCAAgC;YAChC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAE3D,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACnC,MAAM,CAAC,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,0CAA0C;YAC1C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC,CACvD,+CAA+C,EAC/C,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,CACF,CAAC;QAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE1D,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,IAAI,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErD,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjC,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;YAC3B,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,MAAM,SAAS,GAAG;YAChB,YAAY;YACZ,aAAa;YACb,OAAO;YACP,cAAc;YACd,cAAc;YACd,eAAe;YACf,YAAY;YACZ,UAAU;YACV,MAAM;YACN,OAAO;YACP,MAAM;YACN,MAAM;YACN,OAAO;YACP,MAAM;YACN,QAAQ;YACR,UAAU;YACV,MAAM;YACN,OAAO;YACP,MAAM;YACN,GAAG;SACJ,CAAC;QAEF,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,yBAAyB,EAAE,CAAC,IAAI,EAAE,EAAE;YACrD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,GAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const iconPaths: Record<string, string[]>;
2
+ //# sourceMappingURL=icon-paths.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-paths.generated.d.ts","sourceRoot":"","sources":["../../src/icon/icon-paths.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAoD9C,CAAC"}