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
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Base DOM setup
3
+ */
4
+ :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));
14
+ }
15
+
16
+ body {
17
+ text-rendering: optimizeLegibility;
18
+ -webkit-font-smoothing: antialiased;
19
+ -moz-osx-font-smoothing: grayscale;
20
+ overscroll-behavior: none;
21
+ overscroll-behavior-x: none;
22
+ font-family: var(--font-family);
23
+ padding: 0;
24
+ margin: 0;
25
+ min-width: 280px;
26
+ width: 100%;
27
+ min-height: 0;
28
+ }
29
+
30
+ body * {
31
+ margin: 0;
32
+ padding: 0;
33
+ box-sizing: border-box;
34
+ }
35
+
36
+ html {
37
+ color-scheme: light dark;
38
+ }
39
+
40
+ input, textarea, select, button {
41
+ touch-action: manipulation;
42
+ -webkit-appearance: none;
43
+ -moz-appearance: none;
44
+ appearance: none;
45
+ }
46
+
47
+ 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);
55
+ }
56
+
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);
67
+ }
68
+
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);
74
+ }
75
+
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);
81
+ }
82
+
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);
87
+ }
88
+
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);
93
+ }
94
+
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);
99
+ }
100
+
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);
105
+ }
106
+
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);
111
+ }
112
+
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
+ }
118
+
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);
123
+ }
124
+
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);
129
+ }
130
+
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);
135
+ }
136
+
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);
141
+ }
142
+
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);
147
+ }
148
+
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);
153
+ }
154
+
155
+ input::placeholder, textarea::placeholder, select::placeholder {
156
+ color: var(--field-placeholder-color);
157
+ }
158
+
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);
165
+ }
166
+
167
+ a {
168
+ color: var(--text-color-link);
169
+ text-decoration: var(--text-link-decoration);
170
+ }
171
+
172
+ a:hover {
173
+ color: var(--text-color-link-hover);
174
+ text-decoration: var(--text-link-decoration-hover);
175
+ }
176
+
177
+ a:active {
178
+ color: var(--text-color-link-active);
179
+ }
180
+
181
+ a:visited {
182
+ color: var(--text-color-link-visited);
183
+ }
184
+
185
+ pre, code {
186
+ font-family: var(--font-family-mono);
187
+ }
188
+
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;
196
+ }
197
+
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);
203
+ }
204
+
205
+ pre code {
206
+ padding: 0;
207
+ background-color: transparent;
208
+ border: none;
209
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Base typography setup
3
+ */
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);
12
+ }
13
+
14
+ p, li, h6, h5, h4, h3, h2, h1, li, input, textarea, select, button {
15
+ line-height: var(--line-height);
16
+ }
17
+
18
+ p, li {
19
+ color: var(--text-color);
20
+ }
21
+
22
+ input, textarea, select, button {
23
+ 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);
27
+ }
28
+
29
+ small {
30
+ color: var(--text-color-subtle);
31
+ }
32
+
33
+ h6, h5, h4, h3, h2, h1 {
34
+ color: var(--text-color-heading);
35
+ }
36
+
37
+ h6 {
38
+ font-size: calc(var(--font-size-base) * var(--font-size-ratio));
39
+ font-weight: var(--font-weight-medium);
40
+ }
41
+
42
+ h5 {
43
+ font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 2));
44
+ font-weight: var(--font-weight-semibold);
45
+ }
46
+
47
+ h4 {
48
+ font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 3));
49
+ font-weight: var(--font-weight-semibold);
50
+ }
51
+
52
+ h3 {
53
+ font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 4));
54
+ font-weight: var(--font-weight-bold);
55
+ }
56
+
57
+ h2 {
58
+ font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 5));
59
+ font-weight: var(--font-weight-bold);
60
+ }
61
+
62
+ h1 {
63
+ font-size: calc(var(--font-size-base) * pow(var(--font-size-ratio), 6));
64
+ font-weight: var(--font-weight-bold);
65
+ }
@@ -0,0 +1,5 @@
1
+ @scope (.PageContent) to (.UIContent) {
2
+ p {
3
+ margin-bottom: calc(var(--margin-base) * var(--margin-multiplier));
4
+ }
5
+ }
@@ -0,0 +1,21 @@
1
+ @media(prefers-reduced-motion: reduce) {
2
+ * {
3
+ transition-duration: 0s !important;
4
+ }
5
+ }
6
+
7
+ /*
8
+ @media(max-width: 1280px) {
9
+ :root {
10
+ --font-size-base: 14px;
11
+ --space-ratio: 1.2;
12
+ }
13
+ }
14
+
15
+ @media(max-width: 640px) {
16
+ :root {
17
+ --font-size-base: 12px;
18
+ --space-ratio: 1.1;
19
+ }
20
+ }
21
+ */
@@ -0,0 +1,6 @@
1
+ @import "./0-layers.css";
2
+ @import "./1-props.css";
3
+ @import "./2-base.css" layer(l-base);
4
+ @import "./3-typo.css" layer(l-typo);
5
+ @import "./4-layout.css" layer(l-layout);
6
+ @import "./5-media.css" layer(l-media);
package/dist/index.d.ts CHANGED
@@ -1 +1,5 @@
1
- export {};
1
+ export { default as AspectRatio } from './components/AspectRatio.svelte';
2
+ export { default as Dialog } from './components/Dialog.svelte';
3
+ export { default as Layout } from './components/Layout.svelte';
4
+ export { default as Theme } from './components/Theme.svelte';
5
+ export { default as PageContent } from './components/PageContent.svelte';
package/dist/index.js CHANGED
@@ -1,2 +1,5 @@
1
- "use strict";
2
- // Reexport your entry components here
1
+ export { default as AspectRatio } from './components/AspectRatio.svelte';
2
+ export { default as Dialog } from './components/Dialog.svelte';
3
+ export { default as Layout } from './components/Layout.svelte';
4
+ export { default as Theme } from './components/Theme.svelte';
5
+ export { default as PageContent } from './components/PageContent.svelte';
@@ -0,0 +1,39 @@
1
+ export interface LutraConfig {
2
+ /**
3
+ * The default theme to use.
4
+ */
5
+ theme?: 'light' | 'dark' | 'auto' | 'inherit';
6
+ /**
7
+ * Theme color for the theme-color meta tag. Only used in the root theme.
8
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name/theme-color
9
+ */
10
+ themeColor: {
11
+ light?: string;
12
+ dark?: string;
13
+ };
14
+ /**
15
+ * Whether to show a background color or image on the components.
16
+ */
17
+ background?: boolean;
18
+ /**
19
+ * Whether to use a contained layout (with borders and rounded corners).
20
+ */
21
+ contained?: boolean;
22
+ }
23
+ /**
24
+ * Default Lutra config.
25
+ */
26
+ export declare const defaultConfig: LutraConfig;
27
+ export declare const setConfig: (config: Partial<LutraConfig>) => void;
28
+ export declare enum LutraContext {
29
+ Theme = "lutra.theme",
30
+ Config = "lutra.config",
31
+ SecChPrefersColorScheme = "sec-ch-prefers-color-scheme"
32
+ }
33
+ export type LutraTheme = 'light' | 'dark' | 'invert' | undefined;
34
+ export type LutraContextTypeMap = {
35
+ [LutraContext.Theme]: LutraTheme;
36
+ [LutraContext.Config]: LutraConfig;
37
+ [LutraContext.SecChPrefersColorScheme]: 'light' | 'dark' | undefined;
38
+ };
39
+ export declare function getContextItem<K extends keyof LutraContextTypeMap>(key: K): LutraContextTypeMap[K] | undefined;
package/dist/types.js ADDED
@@ -0,0 +1,25 @@
1
+ import { getContext } from "svelte";
2
+ /**
3
+ * Default Lutra config.
4
+ */
5
+ export const defaultConfig = {
6
+ theme: undefined,
7
+ themeColor: {
8
+ light: '#fff',
9
+ dark: '#000',
10
+ },
11
+ background: true,
12
+ contained: true,
13
+ };
14
+ export const setConfig = (config) => {
15
+ Object.assign(config, config);
16
+ };
17
+ export var LutraContext;
18
+ (function (LutraContext) {
19
+ LutraContext["Theme"] = "lutra.theme";
20
+ LutraContext["Config"] = "lutra.config";
21
+ LutraContext["SecChPrefersColorScheme"] = "sec-ch-prefers-color-scheme";
22
+ })(LutraContext || (LutraContext = {}));
23
+ export function getContextItem(key) {
24
+ return getContext(key);
25
+ }
package/package.json CHANGED
@@ -1,95 +1,49 @@
1
1
  {
2
2
  "name": "lutra",
3
- "version": "0.0.20",
3
+ "version": "0.1.0",
4
4
  "scripts": {
5
- "dev": "vite dev --host 0.0.0.0",
6
- "props": "node read_props.js",
7
- "local": "node local",
5
+ "dev": "vite dev",
8
6
  "build": "vite build && npm run package",
9
7
  "preview": "vite preview",
10
- "package": "npm run props && svelte-kit sync && svelte-package && publint",
8
+ "package": "svelte-kit sync && svelte-package && publint",
11
9
  "prepublishOnly": "npm run package",
12
- "test": "npm run test:integration && npm run test:unit",
13
10
  "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
14
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
15
- "format": "prettier --write .",
16
- "test:integration": "playwright test",
17
- "test:unit": "vitest"
18
- },
19
- "exports": {
20
- ".": {
21
- "types": "./dist/index.d.ts",
22
- "svelte": "./dist/index.js"
23
- },
24
- "./data": {
25
- "types": "./dist/data/index.d.ts",
26
- "svelte": "./dist/data/index.js"
27
- },
28
- "./display": {
29
- "types": "./dist/display/index.d.ts",
30
- "svelte": "./dist/display/index.js"
31
- },
32
- "./form": {
33
- "types": "./dist/form/index.d.ts",
34
- "svelte": "./dist/form/index.js",
35
- "import": "./dist/form/index.js"
36
- },
37
- "./icons": {
38
- "types": "./dist/icons/index.d.ts",
39
- "svelte": "./dist/icons/index.js"
40
- },
41
- "./layout": {
42
- "types": "./dist/layout/index.d.ts",
43
- "svelte": "./dist/layout/index.js"
44
- },
45
- "./nav": {
46
- "types": "./dist/nav/index.d.ts",
47
- "svelte": "./dist/nav/index.js"
48
- },
49
- "./typo": {
50
- "types": "./dist/typo/index.d.ts",
51
- "svelte": "./dist/typo/index.js"
52
- },
53
- "./utils/*": "./dist/utils/*"
11
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
54
12
  },
55
13
  "files": [
56
14
  "dist",
57
15
  "!dist/**/*.test.*",
58
16
  "!dist/**/*.spec.*"
59
17
  ],
18
+ "sideEffects": [
19
+ "**/*.css"
20
+ ],
21
+ "svelte": "./dist/index.js",
22
+ "types": "./dist/index.d.ts",
23
+ "type": "module",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "svelte": "./dist/index.js"
28
+ }
29
+ },
60
30
  "peerDependencies": {
61
- "@sveltejs/kit": "^2.5.0",
62
- "svelte": "^4.0.0"
31
+ "svelte": "^5.0.0"
63
32
  },
