lightview 1.8.2 → 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 (264) 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 +1330 -19
  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 +610 -15
  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 +485 -42
  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 +132 -42
  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 +659 -1200
  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/docs/CNAME +0 -1
  165. package/docs/api.html +0 -674
  166. package/docs/blank.html +0 -10
  167. package/docs/comparedto.html +0 -89
  168. package/docs/components/chart-repl.html +0 -69
  169. package/docs/components/components.js +0 -113
  170. package/docs/components/contents.html +0 -17
  171. package/docs/components/gantt-repl.html +0 -61
  172. package/docs/components/gantt.html +0 -42
  173. package/docs/components/gauge-repl.html +0 -66
  174. package/docs/components/gauge.html +0 -20
  175. package/docs/components/orgchart-repl.html +0 -64
  176. package/docs/components/orgchart.html +0 -41
  177. package/docs/components/repl-as-src.html +0 -17
  178. package/docs/components/repl-repl.html +0 -95
  179. package/docs/components/repl.html +0 -527
  180. package/docs/components/timeline-repl.html +0 -72
  181. package/docs/components.html +0 -14
  182. package/docs/css/highlightjs.min.css +0 -9
  183. package/docs/css/tutorial.css +0 -35
  184. package/docs/examples/anchor.html +0 -11
  185. package/docs/examples/chart.html +0 -34
  186. package/docs/examples/counter.html +0 -26
  187. package/docs/examples/counter.test.mjs +0 -47
  188. package/docs/examples/counter2.html +0 -26
  189. package/docs/examples/directives.html +0 -79
  190. package/docs/examples/foreign.html +0 -50
  191. package/docs/examples/forgeinform.html +0 -98
  192. package/docs/examples/form.html +0 -61
  193. package/docs/examples/gauge.html +0 -18
  194. package/docs/examples/invalid-template-literals.html +0 -44
  195. package/docs/examples/medium/remote.html +0 -60
  196. package/docs/examples/message.html +0 -18
  197. package/docs/examples/nested.html +0 -11
  198. package/docs/examples/object-bound-form.html +0 -34
  199. package/docs/examples/remote-server.js +0 -51
  200. package/docs/examples/remote.html +0 -34
  201. package/docs/examples/remote.json +0 -1
  202. package/docs/examples/scratch.html +0 -69
  203. package/docs/examples/sensors/index.html +0 -44
  204. package/docs/examples/sensors/sensor-server.js +0 -30
  205. package/docs/examples/shared.html +0 -41
  206. package/docs/examples/template.html +0 -33
  207. package/docs/examples/timeline.html +0 -21
  208. package/docs/examples/todo.html +0 -40
  209. package/docs/examples/top.html +0 -10
  210. package/docs/examples/types.html +0 -94
  211. package/docs/examples/xor.html +0 -62
  212. package/docs/examples.html +0 -25
  213. package/docs/javascript/codejar.min.js +0 -8
  214. package/docs/javascript/highlightjs.min.js +0 -1173
  215. package/docs/javascript/isomorphic-git.js +0 -9
  216. package/docs/javascript/json5.min.js +0 -1
  217. package/docs/javascript/lightning-fs.js +0 -1
  218. package/docs/javascript/lightview.js +0 -1285
  219. package/docs/javascript/marked.min.js +0 -6
  220. package/docs/javascript/peerjs.min.js +0 -70
  221. package/docs/javascript/turndown.js +0 -973
  222. package/docs/javascript/types.js +0 -606
  223. package/docs/javascript/utils.js +0 -45
  224. package/docs/lightview.html +0 -63
  225. package/docs/old_index.html +0 -965
  226. package/docs/old_index.md +0 -1132
  227. package/docs/slidein.html +0 -51
  228. package/docs/tutorial/0-getting-started.html +0 -67
  229. package/docs/tutorial/1-intro-to-variables.html +0 -103
  230. package/docs/tutorial/10-template-components.html +0 -80
  231. package/docs/tutorial/11-linked-components.html +0 -76
  232. package/docs/tutorial/12-imported-components.html +0 -67
  233. package/docs/tutorial/13-input-binding.html +0 -94
  234. package/docs/tutorial/14-automatic-variable-creation.html +0 -74
  235. package/docs/tutorial/15-form-binding.html +0 -110
  236. package/docs/tutorial/16-if-directive.html +0 -60
  237. package/docs/tutorial/17-loop-directives.html +0 -83
  238. package/docs/tutorial/18-sanitizing-and-escaping-input.html +0 -79
  239. package/docs/tutorial/2-imported-and-exported-variables.html +0 -80
  240. package/docs/tutorial/3-data-types.html +0 -89
  241. package/docs/tutorial/4-extended-data-types.html +0 -83
  242. package/docs/tutorial/5-extended-functional-types.html +0 -96
  243. package/docs/tutorial/5.1-extended-functional-types.html +0 -79
  244. package/docs/tutorial/5.2-extended-functional-types.html +0 -70
  245. package/docs/tutorial/6-conventional-javascript.html +0 -75
  246. package/docs/tutorial/7-monitoring-with-observers.html +0 -107
  247. package/docs/tutorial/8-event-listeners.html +0 -65
  248. package/docs/tutorial/9-intro-to-components.html +0 -91
  249. package/docs/tutorial/contents.html +0 -32
  250. package/docs/tutorial/my-component.html +0 -29
  251. package/docs/tutorial/remote-value.json +0 -4
  252. package/docs/websiterepl.html +0 -46
  253. package/jest-puppeteer.config.js +0 -5
  254. package/jest.config.json +0 -12
  255. package/lightview.min.js +0 -1
  256. package/lightview_good.js +0 -1267
  257. package/lightview_optimized.js +0 -1274
  258. package/repl_hold.html +0 -320
  259. package/test/basic.html +0 -104
  260. package/test/basic.test.mjs +0 -315
  261. package/test/extended.html +0 -29
  262. package/test/extended.test.mjs +0 -448
  263. package/types.js +0 -607
  264. 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
