lightview 2.0.9 → 2.2.1

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 (115) hide show
  1. package/build-bundles.mjs +105 -0
  2. package/build.js +236 -46
  3. package/components/actions/button.js +16 -3
  4. package/components/actions/swap.js +26 -3
  5. package/components/daisyui.js +1 -1
  6. package/components/data-display/alert.js +13 -3
  7. package/components/data-display/avatar.js +25 -1
  8. package/components/data-display/badge.js +11 -3
  9. package/components/data-display/chart.js +22 -5
  10. package/components/data-display/countdown.js +3 -2
  11. package/components/data-display/kbd.js +9 -3
  12. package/components/data-display/loading.js +11 -3
  13. package/components/data-display/progress.js +11 -3
  14. package/components/data-display/radial-progress.js +12 -3
  15. package/components/data-display/tooltip.js +17 -0
  16. package/components/data-input/checkbox.js +23 -1
  17. package/components/data-input/input.js +24 -1
  18. package/components/data-input/radio.js +37 -2
  19. package/components/data-input/select.js +24 -1
  20. package/components/data-input/toggle.js +21 -1
  21. package/components/layout/divider.js +21 -1
  22. package/components/layout/indicator.js +14 -0
  23. package/components/navigation/breadcrumbs.js +42 -2
  24. package/components/navigation/tabs.js +291 -16
  25. package/docs/api/elements.html +125 -49
  26. package/docs/api/hypermedia.html +29 -2
  27. package/docs/api/index.html +6 -2
  28. package/docs/api/nav.html +18 -4
  29. package/docs/assets/js/examplify.js +1 -1
  30. package/docs/cdom-nav.html +55 -0
  31. package/docs/cdom.html +792 -0
  32. package/docs/components/alert.html +8 -8
  33. package/docs/components/avatar.html +24 -54
  34. package/docs/components/badge.html +69 -14
  35. package/docs/components/breadcrumbs.html +95 -29
  36. package/docs/components/button.html +78 -92
  37. package/docs/components/chart-area.html +3 -3
  38. package/docs/components/chart-bar.html +4 -181
  39. package/docs/components/chart-column.html +4 -189
  40. package/docs/components/chart-line.html +3 -3
  41. package/docs/components/chart-pie.html +112 -166
  42. package/docs/components/chart.html +11 -13
  43. package/docs/components/checkbox.html +48 -28
  44. package/docs/components/collapse.html +6 -6
  45. package/docs/components/component-nav.html +1 -1
  46. package/docs/components/countdown.html +12 -12
  47. package/docs/components/divider.html +65 -21
  48. package/docs/components/dropdown.html +1 -1
  49. package/docs/components/file-input.html +4 -4
  50. package/docs/components/footer.html +11 -11
  51. package/docs/components/indicator.html +85 -31
  52. package/docs/components/input.html +45 -29
  53. package/docs/components/join.html +4 -4
  54. package/docs/components/kbd.html +67 -28
  55. package/docs/components/loading.html +96 -92
  56. package/docs/components/pagination.html +4 -4
  57. package/docs/components/progress.html +50 -7
  58. package/docs/components/radial-progress.html +32 -12
  59. package/docs/components/radio.html +42 -31
  60. package/docs/components/select.html +48 -59
  61. package/docs/components/swap.html +183 -100
  62. package/docs/components/tabs.html +146 -278
  63. package/docs/components/toggle.html +44 -25
  64. package/docs/components/tooltip.html +71 -31
  65. package/docs/getting-started/index.html +8 -6
  66. package/docs/index.html +1 -1
  67. package/docs/syntax-nav.html +10 -0
  68. package/docs/syntax.html +8 -6
  69. package/index.html +2 -2
  70. package/jprx/LICENSE +21 -0
  71. package/jprx/README.md +130 -0
  72. package/jprx/helpers/array.js +75 -0
  73. package/jprx/helpers/compare.js +26 -0
  74. package/jprx/helpers/conditional.js +34 -0
  75. package/jprx/helpers/datetime.js +54 -0
  76. package/jprx/helpers/format.js +20 -0
  77. package/jprx/helpers/logic.js +24 -0
  78. package/jprx/helpers/lookup.js +25 -0
  79. package/jprx/helpers/math.js +34 -0
  80. package/jprx/helpers/network.js +41 -0
  81. package/jprx/helpers/state.js +80 -0
  82. package/jprx/helpers/stats.js +39 -0
  83. package/jprx/helpers/string.js +49 -0
  84. package/jprx/index.js +69 -0
  85. package/jprx/package.json +24 -0
  86. package/jprx/parser.js +1517 -0
  87. package/lightview-all.js +3785 -0
  88. package/lightview-cdom.js +2128 -0
  89. package/lightview-router.js +179 -208
  90. package/lightview-x.js +1435 -1608
  91. package/lightview.js +613 -766
  92. package/lightview.js.bak +1 -0
  93. package/package.json +10 -3
  94. package/src/lightview-all.js +10 -0
  95. package/src/lightview-cdom.js +457 -0
  96. package/src/lightview-router.js +210 -0
  97. package/src/lightview-x.js +1630 -0
  98. package/src/lightview.js +705 -0
  99. package/src/reactivity/signal.js +133 -0
  100. package/src/reactivity/state.js +217 -0
  101. package/{watch.js → start-dev.js} +2 -1
  102. package/tests/cdom/fixtures/helpers.cdomc +62 -0
  103. package/tests/cdom/fixtures/user.cdom +14 -0
  104. package/tests/cdom/fixtures/user.cdomc +12 -0
  105. package/tests/cdom/fixtures/user.odom +18 -0
  106. package/tests/cdom/fixtures/user.vdom +11 -0
  107. package/tests/cdom/helpers.test.js +121 -0
  108. package/tests/cdom/loader.test.js +125 -0
  109. package/tests/cdom/parser.test.js +179 -0
  110. package/tests/cdom/reactivity.test.js +186 -0
  111. package/tests/text-tag.test.js +77 -0
  112. package/vite.config.mjs +52 -0
  113. package/wrangler.toml +0 -3
  114. package/components/data-display/skeleton.js +0 -66
  115. package/docs/components/skeleton.html +0 -447
