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,615 @@
1
+ /*
2
+ * ElementDrawing Framework - Base CSS
3
+ * CSS reset, custom properties, typography base, form element reset,
4
+ * scrollbar styles, animation base, selection styles, focus styles,
5
+ * and print styles.
6
+ *
7
+ * @version 1.0.0
8
+ * @license MIT
9
+ */
10
+
11
+ /* ─── CSS Reset ────────────────────────────────────────────────────────────── */
12
+
13
+ *,
14
+ *::before,
15
+ *::after {
16
+ box-sizing: border-box;
17
+ margin: 0;
18
+ padding: 0;
19
+ }
20
+
21
+ html {
22
+ -webkit-text-size-adjust: 100%;
23
+ -moz-text-size-adjust: 100%;
24
+ text-size-adjust: 100%;
25
+ -webkit-tap-highlight-color: transparent;
26
+ -webkit-font-smoothing: antialiased;
27
+ -moz-osx-font-smoothing: grayscale;
28
+ text-rendering: optimizeLegibility;
29
+ scroll-behavior: smooth;
30
+ tab-size: 4;
31
+ height: 100%;
32
+ }
33
+
34
+ body {
35
+ min-height: 100%;
36
+ line-height: 1.5;
37
+ font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
38
+ }
39
+
40
+ /* Remove default margins */
41
+ h1, h2, h3, h4, h5, h6,
42
+ p, blockquote, pre,
43
+ dl, dd, ol, ul,
44
+ figure, hr, fieldset, legend {
45
+ margin: 0;
46
+ }
47
+
48
+ /* Remove default list styles */
49
+ ol, ul, menu {
50
+ list-style: none;
51
+ padding: 0;
52
+ }
53
+
54
+ /* Remove default heading styles - reset to normal */
55
+ h1, h2, h3, h4, h5, h6 {
56
+ font-size: inherit;
57
+ font-weight: inherit;
58
+ }
59
+
60
+ /* Reset links */
61
+ a {
62
+ color: inherit;
63
+ text-decoration: inherit;
64
+ background-color: transparent;
65
+ }
66
+
67
+ /* Reset images */
68
+ img, svg, video, canvas, audio, iframe, embed, object {
69
+ display: block;
70
+ max-width: 100%;
71
+ }
72
+
73
+ img, video {
74
+ height: auto;
75
+ }
76
+
77
+ /* Reset form elements */
78
+ button, input, optgroup, select, textarea {
79
+ margin: 0;
80
+ padding: 0;
81
+ font-family: inherit;
82
+ font-size: 100%;
83
+ font-weight: inherit;
84
+ line-height: inherit;
85
+ color: inherit;
86
+ border: 0;
87
+ background: none;
88
+ }
89
+
90
+ button, select {
91
+ text-transform: none;
92
+ }
93
+
94
+ button, [type="button"], [type="reset"], [type="submit"] {
95
+ -webkit-appearance: button;
96
+ appearance: button;
97
+ }
98
+
99
+ button:not(:disabled), [type="button"]:not(:disabled),
100
+ [type="reset"]:not(:disabled), [type="submit"]:not(:disabled) {
101
+ cursor: pointer;
102
+ }
103
+
104
+ button::-moz-focus-inner, [type="button"]::-moz-focus-inner,
105
+ [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner {
106
+ padding: 0;
107
+ border-style: none;
108
+ }
109
+
110
+ textarea {
111
+ overflow: auto;
112
+ resize: vertical;
113
+ }
114
+
115
+ input::placeholder, textarea::placeholder {
116
+ opacity: 1;
117
+ color: #9ca3af;
118
+ }
119
+
120
+ /* Reset table */
121
+ table {
122
+ border-collapse: collapse;
123
+ border-spacing: 0;
124
+ }
125
+
126
+ /* Reset hr */
127
+ hr {
128
+ border: 0;
129
+ border-top: 1px solid #e5e7eb;
130
+ box-sizing: content-box;
131
+ height: 0;
132
+ }
133
+
134
+ /* Remove animations for people who prefer not to see them */
135
+ @media (prefers-reduced-motion: reduce) {
136
+ html {
137
+ scroll-behavior: auto;
138
+ }
139
+
140
+ *, *::before, *::after {
141
+ animation-duration: 0.01ms !important;
142
+ animation-iteration-count: 1 !important;
143
+ transition-duration: 0.01ms !important;
144
+ scroll-behavior: auto !important;
145
+ }
146
+ }
147
+
148
+ /* ─── Custom Properties ────────────────────────────────────────────────────── */
149
+
150
+ :root {
151
+ /* ── Color Palette ── */
152
+ --ed-primary-50: #eff6ff;
153
+ --ed-primary-100: #dbeafe;
154
+ --ed-primary-200: #bfdbfe;
155
+ --ed-primary-300: #93c5fd;
156
+ --ed-primary-400: #60a5fa;
157
+ --ed-primary-500: #3b82f6;
158
+ --ed-primary-600: #2563eb;
159
+ --ed-primary-700: #1d4ed8;
160
+ --ed-primary-800: #1e40af;
161
+ --ed-primary-900: #1e3a8a;
162
+
163
+ --ed-success-50: #f0fdf4;
164
+ --ed-success-500: #22c55e;
165
+ --ed-success-600: #16a34a;
166
+
167
+ --ed-warning-50: #fffbeb;
168
+ --ed-warning-500: #f59e0b;
169
+ --ed-warning-600: #d97706;
170
+
171
+ --ed-danger-50: #fef2f2;
172
+ --ed-danger-500: #ef4444;
173
+ --ed-danger-600: #dc2626;
174
+
175
+ --ed-info-50: #f0f9ff;
176
+ --ed-info-500: #0ea5e9;
177
+ --ed-info-600: #0284c7;
178
+
179
+ /* ── Neutral Palette ── */
180
+ --ed-gray-50: #f9fafb;
181
+ --ed-gray-100: #f3f4f6;
182
+ --ed-gray-200: #e5e7eb;
183
+ --ed-gray-300: #d1d5db;
184
+ --ed-gray-400: #9ca3af;
185
+ --ed-gray-500: #6b7280;
186
+ --ed-gray-600: #4b5563;
187
+ --ed-gray-700: #374151;
188
+ --ed-gray-800: #1f2937;
189
+ --ed-gray-900: #111827;
190
+
191
+ /* ── Semantic Colors ── */
192
+ --ed-bg-primary: #ffffff;
193
+ --ed-bg-secondary: #f9fafb;
194
+ --ed-bg-tertiary: #f3f4f6;
195
+ --ed-text-primary: #111827;
196
+ --ed-text-secondary: #4b5563;
197
+ --ed-text-tertiary: #9ca3af;
198
+ --ed-text-inverse: #ffffff;
199
+ --ed-border-primary: #e5e7eb;
200
+ --ed-border-secondary: #d1d5db;
201
+
202
+ /* ── Layout ── */
203
+ --ed-container-sm: 640px;
204
+ --ed-container-md: 768px;
205
+ --ed-container-lg: 1024px;
206
+ --ed-container-xl: 1280px;
207
+ --ed-container-2xl: 1536px;
208
+ --ed-sidebar-width: 260px;
209
+ --ed-navbar-height: 64px;
210
+
211
+ /* ── Timing ── */
212
+ --ed-duration-instant: 75ms;
213
+ --ed-duration-fast: 150ms;
214
+ --ed-duration-normal: 250ms;
215
+ --ed-duration-slow: 350ms;
216
+ --ed-duration-slower: 500ms;
217
+ --ed-easing-default: cubic-bezier(0.4, 0, 0.2, 1);
218
+ --ed-easing-in: cubic-bezier(0.4, 0, 1, 1);
219
+ --ed-easing-out: cubic-bezier(0, 0, 0.2, 1);
220
+ --ed-easing-in-out: cubic-bezier(0.4, 0, 0.2, 1);
221
+ --ed-easing-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
222
+ --ed-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
223
+ }
224
+
225
+ /* ─── Typography Base ──────────────────────────────────────────────────────── */
226
+
227
+ body {
228
+ font-family: var(--ed-font-family, "ElementDrawing", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
229
+ font-size: 1rem;
230
+ line-height: 1.5;
231
+ color: var(--ed-text-primary);
232
+ }
233
+
234
+ h1, .ed-h1 {
235
+ font-size: 2.25rem;
236
+ font-weight: 700;
237
+ line-height: 1.2;
238
+ letter-spacing: -0.025em;
239
+ }
240
+
241
+ h2, .ed-h2 {
242
+ font-size: 1.875rem;
243
+ font-weight: 600;
244
+ line-height: 1.25;
245
+ letter-spacing: -0.025em;
246
+ }
247
+
248
+ h3, .ed-h3 {
249
+ font-size: 1.5rem;
250
+ font-weight: 600;
251
+ line-height: 1.3;
252
+ }
253
+
254
+ h4, .ed-h4 {
255
+ font-size: 1.25rem;
256
+ font-weight: 600;
257
+ line-height: 1.35;
258
+ }
259
+
260
+ h5, .ed-h5 {
261
+ font-size: 1.125rem;
262
+ font-weight: 500;
263
+ line-height: 1.4;
264
+ }
265
+
266
+ h6, .ed-h6 {
267
+ font-size: 1rem;
268
+ font-weight: 500;
269
+ line-height: 1.5;
270
+ }
271
+
272
+ p {
273
+ margin-bottom: 1rem;
274
+ }
275
+
276
+ small, .ed-text-sm {
277
+ font-size: 0.875rem;
278
+ line-height: 1.5;
279
+ }
280
+
281
+ code, kbd, samp, pre {
282
+ font-family: var(--ed-font-mono, "JetBrains Mono", monospace);
283
+ font-size: 0.875em;
284
+ }
285
+
286
+ code {
287
+ padding: 0.125rem 0.375rem;
288
+ background-color: var(--ed-gray-100);
289
+ border-radius: 0.25rem;
290
+ color: var(--ed-danger-600);
291
+ }
292
+
293
+ pre {
294
+ padding: 1rem;
295
+ overflow-x: auto;
296
+ background-color: var(--ed-gray-900);
297
+ color: var(--ed-gray-100);
298
+ border-radius: 0.5rem;
299
+ line-height: 1.6;
300
+ }
301
+
302
+ pre code {
303
+ padding: 0;
304
+ background: none;
305
+ color: inherit;
306
+ border-radius: 0;
307
+ }
308
+
309
+ kbd {
310
+ padding: 0.125rem 0.375rem;
311
+ background-color: var(--ed-gray-100);
312
+ border: 1px solid var(--ed-gray-300);
313
+ border-radius: 0.25rem;
314
+ box-shadow: 0 1px 0 var(--ed-gray-300);
315
+ font-size: 0.75rem;
316
+ }
317
+
318
+ blockquote {
319
+ padding: 0.75rem 1.5rem;
320
+ border-left: 4px solid var(--ed-primary-500);
321
+ background-color: var(--ed-primary-50);
322
+ color: var(--ed-text-secondary);
323
+ margin-bottom: 1rem;
324
+ }
325
+
326
+ blockquote p:last-child {
327
+ margin-bottom: 0;
328
+ }
329
+
330
+ /* ─── Form Element Reset ───────────────────────────────────────────────────── */
331
+
332
+ input[type="search"] {
333
+ -webkit-appearance: textfield;
334
+ appearance: textfield;
335
+ outline-offset: -2px;
336
+ }
337
+
338
+ input[type="search"]::-webkit-search-decoration {
339
+ -webkit-appearance: none;
340
+ }
341
+
342
+ input[type="number"]::-webkit-inner-spin-button,
343
+ input[type="number"]::-webkit-outer-spin-button {
344
+ height: auto;
345
+ }
346
+
347
+ input[type="file"] {
348
+ font-family: inherit;
349
+ font-size: inherit;
350
+ line-height: inherit;
351
+ }
352
+
353
+ [type="checkbox"], [type="radio"] {
354
+ -webkit-appearance: none;
355
+ appearance: none;
356
+ width: 1rem;
357
+ height: 1rem;
358
+ border: 1px solid var(--ed-gray-300);
359
+ background-color: #fff;
360
+ cursor: pointer;
361
+ vertical-align: middle;
362
+ }
363
+
364
+ [type="checkbox"] {
365
+ border-radius: 0.25rem;
366
+ }
367
+
368
+ [type="radio"] {
369
+ border-radius: 50%;
370
+ }
371
+
372
+ [type="checkbox"]:checked, [type="radio"]:checked {
373
+ border-color: var(--ed-primary-500);
374
+ background-color: var(--ed-primary-500);
375
+ }
376
+
377
+ select {
378
+ -webkit-appearance: none;
379
+ appearance: none;
380
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
381
+ background-position: right 0.5rem center;
382
+ background-repeat: no-repeat;
383
+ background-size: 1.5em 1.5em;
384
+ padding-right: 2.5rem;
385
+ }
386
+
387
+ progress {
388
+ -webkit-appearance: none;
389
+ appearance: none;
390
+ width: 100%;
391
+ height: 0.5rem;
392
+ border-radius: 9999px;
393
+ overflow: hidden;
394
+ }
395
+
396
+ progress::-webkit-progress-bar {
397
+ background-color: var(--ed-gray-200);
398
+ border-radius: 9999px;
399
+ }
400
+
401
+ progress::-webkit-progress-value {
402
+ background-color: var(--ed-primary-500);
403
+ border-radius: 9999px;
404
+ transition: width var(--ed-duration-normal) var(--ed-easing-default);
405
+ }
406
+
407
+ /* ─── Scrollbar Styles ─────────────────────────────────────────────────────── */
408
+
409
+ :root {
410
+ --ed-scrollbar-size: 8px;
411
+ --ed-scrollbar-track: #f1f1f1;
412
+ --ed-scrollbar-thumb: #c1c1c1;
413
+ --ed-scrollbar-thumb-hover: #a0a0a0;
414
+ }
415
+
416
+ * {
417
+ scrollbar-width: thin;
418
+ scrollbar-color: var(--ed-scrollbar-thumb) var(--ed-scrollbar-track);
419
+ }
420
+
421
+ ::-webkit-scrollbar {
422
+ width: var(--ed-scrollbar-size);
423
+ height: var(--ed-scrollbar-size);
424
+ }
425
+
426
+ ::-webkit-scrollbar-track {
427
+ background: var(--ed-scrollbar-track);
428
+ border-radius: calc(var(--ed-scrollbar-size) / 2);
429
+ }
430
+
431
+ ::-webkit-scrollbar-thumb {
432
+ background: var(--ed-scrollbar-thumb);
433
+ border-radius: calc(var(--ed-scrollbar-size) / 2);
434
+ border: 2px solid var(--ed-scrollbar-track);
435
+ }
436
+
437
+ ::-webkit-scrollbar-thumb:hover {
438
+ background: var(--ed-scrollbar-thumb-hover);
439
+ }
440
+
441
+ ::-webkit-scrollbar-corner {
442
+ background: var(--ed-scrollbar-track);
443
+ }
444
+
445
+ /* ─── Animation Base ───────────────────────────────────────────────────────── */
446
+
447
+ :root {
448
+ --ed-anim-duration: 300ms;
449
+ --ed-anim-easing: var(--ed-easing-default);
450
+ }
451
+
452
+ .animate-base {
453
+ transition-property: color, background-color, border-color, outline-color,
454
+ text-decoration-color, fill, stroke, opacity, box-shadow, transform,
455
+ filter, backdrop-filter;
456
+ transition-timing-function: var(--ed-anim-easing);
457
+ transition-duration: var(--ed-anim-duration);
458
+ }
459
+
460
+ .will-change-transform {
461
+ will-change: transform;
462
+ }
463
+
464
+ .will-change-opacity {
465
+ will-change: opacity;
466
+ }
467
+
468
+ .backface-hidden {
469
+ backface-visibility: hidden;
470
+ -webkit-backface-visibility: hidden;
471
+ }
472
+
473
+ .perspective-1000 {
474
+ perspective: 1000px;
475
+ }
476
+
477
+ .preserve-3d {
478
+ transform-style: preserve-3d;
479
+ }
480
+
481
+ /* ─── Selection Styles ─────────────────────────────────────────────────────── */
482
+
483
+ ::selection {
484
+ background-color: rgba(59, 130, 246, 0.3);
485
+ color: inherit;
486
+ }
487
+
488
+ ::-moz-selection {
489
+ background-color: rgba(59, 130, 246, 0.3);
490
+ color: inherit;
491
+ }
492
+
493
+ .select-none {
494
+ user-select: none;
495
+ -webkit-user-select: none;
496
+ }
497
+
498
+ .select-text {
499
+ user-select: text;
500
+ -webkit-user-select: text;
501
+ }
502
+
503
+ .select-all {
504
+ user-select: all;
505
+ -webkit-user-select: all;
506
+ }
507
+
508
+ .select-auto {
509
+ user-select: auto;
510
+ -webkit-user-select: auto;
511
+ }
512
+
513
+ /* ─── Focus Styles ─────────────────────────────────────────────────────────── */
514
+
515
+ :root {
516
+ --ed-focus-ring-color: rgba(59, 130, 246, 0.4);
517
+ --ed-focus-ring-width: 3px;
518
+ --ed-focus-ring-offset: 2px;
519
+ }
520
+
521
+ :focus-visible {
522
+ outline: none;
523
+ box-shadow: 0 0 0 var(--ed-focus-ring-width) var(--ed-focus-ring-offset) var(--ed-focus-ring-color);
524
+ }
525
+
526
+ :focus:not(:focus-visible) {
527
+ outline: none;
528
+ }
529
+
530
+ .focus-ring {
531
+ outline: none;
532
+ }
533
+
534
+ .focus-ring:focus-visible {
535
+ box-shadow: 0 0 0 var(--ed-focus-ring-width) var(--ed-focus-ring-offset) var(--ed-focus-ring-color);
536
+ }
537
+
538
+ .focus-ring-inset:focus-visible {
539
+ box-shadow: inset 0 0 0 var(--ed-focus-ring-width) var(--ed-focus-ring-color);
540
+ }
541
+
542
+ /* ─── Print Styles ─────────────────────────────────────────────────────────── */
543
+
544
+ @media print {
545
+ *,
546
+ *::before,
547
+ *::after {
548
+ background: transparent !important;
549
+ color: #000 !important;
550
+ box-shadow: none !important;
551
+ text-shadow: none !important;
552
+ }
553
+
554
+ a, a:visited {
555
+ text-decoration: underline;
556
+ }
557
+
558
+ a[href]::after {
559
+ content: " (" attr(href) ")";
560
+ font-size: 0.875rem;
561
+ }
562
+
563
+ a[href^="#"]::after,
564
+ a[href^="javascript:"]::after {
565
+ content: "";
566
+ }
567
+
568
+ abbr[title]::after {
569
+ content: " (" attr(title) ")";
570
+ }
571
+
572
+ thead {
573
+ display: table-header-group;
574
+ }
575
+
576
+ tr, img {
577
+ page-break-inside: avoid;
578
+ }
579
+
580
+ p, h2, h3 {
581
+ orphans: 3;
582
+ widows: 3;
583
+ }
584
+
585
+ h2, h3 {
586
+ page-break-after: avoid;
587
+ }
588
+
589
+ pre, blockquote {
590
+ border: 1px solid #999;
591
+ page-break-inside: avoid;
592
+ }
593
+
594
+ img {
595
+ max-width: 100% !important;
596
+ }
597
+
598
+ .ed-no-print,
599
+ .ed-navbar,
600
+ .ed-sidebar,
601
+ .ed-modal-overlay,
602
+ .ed-toast-container {
603
+ display: none !important;
604
+ }
605
+
606
+ .ed-main-content {
607
+ margin: 0 !important;
608
+ padding: 0 !important;
609
+ }
610
+
611
+ @page {
612
+ margin: 0.5cm;
613
+ size: A4;
614
+ }
615
+ }