64
33
  "devDependencies": {
65
- "@playwright/test": "^1.43.1",
66
- "@rollup/browser": "^4.17.2",
67
- "@sveltejs/adapter-auto": "^3.2.0",
68
- "@sveltejs/package": "^2.3.1",
69
- "@sveltejs/vite-plugin-svelte": "^3.1.0",
70
- "@types/glob": "8.1.0",
71
- "glob": "^10.3.12",
72
- "highlight.js": "^11.9.0",
73
- "mdsvex": "^0.11.0",
74
- "monaco-editor": "^0.48.0",
75
- "prettier": "^3.2.5",
76
- "prettier-plugin-svelte": "^3.2.3",
77
- "publint": "^0.2.7",
78
- "svelte": "next",
79
- "svelte-check": "^3.7.0",
80
- "tslib": "^2.6.2",
81
- "typescript": "^5.4.5",
82
- "vite": "5.2.10",
83
- "vitest": "1.5.3"
34
+ "@sveltejs/adapter-auto": "^6.0.1",
35
+ "@sveltejs/kit": "^2.21.1",
36
+ "@sveltejs/package": "^2.3.11",
37
+ "@sveltejs/vite-plugin-svelte": "^5.0.3",
38
+ "@types/node": "^22.15.24",
39
+ "publint": "^0.3.12",
40
+ "svelte": "^5.33.9",
41
+ "svelte-check": "^4.2.1",
42
+ "typescript": "^5.8.3",
43
+ "vite": "^6.3.5"
84
44
  },
