@portel/photon 1.18.0 → 1.20.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 (238) hide show
  1. package/dist/auto-ui/beam/routes/api-browse.d.ts.map +1 -1
  2. package/dist/auto-ui/beam/routes/api-browse.js +16 -4
  3. package/dist/auto-ui/beam/routes/api-browse.js.map +1 -1
  4. package/dist/auto-ui/beam/routes/api-config.js +4 -4
  5. package/dist/auto-ui/beam/routes/api-config.js.map +1 -1
  6. package/dist/auto-ui/beam/routes/api-marketplace.d.ts.map +1 -1
  7. package/dist/auto-ui/beam/routes/api-marketplace.js +14 -1
  8. package/dist/auto-ui/beam/routes/api-marketplace.js.map +1 -1
  9. package/dist/auto-ui/beam.d.ts.map +1 -1
  10. package/dist/auto-ui/beam.js +196 -77
  11. package/dist/auto-ui/beam.js.map +1 -1
  12. package/dist/auto-ui/bridge/index.d.ts.map +1 -1
  13. package/dist/auto-ui/bridge/index.js +17 -0
  14. package/dist/auto-ui/bridge/index.js.map +1 -1
  15. package/dist/auto-ui/streamable-http-transport.d.ts +1 -0
  16. package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
  17. package/dist/auto-ui/streamable-http-transport.js +64 -16
  18. package/dist/auto-ui/streamable-http-transport.js.map +1 -1
  19. package/dist/auto-ui/types.d.ts +12 -0
  20. package/dist/auto-ui/types.d.ts.map +1 -1
  21. package/dist/auto-ui/types.js.map +1 -1
  22. package/dist/beam-form.bundle.js +49 -6
  23. package/dist/beam-form.bundle.js.map +2 -2
  24. package/dist/beam.bundle.js +2090 -512
  25. package/dist/beam.bundle.js.map +4 -4
  26. package/dist/capability-negotiator.d.ts +67 -0
  27. package/dist/capability-negotiator.d.ts.map +1 -0
  28. package/dist/capability-negotiator.js +104 -0
  29. package/dist/capability-negotiator.js.map +1 -0
  30. package/dist/channel-manager.d.ts +122 -0
  31. package/dist/channel-manager.d.ts.map +1 -0
  32. package/dist/channel-manager.js +266 -0
  33. package/dist/channel-manager.js.map +1 -0
  34. package/dist/claude-code-plugin.js +1 -1
  35. package/dist/cli/commands/beam.d.ts.map +1 -1
  36. package/dist/cli/commands/beam.js +8 -2
  37. package/dist/cli/commands/beam.js.map +1 -1
  38. package/dist/cli/commands/changelog.d.ts +9 -0
  39. package/dist/cli/commands/changelog.d.ts.map +1 -0
  40. package/dist/cli/commands/changelog.js +133 -0
  41. package/dist/cli/commands/changelog.js.map +1 -0
  42. package/dist/cli/commands/maker.d.ts.map +1 -1
  43. package/dist/cli/commands/maker.js +23 -2
  44. package/dist/cli/commands/maker.js.map +1 -1
  45. package/dist/cli/commands/mcp.d.ts.map +1 -1
  46. package/dist/cli/commands/mcp.js +53 -0
  47. package/dist/cli/commands/mcp.js.map +1 -1
  48. package/dist/cli/commands/package.d.ts.map +1 -1
  49. package/dist/cli/commands/package.js +43 -9
  50. package/dist/cli/commands/package.js.map +1 -1
  51. package/dist/cli/commands/run.d.ts.map +1 -1
  52. package/dist/cli/commands/run.js +1 -0
  53. package/dist/cli/commands/run.js.map +1 -1
  54. package/dist/cli/commands/update.d.ts +3 -2
  55. package/dist/cli/commands/update.d.ts.map +1 -1
  56. package/dist/cli/commands/update.js +50 -43
  57. package/dist/cli/commands/update.js.map +1 -1
  58. package/dist/cli/index.d.ts.map +1 -1
  59. package/dist/cli/index.js +16 -2
  60. package/dist/cli/index.js.map +1 -1
  61. package/dist/cli-alias.js +1 -1
  62. package/dist/cli-alias.js.map +1 -1
  63. package/dist/context-store.d.ts +23 -33
  64. package/dist/context-store.d.ts.map +1 -1
  65. package/dist/context-store.js +147 -97
  66. package/dist/context-store.js.map +1 -1
  67. package/dist/context.d.ts +15 -10
  68. package/dist/context.d.ts.map +1 -1
  69. package/dist/context.js +37 -13
  70. package/dist/context.js.map +1 -1
  71. package/dist/daemon/client.d.ts.map +1 -1
  72. package/dist/daemon/client.js +12 -0
  73. package/dist/daemon/client.js.map +1 -1
  74. package/dist/daemon/server.js +34 -51
  75. package/dist/daemon/server.js.map +1 -1
  76. package/dist/daemon/worker-manager.d.ts.map +1 -1
  77. package/dist/daemon/worker-manager.js +21 -7
  78. package/dist/daemon/worker-manager.js.map +1 -1
  79. package/dist/data-migration.d.ts +27 -0
  80. package/dist/data-migration.d.ts.map +1 -0
  81. package/dist/data-migration.js +307 -0
  82. package/dist/data-migration.js.map +1 -0
  83. package/dist/editor-support/docblock-tag-catalog.d.ts.map +1 -1
  84. package/dist/editor-support/docblock-tag-catalog.js +6 -0
  85. package/dist/editor-support/docblock-tag-catalog.js.map +1 -1
  86. package/dist/loader.d.ts +13 -0
  87. package/dist/loader.d.ts.map +1 -1
  88. package/dist/loader.js +169 -22
  89. package/dist/loader.js.map +1 -1
  90. package/dist/marketplace-manager.d.ts +6 -0
  91. package/dist/marketplace-manager.d.ts.map +1 -1
  92. package/dist/marketplace-manager.js +185 -62
  93. package/dist/marketplace-manager.js.map +1 -1
  94. package/dist/namespace-migration.d.ts +1 -0
  95. package/dist/namespace-migration.d.ts.map +1 -1
  96. package/dist/namespace-migration.js +86 -0
  97. package/dist/namespace-migration.js.map +1 -1
  98. package/dist/photon-cli-runner.d.ts.map +1 -1
  99. package/dist/photon-cli-runner.js +47 -21
  100. package/dist/photon-cli-runner.js.map +1 -1
  101. package/dist/photon-doc-extractor.d.ts +1 -0
  102. package/dist/photon-doc-extractor.d.ts.map +1 -1
  103. package/dist/photon-doc-extractor.js +6 -0
  104. package/dist/photon-doc-extractor.js.map +1 -1
  105. package/dist/readme-syncer.d.ts.map +1 -1
  106. package/dist/readme-syncer.js +6 -1
  107. package/dist/readme-syncer.js.map +1 -1
  108. package/dist/resource-server.d.ts +105 -0
  109. package/dist/resource-server.d.ts.map +1 -0
  110. package/dist/resource-server.js +723 -0
  111. package/dist/resource-server.js.map +1 -0
  112. package/dist/serv/auth/jwt.d.ts +2 -0
  113. package/dist/serv/auth/jwt.d.ts.map +1 -1
  114. package/dist/serv/auth/jwt.js +11 -5
  115. package/dist/serv/auth/jwt.js.map +1 -1
  116. package/dist/serv/vault/token-vault.d.ts +2 -0
  117. package/dist/serv/vault/token-vault.d.ts.map +1 -1
  118. package/dist/serv/vault/token-vault.js +6 -0
  119. package/dist/serv/vault/token-vault.js.map +1 -1
  120. package/dist/server.d.ts +30 -119
  121. package/dist/server.d.ts.map +1 -1
  122. package/dist/server.js +252 -1122
  123. package/dist/server.js.map +1 -1
  124. package/dist/shared/audit.d.ts.map +1 -1
  125. package/dist/shared/audit.js +11 -4
  126. package/dist/shared/audit.js.map +1 -1
  127. package/dist/shared/security.d.ts +10 -0
  128. package/dist/shared/security.d.ts.map +1 -1
  129. package/dist/shared/security.js +27 -0
  130. package/dist/shared/security.js.map +1 -1
  131. package/dist/task-executor.d.ts +69 -0
  132. package/dist/task-executor.d.ts.map +1 -0
  133. package/dist/task-executor.js +182 -0
  134. package/dist/task-executor.js.map +1 -0
  135. package/dist/tasks/store.d.ts.map +1 -1
  136. package/dist/tasks/store.js +6 -2
  137. package/dist/tasks/store.js.map +1 -1
  138. package/dist/types/photon-instance.d.ts +50 -0
  139. package/dist/types/photon-instance.d.ts.map +1 -0
  140. package/dist/types/photon-instance.js +9 -0
  141. package/dist/types/photon-instance.js.map +1 -0
  142. package/dist/types/server-types.d.ts +61 -0
  143. package/dist/types/server-types.d.ts.map +1 -0
  144. package/dist/types/server-types.js +8 -0
  145. package/dist/types/server-types.js.map +1 -0
  146. package/dist/version-notify.d.ts +27 -0
  147. package/dist/version-notify.d.ts.map +1 -0
  148. package/dist/version-notify.js +142 -0
  149. package/dist/version-notify.js.map +1 -0
  150. package/package.json +3 -3
  151. package/dist/auto-ui/bridge/openai-shim.d.ts +0 -20
  152. package/dist/auto-ui/bridge/openai-shim.d.ts.map +0 -1
  153. package/dist/auto-ui/bridge/openai-shim.js +0 -231
  154. package/dist/auto-ui/bridge/openai-shim.js.map +0 -1
  155. package/dist/auto-ui/bridge/photon-app.d.ts +0 -162
  156. package/dist/auto-ui/bridge/photon-app.d.ts.map +0 -1
  157. package/dist/auto-ui/bridge/photon-app.js +0 -460
  158. package/dist/auto-ui/bridge/photon-app.js.map +0 -1
  159. package/dist/auto-ui/daemon-tools.d.ts +0 -45
  160. package/dist/auto-ui/daemon-tools.d.ts.map +0 -1
  161. package/dist/auto-ui/daemon-tools.js +0 -581
  162. package/dist/auto-ui/daemon-tools.js.map +0 -1
  163. package/dist/auto-ui/design-system/index.d.ts +0 -21
  164. package/dist/auto-ui/design-system/index.d.ts.map +0 -1
  165. package/dist/auto-ui/design-system/index.js +0 -27
  166. package/dist/auto-ui/design-system/index.js.map +0 -1
  167. package/dist/auto-ui/design-system/transaction-ui.d.ts +0 -70
  168. package/dist/auto-ui/design-system/transaction-ui.d.ts.map +0 -1
  169. package/dist/auto-ui/design-system/transaction-ui.js +0 -982
  170. package/dist/auto-ui/design-system/transaction-ui.js.map +0 -1
  171. package/dist/auto-ui/playground-server.d.ts +0 -7
  172. package/dist/auto-ui/playground-server.d.ts.map +0 -1
  173. package/dist/auto-ui/playground-server.js +0 -840
  174. package/dist/auto-ui/playground-server.js.map +0 -1
  175. package/dist/auto-ui/rendering/components.d.ts +0 -29
  176. package/dist/auto-ui/rendering/components.d.ts.map +0 -1
  177. package/dist/auto-ui/rendering/components.js +0 -1341
  178. package/dist/auto-ui/rendering/components.js.map +0 -1
  179. package/dist/auto-ui/rendering/field-analyzer.d.ts +0 -104
  180. package/dist/auto-ui/rendering/field-analyzer.d.ts.map +0 -1
  181. package/dist/auto-ui/rendering/field-analyzer.js +0 -447
  182. package/dist/auto-ui/rendering/field-analyzer.js.map +0 -1
  183. package/dist/auto-ui/rendering/field-renderers.d.ts +0 -64
  184. package/dist/auto-ui/rendering/field-renderers.d.ts.map +0 -1
  185. package/dist/auto-ui/rendering/field-renderers.js +0 -317
  186. package/dist/auto-ui/rendering/field-renderers.js.map +0 -1
  187. package/dist/auto-ui/rendering/index.d.ts +0 -28
  188. package/dist/auto-ui/rendering/index.d.ts.map +0 -1
  189. package/dist/auto-ui/rendering/index.js +0 -60
  190. package/dist/auto-ui/rendering/index.js.map +0 -1
  191. package/dist/auto-ui/rendering/layout-selector.d.ts +0 -60
  192. package/dist/auto-ui/rendering/layout-selector.d.ts.map +0 -1
  193. package/dist/auto-ui/rendering/layout-selector.js +0 -476
  194. package/dist/auto-ui/rendering/layout-selector.js.map +0 -1
  195. package/dist/markdown-utils.d.ts +0 -8
  196. package/dist/markdown-utils.d.ts.map +0 -1
  197. package/dist/markdown-utils.js +0 -64
  198. package/dist/markdown-utils.js.map +0 -1
  199. package/dist/mcp-client.d.ts +0 -9
  200. package/dist/mcp-client.d.ts.map +0 -1
  201. package/dist/mcp-client.js +0 -11
  202. package/dist/mcp-client.js.map +0 -1
  203. package/dist/mcp-elicitation.d.ts +0 -32
  204. package/dist/mcp-elicitation.d.ts.map +0 -1
  205. package/dist/mcp-elicitation.js +0 -26
  206. package/dist/mcp-elicitation.js.map +0 -1
  207. package/dist/photons/builder-compass.photon.d.ts +0 -167
  208. package/dist/photons/builder-compass.photon.d.ts.map +0 -1
  209. package/dist/photons/builder-compass.photon.js +0 -816
  210. package/dist/photons/builder-compass.photon.js.map +0 -1
  211. package/dist/photons/builder-compass.photon.ts +0 -1129
  212. package/dist/photons/docs/ui/docs.html +0 -441
  213. package/dist/photons/docs.photon.d.ts +0 -237
  214. package/dist/photons/docs.photon.d.ts.map +0 -1
  215. package/dist/photons/docs.photon.js +0 -483
  216. package/dist/photons/docs.photon.js.map +0 -1
  217. package/dist/photons/docs.photon.ts +0 -536
  218. package/dist/photons/slides.photon.d.ts +0 -212
  219. package/dist/photons/slides.photon.d.ts.map +0 -1
  220. package/dist/photons/slides.photon.js +0 -355
  221. package/dist/photons/slides.photon.js.map +0 -1
  222. package/dist/photons/slides.photon.ts +0 -370
  223. package/dist/photons/spreadsheet/ui/spreadsheet.html +0 -779
  224. package/dist/photons/spreadsheet.photon.d.ts +0 -554
  225. package/dist/photons/spreadsheet.photon.d.ts.map +0 -1
  226. package/dist/photons/spreadsheet.photon.js +0 -1050
  227. package/dist/photons/spreadsheet.photon.js.map +0 -1
  228. package/dist/photons/spreadsheet.photon.ts +0 -1239
  229. package/dist/photons/ui/builder-compass.html +0 -1199
  230. package/dist/photons/ui/builder-compass.photon.html +0 -380
  231. package/dist/security-scanner.d.ts +0 -52
  232. package/dist/security-scanner.d.ts.map +0 -1
  233. package/dist/security-scanner.js +0 -181
  234. package/dist/security-scanner.js.map +0 -1
  235. package/dist/shared/performance.d.ts +0 -65
  236. package/dist/shared/performance.d.ts.map +0 -1
  237. package/dist/shared/performance.js +0 -136
  238. package/dist/shared/performance.js.map +0 -1
