purity-world 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 (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -0
  3. package/cursors/alias.svg +17 -0
  4. package/cursors/all-scroll.svg +12 -0
  5. package/cursors/bottom_left_corner.svg +16 -0
  6. package/cursors/bottom_right_corner.svg +16 -0
  7. package/cursors/bottom_side.svg +18 -0
  8. package/cursors/cell.svg +9 -0
  9. package/cursors/center_ptr.svg +9 -0
  10. package/cursors/col-resize.svg +9 -0
  11. package/cursors/color-picker.svg +10 -0
  12. package/cursors/context-menu.svg +10 -0
  13. package/cursors/copy.svg +17 -0
  14. package/cursors/crosshair.svg +20 -0
  15. package/cursors/default.svg +9 -0
  16. package/cursors/dnd-move.svg +9 -0
  17. package/cursors/dnd-no-drop.svg +16 -0
  18. package/cursors/down-arrow.svg +9 -0
  19. package/cursors/draft.svg +9 -0
  20. package/cursors/fleur.svg +10 -0
  21. package/cursors/help.svg +20 -0
  22. package/cursors/left-arrow.svg +9 -0
  23. package/cursors/left_side.svg +18 -0
  24. package/cursors/no-drop.svg +16 -0
  25. package/cursors/not-allowed.svg +9 -0
  26. package/cursors/openhand.svg +9 -0
  27. package/cursors/pencil.svg +9 -0
  28. package/cursors/pirate.svg +9 -0
  29. package/cursors/pointer.svg +9 -0
  30. package/cursors/progress-01.svg +15 -0
  31. package/cursors/progress-02.svg +15 -0
  32. package/cursors/progress-03.svg +15 -0
  33. package/cursors/progress-04.svg +15 -0
  34. package/cursors/progress-05.svg +15 -0
  35. package/cursors/progress-06.svg +15 -0
  36. package/cursors/progress-07.svg +15 -0
  37. package/cursors/progress-08.svg +15 -0
  38. package/cursors/progress-09.svg +15 -0
  39. package/cursors/progress-10.svg +15 -0
  40. package/cursors/progress-11.svg +15 -0
  41. package/cursors/progress-12.svg +15 -0
  42. package/cursors/progress-13.svg +15 -0
  43. package/cursors/progress-14.svg +15 -0
  44. package/cursors/progress-15.svg +15 -0
  45. package/cursors/progress-16.svg +15 -0
  46. package/cursors/progress-17.svg +15 -0
  47. package/cursors/progress-18.svg +15 -0
  48. package/cursors/progress-19.svg +15 -0
  49. package/cursors/progress-20.svg +15 -0
  50. package/cursors/progress-21.svg +15 -0
  51. package/cursors/progress-22.svg +15 -0
  52. package/cursors/progress-23.svg +15 -0
  53. package/cursors/right-arrow.svg +9 -0
  54. package/cursors/right_ptr.svg +9 -0
  55. package/cursors/right_side.svg +18 -0
  56. package/cursors/row-resize.svg +9 -0
  57. package/cursors/size_bdiag.svg +10 -0
  58. package/cursors/size_fdiag.svg +10 -0
  59. package/cursors/size_hor.svg +10 -0
  60. package/cursors/size_ver.svg +12 -0
  61. package/cursors/text.svg +9 -0
  62. package/cursors/top_left_corner.svg +16 -0
  63. package/cursors/top_right_corner.svg +16 -0
  64. package/cursors/top_side.svg +18 -0
  65. package/cursors/up-arrow.svg +9 -0
  66. package/cursors/vertical-text.svg +9 -0
  67. package/cursors/wait-01.svg +14 -0
  68. package/cursors/wait-02.svg +14 -0
  69. package/cursors/wait-03.svg +14 -0
  70. package/cursors/wait-04.svg +14 -0
  71. package/cursors/wait-05.svg +14 -0
  72. package/cursors/wait-06.svg +14 -0
  73. package/cursors/wait-07.svg +14 -0
  74. package/cursors/wait-08.svg +14 -0
  75. package/cursors/wait-09.svg +14 -0
  76. package/cursors/wait-10.svg +14 -0
  77. package/cursors/wait-11.svg +14 -0
  78. package/cursors/wait-12.svg +14 -0
  79. package/cursors/wait-13.svg +14 -0
  80. package/cursors/wait-14.svg +14 -0
  81. package/cursors/wait-15.svg +14 -0
  82. package/cursors/wait-16.svg +14 -0
  83. package/cursors/wait-17.svg +14 -0
  84. package/cursors/wait-18.svg +14 -0
  85. package/cursors/wait-19.svg +14 -0
  86. package/cursors/wait-20.svg +14 -0
  87. package/cursors/wait-21.svg +14 -0
  88. package/cursors/wait-22.svg +14 -0
  89. package/cursors/wait-23.svg +14 -0
  90. package/cursors/wayland-cursor.svg +10 -0
  91. package/cursors/x-cursor.svg +11 -0
  92. package/cursors/zoom-in.svg +13 -0
  93. package/cursors/zoom-out.svg +13 -0
  94. package/index.cjs +1 -0
  95. package/index.d.ts +1 -0
  96. package/index.js +1972 -0
  97. package/package.json +60 -0
  98. package/style.css +1 -0
  99. package/styles/_base.scss +525 -0
  100. package/styles/_mixins.scss +57 -0
  101. package/styles/_theme-dark.scss +103 -0
  102. package/styles/_theme-light.scss +103 -0
  103. package/styles/_themes.scss +34 -0
  104. package/styles/_variables.scss +72 -0
  105. package/styles/index.scss +7 -0
  106. package/types/bootstrap.d.ts +42 -0
  107. package/types/bootstrap.d.ts.map +1 -0
  108. package/types/common.d.ts +9 -0
  109. package/types/common.d.ts.map +1 -0
  110. package/types/component.d.ts +57 -0
  111. package/types/component.d.ts.map +1 -0
  112. package/types/core.d.ts +46 -0
  113. package/types/core.d.ts.map +1 -0
  114. package/types/di.d.ts +53 -0
  115. package/types/di.d.ts.map +1 -0
  116. package/types/directive.d.ts +47 -0
  117. package/types/directive.d.ts.map +1 -0
  118. package/types/http.d.ts +211 -0
  119. package/types/http.d.ts.map +1 -0
  120. package/types/pipe.d.ts +34 -0
  121. package/types/pipe.d.ts.map +1 -0
  122. package/types/router.d.ts +145 -0
  123. package/types/router.d.ts.map +1 -0
  124. package/types/seo.d.ts +134 -0
  125. package/types/seo.d.ts.map +1 -0
  126. package/types/validator.d.ts +73 -0
  127. package/types/validator.d.ts.map +1 -0
  128. package/types/virtual-for.d.ts +36 -0
  129. package/types/virtual-for.d.ts.map +1 -0
  130. package/types/vite-plugin.d.ts +18 -0
  131. package/types/vite-plugin.d.ts.map +1 -0
  132. package/vite.cjs +4 -0
  133. package/vite.d.ts +1 -0
  134. package/vite.js +51 -0
@@ -0,0 +1,103 @@
1
+ /* ==========================================================================
2
+ Purity Design System - Dark Theme (GNOME Adwaita Dark)
3
+ ========================================================================== */
4
+
5
+ @mixin theme-dark-variables {
6
+ /* Surfaces & Glassmorphism */
7
+ --gnome-bg: #1e1e1e;
8
+ --gnome-surface: rgba(34, 34, 40, 0.72);
9
+ --gnome-surface-solid: #242424;
10
+ --gnome-header: rgba(30, 30, 36, 0.88);
11
+ --gnome-card: rgba(255, 255, 255, 0.06);
12
+ --gnome-hover: rgba(255, 255, 255, 0.12);
13
+ --gnome-active: rgba(255, 255, 255, 0.18);
14
+ --gnome-subtle: rgba(255, 255, 255, 0.03);
15
+
16
+ /* Form Inputs & Controls */
17
+ --gnome-input: rgba(255, 255, 255, 0.08);
18
+ --gnome-input-hover: rgba(255, 255, 255, 0.14);
19
+ --gnome-input-focus: rgba(255, 255, 255, 0.16);
20
+ --select-chevron-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%233584e4' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
21
+
22
+ /* Borders & Lines */
23
+ --gnome-border: rgba(255, 255, 255, 0.14);
24
+ --gnome-border-subtle: rgba(255, 255, 255, 0.08);
25
+ --gnome-border-focus: rgba(53, 132, 228, 0.6);
26
+
27
+ /* Typography & Text */
28
+ --text-main: #ffffff;
29
+ --text-secondary: #9a9996;
30
+ --text-muted: #777777;
31
+ --text-off: rgba(255, 255, 255, 0.25);
32
+ --text-inverse: #1e1e1e;
33
+
34
+ /* Primary Accent - Adwaita Blue */
35
+ --accent: #3584e4;
36
+ --accent-hover: #4791eb;
37
+ --accent-active: #1c71d8;
38
+ --accent-shadow: rgba(53, 132, 228, 0.35);
39
+ --accent-subtle: rgba(53, 132, 228, 0.15);
40
+
41
+ /* Semantic Status Colors */
42
+ --gnome-success: #2ec27e;
43
+ --gnome-error: #ed333b;
44
+ --gnome-info: #3584e4;
45
+ --gnome-warn: #f8e45c;
46
+ --gnome-success-bg: rgba(46, 194, 126, 0.18);
47
+ --gnome-error-bg: rgba(237, 51, 59, 0.18);
48
+ --gnome-info-bg: rgba(53, 132, 228, 0.18);
49
+ --gnome-warn-bg: rgba(248, 228, 92, 0.18);
50
+
51
+ /* Shadows */
52
+ --shadow-deep: 0 20px 50px rgba(0, 0, 0, 0.55);
53
+ --shadow-popup: 0 16px 40px rgba(0, 0, 0, 0.65), inset 0 1px rgba(255, 255, 255, 0.1);
54
+ --shadow-control: 0 4px 12px rgba(0, 0, 0, 0.25), inset 0 1px rgba(255, 255, 255, 0.08);
55
+
56
+ /* Global Dynamic Wallpaper */
57
+ --wallpaper: radial-gradient(circle at top left, rgba(53, 132, 228, 0.45), transparent 45%),
58
+ radial-gradient(circle at bottom right, rgba(145, 65, 172, 0.45), transparent 45%),
59
+ #1e1e1e;
60
+ --wallpaper-bg-color: #1e1e1e;
61
+
62
+ /* DatePicker Specific Tokens */
63
+ --dp-surface-bg: rgba(30, 30, 34, 0.88);
64
+ --dp-surface-blur-bg: rgba(28, 28, 34, 0.65);
65
+ --dp-text-main: var(--text-main);
66
+ --dp-text-secondary: var(--text-secondary);
67
+ --dp-border: var(--gnome-border);
68
+ --dp-shadow: var(--shadow-popup);
69
+
70
+ /* Dropdown Specific Tokens */
71
+ --dropdown-bg: rgba(30, 30, 34, 0.96);
72
+ --dropdown-blur-bg: rgba(28, 28, 34, 0.90);
73
+ --dropdown-border: var(--gnome-border);
74
+ --dropdown-shadow: var(--shadow-popup);
75
+
76
+ /* Popover Specific Tokens */
77
+ --popover-bg: rgba(30, 30, 36, 0.92);
78
+ --popover-blur-bg: rgba(28, 28, 34, 0.85);
79
+ --popover-border: rgba(255, 255, 255, 0.16);
80
+ --popover-shadow: 0 16px 42px rgba(0, 0, 0, 0.7), 0 4px 14px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.15);
81
+
82
+ /* Radial Context Menu Specific Tokens */
83
+ --radial-bg: rgba(30, 30, 30, 0.92);
84
+ --radial-blur-bg: rgba(30, 30, 30, 0.75);
85
+ --radial-segment-bg: rgba(45, 45, 45, 0.7);
86
+ --radial-text: #ffffff;
87
+ --radial-border: rgba(255, 255, 255, 0.12);
88
+
89
+ /* Code & Syntax Highlighting Tokens */
90
+ --code-bg: rgba(14, 18, 26, 0.85);
91
+ --code-border: rgba(255, 255, 255, 0.1);
92
+ --code-text: #e6edf3;
93
+ --code-kw: #ff7b72;
94
+ --code-dec: #d2a8ff;
95
+ --code-fn: #79c0ff;
96
+ --code-typ: #ffa657;
97
+ --code-str: #a5d6ff;
98
+ --code-num: #79c0ff;
99
+ --code-cmt: #8b949e;
100
+ --code-tag: #7ee787;
101
+ --code-attr: #79c0ff;
102
+ --code-expr: #ffa657;
103
+ }
@@ -0,0 +1,103 @@
1
+ /* ==========================================================================
2
+ Purity Design System - Light Theme (GNOME Adwaita Light)
3
+ ========================================================================== */
4
+
5
+ @mixin theme-light-variables {
6
+ /* Surfaces & Glassmorphism */
7
+ --gnome-bg: #f6f5f4;
8
+ --gnome-surface: rgba(255, 255, 255, 0.84);
9
+ --gnome-surface-solid: #ffffff;
10
+ --gnome-header: rgba(255, 255, 255, 0.92);
11
+ --gnome-card: rgba(0, 0, 0, 0.04);
12
+ --gnome-hover: rgba(0, 0, 0, 0.06);
13
+ --gnome-active: rgba(0, 0, 0, 0.1);
14
+ --gnome-subtle: rgba(0, 0, 0, 0.02);
15
+
16
+ /* Form Inputs & Controls */
17
+ --gnome-input: rgba(0, 0, 0, 0.05);
18
+ --gnome-input-hover: rgba(0, 0, 0, 0.08);
19
+ --gnome-input-focus: rgba(255, 255, 255, 0.95);
20
+ --select-chevron-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231c71d8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
21
+
22
+ /* Borders & Lines */
23
+ --gnome-border: rgba(0, 0, 0, 0.16);
24
+ --gnome-border-subtle: rgba(0, 0, 0, 0.09);
25
+ --gnome-border-focus: rgba(28, 113, 216, 0.7);
26
+
27
+ /* Typography & Text */
28
+ --text-main: #1c1c1c;
29
+ --text-secondary: #5e5c64;
30
+ --text-muted: #8a8886;
31
+ --text-off: rgba(0, 0, 0, 0.35);
32
+ --text-inverse: #ffffff;
33
+
34
+ /* Primary Accent - Vibrant Adwaita Blue */
35
+ --accent: #1c71d8;
36
+ --accent-hover: #3584e4;
37
+ --accent-active: #1a5fb4;
38
+ --accent-shadow: rgba(28, 113, 216, 0.28);
39
+ --accent-subtle: rgba(28, 113, 216, 0.12);
40
+
41
+ /* Semantic Status Colors */
42
+ --gnome-success: #26a269;
43
+ --gnome-error: #c01c28;
44
+ --gnome-info: #1c71d8;
45
+ --gnome-warn: #cd9309;
46
+ --gnome-success-bg: rgba(38, 162, 105, 0.15);
47
+ --gnome-error-bg: rgba(192, 28, 40, 0.15);
48
+ --gnome-info-bg: rgba(28, 113, 216, 0.15);
49
+ --gnome-warn-bg: rgba(205, 147, 9, 0.15);
50
+
51
+ /* Shadows */
52
+ --shadow-deep: 0 16px 40px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04);
53
+ --shadow-popup: 0 16px 40px rgba(0, 0, 0, 0.14), 0 2px 10px rgba(0, 0, 0, 0.08), inset 0 1px rgba(255, 255, 255, 0.9);
54
+ --shadow-control: 0 2px 6px rgba(0, 0, 0, 0.06), inset 0 1px rgba(255, 255, 255, 0.6);
55
+
56
+ /* Global Dynamic Wallpaper */
57
+ --wallpaper: radial-gradient(circle at top left, rgba(53, 132, 228, 0.22), transparent 45%),
58
+ radial-gradient(circle at bottom right, rgba(145, 65, 172, 0.22), transparent 45%),
59
+ #f6f5f4;
60
+ --wallpaper-bg-color: #f6f5f4;
61
+
62
+ /* DatePicker Specific Tokens */
63
+ --dp-surface-bg: rgba(255, 255, 255, 0.88);
64
+ --dp-surface-blur-bg: rgba(255, 255, 255, 0.65);
65
+ --dp-text-main: var(--text-main);
66
+ --dp-text-secondary: var(--text-secondary);
67
+ --dp-border: var(--gnome-border);
68
+ --dp-shadow: var(--shadow-popup);
69
+
70
+ /* Dropdown Specific Tokens */
71
+ --dropdown-bg: rgba(255, 255, 255, 0.96);
72
+ --dropdown-blur-bg: rgba(255, 255, 255, 0.90);
73
+ --dropdown-border: var(--gnome-border);
74
+ --dropdown-shadow: var(--shadow-popup);
75
+
76
+ /* Popover Specific Tokens */
77
+ --popover-bg: rgba(255, 255, 255, 0.96);
78
+ --popover-blur-bg: rgba(255, 255, 255, 0.92);
79
+ --popover-border: rgba(0, 0, 0, 0.18);
80
+ --popover-shadow: 0 16px 38px rgba(0, 0, 0, 0.18), 0 4px 14px rgba(0, 0, 0, 0.10), 0 0 0 1px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.95);
81
+
82
+ /* Radial Context Menu Specific Tokens */
83
+ --radial-bg: rgba(255, 255, 255, 0.94);
84
+ --radial-blur-bg: rgba(255, 255, 255, 0.82);
85
+ --radial-segment-bg: rgba(240, 240, 240, 0.85);
86
+ --radial-text: #1c1c1c;
87
+ --radial-border: rgba(0, 0, 0, 0.12);
88
+
89
+ /* Code & Syntax Highlighting Tokens */
90
+ --code-bg: #f6f8fa;
91
+ --code-border: rgba(0, 0, 0, 0.12);
92
+ --code-text: #24292f;
93
+ --code-kw: #cf222e;
94
+ --code-dec: #8250df;
95
+ --code-fn: #0550ae;
96
+ --code-typ: #953800;
97
+ --code-str: #0a3069;
98
+ --code-num: #0550ae;
99
+ --code-cmt: #6e7781;
100
+ --code-tag: #116329;
101
+ --code-attr: #0550ae;
102
+ --code-expr: #953800;
103
+ }
@@ -0,0 +1,34 @@
1
+ /* ==========================================================================
2
+ Purity Design System - Theme Engine
3
+ Dark theme is the base foundation.
4
+ ========================================================================== */
5
+
6
+ @use './theme-dark' as dark;
7
+ @use './theme-light' as light;
8
+
9
+ /* 1. Base / Default is Dark theme on :root, html, and body */
10
+ :root {
11
+ @include dark.theme-dark-variables;
12
+ }
13
+
14
+ html,
15
+ body {
16
+ @include dark.theme-dark-variables;
17
+ color-scheme: dark;
18
+ }
19
+
20
+ /* 2. Explicit Dark theme */
21
+ html[data-theme='dark'],
22
+ body[data-theme='dark'],
23
+ [data-theme='dark'] {
24
+ @include dark.theme-dark-variables;
25
+ color-scheme: dark;
26
+ }
27
+
28
+ /* 3. Explicit Light theme */
29
+ html[data-theme='light'],
30
+ body[data-theme='light'],
31
+ [data-theme='light'] {
32
+ @include light.theme-light-variables;
33
+ color-scheme: light;
34
+ }
@@ -0,0 +1,72 @@
1
+ /* ==========================================================================
2
+ Purity Design System - Global Variables & Constants
3
+ Non-theme specific geometry, typography, spacing, and transition constants.
4
+ ========================================================================== */
5
+
6
+ :root {
7
+ /* Typography */
8
+ --font-mono: 'Adwaita Mono', 'Source Code Pro', monospace;
9
+ --font-main: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
10
+ --font-size-xs: 12px;
11
+ --font-size-sm: 13.5px;
12
+ --font-size-base: 15px;
13
+ --font-size-lg: 18px;
14
+ --font-size-xl: 24px;
15
+ --font-size-xxl: 32px;
16
+
17
+ /* Geometry & Radii */
18
+ --radius-window: 16px;
19
+ --radius-control: 8px;
20
+ --radius-pill: 999px;
21
+ --radius-card: 12px;
22
+
23
+ /* Spacing Scale */
24
+ --spacing-xs: 4px;
25
+ --spacing-sm: 8px;
26
+ --spacing-md: 12px;
27
+ --spacing-lg: 16px;
28
+ --spacing-xl: 24px;
29
+ --spacing-xxl: 32px;
30
+ --header-max-width: 1366px;
31
+
32
+ /* Transitions & Animations */
33
+ --transition-fast: 0.18s;
34
+ --transition-normal: 0.28s;
35
+ --transition-slow: 0.45s;
36
+ --ease-gnome: cubic-bezier(0.25, 0.8, 0.25, 1);
37
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
38
+
39
+ /* Glassmorphism Blur Filters */
40
+ --blur-subtle: blur(10px) saturate(150%);
41
+ --blur-effect: blur(20px) saturate(175%);
42
+ --blur-heavy: blur(32px) saturate(190%);
43
+
44
+ /* Breeze Cursor Theme Tokens */
45
+ --cursor-default: url('/cursors/default.svg') 4 4, default;
46
+ --cursor-pointer: url('/cursors/pointer.svg') 16 4, pointer;
47
+ --cursor-text: url('/cursors/text.svg') 16 15, text;
48
+ --cursor-grab: url('/cursors/openhand.svg') 16 16, grab;
49
+ --cursor-grabbing: url('/cursors/dnd-move.svg') 16 16, grabbing;
50
+ --cursor-not-allowed: url('/cursors/not-allowed.svg') 16 15, not-allowed;
51
+ --cursor-crosshair: url('/cursors/crosshair.svg') 17 17, crosshair;
52
+ --cursor-help: url('/cursors/help.svg') 4 4, help;
53
+ --cursor-move: url('/cursors/all-scroll.svg') 15 15, move;
54
+ --cursor-col-resize: url('/cursors/col-resize.svg') 16 15, col-resize;
55
+ --cursor-row-resize: url('/cursors/row-resize.svg') 16 15, row-resize;
56
+ --cursor-ew-resize: url('/cursors/size_hor.svg') 16 15, ew-resize;
57
+ --cursor-ns-resize: url('/cursors/size_ver.svg') 16 15, ns-resize;
58
+ --cursor-nwse-resize: url('/cursors/size_bdiag.svg') 16 15, nwse-resize;
59
+ --cursor-nesw-resize: url('/cursors/size_fdiag.svg') 16 15, nesw-resize;
60
+ --cursor-zoom-in: url('/cursors/zoom-in.svg') 15 15, zoom-in;
61
+ --cursor-zoom-out: url('/cursors/zoom-out.svg') 15 15, zoom-out;
62
+ --cursor-context-menu: url('/cursors/context-menu.svg') 4 4, context-menu;
63
+ --cursor-progress: url('/cursors/progress-01.svg') 4 4, progress;
64
+ --cursor-wait: url('/cursors/wait-01.svg') 16 15, wait;
65
+ --cursor-copy: url('/cursors/copy.svg') 16 4, copy;
66
+ --cursor-alias: url('/cursors/alias.svg') 16 4, alias;
67
+ --cursor-cell: url('/cursors/cell.svg') 16 16, cell;
68
+ --cursor-color-picker: url('/cursors/color-picker.svg') 4 16, crosshair;
69
+ --cursor-pencil: url('/cursors/pencil.svg') 4 16, crosshair;
70
+ --cursor-vertical-text: url('/cursors/vertical-text.svg') 16 15, vertical-text;
71
+ --cursor-dnd-no-drop: url('/cursors/dnd-no-drop.svg') 16 15, no-drop;
72
+ }
@@ -0,0 +1,7 @@
1
+ /* ==========================================================================
2
+ Purity Design System - Styles Module Index
3
+ Exposes variables and mixins for @use '@styles' as *; across components.
4
+ ========================================================================== */
5
+
6
+ @forward './variables';
7
+ @forward './mixins';
@@ -0,0 +1,42 @@
1
+ import { type Token, type Constructor } from './di';
2
+ import { type HttpInterceptor, type HttpInterceptorFn } from './http';
3
+ import { type Route, type RouterOptions } from './router';
4
+ export interface EnvironmentConfig {
5
+ production: boolean;
6
+ appName?: string;
7
+ version?: string;
8
+ enableDebugTools?: boolean;
9
+ [key: string]: any;
10
+ }
11
+ export type Provider = Constructor | {
12
+ provide: Token;
13
+ useValue: any;
14
+ } | {
15
+ provide: Token;
16
+ useClass: Constructor;
17
+ };
18
+ export interface BootstrapOptions {
19
+ environment?: EnvironmentConfig;
20
+ providers?: Provider[];
21
+ interceptors?: Array<HttpInterceptor | (new (...args: any[]) => HttpInterceptor) | HttpInterceptorFn>;
22
+ routes?: Route[];
23
+ routerOptions?: RouterOptions;
24
+ rootSelector?: string;
25
+ }
26
+ export interface ApplicationRef {
27
+ rootComponent: any;
28
+ rootElement: HTMLElement | null;
29
+ environment: EnvironmentConfig;
30
+ destroy: () => void;
31
+ }
32
+ export declare const ENVIRONMENT_TOKEN: Token<EnvironmentConfig>;
33
+ /**
34
+ * Returns the active bootstrapped ApplicationRef instance.
35
+ */
36
+ export declare function getApplicationRef(): ApplicationRef | null;
37
+ /**
38
+ * Bootstraps a Purity application with a root component, environment settings, service providers,
39
+ * and HTTP interceptors, while automatically managing theme and lifecycle.
40
+ */
41
+ export declare function bootstrapApplication(rootComponent: any, options?: BootstrapOptions): Promise<ApplicationRef>;
42
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/framework/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAClF,OAAO,EAAU,KAAK,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GACd,WAAW,GACX;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,GACjC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC7B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,eAAe,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACtG,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAiB,CAAC;AAIzE;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACtC,aAAa,EAAE,GAAG,EAClB,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAyGzB"}
@@ -0,0 +1,9 @@
1
+ export * from './component';
2
+ export * from './di';
3
+ export * from './directive';
4
+ export * from './validator';
5
+ export * from './pipe';
6
+ export * from './bootstrap';
7
+ export * from './http';
8
+ export * from './virtual-for';
9
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/framework/common.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { bindVirtualFor, hasVirtualForAttribute, getVirtualForAttribute } from './virtual-for';
2
+ export { bindVirtualFor, hasVirtualForAttribute, getVirtualForAttribute };
3
+ export interface ComponentOptions {
4
+ selector?: string;
5
+ templateUrl?: string;
6
+ template?: string;
7
+ }
8
+ export declare const componentRegistry: Map<string, any>;
9
+ /**
10
+ * Transforms template pipe expressions (e.g. `value | myPipe: true : arg2`)
11
+ * into executable JavaScript function calls (e.g. `__pipe('myPipe', (value), true, arg2)`).
12
+ */
13
+ export declare function transformPipeExpression(rawExpr: string): string;
14
+ /**
15
+ * Checks if a DOM node is located inside a nested custom element child of rootEl.
16
+ */
17
+ export declare function isInsideNestedComponent(node: Node, rootEl: HTMLElement): boolean;
18
+ export interface ConditionalBranch {
19
+ type: 'if' | 'else-if' | 'else';
20
+ expr: string;
21
+ templateEl: HTMLElement;
22
+ }
23
+ export declare function getIfAttribute(el: Element): string | null;
24
+ export declare function getElseIfAttribute(el: Element): string | null;
25
+ export declare function hasElseAttribute(el: Element): boolean;
26
+ export declare function isStructuralConditional(el: Element): boolean;
27
+ export declare function getForAttribute(el: Element): string | null;
28
+ export declare function hasForAttribute(el: Element): boolean;
29
+ export declare function mountComponentOnElement(el: HTMLElement, ComponentClass: any): void;
30
+ /**
31
+ * Creates a reactive context chain for child components, resolving component properties
32
+ * and methods first, and delegating to parent/repeater context (item, index, parent methods) as fallback.
33
+ */
34
+ export declare function createComponentContext(instance: any, parentContext?: any): any;
35
+ /**
36
+ * Decorator that transforms a class into a native Web Component (Custom Element).
37
+ * Automatically registers the custom element with customElements.define().
38
+ */
39
+ export declare function Component(selectorOrOptions?: string | ComponentOptions): any;
40
+ export interface ViewChildOptions {
41
+ read?: 'element' | 'component';
42
+ }
43
+ export type ChildViewOptions = ViewChildOptions;
44
+ /**
45
+ * ViewChild Decorator
46
+ * Automatically queries and binds child elements / custom components when accessing the decorated property.
47
+ * If selector is omitted, the selector is implicitly inferred from the property name in kebab-case
48
+ * (e.g. `testDemoComponent` -> `<test-demo-component>` / `#test-demo-component`, `loader` -> `<loader-component>` / `#loader`).
49
+ * An explicit selector is optional and only needed when disambiguating between multiple instances.
50
+ *
51
+ * @param selectorOrTarget Optional CSS selector string (e.g. '#component1' or 'custom-component'), or target for bare decorator usage
52
+ * @param propertyKeyOrOptions Optional property key or ViewChild options
53
+ */
54
+ export declare function ViewChild(selectorOrTarget?: string | any, propertyKeyOrOptions?: any): any;
55
+ export declare const ChildView: typeof ViewChild;
56
+ export declare const defineComponent: (name: string, component: any) => void;
57
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/framework/component.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE/F,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,eAAO,MAAM,iBAAiB,kBAAyB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA8H/D;AAyCD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAYhF;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,WAAW,CAAC;CAC3B;AAQD,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQzD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAW7D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAQrD;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAE5D;AAID,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ1D;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAEpD;AAkBD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI,CA6ClF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,CA4B9E;AAmuBD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,GAAG,CAgI5E;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CAClC;AAED,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,oBAAoB,CAAC,EAAE,GAAG,GAAG,GAAG,CAgD1F;AAqBD,eAAO,MAAM,SAAS,kBAAY,CAAC;AAEnC,eAAO,MAAM,eAAe,SAAU,MAAM,aAAa,GAAG,SAiB3D,CAAC"}
@@ -0,0 +1,46 @@
1
+ export type Signal<T> = {
2
+ (): T;
3
+ set(value: T): void;
4
+ update(fn: (val: T) => T): void;
5
+ };
6
+ export type ReadonlySignal<T> = () => T;
7
+ export type ComputedSignal<T> = ReadonlySignal<T>;
8
+ /**
9
+ * Reactivity Primitives
10
+ */
11
+ export declare const signal: <T>(initialValue: T) => Signal<T>;
12
+ export declare const effect: (fn: Function) => (() => void);
13
+ /**
14
+ * Executes a function without capturing signal dependencies in the current reactive context.
15
+ */
16
+ export declare const untrack: <T>(fn: () => T) => T;
17
+ /**
18
+ * Creates a read-only computed signal that automatically derives its value
19
+ * and reacts synchronously whenever any dependent signals change.
20
+ */
21
+ export declare const computed: <T>(fn: () => T) => ReadonlySignal<T>;
22
+ /**
23
+ * DOM Utilities
24
+ */
25
+ export declare const updateTargets: (elements: HTMLElement[], newValue: string | null, ifNullValue?: string) => void;
26
+ export declare const updateStyles: (elements: HTMLElement[], newValue: string) => void;
27
+ export declare const updateValues: (elements: HTMLInputElement[], newValue: string | null, ifNullValue?: string) => void;
28
+ export declare const eventListener: (elements: HTMLElement[], event: string, handler: EventListenerOrEventListenerObject) => {
29
+ dispose: () => void;
30
+ };
31
+ export declare const getElement: (selector: string, rootEl?: HTMLElement | Document) => HTMLElement | null;
32
+ export declare const getElements: (selectors: Record<string, string>, rootEl?: HTMLElement | Document) => Map<string, HTMLElement>;
33
+ /**
34
+ * Framework Submodules
35
+ */
36
+ export * from './component';
37
+ export * from './di';
38
+ export * from './directive';
39
+ export * from './validator';
40
+ export * from './pipe';
41
+ export * from './bootstrap';
42
+ export * from './http';
43
+ export * from './router';
44
+ export * from './virtual-for';
45
+ export * from './seo';
46
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/framework/core.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;IACpB,IAAI,CAAC,CAAC;IACN,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AACxC,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;AAIlD;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,gBAAgB,CAAC,KAAG,MAAM,CAAC,CAAC,CAqBnD,CAAC;AAEF,eAAO,MAAM,MAAM,OAAQ,QAAQ,KAAG,CAAC,MAAM,IAAI,CAehD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,MAAM,MAAM,CAAC,KAAG,CAUxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,MAAM,MAAM,CAAC,KAAG,cAAc,CAAC,CAAC,CAQzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,aACZ,WAAW,EAAE,YACb,MAAM,GAAG,IAAI,+BAQ1B,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,WAAW,EAAE,YAAY,MAAM,SAMrE,CAAC;AAEF,eAAO,MAAM,YAAY,aACX,gBAAgB,EAAE,YAClB,MAAM,GAAG,IAAI,+BAQ1B,CAAC;AAEF,eAAO,MAAM,aAAa,aACZ,WAAW,EAAE,SAChB,MAAM,WACJ,kCAAkC;IAQvC,OAAO;CAQd,CAAC;AAEF,eAAO,MAAM,UAAU,aACT,MAAM,WACP,WAAW,GAAG,QAAQ,KAChC,WAAW,GAAG,IAIhB,CAAC;AAEF,eAAO,MAAM,WAAW,cACT,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WACxB,WAAW,GAAG,QAAQ,KAChC,GAAG,CAAC,MAAM,EAAE,WAAW,CAYzB,CAAC;AAEF;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC"}
package/types/di.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ export type Constructor<T = any> = new (...args: any[]) => T;
2
+ export type Token<T = any> = string | symbol | Constructor<T>;
3
+ export interface InjectableOptions {
4
+ name?: string;
5
+ singleton?: boolean;
6
+ }
7
+ declare class DependencyContainer {
8
+ private registry;
9
+ private instances;
10
+ /**
11
+ * Registers a service constructor under a specific token.
12
+ */
13
+ register<T>(token: Token<T>, target: Constructor<T>, options?: InjectableOptions): void;
14
+ /**
15
+ * Registers a pre-existing value or instance under a specific token.
16
+ */
17
+ registerValue<T>(token: Token<T>, value: T): void;
18
+ /**
19
+ * Resolves and returns an instance of the requested service.
20
+ */
21
+ resolve<T>(token: Token<T>): T;
22
+ /**
23
+ * Clears registered services and singleton instances (useful for testing).
24
+ */
25
+ clear(): void;
26
+ }
27
+ /**
28
+ * Global Dependency Injection Container
29
+ */
30
+ export declare const container: DependencyContainer;
31
+ /**
32
+ * Decorator to register a class as an injectable service.
33
+ * Supports:
34
+ * - @Injectable
35
+ * - @Injectable()
36
+ * - @Injectable('customName')
37
+ * - @Injectable({ name: 'customName', singleton: true })
38
+ */
39
+ export declare function Injectable(optionsOrNameOrTarget?: string | InjectableOptions | Constructor, context?: any): any;
40
+ /**
41
+ * Alias for @Injectable
42
+ */
43
+ export declare const Service: typeof Injectable;
44
+ /**
45
+ * Injects and resolves a registered service by token (name or class constructor).
46
+ */
47
+ export declare function inject<T>(token: Token<T>): T;
48
+ /**
49
+ * Registers an existing value or instance in the DI container.
50
+ */
51
+ export declare function registerValue<T>(token: Token<T>, value: T): void;
52
+ export {};
53
+ //# sourceMappingURL=di.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../../src/framework/di.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD,cAAM,mBAAmB;IACrB,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,SAAS,CAAyB;IAE1C;;OAEG;IACH,QAAQ,CAAC,CAAC,EACN,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,OAAO,GAAE,iBAAuC,GACjD,IAAI,CAKN;IAED;;OAEG;IACH,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAEhD;IAED;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAgC7B;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;CACJ;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,qBAA4B,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACtB,qBAAqB,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,WAAW,EAChE,OAAO,CAAC,EAAE,GAAG,GACd,GAAG,CAgCL;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,mBAAa,CAAC;AAElC;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAE5C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAEhE"}
@@ -0,0 +1,47 @@
1
+ import type { Constructor } from './di';
2
+ export interface DirectiveLifecycle {
3
+ element: HTMLElement;
4
+ value?: any;
5
+ onInit?(): void;
6
+ onChanges?(value: any, oldValue?: any): void;
7
+ onDOMChange?(record: MutationRecord | Event): void;
8
+ onDestroy?(): void;
9
+ }
10
+ export interface DirectiveOptions {
11
+ selector: string;
12
+ }
13
+ export declare const directiveRegistry: Map<string, Constructor<DirectiveLifecycle>>;
14
+ /**
15
+ * Normalizes directive selectors (e.g. '[highlight]' -> 'highlight')
16
+ */
17
+ export declare function normalizeDirectiveSelector(selector: string): string;
18
+ /**
19
+ * Decorator to register a class as a Directive.
20
+ * Supports:
21
+ * - @Directive('directiveName')
22
+ * - @Directive({ selector: 'directiveName' })
23
+ * - @Directive('[directiveName]')
24
+ * - @Directive
25
+ */
26
+ export declare function Directive(selectorOrOptionsOrTarget: string | DirectiveOptions | Constructor, context?: any): any;
27
+ /**
28
+ * Base class for directives providing DOM reference, value, and lifecycle hooks.
29
+ */
30
+ export declare abstract class BaseDirective implements DirectiveLifecycle {
31
+ element: HTMLElement;
32
+ value?: any;
33
+ context?: any;
34
+ constructor(element?: HTMLElement, value?: any, context?: any);
35
+ destroy(): void;
36
+ onInit?(): void;
37
+ onChanges?(value: any, oldValue?: any): void;
38
+ onDOMChange?(record: MutationRecord | Event): void;
39
+ onDestroy?(): void;
40
+ }
41
+ /**
42
+ * Scans a DOM tree for attributes matching registered directives and initializes them.
43
+ */
44
+ export declare function bindDirectives(root: HTMLElement, context?: any): Array<{
45
+ destroy: () => void;
46
+ }>;
47
+ //# sourceMappingURL=directive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../src/framework/directive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGxC,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC7C,WAAW,CAAC,CAAC,MAAM,EAAE,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;IACnD,SAAS,CAAC,IAAI,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,8CAAqD,CAAC;AAEpF;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACrB,yBAAyB,EAAE,MAAM,GAAG,gBAAgB,GAAG,WAAW,EAClE,OAAO,CAAC,EAAE,GAAG,GACd,GAAG,CAgCL;AAED;;GAEG;AACH,8BAAsB,aAAc,YAAW,kBAAkB;IAC7D,OAAO,EAAG,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd,YAAY,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAI5D;IAED,OAAO,IAAI,IAAI,CAEd;IAED,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC7C,WAAW,CAAC,CAAC,MAAM,EAAE,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;IACnD,SAAS,CAAC,IAAI,IAAI,CAAC;CACtB;AAID;;GAEG;AACH,wBAAgB,cAAc,CAC1B,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,GAAU,GACpB,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAmHhC"}