elementdrawing 1.0.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.
Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/dist/elementdrawing.min.js +3 -0
  3. package/dist/elementdrawing.min.js.LICENSE.txt +8 -0
  4. package/dist/elementdrawing.min.js.map +1 -0
  5. package/dist/index.html +1 -0
  6. package/package.json +127 -0
  7. package/src/core/bridge.h +855 -0
  8. package/src/core/diff.c +900 -0
  9. package/src/core/element.c +1078 -0
  10. package/src/core/event.c +813 -0
  11. package/src/core/fiber.c +1027 -0
  12. package/src/core/hooks.c +919 -0
  13. package/src/core/renderer.c +963 -0
  14. package/src/core/scheduler.c +702 -0
  15. package/src/core/state.c +803 -0
  16. package/src/css/animations.css +779 -0
  17. package/src/css/base.css +615 -0
  18. package/src/css/components.css +1311 -0
  19. package/src/css/tailwind.css +370 -0
  20. package/src/css/themes.css +517 -0
  21. package/src/css/utilities.css +475 -0
  22. package/src/index.js +746 -0
  23. package/src/js/animation.js +655 -0
  24. package/src/js/dom.js +665 -0
  25. package/src/js/events.js +585 -0
  26. package/src/js/http.js +446 -0
  27. package/src/js/index.js +26 -0
  28. package/src/js/router.js +483 -0
  29. package/src/js/store.js +539 -0
  30. package/src/js/utils.js +593 -0
  31. package/src/js/validator.js +529 -0
  32. package/src/jsx/components/Accordion.jsx +210 -0
  33. package/src/jsx/components/Alert.jsx +169 -0
  34. package/src/jsx/components/Avatar.jsx +214 -0
  35. package/src/jsx/components/Badge.jsx +136 -0
  36. package/src/jsx/components/Breadcrumb.jsx +200 -0
  37. package/src/jsx/components/Button.jsx +188 -0
  38. package/src/jsx/components/Card.jsx +192 -0
  39. package/src/jsx/components/Carousel.jsx +278 -0
  40. package/src/jsx/components/Checkbox.jsx +215 -0
  41. package/src/jsx/components/Dialog.jsx +242 -0
  42. package/src/jsx/components/Drawer.jsx +190 -0
  43. package/src/jsx/components/Dropdown.jsx +268 -0
  44. package/src/jsx/components/Form.jsx +274 -0
  45. package/src/jsx/components/Input.jsx +285 -0
  46. package/src/jsx/components/Menu.jsx +276 -0
  47. package/src/jsx/components/Modal.jsx +274 -0
  48. package/src/jsx/components/Navbar.jsx +292 -0
  49. package/src/jsx/components/Pagination.jsx +268 -0
  50. package/src/jsx/components/Progress.jsx +252 -0
  51. package/src/jsx/components/Radio.jsx +208 -0
  52. package/src/jsx/components/Select.jsx +397 -0
  53. package/src/jsx/components/Sidebar.jsx +250 -0
  54. package/src/jsx/components/Slider.jsx +310 -0
  55. package/src/jsx/components/Spinner.jsx +198 -0
  56. package/src/jsx/components/Switch.jsx +201 -0
  57. package/src/jsx/components/Table.jsx +332 -0
  58. package/src/jsx/components/Tabs.jsx +227 -0
  59. package/src/jsx/components/Textarea.jsx +212 -0
  60. package/src/jsx/components/Toast.jsx +270 -0
  61. package/src/jsx/components/Tooltip.jsx +178 -0
  62. package/src/jsx/components/Typography.jsx +299 -0
  63. package/src/jsx/components/index.jsx +70 -0
  64. package/src/jsx/core/element.js +3 -0
  65. package/src/jsx/hooks/index.js +356 -0
  66. package/src/jsx/hooks/useCallback.js +472 -0
  67. package/src/jsx/hooks/useContext.js +586 -0
  68. package/src/jsx/hooks/useEffect.js +704 -0
  69. package/src/jsx/hooks/useLayoutEffect.js +508 -0
  70. package/src/jsx/hooks/useMemo.js +689 -0
  71. package/src/jsx/hooks/useReducer.js +729 -0
  72. package/src/jsx/hooks/useRef.js +542 -0
  73. package/src/jsx/hooks/useState.js +854 -0
  74. package/src/jsx/runtime/commit.js +903 -0
  75. package/src/jsx/runtime/createElement.js +860 -0
  76. package/src/jsx/runtime/index.js +356 -0
  77. package/src/jsx/runtime/reconcile.js +687 -0
  78. package/src/jsx/runtime/render.js +914 -0