+ ]
package/docs/index.html CHANGED
@@ -1,44 +1,134 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Lightview</title>
6
- <link rel="stylesheet" href="css/highlightjs.min.css">
7
- <script src="javascript/highlightjs.min.js"></script>
8
- <script>hljs.highlightAll();</script>
9
- </head>
10
- <body style="min-width:100%;height:98vh;overflow:hidden">
11
- <div id="tabs" style="display:flex;flex-direction:row;min-width:100%;border-bottom:1px solid;padding-bottom:5px;">
12
- <span style="flex-grow:0.2;">
13
- <a href="./lightview.html" target="content">Lightview</a>
14
- </span>
15
- <span style="flex-grow:0.4;text-align:center">
16
- <a href="./tutorial/0-getting-started.html" target="content" as="l-tutorial-1">Tutorial</a>
17
- <a href="./comparedto.html" target="content">Compared To</a>
18
- <a href="./api.html" target="content">API</a>
19
- <a href="./components/chart-repl.html" target="content">Components</a>
20
- <a href="./websiterepl.html" target="content">REPL</a>
21
- </span>
22
- <span style="flex-grow:0.2;text-align:right;">
23
- <a class="tabctrl" href="https://github.com/anywhichway/lightview" target="_other">GitHub</a>
24
- <a class="tabctrl" href="https://www.npmjs.com/package/lightview" target="_other">NPM</a>
25
- </span>
26
- </div>
27
- <iframe name="content" style="width:100%;" src="lightview.html"></iframe>
28
- <style id="style">
29
- a {
30
- font-size: x-large;
31
- color: black;
32
- padding-left: 5px;
33
- padding-right: 5px;
34
- }
35
-
36
- a:hover {
37
- color: blue;
38
- }
39
- </style>
1
+ <!-- SEO-friendly SPA Shim -->
2
+ <script src="/lightview-router.js"></script>
40
3
  <script>
41
- document.querySelector("iframe").style.height = (document.body.clientHeight - document.getElementById("tabs").clientHeight)+"px"
4
+ if (window.LightviewRouter) {
5
+ LightviewRouter.base('/index.html');
6
+ }
42
7
  </script>
43
- </body>
44
- </html>
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>