lutra 0.0.20 → 0.1.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 (223) hide show
  1. package/README.md +4 -24
  2. package/dist/components/AspectRatio.svelte +26 -0
  3. package/dist/components/AspectRatio.svelte.d.ts +8 -0
  4. package/dist/components/Dialog.svelte +78 -0
  5. package/dist/components/Dialog.svelte.d.ts +14 -0
  6. package/dist/components/Layout.svelte +32 -0
  7. package/dist/components/Layout.svelte.d.ts +11 -0
  8. package/dist/components/PageContent.svelte +108 -0
  9. package/dist/components/PageContent.svelte.d.ts +38 -0
  10. package/dist/components/Theme.svelte +87 -0
  11. package/dist/components/Theme.svelte.d.ts +17 -0
  12. package/dist/{display → components}/Tooltip.svelte +37 -11
  13. package/dist/components/Tooltip.svelte.d.ts +12 -0
  14. package/dist/config.d.ts +30 -0
  15. package/dist/config.js +18 -0
  16. package/dist/css/0-layers.css +1 -0
  17. package/dist/css/1-props.css +775 -0
  18. package/dist/css/2-base.css +209 -0
  19. package/dist/css/3-typo.css +65 -0
  20. package/dist/css/4-layout.css +5 -0
  21. package/dist/css/5-media.css +21 -0
  22. package/dist/css/lutra.css +6 -0
  23. package/dist/index.d.ts +5 -1
  24. package/dist/index.js +5 -2
  25. package/dist/types.d.ts +39 -0
  26. package/dist/types.js +25 -0
  27. package/package.json +29 -75
  28. package/dist/data/Stat.svelte +0 -89
  29. package/dist/data/Stat.svelte.d.ts +0 -39
  30. package/dist/data/index.d.ts +0 -1
  31. package/dist/data/index.js +0 -1
  32. package/dist/display/Avatar.svelte +0 -61
  33. package/dist/display/Avatar.svelte.d.ts +0 -23
  34. package/dist/display/Badge.svelte +0 -93
  35. package/dist/display/Badge.svelte.d.ts +0 -34
  36. package/dist/display/Callout.svelte +0 -109
  37. package/dist/display/Callout.svelte.d.ts +0 -36
  38. package/dist/display/Close.svelte +0 -58
  39. package/dist/display/Close.svelte.d.ts +0 -21
  40. package/dist/display/Code.svelte +0 -195
  41. package/dist/display/Code.svelte.d.ts +0 -31
  42. package/dist/display/ContextTip.svelte +0 -26
  43. package/dist/display/ContextTip.svelte.d.ts +0 -22
  44. package/dist/display/Details.svelte +0 -49
  45. package/dist/display/Details.svelte.d.ts +0 -32
  46. package/dist/display/Hero.svelte +0 -50
  47. package/dist/display/Hero.svelte.d.ts +0 -30
  48. package/dist/display/Icon.svelte +0 -40
  49. package/dist/display/Icon.svelte.d.ts +0 -24
  50. package/dist/display/IconButton.svelte +0 -84
  51. package/dist/display/IconButton.svelte.d.ts +0 -30
  52. package/dist/display/Image.svelte +0 -91
  53. package/dist/display/Image.svelte.d.ts +0 -37
  54. package/dist/display/Indicator.svelte +0 -352
  55. package/dist/display/Indicator.svelte.d.ts +0 -24
  56. package/dist/display/Inset.svelte +0 -18
  57. package/dist/display/Inset.svelte.d.ts +0 -22
  58. package/dist/display/Notification.svelte +0 -104
  59. package/dist/display/Notification.svelte.d.ts +0 -42
  60. package/dist/display/Popup.svelte +0 -111
  61. package/dist/display/Popup.svelte.d.ts +0 -30
  62. package/dist/display/Table.svelte +0 -24
  63. package/dist/display/Table.svelte.d.ts +0 -34
  64. package/dist/display/Tag.svelte +0 -90
  65. package/dist/display/Tag.svelte.d.ts +0 -35
  66. package/dist/display/Tooltip.svelte.d.ts +0 -28
  67. package/dist/display/index.d.ts +0 -14
  68. package/dist/display/index.js +0 -14
  69. package/dist/display/notifications.svelte.d.ts +0 -21
  70. package/dist/display/notifications.svelte.js +0 -31
  71. package/dist/form/Button.svelte +0 -34
  72. package/dist/form/Button.svelte.d.ts +0 -36
  73. package/dist/form/FieldActions.svelte +0 -46
  74. package/dist/form/FieldActions.svelte.d.ts +0 -24
  75. package/dist/form/FieldContainer.svelte +0 -37
  76. package/dist/form/FieldContainer.svelte.d.ts +0 -24
  77. package/dist/form/FieldContent.svelte +0 -134
  78. package/dist/form/FieldContent.svelte.d.ts +0 -59
  79. package/dist/form/FieldError.svelte +0 -14
  80. package/dist/form/FieldError.svelte.d.ts +0 -21
  81. package/dist/form/FieldSection.svelte +0 -86
  82. package/dist/form/FieldSection.svelte.d.ts +0 -34
  83. package/dist/form/Fieldset.svelte +0 -68
  84. package/dist/form/Fieldset.svelte.d.ts +0 -42
  85. package/dist/form/Form.svelte +0 -98
  86. package/dist/form/Form.svelte.d.ts +0 -33
  87. package/dist/form/Input.svelte +0 -287
  88. package/dist/form/Input.svelte.d.ts +0 -142
  89. package/dist/form/InputLength.svelte +0 -32
  90. package/dist/form/InputLength.svelte.d.ts +0 -21
  91. package/dist/form/Label.svelte +0 -27
  92. package/dist/form/Label.svelte.d.ts +0 -31
  93. package/dist/form/Select.svelte +0 -88
  94. package/dist/form/Select.svelte.d.ts +0 -97
  95. package/dist/form/client.svelte.d.ts +0 -45
  96. package/dist/form/client.svelte.js +0 -90
  97. package/dist/form/form.d.ts +0 -52
  98. package/dist/form/form.js +0 -326
  99. package/dist/form/index.d.ts +0 -15
  100. package/dist/form/index.js +0 -15
  101. package/dist/form/types.d.ts +0 -52
  102. package/dist/form/types.js +0 -1
  103. package/dist/grid/Column.svelte +0 -11
  104. package/dist/grid/Column.svelte.d.ts +0 -22
  105. package/dist/grid/Grid.svelte +0 -19
  106. package/dist/grid/Grid.svelte.d.ts +0 -24
  107. package/dist/grid/Row.svelte +0 -44
  108. package/dist/grid/Row.svelte.d.ts +0 -24
  109. package/dist/icons/Alert.svelte +0 -3
  110. package/dist/icons/Alert.svelte.d.ts +0 -23
  111. package/dist/icons/Copy.svelte +0 -3
  112. package/dist/icons/Copy.svelte.d.ts +0 -23
  113. package/dist/icons/Done.svelte +0 -3
  114. package/dist/icons/Done.svelte.d.ts +0 -23
  115. package/dist/icons/Error.svelte +0 -3
  116. package/dist/icons/Error.svelte.d.ts +0 -23
  117. package/dist/icons/Help.svelte +0 -3
  118. package/dist/icons/Help.svelte.d.ts +0 -23
  119. package/dist/icons/Hide.svelte +0 -3
  120. package/dist/icons/Hide.svelte.d.ts +0 -23
  121. package/dist/icons/Info.svelte +0 -3
  122. package/dist/icons/Info.svelte.d.ts +0 -23
  123. package/dist/icons/Link.svelte +0 -3
  124. package/dist/icons/Link.svelte.d.ts +0 -23
  125. package/dist/icons/MenuBurger.svelte +0 -3
  126. package/dist/icons/MenuBurger.svelte.d.ts +0 -23
  127. package/dist/icons/MenuDots.svelte +0 -3
  128. package/dist/icons/MenuDots.svelte.d.ts +0 -23
  129. package/dist/icons/Show.svelte +0 -3
  130. package/dist/icons/Show.svelte.d.ts +0 -23
  131. package/dist/icons/Success.svelte +0 -3
  132. package/dist/icons/Success.svelte.d.ts +0 -23
  133. package/dist/icons/Warning.svelte +0 -3
  134. package/dist/icons/Warning.svelte.d.ts +0 -23
  135. package/dist/icons/index.d.ts +0 -11
  136. package/dist/icons/index.js +0 -11
  137. package/dist/layout/Layout.svelte +0 -45
  138. package/dist/layout/Layout.svelte.d.ts +0 -25
  139. package/dist/layout/LayoutFooter.svelte +0 -21
  140. package/dist/layout/LayoutFooter.svelte.d.ts +0 -19
  141. package/dist/layout/LayoutGrid.svelte +0 -51
  142. package/dist/layout/LayoutGrid.svelte.d.ts +0 -38
  143. package/dist/layout/LayoutHeader.svelte +0 -94
  144. package/dist/layout/LayoutHeader.svelte.d.ts +0 -39
  145. package/dist/layout/LayoutSideMenu.svelte +0 -54
  146. package/dist/layout/LayoutSideMenu.svelte.d.ts +0 -25
  147. package/dist/layout/LayoutTypes.d.ts +0 -15
  148. package/dist/layout/LayoutTypes.js +0 -9
  149. package/dist/layout/Overlay.svelte +0 -20
  150. package/dist/layout/Overlay.svelte.d.ts +0 -35
  151. package/dist/layout/OverlayContainer.svelte +0 -28
  152. package/dist/layout/OverlayContainer.svelte.d.ts +0 -16
  153. package/dist/layout/OverlayLayer.svelte +0 -145
  154. package/dist/layout/OverlayLayer.svelte.d.ts +0 -22
  155. package/dist/layout/PageContent.svelte +0 -97
  156. package/dist/layout/PageContent.svelte.d.ts +0 -28
  157. package/dist/layout/Theme.svelte +0 -228
  158. package/dist/layout/Theme.svelte.d.ts +0 -24
  159. package/dist/layout/UIContent.svelte +0 -15
  160. package/dist/layout/UIContent.svelte.d.ts +0 -22
  161. package/dist/layout/index.d.ts +0 -7
  162. package/dist/layout/index.js +0 -7
  163. package/dist/layout/overlays.svelte.d.ts +0 -34
  164. package/dist/layout/overlays.svelte.js +0 -44
  165. package/dist/nav/Breadcrumb.svelte +0 -82
  166. package/dist/nav/Breadcrumb.svelte.d.ts +0 -33
  167. package/dist/nav/Menu.svelte +0 -177
  168. package/dist/nav/Menu.svelte.d.ts +0 -33
  169. package/dist/nav/MenuItem.svelte +0 -140
  170. package/dist/nav/MenuItem.svelte.d.ts +0 -26
  171. package/dist/nav/MenuTypes.d.ts +0 -58
  172. package/dist/nav/MenuTypes.js +0 -1
  173. package/dist/nav/NavMenu.svelte +0 -183
  174. package/dist/nav/NavMenu.svelte.d.ts +0 -20
  175. package/dist/nav/TabbedContent.svelte +0 -43
  176. package/dist/nav/TabbedContent.svelte.d.ts +0 -24
  177. package/dist/nav/Tabs.svelte +0 -118
  178. package/dist/nav/Tabs.svelte.d.ts +0 -26
  179. package/dist/nav/index.d.ts +0 -6
  180. package/dist/nav/index.js +0 -5
  181. package/dist/style.css +0 -853
  182. package/dist/typo/Clamp.svelte +0 -25
  183. package/dist/typo/Clamp.svelte.d.ts +0 -28
  184. package/dist/typo/H.svelte +0 -52
  185. package/dist/typo/H.svelte.d.ts +0 -32
  186. package/dist/typo/H1.svelte +0 -14
  187. package/dist/typo/H1.svelte.d.ts +0 -30
  188. package/dist/typo/H2.svelte +0 -14
  189. package/dist/typo/H2.svelte.d.ts +0 -30
  190. package/dist/typo/H3.svelte +0 -14
  191. package/dist/typo/H3.svelte.d.ts +0 -30
  192. package/dist/typo/H4.svelte +0 -14
  193. package/dist/typo/H4.svelte.d.ts +0 -30
  194. package/dist/typo/H5.svelte +0 -14
  195. package/dist/typo/H5.svelte.d.ts +0 -30
  196. package/dist/typo/H6.svelte +0 -14
  197. package/dist/typo/H6.svelte.d.ts +0 -30
  198. package/dist/typo/P.svelte +0 -34
  199. package/dist/typo/P.svelte.d.ts +0 -30
  200. package/dist/typo/index.d.ts +0 -9
  201. package/dist/typo/index.js +0 -9
  202. package/dist/utils/StringOrComponentOrSnippet.svelte +0 -14
  203. package/dist/utils/StringOrComponentOrSnippet.svelte.d.ts +0 -24
  204. package/dist/utils/attr.d.ts +0 -5
  205. package/dist/utils/attr.js +0 -21
  206. package/dist/utils/color.d.ts +0 -51
  207. package/dist/utils/color.js +0 -97
  208. package/dist/utils/defaults.d.ts +0 -4
  209. package/dist/utils/defaults.js +0 -1
  210. package/dist/utils/dom.d.ts +0 -15
  211. package/dist/utils/dom.js +0 -74
  212. package/dist/utils/hooks.server.d.ts +0 -2
  213. package/dist/utils/hooks.server.js +0 -16
  214. package/dist/utils/id.d.ts +0 -1
  215. package/dist/utils/id.js +0 -3
  216. package/dist/utils/index.d.ts +0 -8
  217. package/dist/utils/index.js +0 -5
  218. package/dist/utils/isSnippet.d.ts +0 -5
  219. package/dist/utils/isSnippet.js +0 -6
  220. package/dist/utils/keyboard.svelte.d.ts +0 -22
  221. package/dist/utils/keyboard.svelte.js +0 -161
  222. /package/dist/{utils → util}/transitions.d.ts +0 -0
  223. /package/dist/{utils → util}/transitions.js +0 -0
