@liqvid/studio 1.0.0-alpha.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/LICENSE +9 -0
- package/dist/esm/LiqvidDevToolsProvider.js +49 -0
- package/dist/esm/api/contract.mjs +48 -0
- package/dist/esm/api/project-meta.mjs +33 -0
- package/dist/esm/api/recording.mjs +156 -0
- package/dist/esm/api/root.mjs +4 -0
- package/dist/esm/api/static-file.mjs +82 -0
- package/dist/esm/api/types.mjs +1 -0
- package/dist/esm/client.mjs +98 -0
- package/dist/esm/conventions.mjs +3 -0
- package/dist/esm/index.mjs +20 -0
- package/dist/esm/initialize.mjs +50 -0
- package/dist/esm/jobs/watch-assets.mjs +99 -0
- package/dist/esm/jobs/watch-project-files.mjs +216 -0
- package/dist/esm/next/api.mjs +48 -0
- package/dist/esm/next/page.js +15 -0
- package/dist/esm/pages/NewProjectButton.js +62 -0
- package/dist/esm/pages/RebuildButton.js +24 -0
- package/dist/esm/pages/root-actions.js +151 -0
- package/dist/esm/pages/root.js +25 -0
- package/dist/esm/pages/root.module.css +326 -0
- package/dist/esm/palette.css +279 -0
- package/dist/esm/providers/hosting/github-pages.mjs +10 -0
- package/dist/esm/providers/hosting/liqvid-studio.mjs +8 -0
- package/dist/esm/providers/hosting/s3.mjs +9 -0
- package/dist/esm/providers/hosting/sftp.mjs +22 -0
- package/dist/esm/providers/index.mjs +10 -0
- package/dist/esm/providers/social/bluesky.mjs +8 -0
- package/dist/esm/providers/social/facebook.mjs +8 -0
- package/dist/esm/providers/social/instagram.mjs +8 -0
- package/dist/esm/providers/social/twitter.mjs +7 -0
- package/dist/esm/providers/social/youtube.mjs +7 -0
- package/dist/esm/providers/types.mjs +1 -0
- package/dist/esm/publish.mjs +37 -0
- package/dist/esm/recording/RecordingControl.js +110 -0
- package/dist/esm/recording/RecordingControl.module.css +0 -0
- package/dist/esm/recording/RecordingDialog.js +114 -0
- package/dist/esm/recording/RecordingDialog.module.css +194 -0
- package/dist/esm/schemas/liqvid-config.mjs +32 -0
- package/dist/esm/schemas/project.mjs +27 -0
- package/dist/esm/schemas/recording-meta.mjs +11 -0
- package/dist/esm/types/assets.mjs +1 -0
- package/dist/esm/types.mjs +12 -0
- package/dist/esm/ui/Dialog.js +71 -0
- package/dist/esm/ui/DockableDialog.js +131 -0
- package/dist/esm/ui/DockableDialog.module.css +63 -0
- package/dist/esm/ui/RadioTabs.js +13 -0
- package/dist/esm/ui/RadioTabs.module.css +54 -0
- package/dist/esm/ui/Tabs.js +29 -0
- package/dist/esm/ui/Tabs.module.css +31 -0
- package/dist/esm/ui/Toast.js +64 -0
- package/dist/esm/ui/Toast.module.css +50 -0
- package/dist/esm/ui/Toaster.js +13 -0
- package/dist/esm/ui/Toaster.module.css +9 -0
- package/dist/esm/ui/test.js +14 -0
- package/dist/esm/utils/dom.mjs +6 -0
- package/dist/esm/utils/fs.mjs +94 -0
- package/dist/esm/utils/misc.mjs +15 -0
- package/dist/esm/utils/react.mjs +8 -0
- package/dist/esm/utils/rsync.mjs +57 -0
- package/dist/templates/project.json.hbs +5 -0
- package/dist/templates/projects/code/page.tsx.hbs +23 -0
- package/dist/templates/projects/code/src/assets.ts.hbs +9 -0
- package/dist/templates/projects/code/src/client.tsx.hbs +22 -0
- package/dist/templates/projects/code/src/helpers.ts.hbs +21 -0
- package/dist/templates/projects/code/src/highlights.ts.hbs +3 -0
- package/dist/templates/projects/code/src/markers.ts.hbs +13 -0
- package/dist/templates/projects/code/src/project.ts.hbs +23 -0
- package/dist/templates/projects/code/template.json +3 -0
- package/dist/templates/projects/default/page.tsx.hbs +23 -0
- package/dist/templates/projects/default/src/assets.ts.hbs +9 -0
- package/dist/templates/projects/default/src/client.tsx.hbs +22 -0
- package/dist/templates/projects/default/src/helpers.ts.hbs +21 -0
- package/dist/templates/projects/default/src/highlights.ts.hbs +3 -0
- package/dist/templates/projects/default/src/markers.ts.hbs +13 -0
- package/dist/templates/projects/default/src/project.ts.hbs +23 -0
- package/dist/templates/projects/default/template.json +4 -0
- package/dist/templates/types.ts.hbs +20 -0
- package/dist/types/LiqvidDevToolsProvider.d.ts +12 -0
- package/dist/types/api/contract.d.mts +66 -0
- package/dist/types/api/project-meta.d.mts +1 -0
- package/dist/types/api/recording.d.mts +5 -0
- package/dist/types/api/root.d.mts +1 -0
- package/dist/types/api/static-file.d.mts +6 -0
- package/dist/types/api/types.d.mts +1 -0
- package/dist/types/client.d.mts +43 -0
- package/dist/types/conventions.d.mts +3 -0
- package/dist/types/index.d.mts +19 -0
- package/dist/types/initialize.d.mts +14 -0
- package/dist/types/jobs/watch-assets.d.mts +18 -0
- package/dist/types/jobs/watch-project-files.d.mts +4 -0
- package/dist/types/next/api.d.mts +14 -0
- package/dist/types/next/page.d.ts +4 -0
- package/dist/types/pages/NewProjectButton.d.ts +1 -0
- package/dist/types/pages/RebuildButton.d.ts +1 -0
- package/dist/types/pages/root-actions.d.ts +29 -0
- package/dist/types/pages/root.d.ts +1 -0
- package/dist/types/providers/hosting/github-pages.d.mts +11 -0
- package/dist/types/providers/hosting/liqvid-studio.d.mts +10 -0
- package/dist/types/providers/hosting/s3.d.mts +11 -0
- package/dist/types/providers/hosting/sftp.d.mts +13 -0
- package/dist/types/providers/index.d.mts +10 -0
- package/dist/types/providers/social/bluesky.d.mts +10 -0
- package/dist/types/providers/social/facebook.d.mts +10 -0
- package/dist/types/providers/social/instagram.d.mts +10 -0
- package/dist/types/providers/social/twitter.d.mts +9 -0
- package/dist/types/providers/social/youtube.d.mts +9 -0
- package/dist/types/providers/types.d.mts +9 -0
- package/dist/types/publish.d.mts +1 -0
- package/dist/types/recording/RecordingControl.d.ts +16 -0
- package/dist/types/recording/RecordingDialog.d.ts +10 -0
- package/dist/types/schemas/liqvid-config.d.mts +51 -0
- package/dist/types/schemas/project.d.mts +51 -0
- package/dist/types/schemas/recording-meta.d.mts +17 -0
- package/dist/types/types/assets.d.mts +3 -0
- package/dist/types/types.d.mts +20 -0
- package/dist/types/ui/Dialog.d.ts +31 -0
- package/dist/types/ui/DockableDialog.d.ts +25 -0
- package/dist/types/ui/RadioTabs.d.ts +18 -0
- package/dist/types/ui/Tabs.d.ts +9 -0
- package/dist/types/ui/Toast.d.ts +23 -0
- package/dist/types/ui/Toaster.d.ts +6 -0
- package/dist/types/ui/test.d.ts +9 -0
- package/dist/types/utils/dom.d.mts +3 -0
- package/dist/types/utils/fs.d.mts +32 -0
- package/dist/types/utils/misc.d.mts +4 -0
- package/dist/types/utils/react.d.mts +5 -0
- package/dist/types/utils/rsync.d.mts +10 -0
- package/package.json +94 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
.main {
|
|
2
|
+
color-scheme: light dark;
|
|
3
|
+
margin: 0 auto;
|
|
4
|
+
padding: 80px;
|
|
5
|
+
width: 48rem;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.headerRow {
|
|
9
|
+
align-items: center;
|
|
10
|
+
display: flex;
|
|
11
|
+
gap: 1rem;
|
|
12
|
+
margin-bottom: 1rem;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.header {
|
|
16
|
+
font-weight: bold;
|
|
17
|
+
font-size: 3.75rem;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.rebuildButton {
|
|
21
|
+
background: light-dark(#f0f0f0, #333);
|
|
22
|
+
border: 1px solid light-dark(#ccc, #555);
|
|
23
|
+
border-radius: 4px;
|
|
24
|
+
color: light-dark(#333, #fff);
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
font-size: 0.875rem;
|
|
27
|
+
padding: 0.5rem 1rem;
|
|
28
|
+
transition: background-color 0.15s;
|
|
29
|
+
|
|
30
|
+
&:hover:not(:disabled) {
|
|
31
|
+
background: light-dark(#e0e0e0, #444);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&:disabled {
|
|
35
|
+
cursor: not-allowed;
|
|
36
|
+
opacity: 0.6;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.projectList {
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-direction: column;
|
|
43
|
+
gap: 1rem;
|
|
44
|
+
|
|
45
|
+
> li {
|
|
46
|
+
display: flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
border-radius: 4px;
|
|
49
|
+
border: 1px solid light-dark(#eee, #333);
|
|
50
|
+
font-size: 1rem;
|
|
51
|
+
|
|
52
|
+
> :link {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex: 1;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: 1rem;
|
|
57
|
+
padding: 0.5rem;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.thumbnail {
|
|
63
|
+
border-radius: 4px;
|
|
64
|
+
display: flex;
|
|
65
|
+
position: relative;
|
|
66
|
+
width: 9rem;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.duration {
|
|
70
|
+
/* position */
|
|
71
|
+
bottom: 0;
|
|
72
|
+
position: absolute;
|
|
73
|
+
right: 0;
|
|
74
|
+
|
|
75
|
+
/* background/borders/padding */
|
|
76
|
+
background: #0001;
|
|
77
|
+
border-radius: 2px 0 0 0;
|
|
78
|
+
padding: 4px 4px;
|
|
79
|
+
|
|
80
|
+
/* text */
|
|
81
|
+
color: #fff;
|
|
82
|
+
font-size: 10px;
|
|
83
|
+
line-height: 1;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.actions {
|
|
87
|
+
padding: 0.5rem 1rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.productionLink {
|
|
91
|
+
margin-left: auto;
|
|
92
|
+
color: light-dark(#666, #999);
|
|
93
|
+
font-size: 0.875rem;
|
|
94
|
+
text-decoration: none;
|
|
95
|
+
text-align: right;
|
|
96
|
+
width: min-content;
|
|
97
|
+
|
|
98
|
+
&:hover {
|
|
99
|
+
color: light-dark(#333, #fff);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.newProjectButton {
|
|
104
|
+
background: light-dark(#2563eb, #3b82f6);
|
|
105
|
+
border: 1px solid light-dark(#1d4ed8, #2563eb);
|
|
106
|
+
border-radius: 4px;
|
|
107
|
+
color: #fff;
|
|
108
|
+
cursor: pointer;
|
|
109
|
+
font-size: 0.875rem;
|
|
110
|
+
font-weight: 500;
|
|
111
|
+
padding: 0.5rem 1rem;
|
|
112
|
+
transition: background-color 0.15s;
|
|
113
|
+
|
|
114
|
+
&:hover:not(:disabled) {
|
|
115
|
+
background: light-dark(#1d4ed8, #2563eb);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&:disabled {
|
|
119
|
+
cursor: not-allowed;
|
|
120
|
+
opacity: 0.6;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.dialogOverlay {
|
|
125
|
+
background: rgb(0 0 0 / 0.5);
|
|
126
|
+
inset: 0;
|
|
127
|
+
position: fixed;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.dialog {
|
|
131
|
+
background: light-dark(#fff, #1f1f1f);
|
|
132
|
+
border: 1px solid light-dark(#e5e5e5, #333);
|
|
133
|
+
border-radius: 8px;
|
|
134
|
+
box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
|
|
135
|
+
color: light-dark(#1f1f1f, #fff);
|
|
136
|
+
left: 50%;
|
|
137
|
+
max-width: 28rem;
|
|
138
|
+
padding: 1.5rem;
|
|
139
|
+
position: fixed;
|
|
140
|
+
top: 50%;
|
|
141
|
+
transform: translate(-50%, -50%);
|
|
142
|
+
width: calc(100% - 2rem);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.dialogForm {
|
|
146
|
+
display: flex;
|
|
147
|
+
flex-direction: column;
|
|
148
|
+
gap: 1.25rem;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.dialogTitle {
|
|
152
|
+
font-size: 1.25rem;
|
|
153
|
+
font-weight: 600;
|
|
154
|
+
margin: 0;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.formField {
|
|
158
|
+
display: flex;
|
|
159
|
+
flex-direction: column;
|
|
160
|
+
gap: 0.375rem;
|
|
161
|
+
|
|
162
|
+
label {
|
|
163
|
+
font-size: 0.875rem;
|
|
164
|
+
font-weight: 500;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
input {
|
|
168
|
+
background: light-dark(#fff, #2a2a2a);
|
|
169
|
+
border: 1px solid light-dark(#d1d5db, #4b5563);
|
|
170
|
+
border-radius: 4px;
|
|
171
|
+
color: inherit;
|
|
172
|
+
font-size: 0.875rem;
|
|
173
|
+
padding: 0.5rem 0.75rem;
|
|
174
|
+
|
|
175
|
+
&:focus {
|
|
176
|
+
border-color: light-dark(#2563eb, #3b82f6);
|
|
177
|
+
outline: 2px solid light-dark(#2563eb, #3b82f6);
|
|
178
|
+
outline-offset: 1px;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
&:disabled {
|
|
182
|
+
background: light-dark(#f3f4f6, #1a1a1a);
|
|
183
|
+
cursor: not-allowed;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.fieldHint {
|
|
189
|
+
color: light-dark(#6b7280, #9ca3af);
|
|
190
|
+
font-size: 0.75rem;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.error {
|
|
194
|
+
background: light-dark(#fef2f2, #450a0a);
|
|
195
|
+
border: 1px solid light-dark(#fecaca, #7f1d1d);
|
|
196
|
+
border-radius: 4px;
|
|
197
|
+
color: light-dark(#dc2626, #fca5a5);
|
|
198
|
+
font-size: 0.875rem;
|
|
199
|
+
padding: 0.5rem 0.75rem;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.dialogActions {
|
|
203
|
+
display: flex;
|
|
204
|
+
gap: 0.75rem;
|
|
205
|
+
justify-content: flex-end;
|
|
206
|
+
margin-top: 0.5rem;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.cancelButton {
|
|
210
|
+
background: light-dark(#f3f4f6, #374151);
|
|
211
|
+
border: 1px solid light-dark(#d1d5db, #4b5563);
|
|
212
|
+
border-radius: 4px;
|
|
213
|
+
color: light-dark(#374151, #f3f4f6);
|
|
214
|
+
cursor: pointer;
|
|
215
|
+
font-size: 0.875rem;
|
|
216
|
+
padding: 0.5rem 1rem;
|
|
217
|
+
transition: background-color 0.15s;
|
|
218
|
+
|
|
219
|
+
&:hover:not(:disabled) {
|
|
220
|
+
background: light-dark(#e5e7eb, #4b5563);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
&:disabled {
|
|
224
|
+
cursor: not-allowed;
|
|
225
|
+
opacity: 0.6;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.submitButton {
|
|
230
|
+
background: light-dark(#2563eb, #3b82f6);
|
|
231
|
+
border: 1px solid light-dark(#1d4ed8, #2563eb);
|
|
232
|
+
border-radius: 4px;
|
|
233
|
+
color: #fff;
|
|
234
|
+
cursor: pointer;
|
|
235
|
+
font-size: 0.875rem;
|
|
236
|
+
font-weight: 500;
|
|
237
|
+
padding: 0.5rem 1rem;
|
|
238
|
+
transition: background-color 0.15s;
|
|
239
|
+
|
|
240
|
+
&:hover:not(:disabled) {
|
|
241
|
+
background: light-dark(#1d4ed8, #2563eb);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
&:disabled {
|
|
245
|
+
cursor: not-allowed;
|
|
246
|
+
opacity: 0.6;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* Select (Base UI) */
|
|
251
|
+
.selectTrigger {
|
|
252
|
+
align-items: center;
|
|
253
|
+
background: light-dark(#fff, #2a2a2a);
|
|
254
|
+
border: 1px solid light-dark(#d1d5db, #4b5563);
|
|
255
|
+
border-radius: 4px;
|
|
256
|
+
color: inherit;
|
|
257
|
+
cursor: pointer;
|
|
258
|
+
display: flex;
|
|
259
|
+
font-size: 0.875rem;
|
|
260
|
+
gap: 0.5rem;
|
|
261
|
+
justify-content: space-between;
|
|
262
|
+
padding: 0.5rem 0.75rem;
|
|
263
|
+
|
|
264
|
+
&:focus {
|
|
265
|
+
border-color: light-dark(#2563eb, #3b82f6);
|
|
266
|
+
outline: 2px solid light-dark(#2563eb, #3b82f6);
|
|
267
|
+
outline-offset: 1px;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
&:disabled {
|
|
271
|
+
background: light-dark(#f3f4f6, #1a1a1a);
|
|
272
|
+
cursor: not-allowed;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.selectIcon {
|
|
277
|
+
color: light-dark(#6b7280, #9ca3af);
|
|
278
|
+
display: flex;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.selectContent {
|
|
282
|
+
background: light-dark(#fff, #2a2a2a);
|
|
283
|
+
border: 1px solid light-dark(#d1d5db, #4b5563);
|
|
284
|
+
border-radius: 4px;
|
|
285
|
+
box-shadow:
|
|
286
|
+
0 10px 38px -10px rgb(0 0 0 / 0.35),
|
|
287
|
+
0 10px 20px -15px rgb(0 0 0 / 0.2);
|
|
288
|
+
overflow: hidden;
|
|
289
|
+
z-index: 100;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.selectViewport {
|
|
293
|
+
padding: 0.25rem;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.selectItem {
|
|
297
|
+
align-items: center;
|
|
298
|
+
border-radius: 3px;
|
|
299
|
+
color: light-dark(#1f1f1f, #fff);
|
|
300
|
+
cursor: pointer;
|
|
301
|
+
display: flex;
|
|
302
|
+
font-size: 0.875rem;
|
|
303
|
+
gap: 0.5rem;
|
|
304
|
+
padding: 0.5rem 0.75rem;
|
|
305
|
+
padding-right: 2rem;
|
|
306
|
+
position: relative;
|
|
307
|
+
user-select: none;
|
|
308
|
+
|
|
309
|
+
&:focus {
|
|
310
|
+
background: light-dark(#f3f4f6, #374151);
|
|
311
|
+
outline: none;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
&[data-highlighted] {
|
|
315
|
+
background: light-dark(#f3f4f6, #374151);
|
|
316
|
+
outline: none;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.selectItemIndicator {
|
|
321
|
+
align-items: center;
|
|
322
|
+
display: flex;
|
|
323
|
+
justify-content: center;
|
|
324
|
+
position: absolute;
|
|
325
|
+
right: 0.5rem;
|
|
326
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* accent */
|
|
3
|
+
--accent-app: light-dark(#fffcfd, #180e11);
|
|
4
|
+
--accent-subtle: light-dark(#fef7f9, #221217);
|
|
5
|
+
--accent-ui: light-dark(#ffe9f0, #3d0f24);
|
|
6
|
+
--accent-hover: light-dark(#fddce7, #55002d);
|
|
7
|
+
--accent-active: light-dark(#f8cfdc, #660138);
|
|
8
|
+
--accent-sep: light-dark(#f1c0d0, #771245);
|
|
9
|
+
--accent-focus: light-dark(#e8adc1, #922257);
|
|
10
|
+
--accent-sep-hover: light-dark(#de95b0, #bd2b72);
|
|
11
|
+
--accent-solid: light-dark(#af1866, #af1866);
|
|
12
|
+
--accent-solid-hover: light-dark(#9e0058, #922257);
|
|
13
|
+
--accent-dim: light-dark(#c22f75, #ff89bc);
|
|
14
|
+
--accent-normal: light-dark(#62193a, #ffcee2);
|
|
15
|
+
|
|
16
|
+
--accent-a1: #ff005503;
|
|
17
|
+
--accent-a2: #e0004008;
|
|
18
|
+
--accent-a3: #ff005216;
|
|
19
|
+
--accent-a4: #f1005123;
|
|
20
|
+
--accent-a5: #da004630;
|
|
21
|
+
--accent-a6: #c700413f;
|
|
22
|
+
--accent-a7: #b8003f52;
|
|
23
|
+
--accent-a8: #b001416a;
|
|
24
|
+
--accent-a9: #a70056e7;
|
|
25
|
+
--accent-a10: #9e0058;
|
|
26
|
+
--accent-a11: #b40056d0;
|
|
27
|
+
--accent-a12: #510025e6;
|
|
28
|
+
|
|
29
|
+
--accent-contrast: #fff;
|
|
30
|
+
--accent-surface: #fef5f8cc;
|
|
31
|
+
--accent-indicator: #af1866;
|
|
32
|
+
--accent-track: #af1866;
|
|
33
|
+
|
|
34
|
+
/* gray */
|
|
35
|
+
--gray-app: light-dark(#fcfcfd, #111113);
|
|
36
|
+
--gray-subtle: light-dark(#f9f9fb, #19191b);
|
|
37
|
+
--gray-ui: light-dark(#eff0f3, #222325);
|
|
38
|
+
--gray-hover: light-dark(#e7e8ec, #292a2e);
|
|
39
|
+
--gray-active: light-dark(#e0e1e6, #303136);
|
|
40
|
+
--gray-sep: light-dark(#d8d9e0, #393a40);
|
|
41
|
+
--gray-focus: light-dark(#cdced7, #46484f);
|
|
42
|
+
--gray-sep-hover: light-dark(#b9bbc6, #5f606a);
|
|
43
|
+
--gray-solid: light-dark(#8b8d98, #6c6e79);
|
|
44
|
+
--gray-solid-hover: light-dark(#80828d, #797b86);
|
|
45
|
+
--gray-dim: light-dark(#62636c, #b2b3bd);
|
|
46
|
+
--gray-normal: light-dark(#1e1f24, #eeeef0);
|
|
47
|
+
|
|
48
|
+
--gray-a1: #00005503;
|
|
49
|
+
--gray-a2: #00005506;
|
|
50
|
+
--gray-a3: #00104010;
|
|
51
|
+
--gray-a4: #000b3618;
|
|
52
|
+
--gray-a5: #0009321f;
|
|
53
|
+
--gray-a6: #00073527;
|
|
54
|
+
--gray-a7: #00063332;
|
|
55
|
+
--gray-a8: #00083046;
|
|
56
|
+
--gray-a9: #00051d74;
|
|
57
|
+
--gray-a10: #00051b7f;
|
|
58
|
+
--gray-a11: #0002119d;
|
|
59
|
+
--gray-a12: #000107e1;
|
|
60
|
+
|
|
61
|
+
--gray-contrast: #ffffff;
|
|
62
|
+
--gray-surface: #ffffffcc;
|
|
63
|
+
--gray-indicator: #8b8d98;
|
|
64
|
+
--gray-track: #8b8d98;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.dark,
|
|
68
|
+
.dark-theme {
|
|
69
|
+
--accent-a1: #f1001208;
|
|
70
|
+
--accent-a2: #f61f6213;
|
|
71
|
+
--accent-a3: #fb077630;
|
|
72
|
+
--accent-a4: #ff007349;
|
|
73
|
+
--accent-a5: #fd007e5c;
|
|
74
|
+
--accent-a6: #fd13896e;
|
|
75
|
+
--accent-a7: #fe30918b;
|
|
76
|
+
--accent-a8: #fe3596b9;
|
|
77
|
+
--accent-a9: #fe1b90aa;
|
|
78
|
+
--accent-a10: #fe30918b;
|
|
79
|
+
--accent-a11: #ff89bc;
|
|
80
|
+
--accent-a12: #ffcee2;
|
|
81
|
+
|
|
82
|
+
--accent-contrast: #fff;
|
|
83
|
+
--accent-surface: #33131d80;
|
|
84
|
+
--accent-indicator: #af1866;
|
|
85
|
+
--accent-track: #af1866;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.dark,
|
|
89
|
+
.dark-theme {
|
|
90
|
+
--gray-a1: #1111bb03;
|
|
91
|
+
--gray-a2: #cbcbf90b;
|
|
92
|
+
--gray-a3: #d6e2f916;
|
|
93
|
+
--gray-a4: #d1d9f920;
|
|
94
|
+
--gray-a5: #d7ddfd28;
|
|
95
|
+
--gray-a6: #d9defc33;
|
|
96
|
+
--gray-a7: #dae2fd43;
|
|
97
|
+
--gray-a8: #e0e3fd60;
|
|
98
|
+
--gray-a9: #e0e4fd70;
|
|
99
|
+
--gray-a10: #e3e7fd7e;
|
|
100
|
+
--gray-a11: #eff0feb9;
|
|
101
|
+
--gray-a12: #fdfdffef;
|
|
102
|
+
|
|
103
|
+
--gray-contrast: #ffffff;
|
|
104
|
+
--gray-surface: rgba(0, 0, 0, 0.05);
|
|
105
|
+
--gray-indicator: #6c6e79;
|
|
106
|
+
--gray-track: #6c6e79;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* fancy color spaces */
|
|
110
|
+
|
|
111
|
+
@supports (color: color(display-p3 1 1 1)) {
|
|
112
|
+
@media (color-gamut: p3) {
|
|
113
|
+
:root,
|
|
114
|
+
.light,
|
|
115
|
+
.light-theme {
|
|
116
|
+
--accent-app: oklch(99.4% 0.0032 356.4);
|
|
117
|
+
--accent-subtle: oklch(98.2% 0.0078 356.4);
|
|
118
|
+
--accent-ui: oklch(95.4% 0.0244 356.4);
|
|
119
|
+
--accent-hover: oklch(92.5% 0.038 356.4);
|
|
120
|
+
--accent-active: oklch(89.3% 0.0496 356.4);
|
|
121
|
+
--accent-sep: oklch(85.5% 0.0602 356.4);
|
|
122
|
+
--accent-focus: oklch(80.8% 0.0738 356.4);
|
|
123
|
+
--accent-sep-hover: oklch(75.1% 0.0937 356.4);
|
|
124
|
+
--accent-solid: oklch(50% 0.1909 356.4);
|
|
125
|
+
--accent-solid-hover: oklch(45% 0.1909 356.4);
|
|
126
|
+
--accent-dim: oklch(55.4% 0.1909 356.4);
|
|
127
|
+
--accent-normal: oklch(34.4% 0.1096 356.4);
|
|
128
|
+
|
|
129
|
+
--accent-a1: color(display-p3 0.6745 0.0235 0.349 / 0.012);
|
|
130
|
+
--accent-a2: color(display-p3 0.7569 0.0196 0.2667 / 0.032);
|
|
131
|
+
--accent-a3: color(display-p3 0.8118 0.0078 0.2941 / 0.083);
|
|
132
|
+
--accent-a4: color(display-p3 0.7961 0.0078 0.298 / 0.134);
|
|
133
|
+
--accent-a5: color(display-p3 0.698 0.0039 0.2431 / 0.181);
|
|
134
|
+
--accent-a6: color(display-p3 0.6431 0.0039 0.2353 / 0.24);
|
|
135
|
+
--accent-a7: color(display-p3 0.6039 0.0039 0.2157 / 0.314);
|
|
136
|
+
--accent-a8: color(display-p3 0.5765 0.0039 0.2235 / 0.404);
|
|
137
|
+
--accent-a9: color(display-p3 0.5569 0 0.2784 / 0.836);
|
|
138
|
+
--accent-a10: color(display-p3 0.5137 0 0.2588 / 0.891);
|
|
139
|
+
--accent-a11: color(display-p3 0.6118 0 0.2863 / 0.765);
|
|
140
|
+
--accent-a12: color(display-p3 0.2627 0 0.1176 / 0.879);
|
|
141
|
+
|
|
142
|
+
--accent-contrast: #fff;
|
|
143
|
+
--accent-surface: color(display-p3 0.9922 0.9608 0.9725 / 0.8);
|
|
144
|
+
--accent-indicator: oklch(50% 0.1909 356.4);
|
|
145
|
+
--accent-track: oklch(50% 0.1909 356.4);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@supports (color: color(display-p3 1 1 1)) {
|
|
151
|
+
@media (color-gamut: p3) {
|
|
152
|
+
:root,
|
|
153
|
+
.light,
|
|
154
|
+
.light-theme {
|
|
155
|
+
--gray-app: oklch(99.1% 0.0015 277.7);
|
|
156
|
+
--gray-subtle: oklch(98.2% 0.003 277.7);
|
|
157
|
+
--gray-ui: oklch(95.6% 0.0045 277.7);
|
|
158
|
+
--gray-hover: oklch(93.1% 0.0061 277.7);
|
|
159
|
+
--gray-active: oklch(91% 0.0077 277.7);
|
|
160
|
+
--gray-sep: oklch(88.8% 0.0093 277.7);
|
|
161
|
+
--gray-focus: oklch(85.3% 0.0117 277.7);
|
|
162
|
+
--gray-sep-hover: oklch(79.4% 0.016 277.7);
|
|
163
|
+
--gray-solid: oklch(64.6% 0.0165 277.7);
|
|
164
|
+
--gray-solid-hover: oklch(61% 0.0161 277.7);
|
|
165
|
+
--gray-dim: oklch(50.3% 0.0139 277.7);
|
|
166
|
+
--gray-normal: oklch(24.1% 0.0099 277.7);
|
|
167
|
+
|
|
168
|
+
--gray-a1: color(display-p3 0.0235 0.0235 0.349 / 0.012);
|
|
169
|
+
--gray-a2: color(display-p3 0.0235 0.0235 0.349 / 0.024);
|
|
170
|
+
--gray-a3: color(display-p3 0.0078 0.0667 0.2549 / 0.063);
|
|
171
|
+
--gray-a4: color(display-p3 0.0118 0.051 0.2157 / 0.095);
|
|
172
|
+
--gray-a5: color(display-p3 0.0039 0.0392 0.2 / 0.122);
|
|
173
|
+
--gray-a6: color(display-p3 0.0039 0.0275 0.1804 / 0.153);
|
|
174
|
+
--gray-a7: color(display-p3 0.0078 0.0275 0.1843 / 0.197);
|
|
175
|
+
--gray-a8: color(display-p3 0.0039 0.0314 0.1765 / 0.275);
|
|
176
|
+
--gray-a9: color(display-p3 0.0039 0.0196 0.1059 / 0.455);
|
|
177
|
+
--gray-a10: color(display-p3 0.0039 0.0196 0.098 / 0.499);
|
|
178
|
+
--gray-a11: color(display-p3 0 0.0078 0.0588 / 0.616);
|
|
179
|
+
--gray-a12: color(display-p3 0 0.0039 0.0275 / 0.883);
|
|
180
|
+
|
|
181
|
+
--gray-contrast: #ffffff;
|
|
182
|
+
--gray-surface: color(display-p3 1 1 1 / 80%);
|
|
183
|
+
--gray-indicator: oklch(64.6% 0.0165 277.7);
|
|
184
|
+
--gray-track: oklch(64.6% 0.0165 277.7);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@supports (color: color(display-p3 1 1 1)) {
|
|
190
|
+
@media (color-gamut: p3) {
|
|
191
|
+
.dark,
|
|
192
|
+
.dark-theme {
|
|
193
|
+
--accent-app: oklch(17.8% 0.0184 356.4);
|
|
194
|
+
--accent-subtle: oklch(20.5% 0.0285 356.4);
|
|
195
|
+
--accent-ui: oklch(25.5% 0.0766 356.4);
|
|
196
|
+
--accent-hover: oklch(29.3% 0.1216 356.4);
|
|
197
|
+
--accent-active: oklch(33.2% 0.1346 356.4);
|
|
198
|
+
--accent-sep: oklch(38.2% 0.1401 356.4);
|
|
199
|
+
--accent-focus: oklch(45% 0.1546 356.4);
|
|
200
|
+
--accent-sep-hover: oklch(54.2% 0.1909 356.4);
|
|
201
|
+
--accent-solid: oklch(50% 0.1909 356.4);
|
|
202
|
+
--accent-solid-hover: oklch(45% 0.1546 356.4);
|
|
203
|
+
--accent-dim: oklch(78.7% 0.1909 356.4);
|
|
204
|
+
--accent-normal: oklch(90.9% 0.0697 356.4);
|
|
205
|
+
|
|
206
|
+
--accent-a1: color(display-p3 0.9608 0 0.0667 / 0.022);
|
|
207
|
+
--accent-a2: color(display-p3 0.9882 0.1922 0.4353 / 0.064);
|
|
208
|
+
--accent-a3: color(display-p3 1 0.0941 0.498 / 0.164);
|
|
209
|
+
--accent-a4: color(display-p3 0.9961 0 0.4863 / 0.253);
|
|
210
|
+
--accent-a5: color(display-p3 0.9961 0.0431 0.5294 / 0.32);
|
|
211
|
+
--accent-a6: color(display-p3 1 0.1922 0.5843 / 0.387);
|
|
212
|
+
--accent-a7: color(display-p3 1 0.2824 0.6157 / 0.492);
|
|
213
|
+
--accent-a8: color(display-p3 1 0.3059 0.6353 / 0.66);
|
|
214
|
+
--accent-a9: color(display-p3 0.9961 0.2275 0.6078 / 0.606);
|
|
215
|
+
--accent-a10: color(display-p3 1 0.2824 0.6157 / 0.492);
|
|
216
|
+
--accent-a11: color(display-p3 1 0.5961 0.7765 / 0.933);
|
|
217
|
+
--accent-a12: color(display-p3 0.9961 0.8392 0.9098 / 0.967);
|
|
218
|
+
|
|
219
|
+
--accent-contrast: #fff;
|
|
220
|
+
--accent-surface: color(display-p3 0.1725 0.0706 0.1098 / 0.5);
|
|
221
|
+
--accent-indicator: oklch(50% 0.1909 356.4);
|
|
222
|
+
--accent-track: oklch(50% 0.1909 356.4);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
@supports (color: color(display-p3 1 1 1)) {
|
|
228
|
+
@media (color-gamut: p3) {
|
|
229
|
+
.dark,
|
|
230
|
+
.dark-theme {
|
|
231
|
+
--gray-app: oklch(17.8% 0.0042 277.7);
|
|
232
|
+
--gray-subtle: oklch(21.5% 0.004 277.7);
|
|
233
|
+
--gray-ui: oklch(25.5% 0.0055 277.7);
|
|
234
|
+
--gray-hover: oklch(28.4% 0.0075 277.7);
|
|
235
|
+
--gray-active: oklch(31.4% 0.0089 277.7);
|
|
236
|
+
--gray-sep: oklch(35% 0.01 277.7);
|
|
237
|
+
--gray-focus: oklch(40.2% 0.0121 277.7);
|
|
238
|
+
--gray-sep-hover: oklch(49.2% 0.0157 277.7);
|
|
239
|
+
--gray-solid: oklch(54% 0.0167 277.7);
|
|
240
|
+
--gray-solid-hover: oklch(58.6% 0.0165 277.7);
|
|
241
|
+
--gray-dim: oklch(77% 0.0138 277.7);
|
|
242
|
+
--gray-normal: oklch(94.9% 0.0026 277.7);
|
|
243
|
+
|
|
244
|
+
--gray-a1: color(display-p3 0.0667 0.0667 0.9412 / 0.009);
|
|
245
|
+
--gray-a2: color(display-p3 0.8 0.8 0.9804 / 0.043);
|
|
246
|
+
--gray-a3: color(display-p3 0.851 0.898 0.9882 / 0.085);
|
|
247
|
+
--gray-a4: color(display-p3 0.8392 0.8706 1 / 0.122);
|
|
248
|
+
--gray-a5: color(display-p3 0.8471 0.8745 1 / 0.156);
|
|
249
|
+
--gray-a6: color(display-p3 0.8784 0.898 1 / 0.194);
|
|
250
|
+
--gray-a7: color(display-p3 0.8745 0.9059 0.9961 / 0.257);
|
|
251
|
+
--gray-a8: color(display-p3 0.8941 0.9059 1 / 0.37);
|
|
252
|
+
--gray-a9: color(display-p3 0.8902 0.9098 1 / 0.433);
|
|
253
|
+
--gray-a10: color(display-p3 0.902 0.9176 1 / 0.488);
|
|
254
|
+
--gray-a11: color(display-p3 0.9451 0.949 1 / 0.719);
|
|
255
|
+
--gray-a12: color(display-p3 0.9922 0.9922 1 / 0.937);
|
|
256
|
+
|
|
257
|
+
--gray-contrast: #ffffff;
|
|
258
|
+
--gray-surface: color(display-p3 0 0 0 / 5%);
|
|
259
|
+
--gray-indicator: oklch(54% 0.0167 277.7);
|
|
260
|
+
--gray-track: oklch(54% 0.0167 277.7);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.lv-studio-button {
|
|
266
|
+
background-color: var(--accent-ui);
|
|
267
|
+
border-radius: 3px;
|
|
268
|
+
cursor: pointer;
|
|
269
|
+
font-size: 14px;
|
|
270
|
+
padding: 4px 8px;
|
|
271
|
+
|
|
272
|
+
&:hover {
|
|
273
|
+
background-color: var(--accent-hover);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
&:active {
|
|
277
|
+
background-color: var(--accent-active);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const ProviderConfigGitHubPages = z.object({
|
|
3
|
+
repository: z.string(),
|
|
4
|
+
root: z.boolean().optional(),
|
|
5
|
+
username: z.string(),
|
|
6
|
+
});
|
|
7
|
+
export class GitHubPagesProvider {
|
|
8
|
+
// constructor(_options: ProviderConfigGitHubPages) {}
|
|
9
|
+
async publishContent() { }
|
|
10
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { rsyncRemoteDirectory } from "../../utils/rsync.mjs";
|
|
3
|
+
export const ProviderConfigSFTP = z.object({
|
|
4
|
+
host: z.string(),
|
|
5
|
+
path: z.string(),
|
|
6
|
+
});
|
|
7
|
+
export class SFTPProvider {
|
|
8
|
+
#host;
|
|
9
|
+
#path;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.#host = options.host;
|
|
12
|
+
this.#path = options.path;
|
|
13
|
+
}
|
|
14
|
+
async publishContent(localDir) {
|
|
15
|
+
await rsyncRemoteDirectory({
|
|
16
|
+
host: this.#host,
|
|
17
|
+
localDir,
|
|
18
|
+
remoteDir: this.#path,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async publishMedia(_localDir) { }
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GitHubPagesProvider } from "./hosting/github-pages.mjs";
|
|
2
|
+
import { LiqvidStudioProvider } from "./hosting/liqvid-studio.mjs";
|
|
3
|
+
import { S3Provider } from "./hosting/s3.mjs";
|
|
4
|
+
import { SFTPProvider } from "./hosting/sftp.mjs";
|
|
5
|
+
export const providersMap = {
|
|
6
|
+
githubPages: GitHubPagesProvider,
|
|
7
|
+
liqvidStudio: LiqvidStudioProvider,
|
|
8
|
+
s3: S3Provider,
|
|
9
|
+
sftp: SFTPProvider,
|
|
10
|
+
};
|