@@ -217,7 +217,8 @@ button({ href: '/api/items.html#details', target: '#content' }, 'View Details')<
217
217
 
218
218
  <h2 id="template-literals">Template Literals</h2>
219
219
  <p>
220
- External HTML, .vdom and .odom files, can reference named signals or state with template syntax:
220
+ External HTML, <code>.vdom</code> and <code>.odom</code> files, can reference named signals or state with
221
+ template syntax:
221
222
  </p>
222
223
  <pre><code>// main.js - Register named signals and state
223
224
  const count = signal(0, 'count');
@@ -225,7 +226,10 @@ const userName = signal('Guest', 'userName');
225
226
  const userPrefs = state({ theme: 'dark', lang: 'en' }, 'userPrefs');
226
227
 
227
228
  // Load template that uses them
228
- div({ src: '/partials/dashboard.html' })</code></pre>
229
+ div({ src: '/partials/dashboard.html' })
230
+ div({ src: '/partials/dashboard.vdom' })
231
+ div({ src: '/partials/dashboard.odom' })</code></pre>
232
+
229
233
  <pre><code>&lt;!-- /partials/dashboard.html --&gt;
230
234
  &lt;div class="dashboard"&gt;
231
235
  &lt;h1&gt;Welcome, ${signal.get('userName').value}!&lt;/h1&gt;
@@ -233,6 +237,29 @@ div({ src: '/partials/dashboard.html' })</code></pre>
233
237
  &lt;p&gt;Theme: ${state.get('userPrefs').theme}&lt;/p&gt;
234
238
  &lt;/div&gt;</code></pre>
235
239
 
240
+ <pre><code>// /partials/dashboard.vdom (JSON Array)
241
+ [
242
+ {
243
+ "tag": "div",
244
+ "attributes": { "class": "dashboard" },
245
+ "children": [
246
+ { "tag": "h1", "children": ["Welcome, ${signal.get('userName').value}!"] },
247
+ { "tag": "p", "children": ["Theme: ${state.get('userPrefs').theme}"] }
248
+ ]
249
+ }
250
+ ]</code></pre>
251
+
252
+ <pre><code>// /partials/dashboard.odom (Object DOM)
253
+ {
254
+ "div": {
255
+ "class": "dashboard",
256
+ "children": [
257
+ { "h1": { "children": ["Welcome, ${signal.get('userName').value}!"] } },
258
+ { "p": { "children": ["Theme: ${state.get('userPrefs').theme}"] } }
259
+ ]
260
+ }
261
+ }</code></pre>
262
+
236
263
  <h2 id="shadow-dom">Shadow DOM</h2>