@@ -0,0 +1,370 @@
1
+ /*
2
+ * ElementDrawing Framework - Tailwind CSS Entry Point
3
+ * Main stylesheet with Tailwind directives, custom layers,
4
+ * and ElementDrawing base styles.
5
+ *
6
+ * @version 1.0.0
7
+ * @license MIT
8
+ */
9
+
10
+ /* ─── Tailwind Directives ──────────────────────────────────────────────────── */
11
+
12
+ @tailwind base;
13
+ @tailwind components;
14
+ @tailwind utilities;
15
+
16
+ /* ─── Tailwind Config Import ───────────────────────────────────────────────── */
17
+
18
+ @config "../../tailwind.config.js";
19
+
20
+ /* ─── Custom Base Layer ────────────────────────────────────────────────────── */
21
+
22
+ @layer base {
23
+ /* ── Font Face Declarations ── */
24
+ @font-face {
25
+ font-family: "ElementDrawing";
26
+ src: url("../assets/fonts/elementdrawing-regular.woff2") format("woff2"),
27
+ url("../assets/fonts/elementdrawing-regular.woff") format("woff");
28
+ font-weight: 400;
29
+ font-style: normal;
30
+ font-display: swap;
31
+ }
32
+
33
+ @font-face {
34
+ font-family: "ElementDrawing";
35
+ src: url("../assets/fonts/elementdrawing-medium.woff2") format("woff2"),
36
+ url("../assets/fonts/elementdrawing-medium.woff") format("woff");
37
+ font-weight: 500;
38
+ font-style: normal;
39
+ font-display: swap;
40
+ }
41
+
42
+ @font-face {
43
+ font-family: "ElementDrawing";
44
+ src: url("../assets/fonts/elementdrawing-semibold.woff2") format("woff2"),
45
+ url("../assets/fonts/elementdrawing-semibold.woff") format("woff");
46
+ font-weight: 600;
47
+ font-style: normal;
48
+ font-display: swap;
49
+ }
50
+
51
+ @font-face {
52
+ font-family: "ElementDrawing";
53
+ src: url("../assets/fonts/elementdrawing-bold.woff2") format("woff2"),
54
+ url("../assets/fonts/elementdrawing-bold.woff") format("woff");
55
+ font-weight: 700;
56
+ font-style: normal;
57
+ font-display: swap;
58
+ }
59
+
60
+ /* ── CSS Custom Properties ── */
61
+ :root {
62
+ --ed-font-family: "ElementDrawing", -apple-system, BlinkMacSystemFont,
63
+ "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
64
+ --ed-font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code",
65
+ "Consolas", monospace;
66
+ --ed-font-size-xs: 0.75rem;
67
+ --ed-font-size-sm: 0.875rem;
68
+ --ed-font-size-base: 1rem;
69
+ --ed-font-size-lg: 1.125rem;
70
+ --ed-font-size-xl: 1.25rem;
71
+ --ed-font-size-2xl: 1.5rem;
72
+ --ed-font-size-3xl: 1.875rem;
73
+ --ed-font-size-4xl: 2.25rem;
74
+ --ed-line-height-tight: 1.25;
75
+ --ed-line-height-normal: 1.5;
76
+ --ed-line-height-relaxed: 1.75;
77
+ --ed-spacing-unit: 0.25rem;
78
+ --ed-border-radius-sm: 0.25rem;
79
+ --ed-border-radius: 0.375rem;
80
+ --ed-border-radius-md: 0.5rem;
81
+ --ed-border-radius-lg: 0.75rem;
82
+ --ed-border-radius-xl: 1rem;
83
+ --ed-border-radius-full: 9999px;
84
+ --ed-transition-fast: 150ms ease;
85
+ --ed-transition-base: 250ms ease;
86
+ --ed-transition-slow: 350ms ease;
87
+ --ed-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
88
+ --ed-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
89
+ --ed-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
90
+ --ed-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
91
+ --ed-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
92
+ --ed-z-dropdown: 1000;
93
+ --ed-z-sticky: 1020;
94
+ --ed-z-fixed: 1030;
95
+ --ed-z-modal-backdrop: 1040;
96
+ --ed-z-modal: 1050;
97
+ --ed-z-popover: 1060;
98
+ --ed-z-tooltip: 1070;
99
+ --ed-z-toast: 1080;
100
+ }
101
+
102
+ /* ── Base HTML Styles ── */
103
+ html {
104
+ font-family: var(--ed-font-family);
105
+ font-size: var(--ed-font-size-base);
106
+ line-height: var(--ed-line-height-normal);
107
+ -webkit-text-size-adjust: 100%;
108
+ -moz-text-size-adjust: 100%;
109
+ text-size-adjust: 100%;
110
+ -webkit-font-smoothing: antialiased;
111
+ -moz-osx-font-smoothing: grayscale;
112
+ text-rendering: optimizeLegibility;
113
+ scroll-behavior: smooth;
114
+ tab-size: 4;
115
+ }
116
+
117
+ body {
118
+ margin: 0;
119
+ padding: 0;
120
+ min-height: 100vh;
121
+ color: var(--ed-text-primary, #1a1a2e);
122
+ background-color: var(--ed-bg-primary, #ffffff);
123
+ }
124
+
125
+ /* ── Scrollbar Styles ── */
126
+ * {
127
+ scrollbar-width: thin;
128
+ scrollbar-color: var(--ed-scrollbar-thumb, #c1c1c1) var(--ed-scrollbar-track, #f1f1f1);
129
+ }
130
+
131
+ *::-webkit-scrollbar {
132
+ width: 8px;
133
+ height: 8px;
134
+ }
135
+
136
+ *::-webkit-scrollbar-track {
137
+ background: var(--ed-scrollbar-track, #f1f1f1);
138
+ border-radius: var(--ed-border-radius);
139
+ }
140
+
141
+ *::-webkit-scrollbar-thumb {
142
+ background: var(--ed-scrollbar-thumb, #c1c1c1);
143
+ border-radius: var(--ed-border-radius);
144
+ border: 2px solid var(--ed-scrollbar-track, #f1f1f1);
145
+ }
146
+
147
+ *::-webkit-scrollbar-thumb:hover {
148
+ background: var(--ed-scrollbar-thumb-hover, #a0a0a0);
149
+ }
150
+
151
+ /* ── Selection Styles ── */
152
+ ::selection {
153
+ background-color: var(--ed-selection-bg, rgba(59, 130, 246, 0.3));
154
+ color: var(--ed-selection-color, inherit);
155
+ }
156
+
157
+ ::-moz-selection {
158
+ background-color: var(--ed-selection-bg, rgba(59, 130, 246, 0.3));
159
+ color: var(--ed-selection-color, inherit);
160
+ }
161
+
162
+ /* ── Focus Styles ── */
163
+ :focus-visible {
164
+ outline: 2px solid var(--ed-focus-ring, #3b82f6);
165
+ outline-offset: 2px;
166
+ }
167
+
168
+ :focus:not(:focus-visible) {
169
+ outline: none;
170
+ }
171
+ }
172
+
173
+ /* ─── Custom Components Layer ──────────────────────────────────────────────── */
174
+
175
+ @layer components {
176
+ /* ── Button Base ── */
177
+ .ed-btn {
178
+ display: inline-flex;
179
+ align-items: center;
180
+ justify-content: center;
181
+ gap: 0.5rem;
182
+ padding: 0.5rem 1rem;
183
+ font-family: var(--ed-font-family);
184
+ font-size: var(--ed-font-size-sm);
185
+ font-weight: 500;
186
+ line-height: var(--ed-line-height-tight);
187
+ border: 1px solid transparent;
188
+ border-radius: var(--ed-border-radius);
189
+ cursor: pointer;
190
+ transition: all var(--ed-transition-fast);
191
+ user-select: none;
192
+ white-space: nowrap;
193
+ text-decoration: none;
194
+ }
195
+
196
+ .ed-btn:disabled {
197
+ opacity: 0.5;
198
+ cursor: not-allowed;
199
+ pointer-events: none;
200
+ }
201
+
202
+ /* ── Card Base ── */
203
+ .ed-card {
204
+ background-color: var(--ed-card-bg, #ffffff);
205
+ border: 1px solid var(--ed-card-border, #e5e7eb);
206
+ border-radius: var(--ed-border-radius-lg);
207
+ box-shadow: var(--ed-shadow-sm);
208
+ overflow: hidden;
209
+ }
210
+
211
+ .ed-card-header {
212
+ padding: 1rem 1.5rem;
213
+ border-bottom: 1px solid var(--ed-card-border, #e5e7eb);
214
+ }
215
+
216
+ .ed-card-body {
217
+ padding: 1.5rem;
218
+ }
219
+
220
+ .ed-card-footer {
221
+ padding: 1rem 1.5rem;
222
+ border-top: 1px solid var(--ed-card-border, #e5e7eb);
223
+ }
224
+
225
+ /* ── Modal Base ── */
226
+ .ed-modal-overlay {
227
+ position: fixed;
228
+ inset: 0;
229
+ background-color: rgba(0, 0, 0, 0.5);
230
+ display: flex;
231
+ align-items: center;
232
+ justify-content: center;
233
+ z-index: var(--ed-z-modal);
234
+ padding: 1rem;
235
+ }
236
+
237
+ .ed-modal {
238
+ background-color: var(--ed-modal-bg, #ffffff);
239
+ border-radius: var(--ed-border-radius-lg);
240
+ box-shadow: var(--ed-shadow-xl);
241
+ width: 100%;
242
+ max-width: 32rem;
243
+ max-height: 90vh;
244
+ overflow: hidden;
245
+ display: flex;
246
+ flex-direction: column;
247
+ }
248
+
249
+ /* ── Input Base ── */
250
+ .ed-input {
251
+ display: block;
252
+ width: 100%;
253
+ padding: 0.5rem 0.75rem;
254
+ font-family: var(--ed-font-family);
255
+ font-size: var(--ed-font-size-sm);
256
+ line-height: var(--ed-line-height-normal);
257
+ color: var(--ed-input-color, #1a1a2e);
258
+ background-color: var(--ed-input-bg, #ffffff);
259
+ border: 1px solid var(--ed-input-border, #d1d5db);
260
+ border-radius: var(--ed-border-radius);
261
+ transition: border-color var(--ed-transition-fast), box-shadow var(--ed-transition-fast);
262
+ }
263
+
264
+ .ed-input:focus {
265
+ outline: none;
266
+ border-color: var(--ed-input-focus-border, #3b82f6);
267
+ box-shadow: 0 0 0 3px var(--ed-input-focus-ring, rgba(59, 130, 246, 0.15));
268
+ }
269
+
270
+ .ed-input::placeholder {
271
+ color: var(--ed-input-placeholder, #9ca3af);
272
+ }
273
+
274
+ .ed-input:disabled {
275
+ opacity: 0.5;
276
+ cursor: not-allowed;
277
+ background-color: var(--ed-input-disabled-bg, #f3f4f6);
278
+ }
279
+ }
280
+
281
+ /* ─── Custom Utilities Layer ───────────────────────────────────────────────── */
282
+
283
+ @layer utilities {
284
+ /* ── Scrollbar Utilities ── */
285
+ .ed-scrollbar-thin {
286
+ scrollbar-width: thin;
287
+ }
288
+
289
+ .ed-scrollbar-none {
290
+ scrollbar-width: none;
291
+ -ms-overflow-style: none;
292
+ }
293
+
294
+ .ed-scrollbar-none::-webkit-scrollbar {
295
+ display: none;
296
+ }
297
+
298
+ /* ── Selection Utilities ── */
299
+ .ed-selection-none {
300
+ user-select: none;
301
+ -webkit-user-select: none;
302
+ }
303
+
304
+ .ed-selection-all {
305
+ user-select: all;
306
+ -webkit-user-select: all;
307
+ }
308
+
309
+ .ed-selection-auto {
310
+ user-select: auto;
311
+ -webkit-user-select: auto;
312
+ }
313
+
314
+ /* ── Glass Morphism Utilities ── */
315
+ .ed-glass {
316
+ background: rgba(255, 255, 255, 0.15);
317
+ backdrop-filter: blur(12px);
318
+ -webkit-backdrop-filter: blur(12px);
319
+ border: 1px solid rgba(255, 255, 255, 0.2);
320
+ }
321
+
322
+ .ed-glass-dark {
323
+ background: rgba(0, 0, 0, 0.25);
324
+ backdrop-filter: blur(12px);
325
+ -webkit-backdrop-filter: blur(12px);
326
+ border: 1px solid rgba(255, 255, 255, 0.1);
327
+ }
328
+
329
+ .ed-glass-strong {
330
+ background: rgba(255, 255, 255, 0.3);
331
+ backdrop-filter: blur(20px);
332
+ -webkit-backdrop-filter: blur(20px);
333
+ border: 1px solid rgba(255, 255, 255, 0.3);
334
+ }
335
+
336
+ /* ── Gradient Text Utilities ── */
337
+ .ed-gradient-text {
338
+ background-clip: text;
339
+ -webkit-background-clip: text;
340
+ -webkit-text-fill-color: transparent;
341
+ }
342
+
343
+ .ed-gradient-text-primary {
344
+ background-image: linear-gradient(135deg, var(--ed-primary, #3b82f6), var(--ed-secondary, #8b5cf6));
345
+ background-clip: text;
346
+ -webkit-background-clip: text;
347
+ -webkit-text-fill-color: transparent;
348
+ }
349
+
350
+ /* ── Truncate Utilities ── */
351
+ .ed-truncate {
352
+ overflow: hidden;
353
+ text-overflow: ellipsis;
354
+ white-space: nowrap;
355
+ }
356
+
357
+ .ed-line-clamp-2 {
358
+ display: -webkit-box;
359
+ -webkit-line-clamp: 2;
360
+ -webkit-box-orient: vertical;
361
+ overflow: hidden;
362
+ }
363
+
364
+ .ed-line-clamp-3 {
365
+ display: -webkit-box;
366
+ -webkit-line-clamp: 3;
367
+ -webkit-box-orient: vertical;
368
+ overflow: hidden;
369
+ }
370
+ }