lutra 0.1.0 → 0.1.5

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 (154) hide show
  1. package/dist/components/Avatar.svelte +105 -0
  2. package/dist/components/Avatar.svelte.d.ts +14 -0
  3. package/dist/components/Close.svelte +76 -0
  4. package/dist/components/Close.svelte.d.ts +7 -0
  5. package/dist/components/ContextTip.svelte +41 -0
  6. package/dist/components/ContextTip.svelte.d.ts +7 -0
  7. package/dist/components/Icon.svelte +62 -0
  8. package/dist/components/Icon.svelte.d.ts +8 -0
  9. package/dist/components/IconButton.svelte +120 -0
  10. package/dist/components/IconButton.svelte.d.ts +16 -0
  11. package/dist/components/Image.svelte +172 -0
  12. package/dist/components/Image.svelte.d.ts +56 -0
  13. package/dist/components/Indicator.svelte +387 -0
  14. package/dist/components/Indicator.svelte.d.ts +12 -0
  15. package/dist/components/Inset.svelte +23 -0
  16. package/dist/components/Inset.svelte.d.ts +7 -0
  17. package/dist/components/Layout.svelte +2 -1
  18. package/dist/components/MenuDropdown.svelte +195 -0
  19. package/dist/components/MenuDropdown.svelte.d.ts +16 -0
  20. package/dist/components/MenuItem.svelte +159 -0
  21. package/dist/components/MenuItem.svelte.d.ts +11 -0
  22. package/dist/components/MenuItemContent.svelte +25 -0
  23. package/dist/components/MenuItemContent.svelte.d.ts +10 -0
  24. package/dist/components/MenuTypes.d.ts +79 -0
  25. package/dist/components/MenuTypes.js +1 -0
  26. package/dist/components/Modal.svelte +149 -0
  27. package/dist/components/Modal.svelte.d.ts +16 -0
  28. package/dist/components/Notification.svelte +115 -0
  29. package/dist/components/Notification.svelte.d.ts +12 -0
  30. package/dist/components/Overlay.svelte +31 -0
  31. package/dist/components/Overlay.svelte.d.ts +14 -0
  32. package/dist/components/OverlayContainer.svelte +31 -0
  33. package/dist/components/OverlayContainer.svelte.d.ts +18 -0
  34. package/dist/components/OverlayLayer.svelte +168 -0
  35. package/dist/components/OverlayLayer.svelte.d.ts +8 -0
  36. package/dist/components/PageContent.svelte +4 -82
  37. package/dist/components/PageContent.svelte.d.ts +0 -31
  38. package/dist/components/TabbedContent.svelte +74 -0
  39. package/dist/components/TabbedContent.svelte.d.ts +11 -0
  40. package/dist/components/TabbedContentItem.svelte +33 -0
  41. package/dist/components/TabbedContentItem.svelte.d.ts +10 -0
  42. package/dist/components/Table.svelte +41 -0
  43. package/dist/components/Table.svelte.d.ts +13 -0
  44. package/dist/components/Tabs.svelte +216 -0
  45. package/dist/components/Tabs.svelte.d.ts +20 -0
  46. package/dist/components/Tag.svelte +120 -0
  47. package/dist/components/Tag.svelte.d.ts +21 -0
  48. package/dist/components/Theme.svelte +32 -14
  49. package/dist/components/Tooltip.svelte +8 -8
  50. package/dist/components/UIContent.svelte +19 -0
  51. package/dist/components/UIContent.svelte.d.ts +7 -0
  52. package/dist/components/index.d.ts +28 -0
  53. package/dist/components/index.js +29 -0
  54. package/dist/components/notifications.svelte.d.ts +21 -0
  55. package/dist/components/notifications.svelte.js +30 -0
  56. package/dist/components/overlays.svelte.d.ts +36 -0
  57. package/dist/components/overlays.svelte.js +44 -0
  58. package/dist/css/1-props.css +389 -724
  59. package/dist/css/2-base.css +257 -123
  60. package/dist/css/3-typo.css +74 -34
  61. package/dist/css/4-layout.css +364 -1
  62. package/dist/css/5-media.css +106 -11
  63. package/dist/css/lutra.css +2 -1
  64. package/dist/css/themes/DefaultTheme.css +209 -0
  65. package/dist/form/Button.svelte +58 -0
  66. package/dist/form/Button.svelte.d.ts +15 -0
  67. package/dist/form/Datepicker.svelte +311 -0
  68. package/dist/form/Datepicker.svelte.d.ts +9 -0
  69. package/dist/form/FieldContent.svelte +178 -0
  70. package/dist/form/FieldContent.svelte.d.ts +21 -0
  71. package/dist/form/FieldError.svelte +24 -0
  72. package/dist/form/FieldError.svelte.d.ts +7 -0
  73. package/dist/form/Fieldset.svelte +103 -0
  74. package/dist/form/Fieldset.svelte.d.ts +20 -0
  75. package/dist/form/Form.svelte +220 -0
  76. package/dist/form/Form.svelte.d.ts +38 -0
  77. package/dist/form/FormActions.svelte +80 -0
  78. package/dist/form/FormActions.svelte.d.ts +9 -0
  79. package/dist/form/FormSection.svelte +96 -0
  80. package/dist/form/FormSection.svelte.d.ts +9 -0
  81. package/dist/form/ImageUpload.svelte +299 -0
  82. package/dist/form/ImageUpload.svelte.d.ts +20 -0
  83. package/dist/form/Input.svelte +444 -0
  84. package/dist/form/Input.svelte.d.ts +108 -0
  85. package/dist/form/InputLength.svelte +42 -0
  86. package/dist/form/InputLength.svelte.d.ts +9 -0
  87. package/dist/form/Label.svelte +88 -0
  88. package/dist/form/Label.svelte.d.ts +16 -0
  89. package/dist/form/LogoUpload.svelte +115 -0
  90. package/dist/form/LogoUpload.svelte.d.ts +18 -0
  91. package/dist/form/Select.svelte +186 -0
  92. package/dist/form/Select.svelte.d.ts +59 -0
  93. package/dist/form/Textarea.svelte +265 -0
  94. package/dist/form/Textarea.svelte.d.ts +95 -0
  95. package/dist/form/Toggle.svelte +4 -0
  96. package/dist/form/Toggle.svelte.d.ts +18 -0
  97. package/dist/form/client.svelte.d.ts +45 -0
  98. package/dist/form/client.svelte.js +102 -0
  99. package/dist/form/form.d.ts +55 -0
  100. package/dist/form/form.js +345 -0
  101. package/dist/form/index.d.ts +17 -0
  102. package/dist/form/index.js +17 -0
  103. package/dist/form/types.d.ts +55 -0
  104. package/dist/form/types.js +1 -0
  105. package/dist/icons/IconAlert.svelte +3 -0
  106. package/dist/icons/IconAlert.svelte.d.ts +26 -0
  107. package/dist/icons/IconCopy.svelte +3 -0
  108. package/dist/icons/IconCopy.svelte.d.ts +26 -0
  109. package/dist/icons/IconDone.svelte +3 -0
  110. package/dist/icons/IconDone.svelte.d.ts +26 -0
  111. package/dist/icons/IconError.svelte +3 -0
  112. package/dist/icons/IconError.svelte.d.ts +26 -0
  113. package/dist/icons/IconHelp.svelte +3 -0
  114. package/dist/icons/IconHelp.svelte.d.ts +26 -0
  115. package/dist/icons/IconHide.svelte +3 -0
  116. package/dist/icons/IconHide.svelte.d.ts +26 -0
  117. package/dist/icons/IconInfo.svelte +3 -0
  118. package/dist/icons/IconInfo.svelte.d.ts +26 -0
  119. package/dist/icons/IconLink.svelte +3 -0
  120. package/dist/icons/IconLink.svelte.d.ts +26 -0
  121. package/dist/icons/IconMenuBurger.svelte +3 -0
  122. package/dist/icons/IconMenuBurger.svelte.d.ts +26 -0
  123. package/dist/icons/IconMenuDots.svelte +3 -0
  124. package/dist/icons/IconMenuDots.svelte.d.ts +26 -0
  125. package/dist/icons/IconSearch.svelte +3 -0
  126. package/dist/icons/IconSearch.svelte.d.ts +26 -0
  127. package/dist/icons/IconShow.svelte +3 -0
  128. package/dist/icons/IconShow.svelte.d.ts +26 -0
  129. package/dist/icons/IconSuccess.svelte +3 -0
  130. package/dist/icons/IconSuccess.svelte.d.ts +26 -0
  131. package/dist/icons/IconWarning.svelte +3 -0
  132. package/dist/icons/IconWarning.svelte.d.ts +26 -0
  133. package/dist/icons/index.d.ts +14 -0
  134. package/dist/icons/index.js +14 -0
  135. package/dist/index.d.ts +3 -5
  136. package/dist/index.js +3 -5
  137. package/dist/util/StringOrComponent.svelte +20 -0
  138. package/dist/util/StringOrComponent.svelte.d.ts +8 -0
  139. package/dist/util/StringOrSnippet.svelte +16 -0
  140. package/dist/util/StringOrSnippet.svelte.d.ts +8 -0
  141. package/dist/util/attr.d.ts +5 -0
  142. package/dist/util/attr.js +21 -0
  143. package/dist/util/color.d.ts +51 -0
  144. package/dist/util/color.js +97 -0
  145. package/dist/util/dom.d.ts +15 -0
  146. package/dist/util/dom.js +73 -0
  147. package/dist/util/keyboard.svelte.d.ts +22 -0
  148. package/dist/util/keyboard.svelte.js +161 -0
  149. package/dist/util/locale.d.ts +1 -0
  150. package/dist/util/locale.js +47 -0
  151. package/dist/util/settings.d.ts +4 -0
  152. package/dist/util/settings.js +1 -0
  153. package/package.json +20 -11
  154. package/dist/css/0-layers.css +0 -1