237
264
  <p>
238
265
  Load content into shadow DOM for style isolation using <code>location="shadow"</code> or the
@@ -149,10 +149,14 @@ const { state } = LightviewX; // Deep state (lightview-x)</code></pre>
149
149
  Side effects. Do things when state changes.
150
150
  </p>
151
151
  </a>
152
- <a href="/docs/syntax.html" class="feature-card" style="text-decoration: none; color: inherit;">
152
+ <a href="./elements.html" class="feature-card" style="text-decoration: none; color: inherit;">
153
153
  <h3 class="feature-title">Syntax Styles</h3>
154
154
  <p class="feature-description">
155
- Four ways to build UI: tag functions, vDOM, Object DOM, and Custom Elements.
155
+ Five ways to build UI: tag functions, vDOM, Object DOM, Custom Elements, and the experimental cDOM.
156
+ </p>
157
+ <p style="margin-top: 1rem; font-style: italic;">
158
+ An exciting 5th option is coming: the <strong>Computational DOM</strong>, a.k.a. <strong><a
159
+ href="/docs/cdom.html">cDOM</a></strong>.
156
160
  </p>
157
161
  </a>
158
162
  <a href="./enhance" class="feature-card" style="text-decoration: none; color: inherit;">
package/docs/api/nav.html CHANGED
@@ -1,4 +1,22 @@
1
1
  <nav class="docs-nav">
2
+ <div class="docs-nav-section">
3
+ <div class="docs-nav-title">Elements</div>
4
+ <a href="./elements.html" class="docs-nav-link">Comparison</a>
5
+ <a href="./elements.html#tagged-api" class="docs-nav-link">Tagged API</a>
6
+ <a href="./elements.html#vdom" class="docs-nav-link">vDOM</a>
7
+ <a href="./elements.html#object-dom" class="docs-nav-link">Object DOM (oDOM)</a>
8
+ <a href="./elements.html#custom-elements" class="docs-nav-link">Custom Elements</a>
9
+ <div class="docs-nav-item">
10
+ <a href="./elements.html#pseudo-elements" class="docs-nav-link">Pseudo-elements</a>
11
+ <div class="docs-nav-subsection" style="margin-left: 1rem; border-left: 1px solid var(--site-border);">
12
+ <a href="./elements.html#shadowdom" class="docs-nav-link" style="font-size: 0.85em;">shadowDOM</a>
13
+ <a href="./elements.html#text" class="docs-nav-link" style="font-size: 0.85em;">text</a>
14
+ </div>
15
+ </div>
16
+ <a href="./elements.html#attributes-events" class="docs-nav-link">Attributes & Events</a>
17
+ <a href="./elements.html#children" class="docs-nav-link">Children</a>
18
+ <a href="./elements.html#dom-el" class="docs-nav-link">The domEl Property</a>
19
+ </div>
2
20
  <div class="docs-nav-section">
3
21
  <div class="docs-nav-title">Reactivity</div>
4
22
 
@@ -27,9 +45,5 @@
27
45
  Apps</a>
28
46
  </div>
29
47
  </div>
30
- <div class="docs-nav-section">
31
- <div class="docs-nav-title">Elements</div>
32
- <a href="./elements.html" class="docs-nav-link">Creating Elements</a>
33
- </div>
34
48
  </div>
35
49
  </nav>
@@ -2,7 +2,7 @@
2
2
  var examplifyIdCounter = globalThis.examplifyIdCounter || 0;
3
3
  globalThis.examplifyIdCounter = examplifyIdCounter;
4
4
 
