rettangoli-ui 0.1.0-rc2 → 0.1.0-rc4

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 (54) hide show
  1. package/README.md +16 -27
  2. package/dist/rettangoli-iife-layout.min.js +118 -45
  3. package/dist/rettangoli-iife-ui.min.js +86 -65
  4. package/package.json +11 -4
  5. package/src/common/BaseElement.js +182 -0
  6. package/src/common.js +190 -0
  7. package/src/components/dialog/dialog.handlers.js +5 -0
  8. package/src/components/dialog/dialog.store.js +24 -0
  9. package/src/components/dialog/dialog.view.yaml +41 -0
  10. package/src/components/dropdownMenu/dropdownMenu.handlers.js +5 -0
  11. package/src/components/dropdownMenu/dropdownMenu.store.js +25 -0
  12. package/src/components/dropdownMenu/dropdownMenu.view.yaml +52 -0
  13. package/src/components/form/form.handlers.js +30 -0
  14. package/src/components/form/form.store.js +45 -0
  15. package/src/components/form/form.view.yaml +47 -0
  16. package/src/components/navbar/navbar.examples.yaml +86 -0
  17. package/src/components/navbar/navbar.handlers.js +10 -0
  18. package/src/components/navbar/navbar.store.js +46 -0
  19. package/src/components/navbar/navbar.view.yaml +74 -0
  20. package/src/components/pageOutline/pageOutline.handlers.js +69 -0
  21. package/src/components/pageOutline/pageOutline.store.js +40 -0
  22. package/src/components/pageOutline/pageOutline.view.yaml +34 -0
  23. package/src/components/popover/popover.handlers.js +5 -0
  24. package/src/components/popover/popover.store.js +12 -0
  25. package/src/components/popover/popover.view.yaml +57 -0
  26. package/src/components/select/select.handlers.js +46 -0
  27. package/src/components/select/select.store.js +65 -0
  28. package/src/components/select/select.view.yaml +50 -0
  29. package/src/components/sidebar/sidebar.handlers.js +36 -0
  30. package/src/components/sidebar/sidebar.store.js +139 -0
  31. package/src/components/sidebar/sidebar.view.yaml +190 -0
  32. package/src/entry-iife-layout.js +15 -0
  33. package/src/entry-iife-ui.js +18 -0
  34. package/src/index.js +17 -0
  35. package/src/lib/uhtml.js +9 -0
  36. package/src/primitives/button.js +306 -0
  37. package/src/primitives/image.js +234 -0
  38. package/src/primitives/input.js +208 -0
  39. package/src/primitives/svg.js +95 -0
  40. package/src/primitives/text.js +141 -0
  41. package/src/primitives/textarea.js +103 -0
  42. package/src/primitives/view.js +217 -0
  43. package/src/setup.js +16 -0
  44. package/src/styles/anchorStyles.js +13 -0
  45. package/src/styles/buttonMarginStyles.js +84 -0
  46. package/src/styles/cursorStyles.js +12 -0
  47. package/src/styles/flexChildStyles.js +43 -0
  48. package/src/styles/flexDirectionStyles.js +74 -0
  49. package/src/styles/marginStyles.js +13 -0
  50. package/src/styles/paddingSvgStyles.js +120 -0
  51. package/src/styles/scrollStyles.js +22 -0
  52. package/src/styles/textColorStyles.js +14 -0
  53. package/src/styles/textStyles.js +62 -0
  54. package/src/styles/viewStyles.js +119 -0
