lutra 0.0.33 → 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.
- package/README.md +4 -24
- package/dist/components/AspectRatio.svelte +26 -0
- package/dist/components/AspectRatio.svelte.d.ts +8 -0
- package/dist/components/Dialog.svelte +78 -0
- package/dist/components/Dialog.svelte.d.ts +14 -0
- package/dist/components/Layout.svelte +32 -0
- package/dist/components/Layout.svelte.d.ts +11 -0
- package/dist/components/PageContent.svelte +108 -0
- package/dist/components/PageContent.svelte.d.ts +38 -0
- package/dist/components/Theme.svelte +87 -0
- package/dist/components/Theme.svelte.d.ts +17 -0
- package/dist/{display → components}/Tooltip.svelte +33 -8
- package/dist/components/Tooltip.svelte.d.ts +12 -0
- package/dist/config.d.ts +30 -0
- package/dist/config.js +18 -0
- package/dist/css/0-layers.css +1 -0
- package/dist/css/1-props.css +775 -0
- package/dist/css/2-base.css +209 -0
- package/dist/css/3-typo.css +65 -0
- package/dist/css/4-layout.css +5 -0
- package/dist/css/5-media.css +21 -0
- package/dist/css/lutra.css +6 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +5 -2
- package/dist/types.d.ts +39 -0
- package/dist/types.js +25 -0
- package/package.json +29 -82
- package/dist/color.css +0 -0
- package/dist/display/Avatar.svelte +0 -61
- package/dist/display/Avatar.svelte.d.ts +0 -19
- package/dist/display/Badge.svelte +0 -91
- package/dist/display/Badge.svelte.d.ts +0 -30
- package/dist/display/Callout.svelte +0 -109
- package/dist/display/Callout.svelte.d.ts +0 -28
- package/dist/display/Close.svelte +0 -58
- package/dist/display/Close.svelte.d.ts +0 -18
- package/dist/display/Code.svelte +0 -190
- package/dist/display/Code.svelte.d.ts +0 -32
- package/dist/display/ContextTip.svelte +0 -23
- package/dist/display/ContextTip.svelte.d.ts +0 -18
- package/dist/display/DataList.svelte +0 -16
- package/dist/display/DataList.svelte.d.ts +0 -21
- package/dist/display/Details.svelte +0 -49
- package/dist/display/Details.svelte.d.ts +0 -27
- package/dist/display/Hero.svelte +0 -50
- package/dist/display/Hero.svelte.d.ts +0 -26
- package/dist/display/Icon.svelte +0 -39
- package/dist/display/Icon.svelte.d.ts +0 -19
- package/dist/display/IconButton.svelte +0 -91
- package/dist/display/IconButton.svelte.d.ts +0 -27
- package/dist/display/Image.svelte +0 -91
- package/dist/display/Image.svelte.d.ts +0 -26
- package/dist/display/Indicator.svelte +0 -352
- package/dist/display/Indicator.svelte.d.ts +0 -23
- package/dist/display/Inset.svelte +0 -18
- package/dist/display/Inset.svelte.d.ts +0 -18
- package/dist/display/LineChart.svelte +0 -385
- package/dist/display/LineChart.svelte.d.ts +0 -24
- package/dist/display/LoadingIndicator.svelte +0 -33
- package/dist/display/LoadingIndicator.svelte.d.ts +0 -15
- package/dist/display/Modal.svelte +0 -116
- package/dist/display/Modal.svelte.d.ts +0 -27
- package/dist/display/Notification.svelte +0 -104
- package/dist/display/Notification.svelte.d.ts +0 -23
- package/dist/display/Panel.svelte +0 -23
- package/dist/display/Panel.svelte.d.ts +0 -19
- package/dist/display/Popup.svelte +0 -111
- package/dist/display/Popup.svelte.d.ts +0 -25
- package/dist/display/Stat.svelte +0 -81
- package/dist/display/Stat.svelte.d.ts +0 -30
- package/dist/display/Table.svelte +0 -28
- package/dist/display/Table.svelte.d.ts +0 -24
- package/dist/display/TablePaginator.svelte +0 -51
- package/dist/display/TablePaginator.svelte.d.ts +0 -21
- package/dist/display/Tag.svelte +0 -90
- package/dist/display/Tag.svelte.d.ts +0 -32
- package/dist/display/Tooltip.svelte.d.ts +0 -23
- package/dist/display/chart.d.ts +0 -78
- package/dist/display/chart.js +0 -212
- package/dist/display/index.d.ts +0 -24
- package/dist/display/index.js +0 -24
- package/dist/display/notifications.svelte.d.ts +0 -21
- package/dist/display/notifications.svelte.js +0 -31
- package/dist/form/Button.svelte +0 -39
- package/dist/form/Button.svelte.d.ts +0 -26
- package/dist/form/FieldActions.svelte +0 -68
- package/dist/form/FieldActions.svelte.d.ts +0 -20
- package/dist/form/FieldContainer.svelte +0 -37
- package/dist/form/FieldContainer.svelte.d.ts +0 -19
- package/dist/form/FieldContent.svelte +0 -153
- package/dist/form/FieldContent.svelte.d.ts +0 -31
- package/dist/form/FieldError.svelte +0 -14
- package/dist/form/FieldError.svelte.d.ts +0 -18
- package/dist/form/FieldSection.svelte +0 -86
- package/dist/form/FieldSection.svelte.d.ts +0 -20
- package/dist/form/Fieldset.svelte +0 -68
- package/dist/form/Fieldset.svelte.d.ts +0 -31
- package/dist/form/Form.svelte +0 -136
- package/dist/form/Form.svelte.d.ts +0 -38
- package/dist/form/ImageUpload.svelte +0 -259
- package/dist/form/ImageUpload.svelte.d.ts +0 -31
- package/dist/form/Input.svelte +0 -326
- package/dist/form/Input.svelte.d.ts +0 -117
- package/dist/form/InputLength.svelte +0 -32
- package/dist/form/InputLength.svelte.d.ts +0 -20
- package/dist/form/Label.svelte +0 -44
- package/dist/form/Label.svelte.d.ts +0 -25
- package/dist/form/LogoUpload.svelte +0 -100
- package/dist/form/LogoUpload.svelte.d.ts +0 -29
- package/dist/form/Select.svelte +0 -136
- package/dist/form/Select.svelte.d.ts +0 -70
- package/dist/form/Textarea.svelte +0 -163
- package/dist/form/Textarea.svelte.d.ts +0 -108
- package/dist/form/Toggle.svelte +0 -2
- package/dist/form/Toggle.svelte.d.ts +0 -15
- package/dist/form/client.svelte.d.ts +0 -44
- package/dist/form/client.svelte.js +0 -98
- package/dist/form/form.d.ts +0 -54
- package/dist/form/form.js +0 -340
- package/dist/form/index.d.ts +0 -18
- package/dist/form/index.js +0 -18
- package/dist/form/types.d.ts +0 -62
- package/dist/form/types.js +0 -1
- package/dist/icons/IconAlert.svelte +0 -3
- package/dist/icons/IconAlert.svelte.d.ts +0 -23
- package/dist/icons/IconCopy.svelte +0 -3
- package/dist/icons/IconCopy.svelte.d.ts +0 -23
- package/dist/icons/IconDone.svelte +0 -3
- package/dist/icons/IconDone.svelte.d.ts +0 -23
- package/dist/icons/IconError.svelte +0 -3
- package/dist/icons/IconError.svelte.d.ts +0 -23
- package/dist/icons/IconHelp.svelte +0 -3
- package/dist/icons/IconHelp.svelte.d.ts +0 -23
- package/dist/icons/IconHide.svelte +0 -3
- package/dist/icons/IconHide.svelte.d.ts +0 -23
- package/dist/icons/IconInfo.svelte +0 -3
- package/dist/icons/IconInfo.svelte.d.ts +0 -23
- package/dist/icons/IconLink.svelte +0 -3
- package/dist/icons/IconLink.svelte.d.ts +0 -23
- package/dist/icons/IconMenuBurger.svelte +0 -3
- package/dist/icons/IconMenuBurger.svelte.d.ts +0 -23
- package/dist/icons/IconMenuDots.svelte +0 -3
- package/dist/icons/IconMenuDots.svelte.d.ts +0 -23
- package/dist/icons/IconSearch.svelte +0 -3
- package/dist/icons/IconSearch.svelte.d.ts +0 -23
- package/dist/icons/IconShow.svelte +0 -3
- package/dist/icons/IconShow.svelte.d.ts +0 -23
- package/dist/icons/IconSuccess.svelte +0 -3
- package/dist/icons/IconSuccess.svelte.d.ts +0 -23
- package/dist/icons/IconWarning.svelte +0 -3
- package/dist/icons/IconWarning.svelte.d.ts +0 -23
- package/dist/icons/index.d.ts +0 -14
- package/dist/icons/index.js +0 -14
- package/dist/layout/Layout.svelte +0 -47
- package/dist/layout/Layout.svelte.d.ts +0 -22
- package/dist/layout/LayoutFooter.svelte +0 -21
- package/dist/layout/LayoutFooter.svelte.d.ts +0 -18
- package/dist/layout/LayoutGrid.svelte +0 -51
- package/dist/layout/LayoutGrid.svelte.d.ts +0 -27
- package/dist/layout/LayoutHeader.svelte +0 -97
- package/dist/layout/LayoutHeader.svelte.d.ts +0 -34
- package/dist/layout/LayoutSideMenu.svelte +0 -55
- package/dist/layout/LayoutSideMenu.svelte.d.ts +0 -21
- package/dist/layout/LayoutTypes.d.ts +0 -15
- package/dist/layout/LayoutTypes.js +0 -9
- package/dist/layout/Overlay.svelte +0 -20
- package/dist/layout/Overlay.svelte.d.ts +0 -25
- package/dist/layout/OverlayContainer.svelte +0 -28
- package/dist/layout/OverlayContainer.svelte.d.ts +0 -15
- package/dist/layout/OverlayLayer.svelte +0 -140
- package/dist/layout/OverlayLayer.svelte.d.ts +0 -19
- package/dist/layout/PageContent.svelte +0 -82
- package/dist/layout/PageContent.svelte.d.ts +0 -25
- package/dist/layout/Theme.svelte +0 -243
- package/dist/layout/Theme.svelte.d.ts +0 -19
- package/dist/layout/UIContent.svelte +0 -15
- package/dist/layout/UIContent.svelte.d.ts +0 -18
- package/dist/layout/index.d.ts +0 -11
- package/dist/layout/index.js +0 -11
- package/dist/layout/overlays.svelte.d.ts +0 -34
- package/dist/layout/overlays.svelte.js +0 -44
- package/dist/nav/Breadcrumb.svelte +0 -82
- package/dist/nav/Breadcrumb.svelte.d.ts +0 -28
- package/dist/nav/Menu.svelte +0 -170
- package/dist/nav/Menu.svelte.d.ts +0 -27
- package/dist/nav/MenuItem.svelte +0 -147
- package/dist/nav/MenuItem.svelte.d.ts +0 -22
- package/dist/nav/MenuTypes.d.ts +0 -58
- package/dist/nav/MenuTypes.js +0 -1
- package/dist/nav/NavMenu.svelte +0 -181
- package/dist/nav/NavMenu.svelte.d.ts +0 -19
- package/dist/nav/TabbedContent.svelte +0 -43
- package/dist/nav/TabbedContent.svelte.d.ts +0 -23
- package/dist/nav/Tabs.svelte +0 -158
- package/dist/nav/Tabs.svelte.d.ts +0 -25
- package/dist/nav/index.d.ts +0 -7
- package/dist/nav/index.js +0 -6
- package/dist/style.css +0 -950
- package/dist/typo/Clamp.svelte +0 -25
- package/dist/typo/Clamp.svelte.d.ts +0 -24
- package/dist/typo/H.svelte +0 -52
- package/dist/typo/H.svelte.d.ts +0 -28
- package/dist/typo/H1.svelte +0 -14
- package/dist/typo/H1.svelte.d.ts +0 -26
- package/dist/typo/H2.svelte +0 -14
- package/dist/typo/H2.svelte.d.ts +0 -26
- package/dist/typo/H3.svelte +0 -14
- package/dist/typo/H3.svelte.d.ts +0 -26
- package/dist/typo/H4.svelte +0 -14
- package/dist/typo/H4.svelte.d.ts +0 -26
- package/dist/typo/H5.svelte +0 -14
- package/dist/typo/H5.svelte.d.ts +0 -26
- package/dist/typo/H6.svelte +0 -14
- package/dist/typo/H6.svelte.d.ts +0 -26
- package/dist/typo/P.svelte +0 -34
- package/dist/typo/P.svelte.d.ts +0 -26
- package/dist/typo/index.d.ts +0 -9
- package/dist/typo/index.js +0 -9
- package/dist/utils/StringOrComponent.svelte +0 -14
- package/dist/utils/StringOrComponent.svelte.d.ts +0 -19
- package/dist/utils/StringOrSnippet.svelte +0 -11
- package/dist/utils/StringOrSnippet.svelte.d.ts +0 -19
- package/dist/utils/attr.d.ts +0 -5
- package/dist/utils/attr.js +0 -21
- package/dist/utils/color.d.ts +0 -51
- package/dist/utils/color.js +0 -97
- package/dist/utils/defaults.d.ts +0 -4
- package/dist/utils/defaults.js +0 -1
- package/dist/utils/dom.d.ts +0 -15
- package/dist/utils/dom.js +0 -74
- package/dist/utils/hooks.server.d.ts +0 -2
- package/dist/utils/hooks.server.js +0 -16
- package/dist/utils/id.d.ts +0 -1
- package/dist/utils/id.js +0 -3
- package/dist/utils/index.d.ts +0 -9
- package/dist/utils/index.js +0 -6
- package/dist/utils/isSnippet.d.ts +0 -3
- package/dist/utils/isSnippet.js +0 -11
- package/dist/utils/keyboard.svelte.d.ts +0 -22
- package/dist/utils/keyboard.svelte.js +0 -161
- /package/dist/{utils → util}/transitions.d.ts +0 -0
- /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,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
|
+
*/
|
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
|
-
|
2
|
-
|
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/types.d.ts
ADDED
@@ -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,102 +1,49 @@
|
|
1
1
|
{
|
2
2
|
"name": "lutra",
|
3
|
-
"version": "0.0
|
3
|
+
"version": "0.1.0",
|
4
4
|
"scripts": {
|
5
|
-
"dev": "vite dev
|
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": "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
|
-
"./display": {
|
25
|
-
"types": "./dist/display/index.d.ts",
|
26
|
-
"svelte": "./dist/display/index.js"
|
27
|
-
},
|
28
|
-
"./form": {
|
29
|
-
"types": "./dist/form/index.d.ts",
|
30
|
-
"svelte": "./dist/form/index.js",
|
31
|
-
"import": "./dist/form/index.js"
|
32
|
-
},
|
33
|
-
"./form/types": {
|
34
|
-
"types": "./dist/form/types.d.ts",
|
35
|
-
"import": "./dist/form/types.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": {
|
54
|
-
"types": "./dist/utils/index.d.ts",
|
55
|
-
"svelte": "./dist/utils/index.js"
|
56
|
-
},
|
57
|
-
"./utils/*": "./dist/utils/*"
|
11
|
+
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
|
58
12
|
},
|
59
13
|
"files": [
|
60
14
|
"dist",
|
61
15
|
"!dist/**/*.test.*",
|
62
16
|
"!dist/**/*.spec.*"
|
63
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
|
+
},
|
64
30
|
"peerDependencies": {
|
65
|
-
"
|
66
|
-
"svelte": "^4.0.0"
|
31
|
+
"svelte": "^5.0.0"
|
67
32
|
},
|
68
33
|
"devDependencies": {
|
69
|
-
"@
|
70
|
-
"@
|
71
|
-
"@sveltejs/
|
72
|
-
"@sveltejs/
|
73
|
-
"@
|
74
|
-
"
|
75
|
-
"
|
76
|
-
"
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"monaco-editor": "^0.51.0",
|
80
|
-
"prettier": "^3.3.3",
|
81
|
-
"prettier-plugin-svelte": "^3.2.6",
|
82
|
-
"publint": "^0.2.10",
|
83
|
-
"svelte": "5.0.0-next.243",
|
84
|
-
"svelte-check": "^4.0.0",
|
85
|
-
"tslib": "^2.7.0",
|
86
|
-
"typescript": "^5.5.4",
|
87
|
-
"vite": "5.4.3",
|
88
|
-
"vitest": "2.0.5"
|
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"
|
89
44
|
},
|
90
|
-
"svelte": "./dist/index.js",
|
91
|
-
"types": "./dist/index.d.ts",
|
92
|
-
"type": "module",
|
93
45
|
"dependencies": {
|
94
|
-
"
|
95
|
-
"
|
96
|
-
"blurhash": "^2.0.5",
|
97
|
-
"browser-image-compression": "^2.0.2",
|
98
|
-
"esm-env": "^1.0.0",
|
99
|
-
"ws": "^8.18.0",
|
100
|
-
"zod": "^3.23.8"
|
46
|
+
"esm-env": "^1.2.2",
|
47
|
+
"marked": "^15.0.12"
|
101
48
|
}
|
102
49
|
}
|
package/dist/color.css
DELETED
File without changes
|
@@ -1,61 +0,0 @@
|
|
1
|
-
<script lang="ts">import { hexRelativeLuminance, stringToColor } from "../utils/color.js";
|
2
|
-
let {
|
3
|
-
src,
|
4
|
-
name = "N/A",
|
5
|
-
shape = "circle"
|
6
|
-
} = $props();
|
7
|
-
const color = stringToColor(name);
|
8
|
-
const luminance = hexRelativeLuminance(color);
|
9
|
-
const textColor = luminance < 0.5 ? "rgba(255,255,255,0.85)" : "rgba(0,0,0,0.85)";
|
10
|
-
</script>
|
11
|
-
|
12
|
-
<figure class="Avatar {shape}" style="--user-color: {color}; --text-color: {textColor};">
|
13
|
-
{#if src}
|
14
|
-
<img src={src} alt={name} />
|
15
|
-
{:else}
|
16
|
-
<div class="Placeholder">
|
17
|
-
<span>{name[0]}</span>
|
18
|
-
</div>
|
19
|
-
{/if}
|
20
|
-
</figure>
|
21
|
-
|
22
|
-
<style>
|
23
|
-
.Avatar {
|
24
|
-
display: flex;
|
25
|
-
align-items: center;
|
26
|
-
justify-content: center;
|
27
|
-
margin: 0;
|
28
|
-
block-size: var(--size, 3rem);
|
29
|
-
inline-size: var(--size, 3rem);
|
30
|
-
overflow: hidden;
|
31
|
-
background-color: var(--user-color);
|
32
|
-
mask-image: var(--mask-image, none);
|
33
|
-
mask-size: 100% 100%;
|
34
|
-
mask-repeat: no-repeat;
|
35
|
-
-webkit-mask-image: var(--mask-image, none);
|
36
|
-
-webkit-mask-size: 100% 100%;
|
37
|
-
-webkit-mask-repeat: no-repeat;
|
38
|
-
}
|
39
|
-
.Avatar.circle { border-radius: 50%; }
|
40
|
-
.Avatar.square { border-radius: 0; }
|
41
|
-
.Avatar.rounded { border-radius: var(--border-radius); }
|
42
|
-
.Avatar img {
|
43
|
-
block-size: 100%;
|
44
|
-
inline-size: 100%;
|
45
|
-
object-fit: cover;
|
46
|
-
}
|
47
|
-
.Avatar .Placeholder {
|
48
|
-
display: flex;
|
49
|
-
align-items: center;
|
50
|
-
justify-content: center;
|
51
|
-
block-size: 100%;
|
52
|
-
inline-size: 100%;
|
53
|
-
background-color: var(--user-color);
|
54
|
-
}
|
55
|
-
.Avatar .Placeholder span {
|
56
|
-
font-size: 1rem;
|
57
|
-
font-weight: 600;
|
58
|
-
color: var(--text-color);
|
59
|
-
user-select: none;
|
60
|
-
}
|
61
|
-
</style>
|
@@ -1,19 +0,0 @@
|
|
1
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
3
|
-
$$bindings?: Bindings;
|
4
|
-
} & Exports;
|
5
|
-
(internal: unknown, props: Props & {
|
6
|
-
$$events?: Events;
|
7
|
-
$$slots?: Slots;
|
8
|
-
}): Exports;
|
9
|
-
z_$$bindings?: Bindings;
|
10
|
-
}
|
11
|
-
declare const Avatar: $$__sveltets_2_IsomorphicComponent<{
|
12
|
-
src?: string;
|
13
|
-
name?: string;
|
14
|
-
shape?: "circle" | "square" | "rounded";
|
15
|
-
}, {
|
16
|
-
[evt: string]: CustomEvent<any>;
|
17
|
-
}, {}, {}, "">;
|
18
|
-
type Avatar = InstanceType<typeof Avatar>;
|
19
|
-
export default Avatar;
|