lightview 1.8.1-b → 2.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 (224) hide show
  1. package/.agent/workflows/daisyui-component-migration.md +155 -0
  2. package/.codacy/cli.sh +149 -0
  3. package/.codacy/codacy.yaml +15 -0
  4. package/.github/instructions/codacy.instructions.md +72 -0
  5. package/.wranglerignore +21 -0
  6. package/README.md +1331 -21
  7. package/_headers +4 -0
  8. package/build.js +70 -0
  9. package/components/actions/button.js +151 -0
  10. package/components/actions/dropdown.js +120 -0
  11. package/components/actions/modal.js +146 -0
  12. package/components/actions/swap.js +118 -0
  13. package/components/daisyui.js +288 -0
  14. package/components/data-display/accordion.js +128 -0
  15. package/components/data-display/alert.js +112 -0
  16. package/components/data-display/avatar.js +170 -0
  17. package/components/data-display/badge.js +82 -0
  18. package/components/data-display/card.js +151 -0
  19. package/components/data-display/carousel.js +94 -0
  20. package/components/data-display/chart.js +220 -0
  21. package/components/data-display/chat.js +128 -0
  22. package/components/data-display/collapse.js +103 -0
  23. package/components/data-display/countdown.js +69 -0
  24. package/components/data-display/diff.js +111 -0
  25. package/components/data-display/kbd.js +65 -0
  26. package/components/data-display/loading.js +75 -0
  27. package/components/data-display/progress.js +79 -0
  28. package/components/data-display/radial-progress.js +88 -0
  29. package/components/data-display/skeleton.js +66 -0
  30. package/components/data-display/stats.js +159 -0
  31. package/components/data-display/table.js +146 -0
  32. package/components/data-display/timeline.js +146 -0
  33. package/components/data-display/toast.js +72 -0
  34. package/components/data-display/tooltip.js +74 -0
  35. package/components/data-input/checkbox.js +253 -0
  36. package/components/data-input/file-input.js +224 -0
  37. package/components/data-input/input.js +264 -0
  38. package/components/data-input/radio.js +338 -0
  39. package/components/data-input/range.js +204 -0
  40. package/components/data-input/rating.js +219 -0
  41. package/components/data-input/select.js +287 -0
  42. package/components/data-input/textarea.js +287 -0
  43. package/components/data-input/toggle.js +201 -0
  44. package/components/index.js +137 -0
  45. package/components/layout/divider.js +72 -0
  46. package/components/layout/drawer.js +142 -0
  47. package/components/layout/footer.js +100 -0
  48. package/components/layout/hero.js +109 -0
  49. package/components/layout/indicator.js +90 -0
  50. package/components/layout/join.js +78 -0
  51. package/components/layout/navbar.js +110 -0
  52. package/components/navigation/breadcrumbs.js +91 -0
  53. package/components/navigation/dock.js +103 -0
  54. package/components/navigation/menu.js +126 -0
  55. package/components/navigation/pagination.js +105 -0
  56. package/components/navigation/steps.js +89 -0
  57. package/components/navigation/tabs.css +177 -0
  58. package/components/navigation/tabs.js +123 -0
  59. package/components/theme/theme-switch.css +65 -0
  60. package/components/theme/theme-switch.js +177 -0
  61. package/docs/about.html +164 -0
  62. package/docs/api/computed.html +184 -0
  63. package/docs/api/effects.html +173 -0
  64. package/docs/api/elements.html +180 -0
  65. package/docs/api/enhance.html +225 -0
  66. package/docs/api/hypermedia.html +165 -0
  67. package/docs/api/index.html +178 -0
  68. package/docs/api/nav.html +18 -0
  69. package/docs/api/signals.html +136 -0
  70. package/docs/api/state.html +217 -0
  71. package/docs/assets/images/logo-favicon.svg +42 -0
  72. package/docs/assets/images/logo-static.svg +40 -0
  73. package/docs/assets/images/logo.svg +66 -0
  74. package/docs/assets/js/examplify.js +395 -0
  75. package/docs/assets/styles/site.css +1102 -0
  76. package/docs/assets/styles/themes.css +236 -0
  77. package/docs/components/accordion.html +439 -0
  78. package/docs/components/alert.html +528 -0
  79. package/docs/components/avatar.html +586 -0
  80. package/docs/components/badge.html +531 -0
  81. package/docs/components/breadcrumbs.html +278 -0
  82. package/docs/components/button.html +579 -0
  83. package/docs/components/card.html +561 -0
  84. package/docs/components/carousel.html +286 -0
  85. package/docs/components/chart-area.html +702 -0
  86. package/docs/components/chart-bar.html +782 -0
  87. package/docs/components/chart-column.html +735 -0
  88. package/docs/components/chart-line.html +794 -0
  89. package/docs/components/chart-pie.html +823 -0
  90. package/docs/components/chart.html +612 -0
  91. package/docs/components/chat.html +547 -0
  92. package/docs/components/checkbox.html +641 -0
  93. package/docs/components/collapse.html +536 -0
  94. package/docs/components/component-nav.html +53 -0
  95. package/docs/components/countdown.html +470 -0
  96. package/docs/components/diff.html +245 -0
  97. package/docs/components/divider.html +240 -0
  98. package/docs/components/dock.html +277 -0
  99. package/docs/components/drawer.html +515 -0
  100. package/docs/components/dropdown.html +479 -0
  101. package/docs/components/file-input.html +591 -0
  102. package/docs/components/footer.html +301 -0
  103. package/docs/components/gallery.html +504 -0
  104. package/docs/components/hero.html +264 -0
  105. package/docs/components/index.css +840 -0
  106. package/docs/components/index.html +735 -0
  107. package/docs/components/indicator.html +342 -0
  108. package/docs/components/input.html +644 -0
  109. package/docs/components/join.html +285 -0
  110. package/docs/components/kbd.html +322 -0
  111. package/docs/components/loading.html +521 -0
  112. package/docs/components/menu.html +461 -0
  113. package/docs/components/modal.html +639 -0
  114. package/docs/components/navbar.html +321 -0
  115. package/docs/components/pagination.html +279 -0
  116. package/docs/components/progress.html +514 -0
  117. package/docs/components/radial-progress.html +434 -0
  118. package/docs/components/radio.html +655 -0
  119. package/docs/components/range.html +611 -0
  120. package/docs/components/rating.html +642 -0
  121. package/docs/components/select.html +696 -0
  122. package/docs/components/sidebar-setup.js +93 -0
  123. package/docs/components/skeleton.html +447 -0
  124. package/docs/components/spinner.html +68 -0
  125. package/docs/components/stats.html +486 -0
  126. package/docs/components/steps.html +356 -0
  127. package/docs/components/swap.html +517 -0
  128. package/docs/components/switch.html +68 -0
  129. package/docs/components/table.html +668 -0
  130. package/docs/components/tabs.html +506 -0
  131. package/docs/components/text-input.html +68 -0
  132. package/docs/components/textarea.html +603 -0
  133. package/docs/components/timeline.html +487 -0
  134. package/docs/components/toast.html +474 -0
  135. package/docs/components/toggle.html +564 -0
  136. package/docs/components/tooltip.html +423 -0
  137. package/docs/examples/getting-started-example.html +40 -0
  138. package/docs/examples/index.html +93 -0
  139. package/docs/getting-started/index.html +739 -0
  140. package/docs/getting-started/reviews.html +23 -0
  141. package/docs/getting-started/reviews.odom +108 -0
  142. package/docs/getting-started/reviews.vdom +84 -0
  143. package/docs/index.html +134 -0
  144. package/docs/playground.html +416 -0
  145. package/docs/router.html +285 -0
  146. package/docs/styles/index.html +190 -0
  147. package/functions/_middleware.js +32 -0
  148. package/index.html +309 -0
  149. package/lightview-router.js +364 -0
  150. package/lightview-x.js +1577 -0
  151. package/lightview.js +658 -1109
  152. package/lightview.js.backup +793 -0
  153. package/middleware/locale.js +25 -0
  154. package/middleware/markdown.js +44 -0
  155. package/middleware/notFound.js +37 -0
  156. package/package.json +27 -41
  157. package/watch.js +92 -0
  158. package/wrangler.toml +12 -0
  159. package/.idea/lightview.iml +0 -12
  160. package/.idea/modules.xml +0 -8
  161. package/.idea/vcs.xml +0 -6
  162. package/LICENSE +0 -21
  163. package/codepen-no-tabs-embed.css +0 -2
  164. package/components/chart/chart.html +0 -17
  165. package/components/chart/example.html +0 -32
  166. package/components/chart.html +0 -83
  167. package/components/components.js +0 -113
  168. package/components/gantt/example.html +0 -22
  169. package/components/gantt/gantt.html +0 -42
  170. package/components/gauge/example.html +0 -28
  171. package/components/gauge/gauge.html +0 -20
  172. package/components/gauge.html +0 -60
  173. package/components/orgchart/example.html +0 -25
  174. package/components/orgchart/orgchart.html +0 -41
  175. package/components/repl/code-editor.html +0 -64
  176. package/components/repl/editor.html +0 -37
  177. package/components/repl/editorjs-inline-tool/index.js +0 -3
  178. package/components/repl/editorjs-inline-tool/inline-tools.js +0 -28
  179. package/components/repl/editorjs-inline-tool/tool.js +0 -175
  180. package/components/repl/repl-with-wysiwyg.html +0 -355
  181. package/components/repl/repl.html +0 -345
  182. package/components/repl/sup.js +0 -44
  183. package/components/repl/wysiwyg-repl.html +0 -258
  184. package/components/timeline/example.html +0 -33
  185. package/components/timeline/timeline.html +0 -44
  186. package/components/timeline.html +0 -81
  187. package/examples/anchor.html +0 -11
  188. package/examples/chart.html +0 -34
  189. package/examples/counter.html +0 -26
  190. package/examples/counter.test.mjs +0 -47
  191. package/examples/counter2.html +0 -26
  192. package/examples/directives.html +0 -79
  193. package/examples/foreign.html +0 -50
  194. package/examples/forgeinform.html +0 -98
  195. package/examples/form.html +0 -61
  196. package/examples/gauge.html +0 -18
  197. package/examples/invalid-template-literals.html +0 -44
  198. package/examples/medium/remote.html +0 -60
  199. package/examples/message.html +0 -18
  200. package/examples/nested.html +0 -11
  201. package/examples/object-bound-form.html +0 -34
  202. package/examples/remote-server.js +0 -51
  203. package/examples/remote.html +0 -34
  204. package/examples/remote.json +0 -1
  205. package/examples/scratch.html +0 -69
  206. package/examples/sensors/index.html +0 -30
  207. package/examples/sensors/sensor-server.js +0 -30
  208. package/examples/shared.html +0 -41
  209. package/examples/template.html +0 -33
  210. package/examples/timeline.html +0 -21
  211. package/examples/todo.html +0 -38
  212. package/examples/top.html +0 -10
  213. package/examples/types.html +0 -94
  214. package/examples/xor.html +0 -62
  215. package/jest-puppeteer.config.js +0 -5
  216. package/jest.config.json +0 -12
  217. package/sites/client.html +0 -48
  218. package/sites/index.html +0 -247
  219. package/test/basic.html +0 -93
  220. package/test/basic.test.mjs +0 -315
  221. package/test/extended.html +0 -29
  222. package/test/extended.test.mjs +0 -448
  223. package/types.js +0 -534
  224. package/unsplash.key +0 -1