85
- "svelte": "./dist/index.js",
86
- "types": "./dist/index.d.ts",
87
- "type": "module",
88
45
  "dependencies": {
89
- "@auth70/bodyguard": "^1.6.2",
90
- "@auth70/zodex-esm": "^0.7.3",
91
- "blurhash": "^2.0.5",
92
- "esm-env": "^1.0.0",
93
- "zod": "^3.23.5"
46
+ "esm-env": "^1.2.2",
47
+ "marked": "^15.0.12"
94
48
  }
95
49
  }
@@ -1,89 +0,0 @@
1
- <script lang="ts">import { getStatusColorVar, isStatusColor } from "../utils/color.js";
2
- import { isSnippet } from "../utils/isSnippet.js";
3
- let {
4
- title,
5
- value,
6
- prefix,
7
- suffix,
8
- color,
9
- formatter
10
- } = $props();
11
- let colorVar = $derived(getStatusColorVar(color, "var(--bg-app)"));
12
- let _value = $derived.by(() => {
13
- if (typeof value === "number" && formatter?.constructor === Intl.NumberFormat) {
14
- console.log("value is number and formatter is object");
15
- return formatter.format(value);
16
- } else if (value instanceof Date && formatter?.constructor === Intl.DateTimeFormat) {
17
- console.log("value is date and formatter is object");
18
- return formatter.format(value);
19
- } else if (typeof value === "number") {
20
- console.log("value is number");
21
- return value.toLocaleString();
22
- } else if (typeof value === "string") {
23
- console.log("value is string");
24
- return value;
25
- } else if (value instanceof Date) {
26
- console.log("value is date");
27
- return value.toLocaleDateString();
28
- }
29
- if (typeof formatter === "function") {
30
- console.log("formatter is function");
31
- return formatter(value);
32
- }
33
- return value;
34
- });
35
- </script>
36
-
37
- <section class="Stat" style="--bgColor: {colorVar};">
38
- {#if title}
39
- <header>{title}</header>
40
- {/if}
41
- <main>
42
- {#if prefix}
43
- {#if typeof prefix === "string"}
44
- <span class="Fix Prefix">{prefix}</span>
45
- {:else if isSnippet(prefix)}
46
- {@render prefix()}
47
- {:else}
48
- <svlte:component this={prefix} />
49
- {/if}
50
- {/if}
51
- {_value}
52
- {#if suffix}
53
- {#if typeof suffix === "string"}
54
- <span class="Fix Suffix">{suffix}</span>
55
- {:else if isSnippet(suffix)}
56
- {@render suffix()}
57
- {:else}
58
- <svlte:component this={suffix} />
59
- {/if}
60
- {/if}
61
- </main>
62
- </section>
63
-
64
- <style>
65
- .Stat {
66
- display: grid;
67
- grid-template-rows: auto 1fr;
68
- align-items: center;
69
- gap: 0.75rem;
70
- padding: 1rem;
71
- margin-inline: -1rem;
72
- margin-block: -1rem;
73
- background-color: var(--bgColor);
74
- }
75
- header {
76
- font-size: max(0.9em, 11px);
77
- font-weight: 500;
78
- opacity: 0.75;
79
- color: var(--bgColor);
80
- filter: url(#bwFilter);
81
- }
82
- main {
83
- font-size: 1.5em;
84
- opacity: 0.95;
85
- font-weight: 700;
86
- color: var(--bgColor);
87
- filter: url(#bwFilter);
88
- }
89
- </style>
@@ -1,39 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { ComponentType } from "svelte";
3
- import { type StatusColorOrString } from "../utils/color.js";
4
- declare const __propDef: {
5
- props: {
6
- title?: string | undefined;
7
- value?: string | number | Date | undefined;
8
- prefix?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
9
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
10
- }) | ComponentType | undefined;
11
- suffix?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
12
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
13
- }) | ComponentType | undefined;
14
- color?: StatusColorOrString | undefined;
15
- formatter?: Intl.NumberFormat | Intl.DateTimeFormat | ((value: number | string | Date | undefined) => string) | undefined;
16
- };
17
- events: {
18
- [evt: string]: CustomEvent<any>;
19
- };
20
- slots: {};
21
- };
22
- export type StatProps = typeof __propDef.props;
23
- export type StatEvents = typeof __propDef.events;
24
- export type StatSlots = typeof __propDef.slots;
25
- export default class Stat extends SvelteComponent<StatProps, StatEvents, StatSlots> {
26
- constructor(options?: import("svelte").ComponentConstructorOptions<{
27
- title?: string | undefined;
28
- value?: string | number | Date | undefined;
29
- prefix?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
30
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
31
- }) | ComponentType | undefined;
32
- suffix?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
33
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
34
- }) | ComponentType | undefined;
35
- color?: StatusColorOrString | undefined;
36
- formatter?: Intl.NumberFormat | Intl.DateTimeFormat | ((value: string | number | Date | undefined) => string) | undefined;
37
- }>);
38
- }
39
- export {};
@@ -1 +0,0 @@
1
- export { default as Stat } from './Stat.svelte';
@@ -1 +0,0 @@
1
- export { default as Stat } from './Stat.svelte';