@@ -1,16 +1,118 @@
1
1
  /**
2
2
  * Base DOM setup
3
+ * Initializes shorthand variables and foundational sizing
3
4
  */
4
5
  :root {
5
- --space-xxxs: calc(var(--space-base) / var(--space-ratio) / var(--space-ratio) / var(--space-ratio) / var(--space-ratio));
6
- --space-xxs: calc(var(--space-base) / var(--space-ratio) / var(--space-ratio) / var(--space-ratio));
7
- --space-xs: calc(var(--space-base) / var(--space-ratio) / var(--space-ratio));
8
- --space-s: calc(var(--space-base) / var(--space-ratio));
9
- --space-m: var(--space-base);
10
- --space-l: calc(var(--space-base) * var(--space-ratio));
11
- --space-xl: calc(var(--space-base) * var(--space-ratio) * var(--space-ratio));
12
- --space-xxl: calc(var(--space-base) * var(--space-ratio) * var(--space-ratio) * var(--space-ratio));
13
- --space-xxxl: calc(var(--space-base) * var(--space-ratio) * var(--space-ratio) * var(--space-ratio) * var(--space-ratio));
6
+ /* Base size for all sizing */
7
+ --base-size: 16px;
8
+
9
+ /* Spacing scale */
10
+ --space-base: 1em;
11
+ --space-025: calc(var(--space-base) * 0.25);
12
+ --space-050: calc(var(--space-base) * 0.5);
13
+ --space-075: calc(var(--space-base) * 0.75);
14
+ --space-100: calc(var(--space-base) * 1);
15
+ --space-125: calc(var(--space-base) * 1.25);
16
+ --space-150: calc(var(--space-base) * 1.5);
17
+ --space-175: calc(var(--space-base) * 1.75);
18
+ --space-200: calc(var(--space-base) * 2);
19
+ --space-225: calc(var(--space-base) * 2.25);
20
+ --space-250: calc(var(--space-base) * 2.5);
21
+ --space-300: calc(var(--space-base) * 3);
22
+ --space-350: calc(var(--space-base) * 3.5);
23
+ --space-400: calc(var(--space-base) * 4);
24
+ --space-450: calc(var(--space-base) * 4.5);
25
+ --space-500: calc(var(--space-base) * 5);
26
+ --space-550: calc(var(--space-base) * 5.5);
27
+ --space-600: calc(var(--space-base) * 6);
28
+ --space-700: calc(var(--space-base) * 7);
29
+ --space-800: calc(var(--space-base) * 8);
30
+ --space-900: calc(var(--space-base) * 9);
31
+ --space-1000: calc(var(--space-base) * 10);
32
+
33
+ --space-xs: var(--space-025);
34
+ --space-sm: var(--space-050);
35
+ --space-md: var(--space-100);
36
+ --space-lg: var(--space-200);
37
+ --space-xl: var(--space-300);
38
+
39
+ --font-scale: 1.175;
40
+ --font-size-base: 1em;
41
+
42
+ --font-size-xs: calc(var(--font-size-base) * pow(var(--font-scale), -2));
43
+ --font-size-sm: calc(var(--font-size-base) * pow(var(--font-scale), -1));
44
+ --font-size-p: var(--font-size-base);
45
+ --font-size-h6: var(--font-size-base);
46
+ --font-size-h5: calc(var(--font-size-base) * pow(var(--font-scale), 1));
47
+ --font-size-h4: calc(var(--font-size-base) * pow(var(--font-scale), 2));
48
+ --font-size-h3: calc(var(--font-size-base) * pow(var(--font-scale), 3));
49
+ --font-size-h2: calc(var(--font-size-base) * pow(var(--font-scale), 4));
50
+ --font-size-h1: calc(var(--font-size-base) * pow(var(--font-scale), 5));
51
+ --font-size-hero: calc(var(--font-size-base) * pow(var(--font-scale), 6));
52
+ --font-size-jumbo: calc(var(--font-size-base) * pow(var(--font-scale), 7));
53
+
54
+ --text-color-h1: var(--text-color-heading);
55
+ --text-color-h2: var(--text-color-heading);
56
+ --text-color-h3: var(--text-color-heading);
57
+ --text-color-h4: var(--text-color-heading);
58
+ --text-color-h5: var(--text-color-heading);
59
+ --text-color-h6: var(--text-color-heading);
60
+ --field-color: var(--text-color-p);
61
+
62
+ --border-radius-scale: 1.2;
63
+ --border-size-thin: 1px;
64
+ --border-size-thick: 2px;
65
+
66
+ --border-radius-base: calc(var(--border-radius-scale) * 0.25em);
67
+ --border-radius-sm: calc(var(--border-radius-scale) * 0.5em);
68
+ --border-radius-lg: calc(var(--border-radius-scale) * 2em);
69
+
70
+ --form-border-radius: var(--border-radius-base);
71
+ --form-border-size: var(--border-size-thin);
72
+ --form-border-style: var(--border-style);
73
+ --form-border-color: var(--border-color);
74
+
75
+ --field-border-radius: var(--border-radius-base);
76
+ --field-border-size: var(--border-size-thin);
77
+ --field-border-style: var(--border-style);
78
+ --field-border-color: var(--border-color);
79
+
80
+ --button-border-radius: var(--border-radius-base);
81
+ --button-border-size: var(--border-size-thin);
82
+ --button-border-style: var(--border-style);
83
+ --button-border-color: var(--border-color);
84
+
85
+ --link-color-visited: var(--link-color);
86
+ --link-color-active: var(--link-color);
87
+
88
+ /* Shorthand compound variables */
89
+ --field-padding: var(--field-padding-block) var(--field-padding-inline);
90
+ --field-border: var(--field-border-size) var(--field-border-style) var(--field-border-color);
91
+
92
+ --button-padding: var(--button-padding-block) var(--button-padding-inline);
93
+ --button-border: var(--button-border-size) var(--button-border-style) var(--button-submit-border-color);
94
+ --button-icon-size: 1em;
95
+
96
+ /* Focus ring compound */
97
+ --focus-ring: var(--focus-ring-size) solid var(--focus-ring-color);
98
+
99
+ /* Shadows */
100
+ --shadow-base: var(--shadow-base);
101
+ --shadow-sm: var(--shadow-sm);
102
+ --shadow-md: var(--shadow-md);
103
+ --shadow-lg: var(--shadow-lg);
104
+ --shadow-xl: var(--shadow-xl);
105
+ --shadow-2xl: var(--shadow-2xl);
106
+
107
+ --tooltip-background: var(--background-body);
108
+ --tooltip-color: var(--text-color-p);
109
+ --tooltip-border-color: var(--border-color);
110
+ --tooltip-border-size: var(--border-size-thin);
111
+ --tooltip-border-style: var(--border-style);
112
+ --tooltip-border-radius: var(--border-radius-base);
113
+ --tooltip-shadow-color: var(--shadow-color);
114
+
115
+ --mix-target: light-dark(black, white);
14
116
  }
