json-to-spec 19.1.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 (217) hide show
  1. package/README.md +118 -0
  2. package/docs/demo.html +426 -0
  3. package/docs/dist/min.js +164 -0
  4. package/docs/dist/v1/min.js +124 -0
  5. package/docs/dist/v17/min.js +355 -0
  6. package/docs/dist/v18/min.js +160 -0
  7. package/docs/dist/v19/min.js +164 -0
  8. package/docs/dist/v2/min.js +129 -0
  9. package/docs/dist/v3/min.js +201 -0
  10. package/docs/index.html +248 -0
  11. package/docs/pages/architecture.html +115 -0
  12. package/docs/pages/how-it-works.html +125 -0
  13. package/docs/pages/what-not.html +100 -0
  14. package/docs/pages/what.html +105 -0
  15. package/docs/pages/why.html +88 -0
  16. package/docs/samples/form.html +265 -0
  17. package/docs/samples/index.html +112 -0
  18. package/docs/samples/table.html +306 -0
  19. package/index.js +2 -0
  20. package/package.json +50 -0
  21. package/samples/dataList/index.html +31 -0
  22. package/samples/dataList/index.js +62 -0
  23. package/samples/dataList/input/data.json +5043 -0
  24. package/samples/dataList/input/structure.json +38 -0
  25. package/samples/dataList copy/index.html +30 -0
  26. package/samples/dataList copy/index.js +61 -0
  27. package/samples/dataList copy/input/data.json +35307 -0
  28. package/samples/dataList copy/input/structure.json +18 -0
  29. package/samples/form/index.html +29 -0
  30. package/samples/form/index.js +64 -0
  31. package/samples/form/input/data.json +9 -0
  32. package/samples/form/input/structure.json +192 -0
  33. package/samples/form-/data.json +42 -0
  34. package/samples/form-/structure.json +110 -0
  35. package/samples/select/index.html +31 -0
  36. package/samples/select/index.js +61 -0
  37. package/samples/select/input/data.json +35287 -0
  38. package/samples/select/input/select.json +18 -0
  39. package/samples/select/input/structure.json +47 -0
  40. package/samples/table/index.html +29 -0
  41. package/samples/table/index.js +61 -0
  42. package/samples/table/input/data.json +35287 -0
  43. package/samples/table/input/structure copy.json +47 -0
  44. package/samples/table/input/structure.json +86 -0
  45. package/samples/table/input/table.json +135 -0
  46. package/samples/table-/data.json +68 -0
  47. package/samples/table-/structure.json +235 -0
  48. package/src/index.js +2 -0
  49. package/src/v10/index.js +96 -0
  50. package/src/v10/instructionEngine/compile/compileTree.js +191 -0
  51. package/src/v10/instructionEngine/compileTree.js +1 -0
  52. package/src/v10/instructionEngine/expandIteration.js +1 -0
  53. package/src/v10/instructionEngine/index.js +29 -0
  54. package/src/v10/instructionEngine/interpolate.js +2 -0
  55. package/src/v10/instructionEngine/iteration/expandIteration.js +95 -0
  56. package/src/v10/instructionEngine/operation/operation.js +237 -0
  57. package/src/v10/instructionEngine/other/other.js +150 -0
  58. package/src/v10/instructionEngine/pipeline/pipeline.js +47 -0
  59. package/src/v10/instructionEngine/replace/replace.js +173 -0
  60. package/src/v10/instructionEngine/resolve/resolvePath.js +18 -0
  61. package/src/v10/instructionEngine/resolve/resolveTokenValue.js +22 -0
  62. package/src/v10/instructionEngine/resolvePath.js +1 -0
  63. package/src/v10/instructionEngine/resolveTokenValue.js +1 -0
  64. package/src/v10/instructionEngine/story/storyInjector.js +50 -0
  65. package/src/v10/instructionEngine/storyInjector.js +1 -0
  66. package/src/v10/instructionEngine/value/interpolate.js +38 -0
  67. package/src/v11/index.js +116 -0
  68. package/src/v11/iterate.js +270 -0
  69. package/src/v11/replace.js +169 -0
  70. package/src/v11/resolvePath.js +29 -0
  71. package/src/v12/index.js +122 -0
  72. package/src/v12/iterate/bindFormValues.js +74 -0
  73. package/src/v12/iterate/expandIteration.js +181 -0
  74. package/src/v12/iterate/index.js +10 -0
  75. package/src/v12/iterate/iterate.js +56 -0
  76. package/src/v12/iterate/iterateNode.js +86 -0
  77. package/src/v12/iterate/resolveCollection.js +37 -0
  78. package/src/v12/iterate.js +270 -0
  79. package/src/v12/replace.js +169 -0
  80. package/src/v12/resolvePath.js +29 -0
  81. package/src/v13/index.js +110 -0
  82. package/src/v13/iterate/bindFormValues.js +74 -0
  83. package/src/v13/iterate/expandIteration.js +188 -0
  84. package/src/v13/iterate/index.js +9 -0
  85. package/src/v13/iterate/iterate.js +32 -0
  86. package/src/v13/iterate/iterateNode.js +86 -0
  87. package/src/v13/iterate/resolveCollection.js +37 -0
  88. package/src/v13/iterate/walk.js +90 -0
  89. package/src/v13/iterate.js +270 -0
  90. package/src/v13/replace.js +169 -0
  91. package/src/v13/resolvePath.js +29 -0
  92. package/src/v14/index.js +112 -0
  93. package/src/v14/iterate/bindFormValues.js +74 -0
  94. package/src/v14/iterate/expandIteration.js +188 -0
  95. package/src/v14/iterate/index.js +9 -0
  96. package/src/v14/iterate/iterate.js +32 -0
  97. package/src/v14/iterate/resolveCollection.js +37 -0
  98. package/src/v14/iterate/walk/walk copy 2.js +114 -0
  99. package/src/v14/iterate/walk/walk copy.js +90 -0
  100. package/src/v14/iterate/walk/walk.js +98 -0
  101. package/src/v14/iterate.js +270 -0
  102. package/src/v14/replace/index.js +16 -0
  103. package/src/v14/replace/walk.js +90 -0
  104. package/src/v14/replace.js +153 -0
  105. package/src/v14/resolvePath.js +29 -0
  106. package/src/v15/index.js +123 -0
  107. package/src/v15/iterate/bindFormValues.js +74 -0
  108. package/src/v15/iterate/expandIteration.js +188 -0
  109. package/src/v15/iterate/index.js +9 -0
  110. package/src/v15/iterate/iterate.js +32 -0
  111. package/src/v15/iterate/resolveCollection.js +37 -0
  112. package/src/v15/iterate/walk/walk copy 2.js +114 -0
  113. package/src/v15/iterate/walk/walk copy.js +90 -0
  114. package/src/v15/iterate/walk/walk.js +195 -0
  115. package/src/v15/iterate.js +270 -0
  116. package/src/v15/replace/index.js +16 -0
  117. package/src/v15/replace/walk.js +90 -0
  118. package/src/v15/replace.js +155 -0
  119. package/src/v15/resolvePath.js +29 -0
  120. package/src/v16/index.js +129 -0
  121. package/src/v16/iterate/bindFormValues.js +74 -0
  122. package/src/v16/iterate/expandIteration.js +188 -0
  123. package/src/v16/iterate/index.js +9 -0
  124. package/src/v16/iterate/iterate.js +32 -0
  125. package/src/v16/iterate/resolveCollection.js +37 -0
  126. package/src/v16/iterate/walk/walk copy 2.js +114 -0
  127. package/src/v16/iterate/walk/walk copy.js +90 -0
  128. package/src/v16/iterate/walk/walk.js +196 -0
  129. package/src/v16/iterate.js +270 -0
  130. package/src/v16/replace/index.js +16 -0
  131. package/src/v16/replace/walk.js +90 -0
  132. package/src/v16/replace.js +155 -0
  133. package/src/v16/resolvePath.js +29 -0
  134. package/src/v17/index.js +119 -0
  135. package/src/v17/iterate/bindFormValues.js +74 -0
  136. package/src/v17/iterate/expandIteration.js +188 -0
  137. package/src/v17/iterate/index.js +9 -0
  138. package/src/v17/iterate/iterate.js +32 -0
  139. package/src/v17/iterate/resolveCollection.js +37 -0
  140. package/src/v17/iterate/walk/iterateDo.js +42 -0
  141. package/src/v17/iterate/walk/replaceWithData.js +60 -0
  142. package/src/v17/iterate/walk/walk.js +94 -0
  143. package/src/v17/iterate.js +270 -0
  144. package/src/v17/replace/index.js +16 -0
  145. package/src/v17/replace/walk.js +90 -0
  146. package/src/v17/replace.js +160 -0
  147. package/src/v17/resolvePath.js +29 -0
  148. package/src/v18/index.js +66 -0
  149. package/src/v18/meta.js +7 -0
  150. package/src/v18/registerGlobal.js +17 -0
  151. package/src/v18/replace.js +18 -0
  152. package/src/v18/resolvePath.js +29 -0
  153. package/src/v18/walk/iterate/v1/index.js +42 -0
  154. package/src/v18/walk/iterate/v2/index.js +32 -0
  155. package/src/v18/walk/iterate/v3/index.js +46 -0
  156. package/src/v18/walk/iterate/v4/createChildren.js +24 -0
  157. package/src/v18/walk/iterate/v4/index.js +25 -0
  158. package/src/v18/walk/replaceWithData/v1/index.js +42 -0
  159. package/src/v18/walk/replaceWithData/v1/replaceCommon.js +21 -0
  160. package/src/v18/walk/replaceWithData/v2/index.js +105 -0
  161. package/src/v18/walk/replaceWithData/v2/replaceCommon.js +21 -0
  162. package/src/v18/walk/replaceWithData/v3/index.js +15 -0
  163. package/src/v18/walk/replaceWithData/v3/replaceAttributes.js +29 -0
  164. package/src/v18/walk/replaceWithData/v3/replaceCommon.js +23 -0
  165. package/src/v18/walk/replaceWithData/v3/replaceNodeValue.js +27 -0
  166. package/src/v18/walk/walk.js +94 -0
  167. package/src/v19/index.js +55 -0
  168. package/src/v19/meta.js +7 -0
  169. package/src/v19/registerGlobal.js +17 -0
  170. package/src/v19/replace.js +18 -0
  171. package/src/v19/resolvePath.js +29 -0
  172. package/src/v19/walk/iterate/v1/index.js +42 -0
  173. package/src/v19/walk/iterate/v2/index.js +32 -0
  174. package/src/v19/walk/iterate/v3/index.js +46 -0
  175. package/src/v19/walk/iterate/v4/createChildren.js +27 -0
  176. package/src/v19/walk/iterate/v4/index.js +25 -0
  177. package/src/v19/walk/replaceWithData/v1/index.js +42 -0
  178. package/src/v19/walk/replaceWithData/v1/replaceCommon.js +21 -0
  179. package/src/v19/walk/replaceWithData/v2/index.js +105 -0
  180. package/src/v19/walk/replaceWithData/v2/replaceCommon.js +21 -0
  181. package/src/v19/walk/replaceWithData/v3/index.js +15 -0
  182. package/src/v19/walk/replaceWithData/v3/replaceAttributes.js +29 -0
  183. package/src/v19/walk/replaceWithData/v3/replaceCommon.js +23 -0
  184. package/src/v19/walk/replaceWithData/v3/replaceNodeValue.js +27 -0
  185. package/src/v19/walk/walk.js +97 -0
  186. package/src/v8/index.js +69 -0
  187. package/src/v8/instructionEngine/compile/compileTree.js +191 -0
  188. package/src/v8/instructionEngine/compileTree.js +1 -0
  189. package/src/v8/instructionEngine/expandIteration.js +1 -0
  190. package/src/v8/instructionEngine/index.js +16 -0
  191. package/src/v8/instructionEngine/interpolate.js +2 -0
  192. package/src/v8/instructionEngine/iteration/expandIteration.js +95 -0
  193. package/src/v8/instructionEngine/resolve/resolvePath.js +18 -0
  194. package/src/v8/instructionEngine/resolve/resolveTokenValue.js +22 -0
  195. package/src/v8/instructionEngine/resolvePath.js +1 -0
  196. package/src/v8/instructionEngine/resolveTokenValue.js +1 -0
  197. package/src/v8/instructionEngine/story/storyInjector.js +50 -0
  198. package/src/v8/instructionEngine/storyInjector.js +1 -0
  199. package/src/v8/instructionEngine/value/interpolate.js +38 -0
  200. package/src/v9/index.js +96 -0
  201. package/src/v9/instructionEngine/compile/compileTree.js +191 -0
  202. package/src/v9/instructionEngine/compileTree.js +1 -0
  203. package/src/v9/instructionEngine/expandIteration.js +1 -0
  204. package/src/v9/instructionEngine/index.js +29 -0
  205. package/src/v9/instructionEngine/interpolate.js +2 -0
  206. package/src/v9/instructionEngine/iteration/expandIteration.js +95 -0
  207. package/src/v9/instructionEngine/operation/operation.js +237 -0
  208. package/src/v9/instructionEngine/other/other.js +150 -0
  209. package/src/v9/instructionEngine/pipeline/pipeline.js +47 -0
  210. package/src/v9/instructionEngine/replace/replace.js +173 -0
  211. package/src/v9/instructionEngine/resolve/resolvePath.js +18 -0
  212. package/src/v9/instructionEngine/resolve/resolveTokenValue.js +22 -0
  213. package/src/v9/instructionEngine/resolvePath.js +1 -0
  214. package/src/v9/instructionEngine/resolveTokenValue.js +1 -0
  215. package/src/v9/instructionEngine/story/storyInjector.js +50 -0
  216. package/src/v9/instructionEngine/storyInjector.js +1 -0
  217. package/src/v9/instructionEngine/value/interpolate.js +38 -0