5
- function examplify(target, options = {}) {
5
+ globalThis.examplify = function examplify(target, options = {}) {
6
6
  const { scripts, styles, modules, html, at, location = 'beforeBegin', type, height, minHeight = 100, maxHeight = Infinity, allowSameOrigin = false, useOrigin = null, language = 'js', autoRun = false } = options;
7
7
  const originalContent = target.textContent;
8
8
  const autoResize = !height; // Auto-resize if no explicit height is provided
@@ -0,0 +1,55 @@
1
+ <nav class="docs-nav">
2
+ <div class="docs-nav-section">
3
+ <div class="docs-nav-title">cDOM</div>
4
+ <a href="#overview" class="docs-nav-link">Overview</a>
5
+ <a href="#simple-example" class="docs-nav-link">Simple Example</a>
6
+ <a href="#advantages" class="docs-nav-link">Advantages</a>
7
+ </div>
8
+ <div class="docs-nav-section">
9
+ <div class="docs-nav-title">JPRX</div>
10
+ <a href="#JPRX" class="docs-nav-link">Introduction</a>
11
+ <a href="#JPRX-delimiters" class="docs-nav-link">Delimiters</a>
12
+ <a href="#JPRX-anatomy" class="docs-nav-link">Anatomy of a Path</a>
13
+ <a href="#JPRX-placeholders" class="docs-nav-link">Placeholders</a>
14
+ </div>
15
+ <div class="docs-nav-section">
16
+ <div class="docs-nav-title">Concepts</div>
17
+ <a href="#comparison" class="docs-nav-link">Comparison to Excel</a>
18
+ <a href="#integration" class="docs-nav-link">Lightview Integration</a>
19
+ <a href="#directives" class="docs-nav-link">Directives</a>
20
+ </div>
21
+ <div class="docs-nav-section">
22
+ <div class="docs-nav-title">Examples</div>
23
+ <a href="#shopping-cart" class="docs-nav-link">Shopping Cart</a>
24
+ <a href="#interactive-example" class="docs-nav-link">Interactive Counter</a>
25
+ <a href="#operator-syntax" class="docs-nav-link">Operator Syntax</a>
26
+ </div>
27
+ <div class="docs-nav-section">
28
+ <div class="docs-nav-title">Events</div>
29
+ <a href="#events" class="docs-nav-link">Events & Interaction</a>
30
+ <a href="#events-manual" class="docs-nav-link">Manual Implementation</a>
31
+ <a href="#events-llm" class="docs-nav-link">LLM-Generated</a>
32
+ <a href="#events-lifecycle" class="docs-nav-link">Interaction Lifecycle</a>
33
+ </div>
34
+ <div class="docs-nav-section">
35
+ <div class="docs-nav-title">API</div>
36
+ <a href="#js-api" class="docs-nav-link">JavaScript API</a>
37
+ <div class="docs-nav-item">
38
+ <a href="#helpers" class="docs-nav-link">JPRX Helpers</a>
39
+ <div class="docs-nav-subsection" style="margin-left: 1rem; border-left: 1px solid var(--site-border);">
40
+ <a href="#helpers-math" class="docs-nav-link" style="font-size: 0.85em;">Math</a>
41
+ <a href="#helpers-stats" class="docs-nav-link" style="font-size: 0.85em;">Stats</a>
42
+ <a href="#helpers-string" class="docs-nav-link" style="font-size: 0.85em;">String</a>
43
+ <a href="#helpers-array" class="docs-nav-link" style="font-size: 0.85em;">Array</a>
44
+ <a href="#helpers-logic" class="docs-nav-link" style="font-size: 0.85em;">Logic & Comparison</a>
45
+ <a href="#helpers-conditional" class="docs-nav-link" style="font-size: 0.85em;">Conditional
46
+ Aggregates</a>
47
+ <a href="#helpers-formatting" class="docs-nav-link" style="font-size: 0.85em;">Formatting</a>
48
+ <a href="#helpers-datetime" class="docs-nav-link" style="font-size: 0.85em;">DateTime</a>
49
+ <a href="#helpers-lookup" class="docs-nav-link" style="font-size: 0.85em;">Lookup</a>
50
+ <a href="#helpers-mutation" class="docs-nav-link" style="font-size: 0.85em;">State Mutation</a>
51
+ <a href="#helpers-network" class="docs-nav-link" style="font-size: 0.85em;">Network</a>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </nav>