ezfw-core 1.0.77 → 1.0.78

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.
@@ -17,6 +17,11 @@
17
17
  background: var(--ez-surface-tertiary, #f8fafc);
18
18
  border-bottom: 1px solid var(--ez-border-primary, #e2e8f0);
19
19
 
20
+ @media (prefers-color-scheme: dark) {
21
+ background: var(--ez-surface-tertiary, #1e293b);
22
+ border-bottom-color: var(--ez-border-primary, #334155);
23
+ }
24
+
20
25
  // Mobile: subtle fade gradients on edges
21
26
  @media (max-width: 768px) {
22
27
  &::before,
@@ -33,11 +38,19 @@
33
38
  &::before {
34
39
  left: 0;
35
40
  background: linear-gradient(to right, var(--ez-surface-tertiary, #f8fafc), transparent);
41
+
42
+ @media (prefers-color-scheme: dark) {
43
+ background: linear-gradient(to right, var(--ez-surface-tertiary, #1e293b), transparent);
44
+ }
36
45
  }
37
46
 
38
47
  &::after {
39
48
  right: 0;
40
49
  background: linear-gradient(to left, var(--ez-surface-tertiary, #f8fafc), transparent);
50
+
51
+ @media (prefers-color-scheme: dark) {
52
+ background: linear-gradient(to left, var(--ez-surface-tertiary, #1e293b), transparent);
53
+ }
41
54
  }
42
55
  }
43
56
  }
@@ -77,6 +90,10 @@
77
90
  transition: all 0.15s ease;
78
91
  white-space: nowrap;
79
92
 
93
+ @media (prefers-color-scheme: dark) {
94
+ color: var(--ez-text-secondary, #cbd5e1);
95
+ }
96
+
80
97
  i {
81
98
  font-size: 14px;
82
99
  }
@@ -84,6 +101,11 @@
84
101
  &:hover {
85
102
  color: var(--ez-text-primary, #1e293b);
86
103
  background: var(--ez-surface-primary, #f1f5f9);
104
+
105
+ @media (prefers-color-scheme: dark) {
106
+ color: var(--ez-text-primary, #f8fafc);
107
+ background: var(--ez-surface-primary, #334155);
108
+ }
87
109
  }
88
110
  }
89
111
 
@@ -98,6 +120,10 @@
98
120
  color: var(--ez-text-tertiary, #94a3b8);
99
121
  transition: all 0.15s ease;
100
122
 
123
+ @media (prefers-color-scheme: dark) {
124
+ color: var(--ez-text-tertiary, #94a3b8);
125
+ }
126
+
101
127
  i {
102
128
  font-size: 10px;
103
129
  }
@@ -105,6 +131,11 @@
105
131
  &:hover {
106
132
  background: var(--ez-danger-light, rgba(239, 68, 68, 0.1));
107
133
  color: var(--ez-danger, #dc2626);
134
+
135
+ @media (prefers-color-scheme: dark) {
136
+ background: var(--ez-danger-light, rgba(239, 68, 68, 0.15));
137
+ color: var(--ez-danger, #f87171);
138
+ }
108
139
  }
109
140
  }
110
141
 
@@ -113,6 +144,11 @@
113
144
  border-bottom-color: var(--ez-primary, #2563eb);
114
145
  background: transparent;
115
146
 
147
+ @media (prefers-color-scheme: dark) {
148
+ color: var(--ez-primary, #818cf8);
149
+ border-bottom-color: var(--ez-primary, #818cf8);
150
+ }
151
+
116
152
  &:hover {
117
153
  background: transparent;
118
154
  }
@@ -131,6 +167,11 @@
131
167
  border-top: none;
132
168
  border-radius: 0 0 var(--ez-radius-md, 6px) var(--ez-radius-md, 6px);
133
169
  background: var(--ez-surface-secondary, #ffffff);
170
+
171
+ @media (prefers-color-scheme: dark) {
172
+ border-color: var(--ez-border-primary, #334155);
173
+ background: var(--ez-surface-secondary, #0f172a);
174
+ }
134
175
  }
135
176
 
136
177
  .tabPane {
@@ -152,6 +193,10 @@
152
193
  .boxed {
153
194
  .tabHeaderWrapper {
154
195
  background: var(--ez-surface-secondary, #ffffff);
196
+
197
+ @media (prefers-color-scheme: dark) {
198
+ background: var(--ez-surface-secondary, #0f172a);
199
+ }
155
200
  }
156
201
 
157
202
  .tabHeader {
@@ -168,6 +213,10 @@
168
213
  border-radius: var(--ez-radius-md, 6px) var(--ez-radius-md, 6px) 0 0;
169
214
  border-bottom: none;
170
215
  margin-bottom: 0;
216
+
217
+ @media (prefers-color-scheme: dark) {
218
+ background: var(--ez-surface-primary, #1e293b);
219
+ }
171
220
  }
172
221
 
173
222
  .tabActive {
@@ -175,6 +224,12 @@
175
224
  border: 1px solid var(--ez-border-primary, #e2e8f0);
176
225
  border-bottom-color: var(--ez-surface-secondary, #ffffff);
177
226
  margin-bottom: -1px;
227
+
228
+ @media (prefers-color-scheme: dark) {
229
+ background: var(--ez-surface-secondary, #0f172a);
230
+ border-color: var(--ez-border-primary, #334155);
231
+ border-bottom-color: var(--ez-surface-secondary, #0f172a);
232
+ }
178
233
  }
179
234
 
180
235
  .tabContent {
@@ -204,16 +259,28 @@
204
259
  border-bottom: none;
205
260
  margin-bottom: 0;
206
261
  padding: 8px 16px;
262
+
263
+ @media (prefers-color-scheme: dark) {
264
+ background: var(--ez-surface-primary, #1e293b);
265
+ }
207
266
  }
208
267
 
209
268
  .tabActive {
210
269
  background: var(--ez-primary, #2563eb);
211
270
  color: var(--ez-text-inverse, #ffffff);
271
+
272
+ @media (prefers-color-scheme: dark) {
273
+ background: var(--ez-primary, #4f46e5);
274
+ }
212
275
  }
213
276
 
214
277
  .tabContent {
215
278
  border-top: 1px solid var(--ez-border-primary, #e2e8f0);
216
279
  border-radius: var(--ez-radius-md, 6px);
280
+
281
+ @media (prefers-color-scheme: dark) {
282
+ border-top-color: var(--ez-border-primary, #334155);
283
+ }
217
284
  }
218
285
  }
219
286
 
@@ -221,6 +288,10 @@
221
288
  .minimal {
222
289
  .tabHeaderWrapper {
223
290
  background: transparent;
291
+
292
+ @media (prefers-color-scheme: dark) {
293
+ border-bottom-color: var(--ez-border-primary, #334155);
294
+ }
224
295
  }
225
296
 
226
297
  .tabHeader {
@@ -773,7 +773,9 @@ async function renderPageBuild(page, opts, renderer, analyzer, root, islands) {
773
773
  * Generate hydration script
774
774
  */
775
775
  function generateHydrationScript(islands, isDev, cssModules = []) {
776
- const islandsJson = JSON.stringify(islands);
776
+ // Escape </script> to prevent breaking out of the script tag
777
+ // This is necessary when code examples contain </script> tags
778
+ const islandsJson = JSON.stringify(islands).replace(/<\/script/gi, '<\\/script');
777
779
  const cssModulesJson = JSON.stringify(cssModules);
778
780
  // In dev mode, use node_modules path (works for projects using ezfw-core from npm)
779
781
  const runtimePath = isDev ? '/node_modules/ezfw-core/islands/runtime.ts' : '/assets/islands-runtime.js';
@@ -992,7 +992,9 @@ function generateHydrationScript(
992
992
  isDev: boolean,
993
993
  cssModules: string[] = []
994
994
  ): string {
995
- const islandsJson = JSON.stringify(islands);
995
+ // Escape </script> to prevent breaking out of the script tag
996
+ // This is necessary when code examples contain </script> tags
997
+ const islandsJson = JSON.stringify(islands).replace(/<\/script/gi, '<\\/script');
996
998
  const cssModulesJson = JSON.stringify(cssModules);
997
999
 
998
1000
  // In dev mode, use node_modules path (works for projects using ezfw-core from npm)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ezfw-core",
3
- "version": "1.0.77",
3
+ "version": "1.0.78",
4
4
  "description": "Ez Framework - A declarative component framework for building modern web applications",
5
5
  "type": "module",
6
6
  "main": "./core/ez.ts",