package/dist/style.css DELETED
@@ -1,853 +0,0 @@
1
- @font-face {
2
- font-family: InterVariable;
3
- font-style: normal;
4
- font-weight: 100 900;
5
- src: url("/InterVariable.woff2") format("woff2");
6
- }
7
- @font-face {
8
- font-family: InterVariable;
9
- font-style: italic;
10
- font-weight: 100 900;
11
- src: url("/InterVariable-Italic.woff2") format("woff2");
12
- }
13
- @font-face {
14
- font-family: InconsolataVariable;
15
- font-style: normal;
16
- font-weight: 100 900;
17
- src: url("/InconsolataVariable.woff2") format("woff2");
18
- }
19
-
20
- :root {
21
- /* The base grid size is used to calculate sizes */
22
- --grid-size: 16px;
23
- /* Default font family */
24
- --font-family: InterVariable, sans-serif;
25
- --font-family-mono: 'InconsolataVariable';
26
- font-optical-sizing: auto;
27
- font-kerning: auto;
28
- --border-radius: 0.5em;
29
- --field-radius: 0.35em;
30
- --border-size: 1px;
31
- --border-style: solid;
32
- --field-border-size: 1px;
33
- --field-border-style: solid;
34
- --focus-size: 2px;
35
- --mix-amount: 80%;
36
- /* Transitions */
37
- --menu-trans: 0.1s ease-in-out;
38
- /**
39
- * Light theme
40
- */
41
- --l-mix-target: hsl(215, 0%, 5%);
42
- /* bg */
43
- --l-bg-app: hsl(215, 3%, 99.5%);
44
- --l-bg-subtle: hsl(240, 7%, 97%);
45
- --l-bg-overlay: rgba(255,255,255,0.85);
46
- --l-shadow: rgba(0, 0, 0, 0.15);
47
- /* border */
48
- --l-border-color: hsl(215, 6%, 80%);
49
- --l-border-subtle-color: hsl(215, 5%, 87%);
50
- --l-focus-color: hsl(215, 60%, 55%);
51
- --l-focus-color-error: hsl(353, 76%, 58%);
52
- --l-border: var(--border-size) var(--border-style) var(--l-border-color);
53
- --l-border-subtle: var(--border-size) var(--border-style) var(--l-border-subtle-color);
54
- --l-focus-outline: var(--focus-size) solid var(--l-focus-color);
55
- /* text */
56
- --l-text: hsl(240, 2%, 20%);
57
- --l-text-subtle: hsl(240, 2%, 40%);
58
- --l-text-highlight: hsl(206, 99%, 47%);
59
- --l-text-heading: hsl(240, 3%, 12%);
60
- --l-text-link: hsl(215, 70%, 55%);
61
- --l-text-warn: #e74c3c;
62
- --l-text-icon: #666;
63
- --l-text-subtle-icon: #999;
64
- --l-text-warn-icon: #e74c3c;
65
- /* fields */
66
- --l-field-bg: transparent;
67
- --l-field-border-color: var(--l-border-color);
68
- --l-field-border-color-error: var(--l-focus-color-error);
69
- --l-field-border: var(--field-border-size) var(--field-border-style) var(--l-field-border-color);
70
- --l-field-text: var(--l-text);
71
- --l-field-placeholder: #999;
72
- --l-field-label: #333;
73
- /* toggle */
74
- --l-toggle-on: #0187ed;
75
- --l-toggle-off: #ccc;
76
- /* buttons */
77
- --l-button-bg: hsl(215, 70%, 50%);
78
- --l-button-text: white;
79
- --l-button-border-color: var(--l-button-bg);
80
- --l-button-border: var(--border-size) var(--border-style) var(--l-button-border-color);
81
- /* buttons: disabled */
82
- --l-button-disabled-bg: hsl(215, 3%, 50%);
83
- --l-button-disabled-text: #fafafa;
84
- --l-button-disabled-border-color: var(--l-button-disabled-bg);
85
- --l-button-disabled-border: var(--border-size) var(--border-style) var(--l-button-disabled-border-color);
86
- /* buttons: outlined */
87
- --l-button-outlined-text: hsl(215, 3%, 30%);
88
- --l-button-outlined-border-color: hsl(215, 3%, 50%);
89
- --l-button-outlined-border: var(--border-size) var(--border-style) var(--l-button-outlined-border-color);
90
- /* buttons: secondary (for highlighted actions) */
91
- --l-button-secondary-bg: hsl(132, 94%, 32%);
92
- --l-button-secondary-text: white;
93
- --l-button-secondary-border-color: var(--l-button-secondary-bg);
94
- --l-button-secondary-border: var(--border-size) var(--border-style) var(--l-button-secondary-border-color);
95
- /* buttons: warn */
96
- --l-button-warn-bg: #e74c3c;
97
- --l-button-warn-text: white;
98
- --l-button-warn-border-color: var(--l-button-warn-bg);
99
- --l-button-warn-border: var(--border-size) var(--border-style) var(--l-button-warn-border-color);
100
- /* warn */
101
- --l-warn-bg: #ffbc04;
102
- --l-warn-border: #b58500;
103
- --l-warn-text: #3f2f00;
104
- /* success */
105
- --l-success-bg: #e6ffed;
106
- --l-success-border: #a3e7c5;
107
- --l-success-text: rgb(29, 69, 29);
108
- /* error */
109
- --l-error-bg: #ffdede;
110
- --l-error-border: #df8888;
111
- --l-error-text: rgb(115, 37, 37);
112
- /* info */
113
- --l-info-bg: #e6f7ff;
114
- --l-info-border: #a3e7ff;
115
- --l-info-text: rgb(29, 69, 69);
116
- /* menu */
117
- --l-menu-bg: #fff;
118
- --l-menu-bg-active: hsl(215, 25%, 90%);
119
- --l-menu-bg-hover: hsl(215, 20%, 95%);
120
- --l-menu-border: var(--l-border-subtle);
121
- --l-menu-text: var(--text);
122
- --l-menu-text-subtle: var(--text-subtle);
123
- --l-menu-text-active: hsl(240, 2%, 15%);
124
- /* status colors */
125
- --l-status-default: hsl(215, 20%, 85%);
126
- --l-status-ok: #28a745;
127
- --l-status-alert: #dc3545;
128
- --l-status-warn: #ffc107;
129
- --l-status-info: #038ac8;
130
- --l-status-task: #007bff;
131
- /* scrollbar */
132
- --l-scrollbar-color: hsl(215, 8%, 70%) hsl(215, 20%, 98%);
133
-
134
- /**
135
- * Dark theme
136
- */
137
- --d-mix-target: hsl(215, 3%, 3%);
138
- /* bg */
139
- --d-bg-app: #121212;
140
- --d-bg-subtle: hsl(215, 3%, 15%);
141
- --d-bg-overlay: rgba(0, 0, 0, 0.85);
142
- --d-shadow: rgba(0, 0, 0, 0.3);
143
- /* border */
144
- --d-border-color: hsl(215, 8%, 30%);
145
- --d-border-subtle-color: hsl(215, 5%, 25%);
146
- --d-focus-color: rgb(77, 144, 254);
147
- --d-focus-color-error: red;
148
- --d-border: var(--border-size) var(--border-style) var(--d-border-color);
149
- --d-border-subtle: var(--border-size) var(--border-style) var(--d-border-subtle-color);
150
- --d-focus-outline: var(--focus-size) solid var(--d-focus-color);
151
- /* text */
152
- --d-text: #ccc;
153
- --d-text-subtle: #a1a1a6;
154
- --d-text-highlight: #4C9AFF;
155
- --d-text-heading: #e1e1e3;
156
- --d-text-link: rgb(77, 144, 254);
157
- --d-text-link-hover: rgb(58, 109, 193);
158
- --d-text-warn: #ff6b6b;
159
- --d-text-icon: #bbb;
160
- --d-text-subtle-icon: #888;
161
- --d-text-warn-icon: #ff6b6b;
162
- /* fields */
163
- --d-field-bg: transparent;
164
- --d-field-border-color: var(--d-border-color);
165
- --d-field-border-color-error: red;
166
- --d-field-border: var(--field-border-size) var(--field-border-style) var(--d-field-border-color);
167
- --d-field-text: var(--d-text);
168
- --d-field-placeholder: #666;
169
- --d-field-label: #ccc;
170
- /* toggle */
171
- --d-toggle-on: #4C9AFF;
172
- --d-toggle-on-hover: #3771c1;
173
- --d-toggle-off: #666;
174
- --d-toggle-off-hover: #888;
175
- /* buttons */
176
- --d-button-bg: #4C9AFF;
177
- --d-button-text: white;
178
- --d-button-border-color: var(--d-button-bg);
179
- --d-button-border: var(--border-size) var(--border-style) var(--d-button-border-color);
180
- /* buttons: disabled */
181
- --d-button-disabled-bg: #555;
182
- --d-button-disabled-text: #333;
183
- --d-button-disabled-border-color: var(--d-button-disabled-bg);
184
- --d-button-disabled-border: var(--border-size) var(--border-style) var(--d-button-disabled-border-color);
185
- /* buttons: outlined */
186
- --d-button-outlined-text: #ccc;
187
- --d-button-outlined-border-color: var(--d-button-outlined-text);
188
- --d-button-outlined-border: var(--border-size) var(--border-style) var(--d-button-outlined-border-color);
189
- /* buttons: secondary (for highlighted actions) */
190
- --d-button-secondary-bg: hsl(146, 67%, 38%);
191
- --d-button-secondary-text: white;
192
- --d-button-secondary-border-color: var(--d-button-secondary-bg);
193
- --d-button-secondary-border: var(--border-size) var(--border-style) var(--d-button-secondary-border-color);
194
- /* buttons: warn */
195
- --d-button-warn-bg: #ff6b6b;
196
- --d-button-warn-text: white;
197
- --d-button-warn-border-color: var(--d-button-warn-bg);
198
- --d-button-warn-border: var(--border-size) var(--border-style) var(--d-button-warn-border-color);
199
- /* warn */
200
- --d-warn-bg: #ffb900;
201
- --d-warn-border: #cc9500;
202
- --d-warn-text: #664d00;
203
- /* success */
204
- --d-success-bg: #4caf50;
205
- --d-success-border: #397d3f;
206
- --d-success-text: #e8f5e9;
207
- /* error */
208
- --d-error-bg: #f44336;
209
- --d-error-border: #d32f2f;
210
- --d-error-text: #ffebee;
211
- /* info */
212
- --d-info-bg: #2196f3;
213
- --d-info-border: #1976d2;
214
- --d-info-text: #e3f2fd;
215
- /* menu */
216
- --d-menu-bg: #2c2c2c;
217
- --d-menu-bg-active: #444;
218
- --d-menu-bg-hover: #444;
219
- --d-menu-border: var(--d-border-subtle);
220
- --d-menu-text: #ccc;
221
- --d-menu-text-active: #fff;
222
- /* status colors */
223
- --d-status-default: hsl(215, 10%, 25%);
224
- --d-status-ok: #4caf50;
225
- --d-status-alert: #f44336;
226
- --d-status-warn: #ffeb3b;
227
- --d-status-info: #0362c8;
228
- --d-status-task: #1e88e5;
229
- --d-scrollbar-color: hsl(215, 10%, 55%) hsla(215, 10%, 35%, 0.5);
230
- }
231
-
232
- @media(min-width: 1280px) {
233
- :root {
234
- --grid-size: 16px;
235
- }
236
- }
237
-
238
- @media(max-width: 1280px) {
239
- :root {
240
- --grid-size: 14px;
241
- }
242
- }
243
-
244
- @media(max-width: 640px) {
245
- :root {
246
- --grid-size: 13px;
247
- }
248
- }
249
-
250
- body {
251
- font-family: var(--font-family);
252
- font-size: 100%;
253
- text-rendering: optimizeLegibility;
254
- -webkit-font-smoothing: antialiased;
255
- -moz-osx-font-smoothing: grayscale;
256
- scrollbar-width: thin;
257
- font-kerning: auto;
258
- min-width: 280px;
259
- overscroll-behavior: none;
260
- }
261
-
262
- body * {
263
- box-sizing: border-box;
264
- margin: 0;
265
- padding: 0;
266
- }
267
-
268
- html:has(.Layout .Theme.dark) {
269
- --scrollbar-color: var(--d-scrollbar-color);
270
- }
271
-
272
- html:has(.Layout .Theme.light) {
273
- --scrollbar-color: var(--l-scrollbar-color);
274
- }
275
-
276
- html, body, .app {
277
- padding: 0;
278
- margin: 0;
279
- inline-size: 100%;
280
- min-block-size: 100%;
281
- block-size: 100%;
282
- scrollbar-width: thin;
283
- scrollbar-color: var(--scrollbar-color);
284
- scrollbar-gutter: stable;
285
- }
286
-
287
- html {
288
- font-size: 1rem;
289
- }
290
-
291
- html, body {
292
- overscroll-behavior-x: none;
293
- }
294
-
295
- input, textarea, select, button {
296
- touch-action: manipulation;
297
- font-family: var(--font-family);
298
- }
299
-
300
- *:focus-visible {
301
- transition: outline 0.1s;
302
- outline: 3px solid var(--focus-color);
303
- outline-offset: 0;
304
- -webkit-outline-offset: 0;
305
- transform: translateZ(0);
306
- }
307
-
308
- .scrollbar {
309
- width: 8px;
310
- height: 100%;
311
- background: transparent;
312
- position: absolute;
313
- top: 0;
314
- right: 0;
315
- z-index: 1000;
316
- }
317
-
318
- .scrollbar .grabber {
319
- width: calc(100% - 2px);
320
- height: 100px;
321
- background: var(--text);
322
- cursor: grab;
323
- border-radius: 9999px;
324
- position: absolute;
325
- left: 1px;
326
- }
327
-
328
- /**
329
- * Typography
330
- */
331
-
332
- h1, h2, h3, h4, h5, h6 {
333
- font-family: var(--font-family);
334
- margin: 0;
335
- color: var(--text-heading);
336
- }
337
-
338
-
339
- /**
340
- * Use system font on iOS devices
341
- */
342
- @supports (font: -apple-system-body) {
343
- body {
344
- font: -apple-system-body;
345
- }
346
- h1, h2, h3, h4, h5, h6 {
347
- font: -apple-system-headline;
348
- }
349
- input, p, li, textarea, select, button {
350
- font: -apple-system-body;
351
- }
352
- }
353
-
354
- h1 {
355
- font-size: 2em;
356
- font-weight: 700;
357
- text-wrap: balance;
358
- }
359
-
360
- h2 {
361
- font-size: 1.75em;
362
- font-weight: 650;
363
- text-wrap: balance;
364
- }
365
-
366
- h3 {
367
- font-size: 1.5em;
368
- font-weight: 650;
369
- }
370
-
371
- h4 {
372
- font-size: 1.25em;
373
- font-weight: 600;
374
- }
375
-
376
- h5 {
377
- font-size: 1em;
378
- line-height: 1.5;
379
- font-weight: 500;
380
- }
381
-
382
- h6 {
383
- font-size: 1em;
384
- line-height: 1.5;
385
- font-weight: 500;
386
- }
387
-
388
- p, th, td, li:not(:has(p)) {
389
- font-size: 1em;
390
- line-height: 1.5;
391
- font-weight: 400;
392
- color: var(--text);
393
- }
394
-
395
- small {
396
- font-size: 0.85em;
397
- line-height: 1.5;
398
- font-weight: 400;
399
- color: var(--text-subtle);
400
- display: block;
401
- }
402
-
403
- strong {
404
- color: var(--text-heading);
405
- font-weight: 500;
406
- }
407
-
408
- code, pre {
409
- font-family: var(--font-family-mono);
410
- font-weight: 400;
411
- }
412
-
413
- hr {
414
- border: 0;
415
- border-top: var(--border);
416
- box-sizing: content-box;
417
- }
418
-
419
- /**
420
- * Links
421
- */
422
-
423
- a {
424
- color: var(--text-link);
425
- text-decoration: none;
426
- }
427
-
428
- a:hover {
429
- color: color-mix(in hsl shorter hue, var(--text-link) var(--mix-amount), var(--mix-target));
430
- }
431
-
432
- /**
433
- * Forms
434
- */
435
-
436
- form {
437
- margin: 0;
438
- padding: 0;
439
- }
440
-
441
- fieldset {
442
- border: 0;
443
- padding: 0;
444
- margin: 0;
445
- border-radius: var(--border-radius);
446
- }
447
-
448
- fieldset.contained {
449
- border: var(--border);
450
- padding: 0.5rem;
451
- }
452
-
453
- fieldset legend {
454
- color: var(--text-heading);
455
- font-weight: 600;
456
- }
457
-
458
- input, textarea, select {
459
- font-size: 1em;
460
- line-height: 1.5;
461
- font-weight: 400;
462
- color: var(--field-text);
463
- background-color: var(--field-bg);
464
- border: var(--field-border);
465
- border-radius: var(--field-radius);
466
- padding: 0.5em 0.75em;
467
- transition: border-color 0.1s;
468
- }
469
-
470
- input:user-invalid {
471
- border-color: var(--field-border-color-error);
472
- }
473
-
474
- input:user-invalid:focus-visible {
475
- outline-color: var(--focus-color-error);
476
- }
477
-
478
- select {
479
- padding-right: 2.25em;
480
- appearance: none;
481
- background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEyIDgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM6c2VyaWY9Imh0dHA6Ly93d3cuc2VyaWYuY29tLyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1LDAsMCwxLDAsMCkiPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwwTDAsMEw4LDhMMTYsMFoiLz4KICAgIDwvZz4KPC9zdmc+Cg==') calc(100% - 0.75em) 50% no-repeat;
482
- background-size: 12px;
483
- }
484
-
485
- input[type="submit"],
486
- input[type="button"] {
487
- cursor: pointer;
488
- }
489
-
490
- input[type="checkbox"] {
491
- border-radius: none;
492
- }
493
-
494
- input[type="checkbox"],
495
- input[type="radio"] {
496
- cursor: pointer;
497
- width: 1.35em;
498
- height: 1.35em;
499
- accent-color: var(--focus-color);
500
- transition: accent-color 0.1s, scale 0.1s;
501
- }
502
-
503
- input[type="checkbox"]:hover,
504
- input[type="radio"]:hover {
505
- border: var(--field-border);
506
- opacity: 1;
507
- }
508
-
509
- input[type="checkbox"]:active,
510
- input[type="radio"]:active {
511
- accent-color: color-mix(in srgb, var(--focus-color) var(--mix-amount), var(--mix-target));
512
- }
513
-
514
- input[type="checkbox"]:focus-visible,
515
- input[type="radio"]:focus-visible {
516
- border: var(--field-border);
517
- }
518
-
519
- label {
520
- color: var(--field-label);
521
- font-size: max(0.85em, 12px);
522
- line-height: 1.5;
523
- font-weight: 500;
524
- display: block;
525
- }
526
-
527
- label:has(+input[type="checkbox"]),
528
- label:has(+input[type="radio"]) {
529
- cursor: pointer;
530
- font-size: 1em;
531
- font-weight: 400;
532
- }
533
-
534
- /**
535
- * Buttons
536
- */
537
-
538
- button {
539
- background: none;
540
- border: none;
541
- padding: 0;
542
- }
543
-
544
- .button,
545
- ::file-selector-button {
546
- font-size: var(--font-size, 1em);
547
- line-height: 1.5;
548
- font-weight: 500;
549
- background-color: var(--button-bg);
550
- color: var(--button-text);
551
- padding: var(--padding, 0.5em 1.3em);
552
- border-radius: var(--field-radius);
553
- border: var(--button-border);
554
- cursor: pointer;
555
- display: inline-flex;
556
- transition: transform 0.1s, background-color 0.1s, color 0.1s, border-color 0.1s, scale 0.1s;
557
- display: inline-flex;
558
- align-items: center;
559
- justify-content: center;
560
- gap: 0.5rem;
561
- }
562
-
563
- .button:hover {
564
- color: var(--button-text);
565
- background-color: color-mix(in srgb, var(--button-bg) var(--mix-amount), var(--mix-target));
566
- border-color: color-mix(in srgb, var(--button-border-color) var(--mix-amount), var(--mix-target));
567
- }
568
-
569
- button:active,
570
- .button:active {
571
- scale: 0.95;
572
- }
573
-
574
- .button.sm {
575
- --font-size: 0.75em;
576
- --padding: 0.35em 0.75em;
577
- }
578
-
579
- .button.lg {
580
- --font-size: 1.15em;
581
- --padding: 0.65em 1.25em;
582
- }
583
-
584
- .button.xl {
585
- --font-size: 1.25em;
586
- --padding: 0.75em 1.5em;
587
- }
588
-
589
- .button.outlined {
590
- background-color: transparent;
591
- color: var(--button-outlined-text);
592
- border: var(--button-outlined-border);
593
- }
594
-
595
- .button.outlined:hover {
596
- border-color: color-mix(in srgb, var(--button-outlined-border-color) 50%, var(--mix-target));
597
- }
598
-
599
- .button.secondary {
600
- background-color: var(--button-secondary-bg);
601
- border: var(--button-secondary-border);
602
- }
603
-
604
- .button.secondary:hover {
605
- background-color: color-mix(in srgb, var(--button-secondary-bg) var(--mix-amount), var(--mix-target));
606
- border-color: color-mix(in srgb, var(--button-secondary-border-color) var(--mix-amount), var(--mix-target));
607
- }
608
-
609
- .button.warn {
610
- background-color: var(--button-warn-bg);
611
- border: var(--button-warn-border);
612
- }
613
-
614
- .button.warn:hover {
615
- background-color: color-mix(in srgb, var(--button-warn-bg) var(--mix-amount), var(--mix-target));
616
- border-color: color-mix(in srgb, var(--button-warn-border-color) var(--mix-amount), var(--mix-target));
617
- }
618
-
619
- @scope (.PageContent) to (.UIContent) {
620
-
621
- .button { margin-block-start: calc(0.5rem * var(--margin-scale, 1)); }
622
- .button.lg { margin-block-start: calc(0.75rem * var(--margin-scale, 1)); }
623
- .button.xl { margin-block-start: calc(1rem * var(--margin-scale, 1)); }
624
- .button:has(+.button) { margin-inline-end: calc(0.5rem * var(--margin-scale, 1)); }
625
- .button.lg:has(+.button) { margin-inline-end: calc(1rem * var(--margin-scale, 1)); }
626
- .button.xl:has(+.button) { margin-inline-end: calc(1.5rem * var(--margin-scale, 1)); }
627
-
628
- p { margin-block: calc(0.75rem * var(--margin-scale, 1)); }
629
- h1 { margin-block: calc(3rem * var(--margin-scale, 1)) calc(1.5rem * var(--margin-scale, 1)); }
630
- h2 { margin-block: calc(3rem * var(--margin-scale, 1)) calc(1.5rem * var(--margin-scale, 1)); }
631
- h1+h2 {
632
- margin-block-start: 0;
633
- }
634
- h1:has(+h2) {
635
- margin-block-end: calc(0.75rem * var(--margin-scale, 1));
636
- }
637
- h3 {
638
- margin-block: calc(2rem * var(--margin-scale, 1)) calc(1.5rem * var(--margin-scale, 1));
639
- }
640
- h3:has(+p, +ul, +ol) {
641
- margin-block-end: calc(0.75rem * var(--margin-scale, 1));
642
- }
643
- h4,
644
- h5 {
645
- margin-block: calc(1.5rem * var(--margin-scale, 1)) calc(0.5rem * var(--margin-scale, 1));
646
- }
647
- p {
648
- hyphens: auto;
649
- }
650
-
651
- ul, ol {
652
- margin-block: calc(1.5rem * var(--margin-scale, 1));
653
- }
654
- ul {
655
- list-style-type: "– ";
656
- list-style-position: outside;
657
- }
658
- li {
659
- margin-block: calc(0.5em * var(--margin-scale, 1));
660
- }
661
- @media(max-width: 960px) {
662
- ul, ol {
663
- list-style-position: inside;
664
- }
665
- ul {
666
- margin-inline-start: 0;
667
- }
668
- ul li:before {
669
- margin-inline-start: calc(0.5rem * var(--margin-scale, 1));
670
- }
671
- }
672
- li p {
673
- margin-block: calc(0.5rem * var(--margin-scale, 1));
674
- }
675
- li:not(:last-child) p:last-child {
676
- margin-block-end: calc(0.85em * var(--margin-scale, 1));
677
- }
678
- ul:has(+p), ol:has(+p) {
679
- margin-block-end: calc(1em * var(--margin-scale, 1));
680
- }
681
-
682
- p+ul, p+ol {
683
- margin-block-start: calc(1em * var(--margin-scale, 1));
684
- }
685
-
686
- h3+p,
687
- h3+ul,
688
- h3+ol {
689
- margin-block-start: calc(1em * var(--margin-scale, 1));
690
- }
691
-
692
- h4+p,
693
- h4+ul,
694
- h4+ol {
695
- margin-block-start: calc(0.75em * var(--margin-scale, 1));
696
- }
697
-
698
- h5+p,
699
- h5+ul,
700
- h5+ol {
701
- margin-block-start: calc(0.5em * var(--margin-scale, 1));
702
- }
703
-
704
- /** Links */
705
- a:hover:not(.button),
706
- a:focus-visible:not(.button) {
707
- text-decoration: underline;
708
- }
709
-
710
- /** Dividers */
711
- hr {
712
- margin-block: calc(2em * var(--margin-scale, 1));
713
- border-top: var(--border-subtle);
714
- }
715
-
716
- /** Code */
717
- p > code,
718
- li > code {
719
- padding: 0.15em 0.35em;
720
- background-color: var(--bg-subtle);
721
- border-radius: var(--border-radius);
722
- border: var(--border-subtle);
723
- color: var(--text);
724
- font-weight: 450;
725
- }
726
- pre {
727
- color: var(--text);
728
- font-size: 1em;
729
- line-height: 1.35;
730
- background-color: var(--bg-subtle);
731
- border-radius: var(--border-radius);
732
- border: var(--border-subtle);
733
- overflow-x: auto;
734
- inline-size: calc(100% + 2rem);
735
- box-sizing: border-box;
736
- display: grid;
737
- margin-block: 1.5rem;
738
- margin-inline: -1rem;
739
- overflow-wrap: break-word;
740
- word-break: break-word;
741
- }
742
- pre code {
743
- box-sizing: border-box;
744
- display: block;
745
- padding: 1rem;
746
- font-weight: 450;
747
- color: var(--text);
748
- box-sizing: border-box;
749
- overflow-x: auto;
750
- width: 100%;
751
- }
752
- :first-child {
753
- margin-block-start: 0;
754
- }
755
- :last-child {
756
- margin-block-end: 0;
757
- }
758
-
759
- /** Tables */
760
- table {
761
- margin-block: calc(1.5em * var(--margin-scale, 1));
762
- border-collapse: collapse;
763
- font-size: var(--font-size, 1em);
764
- }
765
- table.fullWidth {
766
- width: 100%;
767
- }
768
- table.contained {
769
- border: var(--border);
770
- }
771
- table.hang {
772
- margin-inline: -1rem;
773
- inline-size: calc(100% + 2rem);
774
- }
775
- table.sm {
776
- --font-size: 0.85em;
777
- --padding: 0.5rem;
778
- }
779
- table.rounded {
780
- border-radius: var(--border-radius);
781
- overflow: clip;
782
- border-spacing: 0;
783
- }
784
- tr {
785
- border-block-end: var(--border-subtle);
786
- }
787
- th,
788
- td {
789
- font-size: 1em;
790
- line-height: 1.5;
791
- padding: var(--padding, 0.5em 0.75em);
792
- text-align: start;
793
- }
794
- td.actions {
795
- min-width: 0px;
796
- width: 0px;
797
- }
798
- table.hang th:first-of-type,
799
- table.hang td:first-of-type {
800
- padding-inline: 1rem;
801
- }
802
- table.hang th:last-of-type,
803
- table.hang td:last-of-type {
804
- padding-inline: 1rem;
805
- }
806
- th:last-child,
807
- td:last-child {
808
- border-inline-end: none;
809
- }
810
- th {
811
- font-weight: 700;
812
- }
813
- table.colored tbody tr:nth-child(2n) {
814
- background-color: var(--bg-subtle);
815
- }
816
- table.contained th,
817
- table.contained td {
818
- border-inline-end: var(--border-subtle);
819
- }
820
- table tbody tr:last-of-type {
821
- border-block-end: none;
822
- }
823
- table thead tr {
824
- background-color: var(--bg-subtle);
825
- }
826
-
827
- /** Forms */
828
- fieldset label,
829
- fieldset input {
830
- margin-block-end: calc(0.5rem * var(--margin-scale, 1));
831
- }
832
-
833
- /** Blockquote */
834
- blockquote {
835
- margin-block: calc(1.5rem * var(--margin-scale, 1));
836
- padding: 1.5rem 1.5rem;
837
- inline-size: calc(100% + 2rem);
838
- margin-inline: -1rem;
839
- border-inline-start: 4px solid var(--border-subtle-color);
840
- background-color: var(--bg-subtle);
841
- }
842
- }
843
-
844
- @media(prefers-reduced-motion: reduce) {
845
- * {
846
- transition-duration: 0s !important;
847
- }
848
-
849
- button:active,
850
- .button:active {
851
- scale: initial;
852
- }
853
- }