slicejs-web-framework 3.2.2 → 3.2.3

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 (107) hide show
  1. package/.opencode/opencode.json +14 -0
  2. package/LICENSE +21 -21
  3. package/README.md +174 -174
  4. package/Slice/Components/Structural/ContextManager/ContextManager.js +369 -369
  5. package/Slice/Components/Structural/ContextManager/ContextManagerDebugger.js +297 -297
  6. package/Slice/Components/Structural/Controller/Controller.js +1138 -1129
  7. package/Slice/Components/Structural/Controller/allowedValuesValidation.js +52 -0
  8. package/Slice/Components/Structural/Debugger/Debugger.css +619 -619
  9. package/Slice/Components/Structural/Debugger/Debugger.html +72 -72
  10. package/Slice/Components/Structural/Debugger/Debugger.js +1547 -1547
  11. package/Slice/Components/Structural/EventManager/EventManager.js +338 -338
  12. package/Slice/Components/Structural/EventManager/EventManagerDebugger.js +361 -361
  13. package/Slice/Components/Structural/Logger/Log.js +10 -10
  14. package/Slice/Components/Structural/Logger/Logger.js +146 -146
  15. package/Slice/Components/Structural/Router/Router.js +721 -721
  16. package/Slice/Components/Structural/StylesManager/StylesManager.js +78 -78
  17. package/Slice/Components/Structural/StylesManager/ThemeManager/ThemeManager.js +84 -84
  18. package/Slice/Slice.js +542 -542
  19. package/Slice/tests/build-bundled-component-without-category.test.js +103 -103
  20. package/Slice/tests/build-js-only-visual-components.test.js +144 -144
  21. package/Slice/tests/bundle-v2-runtime-contract.test.js +728 -728
  22. package/Slice/tests/props-allowed-values-validation.test.js +119 -0
  23. package/Slice/tests/public-env-runtime-accessors.test.js +44 -44
  24. package/Slice/tests/router-loading-finally.test.js +68 -68
  25. package/api/index.js +286 -286
  26. package/api/middleware/securityMiddleware.js +252 -252
  27. package/api/tests/public-env-resolver.test.js +193 -193
  28. package/api/utils/publicEnvResolver.js +117 -117
  29. package/package.json +38 -38
  30. package/sliceConfig.schema.json +109 -109
  31. package/src/App/index.html +22 -22
  32. package/src/App/index.js +23 -23
  33. package/src/App/style.css +40 -40
  34. package/src/Components/AppComponents/HomePage/HomePage.css +201 -201
  35. package/src/Components/AppComponents/HomePage/HomePage.html +37 -37
  36. package/src/Components/AppComponents/HomePage/HomePage.js +210 -210
  37. package/src/Components/AppComponents/Playground/Playground.css +11 -11
  38. package/src/Components/AppComponents/Playground/Playground.js +111 -111
  39. package/src/Components/Service/FetchManager/FetchManager.js +133 -133
  40. package/src/Components/Service/IndexedDbManager/IndexedDbManager.js +141 -141
  41. package/src/Components/Service/LocalStorageManager/LocalStorageManager.js +45 -45
  42. package/src/Components/Visual/Button/Button.css +47 -47
  43. package/src/Components/Visual/Button/Button.html +5 -5
  44. package/src/Components/Visual/Button/Button.js +92 -92
  45. package/src/Components/Visual/Card/Card.css +68 -68
  46. package/src/Components/Visual/Card/Card.html +7 -7
  47. package/src/Components/Visual/Card/Card.js +107 -107
  48. package/src/Components/Visual/Checkbox/Checkbox.css +87 -87
  49. package/src/Components/Visual/Checkbox/Checkbox.html +8 -8
  50. package/src/Components/Visual/Checkbox/Checkbox.js +86 -86
  51. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.css +129 -129
  52. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.html +3 -3
  53. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.js +262 -262
  54. package/src/Components/Visual/Details/Details.css +70 -70
  55. package/src/Components/Visual/Details/Details.html +9 -9
  56. package/src/Components/Visual/Details/Details.js +76 -76
  57. package/src/Components/Visual/DropDown/DropDown.css +60 -60
  58. package/src/Components/Visual/DropDown/DropDown.html +5 -5
  59. package/src/Components/Visual/DropDown/DropDown.js +63 -63
  60. package/src/Components/Visual/Grid/Grid.css +7 -7
  61. package/src/Components/Visual/Grid/Grid.html +1 -1
  62. package/src/Components/Visual/Grid/Grid.js +57 -57
  63. package/src/Components/Visual/Icon/Icon.css +510 -510
  64. package/src/Components/Visual/Icon/Icon.js +89 -89
  65. package/src/Components/Visual/Icon/slc.json +554 -554
  66. package/src/Components/Visual/Icon/slc.styl +507 -507
  67. package/src/Components/Visual/Icon/slc.svg +1485 -1485
  68. package/src/Components/Visual/Icon/slc.symbol.svg +1058 -1058
  69. package/src/Components/Visual/Input/Input.css +91 -91
  70. package/src/Components/Visual/Input/Input.html +4 -4
  71. package/src/Components/Visual/Input/Input.js +215 -215
  72. package/src/Components/Visual/Layout/Layout.js +49 -49
  73. package/src/Components/Visual/Link/Link.css +8 -8
  74. package/src/Components/Visual/Link/Link.html +1 -1
  75. package/src/Components/Visual/Link/Link.js +63 -63
  76. package/src/Components/Visual/Loading/Loading.css +56 -56
  77. package/src/Components/Visual/Loading/Loading.html +83 -83
  78. package/src/Components/Visual/Loading/Loading.js +38 -38
  79. package/src/Components/Visual/MultiRoute/MultiRoute.js +93 -93
  80. package/src/Components/Visual/Navbar/Navbar.css +115 -115
  81. package/src/Components/Visual/Navbar/Navbar.html +44 -44
  82. package/src/Components/Visual/Navbar/Navbar.js +141 -141
  83. package/src/Components/Visual/NotFound/NotFound.css +116 -116
  84. package/src/Components/Visual/NotFound/NotFound.html +23 -23
  85. package/src/Components/Visual/NotFound/NotFound.js +16 -16
  86. package/src/Components/Visual/Route/Route.js +93 -93
  87. package/src/Components/Visual/Select/Select.css +84 -84
  88. package/src/Components/Visual/Select/Select.html +8 -8
  89. package/src/Components/Visual/Select/Select.js +195 -195
  90. package/src/Components/Visual/Switch/Switch.css +76 -76
  91. package/src/Components/Visual/Switch/Switch.html +8 -8
  92. package/src/Components/Visual/Switch/Switch.js +102 -102
  93. package/src/Components/Visual/TreeItem/TreeItem.css +36 -36
  94. package/src/Components/Visual/TreeItem/TreeItem.html +1 -1
  95. package/src/Components/Visual/TreeItem/TreeItem.js +126 -126
  96. package/src/Components/Visual/TreeView/TreeView.css +8 -8
  97. package/src/Components/Visual/TreeView/TreeView.html +1 -1
  98. package/src/Components/Visual/TreeView/TreeView.js +48 -48
  99. package/src/Components/components.js +27 -27
  100. package/src/Styles/sliceStyles.css +34 -34
  101. package/src/Themes/Dark.css +42 -42
  102. package/src/Themes/Light.css +31 -31
  103. package/src/Themes/Slice.css +47 -47
  104. package/src/routes.js +15 -15
  105. package/src/sliceConfig.json +73 -73
  106. package/src/testing.js +887 -887
  107. package/types/index.d.ts +207 -207