@@ -0,0 +1,248 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>json-to-spec | Pure JSON Specification Compiler</title>
8
+ <meta name="description"
9
+ content="json-to-spec: The pure JSON specification compiler that transforms structure.json (HOW) + data.json (WHAT) into valid Spec JSON ready for json-to-dom.">
10
+
11
+ <!-- Tailwind CSS CDN -->
12
+ <script src="https://cdn.tailwindcss.com"></script>
13
+
14
+ <!-- Fonts -->
15
+ <link rel="preconnect" href="https://fonts.googleapis.com">
16
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
17
+ <link
18
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap"
19
+ rel="stylesheet">
20
+
21
+ <style>
22
+ body { font-family: 'Inter', sans-serif; }
23
+ code, pre { font-family: 'JetBrains Mono', monospace; }
24
+ </style>
25
+ </head>
26
+
27
+ <body class="bg-slate-50 text-slate-800 min-h-screen flex flex-col antialiased">
28
+
29
+ <!-- Top Navbar -->
30
+ <header class="sticky top-0 z-50 bg-white/95 backdrop-blur border-b border-slate-200">
31
+ <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between">
32
+ <div class="flex items-center space-x-3">
33
+ <a href="index.html" class="flex items-center space-x-2 font-black text-lg text-slate-900 hover:text-indigo-600 transition">
34
+ <span class="w-8 h-8 rounded-lg bg-indigo-600 text-white flex items-center justify-center font-black text-sm shadow-sm">JS</span>
35
+ <span>json-to-spec</span>
36
+ </a>
37
+ <span class="text-xs bg-indigo-50 text-indigo-700 font-semibold px-2.5 py-0.5 rounded-full border border-indigo-200">v1.0.0</span>
38
+ </div>
39
+ <nav class="flex items-center space-x-4 text-sm font-medium">
40
+ <a href="pages/what.html" class="text-slate-600 hover:text-indigo-600 transition">What</a>
41
+ <a href="pages/why.html" class="text-slate-600 hover:text-indigo-600 transition">Why</a>
42
+ <a href="pages/what-not.html" class="text-slate-600 hover:text-indigo-600 transition">What Not</a>
43
+ <a href="pages/architecture.html" class="text-slate-600 hover:text-indigo-600 transition">Architecture</a>
44
+ <a href="pages/how-it-works.html" class="text-slate-600 hover:text-indigo-600 transition">How It Works</a>
45
+ <a href="samples/index.html" class="text-slate-600 hover:text-indigo-600 transition">Samples</a>
46
+ <a href="demo.html" class="px-3 py-1.5 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 shadow-sm transition">Playground</a>
47
+ </nav>
48
+ </div>
49
+ </header>
50
+
51
+ <!-- Main Container -->
52
+ <main class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-10 flex-1 w-full space-y-12">
53
+
54
+ <!-- Hero Section -->
55
+ <div class="text-center max-w-3xl mx-auto space-y-4">
56
+ <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-indigo-50 border border-indigo-200 text-indigo-700 text-xs font-mono font-semibold">
57
+ <span>structure.json + data.json &rarr; spec.json</span>
58
+ </div>
59
+ <h1 class="text-4xl sm:text-5xl font-black text-slate-900 tracking-tight leading-tight">
60
+ Pure JSON Specification Compiler for <span class="text-indigo-600">Declarative UI</span>
61
+ </h1>
62
+ <p class="text-base text-slate-600 leading-relaxed">
63
+ Eliminate template synchronization friction. The 2-file compiler separates <strong>HOW</strong> to display from <strong>WHAT</strong> to display, outputting standard specification JSON ready for <code class="text-indigo-600 font-semibold">json-to-dom</code>.
64
+ </p>
65
+ <div class="flex flex-wrap items-center justify-center gap-3 pt-2">
66
+ <a href="demo.html" class="px-5 py-2.5 bg-indigo-600 hover:bg-indigo-700 text-white font-bold text-sm rounded-xl shadow-md transition flex items-center gap-2">
67
+ <span>⚡</span> Launch Live Playground
68
+ </a>
69
+ <a href="samples/index.html" class="px-5 py-2.5 bg-white hover:bg-slate-100 border border-slate-300 text-slate-700 font-bold text-sm rounded-xl transition flex items-center gap-2">
70
+ <span>📦</span> Explore CDN Samples
71
+ </a>
72
+ </div>
73
+ </div>
74
+
75
+ <!-- Documentation Topic Gateways -->
76
+ <div class="space-y-4">
77
+ <h2 class="text-xl font-black text-slate-900 tracking-tight">Documentation & Guides</h2>
78
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-5">
79
+ <!-- Gateway 1: What -->
80
+ <a href="pages/what.html" class="group p-5 bg-white rounded-2xl border border-slate-200 hover:border-indigo-500 hover:shadow-md transition flex flex-col justify-between">
81
+ <div>
82
+ <div class="flex items-center justify-between mb-3">
83
+ <span class="w-8 h-8 rounded-lg bg-indigo-50 text-indigo-600 flex items-center justify-center font-bold text-sm">💡</span>
84
+ <span class="text-[10px] font-mono px-2 py-0.5 rounded-full bg-indigo-50 text-indigo-700 border border-indigo-100">Core</span>
85
+ </div>
86
+ <h3 class="text-base font-bold text-slate-900 group-hover:text-indigo-600 transition mb-1">What is json-to-spec?</h3>
87
+ <p class="text-xs text-slate-600 leading-relaxed">
88
+ The 2-file specification compiler contract, core properties, and why data-in / data-out transforms matter.
89
+ </p>
90
+ </div>
91
+ <div class="mt-4 pt-3 border-t border-slate-100 text-xs font-semibold text-indigo-600 flex items-center gap-1">
92
+ <span>Read Guide</span> <span>&rarr;</span>
93
+ </div>
94
+ </a>
95
+
96
+ <!-- Gateway 2: Why -->
97
+ <a href="pages/why.html" class="group p-5 bg-white rounded-2xl border border-slate-200 hover:border-indigo-500 hover:shadow-md transition flex flex-col justify-between">
98
+ <div>
99
+ <div class="flex items-center justify-between mb-3">
100
+ <span class="w-8 h-8 rounded-lg bg-indigo-50 text-indigo-600 flex items-center justify-center font-bold text-sm">🎯</span>
101
+ <span class="text-[10px] font-mono px-2 py-0.5 rounded-full bg-indigo-50 text-indigo-700 border border-indigo-100">Rationale</span>
102
+ </div>
103
+ <h3 class="text-base font-bold text-slate-900 group-hover:text-indigo-600 transition mb-1">Why this repo exists</h3>
104
+ <p class="text-xs text-slate-600 leading-relaxed">
105
+ The flaws of string templates, heavy component frameworks, and multi-file orchestrators solved by the 2-file model.
106
+ </p>
107
+ </div>
108
+ <div class="mt-4 pt-3 border-t border-slate-100 text-xs font-semibold text-indigo-600 flex items-center gap-1">
109
+ <span>Read Rationale</span> <span>&rarr;</span>
110
+ </div>
111
+ </a>
112
+
113
+ <!-- Gateway 3: What Not -->
114
+ <a href="pages/what-not.html" class="group p-5 bg-white rounded-2xl border border-slate-200 hover:border-rose-500 hover:shadow-md transition flex flex-col justify-between">
115
+ <div>
116
+ <div class="flex items-center justify-between mb-3">
117
+ <span class="w-8 h-8 rounded-lg bg-rose-50 text-rose-600 flex items-center justify-center font-bold text-sm">🚫</span>
118
+ <span class="text-[10px] font-mono px-2 py-0.5 rounded-full bg-rose-50 text-rose-700 border border-rose-100">Boundaries</span>
119
+ </div>
120
+ <h3 class="text-base font-bold text-slate-900 group-hover:text-rose-600 transition mb-1">What json-to-spec is NOT</h3>
121
+ <p class="text-xs text-slate-600 leading-relaxed">
122
+ Clear non-goals: not a DOM renderer, not a virtual DOM, not a CSS framework, and not an imperative eval engine.
123
+ </p>
124
+ </div>
125
+ <div class="mt-4 pt-3 border-t border-slate-100 text-xs font-semibold text-rose-600 flex items-center gap-1">
126
+ <span>Read Boundaries</span> <span>&rarr;</span>
127
+ </div>
128
+ </a>
129
+
130
+ <!-- Gateway 4: Architecture -->
131
+ <a href="pages/architecture.html" class="group p-5 bg-white rounded-2xl border border-slate-200 hover:border-emerald-500 hover:shadow-md transition flex flex-col justify-between">
132
+ <div>
133
+ <div class="flex items-center justify-between mb-3">
134
+ <span class="w-8 h-8 rounded-lg bg-emerald-50 text-emerald-600 flex items-center justify-center font-bold text-sm">⚙️</span>
135
+ <span class="text-[10px] font-mono px-2 py-0.5 rounded-full bg-emerald-50 text-emerald-700 border border-emerald-100">Internals</span>
136
+ </div>
137
+ <h3 class="text-base font-bold text-slate-900 group-hover:text-emerald-600 transition mb-1">Runtime Architecture</h3>
138
+ <p class="text-xs text-slate-600 leading-relaxed">
139
+ Compiler pipeline breakdown: traversal, operation detection, filter evaluation, and safe token interpolation.
140
+ </p>
141
+ </div>
142
+ <div class="mt-4 pt-3 border-t border-slate-100 text-xs font-semibold text-emerald-600 flex items-center gap-1">
143
+ <span>Read Architecture</span> <span>&rarr;</span>
144
+ </div>
145
+ </a>
146
+
147
+ <!-- Gateway 5: How It Works -->
148
+ <a href="pages/how-it-works.html" class="group p-5 bg-white rounded-2xl border border-slate-200 hover:border-indigo-500 hover:shadow-md transition flex flex-col justify-between">
149
+ <div>
150
+ <div class="flex items-center justify-between mb-3">
151
+ <span class="w-8 h-8 rounded-lg bg-indigo-50 text-indigo-600 flex items-center justify-center font-bold text-sm">📘</span>
152
+ <span class="text-[10px] font-mono px-2 py-0.5 rounded-full bg-indigo-50 text-indigo-700 border border-indigo-100">Tutorial</span>
153
+ </div>
154
+ <h3 class="text-base font-bold text-slate-900 group-hover:text-indigo-600 transition mb-1">How It Works</h3>
155
+ <p class="text-xs text-slate-600 leading-relaxed">
156
+ Step-by-step tutorial: create structure.json, provide data.json, compile, and render live DOM with json-to-dom.
157
+ </p>
158
+ </div>
159
+ <div class="mt-4 pt-3 border-t border-slate-100 text-xs font-semibold text-indigo-600 flex items-center gap-1">
160
+ <span>Read Tutorial</span> <span>&rarr;</span>
161
+ </div>
162
+ </a>
163
+
164
+ <!-- Gateway 6: Samples Hub -->
165
+ <a href="samples/index.html" class="group p-5 bg-white rounded-2xl border border-slate-200 hover:border-amber-500 hover:shadow-md transition flex flex-col justify-between">
166
+ <div>
167
+ <div class="flex items-center justify-between mb-3">
168
+ <span class="w-8 h-8 rounded-lg bg-amber-50 text-amber-600 flex items-center justify-center font-bold text-sm">🧪</span>
169
+ <span class="text-[10px] font-mono px-2 py-0.5 rounded-full bg-amber-50 text-amber-700 border border-amber-100">Samples</span>
170
+ </div>
171
+ <h3 class="text-base font-bold text-slate-900 group-hover:text-amber-600 transition mb-1">Samples & Demos</h3>
172
+ <p class="text-xs text-slate-600 leading-relaxed">
173
+ Pre-built live workbenches for Dynamic Forms and Nested Tables loading compiler bundles directly from CDN.
174
+ </p>
175
+ </div>
176
+ <div class="mt-4 pt-3 border-t border-slate-100 text-xs font-semibold text-amber-600 flex items-center gap-1">
177
+ <span>Open Samples</span> <span>&rarr;</span>
178
+ </div>
179
+ </a>
180
+ </div>
181
+ </div>
182
+
183
+ <!-- 30-Second Quick Start -->
184
+ <div class="bg-slate-900 text-slate-100 rounded-2xl p-6 sm:p-8 shadow-sm border border-slate-800">
185
+ <div class="flex items-center justify-between mb-4">
186
+ <div>
187
+ <span class="text-xs uppercase font-bold text-slate-400 tracking-wider">30-Second Integration</span>
188
+ <h3 class="text-base font-bold text-white">How It Works in Your Application</h3>
189
+ </div>
190
+ <span class="text-xs text-indigo-400 font-mono">Pure CDN &bull; ES Modules</span>
191
+ </div>
192
+ <div class="bg-slate-950 p-4 rounded-xl font-mono text-xs overflow-x-auto text-slate-200 leading-relaxed border border-slate-800">
193
+ <span class="text-slate-500">// 1. Import compiler & DOM engine directly via GitHub Pages CDN (or npm package)</span>
194
+ <span class="text-indigo-400">import</span> { compile } <span class="text-indigo-400">from</span> <span class="text-emerald-300">"https://keshavsoft.github.io/json-to-spec/dist/v1/min.js"</span>;
195
+ <span class="text-indigo-400">import</span> { buildSpecElement } <span class="text-indigo-400">from</span> <span class="text-emerald-300">"https://keshavsoft.github.io/json-to-dom/dist/v16/min.js"</span>;
196
+
197
+ <span class="text-slate-500">// 2. Compile structure.json (HOW) + data.json (WHAT) &rarr; spec</span>
198
+ <span class="text-indigo-400">const</span> spec = compile({
199
+ inStructure: structureBlueprint,
200
+ inData: businessDataPayload
201
+ });
202
+
203
+ <span class="text-slate-500">// 3. Render directly into native browser DOM elements</span>
204
+ <span class="text-indigo-400">const</span> domNode = buildSpecElement({ inSpec: spec });
205
+ document.getElementById(<span class="text-amber-300">"app"</span>).appendChild(domNode);
206
+ </div>
207
+ </div>
208
+
209
+ <!-- CDN Distribution Endpoints -->
210
+ <div class="bg-white rounded-2xl p-6 border border-slate-200 space-y-4">
211
+ <h3 class="text-sm font-bold text-slate-800 uppercase tracking-wide">Official CDN Endpoints</h3>
212
+ <div class="grid grid-cols-1 sm:grid-cols-2 gap-4 text-xs font-mono">
213
+ <div class="p-3 rounded-xl bg-slate-50 border border-slate-200">
214
+ <span class="text-slate-400 block text-[10px] uppercase font-bold">Latest Stable CDN</span>
215
+ <span class="text-indigo-600 break-all font-semibold">https://keshavsoft.github.io/json-to-spec/dist/min.js</span>
216
+ </div>
217
+ <div class="p-3 rounded-xl bg-slate-50 border border-slate-200">
218
+ <span class="text-slate-400 block text-[10px] uppercase font-bold">Version 1 CDN</span>
219
+ <span class="text-indigo-600 break-all font-semibold">https://keshavsoft.github.io/json-to-spec/dist/v1/min.js</span>
220
+ </div>
221
+ </div>
222
+ </div>
223
+
224
+ </main>
225
+
226
+ <!-- Clean Footer -->
227
+ <footer class="bg-white border-t border-slate-200 py-6 mt-auto">
228
+ <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 flex flex-col sm:flex-row items-center justify-between gap-4 text-xs text-slate-500">
229
+ <div class="flex items-center space-x-2">
230
+ <span class="font-bold text-slate-700">json-to-spec</span>
231
+ <span>&bull;</span>
232
+ <span>KeshavSoft Pure Declarative UI Architecture</span>
233
+ </div>
234
+ <div class="flex items-center space-x-4 flex-wrap">
235
+ <a href="pages/what.html" class="hover:text-indigo-600 transition">What</a>
236
+ <a href="pages/why.html" class="hover:text-indigo-600 transition">Why</a>
237
+ <a href="pages/what-not.html" class="hover:text-indigo-600 transition">What Not</a>
238
+ <a href="pages/architecture.html" class="hover:text-indigo-600 transition">Architecture</a>
239
+ <a href="pages/how-it-works.html" class="hover:text-indigo-600 transition">How It Works</a>
240
+ <a href="demo.html" class="hover:text-indigo-600 transition">Playground</a>
241
+ <a href="samples/index.html" class="hover:text-indigo-600 transition">Samples</a>
242
+ </div>
243
+ </div>
244
+ </footer>
245
+
246
+ </body>
247
+
248
+ </html>
@@ -0,0 +1,115 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Architecture & Pipeline | json-to-spec</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
11
+ <style>
12
+ body { font-family: 'Inter', sans-serif; }
13
+ code, pre { font-family: 'JetBrains Mono', monospace; }
14
+ </style>
15
+ </head>
16
+ <body class="bg-slate-50 text-slate-800 min-h-screen flex flex-col antialiased">
17
+
18
+ <!-- Top Navbar -->
19
+ <header class="sticky top-0 z-50 bg-white/95 backdrop-blur border-b border-slate-200">
20
+ <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between">
21
+ <div class="flex items-center space-x-3">
22
+ <a href="../index.html" class="flex items-center space-x-2 font-black text-lg text-slate-900 hover:text-indigo-600 transition">
23
+ <span class="w-8 h-8 rounded-lg bg-indigo-600 text-white flex items-center justify-center font-black text-sm">JS</span>
24
+ <span>json-to-spec</span>
25
+ </a>
26
+ <span class="text-xs bg-indigo-50 text-indigo-700 font-semibold px-2 py-0.5 rounded-full border border-indigo-200">Architecture</span>
27
+ </div>
28
+ <nav class="flex items-center space-x-4 text-sm font-medium">
29
+ <a href="../index.html" class="text-slate-600 hover:text-slate-900 transition">Home</a>
30
+ <a href="./what.html" class="text-slate-600 hover:text-slate-900 transition">What</a>
31
+ <a href="./why.html" class="text-slate-600 hover:text-slate-900 transition">Why</a>
32
+ <a href="./what-not.html" class="text-slate-600 hover:text-slate-900 transition">What Not</a>
33
+ <a href="./architecture.html" class="text-indigo-600 font-bold">Architecture</a>
34
+ <a href="./how-it-works.html" class="text-slate-600 hover:text-slate-900 transition">How It Works</a>
35
+ <a href="../demo.html" class="px-3 py-1.5 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 shadow-sm transition">Playground</a>
36
+ </nav>
37
+ </div>
38
+ </header>
39
+
40
+ <main class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12 flex-1 w-full space-y-8">
41
+
42
+ <div class="space-y-3">
43
+ <span class="text-xs uppercase font-bold text-indigo-600 tracking-wider font-mono">Engine Internals</span>
44
+ <h1 class="text-4xl font-black text-slate-900 tracking-tight">Compiler Architecture</h1>
45
+ <p class="text-base text-slate-600 leading-relaxed">
46
+ The compilation flow from decoupled JSON inputs to valid specification JSON follows a multi-stage recursive tree traversal pipeline.
47
+ </p>
48
+ </div>
49
+
50
+ <div class="bg-slate-900 text-slate-100 rounded-2xl p-6 font-mono text-xs overflow-x-auto leading-relaxed border border-slate-800">
51
+ ┌─────────────────────────────────────────────────────────────┐
52
+ │ 1. Normalization (compile) │
53
+ │ - Accepts inStructure & inData via in-local convention │
54
+ └──────────────────────────────┬──────────────────────────────┘
55
+
56
+
57
+ ┌─────────────────────────────────────────────────────────────┐
58
+ │ 2. Recursive Traversal (compileTree.js) │
59
+ │ - Array Nodes: Compile children & flatten │
60
+ │ - Object Nodes: Check operation vs standard element │
61
+ └──────────────────────────────┬──────────────────────────────┘
62
+
63
+ ┌──────────────────────┴──────────────────────┐
64
+ ▼ ▼
65
+ ┌──────────────────────────────┐ ┌──────────────────────────────┐
66
+ │ [operation: "iterate"] │ │ [Standard Element Node] │
67
+ │ - Resolve source collection │ │ - Clone & tag transformation │
68
+ │ - Filter isVisible: false │ │ - Interpolate textContent │
69
+ │ - Stamp template per item │ │ - Interpolate attributes │
70
+ │ - Bind $index, $number, row │ │ - Bind data values │
71
+ └──────────────┬───────────────┘ └──────────────┬───────────────┘
72
+ │ │
73
+ └───────────────────┬───────────────────┘
74
+
75
+
76
+ ┌─────────────────────────────────────────────────────────────┐
77
+ │ 3. Spec JSON Output (ready for json-to-dom) │
78
+ └─────────────────────────────────────────────────────────────┘
79
+ </div>
80
+
81
+ <div class="space-y-4">
82
+ <h2 class="text-xl font-bold text-slate-900">Pipeline Stages</h2>
83
+
84
+ <div class="bg-white p-5 rounded-xl border border-slate-200 shadow-sm space-y-2">
85
+ <span class="text-xs font-bold uppercase text-purple-600 font-mono">Stage 1</span>
86
+ <h3 class="font-bold text-slate-800 text-sm">Universal Tree Traversal</h3>
87
+ <p class="text-xs text-slate-600 leading-relaxed">
88
+ Traverses any arbitrary depth. Arrays are recursively mapped and automatically flattened, allowing node operations to expand dynamically into sibling nodes.
89
+ </p>
90
+ </div>
91
+
92
+ <div class="bg-white p-5 rounded-xl border border-slate-200 shadow-sm space-y-2">
93
+ <span class="text-xs font-bold uppercase text-emerald-600 font-mono">Stage 2</span>
94
+ <h3 class="font-bold text-slate-800 text-sm">Operation Detection & Filter Execution</h3>
95
+ <p class="text-xs text-slate-600 leading-relaxed">
96
+ Detects <code>operation: "iterate"</code>. Resolves collections from root data or local context, drops items marked <code>isVisible: false</code>, and injects <code>$index</code>, <code>$number</code>, and parent <code>row</code> references.
97
+ </p>
98
+ </div>
99
+
100
+ <div class="bg-white p-5 rounded-xl border border-slate-200 shadow-sm space-y-2">
101
+ <span class="text-xs font-bold uppercase text-indigo-600 font-mono">Stage 3</span>
102
+ <h3 class="font-bold text-slate-800 text-sm">Token Interpolation & Control Adaptation</h3>
103
+ <p class="text-xs text-slate-600 leading-relaxed">
104
+ Interpolates <code>${field}</code>, <code>${value}</code>, <code>${title}</code>, and deep dot-paths. Converts <code>input</code> elements to <code>textarea</code> when field metadata requires multiline input.
105
+ </p>
106
+ </div>
107
+ </div>
108
+
109
+ </main>
110
+
111
+ <footer class="mt-auto bg-white border-t border-slate-200 py-6 text-center text-xs text-slate-500">
112
+ json-to-spec &bull; KeshavSoft Declarative UI Architecture &bull; MIT License
113
+ </footer>
114
+ </body>
115
+ </html>
@@ -0,0 +1,125 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>How It Works | json-to-spec Guide</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
11
+ <style>
12
+ body { font-family: 'Inter', sans-serif; }
13
+ code, pre { font-family: 'JetBrains Mono', monospace; }
14
+ </style>
15
+ </head>
16
+ <body class="bg-slate-50 text-slate-800 min-h-screen flex flex-col antialiased">
17
+
18
+ <!-- Top Navbar -->
19
+ <header class="sticky top-0 z-50 bg-white/95 backdrop-blur border-b border-slate-200">
20
+ <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between">
21
+ <div class="flex items-center space-x-3">
22
+ <a href="../index.html" class="flex items-center space-x-2 font-black text-lg text-slate-900 hover:text-indigo-600 transition">
23
+ <span class="w-8 h-8 rounded-lg bg-indigo-600 text-white flex items-center justify-center font-black text-sm">JS</span>
24
+ <span>json-to-spec</span>
25
+ </a>
26
+ <span class="text-xs bg-indigo-50 text-indigo-700 font-semibold px-2 py-0.5 rounded-full border border-indigo-200">Guide</span>
27
+ </div>
28
+ <nav class="flex items-center space-x-4 text-sm font-medium">
29
+ <a href="../index.html" class="text-slate-600 hover:text-slate-900 transition">Home</a>
30
+ <a href="./what.html" class="text-slate-600 hover:text-slate-900 transition">What</a>
31
+ <a href="./why.html" class="text-slate-600 hover:text-slate-900 transition">Why</a>
32
+ <a href="./what-not.html" class="text-slate-600 hover:text-slate-900 transition">What Not</a>
33
+ <a href="./architecture.html" class="text-slate-600 hover:text-slate-900 transition">Architecture</a>
34
+ <a href="./how-it-works.html" class="text-indigo-600 font-bold">How It Works</a>
35
+ <a href="../demo.html" class="px-3 py-1.5 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 shadow-sm transition">Playground</a>
36
+ </nav>
37
+ </div>
38
+ </header>
39
+
40
+ <main class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12 flex-1 w-full space-y-8">
41
+
42
+ <div class="space-y-3">
43
+ <span class="text-xs uppercase font-bold text-indigo-600 tracking-wider font-mono">Step-by-Step Guide</span>
44
+ <h1 class="text-4xl font-black text-slate-900 tracking-tight">How to Build UIs with json-to-spec</h1>
45
+ <p class="text-base text-slate-600 leading-relaxed">
46
+ Follow this quick 4-step tutorial to declare a blueprint, supply data, compile the spec, and render it into the live DOM.
47
+ </p>
48
+ </div>
49
+
50
+ <!-- Step 1 -->
51
+ <div class="bg-white p-6 sm:p-8 rounded-2xl border border-slate-200 shadow-sm space-y-4">
52
+ <div class="flex items-center gap-3">
53
+ <span class="w-8 h-8 rounded-lg bg-indigo-600 text-white flex items-center justify-center font-bold text-sm">1</span>
54
+ <h2 class="text-lg font-bold text-slate-900">Define the UI Blueprint (structure.json)</h2>
55
+ </div>
56
+ <p class="text-xs text-slate-600 leading-relaxed">
57
+ Create a declarative JSON tree. When a dynamic repeat point is needed, use <code>"operation": "iterate"</code>:
58
+ </p>
59
+ <pre class="bg-slate-900 text-purple-300 p-4 rounded-xl text-xs overflow-x-auto leading-relaxed border border-slate-800">
60
+ {
61
+ "tagName": "div",
62
+ "attributes": { "class": "card p-4 shadow-sm" },
63
+ "children": [
64
+ { "tagName": "h3", "textContent": "${title}", "attributes": { "class": "h5 mb-3" } },
65
+ {
66
+ "operation": "iterate",
67
+ "source": "users",
68
+ "template": {
69
+ "tagName": "div",
70
+ "attributes": { "class": "d-flex justify-content-between py-2 border-bottom" },
71
+ "children": [
72
+ { "tagName": "span", "textContent": "${$number}. ${name}" },
73
+ { "tagName": "span", "textContent": "${role}", "attributes": { "class": "badge bg-primary" } }
74
+ ]
75
+ }
76
+ }
77
+ ]
78
+ }</pre>
79
+ </div>
80
+
81
+ <!-- Step 2 -->
82
+ <div class="bg-white p-6 sm:p-8 rounded-2xl border border-slate-200 shadow-sm space-y-4">
83
+ <div class="flex items-center gap-3">
84
+ <span class="w-8 h-8 rounded-lg bg-emerald-600 text-white flex items-center justify-center font-bold text-sm">2</span>
85
+ <h2 class="text-lg font-bold text-slate-900">Provide the Data Payload (data.json)</h2>
86
+ </div>
87
+ <pre class="bg-slate-900 text-emerald-300 p-4 rounded-xl text-xs overflow-x-auto leading-relaxed border border-slate-800">
88
+ {
89
+ "title": "Engineering Team Directory",
90
+ "users": [
91
+ { "name": "Karthik", "role": "Lead Architect" },
92
+ { "name": "Praveen", "role": "Frontend Engineer" },
93
+ { "name": "Suresh", "role": "DevOps Engineer" }
94
+ ]
95
+ }</pre>
96
+ </div>
97
+
98
+ <!-- Step 3 & 4 -->
99
+ <div class="bg-white p-6 sm:p-8 rounded-2xl border border-slate-200 shadow-sm space-y-4">
100
+ <div class="flex items-center gap-3">
101
+ <span class="w-8 h-8 rounded-lg bg-indigo-600 text-white flex items-center justify-center font-bold text-sm">3</span>
102
+ <h2 class="text-lg font-bold text-slate-900">Compile & Render to DOM</h2>
103
+ </div>
104
+ <pre class="bg-slate-900 text-indigo-300 p-4 rounded-xl text-xs overflow-x-auto leading-relaxed border border-slate-800">
105
+ import { compile } from "https://keshavsoft.github.io/json-to-spec/dist/v1/min.js";
106
+ import { buildSpecElement } from "https://keshavsoft.github.io/json-to-dom/dist/v16/min.js";
107
+
108
+ // 1. Compile structure + data into spec
109
+ const spec = compile({
110
+ inStructure: structureBlueprint,
111
+ inData: dataPayload
112
+ });
113
+
114
+ // 2. Render directly via json-to-dom
115
+ const domNode = buildSpecElement({ inSpec: spec });
116
+ document.getElementById("app").appendChild(domNode);</pre>
117
+ </div>
118
+
119
+ </main>
120
+
121
+ <footer class="mt-auto bg-white border-t border-slate-200 py-6 text-center text-xs text-slate-500">
122
+ json-to-spec &bull; KeshavSoft Declarative UI Architecture &bull; MIT License
123
+ </footer>
124
+ </body>
125
+ </html>
@@ -0,0 +1,100 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>What json-to-spec is NOT | Non-Goals & Boundaries</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
11
+ <style>
12
+ body { font-family: 'Inter', sans-serif; }
13
+ code, pre { font-family: 'JetBrains Mono', monospace; }
14
+ </style>
15
+ </head>
16
+ <body class="bg-slate-50 text-slate-800 min-h-screen flex flex-col antialiased">
17
+
18
+ <!-- Top Navbar -->
19
+ <header class="sticky top-0 z-50 bg-white/95 backdrop-blur border-b border-slate-200">
20
+ <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between">
21
+ <div class="flex items-center space-x-3">
22
+ <a href="../index.html" class="flex items-center space-x-2 font-black text-lg text-slate-900 hover:text-indigo-600 transition">
23
+ <span class="w-8 h-8 rounded-lg bg-indigo-600 text-white flex items-center justify-center font-black text-sm">JS</span>
24
+ <span>json-to-spec</span>
25
+ </a>
26
+ <span class="text-xs bg-rose-50 text-rose-700 font-semibold px-2 py-0.5 rounded-full border border-rose-200">Boundaries</span>
27
+ </div>
28
+ <nav class="flex items-center space-x-4 text-sm font-medium">
29
+ <a href="../index.html" class="text-slate-600 hover:text-slate-900 transition">Home</a>
30
+ <a href="./what.html" class="text-slate-600 hover:text-slate-900 transition">What</a>
31
+ <a href="./why.html" class="text-slate-600 hover:text-slate-900 transition">Why</a>
32
+ <a href="./what-not.html" class="text-indigo-600 font-bold">What Not</a>
33
+ <a href="./architecture.html" class="text-slate-600 hover:text-slate-900 transition">Architecture</a>
34
+ <a href="./how-it-works.html" class="text-slate-600 hover:text-slate-900 transition">How It Works</a>
35
+ <a href="../demo.html" class="px-3 py-1.5 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 shadow-sm transition">Playground</a>
36
+ </nav>
37
+ </div>
38
+ </header>
39
+
40
+ <main class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12 flex-1 w-full space-y-8">
41
+
42
+ <div class="space-y-3">
43
+ <span class="text-xs uppercase font-bold text-rose-600 tracking-wider font-mono">Boundaries & Non-Goals</span>
44
+ <h1 class="text-4xl font-black text-slate-900 tracking-tight">What json-to-spec is NOT.</h1>
45
+ <p class="text-base text-slate-600 leading-relaxed">
46
+ By maintaining strict boundaries, `json-to-spec` remains zero-dependency, ultra-lightweight, and universally portable.
47
+ </p>
48
+ </div>
49
+
50
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
51
+
52
+ <div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm space-y-2">
53
+ <div class="w-10 h-10 rounded-xl bg-rose-50 text-rose-600 flex items-center justify-center font-bold text-lg mb-2">
54
+ 🚫
55
+ </div>
56
+ <h2 class="text-lg font-bold text-slate-900">NOT a DOM Renderer</h2>
57
+ <p class="text-xs text-slate-600 leading-relaxed">
58
+ It does not call <code>document.createElement</code> or touch the browser DOM. This keeps it completely server- and edge-friendly. Rendering is delegated to <code class="text-indigo-600 font-bold">json-to-dom</code>.
59
+ </p>
60
+ </div>
61
+
62
+ <div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm space-y-2">
63
+ <div class="w-10 h-10 rounded-xl bg-rose-50 text-rose-600 flex items-center justify-center font-bold text-lg mb-2">
64
+ 🚫
65
+ </div>
66
+ <h2 class="text-lg font-bold text-slate-900">NOT a Virtual DOM</h2>
67
+ <p class="text-xs text-slate-600 leading-relaxed">
68
+ It does not maintain a reactive Virtual DOM tree or diffing algorithms. When data updates, re-running <code>compile()</code> takes less than 0.4ms.
69
+ </p>
70
+ </div>
71
+
72
+ <div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm space-y-2">
73
+ <div class="w-10 h-10 rounded-xl bg-rose-50 text-rose-600 flex items-center justify-center font-bold text-lg mb-2">
74
+ 🚫
75
+ </div>
76
+ <h2 class="text-lg font-bold text-slate-900">NOT a CSS Framework</h2>
77
+ <p class="text-xs text-slate-600 leading-relaxed">
78
+ It does not provide opinionated styling or themes. You can use Tailwind CSS, Bootstrap, Bulma, vanilla CSS, or custom utility tokens.
79
+ </p>
80
+ </div>
81
+
82
+ <div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm space-y-2">
83
+ <div class="w-10 h-10 rounded-xl bg-rose-50 text-rose-600 flex items-center justify-center font-bold text-lg mb-2">
84
+ 🚫
85
+ </div>
86
+ <h2 class="text-lg font-bold text-slate-900">NOT an Imperative Eval Engine</h2>
87
+ <p class="text-xs text-slate-600 leading-relaxed">
88
+ It does not execute arbitrary JavaScript or use <code>eval()</code>. Operations are declarative JSON only, guaranteeing safety and strict CSP compliance.
89
+ </p>
90
+ </div>
91
+
92
+ </div>
93
+
94
+ </main>
95
+
96
+ <footer class="mt-auto bg-white border-t border-slate-200 py-6 text-center text-xs text-slate-500">
97
+ json-to-spec &bull; KeshavSoft Declarative UI Architecture &bull; MIT License
98
+ </footer>
99
+ </body>
100
+ </html>