@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.
- package/LICENSE +21 -0
- package/README.md +120 -0
- package/dist/button/Button.d.ts +50 -0
- package/dist/button/Button.d.ts.map +1 -0
- package/dist/button/Button.js +247 -0
- package/dist/button/Button.js.map +1 -0
- package/dist/button/Button.test.d.ts +2 -0
- package/dist/button/Button.test.d.ts.map +1 -0
- package/dist/button/Button.test.js +299 -0
- package/dist/button/Button.test.js.map +1 -0
- package/dist/button/button-styles.generated.d.ts +2 -0
- package/dist/button/button-styles.generated.d.ts.map +1 -0
- package/dist/button/button-styles.generated.js +4 -0
- package/dist/button/button-styles.generated.js.map +1 -0
- package/dist/button/index.d.ts +3 -0
- package/dist/button/index.d.ts.map +1 -0
- package/dist/button/index.js +2 -0
- package/dist/button/index.js.map +1 -0
- package/dist/heading/Heading.d.ts +30 -0
- package/dist/heading/Heading.d.ts.map +1 -0
- package/dist/heading/Heading.js +79 -0
- package/dist/heading/Heading.js.map +1 -0
- package/dist/heading/Heading.test.d.ts +2 -0
- package/dist/heading/Heading.test.d.ts.map +1 -0
- package/dist/heading/Heading.test.js +157 -0
- package/dist/heading/Heading.test.js.map +1 -0
- package/dist/heading/heading-styles.generated.d.ts +2 -0
- package/dist/heading/heading-styles.generated.d.ts.map +1 -0
- package/dist/heading/heading-styles.generated.js +4 -0
- package/dist/heading/heading-styles.generated.js.map +1 -0
- package/dist/heading/index.d.ts +3 -0
- package/dist/heading/index.d.ts.map +1 -0
- package/dist/heading/index.js +2 -0
- package/dist/heading/index.js.map +1 -0
- package/dist/icon/Icon.d.ts +31 -0
- package/dist/icon/Icon.d.ts.map +1 -0
- package/dist/icon/Icon.js +110 -0
- package/dist/icon/Icon.js.map +1 -0
- package/dist/icon/Icon.test.d.ts +2 -0
- package/dist/icon/Icon.test.d.ts.map +1 -0
- package/dist/icon/Icon.test.js +193 -0
- package/dist/icon/Icon.test.js.map +1 -0
- package/dist/icon/icon-paths.generated.d.ts +2 -0
- package/dist/icon/icon-paths.generated.d.ts.map +1 -0
- package/dist/icon/icon-paths.generated.js +56 -0
- package/dist/icon/icon-paths.generated.js.map +1 -0
- package/dist/icon/icon-styles.generated.d.ts +2 -0
- package/dist/icon/icon-styles.generated.d.ts.map +1 -0
- package/dist/icon/icon-styles.generated.js +4 -0
- package/dist/icon/icon-styles.generated.js.map +1 -0
- package/dist/icon/index.d.ts +3 -0
- package/dist/icon/index.d.ts.map +1 -0
- package/dist/icon/index.js +2 -0
- package/dist/icon/index.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +71 -0
- package/dist/index.js.map +1 -0
- package/dist/link/Link.d.ts +52 -0
- package/dist/link/Link.d.ts.map +1 -0
- package/dist/link/Link.js +260 -0
- package/dist/link/Link.js.map +1 -0
- package/dist/link/Link.test.d.ts +2 -0
- package/dist/link/Link.test.d.ts.map +1 -0
- package/dist/link/Link.test.js +256 -0
- package/dist/link/Link.test.js.map +1 -0
- package/dist/link/index.d.ts +3 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/index.js +2 -0
- package/dist/link/index.js.map +1 -0
- package/dist/link/link-styles.generated.d.ts +2 -0
- package/dist/link/link-styles.generated.d.ts.map +1 -0
- package/dist/link/link-styles.generated.js +4 -0
- package/dist/link/link-styles.generated.js.map +1 -0
- package/dist/ordered-list/OrderedList.d.ts +32 -0
- package/dist/ordered-list/OrderedList.d.ts.map +1 -0
- package/dist/ordered-list/OrderedList.js +72 -0
- package/dist/ordered-list/OrderedList.js.map +1 -0
- package/dist/ordered-list/OrderedList.test.d.ts +2 -0
- package/dist/ordered-list/OrderedList.test.d.ts.map +1 -0
- package/dist/ordered-list/OrderedList.test.js +82 -0
- package/dist/ordered-list/OrderedList.test.js.map +1 -0
- package/dist/ordered-list/index.d.ts +2 -0
- package/dist/ordered-list/index.d.ts.map +1 -0
- package/dist/ordered-list/index.js +2 -0
- package/dist/ordered-list/index.js.map +1 -0
- package/dist/ordered-list/ordered-list-styles.generated.d.ts +2 -0
- package/dist/ordered-list/ordered-list-styles.generated.d.ts.map +1 -0
- package/dist/ordered-list/ordered-list-styles.generated.js +4 -0
- package/dist/ordered-list/ordered-list-styles.generated.js.map +1 -0
- package/dist/paragraph/Paragraph.d.ts +26 -0
- package/dist/paragraph/Paragraph.d.ts.map +1 -0
- package/dist/paragraph/Paragraph.js +60 -0
- package/dist/paragraph/Paragraph.js.map +1 -0
- package/dist/paragraph/Paragraph.test.d.ts +2 -0
- package/dist/paragraph/Paragraph.test.d.ts.map +1 -0
- package/dist/paragraph/Paragraph.test.js +121 -0
- package/dist/paragraph/Paragraph.test.js.map +1 -0
- package/dist/paragraph/index.d.ts +3 -0
- package/dist/paragraph/index.d.ts.map +1 -0
- package/dist/paragraph/index.js +2 -0
- package/dist/paragraph/index.js.map +1 -0
- package/dist/paragraph/paragraph-styles.generated.d.ts +2 -0
- package/dist/paragraph/paragraph-styles.generated.d.ts.map +1 -0
- package/dist/paragraph/paragraph-styles.generated.js +4 -0
- package/dist/paragraph/paragraph-styles.generated.js.map +1 -0
- package/dist/unordered-list/UnorderedList.d.ts +22 -0
- package/dist/unordered-list/UnorderedList.d.ts.map +1 -0
- package/dist/unordered-list/UnorderedList.js +42 -0
- package/dist/unordered-list/UnorderedList.js.map +1 -0
- package/dist/unordered-list/UnorderedList.test.d.ts +2 -0
- package/dist/unordered-list/UnorderedList.test.d.ts.map +1 -0
- package/dist/unordered-list/UnorderedList.test.js +56 -0
- package/dist/unordered-list/UnorderedList.test.js.map +1 -0
- package/dist/unordered-list/index.d.ts +2 -0
- package/dist/unordered-list/index.d.ts.map +1 -0
- package/dist/unordered-list/index.js +2 -0
- package/dist/unordered-list/index.js.map +1 -0
- package/dist/unordered-list/unordered-list-styles.generated.d.ts +2 -0
- package/dist/unordered-list/unordered-list-styles.generated.d.ts.map +1 -0
- package/dist/unordered-list/unordered-list-styles.generated.js +4 -0
- package/dist/unordered-list/unordered-list-styles.generated.js.map +1 -0
- package/package.json +42 -0
- package/src/button/Button.test.ts +360 -0
- package/src/button/Button.ts +299 -0
- package/src/button/button-demo.html +477 -0
- package/src/button/button-styles.generated.ts +3 -0
- package/src/button/button.shadow.css +20 -0
- package/src/button/index.ts +2 -0
- package/src/heading/Heading.test.ts +186 -0
- package/src/heading/Heading.ts +104 -0
- package/src/heading/heading-styles.generated.ts +3 -0
- package/src/heading/heading.shadow.css +11 -0
- package/src/heading/index.ts +2 -0
- package/src/icon/Icon.test.ts +228 -0
- package/src/icon/Icon.ts +136 -0
- package/src/icon/icon-paths.generated.ts +55 -0
- package/src/icon/icon-styles.generated.ts +3 -0
- package/src/icon/icon.shadow.css +13 -0
- package/src/icon/index.ts +2 -0
- package/src/index.ts +83 -0
- package/src/link/Link.test.ts +309 -0
- package/src/link/Link.ts +284 -0
- package/src/link/index.ts +2 -0
- package/src/link/link-styles.generated.ts +3 -0
- package/src/link/link.shadow.css +15 -0
- package/src/ordered-list/OrderedList.test.ts +97 -0
- package/src/ordered-list/OrderedList.ts +84 -0
- package/src/ordered-list/index.ts +1 -0
- package/src/ordered-list/ordered-list-styles.generated.ts +3 -0
- package/src/ordered-list/ordered-list.shadow.css +11 -0
- package/src/paragraph/Paragraph.test.ts +143 -0
- package/src/paragraph/Paragraph.ts +77 -0
- package/src/paragraph/index.ts +2 -0
- package/src/paragraph/paragraph-styles.generated.ts +3 -0
- package/src/paragraph/paragraph.shadow.css +11 -0
- package/src/unordered-list/UnorderedList.test.ts +66 -0
- package/src/unordered-list/UnorderedList.ts +50 -0
- package/src/unordered-list/index.ts +1 -0
- package/src/unordered-list/unordered-list-styles.generated.ts +3 -0
- 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 @@
|
|
|
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 @@
|
|
|
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":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACtC,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAID;QACE,KAAK,EAAE,CAAC;QAHF,SAAI,GAAyB,IAAI,CAAC;QAIxC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,UAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,wBAAwB;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEO,OAAO;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,6BAA6B;QAC7B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAA8B,CAAC,CAAC;QAExD,oBAAoB;QACpB,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QAC1E,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACzC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC3C,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACtC,GAAG,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC5C,GAAG,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAE7C,oBAAoB;QACpB,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7C,gBAAgB;QAChB,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAChC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,YAAY;QACZ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CACnC,4BAA4B,EAC5B,MAAM,CACP,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,UAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI;QACN,OAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAc,IAAI,IAAI,CAAC;IACzD,CAAC;IAED,IAAI,IAAI,CAAC,KAAe;QACtB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,qCAAqC;IACrC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,UAAU,UAAU,CAAC,OAAO,GAAG,UAAU;IAC7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|