@@ -0,0 +1,217 @@
1
+ import {
2
+ css,
3
+ dimensionWithUnit,
4
+ convertObjectToCssString,
5
+ styleMapKeys,
6
+ permutateBreakpoints,
7
+ } from "../common.js";
8
+ import flexDirectionStyles from "../styles/flexDirectionStyles.js";
9
+ import cursorStyles from "../styles/cursorStyles.js";
10
+ import scrollStyle from "../styles/scrollStyles.js";
11
+ import stylesGenerator from "../styles/viewStyles.js";
12
+ import marginStyles from "../styles/marginStyles.js";
13
+ import flexChildStyles from "../styles/flexChildStyles.js";
14
+ import anchorStyles from "../styles/anchorStyles.js";
15
+
16
+ // Internal implementation without uhtml
17
+ class RettangoliViewElement extends HTMLElement {
18
+ static styleSheet = null;
19
+
20
+ static initializeStyleSheet() {
21
+ if (!RettangoliViewElement.styleSheet) {
22
+ RettangoliViewElement.styleSheet = new CSSStyleSheet();
23
+ RettangoliViewElement.styleSheet.replaceSync(css`
24
+ slot {
25
+ display: contents;
26
+ }
27
+ :host {
28
+ display: flex;
29
+ flex-direction: column;
30
+ align-self: auto;
31
+ align-content: flex-start;
32
+ border-style: solid;
33
+ border-width: 0;
34
+ box-sizing: border-box;
35
+ border-color: var(--border);
36
+ }
37
+
38
+ :host([fw="w"]) {
39
+ flex-wrap: wrap;
40
+ }
41
+
42
+ ${flexChildStyles}
43
+ ${scrollStyle}
44
+ ${flexDirectionStyles}
45
+ ${marginStyles}
46
+ ${cursorStyles}
47
+ ${stylesGenerator}
48
+ ${anchorStyles}
49
+
50
+ :host([href]) {
51
+ cursor: pointer;
52
+ position: relative;
53
+ }
54
+
55
+ :host([href]) a {
56
+ position: absolute;
57
+ top: 0;
58
+ left: 0;
59
+ right: 0;
60
+ bottom: 0;
61
+ z-index: 1;
62
+ }
63
+ `);
64
+ }
65
+ }
66
+
67
+ constructor() {
68
+ super();
69
+ RettangoliViewElement.initializeStyleSheet();
70
+ this.shadow = this.attachShadow({ mode: "closed" });
71
+ this.shadow.adoptedStyleSheets = [RettangoliViewElement.styleSheet];
72
+
73
+ // Create initial DOM structure
74
+ this._styleElement = document.createElement("style");
75
+ this._slotElement = document.createElement("slot");
76
+ this._linkElement = null;
77
+
78
+ this.shadow.appendChild(this._styleElement);
79
+ this._updateDOM();
80
+ }
81
+
82
+ static get observedAttributes() {
83
+ return [
84
+ "href",
85
+ "target",
86
+ "op",
87
+ ...permutateBreakpoints([
88
+ ...styleMapKeys,
89
+ "wh",
90
+ "w",
91
+ "h",
92
+ "hidden",
93
+ "sh",
94
+ "sv",
95
+ ]),
96
+ ];
97
+ }
98
+
99
+ _styles = {
100
+ default: {},
101
+ sm: {},
102
+ md: {},
103
+ lg: {},
104
+ xl: {},
105
+ };
106
+
107
+ _lastStyleString = "";
108
+
109
+ _updateDOM() {
110
+ const href = this.getAttribute("href");
111
+ const target = this.getAttribute("target");
112
+
113
+ // Ensure slot is always in the shadow DOM
114
+ if (this._slotElement.parentNode !== this.shadow) {
115
+ this.shadow.appendChild(this._slotElement);
116
+ }
117
+
118
+ if (href) {
119
+ if (!this._linkElement) {
120
+ // Create link overlay only if it doesn't exist
121
+ this._linkElement = document.createElement("a");
122
+ this.shadow.appendChild(this._linkElement);
123
+ }
124
+
125
+ // Update link attributes
126
+ this._linkElement.href = href;
127
+ if (target) {
128
+ this._linkElement.target = target;
129
+ } else {
130
+ this._linkElement.removeAttribute("target");
131
+ }
132
+ } else if (this._linkElement) {
133
+ // Remove link overlay
134
+ this.shadow.removeChild(this._linkElement);
135
+ this._linkElement = null;
136
+ }
137
+ }
138
+
139
+ attributeChangedCallback(name, oldValue, newValue) {
140
+ // Handle href and target changes
141
+ if (name === "href" || name === "target") {
142
+ this._updateDOM();
143
+ return;
144
+ }
145
+
146
+ // Reset styles for fresh calculation
147
+ this._styles = {
148
+ default: {},
149
+ sm: {},
150
+ md: {},
151
+ lg: {},
152
+ xl: {},
153
+ };
154
+
155
+ ["default", "sm", "md", "lg", "xl"].forEach((size) => {
156
+ const addSizePrefix = (tag) => {
157
+ return `${size === "default" ? "" : `${size}-`}${tag}`;
158
+ };
159
+
160
+ const wh = this.getAttribute(addSizePrefix("wh"));
161
+ const width = dimensionWithUnit(
162
+ wh === null ? this.getAttribute(addSizePrefix("w")) : wh,
163
+ );
164
+ const height = dimensionWithUnit(
165
+ wh === null ? this.getAttribute(addSizePrefix("h")) : wh,
166
+ );
167
+ const opacity = this.getAttribute(addSizePrefix("op"));
168
+ const zIndex = this.getAttribute(addSizePrefix("z"));
169
+
170
+ if (zIndex !== null) {
171
+ this._styles[size]["z-index"] = zIndex;
172
+ }
173
+
174
+ if (opacity !== null) {
175
+ this._styles[size].opacity = opacity;
176
+ }
177
+
178
+ if (width === "f") {
179
+ this._styles[size].width = "var(--width-stretch)";
180
+ } else if (width !== undefined) {
181
+ this._styles[size].width = width;
182
+ this._styles[size]["min-width"] = width;
183
+ this._styles[size]["max-width"] = width;
184
+ }
185
+
186
+ if (height === "f") {
187
+ this._styles[size].height = "100%";
188
+ } else if (height !== undefined) {
189
+ this._styles[size].height = height;
190
+ this._styles[size]["min-height"] = height;
191
+ this._styles[size]["max-height"] = height;
192
+ }
193
+
194
+ if (this.hasAttribute(addSizePrefix("hidden"))) {
195
+ this._styles[size].display = "none !important";
196
+ }
197
+
198
+ if (this.hasAttribute(addSizePrefix("visible"))) {
199
+ this._styles[size].display = "flex !important";
200
+ }
201
+ });
202
+
203
+ // Update styles only if changed
204
+ const newStyleString = convertObjectToCssString(this._styles);
205
+ if (newStyleString !== this._lastStyleString) {
206
+ this._styleElement.textContent = newStyleString;
207
+ this._lastStyleString = newStyleString;
208
+ }
209
+ }
210
+ }
211
+
212
+ // Export factory function to maintain API compatibility
213
+ export default ({ render, html }) => {
214
+ // Note: render and html parameters are accepted but not used
215
+ // This maintains backward compatibility with existing code
216
+ return RettangoliViewElement;
217
+ };
package/src/setup.js ADDED
@@ -0,0 +1,16 @@
1
+ import { createWebPatch } from 'rettangoli-fe';
2
+ import { h } from 'snabbdom/build/h';
3
+
4
+ const componentDependencies = {}
5
+
6
+ const deps = {
7
+ components: componentDependencies,
8
+ }
9
+
10
+ const patch = createWebPatch();
11
+
12
+ export {
13
+ h,
14
+ patch,
15
+ deps,
16
+ }
@@ -0,0 +1,13 @@
1
+ import { css } from "../common.js";
2
+
3
+ export default css`
4
+ a, a:link, a:visited, a:hover, a:active {
5
+ color: inherit;
6
+ text-decoration: none;
7
+ background: none;
8
+ border: none;
9
+ padding: 0;
10
+ margin: 0;
11
+ font: inherit;
12
+ }
13
+ `;
@@ -0,0 +1,84 @@
1
+ import { generateCSS, spacing } from "../common.js";
2
+
3
+ const styles = {
4
+ mt: spacing,
5
+ mr: spacing,
6
+ mb: spacing,
7
+ ml: spacing,
8
+ m: spacing,
9
+ mh: spacing,
10
+ mv: spacing,
11
+ s: {
12
+ sm: `
13
+ height: 28px;
14
+ padding-left: 12px;
15
+ padding-right: 12px;
16
+ border-radius: 4px;
17
+ font-size: var(--xs-font-size);
18
+ font-weight: var(--xs-font-weight);
19
+ line-height: var(--xs-line-height);
20
+ letter-spacing: var(--xs-letter-spacing);
21
+ `,
22
+ md: `
23
+ height: 32px;
24
+ padding-left: 16px;
25
+ padding-right: 16px;
26
+ border-radius: 4px;
27
+ font-size: var(--sm-font-size);
28
+ font-weight: var(--sm-font-weight);
29
+ line-height: var(--sm-line-height);
30
+ letter-spacing: var(--sm-letter-spacing);
31
+ `,
32
+ lg: `
33
+ height: 40px;
34
+ padding-left: 20px;
35
+ padding-right: 20px;
36
+ border-radius: 4px;
37
+ font-size: var(--md-font-size);
38
+ font-weight: var(--md-font-weight);
39
+ line-height: var(--md-line-height);
40
+ letter-spacing: var(--md-letter-spacing);
41
+ `,
42
+ },
43
+ v: {
44
+ pr: `
45
+ background-color: var(--primary);
46
+ color: var(--primary-foreground);
47
+ `,
48
+ se: `
49
+ background-color: var(--secondary);
50
+ color: var(--secondary-foreground);
51
+ `,
52
+ de: `
53
+ background-color: var(--destructive);
54
+ color: var(--primary-foreground);
55
+ `,
56
+ ol: `
57
+ background-color: transparent;
58
+ color: var(--foreground);
59
+ border-width: 1px;
60
+ `,
61
+ gh: `
62
+ background-color: transparent;
63
+ color: var(--foreground);
64
+ `,
65
+ lk: `
66
+ background-color: transparent;
67
+ color: var(--foreground);
68
+ `,
69
+ },
70
+ };
71
+
72
+ const descendants = {
73
+ mt: "button",
74
+ mr: "button",
75
+ mb: "button",
76
+ ml: "button",
77
+ m: "button",
78
+ mh: "button",
79
+ mv: "button",
80
+ s: "button",
81
+ v: "button",
82
+ };
83
+
84
+ export default generateCSS(styles, descendants);
@@ -0,0 +1,12 @@
1
+ import { generateCSS } from '../common.js'
2
+
3
+ const styles = {
4
+ "cur": {
5
+ "p": "pointer",
6
+ "m": "move",
7
+ "grab": "grab",
8
+ "grabbing": "grabbing",
9
+ },
10
+ };
11
+
12
+ export default generateCSS(styles);
@@ -0,0 +1,43 @@
1
+ import { css } from '../common.js'
2
+
3
+ export default css`
4
+ :host([flex="0"]) {
5
+ flex: 0;
6
+ }
7
+ :host([flex="1"]) {
8
+ flex: 1;
9
+ }
10
+ :host([flex="2"]) {
11
+ flex: 2;
12
+ }
13
+ :host([flex="3"]) {
14
+ flex: 3;
15
+ }
16
+ :host([flex="4"]) {
17
+ flex: 4;
18
+ }
19
+ :host([flex="5"]) {
20
+ flex: 5;
21
+ }
22
+ :host([flex="6"]) {
23
+ flex: 6;
24
+ }
25
+ :host([flex="7"]) {
26
+ flex: 7;
27
+ }
28
+ :host([flex="8"]) {
29
+ flex: 8;
30
+ }
31
+ :host([flex="9"]) {
32
+ flex: 9;
33
+ }
34
+ :host([flex="10"]) {
35
+ flex: 10;
36
+ }
37
+ :host([flex="11"]) {
38
+ flex: 11;
39
+ }
40
+ :host([flex="12"]) {
41
+ flex: 12;
42
+ }
43
+ `
@@ -0,0 +1,74 @@
1
+ import { css } from "../common.js";
2
+
3
+ export default css`
4
+
5
+ :host([d="h"]) {
6
+ flex-direction: row;
7
+ }
8
+ :host([d="v"]) {
9
+ flex-direction: column;
10
+ }
11
+ :host([d="h"]:not([ah])) {
12
+ justify-content: flex-start;
13
+ }
14
+ :host([d="h"][ah="c"]) {
15
+ justify-content: center;
16
+ }
17
+ :host([d="h"][ah="e"]) {
18
+ justify-content: flex-end;
19
+ }
20
+ :host([d="h"]:not([av])) {
21
+ align-items: flex-start;
22
+ }
23
+ :host([d="h"][av="c"]) {
24
+ align-items: center;
25
+ align-content: center;
26
+ }
27
+ :host([d="h"][av="e"]) {
28
+ align-items: flex-end;
29
+ align-content: flex-end;
30
+ }
31
+
32
+ /* Default/vertical direction - horizontal alignment */
33
+ :host(:not([d]):not([ah])),
34
+ :host([d="v"]:not([ah])) {
35
+ align-items: flex-start;
36
+ }
37
+ :host(:not([d])[ah="c"]),
38
+ :host([d="v"][ah="c"]) {
39
+ align-items: center;
40
+ }
41
+ :host(:not([d])[ah="e"]),
42
+ :host([d="v"][ah="e"]) {
43
+ align-items: flex-end;
44
+ }
45
+
46
+ :host(:not([d]):not([av])),
47
+ :host([d="v"]:not([av])) {
48
+ justify-content: flex-start;
49
+ }
50
+ :host(:not([d])[av="c"]),
51
+ :host([d="v"][av="c"]) {
52
+ justify-content: center;
53
+ }
54
+ :host(:not([d])[av="e"]),
55
+ :host([d="v"][av="e"]) {
56
+ justify-content: flex-end;
57
+ }
58
+
59
+ @media screen and (max-width: 640px) {
60
+ :host([s-d="v"]) {
61
+ flex-direction: column;
62
+ }
63
+ :host([s-d="h"]) {
64
+ flex-direction: row;
65
+ }
66
+ :host([s-d="h"][s-av="c"]) {
67
+ align-items: center;
68
+ align-content: center;
69
+ }
70
+ :host([s-d="v"][s-av="c"]) {
71
+ justify-content: center;
72
+ }
73
+ }
74
+ `;
@@ -0,0 +1,13 @@
1
+ import { generateCSS, spacing } from "../common.js";
2
+
3
+ const styles = {
4
+ mt: spacing,
5
+ mr: spacing,
6
+ mb: spacing,
7
+ ml: spacing,
8
+ m: spacing,
9
+ mh: spacing,
10
+ mv: spacing,
11
+ };
12
+
13
+ export default generateCSS(styles)
@@ -0,0 +1,120 @@
1
+
2
+ import { css } from '../common.js'
3
+
4
+ export default css`
5
+ :host([pt="xs"]) svg {
6
+ padding-top: var(--spacing-xs);
7
+ }
8
+ :host([pt="sm"]) svg {
9
+ padding-top: var(--spacing-sm);
10
+ }
11
+ :host([pt="md"]) svg {
12
+ padding-top: var(--spacing-md);
13
+ }
14
+ :host([pt="lg"]) svg {
15
+ padding-top: var(--spacing-lg);
16
+ }
17
+ :host([pt="xl"]) svg {
18
+ padding-top: var(--spacing-xl);
19
+ }
20
+ :host([pr="xs"]) svg {
21
+ padding-right: var(--spacing-xs);
22
+ }
23
+ :host([pr="sm"]) svg {
24
+ padding-right: var(--spacing-sm);
25
+ }
26
+ :host([pr="md"]) svg {
27
+ padding-right: var(--spacing-md);
28
+ }
29
+ :host([pr="lg"]) svg {
30
+ padding-right: var(--spacing-lg);
31
+ }
32
+ :host([pr="xl"]) svg {
33
+ padding-right: var(--spacing-xl);
34
+ }
35
+ :host([pb="xs"]) svg {
36
+ padding-bottom: var(--spacing-xs);
37
+ }
38
+ :host([pb="sm"]) svg {
39
+ padding-bottom: var(--spacing-sm);
40
+ }
41
+ :host([pb="md"]) svg {
42
+ padding-bottom: var(--spacing-md);
43
+ }
44
+ :host([pb="lg"]) svg {
45
+ padding-bottom: var(--spacing-lg);
46
+ }
47
+ :host([pb="xl"]) svg {
48
+ padding-bottom: var(--spacing-xl);
49
+ }
50
+ :host([pl="xs"]) svg {
51
+ padding-left: var(--spacing-xs);
52
+ }
53
+ :host([pl="sm"]) svg {
54
+ padding-left: var(--spacing-sm);
55
+ }
56
+ :host([pl="md"]) svg {
57
+ padding-left: var(--spacing-md);
58
+ }
59
+ :host([pl="lg"]) svg {
60
+ padding-left: var(--spacing-lg);
61
+ }
62
+ :host([pl="xl"]) svg {
63
+ padding-left: var(--spacing-xl);
64
+ }
65
+ :host([p="xs"]) svg {
66
+ padding: var(--spacing-xs);
67
+ }
68
+ :host([p="sm"]) svg {
69
+ padding: var(--spacing-sm);
70
+ }
71
+ :host([p="md"]) svg {
72
+ padding: var(--spacing-md);
73
+ }
74
+ :host([p="lg"]) svg {
75
+ padding: var(--spacing-lg);
76
+ }
77
+ :host([p="xl"]) svg {
78
+ padding: var(--spacing-xl);
79
+ }
80
+ :host([ph="xs"]) svg {
81
+ padding-left: var(--spacing-xs);
82
+ padding-right: var(--spacing-xs);
83
+ }
84
+ :host([ph="sm"]) svg {
85
+ padding-left: var(--spacing-sm);
86
+ padding-right: var(--spacing-sm);
87
+ }
88
+ :host([ph="md"]) svg {
89
+ padding-left: var(--spacing-md);
90
+ padding-right: var(--spacing-md);
91
+ }
92
+ :host([ph="lg"]) svg {
93
+ padding-left: var(--spacing-lg);
94
+ padding-right: var(--spacing-lg);
95
+ }
96
+ :host([ph="xl"]) svg {
97
+ padding-left: var(--spacing-xl);
98
+ padding-right: var(--spacing-xl);
99
+ }
100
+ :host([pv="xs"]) svg {
101
+ padding-top: var(--spacing-xs);
102
+ padding-bottom: var(--spacing-xs);
103
+ }
104
+ :host([pv="sm"]) svg {
105
+ padding-top: var(--spacing-sm);
106
+ padding-bottom: var(--spacing-sm);
107
+ }
108
+ :host([pv="md"]) svg {
109
+ padding-top: var(--spacing-md);
110
+ padding-bottom: var(--spacing-md);
111
+ }
112
+ :host([pv="lg"]) svg {
113
+ padding-top: var(--spacing-lg);
114
+ padding-bottom: var(--spacing-lg);
115
+ }
116
+ :host([pv="xl"]) svg {
117
+ padding-top: var(--spacing-xl);
118
+ padding-bottom: var(--spacing-xl);
119
+ }
120
+ `
@@ -0,0 +1,22 @@
1
+
2
+ import { css } from '../common.js'
3
+
4
+ export default css`
5
+ :host([sh]:not([sv])) {
6
+ overflow-x: scroll;
7
+ flex-wrap: nowrap;
8
+ }
9
+ :host([sv]:not([sh])) {
10
+ overflow-y: scroll;
11
+ flex-wrap: nowrap;
12
+ }
13
+ :host([sh][sv]) {
14
+ overflow: scroll;
15
+ flex-wrap: nowrap;
16
+ }
17
+ :host([overflow="hidden"]) {
18
+ overflow: hidden;
19
+ flex-wrap: nowrap;
20
+ }
21
+
22
+ `
@@ -0,0 +1,14 @@
1
+ import { generateCSS } from "../common.js";
2
+
3
+ const styles = {
4
+ c: {
5
+ "fg": "--foreground",
6
+ "de": "--destructive",
7
+ "pr-fg": "--primary-foreground",
8
+ "se-fg": "--secondary-foreground",
9
+ "mu-fg": "--muted-foreground",
10
+ "ac-fg": "--accent-foreground",
11
+ },
12
+ };
13
+
14
+ export default generateCSS(styles);
@@ -0,0 +1,62 @@
1
+ import { generateCSS } from "../common.js";
2
+
3
+ const styles = {
4
+ ta: {
5
+ s: 'start',
6
+ c: 'center',
7
+ e: 'end',
8
+ j: 'justify'
9
+ },
10
+ s: {
11
+ h1: `
12
+ font-size: var(--h1-font-size);
13
+ font-weight: var(--h1-font-weight);
14
+ line-height: var(--h1-line-height);
15
+ letter-spacing: var(--h1-letter-spacing);
16
+ `,
17
+ h2: `
18
+ font-size: var(--h2-font-size);
19
+ font-weight: var(--h2-font-weight);
20
+ line-height: var(--h2-line-height);
21
+ letter-spacing: var(--h2-letter-spacing);
22
+ `,
23
+ h3: `
24
+ font-size: var(--h3-font-size);
25
+ font-weight: var(--h3-font-weight);
26
+ line-height: var(--h3-line-height);
27
+ letter-spacing: var(--h3-letter-spacing);
28
+ `,
29
+ h4: `
30
+ font-size: var(--h4-font-size);
31
+ font-weight: var(--h4-font-weight);
32
+ line-height: var(--h4-line-height);
33
+ letter-spacing: var(--h4-letter-spacing);
34
+ `,
35
+ lg: `
36
+ font-size: var(--lg-font-size);
37
+ font-weight: var(--lg-font-weight);
38
+ line-height: var(--lg-line-height);
39
+ letter-spacing: var(--lg-letter-spacing);
40
+ `,
41
+ md: `
42
+ font-size: var(--md-font-size);
43
+ font-weight: var(--md-font-weight);
44
+ line-height: var(--md-line-height);
45
+ letter-spacing: var(--md-letter-spacing);
46
+ `,
47
+ sm: `
48
+ font-size: var(--sm-font-size);
49
+ font-weight: var(--sm-font-weight);
50
+ line-height: var(--sm-line-height);
51
+ letter-spacing: var(--sm-letter-spacing);
52
+ `,
53
+ xs: `
54
+ font-size: var(--xs-font-size);
55
+ font-weight: var(--xs-font-weight);
56
+ line-height: var(--xs-line-height);
57
+ letter-spacing: var(--xs-letter-spacing);
58
+ `,
59
+ },
60
+ };
61
+
62
+ export default generateCSS(styles);