@tutorialkit-rb/astro 0.1.4

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 (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -0
  3. package/dist/default/components/DownloadButton.tsx +44 -0
  4. package/dist/default/components/HeadTags.astro +3 -0
  5. package/dist/default/components/LoginButton.tsx +55 -0
  6. package/dist/default/components/Logo.astro +30 -0
  7. package/dist/default/components/MainContainer.astro +86 -0
  8. package/dist/default/components/MetaTags.astro +44 -0
  9. package/dist/default/components/MobileContentToggle.astro +44 -0
  10. package/dist/default/components/NavCard.astro +23 -0
  11. package/dist/default/components/NavWrapper.tsx +11 -0
  12. package/dist/default/components/OpenInStackblitzLink.tsx +37 -0
  13. package/dist/default/components/PageLoadingIndicator.astro +66 -0
  14. package/dist/default/components/ResizablePanel.astro +247 -0
  15. package/dist/default/components/ThemeSwitch.tsx +24 -0
  16. package/dist/default/components/TopBar.astro +20 -0
  17. package/dist/default/components/TopBarWrapper.astro +30 -0
  18. package/dist/default/components/TutorialContent.astro +48 -0
  19. package/dist/default/components/WorkspacePanelWrapper.tsx +25 -0
  20. package/dist/default/components/setup.ts +20 -0
  21. package/dist/default/components/webcontainer.ts +46 -0
  22. package/dist/default/env-default.d.ts +19 -0
  23. package/dist/default/layouts/Layout.astro +98 -0
  24. package/dist/default/pages/[...slug].astro +39 -0
  25. package/dist/default/pages/index.astro +25 -0
  26. package/dist/default/stores/auth-store.ts +6 -0
  27. package/dist/default/stores/theme-store.ts +32 -0
  28. package/dist/default/stores/view-store.ts +5 -0
  29. package/dist/default/styles/base.css +11 -0
  30. package/dist/default/styles/markdown.css +400 -0
  31. package/dist/default/styles/panel.css +7 -0
  32. package/dist/default/styles/variables.css +396 -0
  33. package/dist/default/utils/constants.ts +6 -0
  34. package/dist/default/utils/content/files-ref.ts +25 -0
  35. package/dist/default/utils/content/squash.ts +37 -0
  36. package/dist/default/utils/content.ts +446 -0
  37. package/dist/default/utils/logger.ts +56 -0
  38. package/dist/default/utils/logo.ts +17 -0
  39. package/dist/default/utils/nav.ts +65 -0
  40. package/dist/default/utils/publicAsset.ts +27 -0
  41. package/dist/default/utils/routes.ts +34 -0
  42. package/dist/default/utils/url.ts +22 -0
  43. package/dist/default/utils/workspace.ts +31 -0
  44. package/dist/index.d.ts +57 -0
  45. package/dist/index.js +972 -0
  46. package/dist/integrations.d.ts +10 -0
  47. package/dist/remark/callouts.d.ts +3 -0
  48. package/dist/remark/import-file.d.ts +7 -0
  49. package/dist/remark/index.d.ts +2 -0
  50. package/dist/types.d.ts +9 -0
  51. package/dist/utils.d.ts +2 -0
  52. package/dist/vite-plugins/core.d.ts +2 -0
  53. package/dist/vite-plugins/css.d.ts +4 -0
  54. package/dist/vite-plugins/override-components.d.ts +78 -0
  55. package/dist/vite-plugins/store.d.ts +2 -0
  56. package/dist/webcontainer-files/cache.d.ts +21 -0
  57. package/dist/webcontainer-files/cache.spec.d.ts +1 -0
  58. package/dist/webcontainer-files/constants.d.ts +4 -0
  59. package/dist/webcontainer-files/filesmap.d.ts +38 -0
  60. package/dist/webcontainer-files/filesmap.spec.d.ts +1 -0
  61. package/dist/webcontainer-files/index.d.ts +8 -0
  62. package/dist/webcontainer-files/utils.d.ts +6 -0
  63. package/package.json +80 -0
  64. package/types.d.ts +12 -0
@@ -0,0 +1,396 @@
1
+ /* Color Tokens Light */
2
+ :root,
3
+ :root[data-theme='light'] {
4
+ --tk-background-primary: theme('colors.gray.0');
5
+ --tk-background-secondary: theme('colors.gray.50');
6
+ --tk-background-active: theme('colors.gray.100');
7
+ --tk-background-active-secondary: theme('colors.gray.0');
8
+ --tk-background-brighter: theme('colors.gray.0');
9
+ --tk-background-accent: theme('colors.accent.600');
10
+ --tk-background-accent-secondary: theme('colors.accent.600');
11
+ --tk-background-accent-active: theme('colors.accent.500');
12
+ --tk-background-positive: theme('colors.positive.50');
13
+ --tk-background-warning: theme('colors.warning.100');
14
+ --tk-background-negative: theme('colors.negative.100');
15
+ --tk-background-info: theme('colors.info.100');
16
+ --tk-background-tip: theme('colors.tip.100');
17
+
18
+ --tk-text-primary: theme('colors.gray.800');
19
+ --tk-text-primary-inverted: theme('colors.gray.0');
20
+ --tk-text-secondary: theme('colors.gray.600');
21
+ --tk-text-secondary-inverted: theme('colors.gray.200');
22
+ --tk-text-disabled: theme('colors.gray.400');
23
+ --tk-text-body: theme('colors.gray.700');
24
+ --tk-text-heading: theme('colors.gray.950');
25
+ --tk-text-active: theme('colors.gray.1000');
26
+ --tk-text-accent: theme('colors.accent.600');
27
+ --tk-text-positive: theme('colors.positive.700');
28
+ --tk-text-warning: theme('colors.warning.600');
29
+ --tk-text-negative: theme('colors.negative.600');
30
+ --tk-text-info: theme('colors.info.800');
31
+ --tk-text-tip: theme('colors.tip.900');
32
+
33
+ --tk-border-primary: theme('colors.gray.200');
34
+ --tk-border-secondary: theme('colors.gray.200');
35
+ --tk-border-brighter: theme('colors.gray.300');
36
+ --tk-border-accent: theme('colors.accent.600');
37
+ --tk-border-positive: theme('colors.positive.600');
38
+ --tk-border-warning: theme('colors.warning.400');
39
+ --tk-border-negative: theme('colors.negative.500');
40
+ --tk-border-info: theme('colors.info.600');
41
+ --tk-border-tip: theme('colors.tip.600');
42
+
43
+ /* Terminal Colors */
44
+ --tk-terminal-foreground: #333333;
45
+ --tk-terminal-selection-background: #00000040;
46
+
47
+ --tk-terminal-black: #000000;
48
+ --tk-terminal-red: #cd3131;
49
+ --tk-terminal-green: #00bc00;
50
+ --tk-terminal-yellow: #949800;
51
+ --tk-terminal-blue: #0451a5;
52
+ --tk-terminal-magenta: #bc05bc;
53
+ --tk-terminal-cyan: #0598bc;
54
+ --tk-terminal-white: #555555;
55
+ --tk-terminal-brightBlack: #686868;
56
+ --tk-terminal-brightRed: #cd3131;
57
+ --tk-terminal-brightGreen: #00bc00;
58
+ --tk-terminal-brightYellow: #949800;
59
+ --tk-terminal-brightBlue: #0451a5;
60
+ --tk-terminal-brightMagenta: #bc05bc;
61
+ --tk-terminal-brightCyan: #0598bc;
62
+ --tk-terminal-brightWhite: #a5a5a5;
63
+ }
64
+
65
+ /* Color Tokens Dark */
66
+ :root[data-theme='dark'] {
67
+ --tk-background-primary: theme('colors.gray.950');
68
+ --tk-background-secondary: theme('colors.gray.900');
69
+ --tk-background-active: theme('colors.gray.800');
70
+ --tk-background-active-secondary: theme('colors.gray.1000');
71
+ --tk-background-brighter: theme('colors.gray.800');
72
+ --tk-background-accent: theme('colors.accent.800');
73
+ --tk-background-accent-secondary: theme('colors.accent.400');
74
+ --tk-background-accent-active: theme('colors.accent.300');
75
+ --tk-background-positive: theme('colors.positive.950');
76
+ --tk-background-warning: theme('colors.warning.950');
77
+ --tk-background-negative: theme('colors.negative.950');
78
+ --tk-background-info: theme('colors.info.950');
79
+ --tk-background-tip: theme('colors.tip.950');
80
+
81
+ --tk-text-primary: theme('colors.gray.200');
82
+ --tk-text-primary-inverted: theme('colors.gray.950');
83
+ --tk-text-secondary: theme('colors.gray.400');
84
+ --tk-text-secondary-inverted: theme('colors.gray.700');
85
+ --tk-text-disabled: theme('colors.gray.600');
86
+ --tk-text-body: theme('colors.gray.300');
87
+ --tk-text-heading: theme('colors.gray.100');
88
+ --tk-text-active: theme('colors.gray.0');
89
+ --tk-text-accent: theme('colors.accent.500');
90
+ --tk-text-positive: theme('colors.positive.300');
91
+ --tk-text-warning: theme('colors.warning.300');
92
+ --tk-text-negative: theme('colors.negative.400');
93
+ --tk-text-info: theme('colors.info.300');
94
+ --tk-text-tip: theme('colors.tip.400');
95
+
96
+ --tk-border-primary: theme('colors.gray.800');
97
+ --tk-border-secondary: theme('colors.gray.800');
98
+ --tk-border-brighter: theme('colors.gray.700');
99
+ --tk-border-accent: theme('colors.accent.700');
100
+ --tk-border-positive: theme('colors.positive.400');
101
+ --tk-border-warning: theme('colors.warning.400');
102
+ --tk-border-negative: theme('colors.negative.500');
103
+ --tk-border-info: theme('colors.info.400');
104
+ --tk-border-tip: theme('colors.tip.500');
105
+
106
+ /* Terminal Colors */
107
+ --tk-terminal-foreground: #eff0eb;
108
+ --tk-terminal-selection-background: #97979b33;
109
+
110
+ --tk-terminal-black: #000000;
111
+ --tk-terminal-red: #ff5c57;
112
+ --tk-terminal-green: #5af78e;
113
+ --tk-terminal-yellow: #f3f99d;
114
+ --tk-terminal-blue: #57c7ff;
115
+ --tk-terminal-magenta: #ff6ac1;
116
+ --tk-terminal-cyan: #9aedfe;
117
+ --tk-terminal-white: #f1f1f0;
118
+ --tk-terminal-brightBlack: #686868;
119
+ --tk-terminal-brightRed: #ff5c57;
120
+ --tk-terminal-brightGreen: #5af78e;
121
+ --tk-terminal-brightYellow: #f3f99d;
122
+ --tk-terminal-brightBlue: #57c7ff;
123
+ --tk-terminal-brightMagenta: #ff6ac1;
124
+ --tk-terminal-brightCyan: #9aedfe;
125
+ --tk-terminal-brightWhite: #f1f1f0;
126
+ }
127
+
128
+ /*
129
+ * Element Tokens
130
+ *
131
+ * Hierarchy: Element Token -> (Element Token | Color Tokens) -> Primitives
132
+ */
133
+ :root {
134
+ /* App */
135
+ --tk-elements-app-backgroundColor: var(--tk-background-primary);
136
+ --tk-elements-app-borderColor: var(--tk-border-primary);
137
+ --tk-elements-app-textColor: var(--tk-text-primary);
138
+
139
+ /* Links */
140
+ --tk-elements-link-primaryColor: var(--tk-text-accent);
141
+ --tk-elements-link-primaryColorHover: unset;
142
+ --tk-elements-link-secondaryColor: var(--tk-text-secondary);
143
+ --tk-elements-link-secondaryColorHover: var(--tk-text-primary);
144
+
145
+ /* Primary Button */
146
+ --tk-elements-primaryButton-backgroundColor: var(--tk-background-accent-secondary);
147
+ --tk-elements-primaryButton-backgroundColorHover: var(--tk-background-accent-active);
148
+ --tk-elements-primaryButton-textColor: var(--tk-text-primary-inverted);
149
+ --tk-elements-primaryButton-textColorHover: var(--tk-text-primary-inverted);
150
+ --tk-elements-primaryButton-iconColor: var(--tk-text-primary-inverted);
151
+ --tk-elements-primaryButton-iconColorHover: var(--tk-text-primary-inverted);
152
+
153
+ /* Secondary Button */
154
+ --tk-elements-secondaryButton-backgroundColor: var(--tk-elements-app-backgroundColor);
155
+ --tk-elements-secondaryButton-backgroundColorHover: var(--tk-background-secondary);
156
+ --tk-elements-secondaryButton-textColor: var(--tk-text-secondary);
157
+ --tk-elements-secondaryButton-textColorHover: var(--tk-text-primary);
158
+ --tk-elements-secondaryButton-iconColor: var(--tk-text-secondary);
159
+ --tk-elements-secondaryButton-iconColorHover: var(--tk-text-primary);
160
+
161
+ /* Content */
162
+ --tk-elements-content-textColor: var(--tk-text-body);
163
+ --tk-elements-content-headingTextColor: var(--tk-text-primary);
164
+
165
+ /* Page loading indicator */
166
+ --tk-elements-pageLoadingIndicator-backgroundColor: var(--tk-background-accent);
167
+ --tk-elements-pageLoadingIndicator-shadowColor: var(--tk-background-accent);
168
+
169
+ /* Top Bar */
170
+ --tk-elements-topBar-backgroundColor: var(--tk-elements-app-backgroundColor);
171
+
172
+ /* Top Bar > Icon Button */
173
+ --tk-elements-topBar-iconButton-backgroundColor: var(--tk-elements-app-backgroundColor);
174
+ --tk-elements-topBar-iconButton-backgroundColorHover: var(--tk-background-secondary);
175
+ --tk-elements-topBar-iconButton-iconColor: var(--tk-text-secondary);
176
+ --tk-elements-topBar-iconButton-iconColorHover: var(--tk-text-primary);
177
+
178
+ /* Top Bar > Logo */
179
+ --tk-elements-topBar-logo-color: var(--tk-text-active);
180
+ --tk-elements-topBar-logo-colorHover: var(--tk-text-active);
181
+
182
+ /* Previews */
183
+ --tk-elements-previews-borderColor: theme('colors.gray.200');
184
+
185
+ /* Panel */
186
+ --tk-elements-panel-backgroundColor: var(--tk-elements-app-backgroundColor);
187
+ --tk-elements-panel-textColor: var(--tk-elements-app-textColor);
188
+
189
+ /* Panel > Header */
190
+ --tk-elements-panel-header-backgroundColor: var(--tk-background-secondary);
191
+ --tk-elements-panel-header-textColor: var(--tk-text-heading);
192
+ --tk-elements-panel-header-iconColor: var(--tk-text-primary);
193
+
194
+ /* Panel > Header Button */
195
+ --tk-elements-panel-headerButton-backgroundColor: var(--tk-elements-panel-header-backgroundColor);
196
+ --tk-elements-panel-headerButton-backgroundColorHover: var(--tk-background-primary);
197
+ --tk-elements-panel-headerButton-textColor: var(--tk-text-secondary);
198
+ --tk-elements-panel-headerButton-textColorHover: var(--tk-text-primary);
199
+ --tk-elements-panel-headerButton-iconColor: var(--tk-text-secondary);
200
+ --tk-elements-panel-headerButton-iconColorHover: var(--tk-text-primary);
201
+
202
+ /* Panel > Header Tab */
203
+ --tk-elements-panel-headerTab-backgroundColor: var(--tk-elements-panel-header-backgroundColor);
204
+ --tk-elements-panel-headerTab-backgroundColorHover: var(--tk-background-active);
205
+ --tk-elements-panel-headerTab-backgroundColorActive: var(--tk-background-active-secondary);
206
+ --tk-elements-panel-headerTab-borderColor: var(--tk-elements-panel-header-backgroundColor);
207
+ --tk-elements-panel-headerTab-borderColorHover: var(--tk-background-active);
208
+ --tk-elements-panel-headerTab-borderColorActive: var(--tk-elements-app-borderColor);
209
+ --tk-elements-panel-headerTab-textColor: var(--tk-elements-panel-header-textColor);
210
+ --tk-elements-panel-headerTab-textColorHover: var(--tk-elements-panel-header-textColor);
211
+ --tk-elements-panel-headerTab-textColorActive: var(--tk-text-active);
212
+ --tk-elements-panel-headerTab-iconColor: var(--tk-elements-panel-header-iconColor);
213
+ --tk-elements-panel-headerTab-iconColorHover: var(--tk-elements-panel-header-iconColor);
214
+ --tk-elements-panel-headerTab-iconColorActive: var(--tk-text-active);
215
+
216
+ /* File Tree */
217
+ --tk-elements-fileTree-backgroundColor: var(--tk-elements-app-backgroundColor);
218
+ --tk-elements-fileTree-backgroundColorHover: var(--tk-background-secondary);
219
+ --tk-elements-fileTree-textColor: var(--tk-elements-app-textColor);
220
+ --tk-elements-fileTree-textColorHover: var(--tk-elements-fileTree-textColor);
221
+ --tk-elements-fileTree-iconColor: var(--tk-text-secondary);
222
+ --tk-elements-fileTree-iconColorHover: var(--tk-text-secondary);
223
+
224
+ /* File Tree > File */
225
+ --tk-elements-fileTree-file-backgroundColor: var(--tk-elements-fileTree-backgroundColor);
226
+ --tk-elements-fileTree-file-backgroundColorHover: var(--tk-elements-fileTree-backgroundColorHover);
227
+ --tk-elements-fileTree-file-backgroundColorSelected: var(--tk-background-active);
228
+ --tk-elements-fileTree-file-textColor: var(--tk-elements-fileTree-textColor);
229
+ --tk-elements-fileTree-file-textColorHover: var(--tk-elements-fileTree-textColorHover);
230
+ --tk-elements-fileTree-file-textColorSelected: var(--tk-text-active);
231
+ --tk-elements-fileTree-file-iconColor: var(--tk-elements-fileTree-iconColor);
232
+ --tk-elements-fileTree-file-iconColorHover: var(--tk-elements-fileTree-iconColorHover);
233
+ --tk-elements-fileTree-file-iconColorSelected: var(--tk-text-active);
234
+
235
+ /* File Tree > Folder */
236
+ --tk-elements-fileTree-folder-backgroundColor: var(--tk-elements-fileTree-backgroundColor);
237
+ --tk-elements-fileTree-folder-backgroundColorHover: var(--tk-elements-fileTree-backgroundColorHover);
238
+ --tk-elements-fileTree-folder-textColor: var(--tk-elements-fileTree-textColor);
239
+ --tk-elements-fileTree-folder-textColorHover: var(--tk-elements-fileTree-textColorHover);
240
+ --tk-elements-fileTree-folder-iconColor: var(--tk-elements-fileTree-iconColor);
241
+ --tk-elements-fileTree-folder-iconColorHover: var(--tk-elements-fileTree-iconColorHover);
242
+
243
+ /* Nav Card */
244
+ --tk-elements-navCard-backgroundColor: var(--tk-elements-app-backgroundColor);
245
+ --tk-elements-navCard-backgroundColorHover: var(--tk-elements-navCard-backgroundColor);
246
+ --tk-elements-navCard-borderColor: var(--tk-border-secondary);
247
+ --tk-elements-navCard-borderColorHover: var(--tk-border-accent);
248
+ --tk-elements-navCard-textColor: var(--tk-elements-app-textColor);
249
+ --tk-elements-navCard-textColorHover: var(--tk-text-active);
250
+ --tk-elements-navCard-iconColor: var(--tk-elements-app-textColor);
251
+ --tk-elements-navCard-iconColorHover: var(--tk-text-accent);
252
+
253
+ /* Breadcrumb > Nav Button */
254
+ --tk-elements-breadcrumbs-navButton-iconColor: var(--tk-text-secondary);
255
+ --tk-elements-breadcrumbs-navButton-iconColorHover: var(--tk-text-active);
256
+
257
+ /* Breadcrumb > Toggle Button */
258
+ --tk-elements-breadcrumbs-toggleButton-backgroundColor: var(--tk-background-secondary);
259
+ --tk-elements-breadcrumbs-toggleButton-backgroundColorHover: var(--tk-background-brighter);
260
+ --tk-elements-breadcrumbs-toggleButton-backgroundColorSelected: var(
261
+ --tk-elements-breadcrumbs-toggleButton-backgroundColor
262
+ );
263
+ --tk-elements-breadcrumbs-toggleButton-borderColor: var(--tk-border-secondary);
264
+ --tk-elements-breadcrumbs-toggleButton-borderColorHover: var(--tk-border-brighter);
265
+ --tk-elements-breadcrumbs-toggleButton-borderColorSelected: var(--tk-elements-breadcrumbs-toggleButton-borderColor);
266
+ --tk-elements-breadcrumbs-toggleButton-textColor: var(--tk-elements-app-textColor);
267
+ --tk-elements-breadcrumbs-toggleButton-textColorHover: var(--tk-elements-breadcrumbs-toggleButton-textColor);
268
+ --tk-elements-breadcrumbs-toggleButton-textColorSelected: var(--tk-elements-breadcrumbs-toggleButton-textColor);
269
+ --tk-elements-breadcrumbs-toggleButton-textDividerColor: var(--tk-text-disabled);
270
+ --tk-elements-breadcrumbs-toggleButton-textDividerColorHover: var(
271
+ --tk-elements-breadcrumbs-toggleButton-textDividerColor
272
+ );
273
+ --tk-elements-breadcrumbs-toggleButton-textDividerColorSelected: var(
274
+ --tk-elements-breadcrumbs-toggleButton-textDividerColor
275
+ );
276
+ --tk-elements-breadcrumbs-toggleButton-iconColor: var(--tk-text-secondary);
277
+ --tk-elements-breadcrumbs-toggleButton-iconColorHover: var(--tk-text-active);
278
+ --tk-elements-breadcrumbs-toggleButton-iconColorSelected: var(--tk-text-active);
279
+
280
+ /* Breadcrumb > Dropdown */
281
+ --tk-elements-breadcrumbs-dropdown-backgroundColor: var(--tk-background-primary);
282
+ --tk-elements-breadcrumbs-dropdown-borderColor: var(--tk-border-secondary);
283
+ --tk-elements-breadcrumbs-dropdown-textColor: var(--tk-elements-app-textColor);
284
+ --tk-elements-breadcrumbs-dropdown-textColorHover: var(--tk-text-accent);
285
+ --tk-elements-breadcrumbs-dropdown-accordionTextColor: var(--tk-elements-breadcrumbs-dropdown-textColor);
286
+ --tk-elements-breadcrumbs-dropdown-accordionTextColorSelected: var(
287
+ --tk-elements-breadcrumbs-dropdown-accordionTextColor
288
+ );
289
+ --tk-elements-breadcrumbs-dropdown-accordionTextColorHover: var(--tk-text-active);
290
+ --tk-elements-breadcrumbs-dropdown-accordionIconColor: var(--tk-text-disabled);
291
+ --tk-elements-breadcrumbs-dropdown-accordionIconColorSelected: var(
292
+ --tk-elements-breadcrumbs-dropdown-accordionIconColor
293
+ );
294
+ --tk-elements-breadcrumbs-dropdown-accordionIconColorHover: var(--tk-text-primary);
295
+ --tk-elements-breadcrumbs-dropdown-lessonBackgroundColor: var(--tk-elements-breadcrumbs-dropdown-backgroundColor);
296
+ --tk-elements-breadcrumbs-dropdown-lessonBackgroundColorSelected: var(--tk-background-secondary);
297
+ --tk-elements-breadcrumbs-dropdown-lessonTextColor: var(--tk-elements-breadcrumbs-dropdown-textColor);
298
+ --tk-elements-breadcrumbs-dropdown-lessonTextColorSelected: var(--tk-elements-breadcrumbs-dropdown-lessonTextColor);
299
+ --tk-elements-breadcrumbs-dropdown-lessonTextColorHover: var(--tk-elements-breadcrumbs-dropdown-textColorHover);
300
+
301
+ /* Terminal */
302
+ --tk-elements-terminal-backgroundColor: var(--tk-background-active-secondary);
303
+ --tk-elements-terminal-textColor: var(--tk-terminal-foreground);
304
+ --tk-elements-terminal-cursorColor: var(--tk-terminal-foreground);
305
+ --tk-elements-terminal-selection-backgroundColor: var(--tk-terminal-selection-background);
306
+
307
+ --tk-elements-terminal-color-black: var(--tk-terminal-black);
308
+ --tk-elements-terminal-color-red: var(--tk-terminal-red);
309
+ --tk-elements-terminal-color-green: var(--tk-terminal-green);
310
+ --tk-elements-terminal-color-yellow: var(--tk-terminal-yellow);
311
+ --tk-elements-terminal-color-blue: var(--tk-terminal-blue);
312
+ --tk-elements-terminal-color-magenta: var(--tk-terminal-magenta);
313
+ --tk-elements-terminal-color-cyan: var(--tk-terminal-cyan);
314
+ --tk-elements-terminal-color-white: var(--tk-terminal-white);
315
+ --tk-elements-terminal-color-brightBlack: var(--tk-terminal-brightBlack);
316
+ --tk-elements-terminal-color-brightRed: var(--tk-terminal-brightRed);
317
+ --tk-elements-terminal-color-brightGreen: var(--tk-terminal-brightGreen);
318
+ --tk-elements-terminal-color-brightYellow: var(--tk-terminal-brightYellow);
319
+ --tk-elements-terminal-color-brightBlue: var(--tk-terminal-brightBlue);
320
+ --tk-elements-terminal-color-brightMagenta: var(--tk-terminal-brightMagenta);
321
+ --tk-elements-terminal-color-brightCyan: var(--tk-terminal-brightCyan);
322
+ --tk-elements-terminal-color-brightWhite: var(--tk-terminal-brightWhite);
323
+
324
+ /* Boot Screen > Primary Button */
325
+ --tk-elements-bootScreen-primaryButton-backgroundColor: var(--tk-background-accent-secondary);
326
+ --tk-elements-bootScreen-primaryButton-backgroundColorHover: var(--tk-background-accent-active);
327
+ --tk-elements-bootScreen-primaryButton-textColor: var(--tk-text-primary-inverted);
328
+ --tk-elements-bootScreen-primaryButton-textColorHover: var(--tk-text-primary-inverted);
329
+ --tk-elements-bootScreen-primaryButton-iconColor: var(--tk-text-primary-inverted);
330
+ --tk-elements-bootScreen-primaryButton-iconColorHover: var(--tk-text-primary-inverted);
331
+
332
+ /* BootScreen > Status > Positive */
333
+ --tk-elements-status-positive-textColor: var(--tk-text-positive);
334
+ --tk-elements-status-positive-iconColor: var(--tk-elements-status-positive-textColor);
335
+
336
+ /* BootScreen > Status > Negative */
337
+ --tk-elements-status-negative-textColor: var(--tk-text-negative);
338
+ --tk-elements-status-negative-iconColor: var(--tk-elements-status-negative-textColor);
339
+
340
+ /* BootScreen > Status > Skipped */
341
+ --tk-elements-status-skipped-textColor: var(--tk-text-secondary);
342
+ --tk-elements-status-skipped-iconColor: var(--tk-elements-status-neutral-textColor);
343
+
344
+ /* BootScreen > Status > Disabled */
345
+ --tk-elements-status-disabled-textColor: var(--tk-text-disabled);
346
+ --tk-elements-status-disabled-iconColor: var(--tk-elements-status-disabled-textColor);
347
+
348
+ /* BootScreen > Status > Active */
349
+ --tk-elements-status-active-textColor: var(--tk-text-primary);
350
+ --tk-elements-status-active-iconColor: var(--tk-elements-status-active-textColor);
351
+
352
+ /* Callouts > Tip */
353
+ --tk-elements-callouts-tip-backgroundColor: var(--tk-background-tip);
354
+ --tk-elements-callouts-tip-textColor: var(--tk-elements-content-textColor);
355
+ --tk-elements-callouts-tip-borderColor: var(--tk-border-tip);
356
+ --tk-elements-callouts-tip-titleTextColor: var(--tk-text-tip);
357
+ --tk-elements-callouts-tip-iconColor: var(--tk-elements-callouts-tip-titleTextColor);
358
+ --tk-elements-callouts-tip-codeColor: var(--tk-text-primary);
359
+ --tk-elements-callouts-tip-codeBackgroundColor: var(--tk-background-secondary);
360
+
361
+ /* Callouts > Info */
362
+ --tk-elements-callouts-info-backgroundColor: var(--tk-background-info);
363
+ --tk-elements-callouts-info-textColor: var(--tk-elements-content-textColor);
364
+ --tk-elements-callouts-info-borderColor: var(--tk-border-info);
365
+ --tk-elements-callouts-info-titleTextColor: var(--tk-text-info);
366
+ --tk-elements-callouts-info-iconColor: var(--tk-elements-callouts-info-titleTextColor);
367
+ --tk-elements-callouts-info-codeColor: var(--tk-text-primary);
368
+ --tk-elements-callouts-info-codeBackgroundColor: var(--tk-background-secondary);
369
+
370
+ /* Callouts > Warning */
371
+ --tk-elements-callouts-warning-backgroundColor: var(--tk-background-warning);
372
+ --tk-elements-callouts-warning-textColor: var(--tk-elements-content-textColor);
373
+ --tk-elements-callouts-warning-borderColor: var(--tk-border-warning);
374
+ --tk-elements-callouts-warning-titleTextColor: var(--tk-text-warning);
375
+ --tk-elements-callouts-warning-iconColor: var(--tk-elements-callouts-warning-titleTextColor);
376
+ --tk-elements-callouts-warning-codeColor: var(--tk-text-primary);
377
+ --tk-elements-callouts-warning-codeBackgroundColor: var(--tk-background-secondary);
378
+
379
+ /* Callouts > Danger */
380
+ --tk-elements-callouts-danger-backgroundColor: var(--tk-background-negative);
381
+ --tk-elements-callouts-danger-textColor: var(--tk-elements-content-textColor);
382
+ --tk-elements-callouts-danger-borderColor: var(--tk-border-negative);
383
+ --tk-elements-callouts-danger-titleTextColor: var(--tk-text-negative);
384
+ --tk-elements-callouts-danger-iconColor: var(--tk-elements-callouts-danger-titleTextColor);
385
+ --tk-elements-callouts-danger-codeColor: var(--tk-text-primary);
386
+ --tk-elements-callouts-danger-codeBackgroundColor: var(--tk-background-secondary);
387
+
388
+ /* Callouts > Success */
389
+ --tk-elements-callouts-success-backgroundColor: var(--tk-background-positive);
390
+ --tk-elements-callouts-success-textColor: var(--tk-elements-content-textColor);
391
+ --tk-elements-callouts-success-borderColor: var(--tk-border-positive);
392
+ --tk-elements-callouts-success-titleTextColor: var(--tk-text-positive);
393
+ --tk-elements-callouts-success-iconColor: var(--tk-elements-callouts-success-titleTextColor);
394
+ --tk-elements-callouts-success-codeColor: var(--tk-text-primary);
395
+ --tk-elements-callouts-success-codeBackgroundColor: var(--tk-background-secondary);
396
+ }
@@ -0,0 +1,6 @@
1
+ export const RESIZABLE_PANELS = {
2
+ Main: 'main',
3
+ } as const;
4
+ export const IGNORED_FILES = ['**/.DS_Store', '**/*.swp'];
5
+
6
+ export const LOGO_EXTENSIONS = ['svg', 'png', 'jpeg', 'jpg'];
@@ -0,0 +1,25 @@
1
+ import path from 'node:path';
2
+ import type { FilesRefList } from '@tutorialkit-rb/types';
3
+ import { folderPathToFilesRef } from '@tutorialkit-rb/types';
4
+ import glob from 'fast-glob';
5
+ import { IGNORED_FILES } from '../constants';
6
+
7
+ const CONTENT_DIR = path.join(process.cwd(), 'src/content/tutorial');
8
+
9
+ export async function getFilesRefList(pathToFolder: string, base = CONTENT_DIR): Promise<FilesRefList> {
10
+ const root = path.join(base, pathToFolder);
11
+
12
+ const filePaths = (
13
+ await glob(`${glob.convertPathToPattern(root)}/**/*`, {
14
+ onlyFiles: true,
15
+ ignore: IGNORED_FILES,
16
+ dot: true,
17
+ })
18
+ ).map((filePath) => `/${path.relative(root, filePath).replaceAll(path.sep, '/')}`);
19
+
20
+ filePaths.sort();
21
+
22
+ const filesRef = folderPathToFilesRef(pathToFolder);
23
+
24
+ return [filesRef, filePaths];
25
+ }
@@ -0,0 +1,37 @@
1
+ export function squash<T extends Record<any, any>>(objects: (T | undefined)[], properties: (keyof T)[]) {
2
+ const newObject = {} as any;
3
+
4
+ for (const property of properties) {
5
+ for (const object of objects) {
6
+ if (object?.hasOwnProperty(property)) {
7
+ if (property in newObject) {
8
+ newObject[property] = inheritProperties(newObject[property], object[property]);
9
+ } else {
10
+ // if the property is new, we can just assign it
11
+ newObject[property] = object[property];
12
+ }
13
+ }
14
+ }
15
+ }
16
+
17
+ return newObject;
18
+ }
19
+
20
+ function inheritProperties(child: any, parent: any) {
21
+ // if neither the parent nor the child are a POJO, then we do not inherit anything
22
+ if (typeof parent !== 'object' || typeof child !== 'object' || Array.isArray(parent) || Array.isArray(child)) {
23
+ return child;
24
+ }
25
+
26
+ const newObject = { ...parent };
27
+
28
+ for (const property in child) {
29
+ if (property in parent) {
30
+ newObject[property] = inheritProperties(child[property], parent[property]);
31
+ } else {
32
+ newObject[property] = child[property];
33
+ }
34
+ }
35
+
36
+ return newObject;
37
+ }