@@ -0,0 +1,23 @@
1
+ <!-- This file is loaded dynamically via Lightview's src attribute -->
2
+ <!-- Demonstrates hypermedia: clicking an href triggers loading this content -->
3
+ <!-- Template literals access parent signals/state via signal.get() -->
4
+ <div style="padding: 1rem; background: #f8fafc; border-radius: 8px; margin-top: 1rem;">
5
+ <p style="color: #6366f1; font-weight: 500; font-size: 0.8em; margin-bottom: 0.5rem;">
6
+ Displaying ${signal.get('reviewCount').value} reviews in ${signal.get('currentFormat').value} format.
7
+ </p>
8
+ <div style="padding: 0.75rem; border-bottom: 1px solid #e2e8f0;">
9
+ <strong style="color: #f59e0b;">⭐⭐⭐⭐⭐</strong>
10
+ <span style="margin-left: 0.5rem; color: #334155;">"Best shoes ever! Super comfortable and stylish."</span>
11
+ <div style="font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;">— Maria S.</div>
12
+ </div>
13
+ <div style="padding: 0.75rem; border-bottom: 1px solid #e2e8f0;">
14
+ <strong style="color: #f59e0b;">⭐⭐⭐⭐</strong>
15
+ <span style="margin-left: 0.5rem; color: #334155;">"Great quality for the price. Would buy again."</span>
16
+ <div style="font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;">— John D.</div>
17
+ </div>
18
+ <div style="padding: 0.75rem;">
19
+ <strong style="color: #f59e0b;">⭐⭐⭐⭐⭐</strong>
20
+ <span style="margin-left: 0.5rem; color: #334155;">"Perfect fit! Arrived faster than expected."</span>
21
+ <div style="font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;">— Alex K.</div>
22
+ </div>
23
+ </div>
@@ -0,0 +1,108 @@
1
+ [
2
+ {
3
+ "div": {
4
+ "style": "padding: 1rem; background: #f8fafc; border-radius: 8px; margin-top: 1rem;",
5
+ "children": [
6
+ {
7
+ "p": {
8
+ "style": "color: #6366f1; font-weight: 500; font-size: 0.8em; margin-bottom: 0.5rem;",
9
+ "children": ["Displaying ${signal.get('reviewCount').value} reviews in ${signal.get('currentFormat').value} format."]
10
+ }
11
+ },
12
+ {
13
+ "div": {
14
+ "style": "padding: 0.75rem; border-bottom: 1px solid #e2e8f0;",
15
+ "children": [
16
+ {
17
+ "strong": {
18
+ "style": "color: #f59e0b;",
19
+ "children": [
20
+ "⭐⭐⭐⭐⭐"
21
+ ]
22
+ }
23
+ },
24
+ {
25
+ "span": {
26
+ "style": "margin-left: 0.5rem; color: #334155;",
27
+ "children": [
28
+ "\"Best shoes ever! Super comfortable and stylish.\""
29
+ ]
30
+ }
31
+ },
32
+ {
33
+ "div": {
34
+ "style": "font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;",
35
+ "children": [
36
+ "— Maria S."
37
+ ]
38
+ }
39
+ }
40
+ ]
41
+ }
42
+ },
43
+ {
44
+ "div": {
45
+ "style": "padding: 0.75rem; border-bottom: 1px solid #e2e8f0;",
46
+ "children": [
47
+ {
48
+ "strong": {
49
+ "style": "color: #f59e0b;",
50
+ "children": [
51
+ "⭐⭐⭐⭐"
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "span": {
57
+ "style": "margin-left: 0.5rem; color: #334155;",
58
+ "children": [
59
+ "\"Great quality for the price. Would buy again.\""
60
+ ]
61
+ }
62
+ },
63
+ {
64
+ "div": {
65
+ "style": "font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;",
66
+ "children": [
67
+ "— John D."
68
+ ]
69
+ }
70
+ }
71
+ ]
72
+ }
73
+ },
74
+ {
75
+ "div": {
76
+ "style": "padding: 0.75rem;",
77
+ "children": [
78
+ {
79
+ "strong": {
80
+ "style": "color: #f59e0b;",
81
+ "children": [
82
+ "⭐⭐⭐⭐⭐"
83
+ ]
84
+ }
85
+ },
86
+ {
87
+ "span": {
88
+ "style": "margin-left: 0.5rem; color: #334155;",
89
+ "children": [
90
+ "\"Perfect fit! Arrived faster than expected.\""
91
+ ]
92
+ }
93
+ },
94
+ {
95
+ "div": {
96
+ "style": "font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;",
97
+ "children": [
98
+ "— Alex K."
99
+ ]
100
+ }
101
+ }
102
+ ]
103
+ }
104
+ }
105
+ ]
106
+ }
107
+ }
108
+ ]
@@ -0,0 +1,84 @@
1
+ [
2
+ {
3
+ "tag": "div",
4
+ "attributes": {
5
+ "style": "padding: 1rem; background: #f8fafc; border-radius: 8px; margin-top: 1rem;"
6
+ },
7
+ "children": [
8
+ {
9
+ "tag": "p",
10
+ "attributes": { "style": "color: #6366f1; font-weight: 500; font-size: 0.8em; margin-bottom: 0.5rem;" },
11
+ "children": ["Displaying ${signal.get('reviewCount').value} reviews in ${signal.get('currentFormat').value} format."]
12
+ },
13
+ {
14
+ "tag": "div",
15
+ "attributes": {
16
+ "style": "padding: 0.75rem; border-bottom: 1px solid #e2e8f0;"
17
+ },
18
+ "children": [
19
+ {
20
+ "tag": "strong",
21
+ "attributes": { "style": "color: #f59e0b;" },
22
+ "children": ["⭐⭐⭐⭐⭐"]
23
+ },
24
+ {
25
+ "tag": "span",
26
+ "attributes": { "style": "margin-left: 0.5rem; color: #334155;" },
27
+ "children": ["\"Best shoes ever! Super comfortable and stylish.\""]
28
+ },
29
+ {
30
+ "tag": "div",
31
+ "attributes": { "style": "font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;" },
32
+ "children": ["— Maria S."]
33
+ }
34
+ ]
35
+ },
36
+ {
37
+ "tag": "div",
38
+ "attributes": {
39
+ "style": "padding: 0.75rem; border-bottom: 1px solid #e2e8f0;"
40
+ },
41
+ "children": [
42
+ {
43
+ "tag": "strong",
44
+ "attributes": { "style": "color: #f59e0b;" },
45
+ "children": ["⭐⭐⭐⭐"]
46
+ },
47
+ {
48
+ "tag": "span",
49
+ "attributes": { "style": "margin-left: 0.5rem; color: #334155;" },
50
+ "children": ["\"Great quality for the price. Would buy again.\""]
51
+ },
52
+ {
53
+ "tag": "div",
54
+ "attributes": { "style": "font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;" },
55
+ "children": ["— John D."]
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ "tag": "div",
61
+ "attributes": {
62
+ "style": "padding: 0.75rem;"
63
+ },
64
+ "children": [
65
+ {
66
+ "tag": "strong",
67
+ "attributes": { "style": "color: #f59e0b;" },
68
+ "children": ["⭐⭐⭐⭐⭐"]
69
+ },
70
+ {
71
+ "tag": "span",
72
+ "attributes": { "style": "margin-left: 0.5rem; color: #334155;" },
73
+ "children": ["\"Perfect fit! Arrived faster than expected.\""]
74
+ },
75
+ {
76
+ "tag": "div",
77
+ "attributes": { "style": "font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem;" },
78
+ "children": ["— Alex K."]
79
+ }
80
+ ]
81
+ }
82
+ ]
83
+ }
84
+ ]
@@ -0,0 +1,134 @@
1
+ <!-- SEO-friendly SPA Shim -->
2
+ <script src="/lightview-router.js"></script>
3
+ <script>
4
+ if (window.LightviewRouter) {
5
+ LightviewRouter.base('/index.html');
6
+ }
7
+ </script>
8
+
9
+ <!-- Hero Section -->
10
+ <section class="hero">
11
+ <div class="hero-content">
12
+ <img src="/docs/assets/images/logo.svg" class="hero-logo" alt="Lightview Logo" width="512" height="512">
13
+ <h1>Lightview</h1>
14
+ <p class="hero-tagline">Reactive UI's done light</p>
15
+ <p class="hero-description">
16
+ More power. Less energy.
17
+ </p>
18
+ <div class="hero-actions">
19
+ <a href="./getting-started/" class="btn btn-primary btn-lg">Get Started</a>
20
+ </div>
21
+ <div class="hero-stats">
22
+ <div class="hero-stat">
23
+ <div class="hero-stat-value">Zero</div>
24
+ <div class="hero-stat-label">Dependencies</div>
25
+ </div>
26
+ <div class="hero-stat">
27
+ <div class="hero-stat-value">Zero</div>
28
+ <div class="hero-stat-label">Build Steps</div>
29
+ </div>
30
+ <div class="hero-stat">
31
+ <div class="hero-stat-value">4</div>
32
+ <div class="hero-stat-label">Ways to Build</div>
33
+ </div>
34
+ <div class="hero-stat">
35
+ <div class="hero-stat-value">40+</div>
36
+ <div class="hero-stat-label">Components</div>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ </section>
41
+
42
+ <!-- Features Section -->
43
+ <section class="section">
44
+ <div class="section-content">
45
+ <div class="section-header">
46
+ <h2 class="section-title">Heavy? Not Our Thing.</h2>
47
+ <p class="section-subtitle">
48
+ Have fun, stay light.
49
+ </p>
50
+ </div>
51
+ <div class="feature-grid">
52
+ <a href="./api/signals.html" class="feature-card" style="text-decoration: none; color: inherit;">
53
+ <div class="feature-icon">
54
+ <svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2">
55
+ <circle cx="12" cy="12" r="10" />
56
+ <path d="M12 6v6l4 2" />
57
+ </svg>
58
+ </div>
59
+ <h3 class="feature-title">Signals and Object State Reactivity</h3>
60
+ <p class="feature-description">
61
+ Fine-grained reactivity with signals and obejct state. Updates propagate automatically—no virtual
62
+ DOM diffing needed. As a bonus, session and local storage are also supported.
63
+ </p>
64
+ </a>
65
+ <a href="./api/elements.html" class="feature-card" style="text-decoration: none; color: inherit;">
66
+ <div class="feature-icon">
67
+ <svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2">
68
+ <rect x="3" y="3" width="18" height="18" rx="2" />
69
+ <path d="M3 9h18M9 21V9" />
70
+ </svg>
71
+ </div>
72
+ <h3 class="feature-title">Multiple Syntaxes</h3>
73
+ <p class="feature-description">
74
+ Tagged API, vDOM, Object DOM, HTML. Pick your style—they all work together.
75
+ </p>
76
+ </a>
77
+ <a href="./api/hypermedia.html" class="feature-card" style="text-decoration: none; color: inherit;">
78
+ <div class="feature-icon">
79
+ <svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2">
80
+ <path
81
+ d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.66 0 3-4 3-9s-1.34-9-3-9m0 18c-1.66 0-3-4-3-9s1.34-9 3-9" />
82
+ </svg>
83
+ </div>
84
+ <h3 class="feature-title">Hypermedia Ready</h3>
85
+ <p class="feature-description">
86
+ Fetch HTML, vDOM, or Object DOM with the <code>src</code> attribute. HTMX-like patterns for
87
+ <code>src</code> and <code>href</code> built right
88
+ in.
89
+ </p>
90
+ </a>
91
+ <a href="./components/index.html" class="feature-card" style="text-decoration: none; color: inherit;">
92
+ <div class="feature-icon">
93
+ <svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2">
94
+ <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5" />
95
+ </svg>
96
+ </div>
97
+ <h3 class="feature-title">Component Library</h3>
98
+ <p class="feature-description">
99
+ Beautiful, accessible components ready to use. Buttons, modals, forms, charts, and more.
100
+ </p>
101
+ </a>
102
+ <a href="./getting-started/index.html" class="feature-card" style="text-decoration: none; color: inherit;">
103
+ <div class="feature-icon">
104
+ <svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2">
105
+ <path
106
+ d="M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z" />
107
+ </svg>
108
+ </div>
109
+ <h3 class="feature-title">Zero Build Step</h3>
110
+ <p class="feature-description">
111
+ No bundler required. Drop in a script tag and start building. Works everywhere.
112
+ </p>
113
+ </a>
114
+
115
+ </div>
116
+ </div>
117
+ </section>
118
+
119
+
120
+
121
+ <!-- Call to Action -->
122
+ <section class="section">
123
+ <div class="section-content">
124
+ <div class="section-header">
125
+ <h2 class="section-title">Heavy, Complex Frameworks? Lighten Up.</h2>
126
+ <p class="section-subtitle">
127
+ Get started in minutes. No npm install. No webpack or vite build process. Just code.
128
+ </p>
129
+ </div>
130
+ <div style="text-align: center;">
131
+ <a href="/docs/getting-started/" class="btn btn-primary btn-lg">Enlighten Your UI</a>
132
+ </div>
133
+ </div>
134
+ </section>