frontend-hamroun 1.2.79 → 1.2.80

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 (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -1513
  3. package/bin/cli.js +505 -144
  4. package/dist/index.cjs +2 -0
  5. package/dist/index.cjs.map +1 -0
  6. package/dist/index.client.cjs +2 -0
  7. package/dist/index.client.cjs.map +1 -0
  8. package/dist/index.client.js +26 -0
  9. package/dist/index.client.js.map +1 -0
  10. package/dist/index.js +298 -1
  11. package/dist/index.js.map +1 -0
  12. package/dist/jsx-runtime.cjs +2 -0
  13. package/dist/jsx-runtime.cjs.map +1 -0
  14. package/dist/jsx-runtime.js +93 -1
  15. package/dist/jsx-runtime.js.map +1 -0
  16. package/dist/renderer-Bo9zkUZ_.js +52 -0
  17. package/dist/renderer-Bo9zkUZ_.js.map +1 -0
  18. package/dist/renderer-Din1y3YM.cjs +2 -0
  19. package/dist/renderer-Din1y3YM.cjs.map +1 -0
  20. package/dist/server-renderer-CqIpQ-od.cjs +2 -0
  21. package/dist/server-renderer-CqIpQ-od.cjs.map +1 -0
  22. package/dist/server-renderer-QHt45Ip2.js +255 -0
  23. package/dist/server-renderer-QHt45Ip2.js.map +1 -0
  24. package/dist/server-renderer.cjs +2 -0
  25. package/dist/server-renderer.cjs.map +1 -0
  26. package/dist/server-renderer.js +5 -1
  27. package/dist/server-renderer.js.map +1 -0
  28. package/package.json +77 -120
  29. package/templates/basic-app/build.js +22 -0
  30. package/templates/basic-app/bun.lock +196 -0
  31. package/templates/basic-app/dev.js +27 -0
  32. package/templates/basic-app/docs/rapport_pfe.aux +27 -27
  33. package/templates/basic-app/docs/rapport_pfe.out +10 -10
  34. package/templates/basic-app/docs/rapport_pfe.toc +14 -14
  35. package/templates/basic-app/esbuild.config.js +28 -0
  36. package/templates/basic-app/index.html +1 -1
  37. package/templates/{fullstack-app → basic-app}/package-lock.json +4185 -5094
  38. package/templates/basic-app/package.json +29 -28
  39. package/templates/basic-app/server.js +24 -0
  40. package/templates/basic-app/src/App.tsx +26 -0
  41. package/templates/basic-app/src/client.tsx +11 -0
  42. package/templates/basic-app/src/components/Counter.tsx +18 -0
  43. package/templates/basic-app/src/jsx-shim.ts +4 -0
  44. package/templates/basic-app/src/main.tsx +0 -1
  45. package/templates/basic-app/src/server.ts +52 -0
  46. package/templates/basic-app/tsconfig.server.json +11 -0
  47. package/templates/fullstack-app/build/main.css +874 -874
  48. package/templates/fullstack-app/build/main.css.map +7 -7
  49. package/templates/fullstack-app/build/main.js +967 -967
  50. package/templates/fullstack-app/build/main.js.map +7 -7
  51. package/templates/fullstack-app/public/styles.css +768 -768
  52. package/templates/go/example.go +99 -154
  53. package/templates/go-wasm-app/babel.config.js +2 -8
  54. package/templates/go-wasm-app/package.json +12 -21
  55. package/templates/go-wasm-app/public/wasm/wasm_exec.js +561 -561
  56. package/templates/go-wasm-app/public/wasm/wasm_exec_node.js +39 -39
  57. package/templates/go-wasm-app/server.js +510 -59
  58. package/templates/go-wasm-app/src/app.js +2 -22
  59. package/templates/go-wasm-app/src/wasm/example.go +75 -75
  60. package/templates/go-wasm-app/vite.config.js +5 -16
  61. package/templates/ssr-template/server.js +2 -2
  62. package/templates/ssr-template/vite.config.js +5 -16
  63. package/dist/Counter.d.ts +0 -0
  64. package/dist/batch/package.json +0 -16
  65. package/dist/client-router/package.json +0 -16
  66. package/dist/component/package.json +0 -16
  67. package/dist/context/package.json +0 -16
  68. package/dist/event-bus/package.json +0 -16
  69. package/dist/forms/package.json +0 -16
  70. package/dist/hooks/package.json +0 -16
  71. package/dist/hooks-0728361a.cjs +0 -1
  72. package/dist/hooks-b58f947c.js +0 -133
  73. package/dist/hooks.js +0 -1
  74. package/dist/hooks.mjs +0 -13
  75. package/dist/index.mjs +0 -137
  76. package/dist/jsx-runtime/package.json +0 -16
  77. package/dist/jsx-runtime.mjs +0 -64
  78. package/dist/lifecycle-events/package.json +0 -16
  79. package/dist/package.json +0 -71
  80. package/dist/render-component/package.json +0 -16
  81. package/dist/renderer/package.json +0 -16
  82. package/dist/renderer.js +0 -1
  83. package/dist/renderer.mjs +0 -27
  84. package/dist/router/package.json +0 -16
  85. package/dist/server/package.json +0 -17
  86. package/dist/server/src/batch.d.ts +0 -3
  87. package/dist/server/src/batch.js +0 -23
  88. package/dist/server/src/batch.js.map +0 -1
  89. package/dist/server/src/client-router.d.ts +0 -60
  90. package/dist/server/src/client-router.js +0 -210
  91. package/dist/server/src/client-router.js.map +0 -1
  92. package/dist/server/src/component.d.ts +0 -14
  93. package/dist/server/src/component.js +0 -106
  94. package/dist/server/src/component.js.map +0 -1
  95. package/dist/server/src/context.d.ts +0 -13
  96. package/dist/server/src/context.js +0 -21
  97. package/dist/server/src/context.js.map +0 -1
  98. package/dist/server/src/event-bus.d.ts +0 -23
  99. package/dist/server/src/event-bus.js +0 -75
  100. package/dist/server/src/event-bus.js.map +0 -1
  101. package/dist/server/src/forms.d.ts +0 -40
  102. package/dist/server/src/forms.js +0 -148
  103. package/dist/server/src/forms.js.map +0 -1
  104. package/dist/server/src/hooks.d.ts +0 -12
  105. package/dist/server/src/hooks.js +0 -170
  106. package/dist/server/src/hooks.js.map +0 -1
  107. package/dist/server/src/index.client.d.ts +0 -12
  108. package/dist/server/src/index.client.js +0 -14
  109. package/dist/server/src/index.client.js.map +0 -1
  110. package/dist/server/src/index.d.ts +0 -88
  111. package/dist/server/src/index.js +0 -79
  112. package/dist/server/src/index.js.map +0 -1
  113. package/dist/server/src/jsx-runtime/jsx-dev-runtime.d.ts +0 -1
  114. package/dist/server/src/jsx-runtime/jsx-dev-runtime.js +0 -2
  115. package/dist/server/src/jsx-runtime/jsx-dev-runtime.js.map +0 -1
  116. package/dist/server/src/jsx-runtime/jsx-runtime.d.ts +0 -4
  117. package/dist/server/src/jsx-runtime/jsx-runtime.js +0 -41
  118. package/dist/server/src/jsx-runtime/jsx-runtime.js.map +0 -1
  119. package/dist/server/src/jsx-runtime.d.ts +0 -20
  120. package/dist/server/src/jsx-runtime.js +0 -105
  121. package/dist/server/src/jsx-runtime.js.map +0 -1
  122. package/dist/server/src/lifecycle-events.d.ts +0 -108
  123. package/dist/server/src/lifecycle-events.js +0 -177
  124. package/dist/server/src/lifecycle-events.js.map +0 -1
  125. package/dist/server/src/renderComponent.d.ts +0 -13
  126. package/dist/server/src/renderComponent.js +0 -30
  127. package/dist/server/src/renderComponent.js.map +0 -1
  128. package/dist/server/src/renderer.d.ts +0 -2
  129. package/dist/server/src/renderer.js +0 -31
  130. package/dist/server/src/renderer.js.map +0 -1
  131. package/dist/server/src/router.d.ts +0 -55
  132. package/dist/server/src/router.js +0 -166
  133. package/dist/server/src/router.js.map +0 -1
  134. package/dist/server/src/server/api-router.d.ts +0 -15
  135. package/dist/server/src/server/api-router.js +0 -111
  136. package/dist/server/src/server/api-router.js.map +0 -1
  137. package/dist/server/src/server/auth.d.ts +0 -32
  138. package/dist/server/src/server/auth.js +0 -80
  139. package/dist/server/src/server/auth.js.map +0 -1
  140. package/dist/server/src/server/database.d.ts +0 -24
  141. package/dist/server/src/server/database.js +0 -135
  142. package/dist/server/src/server/database.js.map +0 -1
  143. package/dist/server/src/server/index.d.ts +0 -116
  144. package/dist/server/src/server/index.js +0 -508
  145. package/dist/server/src/server/index.js.map +0 -1
  146. package/dist/server/src/server/middleware.d.ts +0 -11
  147. package/dist/server/src/server/middleware.js +0 -46
  148. package/dist/server/src/server/middleware.js.map +0 -1
  149. package/dist/server/src/server/server.d.ts +0 -9
  150. package/dist/server/src/server/server.js +0 -87
  151. package/dist/server/src/server/server.js.map +0 -1
  152. package/dist/server/src/server/templates.d.ts +0 -30
  153. package/dist/server/src/server/templates.js +0 -208
  154. package/dist/server/src/server/templates.js.map +0 -1
  155. package/dist/server/src/server/types.d.ts +0 -38
  156. package/dist/server/src/server/types.js +0 -4
  157. package/dist/server/src/server/types.js.map +0 -1
  158. package/dist/server/src/server/utils.d.ts +0 -70
  159. package/dist/server/src/server/utils.js +0 -156
  160. package/dist/server/src/server/utils.js.map +0 -1
  161. package/dist/server/src/server/wasm.d.ts +0 -9
  162. package/dist/server/src/server/wasm.js +0 -117
  163. package/dist/server/src/server/wasm.js.map +0 -1
  164. package/dist/server/src/server-renderer.d.ts +0 -5
  165. package/dist/server/src/server-renderer.js +0 -106
  166. package/dist/server/src/server-renderer.js.map +0 -1
  167. package/dist/server/src/server-types.d.ts +0 -42
  168. package/dist/server/src/server-types.js +0 -6
  169. package/dist/server/src/server-types.js.map +0 -1
  170. package/dist/server/src/store.d.ts +0 -41
  171. package/dist/server/src/store.js +0 -99
  172. package/dist/server/src/store.js.map +0 -1
  173. package/dist/server/src/types.d.ts +0 -19
  174. package/dist/server/src/types.js +0 -2
  175. package/dist/server/src/types.js.map +0 -1
  176. package/dist/server/src/utils.d.ts +0 -46
  177. package/dist/server/src/utils.js +0 -144
  178. package/dist/server/src/utils.js.map +0 -1
  179. package/dist/server/src/vdom.d.ts +0 -8
  180. package/dist/server/src/vdom.js +0 -22
  181. package/dist/server/src/vdom.js.map +0 -1
  182. package/dist/server/src/wasm.d.ts +0 -36
  183. package/dist/server/src/wasm.js +0 -159
  184. package/dist/server/src/wasm.js.map +0 -1
  185. package/dist/server/tsconfig.server.tsbuildinfo +0 -1
  186. package/dist/server-renderer/package.json +0 -16
  187. package/dist/server-renderer.mjs +0 -64
  188. package/dist/store/package.json +0 -16
  189. package/dist/types/package.json +0 -16
  190. package/dist/utils/package.json +0 -16
  191. package/dist/vdom/package.json +0 -16
  192. package/dist/wasm/package.json +0 -16
  193. package/dist/wasm.js +0 -1
  194. package/dist/wasm.mjs +0 -103
  195. package/templates/basic-app/docs/rapport_pfe.log +0 -399
  196. package/templates/complete-app/client.js +0 -58
  197. package/templates/complete-app/package-lock.json +0 -2536
  198. package/templates/complete-app/package.json +0 -17
  199. package/templates/complete-app/pages/about.js +0 -119
  200. package/templates/complete-app/pages/index.js +0 -157
  201. package/templates/complete-app/pages/wasm-demo.js +0 -290
  202. package/templates/complete-app/public/client.js +0 -80
  203. package/templates/complete-app/public/index.html +0 -47
  204. package/templates/complete-app/public/styles.css +0 -579
  205. package/templates/complete-app/readme.md +0 -188
  206. package/templates/complete-app/server.js +0 -417
  207. package/templates/complete-app/server.ts +0 -275
  208. package/templates/complete-app/src/App.tsx +0 -59
  209. package/templates/complete-app/src/client.ts +0 -61
  210. package/templates/complete-app/src/client.tsx +0 -18
  211. package/templates/complete-app/src/pages/index.tsx +0 -51
  212. package/templates/complete-app/src/server.ts +0 -218
  213. package/templates/complete-app/tsconfig.json +0 -22
  214. package/templates/complete-app/tsconfig.server.json +0 -19
  215. package/templates/complete-app/vite.config.js +0 -57
  216. package/templates/complete-app/vite.config.ts +0 -30
  217. package/templates/go-wasm-app/build.config.js +0 -62
  218. package/templates/go-wasm-app/build.js +0 -218
  219. package/templates/go-wasm-app/package-lock.json +0 -3732
@@ -1,47 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Static Fallback</title>
7
- <!-- Import Tailwind-like styles for quick styling -->
8
- <link href="https://cdn.jsdelivr.net/npm/daisyui@3.7.4/dist/full.css" rel="stylesheet" type="text/css" />
9
- <script src="https://cdn.tailwindcss.com"></script>
10
- <!-- Client-side script for hydration -->
11
- <script type="module" src="/src/client.tsx"></script>
12
- <style>
13
- body {
14
- font-family: sans-serif;
15
- max-width: 800px;
16
- margin: 0 auto;
17
- padding: 2rem;
18
- line-height: 1.6;
19
- }
20
- .warning {
21
- background-color: #fff3cd;
22
- border: 1px solid #ffecb5;
23
- color: #856404;
24
- padding: 1rem;
25
- border-radius: 4px;
26
- margin-bottom: 1rem;
27
- }
28
- code {
29
- background-color: #f5f5f5;
30
- padding: 0.2rem 0.4rem;
31
- border-radius: 3px;
32
- }
33
- </style>
34
- </head>
35
- <body>
36
- <!-- App will be rendered here by SSR -->
37
- <div id="app">
38
- <div class="warning">
39
- <h2>STATIC INDEX.HTML FILE</h2>
40
- <p>You should NOT be seeing this page if the server is running correctly.</p>
41
- <p>This is a static file that should only be used as a fallback when the server is not running.</p>
42
- <p>If you're seeing this while running <code>npm run dev</code>, there's likely an issue with the Express route handling.</p>
43
- <p>Try clearing your browser cache and refreshing the page.</p>
44
- </div>
45
- </div>
46
- </body>
47
- </html>
@@ -1,579 +0,0 @@
1
- /* Color scheme */
2
- :root {
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);
38
- }
39
-
40
- /* Base styles */
41
- * {
42
- box-sizing: border-box;
43
- margin: 0;
44
- padding: 0;
45
- }
46
-
47
- html {
48
- font-size: 16px;
49
- line-height: 1.5;
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);
101
- }
102
-
103
- a {
104
- color: var(--primary-color);
105
- text-decoration: none;
106
- transition: color 0.2s ease;
107
- }
108
-
109
- a:hover {
110
- color: var(--primary-hover);
111
- text-decoration: underline;
112
- }
113
-
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;
170
- padding: 0.5rem 1rem;
171
- font-size: 1rem;
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);
188
- }
189
-
190
- .btn.primary:hover, .button.primary:hover {
191
- background-color: var(--primary-hover);
192
- }
193
-
194
- .btn.secondary, .button.secondary {
195
- background-color: var(--secondary-color);
196
- }
197
-
198
- .btn.small {
199
- padding: 0.25rem 0.5rem;
200
- font-size: 0.875rem;
201
- }
202
-
203
- /* Navigation */
204
- .nav-links {
205
- display: flex;
206
- gap: var(--spacing-md);
207
- flex-wrap: wrap;
208
- }
209
-
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;
214
- }
215
-
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;
229
- display: flex;
230
- align-items: center;
231
- }
232
-
233
- /* Feature list */
234
- .feature-list {
235
- list-style-type: none;
236
- padding-left: 0;
237
- }
238
-
239
- .feature-list li {
240
- margin-bottom: var(--spacing-sm);
241
- position: relative;
242
- padding-left: 1.5rem;
243
- }
244
-
245
- .feature-list li::before {
246
- content: '✓';
247
- position: absolute;
248
- left: 0;
249
- color: var(--success-color);
250
- font-weight: bold;
251
- }
252
-
253
- .feature-list.expanded li {
254
- margin-bottom: var(--spacing-md);
255
- padding-left: 0;
256
- }
257
-
258
- .feature-list.expanded li::before {
259
- display: none;
260
- }
261
-
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);
282
- }
283
-
284
- /* Button group */
285
- .button-group {
286
- display: flex;
287
- justify-content: center;
288
- gap: var(--spacing-sm);
289
- margin-top: var(--spacing-md);
290
- }
291
-
292
- /* Server info */
293
- .server-info {
294
- text-align: center;
295
- }
296
-
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);
302
- }
303
-
304
- .note {
305
- font-size: 0.875rem;
306
- color: var(--secondary-color);
307
- margin-top: var(--spacing-md);
308
- font-style: italic;
309
- }
310
-
311
- /* About page */
312
- .about-nav {
313
- display: flex;
314
- justify-content: center;
315
- gap: var(--spacing-md);
316
- margin-bottom: var(--spacing-lg);
317
- }
318
-
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;
327
- }
328
-
329
- .about-nav button:hover {
330
- border-bottom-color: var(--primary-color);
331
- }
332
-
333
- .about-nav button.active {
334
- border-bottom-color: var(--primary-color);
335
- font-weight: 500;
336
- }
337
-
338
- .about-section {
339
- margin-bottom: var(--spacing-xl);
340
- }
341
-
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;
364
- display: flex;
365
- align-items: center;
366
- justify-content: center;
367
- font-size: 1.5rem;
368
- font-weight: bold;
369
- margin: 0 auto var(--spacing-md);
370
- }
371
-
372
- .title {
373
- color: var(--secondary-color);
374
- font-size: 0.875rem;
375
- margin-bottom: var(--spacing-sm);
376
- }
377
-
378
- .bio {
379
- font-size: 0.875rem;
380
- }
381
-
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;
390
- }
391
-
392
- /* Form elements */
393
- .form-group {
394
- margin-bottom: var(--spacing-md);
395
- }
396
-
397
- label {
398
- display: block;
399
- margin-bottom: var(--spacing-sm);
400
- font-weight: 500;
401
- }
402
-
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;
410
- }
411
-
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);
416
- }
417
-
418
- .form-grid {
419
- display: grid;
420
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
421
- gap: var(--spacing-md);
422
- }
423
-
424
- /* WebAssembly Demo */
425
- .wasm-demo .intro-section {
426
- margin-bottom: var(--spacing-xl);
427
- }
428
-
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);
434
- }
435
-
436
- .result-label {
437
- font-weight: 500;
438
- margin-bottom: var(--spacing-sm);
439
- }
440
-
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;
447
- }
448
-
449
- .array-result {
450
- white-space: pre-wrap;
451
- }
452
-
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);
459
- }
460
-
461
- /* Loading and error states */
462
- .loading-container, .error-container {
463
- text-align: center;
464
- padding: var(--spacing-xl) 0;
465
- }
466
-
467
- .loading {
468
- display: flex;
469
- flex-direction: column;
470
- align-items: center;
471
- justify-content: center;
472
- padding: var(--spacing-xl);
473
- }
474
-
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);
483
- }
484
-
485
- @keyframes spin {
486
- to { transform: rotate(360deg); }
487
- }
488
-
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;
507
- }
508
-
509
- .theme-toggle:hover {
510
- background-color: rgba(0, 0, 0, 0.05);
511
- }
512
-
513
- /* Dark theme */
514
- .dark-theme {
515
- background-color: var(--dark-bg);
516
- color: var(--dark-text);
517
- }
518
-
519
- .dark-theme .header {
520
- border-bottom-color: var(--dark-border);
521
- }
522
-
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);
561
- }
562
-
563
- /* Responsive adjustments */
564
- @media (max-width: 768px) {
565
- .header {
566
- flex-direction: column;
567
- gap: var(--spacing-md);
568
- text-align: center;
569
- }
570
-
571
- .grid, .demo-grid {
572
- grid-template-columns: 1fr;
573
- }
574
-
575
- .about-nav {
576
- flex-direction: column;
577
- align-items: center;
578
- }
579
- }