frontend-hamroun 1.2.77 → 1.2.79
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/dist/batch/package.json +1 -1
- package/dist/client-router/package.json +1 -1
- package/dist/component/package.json +1 -1
- package/dist/context/package.json +1 -1
- package/dist/event-bus/package.json +1 -1
- package/dist/forms/package.json +1 -1
- package/dist/hooks/package.json +1 -1
- package/dist/index.mjs +1 -0
- package/dist/jsx-runtime/package.json +1 -1
- package/dist/lifecycle-events/package.json +1 -1
- package/dist/package.json +1 -1
- package/dist/render-component/package.json +1 -1
- package/dist/renderer/package.json +1 -1
- package/dist/router/package.json +1 -1
- package/dist/server/package.json +1 -1
- package/dist/server/src/index.js +24 -23
- package/dist/server/src/index.js.map +1 -1
- package/dist/server/src/renderComponent.d.ts +8 -9
- package/dist/server/src/renderComponent.js +10 -5
- package/dist/server/src/renderComponent.js.map +1 -1
- package/dist/server/src/server/index.d.ts +23 -34
- package/dist/server/src/server/index.js +170 -50
- package/dist/server/src/server/index.js.map +1 -1
- package/dist/server/src/server/templates.d.ts +2 -0
- package/dist/server/src/server/templates.js +9 -5
- package/dist/server/src/server/templates.js.map +1 -1
- package/dist/server/src/server/utils.d.ts +1 -1
- package/dist/server/src/server/utils.js +1 -1
- package/dist/server/src/server/utils.js.map +1 -1
- package/dist/server/tsconfig.server.tsbuildinfo +1 -1
- package/dist/server-renderer/package.json +1 -1
- package/dist/store/package.json +1 -1
- package/dist/types/package.json +1 -1
- package/dist/utils/package.json +1 -1
- package/dist/vdom/package.json +1 -1
- package/dist/wasm/package.json +1 -1
- package/package.json +1 -1
- package/templates/complete-app/client.js +58 -0
- package/templates/complete-app/package-lock.json +2536 -0
- package/templates/complete-app/package.json +8 -31
- package/templates/complete-app/pages/about.js +119 -0
- package/templates/complete-app/pages/index.js +157 -0
- package/templates/complete-app/pages/wasm-demo.js +290 -0
- package/templates/complete-app/public/client.js +80 -0
- package/templates/complete-app/public/index.html +47 -0
- package/templates/complete-app/public/styles.css +446 -212
- package/templates/complete-app/readme.md +188 -0
- package/templates/complete-app/server.js +417 -0
- package/templates/complete-app/server.ts +275 -0
- package/templates/complete-app/src/App.tsx +59 -0
- package/templates/complete-app/src/client.ts +61 -0
- package/templates/complete-app/src/client.tsx +18 -0
- package/templates/complete-app/src/pages/index.tsx +51 -0
- package/templates/complete-app/src/server.ts +218 -0
- package/templates/complete-app/tsconfig.json +22 -0
- package/templates/complete-app/tsconfig.server.json +19 -0
- package/templates/complete-app/vite.config.js +57 -0
- package/templates/complete-app/vite.config.ts +30 -0
- package/templates/go/example.go +154 -99
- package/templates/complete-app/build.js +0 -284
- package/templates/complete-app/src/api/index.js +0 -31
- package/templates/complete-app/src/client.js +0 -93
- package/templates/complete-app/src/components/App.js +0 -66
- package/templates/complete-app/src/components/Footer.js +0 -19
- package/templates/complete-app/src/components/Header.js +0 -38
- package/templates/complete-app/src/pages/About.js +0 -59
- package/templates/complete-app/src/pages/Home.js +0 -54
- package/templates/complete-app/src/pages/WasmDemo.js +0 -136
- package/templates/complete-app/src/server.js +0 -186
- package/templates/complete-app/src/wasm/build.bat +0 -16
- package/templates/complete-app/src/wasm/build.sh +0 -16
- package/templates/complete-app/src/wasm/example.go +0 -101
@@ -1,345 +1,579 @@
|
|
1
|
-
/*
|
1
|
+
/* Color scheme */
|
2
2
|
:root {
|
3
|
-
--primary-color: #
|
4
|
-
--
|
5
|
-
--
|
6
|
-
--
|
7
|
-
--
|
8
|
-
--
|
9
|
-
--
|
10
|
-
--
|
3
|
+
--primary-color: #0066cc;
|
4
|
+
--primary-hover: #004c99;
|
5
|
+
--secondary-color: #6c757d;
|
6
|
+
--accent-color: #ff5722;
|
7
|
+
--success-color: #28a745;
|
8
|
+
--warning-color: #ffc107;
|
9
|
+
--danger-color: #dc3545;
|
10
|
+
--info-color: #17a2b8;
|
11
|
+
|
12
|
+
/* Light theme colors */
|
13
|
+
--light-bg: #f8f9fa;
|
14
|
+
--light-bg-secondary: #ffffff;
|
15
|
+
--light-text: #212529;
|
16
|
+
--light-border: #dee2e6;
|
17
|
+
|
18
|
+
/* Dark theme colors */
|
19
|
+
--dark-bg: #343a40;
|
20
|
+
--dark-bg-secondary: #495057;
|
21
|
+
--dark-text: #f8f9fa;
|
22
|
+
--dark-border: #6c757d;
|
23
|
+
|
24
|
+
/* Spacing */
|
25
|
+
--spacing-xs: 0.25rem;
|
26
|
+
--spacing-sm: 0.5rem;
|
27
|
+
--spacing-md: 1rem;
|
28
|
+
--spacing-lg: 1.5rem;
|
29
|
+
--spacing-xl: 2rem;
|
30
|
+
|
31
|
+
/* Border radius */
|
32
|
+
--border-radius: 0.375rem;
|
33
|
+
|
34
|
+
/* Shadow */
|
35
|
+
--shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
36
|
+
--shadow-md: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
37
|
+
--shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
11
38
|
}
|
12
39
|
|
40
|
+
/* Base styles */
|
13
41
|
* {
|
14
42
|
box-sizing: border-box;
|
15
43
|
margin: 0;
|
16
44
|
padding: 0;
|
17
45
|
}
|
18
46
|
|
19
|
-
|
20
|
-
font-
|
47
|
+
html {
|
48
|
+
font-size: 16px;
|
21
49
|
line-height: 1.5;
|
22
|
-
|
23
|
-
|
50
|
+
}
|
51
|
+
|
52
|
+
body {
|
53
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
54
|
+
background-color: var(--light-bg);
|
55
|
+
color: var(--light-text);
|
56
|
+
transition: background-color 0.3s ease, color 0.3s ease;
|
57
|
+
}
|
58
|
+
|
59
|
+
/* Container and layout */
|
60
|
+
.container {
|
61
|
+
max-width: 1200px;
|
62
|
+
margin: 0 auto;
|
63
|
+
padding: var(--spacing-md);
|
64
|
+
}
|
65
|
+
|
66
|
+
.grid {
|
67
|
+
display: grid;
|
68
|
+
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
69
|
+
gap: var(--spacing-lg);
|
70
|
+
margin: var(--spacing-lg) 0;
|
71
|
+
}
|
72
|
+
|
73
|
+
.demo-grid {
|
74
|
+
display: grid;
|
75
|
+
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
76
|
+
gap: var(--spacing-lg);
|
77
|
+
margin: var(--spacing-lg) 0;
|
78
|
+
}
|
79
|
+
|
80
|
+
/* Typography */
|
81
|
+
h1, h2, h3, h4, h5, h6 {
|
82
|
+
margin-bottom: var(--spacing-md);
|
83
|
+
font-weight: 500;
|
84
|
+
}
|
85
|
+
|
86
|
+
h1 {
|
87
|
+
font-size: 2.5rem;
|
88
|
+
color: var(--primary-color);
|
89
|
+
}
|
90
|
+
|
91
|
+
h2 {
|
92
|
+
font-size: 2rem;
|
93
|
+
}
|
94
|
+
|
95
|
+
h3 {
|
96
|
+
font-size: 1.5rem;
|
97
|
+
}
|
98
|
+
|
99
|
+
p {
|
100
|
+
margin-bottom: var(--spacing-md);
|
24
101
|
}
|
25
102
|
|
26
103
|
a {
|
27
104
|
color: var(--primary-color);
|
28
105
|
text-decoration: none;
|
106
|
+
transition: color 0.2s ease;
|
29
107
|
}
|
30
108
|
|
31
109
|
a:hover {
|
110
|
+
color: var(--primary-hover);
|
32
111
|
text-decoration: underline;
|
33
112
|
}
|
34
113
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
114
|
+
/* Header */
|
115
|
+
.header {
|
116
|
+
display: flex;
|
117
|
+
justify-content: space-between;
|
118
|
+
align-items: center;
|
119
|
+
padding: var(--spacing-lg) 0;
|
120
|
+
margin-bottom: var(--spacing-xl);
|
121
|
+
border-bottom: 1px solid var(--light-border);
|
122
|
+
}
|
123
|
+
|
124
|
+
.logo {
|
125
|
+
display: flex;
|
126
|
+
flex-direction: column;
|
127
|
+
}
|
128
|
+
|
129
|
+
.logo h1 {
|
130
|
+
margin: 0;
|
131
|
+
}
|
132
|
+
|
133
|
+
.version {
|
134
|
+
font-size: 0.875rem;
|
135
|
+
color: var(--secondary-color);
|
136
|
+
}
|
137
|
+
|
138
|
+
/* Hero section */
|
139
|
+
.hero {
|
140
|
+
margin-bottom: var(--spacing-xl);
|
141
|
+
text-align: center;
|
142
|
+
padding: var(--spacing-xl) 0;
|
143
|
+
}
|
144
|
+
|
145
|
+
/* Cards */
|
146
|
+
.card {
|
147
|
+
background-color: var(--light-bg-secondary);
|
148
|
+
border-radius: var(--border-radius);
|
149
|
+
padding: var(--spacing-lg);
|
150
|
+
box-shadow: var(--shadow-sm);
|
151
|
+
transition: box-shadow 0.3s ease, transform 0.3s ease;
|
152
|
+
margin-bottom: var(--spacing-lg);
|
153
|
+
border: 1px solid var(--light-border);
|
154
|
+
}
|
155
|
+
|
156
|
+
.card:hover {
|
157
|
+
box-shadow: var(--shadow-md);
|
158
|
+
transform: translateY(-3px);
|
159
|
+
}
|
160
|
+
|
161
|
+
/* Buttons */
|
162
|
+
.btn, .button {
|
163
|
+
display: inline-block;
|
164
|
+
font-weight: 400;
|
165
|
+
text-align: center;
|
166
|
+
vertical-align: middle;
|
167
|
+
user-select: none;
|
168
|
+
background-color: var(--secondary-color);
|
169
|
+
border: 1px solid transparent;
|
40
170
|
padding: 0.5rem 1rem;
|
41
|
-
border-radius: 4px;
|
42
171
|
font-size: 1rem;
|
43
|
-
|
172
|
+
line-height: 1.5;
|
173
|
+
border-radius: var(--border-radius);
|
174
|
+
color: white;
|
175
|
+
cursor: pointer;
|
176
|
+
transition: background-color 0.15s ease-in-out;
|
177
|
+
margin-right: var(--spacing-sm);
|
178
|
+
margin-bottom: var(--spacing-sm);
|
179
|
+
}
|
180
|
+
|
181
|
+
.btn:hover, .button:hover {
|
182
|
+
text-decoration: none;
|
183
|
+
background-color: #5a6268;
|
184
|
+
}
|
185
|
+
|
186
|
+
.btn.primary, .button.primary {
|
187
|
+
background-color: var(--primary-color);
|
44
188
|
}
|
45
189
|
|
46
|
-
button:hover {
|
190
|
+
.btn.primary:hover, .button.primary:hover {
|
191
|
+
background-color: var(--primary-hover);
|
192
|
+
}
|
193
|
+
|
194
|
+
.btn.secondary, .button.secondary {
|
47
195
|
background-color: var(--secondary-color);
|
48
196
|
}
|
49
197
|
|
50
|
-
|
51
|
-
padding: 0.5rem;
|
52
|
-
|
53
|
-
border-radius: 4px;
|
54
|
-
font-size: 1rem;
|
55
|
-
width: 100%;
|
198
|
+
.btn.small {
|
199
|
+
padding: 0.25rem 0.5rem;
|
200
|
+
font-size: 0.875rem;
|
56
201
|
}
|
57
202
|
|
58
|
-
/*
|
59
|
-
.
|
203
|
+
/* Navigation */
|
204
|
+
.nav-links {
|
60
205
|
display: flex;
|
61
|
-
|
62
|
-
|
206
|
+
gap: var(--spacing-md);
|
207
|
+
flex-wrap: wrap;
|
63
208
|
}
|
64
209
|
|
65
|
-
.
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
margin: 0 auto;
|
70
|
-
width: 100%;
|
210
|
+
.nav-links a {
|
211
|
+
padding: var(--spacing-sm) var(--spacing-md);
|
212
|
+
border-radius: var(--border-radius);
|
213
|
+
transition: background-color 0.2s ease;
|
71
214
|
}
|
72
215
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
216
|
+
.nav-links a:hover {
|
217
|
+
background-color: rgba(0, 0, 0, 0.05);
|
218
|
+
text-decoration: none;
|
219
|
+
}
|
220
|
+
|
221
|
+
.nav-links a.active {
|
222
|
+
background-color: var(--primary-color);
|
223
|
+
color: white;
|
224
|
+
}
|
225
|
+
|
226
|
+
/* Back link */
|
227
|
+
.back-link {
|
228
|
+
font-size: 1rem;
|
78
229
|
display: flex;
|
79
|
-
justify-content: space-between;
|
80
230
|
align-items: center;
|
81
231
|
}
|
82
232
|
|
83
|
-
|
84
|
-
|
85
|
-
|
233
|
+
/* Feature list */
|
234
|
+
.feature-list {
|
235
|
+
list-style-type: none;
|
236
|
+
padding-left: 0;
|
86
237
|
}
|
87
238
|
|
88
|
-
.
|
89
|
-
|
90
|
-
|
91
|
-
|
239
|
+
.feature-list li {
|
240
|
+
margin-bottom: var(--spacing-sm);
|
241
|
+
position: relative;
|
242
|
+
padding-left: 1.5rem;
|
92
243
|
}
|
93
244
|
|
94
|
-
.
|
95
|
-
|
96
|
-
|
245
|
+
.feature-list li::before {
|
246
|
+
content: '✓';
|
247
|
+
position: absolute;
|
248
|
+
left: 0;
|
249
|
+
color: var(--success-color);
|
250
|
+
font-weight: bold;
|
97
251
|
}
|
98
252
|
|
99
|
-
.
|
100
|
-
|
253
|
+
.feature-list.expanded li {
|
254
|
+
margin-bottom: var(--spacing-md);
|
255
|
+
padding-left: 0;
|
101
256
|
}
|
102
257
|
|
103
|
-
|
104
|
-
|
105
|
-
background-color: white;
|
106
|
-
box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.05);
|
107
|
-
padding: 1.5rem 2rem;
|
108
|
-
margin-top: 2rem;
|
258
|
+
.feature-list.expanded li::before {
|
259
|
+
display: none;
|
109
260
|
}
|
110
261
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
262
|
+
/* Counter */
|
263
|
+
.counter {
|
264
|
+
text-align: center;
|
265
|
+
padding: var(--spacing-md);
|
266
|
+
border-radius: var(--border-radius);
|
267
|
+
background-color: rgba(0, 0, 0, 0.03);
|
268
|
+
}
|
269
|
+
|
270
|
+
.badge {
|
271
|
+
display: inline-block;
|
272
|
+
padding: 0.25rem 0.5rem;
|
273
|
+
font-size: 0.875rem;
|
274
|
+
font-weight: 700;
|
275
|
+
line-height: 1;
|
276
|
+
text-align: center;
|
277
|
+
white-space: nowrap;
|
278
|
+
vertical-align: baseline;
|
279
|
+
border-radius: var(--border-radius);
|
280
|
+
color: white;
|
281
|
+
background-color: var(--secondary-color);
|
117
282
|
}
|
118
283
|
|
119
|
-
|
284
|
+
/* Button group */
|
285
|
+
.button-group {
|
120
286
|
display: flex;
|
121
|
-
|
287
|
+
justify-content: center;
|
288
|
+
gap: var(--spacing-sm);
|
289
|
+
margin-top: var(--spacing-md);
|
122
290
|
}
|
123
291
|
|
124
|
-
/*
|
125
|
-
.
|
292
|
+
/* Server info */
|
293
|
+
.server-info {
|
126
294
|
text-align: center;
|
127
|
-
margin-bottom: 3rem;
|
128
295
|
}
|
129
296
|
|
130
|
-
.
|
131
|
-
|
132
|
-
|
133
|
-
color:
|
297
|
+
.time-container {
|
298
|
+
margin-top: var(--spacing-md);
|
299
|
+
padding: var(--spacing-md);
|
300
|
+
background-color: rgba(0, 0, 0, 0.03);
|
301
|
+
border-radius: var(--border-radius);
|
134
302
|
}
|
135
303
|
|
136
|
-
.
|
137
|
-
font-size:
|
138
|
-
color:
|
139
|
-
margin-
|
304
|
+
.note {
|
305
|
+
font-size: 0.875rem;
|
306
|
+
color: var(--secondary-color);
|
307
|
+
margin-top: var(--spacing-md);
|
308
|
+
font-style: italic;
|
140
309
|
}
|
141
310
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
311
|
+
/* About page */
|
312
|
+
.about-nav {
|
313
|
+
display: flex;
|
314
|
+
justify-content: center;
|
315
|
+
gap: var(--spacing-md);
|
316
|
+
margin-bottom: var(--spacing-lg);
|
147
317
|
}
|
148
318
|
|
149
|
-
.
|
150
|
-
|
151
|
-
border
|
152
|
-
|
153
|
-
|
154
|
-
|
319
|
+
.about-nav button {
|
320
|
+
padding: var(--spacing-sm) var(--spacing-lg);
|
321
|
+
border: none;
|
322
|
+
background: none;
|
323
|
+
border-bottom: 2px solid transparent;
|
324
|
+
cursor: pointer;
|
325
|
+
font-size: 1rem;
|
326
|
+
transition: border-color 0.2s ease;
|
155
327
|
}
|
156
328
|
|
157
|
-
.
|
158
|
-
|
159
|
-
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
|
329
|
+
.about-nav button:hover {
|
330
|
+
border-bottom-color: var(--primary-color);
|
160
331
|
}
|
161
332
|
|
162
|
-
.
|
163
|
-
|
164
|
-
|
333
|
+
.about-nav button.active {
|
334
|
+
border-bottom-color: var(--primary-color);
|
335
|
+
font-weight: 500;
|
165
336
|
}
|
166
337
|
|
167
|
-
.
|
168
|
-
|
169
|
-
align-items: center;
|
170
|
-
justify-content: center;
|
171
|
-
gap: 1rem;
|
172
|
-
margin-top: 1rem;
|
338
|
+
.about-section {
|
339
|
+
margin-bottom: var(--spacing-xl);
|
173
340
|
}
|
174
341
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
342
|
+
/* Team section */
|
343
|
+
.team-grid {
|
344
|
+
display: grid;
|
345
|
+
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
346
|
+
gap: var(--spacing-lg);
|
347
|
+
margin-top: var(--spacing-lg);
|
348
|
+
}
|
349
|
+
|
350
|
+
.team-member {
|
351
|
+
text-align: center;
|
352
|
+
padding: var(--spacing-md);
|
353
|
+
border-radius: var(--border-radius);
|
354
|
+
background-color: var(--light-bg-secondary);
|
355
|
+
box-shadow: var(--shadow-sm);
|
356
|
+
}
|
357
|
+
|
358
|
+
.avatar {
|
359
|
+
width: 80px;
|
360
|
+
height: 80px;
|
361
|
+
border-radius: 50%;
|
362
|
+
background-color: var(--primary-color);
|
363
|
+
color: white;
|
179
364
|
display: flex;
|
180
365
|
align-items: center;
|
181
366
|
justify-content: center;
|
182
|
-
|
367
|
+
font-size: 1.5rem;
|
368
|
+
font-weight: bold;
|
369
|
+
margin: 0 auto var(--spacing-md);
|
183
370
|
}
|
184
371
|
|
185
|
-
.
|
186
|
-
|
187
|
-
|
188
|
-
|
372
|
+
.title {
|
373
|
+
color: var(--secondary-color);
|
374
|
+
font-size: 0.875rem;
|
375
|
+
margin-bottom: var(--spacing-sm);
|
189
376
|
}
|
190
377
|
|
191
|
-
.
|
192
|
-
|
193
|
-
width: 100%;
|
378
|
+
.bio {
|
379
|
+
font-size: 0.875rem;
|
194
380
|
}
|
195
381
|
|
196
|
-
/*
|
197
|
-
|
198
|
-
|
199
|
-
|
382
|
+
/* Footer */
|
383
|
+
footer {
|
384
|
+
text-align: center;
|
385
|
+
padding: var(--spacing-lg) 0;
|
386
|
+
margin-top: var(--spacing-xl);
|
387
|
+
border-top: 1px solid var(--light-border);
|
388
|
+
color: var(--secondary-color);
|
389
|
+
font-size: 0.875rem;
|
200
390
|
}
|
201
391
|
|
202
|
-
|
203
|
-
|
204
|
-
|
392
|
+
/* Form elements */
|
393
|
+
.form-group {
|
394
|
+
margin-bottom: var(--spacing-md);
|
205
395
|
}
|
206
396
|
|
207
|
-
|
208
|
-
|
397
|
+
label {
|
398
|
+
display: block;
|
399
|
+
margin-bottom: var(--spacing-sm);
|
400
|
+
font-weight: 500;
|
209
401
|
}
|
210
402
|
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
font-size:
|
403
|
+
input, select, textarea {
|
404
|
+
width: 100%;
|
405
|
+
padding: var(--spacing-sm);
|
406
|
+
font-size: 1rem;
|
407
|
+
border: 1px solid var(--light-border);
|
408
|
+
border-radius: var(--border-radius);
|
409
|
+
background-color: #fff;
|
215
410
|
}
|
216
411
|
|
217
|
-
|
218
|
-
|
219
|
-
|
412
|
+
input:focus, select:focus, textarea:focus {
|
413
|
+
outline: none;
|
414
|
+
border-color: var(--primary-color);
|
415
|
+
box-shadow: 0 0 0 0.2rem rgba(0, 102, 204, 0.25);
|
220
416
|
}
|
221
417
|
|
222
|
-
.
|
223
|
-
|
418
|
+
.form-grid {
|
419
|
+
display: grid;
|
420
|
+
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
421
|
+
gap: var(--spacing-md);
|
224
422
|
}
|
225
423
|
|
226
|
-
/*
|
227
|
-
.wasm-demo-
|
228
|
-
|
229
|
-
margin: 0 auto;
|
424
|
+
/* WebAssembly Demo */
|
425
|
+
.wasm-demo .intro-section {
|
426
|
+
margin-bottom: var(--spacing-xl);
|
230
427
|
}
|
231
428
|
|
232
|
-
.
|
233
|
-
margin-
|
234
|
-
|
429
|
+
.result-box {
|
430
|
+
margin-top: var(--spacing-md);
|
431
|
+
padding: var(--spacing-md);
|
432
|
+
background-color: rgba(0, 0, 0, 0.03);
|
433
|
+
border-radius: var(--border-radius);
|
235
434
|
}
|
236
435
|
|
237
|
-
.
|
238
|
-
|
239
|
-
|
240
|
-
margin-bottom: 2rem;
|
436
|
+
.result-label {
|
437
|
+
font-weight: 500;
|
438
|
+
margin-bottom: var(--spacing-sm);
|
241
439
|
}
|
242
440
|
|
243
|
-
.
|
244
|
-
|
245
|
-
|
441
|
+
.result-value {
|
442
|
+
font-family: monospace;
|
443
|
+
padding: var(--spacing-sm);
|
444
|
+
background-color: rgba(255, 255, 255, 0.5);
|
445
|
+
border-radius: var(--border-radius);
|
446
|
+
word-break: break-all;
|
246
447
|
}
|
247
448
|
|
248
|
-
.
|
249
|
-
|
250
|
-
border: 1px solid var(--success-color);
|
449
|
+
.array-result {
|
450
|
+
white-space: pre-wrap;
|
251
451
|
}
|
252
452
|
|
253
|
-
.
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
453
|
+
.info-section {
|
454
|
+
margin-top: var(--spacing-xl);
|
455
|
+
padding: var(--spacing-lg);
|
456
|
+
background-color: var(--light-bg-secondary);
|
457
|
+
border-radius: var(--border-radius);
|
458
|
+
box-shadow: var(--shadow-sm);
|
258
459
|
}
|
259
460
|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
461
|
+
/* Loading and error states */
|
462
|
+
.loading-container, .error-container {
|
463
|
+
text-align: center;
|
464
|
+
padding: var(--spacing-xl) 0;
|
264
465
|
}
|
265
466
|
|
266
|
-
.
|
467
|
+
.loading {
|
267
468
|
display: flex;
|
268
|
-
|
469
|
+
flex-direction: column;
|
269
470
|
align-items: center;
|
270
|
-
|
271
|
-
|
471
|
+
justify-content: center;
|
472
|
+
padding: var(--spacing-xl);
|
272
473
|
}
|
273
474
|
|
274
|
-
.
|
275
|
-
width:
|
475
|
+
.spinner {
|
476
|
+
width: 40px;
|
477
|
+
height: 40px;
|
478
|
+
border: 4px solid rgba(0, 0, 0, 0.1);
|
479
|
+
border-radius: 50%;
|
480
|
+
border-top-color: var(--primary-color);
|
481
|
+
animation: spin 1s linear infinite;
|
482
|
+
margin-bottom: var(--spacing-md);
|
276
483
|
}
|
277
484
|
|
278
|
-
|
279
|
-
|
280
|
-
padding: 0.5rem 1rem;
|
281
|
-
border-radius: 4px;
|
282
|
-
margin-top: 1rem;
|
485
|
+
@keyframes spin {
|
486
|
+
to { transform: rotate(360deg); }
|
283
487
|
}
|
284
488
|
|
285
|
-
.
|
286
|
-
|
489
|
+
.error-box {
|
490
|
+
max-width: 600px;
|
491
|
+
margin: 0 auto;
|
492
|
+
padding: var(--spacing-lg);
|
493
|
+
background-color: #f8d7da;
|
494
|
+
color: #721c24;
|
495
|
+
border-radius: var(--border-radius);
|
496
|
+
margin-bottom: var(--spacing-lg);
|
497
|
+
}
|
498
|
+
|
499
|
+
/* Theme toggle and dark mode */
|
500
|
+
.theme-toggle {
|
501
|
+
background: none;
|
502
|
+
border: 1px solid var(--light-border);
|
503
|
+
padding: var(--spacing-sm) var(--spacing-md);
|
504
|
+
border-radius: var(--border-radius);
|
505
|
+
cursor: pointer;
|
506
|
+
transition: background-color 0.2s ease;
|
287
507
|
}
|
288
508
|
|
289
|
-
.
|
290
|
-
|
291
|
-
margin-bottom: 1rem;
|
292
|
-
font-family: monospace;
|
509
|
+
.theme-toggle:hover {
|
510
|
+
background-color: rgba(0, 0, 0, 0.05);
|
293
511
|
}
|
294
512
|
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
margin-top: 1rem;
|
300
|
-
font-family: monospace;
|
301
|
-
overflow-x: auto;
|
513
|
+
/* Dark theme */
|
514
|
+
.dark-theme {
|
515
|
+
background-color: var(--dark-bg);
|
516
|
+
color: var(--dark-text);
|
302
517
|
}
|
303
518
|
|
304
|
-
.
|
305
|
-
|
306
|
-
display: grid;
|
307
|
-
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
308
|
-
gap: 0.5rem;
|
519
|
+
.dark-theme .header {
|
520
|
+
border-bottom-color: var(--dark-border);
|
309
521
|
}
|
310
522
|
|
311
|
-
.
|
312
|
-
background-color:
|
313
|
-
|
314
|
-
|
315
|
-
|
523
|
+
.dark-theme .card {
|
524
|
+
background-color: var(--dark-bg-secondary);
|
525
|
+
border-color: var(--dark-border);
|
526
|
+
}
|
527
|
+
|
528
|
+
.dark-theme input,
|
529
|
+
.dark-theme select,
|
530
|
+
.dark-theme textarea {
|
531
|
+
background-color: #2c3136;
|
532
|
+
border-color: var(--dark-border);
|
533
|
+
color: var(--dark-text);
|
534
|
+
}
|
535
|
+
|
536
|
+
.dark-theme .theme-toggle {
|
537
|
+
border-color: var(--dark-border);
|
538
|
+
color: var(--dark-text);
|
539
|
+
}
|
540
|
+
|
541
|
+
.dark-theme .theme-toggle:hover {
|
542
|
+
background-color: rgba(255, 255, 255, 0.1);
|
543
|
+
}
|
544
|
+
|
545
|
+
.dark-theme footer {
|
546
|
+
border-top-color: var(--dark-border);
|
547
|
+
}
|
548
|
+
|
549
|
+
.dark-theme .result-box,
|
550
|
+
.dark-theme .time-container,
|
551
|
+
.dark-theme .counter {
|
552
|
+
background-color: rgba(255, 255, 255, 0.05);
|
553
|
+
}
|
554
|
+
|
555
|
+
.dark-theme .result-value {
|
556
|
+
background-color: rgba(0, 0, 0, 0.2);
|
557
|
+
}
|
558
|
+
|
559
|
+
.dark-theme .info-section {
|
560
|
+
background-color: var(--dark-bg-secondary);
|
316
561
|
}
|
317
562
|
|
318
563
|
/* Responsive adjustments */
|
319
564
|
@media (max-width: 768px) {
|
320
|
-
.
|
565
|
+
.header {
|
321
566
|
flex-direction: column;
|
322
|
-
gap:
|
567
|
+
gap: var(--spacing-md);
|
323
568
|
text-align: center;
|
324
569
|
}
|
325
|
-
|
326
|
-
.
|
327
|
-
|
328
|
-
flex-wrap: wrap;
|
329
|
-
gap: 1rem;
|
570
|
+
|
571
|
+
.grid, .demo-grid {
|
572
|
+
grid-template-columns: 1fr;
|
330
573
|
}
|
331
|
-
|
332
|
-
.
|
574
|
+
|
575
|
+
.about-nav {
|
333
576
|
flex-direction: column;
|
334
|
-
|
335
|
-
text-align: center;
|
336
|
-
}
|
337
|
-
|
338
|
-
.footer-links {
|
339
|
-
justify-content: center;
|
340
|
-
}
|
341
|
-
|
342
|
-
.content {
|
343
|
-
padding: 1rem;
|
577
|
+
align-items: center;
|
344
578
|
}
|
345
579
|
}
|