@@ -1,201 +1,201 @@
1
- /* Home page styles */
2
- slice-home-page {
3
- display: block;
4
- width: 100%;
5
- font-family: var(--font-family);
6
- color: var(--font-primary-color);
7
- }
8
-
9
- /* ── HERO ── */
10
- .hero-section {
11
- min-height: 80vh;
12
- display: flex;
13
- align-items: center;
14
- justify-content: center;
15
- text-align: center;
16
- padding: 7rem 2rem 5rem;
17
- background-color: var(--primary-background-color);
18
- position: relative;
19
- overflow: hidden;
20
- }
21
-
22
- .hero-section::before {
23
- content: '';
24
- position: absolute;
25
- top: -150px;
26
- left: 50%;
27
- transform: translateX(-50%);
28
- width: 700px;
29
- height: 700px;
30
- background: radial-gradient(
31
- circle,
32
- rgba(var(--primary-color-rgb), 0.07) 0%,
33
- transparent 70%
34
- );
35
- pointer-events: none;
36
- }
37
-
38
- .hero-content {
39
- max-width: 640px;
40
- position: relative;
41
- z-index: 1;
42
- }
43
-
44
- .hero-badge {
45
- display: inline-block;
46
- background: rgba(var(--primary-color-rgb), 0.1);
47
- color: var(--primary-color);
48
- font-size: 0.75rem;
49
- font-weight: 700;
50
- letter-spacing: 0.08em;
51
- text-transform: uppercase;
52
- padding: 0.3rem 0.85rem;
53
- border-radius: 20px;
54
- margin-bottom: 1.5rem;
55
- }
56
-
57
- .hero-title {
58
- font-size: 3rem;
59
- font-weight: 800;
60
- color: var(--font-primary-color);
61
- line-height: 1.1;
62
- margin-bottom: 1rem;
63
- letter-spacing: -0.03em;
64
- }
65
-
66
- .hero-title .highlight {
67
- color: var(--primary-color);
68
- }
69
-
70
- .hero-sub {
71
- font-size: 1.05rem;
72
- color: var(--font-secondary-color);
73
- margin-bottom: 2rem;
74
- line-height: 1.6;
75
- }
76
-
77
- .hero-cta {
78
- display: flex;
79
- gap: 0.75rem;
80
- justify-content: center;
81
- margin-bottom: 2.5rem;
82
- }
83
-
84
- .hero-chips {
85
- display: flex;
86
- gap: 0.5rem;
87
- justify-content: center;
88
- flex-wrap: wrap;
89
- }
90
-
91
- .hero-chip {
92
- background: white;
93
- border: 1px solid var(--disabled-color);
94
- color: var(--primary-color);
95
- font-size: 0.75rem;
96
- font-weight: 600;
97
- padding: 0.3rem 0.75rem;
98
- border-radius: 20px;
99
- box-shadow: var(--box-shadow-primary);
100
- }
101
-
102
- /* ── FEATURES ── */
103
- .features-section {
104
- padding: 5rem 2rem;
105
- background: white;
106
- border-top: 1px solid var(--disabled-color);
107
- }
108
-
109
- .section-header {
110
- text-align: center;
111
- margin-bottom: 2.5rem;
112
- }
113
-
114
- .section-label {
115
- font-size: 0.72rem;
116
- font-weight: 700;
117
- color: var(--accent-color);
118
- text-transform: uppercase;
119
- letter-spacing: 0.1em;
120
- margin-bottom: 0.4rem;
121
- }
122
-
123
- .section-title {
124
- font-size: 1.9rem;
125
- font-weight: 800;
126
- color: var(--font-primary-color);
127
- letter-spacing: -0.02em;
128
- }
129
-
130
- .feature-grid {
131
- display: grid;
132
- grid-template-columns: repeat(3, 1fr);
133
- gap: 1.2rem;
134
- max-width: 820px;
135
- margin: 0 auto;
136
- }
137
-
138
- .feature-item {
139
- background: var(--primary-background-color);
140
- border-radius: 10px;
141
- padding: 1.4rem 1.2rem;
142
- border: 1px solid var(--disabled-color);
143
- transition: box-shadow 0.2s, transform 0.15s;
144
- }
145
-
146
- .feature-item:hover {
147
- box-shadow: var(--box-shadow-primary);
148
- transform: translateY(-2px);
149
- }
150
-
151
- .feature-title {
152
- font-size: 0.9rem;
153
- font-weight: 700;
154
- color: var(--font-primary-color);
155
- margin-bottom: 0.35rem;
156
- }
157
-
158
- .feature-description {
159
- font-size: 0.78rem;
160
- color: var(--medium-color);
161
- line-height: 1.5;
162
- }
163
-
164
- /* ── SHOWCASE ── */
165
- .showcase-section {
166
- padding: 5rem 2rem;
167
- background: var(--primary-background-color);
168
- border-top: 1px solid var(--disabled-color);
169
- }
170
-
171
- .showcase-grid {
172
- display: grid;
173
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
174
- gap: 1rem;
175
- max-width: 860px;
176
- margin: 0 auto;
177
- }
178
-
179
- .comp-card {
180
- background: white;
181
- border-radius: 10px;
182
- padding: 1.3rem 1.2rem;
183
- border: 1px solid var(--disabled-color);
184
- box-shadow: 0 2px 8px rgba(var(--primary-color-rgb), 0.06);
185
- }
186
-
187
- .comp-label {
188
- font-size: 0.65rem;
189
- font-weight: 700;
190
- color: var(--medium-color);
191
- text-transform: uppercase;
192
- letter-spacing: 0.1em;
193
- margin-bottom: 0.75rem;
194
- }
195
-
196
- .comp-demo {
197
- display: flex;
198
- align-items: center;
199
- gap: 0.6rem;
200
- flex-wrap: wrap;
201
- }
1
+ /* Home page styles */
2
+ slice-home-page {
3
+ display: block;
4
+ width: 100%;
5
+ font-family: var(--font-family);
6
+ color: var(--font-primary-color);
7
+ }
8
+
9
+ /* ── HERO ── */
10
+ .hero-section {
11
+ min-height: 80vh;
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ text-align: center;
16
+ padding: 7rem 2rem 5rem;
17
+ background-color: var(--primary-background-color);
18
+ position: relative;
19
+ overflow: hidden;
20
+ }
21
+
22
+ .hero-section::before {
23
+ content: '';
24
+ position: absolute;
25
+ top: -150px;
26
+ left: 50%;
27
+ transform: translateX(-50%);
28
+ width: 700px;
29
+ height: 700px;
30
+ background: radial-gradient(
31
+ circle,
32
+ rgba(var(--primary-color-rgb), 0.07) 0%,
33
+ transparent 70%
34
+ );
35
+ pointer-events: none;
36
+ }
37
+
38
+ .hero-content {
39
+ max-width: 640px;
40
+ position: relative;
41
+ z-index: 1;
42
+ }
43
+
44
+ .hero-badge {
45
+ display: inline-block;
46
+ background: rgba(var(--primary-color-rgb), 0.1);
47
+ color: var(--primary-color);
48
+ font-size: 0.75rem;
49
+ font-weight: 700;
50
+ letter-spacing: 0.08em;
51
+ text-transform: uppercase;
52
+ padding: 0.3rem 0.85rem;
53
+ border-radius: 20px;
54
+ margin-bottom: 1.5rem;
55
+ }
56
+
57
+ .hero-title {
58
+ font-size: 3rem;
59
+ font-weight: 800;
60
+ color: var(--font-primary-color);
61
+ line-height: 1.1;
62
+ margin-bottom: 1rem;
63
+ letter-spacing: -0.03em;
64
+ }
65
+
66
+ .hero-title .highlight {
67
+ color: var(--primary-color);
68
+ }
69
+
70
+ .hero-sub {
71
+ font-size: 1.05rem;
72
+ color: var(--font-secondary-color);
73
+ margin-bottom: 2rem;
74
+ line-height: 1.6;
75
+ }
76
+
77
+ .hero-cta {
78
+ display: flex;
79
+ gap: 0.75rem;
80
+ justify-content: center;
81
+ margin-bottom: 2.5rem;
82
+ }
83
+
84
+ .hero-chips {
85
+ display: flex;
86
+ gap: 0.5rem;
87
+ justify-content: center;
88
+ flex-wrap: wrap;
89
+ }
90
+
91
+ .hero-chip {
92
+ background: white;
93
+ border: 1px solid var(--disabled-color);
94
+ color: var(--primary-color);
95
+ font-size: 0.75rem;
96
+ font-weight: 600;
97
+ padding: 0.3rem 0.75rem;
98
+ border-radius: 20px;
99
+ box-shadow: var(--box-shadow-primary);
100
+ }
101
+
102
+ /* ── FEATURES ── */
103
+ .features-section {
104
+ padding: 5rem 2rem;
105
+ background: white;
106
+ border-top: 1px solid var(--disabled-color);
107
+ }
108
+
109
+ .section-header {
110
+ text-align: center;
111
+ margin-bottom: 2.5rem;
112
+ }
113
+
114
+ .section-label {
115
+ font-size: 0.72rem;
116
+ font-weight: 700;
117
+ color: var(--accent-color);
118
+ text-transform: uppercase;
119
+ letter-spacing: 0.1em;
120
+ margin-bottom: 0.4rem;
121
+ }
122
+
123
+ .section-title {
124
+ font-size: 1.9rem;
125
+ font-weight: 800;
126
+ color: var(--font-primary-color);
127
+ letter-spacing: -0.02em;
128
+ }
129
+
130
+ .feature-grid {
131
+ display: grid;
132
+ grid-template-columns: repeat(3, 1fr);
133
+ gap: 1.2rem;
134
+ max-width: 820px;
135
+ margin: 0 auto;
136
+ }
137
+
138
+ .feature-item {
139
+ background: var(--primary-background-color);
140
+ border-radius: 10px;
141
+ padding: 1.4rem 1.2rem;
142
+ border: 1px solid var(--disabled-color);
143
+ transition: box-shadow 0.2s, transform 0.15s;
144
+ }
145
+
146
+ .feature-item:hover {
147
+ box-shadow: var(--box-shadow-primary);
148
+ transform: translateY(-2px);
149
+ }
150
+
151
+ .feature-title {
152
+ font-size: 0.9rem;
153
+ font-weight: 700;
154
+ color: var(--font-primary-color);
155
+ margin-bottom: 0.35rem;
156
+ }
157
+
158
+ .feature-description {
159
+ font-size: 0.78rem;
160
+ color: var(--medium-color);
161
+ line-height: 1.5;
162
+ }
163
+
164
+ /* ── SHOWCASE ── */
165
+ .showcase-section {
166
+ padding: 5rem 2rem;
167
+ background: var(--primary-background-color);
168
+ border-top: 1px solid var(--disabled-color);
169
+ }
170
+
171
+ .showcase-grid {
172
+ display: grid;
173
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
174
+ gap: 1rem;
175
+ max-width: 860px;
176
+ margin: 0 auto;
177
+ }
178
+
179
+ .comp-card {
180
+ background: white;
181
+ border-radius: 10px;
182
+ padding: 1.3rem 1.2rem;
183
+ border: 1px solid var(--disabled-color);
184
+ box-shadow: 0 2px 8px rgba(var(--primary-color-rgb), 0.06);
185
+ }
186
+
187
+ .comp-label {
188
+ font-size: 0.65rem;
189
+ font-weight: 700;
190
+ color: var(--medium-color);
191
+ text-transform: uppercase;
192
+ letter-spacing: 0.1em;
193
+ margin-bottom: 0.75rem;
194
+ }
195
+
196
+ .comp-demo {
197
+ display: flex;
198
+ align-items: center;
199
+ gap: 0.6rem;
200
+ flex-wrap: wrap;
201
+ }
@@ -1,37 +1,37 @@
1
- <div class="home-page-container">
2
-
3
- <section class="hero-section">
4
- <div class="hero-content">
5
- <div class="hero-badge">v2.4 · Vanilla JS Framework</div>
6
- <h1 class="hero-title">Build your web app<br>one <span class="highlight">Slice</span> at a time</h1>
7
- <p class="hero-sub">A lightweight, component-based framework for building web applications with vanilla JavaScript and web standards.</p>
8
- <div class="hero-cta"></div>
9
- <div class="hero-chips">
10
- <span class="hero-chip">Button</span>
11
- <span class="hero-chip">Input</span>
12
- <span class="hero-chip">Switch</span>
13
- <span class="hero-chip">Navbar</span>
14
- <span class="hero-chip">Grid</span>
15
- <span class="hero-chip">Card</span>
16
- <span class="hero-chip">+ more</span>
17
- </div>
18
- </div>
19
- </section>
20
-
21
- <section class="features-section">
22
- <div class="section-header">
23
- <p class="section-label">Why Slice.js</p>
24
- <h2 class="section-title">Everything you need, nothing you don't</h2>
25
- </div>
26
- <div class="feature-grid"></div>
27
- </section>
28
-
29
- <section class="showcase-section">
30
- <div class="section-header">
31
- <p class="section-label">Component Showcase</p>
32
- <h2 class="section-title">Ready-to-use components</h2>
33
- </div>
34
- <div class="showcase-grid"></div>
35
- </section>
36
-
37
- </div>
1
+ <div class="home-page-container">
2
+
3
+ <section class="hero-section">
4
+ <div class="hero-content">
5
+ <div class="hero-badge">v2.4 · Vanilla JS Framework</div>
6
+ <h1 class="hero-title">Build your web app<br>one <span class="highlight">Slice</span> at a time</h1>
7
+ <p class="hero-sub">A lightweight, component-based framework for building web applications with vanilla JavaScript and web standards.</p>
8
+ <div class="hero-cta"></div>
9
+ <div class="hero-chips">
10
+ <span class="hero-chip">Button</span>
11
+ <span class="hero-chip">Input</span>
12
+ <span class="hero-chip">Switch</span>
13
+ <span class="hero-chip">Navbar</span>
14
+ <span class="hero-chip">Grid</span>
15
+ <span class="hero-chip">Card</span>
16
+ <span class="hero-chip">+ more</span>
17
+ </div>
18
+ </div>
19
+ </section>
20
+
21
+ <section class="features-section">
22
+ <div class="section-header">
23
+ <p class="section-label">Why Slice.js</p>
24
+ <h2 class="section-title">Everything you need, nothing you don't</h2>
25
+ </div>
26
+ <div class="feature-grid"></div>
27
+ </section>
28
+
29
+ <section class="showcase-section">
30
+ <div class="section-header">
31
+ <p class="section-label">Component Showcase</p>
32
+ <h2 class="section-title">Ready-to-use components</h2>
33
+ </div>
34
+ <div class="showcase-grid"></div>
35
+ </section>
36
+
37
+ </div>