@@ -1,317 +0,0 @@
1
- /**
2
- * Field Renderers - Type-specific value rendering
3
- *
4
- * Provides specialized renderers for different field types:
5
- * - Email (mailto link)
6
- * - URL (clickable link)
7
- * - Date (formatted)
8
- * - Currency ($X.XX)
9
- * - Boolean (checkmark)
10
- * - Badge (status pill)
11
- * - Code (syntax highlighted)
12
- */
13
- /**
14
- * Render a field value based on its type
15
- */
16
- export function renderField(value, type, options) {
17
- const { escapeHtml, locale = 'en-US', currency = 'USD', dateFormat = 'medium' } = options;
18
- if (value === null || value === undefined) {
19
- return '<span class="field-empty">—</span>';
20
- }
21
- switch (type) {
22
- case 'email':
23
- return renderEmail(value, escapeHtml);
24
- case 'url':
25
- case 'link':
26
- return renderUrl(value, escapeHtml);
27
- case 'date':
28
- return renderDate(value, dateFormat, locale);
29
- case 'currency':
30
- return renderCurrency(value, currency, locale);
31
- case 'boolean':
32
- return renderBoolean(value);
33
- case 'badge':
34
- return renderBadge(value, escapeHtml);
35
- case 'code':
36
- return renderCode(value, escapeHtml);
37
- case 'image':
38
- return renderImage(value, escapeHtml);
39
- case 'text':
40
- default:
41
- return escapeHtml(String(value));
42
- }
43
- }
44
- /**
45
- * Render email as mailto link
46
- */
47
- export function renderEmail(value, escapeHtml) {
48
- const email = String(value);
49
- return `<a href="mailto:${escapeHtml(email)}" class="field-email">${escapeHtml(email)}</a>`;
50
- }
51
- /**
52
- * Render URL as clickable link
53
- */
54
- export function renderUrl(value, escapeHtml) {
55
- const url = String(value);
56
- // Add protocol if missing
57
- const href = url.startsWith('http') ? url : `https://${url}`;
58
- // Display shortened URL
59
- const display = url.replace(/^https?:\/\//, '').replace(/\/$/, '');
60
- return `<a href="${escapeHtml(href)}" target="_blank" rel="noopener" class="field-url">${escapeHtml(display)}</a>`;
61
- }
62
- /**
63
- * Render date with formatting
64
- */
65
- export function renderDate(value, format, locale) {
66
- try {
67
- const date = new Date(value);
68
- if (isNaN(date.getTime())) {
69
- return `<span class="field-date">${String(value)}</span>`;
70
- }
71
- if (format === 'relative') {
72
- const diff = Date.now() - date.getTime();
73
- const seconds = Math.floor(diff / 1000);
74
- const minutes = Math.floor(seconds / 60);
75
- const hours = Math.floor(minutes / 60);
76
- const days = Math.floor(hours / 24);
77
- let text;
78
- if (days > 30) {
79
- text = date.toLocaleDateString(locale);
80
- }
81
- else if (days > 0) {
82
- text = `${days}d ago`;
83
- }
84
- else if (hours > 0) {
85
- text = `${hours}h ago`;
86
- }
87
- else if (minutes > 0) {
88
- text = `${minutes}m ago`;
89
- }
90
- else {
91
- text = 'just now';
92
- }
93
- return `<span class="field-date" title="${date.toISOString()}">${text}</span>`;
94
- }
95
- const options = format === 'short'
96
- ? { month: 'numeric', day: 'numeric', year: '2-digit' }
97
- : format === 'long'
98
- ? { month: 'long', day: 'numeric', year: 'numeric', hour: 'numeric', minute: '2-digit' }
99
- : { month: 'short', day: 'numeric', year: 'numeric' };
100
- return `<span class="field-date">${date.toLocaleDateString(locale, options)}</span>`;
101
- }
102
- catch {
103
- return `<span class="field-date">${String(value)}</span>`;
104
- }
105
- }
106
- /**
107
- * Render number as currency
108
- */
109
- export function renderCurrency(value, currency, locale) {
110
- const num = typeof value === 'number' ? value : parseFloat(String(value));
111
- if (isNaN(num)) {
112
- return `<span class="field-currency">${String(value)}</span>`;
113
- }
114
- const formatted = new Intl.NumberFormat(locale, {
115
- style: 'currency',
116
- currency,
117
- }).format(num);
118
- return `<span class="field-currency">${formatted}</span>`;
119
- }
120
- /**
121
- * Render boolean as checkmark
122
- */
123
- export function renderBoolean(value) {
124
- const bool = Boolean(value);
125
- const icon = bool ? '✓' : '✗';
126
- const className = bool ? 'field-boolean true' : 'field-boolean false';
127
- return `<span class="${className}">${icon}</span>`;
128
- }
129
- /**
130
- * Render value as status badge
131
- */
132
- export function renderBadge(value, escapeHtml) {
133
- const text = String(value);
134
- const lower = text.toLowerCase();
135
- let statusClass = '';
136
- if (/active|success|complete|done|enabled|yes|true|approved/.test(lower)) {
137
- statusClass = 'status-success';
138
- }
139
- else if (/inactive|error|failed|disabled|no|false|rejected|cancelled/.test(lower)) {
140
- statusClass = 'status-error';
141
- }
142
- else if (/pending|warning|waiting|processing|review/.test(lower)) {
143
- statusClass = 'status-warning';
144
- }
145
- else if (/draft|new|created/.test(lower)) {
146
- statusClass = 'status-info';
147
- }
148
- return `<span class="field-badge ${statusClass}">${escapeHtml(text)}</span>`;
149
- }
150
- /**
151
- * Render value as code
152
- */
153
- export function renderCode(value, escapeHtml) {
154
- const code = typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value);
155
- return `<code class="field-code">${escapeHtml(code)}</code>`;
156
- }
157
- /**
158
- * Render value as image
159
- */
160
- export function renderImage(value, escapeHtml) {
161
- const url = String(value);
162
- return `<img src="${escapeHtml(url)}" class="field-image" alt="" loading="lazy">`;
163
- }
164
- /**
165
- * Generate CSS for field renderers
166
- */
167
- export function generateFieldRendererCSS() {
168
- return `
169
- /* Field Renderers */
170
- .field-empty {
171
- color: var(--text-tertiary);
172
- }
173
-
174
- .field-email,
175
- .field-url {
176
- color: var(--accent-color);
177
- text-decoration: none;
178
- }
179
-
180
- .field-email:hover,
181
- .field-url:hover {
182
- text-decoration: underline;
183
- }
184
-
185
- .field-date {
186
- color: var(--text-secondary);
187
- }
188
-
189
- .field-currency {
190
- font-variant-numeric: tabular-nums;
191
- font-weight: 500;
192
- }
193
-
194
- .field-boolean {
195
- font-weight: 600;
196
- }
197
-
198
- .field-boolean.true {
199
- color: #22c55e;
200
- }
201
-
202
- .field-boolean.false {
203
- color: #ef4444;
204
- }
205
-
206
- .field-badge {
207
- display: inline-block;
208
- padding: 2px 8px;
209
- border-radius: 12px;
210
- font-size: 0.75rem;
211
- font-weight: 500;
212
- text-transform: capitalize;
213
- background: var(--bg-tertiary);
214
- color: var(--text-primary);
215
- }
216
-
217
- .field-badge.status-success {
218
- background: #dcfce7;
219
- color: #166534;
220
- }
221
-
222
- .field-badge.status-error {
223
- background: #fee2e2;
224
- color: #991b1b;
225
- }
226
-
227
- .field-badge.status-warning {
228
- background: #fef3c7;
229
- color: #92400e;
230
- }
231
-
232
- .field-badge.status-info {
233
- background: #dbeafe;
234
- color: #1e40af;
235
- }
236
-
237
- .field-code {
238
- font-family: var(--font-mono);
239
- font-size: 0.875em;
240
- padding: 2px 6px;
241
- background: var(--bg-tertiary);
242
- border-radius: 4px;
243
- }
244
-
245
- .field-image {
246
- max-width: 100%;
247
- max-height: 200px;
248
- border-radius: 8px;
249
- object-fit: cover;
250
- }
251
- `;
252
- }
253
- /**
254
- * Generate JavaScript for field renderers (to embed in HTML)
255
- */
256
- export function generateFieldRenderersJS() {
257
- return `
258
- // Field Renderers
259
-
260
- function renderFieldByType(value, type) {
261
- if (value === null || value === undefined) {
262
- return '<span class="field-empty">—</span>';
263
- }
264
-
265
- switch (type) {
266
- case 'email':
267
- return '<a href="mailto:' + escapeHtml(value) + '" class="field-email">' + escapeHtml(value) + '</a>';
268
-
269
- case 'url':
270
- case 'link':
271
- const href = String(value).startsWith('http') ? value : 'https://' + value;
272
- const display = String(value).replace(/^https?:\\/\\//, '').replace(/\\/$/, '');
273
- return '<a href="' + escapeHtml(href) + '" target="_blank" rel="noopener" class="field-url">' + escapeHtml(display) + '</a>';
274
-
275
- case 'date':
276
- try {
277
- const date = new Date(value);
278
- if (isNaN(date.getTime())) return escapeHtml(String(value));
279
- return '<span class="field-date">' + date.toLocaleDateString() + '</span>';
280
- } catch {
281
- return escapeHtml(String(value));
282
- }
283
-
284
- case 'currency':
285
- const num = typeof value === 'number' ? value : parseFloat(value);
286
- if (isNaN(num)) return escapeHtml(String(value));
287
- return '<span class="field-currency">$' + num.toFixed(2) + '</span>';
288
-
289
- case 'boolean':
290
- const bool = Boolean(value);
291
- return '<span class="field-boolean ' + (bool ? 'true' : 'false') + '">' + (bool ? '✓' : '✗') + '</span>';
292
-
293
- case 'badge':
294
- const text = String(value);
295
- const lower = text.toLowerCase();
296
- let statusClass = '';
297
- if (/active|success|complete|done|enabled|yes|true|approved/.test(lower)) statusClass = 'status-success';
298
- else if (/inactive|error|failed|disabled|no|false|rejected|cancelled/.test(lower)) statusClass = 'status-error';
299
- else if (/pending|warning|waiting|processing|review/.test(lower)) statusClass = 'status-warning';
300
- else if (/draft|new|created/.test(lower)) statusClass = 'status-info';
301
- return '<span class="field-badge ' + statusClass + '">' + escapeHtml(text) + '</span>';
302
-
303
- case 'code':
304
- const code = typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value);
305
- return '<code class="field-code">' + escapeHtml(code) + '</code>';
306
-
307
- case 'image':
308
- return '<img src="' + escapeHtml(String(value)) + '" class="field-image" alt="" loading="lazy">';
309
-
310
- case 'text':
311
- default:
312
- return escapeHtml(String(value));
313
- }
314
- }
315
- `;
316
- }
317
- //# sourceMappingURL=field-renderers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-renderers.js","sourceRoot":"","sources":["../../../src/auto-ui/rendering/field-renderers.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Smart Rendering Module
3
- *
4
- * iOS-inspired, React Admin-influenced rendering system that:
5
- * - Convention over configuration - works beautifully with zero annotations
6
- * - Smart field detection - guesses meaning from field names and types
7
- * - Progressive customization - JSDoc annotations for fine-tuning
8
- * - List-centric paradigm - everything renders as configurable list items
9
- *
10
- * Design System based on:
11
- * - Material Design 3 tokens: https://m3.material.io/foundations/design-tokens
12
- * - Apple HIG (8pt grid): https://developer.apple.com/design/human-interface-guidelines/layout
13
- */
14
- export * from './field-analyzer.js';
15
- export * from './layout-selector.js';
16
- export * from './components.js';
17
- export * from './field-renderers.js';
18
- export * from './template-engine.js';
19
- export * from '../design-system/index.js';
20
- /**
21
- * Generate all JavaScript code for embedding in HTML
22
- */
23
- export declare function generateSmartRenderingJS(): string;
24
- /**
25
- * Generate all CSS for embedding in HTML
26
- */
27
- export declare function generateSmartRenderingCSS(): string;
28
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auto-ui/rendering/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAS1C;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAmBjD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAOlD"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Smart Rendering Module
3
- *
4
- * iOS-inspired, React Admin-influenced rendering system that:
5
- * - Convention over configuration - works beautifully with zero annotations
6
- * - Smart field detection - guesses meaning from field names and types
7
- * - Progressive customization - JSDoc annotations for fine-tuning
8
- * - List-centric paradigm - everything renders as configurable list items
9
- *
10
- * Design System based on:
11
- * - Material Design 3 tokens: https://m3.material.io/foundations/design-tokens
12
- * - Apple HIG (8pt grid): https://developer.apple.com/design/human-interface-guidelines/layout
13
- */
14
- export * from './field-analyzer.js';
15
- export * from './layout-selector.js';
16
- export * from './components.js';
17
- export * from './field-renderers.js';
18
- export * from './template-engine.js';
19
- export * from '../design-system/index.js';
20
- import { generateFieldAnalyzerJS } from './field-analyzer.js';
21
- import { generateLayoutSelectorJS } from './layout-selector.js';
22
- import { generateComponentsJS, generateComponentCSS } from './components.js';
23
- import { generateFieldRenderersJS, generateFieldRendererCSS } from './field-renderers.js';
24
- import { generateTemplateEngineJS, generateTemplateEngineCSS } from './template-engine.js';
25
- import { generateDesignSystemCSS, generateDesignSystemJS } from '../design-system/index.js';
26
- /**
27
- * Generate all JavaScript code for embedding in HTML
28
- */
29
- export function generateSmartRenderingJS() {
30
- return [
31
- '// ==========================================================================',
32
- '// Photon Design System + Smart Rendering',
33
- '// Based on Material Design 3 + Apple HIG',
34
- '// ==========================================================================',
35
- '',
36
- generateDesignSystemJS(),
37
- '',
38
- generateFieldAnalyzerJS(),
39
- '',
40
- generateLayoutSelectorJS(),
41
- '',
42
- generateFieldRenderersJS(),
43
- '',
44
- generateComponentsJS(),
45
- '',
46
- generateTemplateEngineJS(),
47
- ].join('\n');
48
- }
49
- /**
50
- * Generate all CSS for embedding in HTML
51
- */
52
- export function generateSmartRenderingCSS() {
53
- return [
54
- generateDesignSystemCSS(),
55
- generateComponentCSS(),
56
- generateFieldRendererCSS(),
57
- generateTemplateEngineCSS(),
58
- ].join('\n');
59
- }
60
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auto-ui/rendering/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE5F;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,+EAA+E;QAC/E,2CAA2C;QAC3C,2CAA2C;QAC3C,+EAA+E;QAC/E,EAAE;QACF,sBAAsB,EAAE;QACxB,EAAE;QACF,uBAAuB,EAAE;QACzB,EAAE;QACF,wBAAwB,EAAE;QAC1B,EAAE;QACF,wBAAwB,EAAE;QAC1B,EAAE;QACF,oBAAoB,EAAE;QACtB,EAAE;QACF,wBAAwB,EAAE;KAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,uBAAuB,EAAE;QACzB,oBAAoB,EAAE;QACtB,wBAAwB,EAAE;QAC1B,yBAAyB,EAAE;KAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Layout Selector - Auto-detect best layout for data
3
- *
4
- * Determines the optimal component/layout to render data based on:
5
- * 1. Explicit @format annotation (highest priority)
6
- * 2. Data shape (array vs object vs primitive)
7
- * 3. Data content (has images -> grid, charts -> chart, etc.)
8
- */
9
- export type LayoutType = 'text' | 'card' | 'list' | 'grid' | 'tree' | 'kv' | 'chips' | 'table' | 'markdown' | 'mermaid' | 'code' | 'json' | 'html' | 'chart' | 'metric' | 'gauge' | 'timeline' | 'dashboard' | 'cart' | 'panels' | 'tabs' | 'accordion' | 'stack' | 'columns';
10
- export interface LayoutHints {
11
- title?: string;
12
- subtitle?: string;
13
- icon?: string;
14
- badge?: string;
15
- detail?: string;
16
- image?: string;
17
- style?: string;
18
- accessory?: string;
19
- columns?: number;
20
- fields?: string[];
21
- label?: string;
22
- value?: string;
23
- x?: string;
24
- y?: string;
25
- series?: string;
26
- chartType?: string;
27
- min?: number;
28
- max?: number;
29
- date?: string;
30
- description?: string;
31
- group?: string;
32
- inner?: string;
33
- }
34
- /**
35
- * Select the best layout type for given data
36
- */
37
- export declare function selectLayout(data: any, format?: string, hints?: LayoutHints): LayoutType;
38
- /**
39
- * Check if object has fields that look like actual images (not just icon characters)
40
- * We need to verify the VALUE looks like an image URL, not just the field name
41
- */
42
- export declare function hasImageFields(obj: object): boolean;
43
- /**
44
- * Check if object is nested (has object/array values)
45
- */
46
- export declare function isNested(obj: object, depth?: number): boolean;
47
- /**
48
- * Check if string contains markdown syntax
49
- */
50
- export declare function hasMarkdownSyntax(text: string): boolean;
51
- /**
52
- * Parse layout hints from nested JSDoc syntax
53
- * Example: {@title name, @subtitle email, @style inset}
54
- */
55
- export declare function parseLayoutHints(hintsString: string): LayoutHints;
56
- /**
57
- * Generate JavaScript code for layout selector (to embed in HTML)
58
- */
59
- export declare function generateLayoutSelectorJS(): string;
60
- //# sourceMappingURL=layout-selector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout-selector.d.ts","sourceRoot":"","sources":["../../../src/auto-ui/rendering/layout-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,IAAI,GACJ,OAAO,GACP,OAAO,GACP,UAAU,GACV,SAAS,GACT,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,QAAQ,GACR,OAAO,GACP,UAAU,GACV,WAAW,GACX,MAAM,GACN,QAAQ,GACR,MAAM,GACN,WAAW,GACX,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,UAAU,CA4HxF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA8BnD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAahE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAavD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CA4FjE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAyKjD"}