15
117
 
16
118
  body {
@@ -18,8 +120,11 @@ body {
18
120
  -webkit-font-smoothing: antialiased;
19
121
  -moz-osx-font-smoothing: grayscale;
20
122
  overscroll-behavior: none;
21
- overscroll-behavior-x: none;
22
123
  font-family: var(--font-family);
124
+ font-size: var(--base-size);
125
+ line-height: var(--font-line-height);
126
+ color: var(--text-color-p);
127
+ background: var(--background-body);
23
128
  padding: 0;
24
129
  margin: 0;
25
130
  min-width: 280px;
@@ -42,168 +147,197 @@ input, textarea, select, button {
42
147
  -webkit-appearance: none;
43
148
  -moz-appearance: none;
44
149
  appearance: none;
150
+ font-family: inherit;
151
+ font-size: inherit;
45
152
  }
46
153
 
47
154
  input, textarea, select {
48
- border-radius: var(--field-radius);
49
- border-style: var(--field-border-style);
50
- border-width: var(--field-border-size);
51
- border-color: var(--field-border-color);
52
- color: var(--field-text-color);
53
- background-color: var(--field-bg-color);
54
- padding: var(--field-padding);
155
+ border-radius: var(--field-border-radius);
156
+ border: var(--field-border);
157
+ color: var(--field-color);
158
+ background: var(--field-background);
159
+ padding-inline: var(--field-padding-inline);
160
+ padding-block: var(--field-padding-block);
55
161
  }
56
162
 
57
- .button,
58
- ::file-selector-button {
59
- cursor: pointer;
60
- border-radius: var(--button-radius);
61
- padding: var(--button-padding);
62
- color: var(--button-text-color);
63
- background-color: var(--button-bg-color);
64
- border-width: var(--button-border-size);
65
- border-style: var(--button-border-style);
66
- border-color: var(--button-border-color);
163
+ input, textarea, select, .button, ::file-selector-button, .Field {
164
+ transition:
165
+ border-color var(--transition-duration-fast) var(--transition-timing-function),
166
+ border-style var(--transition-duration-fast) var(--transition-timing-function),
167
+ border-radius var(--transition-duration-fast) var(--transition-timing-function),
168
+ background-image var(--transition-duration-fast) var(--transition-timing-function),
169
+ background-color var(--transition-duration-fast) var(--transition-timing-function),
170
+ color var(--transition-duration-fast) var(--transition-timing-function),
171
+ box-shadow var(--transition-duration-fast) var(--transition-timing-function),
172
+ outline var(--transition-duration-fast) var(--transition-timing-function),
173
+ outline-offset var(--transition-duration-fast) var(--transition-timing-function);
67
174
  }
68
175
 
69
- .button:hover,
70
- ::file-selector-button:hover {
71
- color: var(--button-hover-text-color);
72
- background-color: var(--button-hover-bg-color);
73
- border-color: var(--button-hover-border-color);
176
+ input:focus-visible, textarea:focus-visible, select:focus-visible {
177
+ outline: var(--focus-ring-size) solid var(--focus-ring-color);
178
+ outline-offset: var(--focus-ring-offset);
179
+ border-color: var(--focus-ring-color);
74
180
  }
75
181
 
76
- .button:active,
77
- ::file-selector-button:active {
78
- color: var(--button-active-text-color);
79
- background-color: var(--button-active-bg-color);
80
- border-color: var(--button-active-border-color);
182
+ input::placeholder, textarea::placeholder, select::placeholder {
183
+ color: var(--field-placeholder-color);
81
184
  }
82
185
 
83
- .button.secondary {
84
- color: var(--button-secondary-text-color);
85
- background-color: var(--button-secondary-bg-color);
86
- border-color: var(--button-secondary-border-color);
186
+ input:disabled, textarea:disabled, select:disabled {
187
+ color: var(--field-color-disabled);
188
+ background: var(--field-background-disabled);
189
+ border: var(--field-border-disabled);
190
+ cursor: not-allowed;
87
191
  }
88
192
 
89
- .button.secondary:hover {
90
- color: var(--button-secondary-hover-text-color);
91
- background-color: var(--button-secondary-hover-bg-color);
92
- border-color: var(--button-secondary-hover-bg-color);
193
+ .button,
194
+ ::file-selector-button {
195
+ cursor: pointer;
196
+ border-radius: var(--button-border-radius);
197
+ padding-inline: var(--button-padding-inline);
198
+ padding-block: var(--button-padding-block);
199
+ color: var(--button-submit-color);
200
+ background: var(--button-submit-background);
201
+ border: var(--button-border);
202
+ font-weight: var(--button-font-weight);
203
+ text-decoration: none;
204
+ display: inline-flex;
205
+ align-items: center;
206
+ justify-content: center;
207
+ gap: var(--space-050);
208
+ --button-base-color: var(--button-submit-base-color);
209
+ --button-base-color-hover: var(--button-submit-base-color-hover);
93
210
  }
94
211
 
95
- .button.secondary:active {
96
- color: var(--button-secondary-active-text-color);
97
- background-color: var(--button-secondary-active-bg-color);
98
- border-color: var(--button-secondary-active-bg-color);
212
+ .button.lg {
213
+ padding-inline: calc(var(--button-padding-inline) * 1.5);
214
+ padding-block: calc(var(--button-padding-block) * 1.5);
99
215
  }
100
216
 
101
- .button.warning {
102
- color: var(--button-warning-text-color);
103
- background-color: var(--button-warning-bg-color);
104
- border-color: var(--button-warning-border-color);
217
+ .button.xl {
218
+ padding-inline: calc(var(--button-padding-inline) * 2);
219
+ padding-block: calc(var(--button-padding-block) * 2);
105
220
  }
106
221
 
107
- .button.warning:hover {
108
- color: var(--button-warning-hover-text-color);
109
- background-color: var(--button-warning-hover-bg-color);
110
- border-color: var(--button-warning-hover-border-color);
222
+ .button.sm {
223
+ padding-inline: calc(var(--button-padding-inline) * 0.5);
224
+ padding-block: calc(var(--button-padding-block) * 0.5);
111
225
  }
112
226
 
113
- .button.warning:active {
114
- color: var(--button-warning-active-text-color);
115
- background-color: var(--button-warning-active-bg-color);
116
- border-color: var(--button-warning-active-border-color);
117
- }
227
+ .button:hover,
228
+ ::file-selector-button:hover {
229
+ color: var(--button-submit-color-hover);
230
+ background: var(--button-submit-background-hover);
231
+ border-color: var(--button-submit-border-color-hover);
118
232
 
119
- .button.danger {
120
- color: var(--button-danger-text-color);
121
- background-color: var(--button-danger-bg-color);
122
- border-color: var(--button-danger-border-color);
233
+ &:focus-visible {
234
+ outline: var(--focus-ring-size) solid var(--button-base-color-hover);
235
+ outline-offset: var(--focus-ring-offset);
236
+ }
123
237
  }
124
238
 
125
- .button.danger:hover {
126
- color: var(--button-danger-hover-text-color);
127
- background-color: var(--button-danger-hover-bg-color);
128
- border-color: var(--button-danger-hover-border-color);
239
+ .button:disabled,
240
+ ::file-selector-button:disabled {
241
+ color: var(--button-color-disabled);
242
+ background: var(--button-background-disabled);
243
+ border-color: var(--button-border-color-disabled);
244
+ cursor: not-allowed;
129
245
  }
130
246
 
131
- .button.danger:active {
132
- color: var(--button-danger-active-text-color);
133
- background-color: var(--button-danger-active-bg-color);
134
- border-color: var(--button-danger-active-border-color);
247
+ .button:focus-visible {
248
+ outline: var(--focus-ring-size) solid var(--button-base-color);
249
+ outline-offset: var(--focus-ring-offset);
250
+ border-color: var(--button-base-color);
135
251
  }
136
252
 
137
- .button.tertiary {
138
- color: var(--button-tertiary-text-color);
139
- background-color: var(--button-tertiary-bg-color);
140
- border-color: var(--button-tertiary-border-color);
253
+ .button.outline {
254
+ border-color: var(--button-submit-border-color);
255
+ color: var(--button-submit-color-outline);
141
256
  }
142
257
 
143
- .button.tertiary:hover {
144
- color: var(--button-tertiary-hover-text-color);
145
- background-color: var(--button-tertiary-hover-bg-color);
146
- border-color: var(--button-tertiary-hover-border-color);
258
+ .button.outline:hover {
259
+ border-color: var(--button-submit-border-color-hover);
260
+ color: var(--button-submit-color-outline-hover);
147
261
  }
148
262
 
149
- .button.tertiary:active {
150
- color: var(--button-tertiary-active-text-color);
151
- background-color: var(--button-tertiary-active-bg-color);
152
- border-color: var(--button-tertiary-active-border-color);
263
+ .button.action {
264
+ background: var(--button-action-background);
265
+ border-color: var(--button-action-border-color);
266
+ color: var(--button-action-color);
267
+ --button-base-color: var(--button-action-base-color);
268
+ --button-base-color-hover: var(--button-action-base-color-hover);
153
269
  }
154
270
 
155
- input::placeholder, textarea::placeholder, select::placeholder {
156
- color: var(--field-placeholder-color);
271
+ .button.action:hover {
272
+ background: var(--button-action-background-hover);
273
+ border-color: var(--button-action-border-color-hover);
274
+ color: var(--button-action-color-hover);
275
+ --button-base-color: var(--button-action-base-color-hover);
276
+ --button-base-color-hover: var(--button-action-base-color-hover);
157
277
  }
158
278
 
159
- *:focus-visible {
160
- transition: outline 0.1s;
161
- outline: var(--focus-size) solid var(--focus-color);
162
- outline-offset: 0;
163
- -webkit-outline-offset: 0;
164
- transform: translateZ(0);
279
+ .button.success {
280
+ background: var(--button-success-background);
281
+ border-color: var(--button-success-border-color);
282
+ color: var(--button-success-color);
283
+ --button-base-color: var(--button-success-base-color);
284
+ --button-base-color-hover: var(--button-success-base-color-hover);
165
285
  }
166
286
 
167
- a {
168
- color: var(--text-color-link);
169
- text-decoration: var(--text-link-decoration);
287
+ .button.success:hover {
288
+ background: var(--button-success-background-hover);
289
+ border-color: var(--button-success-border-color-hover);
290
+ color: var(--button-success-color-hover);
291
+ --button-base-color: var(--button-success-base-color-hover);
292
+ --button-base-color-hover: var(--button-success-base-color-hover);
170
293
  }
171
294
 
172
- a:hover {
173
- color: var(--text-color-link-hover);
174
- text-decoration: var(--text-link-decoration-hover);
295
+ .button.danger {
296
+ background: var(--button-danger-background);
297
+ border-color: var(--button-danger-border-color);
298
+ color: var(--button-danger-color);
299
+ --button-base-color: var(--button-danger-base-color);
300
+ --button-base-color-hover: var(--button-danger-base-color-hover);
175
301
  }
176
302
 
177
- a:active {
178
- color: var(--text-color-link-active);
303
+ .button.danger:hover {
304
+ background: var(--button-danger-background-hover);
305
+ border-color: var(--button-danger-border-color-hover);
306
+ color: var(--button-danger-color-hover);
307
+ --button-base-color: var(--button-danger-base-color-hover);
308
+ --button-base-color-hover: var(--button-danger-base-color-hover);
179
309
  }
180
310
 
181
- a:visited {
182
- color: var(--text-color-link-visited);
311
+ .button.ghost {
312
+ background: transparent;
313
+ border-color: transparent;
314
+ color: var(--button-base-color);
183
315
  }
184
316
 
185
- pre, code {
186
- font-family: var(--font-family-mono);
317
+ .button.ghost:hover {
318
+ background: transparent;
319
+ border-color: transparent;
320
+ color: var(--button-base-color-hover);
187
321
  }
188
322
 
189
- pre {
190
- background-color: var(--code-bg-color);
191
- color: var(--code-text-color);
192
- border: var(--code-border-size) solid var(--code-border-color);
193
- padding: var(--space-m);
194
- border-radius: var(--border-radius);
195
- overflow-x: auto;
323
+ .button.outline {
324
+ background: transparent;
325
+ color: var(--button-base-color);
326
+ border-color: var(--button-base-color);
196
327
  }
197
328
 
198
- code {
199
- background-color: var(--code-bg-color);
200
- color: var(--code-text-color);
201
- padding: var(--space-xxxs) var(--space-xxs);
202
- border-radius: var(--border-radius);
329
+ .button.outline:hover {
330
+ background: transparent;
331
+ border-color: var(--button-base-color-hover);
332
+ color: var(--button-base-color-hover);
203
333
  }
204
334
 
205
- pre code {
206
- padding: 0;
207
- background-color: transparent;
208
- border: none;
209
- }
335
+ .button .icon {
336
+ width: var(--button-icon-size);
337
+ height: var(--button-icon-size);
338
+ display: inline-flex;
339
+ align-items: center;
340
+ justify-content: center;
341
+ flex-shrink: 0;
342
+ order: var(--button-icon-order);
343
+ }
@@ -1,65 +1,105 @@
1
1
  /**
2
- * Base typography setup
2
+ * Base typography setup using design token system
3
3
  */
4
4
 
5
- small {
6
- font-size: calc(var(--font-size-base) / var(--font-size-ratio));
7
- }
8
-
9
- p, li, input, textarea, select, button {
10
- font-size: var(--font-size-base);
11
- font-weight: var(--font-weight-regular);
5
+ /* Base text elements */
6
+ p, li {
7
+ font-family: var(--font-family);
8
+ font-weight: var(--font-weight-p);
9
+ line-height: var(--font-line-height);
10
+ color: var(--text-color-p);
12
11
  }
13
12
 
14
- p, li, h6, h5, h4, h3, h2, h1, li, input, textarea, select, button {
15
- line-height: var(--line-height);
13
+ small {
14
+ font-size: var(--font-size-sm);
15
+ color: var(--text-color-p-subtle);
16
+ line-height: var(--font-line-height-tight);
16
17
  }
17
18
 
18
- p, li {
19
- color: var(--text-color);
19
+ small.smaller {
20
+ font-size: var(--font-size-xs);
20
21
  }
21
22
 
23
+ /* Form elements inherit base typography */
22
24
  input, textarea, select, button {
23
25
  font-family: var(--font-family);
24
- color: var(--field-text-color);
25
- background-color: var(--field-bg-color);
26
- border-color: var(--field-border-color);
26
+ font-size: inherit;
27
+ line-height: var(--font-line-height);
27
28
  }
28
29
 
29
- small {
30
- color: var(--text-color-subtle);
31
- }
32
-
33
- h6, h5, h4, h3, h2, h1 {
34
- color: var(--text-color-heading);
30
+ /* Heading scale using predefined font sizes */
31
+ h1, h2, h3, h4, h5, h6 {
32
+ font-family: var(--font-family-heading);
33
+ line-height: var(--font-line-height-heading);
35
34
  }
36
35
 
37
36
  h6 {
38
- font-size: calc(var(--font-size-base) * var(--font-size-ratio));
39
- font-weight: var(--font-weight-medium);
37
+ font-size: var(--font-size-h6);
38
+ font-weight: var(--font-weight-h6);
39
+ color: var(--text-color-h6);
40
40
  }
41
41
 
42
42
  h5 {
43
- font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 2));
44
- font-weight: var(--font-weight-semibold);
43
+ font-size: var(--font-size-h5);
44
+ font-weight: var(--font-weight-h5);
45
+ color: var(--text-color-h5);
45
46
  }
46
47
 
47
48
  h4 {
48
- font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 3));
49
- font-weight: var(--font-weight-semibold);
49
+ font-size: var(--font-size-h4);
50
+ font-weight: var(--font-weight-h4);
51
+ color: var(--text-color-h4);
50
52
  }
51
53
 
52
54
  h3 {
53
- font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 4));
54
- font-weight: var(--font-weight-bold);
55
+ font-size: var(--font-size-h3);
56
+ font-weight: var(--font-weight-h3);
57
+ color: var(--text-color-h3);
55
58
  }
56
59
 
57
60
  h2 {
58
- font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 5));
59
- font-weight: var(--font-weight-bold);
61
+ font-size: var(--font-size-h2);
62
+ font-weight: var(--font-weight-h2);
63
+ color: var(--text-color-h2);
60
64
  }
61
65
 
62
66
  h1 {
63
- font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 6));
64
- font-weight: var(--font-weight-bold);
65
- }
67
+ font-size: var(--font-size-h1);
68
+ font-weight: var(--font-weight-h1);
69
+ color: var(--text-color-h1);
70
+ }
71
+
72
+ label {
73
+ font-size: var(--field-label-font-size);
74
+ font-weight: var(--field-label-font-weight);
75
+ color: var(--field-label-color);
76
+ }
77
+
78
+ /* Link styling */
79
+ a {
80
+ color: var(--link-color);
81
+ text-decoration: var(--link-text-decoration);
82
+ }
83
+
84
+ a:hover {
85
+ color: var(--link-color-hover);
86
+ text-decoration: var(--link-text-decoration-hover);
87
+ }
88
+
89
+ a:active {
90
+ color: var(--link-color-active);
91
+ }
92
+
93
+ a:visited {
94
+ color: var(--link-color-visited);
95
+ }
96
+
97
+ /* Code and preformatted text */
98
+ pre, code {
99
+ font-family: var(--font-family-mono);
100
+ }
101
+
102
+ pre {
103
+ margin: 0;
104
+ padding: 0;
105
+ }