@frontmcp/ui 0.5.1 → 0.6.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 (805) hide show
  1. package/README.md +140 -362
  2. package/bridge/adapters/base-adapter.d.ts +104 -0
  3. package/bridge/adapters/base-adapter.d.ts.map +1 -0
  4. package/bridge/adapters/claude.adapter.d.ts +67 -0
  5. package/bridge/adapters/claude.adapter.d.ts.map +1 -0
  6. package/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  7. package/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  8. package/bridge/adapters/gemini.adapter.d.ts +64 -0
  9. package/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  10. package/bridge/adapters/generic.adapter.d.ts +56 -0
  11. package/bridge/adapters/generic.adapter.d.ts.map +1 -0
  12. package/bridge/adapters/index.d.ts +26 -0
  13. package/bridge/adapters/index.d.ts.map +1 -0
  14. package/bridge/adapters/openai.adapter.d.ts +65 -0
  15. package/bridge/adapters/openai.adapter.d.ts.map +1 -0
  16. package/bridge/core/adapter-registry.d.ts +122 -0
  17. package/bridge/core/adapter-registry.d.ts.map +1 -0
  18. package/bridge/core/bridge-factory.d.ts +199 -0
  19. package/bridge/core/bridge-factory.d.ts.map +1 -0
  20. package/bridge/core/index.d.ts +10 -0
  21. package/bridge/core/index.d.ts.map +1 -0
  22. package/bridge/index.d.ts +62 -0
  23. package/bridge/index.d.ts.map +1 -0
  24. package/bridge/index.js +2540 -0
  25. package/bridge/runtime/iife-generator.d.ts +62 -0
  26. package/bridge/runtime/iife-generator.d.ts.map +1 -0
  27. package/bridge/runtime/index.d.ts +10 -0
  28. package/bridge/runtime/index.d.ts.map +1 -0
  29. package/bridge/types.d.ts +386 -0
  30. package/bridge/types.d.ts.map +1 -0
  31. package/bundler/bundler.d.ts +208 -0
  32. package/bundler/bundler.d.ts.map +1 -0
  33. package/bundler/cache.d.ts +173 -0
  34. package/bundler/cache.d.ts.map +1 -0
  35. package/bundler/file-cache/component-builder.d.ts +167 -0
  36. package/bundler/file-cache/component-builder.d.ts.map +1 -0
  37. package/bundler/file-cache/hash-calculator.d.ts +155 -0
  38. package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  39. package/bundler/file-cache/index.d.ts +12 -0
  40. package/bundler/file-cache/index.d.ts.map +1 -0
  41. package/bundler/file-cache/storage/filesystem.d.ts +149 -0
  42. package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  43. package/bundler/file-cache/storage/index.d.ts +11 -0
  44. package/bundler/file-cache/storage/index.d.ts.map +1 -0
  45. package/bundler/file-cache/storage/interface.d.ts +152 -0
  46. package/bundler/file-cache/storage/interface.d.ts.map +1 -0
  47. package/bundler/file-cache/storage/redis.d.ts +139 -0
  48. package/bundler/file-cache/storage/redis.d.ts.map +1 -0
  49. package/bundler/index.d.ts +43 -0
  50. package/bundler/index.d.ts.map +1 -0
  51. package/bundler/index.js +3707 -0
  52. package/bundler/sandbox/enclave-adapter.d.ts +121 -0
  53. package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  54. package/bundler/sandbox/executor.d.ts +14 -0
  55. package/bundler/sandbox/executor.d.ts.map +1 -0
  56. package/bundler/sandbox/policy.d.ts +62 -0
  57. package/bundler/sandbox/policy.d.ts.map +1 -0
  58. package/bundler/types.d.ts +702 -0
  59. package/bundler/types.d.ts.map +1 -0
  60. package/components/alert.d.ts +66 -0
  61. package/components/alert.d.ts.map +1 -0
  62. package/components/alert.schema.d.ts +98 -0
  63. package/components/alert.schema.d.ts.map +1 -0
  64. package/components/avatar.d.ts +77 -0
  65. package/components/avatar.d.ts.map +1 -0
  66. package/components/avatar.schema.d.ts +170 -0
  67. package/components/avatar.schema.d.ts.map +1 -0
  68. package/components/badge.d.ts +64 -0
  69. package/components/badge.d.ts.map +1 -0
  70. package/components/badge.schema.d.ts +91 -0
  71. package/components/badge.schema.d.ts.map +1 -0
  72. package/components/button.d.ts +100 -0
  73. package/components/button.d.ts.map +1 -0
  74. package/components/button.schema.d.ts +120 -0
  75. package/components/button.schema.d.ts.map +1 -0
  76. package/components/card.d.ts +53 -0
  77. package/components/card.d.ts.map +1 -0
  78. package/components/card.schema.d.ts +93 -0
  79. package/components/card.schema.d.ts.map +1 -0
  80. package/components/form.d.ts +212 -0
  81. package/components/form.d.ts.map +1 -0
  82. package/components/form.schema.d.ts +365 -0
  83. package/components/form.schema.d.ts.map +1 -0
  84. package/components/index.d.ts +29 -0
  85. package/components/index.d.ts.map +1 -0
  86. package/components/index.js +2525 -0
  87. package/components/list.d.ts +121 -0
  88. package/components/list.d.ts.map +1 -0
  89. package/components/list.schema.d.ts +129 -0
  90. package/components/list.schema.d.ts.map +1 -0
  91. package/components/modal.d.ts +100 -0
  92. package/components/modal.d.ts.map +1 -0
  93. package/components/modal.schema.d.ts +151 -0
  94. package/components/modal.schema.d.ts.map +1 -0
  95. package/components/table.d.ts +91 -0
  96. package/components/table.d.ts.map +1 -0
  97. package/components/table.schema.d.ts +123 -0
  98. package/components/table.schema.d.ts.map +1 -0
  99. package/esm/bridge/adapters/base-adapter.d.ts +104 -0
  100. package/esm/bridge/adapters/base-adapter.d.ts.map +1 -0
  101. package/esm/bridge/adapters/claude.adapter.d.ts +67 -0
  102. package/esm/bridge/adapters/claude.adapter.d.ts.map +1 -0
  103. package/esm/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  104. package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  105. package/esm/bridge/adapters/gemini.adapter.d.ts +64 -0
  106. package/esm/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  107. package/esm/bridge/adapters/generic.adapter.d.ts +56 -0
  108. package/esm/bridge/adapters/generic.adapter.d.ts.map +1 -0
  109. package/esm/bridge/adapters/index.d.ts +26 -0
  110. package/esm/bridge/adapters/index.d.ts.map +1 -0
  111. package/esm/bridge/adapters/openai.adapter.d.ts +65 -0
  112. package/esm/bridge/adapters/openai.adapter.d.ts.map +1 -0
  113. package/esm/bridge/core/adapter-registry.d.ts +122 -0
  114. package/esm/bridge/core/adapter-registry.d.ts.map +1 -0
  115. package/esm/bridge/core/bridge-factory.d.ts +199 -0
  116. package/esm/bridge/core/bridge-factory.d.ts.map +1 -0
  117. package/esm/bridge/core/index.d.ts +10 -0
  118. package/esm/bridge/core/index.d.ts.map +1 -0
  119. package/esm/bridge/index.d.ts +62 -0
  120. package/esm/bridge/index.d.ts.map +1 -0
  121. package/esm/bridge/index.js +2487 -0
  122. package/esm/bridge/runtime/iife-generator.d.ts +62 -0
  123. package/esm/bridge/runtime/iife-generator.d.ts.map +1 -0
  124. package/esm/bridge/runtime/index.d.ts +10 -0
  125. package/esm/bridge/runtime/index.d.ts.map +1 -0
  126. package/esm/bridge/types.d.ts +386 -0
  127. package/esm/bridge/types.d.ts.map +1 -0
  128. package/esm/bundler/bundler.d.ts +208 -0
  129. package/esm/bundler/bundler.d.ts.map +1 -0
  130. package/esm/bundler/cache.d.ts +173 -0
  131. package/esm/bundler/cache.d.ts.map +1 -0
  132. package/esm/bundler/file-cache/component-builder.d.ts +167 -0
  133. package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
  134. package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
  135. package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  136. package/esm/bundler/file-cache/index.d.ts +12 -0
  137. package/esm/bundler/file-cache/index.d.ts.map +1 -0
  138. package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
  139. package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  140. package/esm/bundler/file-cache/storage/index.d.ts +11 -0
  141. package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
  142. package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
  143. package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
  144. package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
  145. package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
  146. package/esm/bundler/index.d.ts +43 -0
  147. package/esm/bundler/index.d.ts.map +1 -0
  148. package/esm/bundler/index.js +3640 -0
  149. package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
  150. package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  151. package/esm/bundler/sandbox/executor.d.ts +14 -0
  152. package/esm/bundler/sandbox/executor.d.ts.map +1 -0
  153. package/esm/bundler/sandbox/policy.d.ts +62 -0
  154. package/esm/bundler/sandbox/policy.d.ts.map +1 -0
  155. package/esm/bundler/types.d.ts +702 -0
  156. package/esm/bundler/types.d.ts.map +1 -0
  157. package/esm/components/alert.d.ts +66 -0
  158. package/esm/components/alert.d.ts.map +1 -0
  159. package/esm/components/alert.schema.d.ts +98 -0
  160. package/esm/components/alert.schema.d.ts.map +1 -0
  161. package/esm/components/avatar.d.ts +77 -0
  162. package/esm/components/avatar.d.ts.map +1 -0
  163. package/esm/components/avatar.schema.d.ts +170 -0
  164. package/esm/components/avatar.schema.d.ts.map +1 -0
  165. package/esm/components/badge.d.ts +64 -0
  166. package/esm/components/badge.d.ts.map +1 -0
  167. package/esm/components/badge.schema.d.ts +91 -0
  168. package/esm/components/badge.schema.d.ts.map +1 -0
  169. package/esm/components/button.d.ts +100 -0
  170. package/esm/components/button.d.ts.map +1 -0
  171. package/esm/components/button.schema.d.ts +120 -0
  172. package/esm/components/button.schema.d.ts.map +1 -0
  173. package/esm/components/card.d.ts +53 -0
  174. package/esm/components/card.d.ts.map +1 -0
  175. package/esm/components/card.schema.d.ts +93 -0
  176. package/esm/components/card.schema.d.ts.map +1 -0
  177. package/esm/components/form.d.ts +212 -0
  178. package/esm/components/form.d.ts.map +1 -0
  179. package/esm/components/form.schema.d.ts +365 -0
  180. package/esm/components/form.schema.d.ts.map +1 -0
  181. package/esm/components/index.d.ts +29 -0
  182. package/esm/components/index.d.ts.map +1 -0
  183. package/esm/components/index.js +2396 -0
  184. package/esm/components/list.d.ts +121 -0
  185. package/esm/components/list.d.ts.map +1 -0
  186. package/esm/components/list.schema.d.ts +129 -0
  187. package/esm/components/list.schema.d.ts.map +1 -0
  188. package/esm/components/modal.d.ts +100 -0
  189. package/esm/components/modal.d.ts.map +1 -0
  190. package/esm/components/modal.schema.d.ts +151 -0
  191. package/esm/components/modal.schema.d.ts.map +1 -0
  192. package/esm/components/table.d.ts +91 -0
  193. package/esm/components/table.d.ts.map +1 -0
  194. package/esm/components/table.schema.d.ts +123 -0
  195. package/esm/components/table.schema.d.ts.map +1 -0
  196. package/esm/index.d.ts +40 -0
  197. package/esm/index.d.ts.map +1 -0
  198. package/esm/index.js +8326 -0
  199. package/esm/layouts/base.d.ts +86 -0
  200. package/esm/layouts/base.d.ts.map +1 -0
  201. package/esm/layouts/index.d.ts +8 -0
  202. package/esm/layouts/index.d.ts.map +1 -0
  203. package/esm/layouts/index.js +409 -0
  204. package/esm/layouts/presets.d.ts +134 -0
  205. package/esm/layouts/presets.d.ts.map +1 -0
  206. package/esm/package.json +72 -0
  207. package/esm/pages/consent.d.ts +117 -0
  208. package/esm/pages/consent.d.ts.map +1 -0
  209. package/esm/pages/error.d.ts +101 -0
  210. package/esm/pages/error.d.ts.map +1 -0
  211. package/esm/pages/index.d.ts +9 -0
  212. package/esm/pages/index.d.ts.map +1 -0
  213. package/esm/pages/index.js +1036 -0
  214. package/esm/react/Alert.d.ts +101 -0
  215. package/esm/react/Alert.d.ts.map +1 -0
  216. package/esm/react/Badge.d.ts +100 -0
  217. package/esm/react/Badge.d.ts.map +1 -0
  218. package/esm/react/Button.d.ts +108 -0
  219. package/esm/react/Button.d.ts.map +1 -0
  220. package/esm/react/Card.d.ts +103 -0
  221. package/esm/react/Card.d.ts.map +1 -0
  222. package/esm/react/hooks/context.d.ts +179 -0
  223. package/esm/react/hooks/context.d.ts.map +1 -0
  224. package/esm/react/hooks/index.d.ts +42 -0
  225. package/esm/react/hooks/index.d.ts.map +1 -0
  226. package/esm/react/hooks/tools.d.ts +284 -0
  227. package/esm/react/hooks/tools.d.ts.map +1 -0
  228. package/esm/react/index.d.ts +80 -0
  229. package/esm/react/index.d.ts.map +1 -0
  230. package/esm/react/index.js +3124 -0
  231. package/esm/react/types.d.ts +105 -0
  232. package/esm/react/types.d.ts.map +1 -0
  233. package/esm/react/utils.d.ts +43 -0
  234. package/esm/react/utils.d.ts.map +1 -0
  235. package/esm/render/index.d.ts +8 -0
  236. package/esm/render/index.d.ts.map +1 -0
  237. package/esm/render/index.js +45 -0
  238. package/esm/render/prerender.d.ts +57 -0
  239. package/esm/render/prerender.d.ts.map +1 -0
  240. package/esm/renderers/index.d.ts +21 -0
  241. package/esm/renderers/index.d.ts.map +1 -0
  242. package/esm/renderers/index.js +381 -0
  243. package/esm/renderers/react.adapter.d.ts +70 -0
  244. package/esm/renderers/react.adapter.d.ts.map +1 -0
  245. package/esm/renderers/react.renderer.d.ts +96 -0
  246. package/esm/renderers/react.renderer.d.ts.map +1 -0
  247. package/esm/universal/UniversalApp.d.ts +108 -0
  248. package/esm/universal/UniversalApp.d.ts.map +1 -0
  249. package/esm/universal/cached-runtime.d.ts +115 -0
  250. package/esm/universal/cached-runtime.d.ts.map +1 -0
  251. package/esm/universal/context.d.ts +122 -0
  252. package/esm/universal/context.d.ts.map +1 -0
  253. package/esm/universal/index.d.ts +57 -0
  254. package/esm/universal/index.d.ts.map +1 -0
  255. package/esm/universal/index.js +1755 -0
  256. package/esm/universal/renderers/html.renderer.d.ts +37 -0
  257. package/esm/universal/renderers/html.renderer.d.ts.map +1 -0
  258. package/esm/universal/renderers/index.d.ts +112 -0
  259. package/esm/universal/renderers/index.d.ts.map +1 -0
  260. package/esm/universal/renderers/markdown.renderer.d.ts +33 -0
  261. package/esm/universal/renderers/markdown.renderer.d.ts.map +1 -0
  262. package/esm/universal/renderers/mdx.renderer.d.ts +38 -0
  263. package/esm/universal/renderers/mdx.renderer.d.ts.map +1 -0
  264. package/esm/universal/renderers/react.renderer.d.ts +46 -0
  265. package/esm/universal/renderers/react.renderer.d.ts.map +1 -0
  266. package/esm/universal/runtime-builder.d.ts +33 -0
  267. package/esm/universal/runtime-builder.d.ts.map +1 -0
  268. package/esm/universal/store.d.ts +135 -0
  269. package/esm/universal/store.d.ts.map +1 -0
  270. package/esm/universal/types.d.ts +199 -0
  271. package/esm/universal/types.d.ts.map +1 -0
  272. package/esm/web-components/core/attribute-parser.d.ts +82 -0
  273. package/esm/web-components/core/attribute-parser.d.ts.map +1 -0
  274. package/esm/web-components/core/base-element.d.ts +197 -0
  275. package/esm/web-components/core/base-element.d.ts.map +1 -0
  276. package/esm/web-components/core/index.d.ts +9 -0
  277. package/esm/web-components/core/index.d.ts.map +1 -0
  278. package/esm/web-components/elements/fmcp-alert.d.ts +46 -0
  279. package/esm/web-components/elements/fmcp-alert.d.ts.map +1 -0
  280. package/esm/web-components/elements/fmcp-badge.d.ts +47 -0
  281. package/esm/web-components/elements/fmcp-badge.d.ts.map +1 -0
  282. package/esm/web-components/elements/fmcp-button.d.ts +117 -0
  283. package/esm/web-components/elements/fmcp-button.d.ts.map +1 -0
  284. package/esm/web-components/elements/fmcp-card.d.ts +53 -0
  285. package/esm/web-components/elements/fmcp-card.d.ts.map +1 -0
  286. package/esm/web-components/elements/fmcp-input.d.ts +96 -0
  287. package/esm/web-components/elements/fmcp-input.d.ts.map +1 -0
  288. package/esm/web-components/elements/fmcp-select.d.ts +100 -0
  289. package/esm/web-components/elements/fmcp-select.d.ts.map +1 -0
  290. package/esm/web-components/elements/index.d.ts +13 -0
  291. package/esm/web-components/elements/index.d.ts.map +1 -0
  292. package/esm/web-components/index.d.ts +50 -0
  293. package/esm/web-components/index.d.ts.map +1 -0
  294. package/esm/web-components/index.js +1993 -0
  295. package/esm/web-components/register.d.ts +57 -0
  296. package/esm/web-components/register.d.ts.map +1 -0
  297. package/esm/web-components/types.d.ts +122 -0
  298. package/esm/web-components/types.d.ts.map +1 -0
  299. package/esm/widgets/index.d.ts +8 -0
  300. package/esm/widgets/index.d.ts.map +1 -0
  301. package/esm/widgets/index.js +883 -0
  302. package/esm/widgets/progress.d.ts +133 -0
  303. package/esm/widgets/progress.d.ts.map +1 -0
  304. package/esm/widgets/resource.d.ts +163 -0
  305. package/esm/widgets/resource.d.ts.map +1 -0
  306. package/index.d.ts +40 -0
  307. package/index.d.ts.map +1 -0
  308. package/index.js +8526 -0
  309. package/layouts/base.d.ts +86 -0
  310. package/layouts/base.d.ts.map +1 -0
  311. package/layouts/index.d.ts +8 -0
  312. package/layouts/index.d.ts.map +1 -0
  313. package/layouts/index.js +437 -0
  314. package/layouts/presets.d.ts +134 -0
  315. package/layouts/presets.d.ts.map +1 -0
  316. package/package.json +33 -110
  317. package/pages/consent.d.ts +117 -0
  318. package/pages/consent.d.ts.map +1 -0
  319. package/pages/error.d.ts +101 -0
  320. package/pages/error.d.ts.map +1 -0
  321. package/pages/index.d.ts +9 -0
  322. package/pages/index.d.ts.map +1 -0
  323. package/pages/index.js +1065 -0
  324. package/react/Alert.d.ts +101 -0
  325. package/react/Alert.d.ts.map +1 -0
  326. package/react/Badge.d.ts +100 -0
  327. package/react/Badge.d.ts.map +1 -0
  328. package/react/Button.d.ts +108 -0
  329. package/react/Button.d.ts.map +1 -0
  330. package/react/Card.d.ts +103 -0
  331. package/react/Card.d.ts.map +1 -0
  332. package/react/hooks/context.d.ts +179 -0
  333. package/react/hooks/context.d.ts.map +1 -0
  334. package/react/hooks/index.d.ts +42 -0
  335. package/react/hooks/index.d.ts.map +1 -0
  336. package/react/hooks/tools.d.ts +284 -0
  337. package/react/hooks/tools.d.ts.map +1 -0
  338. package/react/index.d.ts +80 -0
  339. package/react/index.d.ts.map +1 -0
  340. package/react/index.js +3160 -0
  341. package/react/types.d.ts +105 -0
  342. package/react/types.d.ts.map +1 -0
  343. package/react/utils.d.ts +43 -0
  344. package/react/utils.d.ts.map +1 -0
  345. package/render/index.d.ts +8 -0
  346. package/render/index.d.ts.map +1 -0
  347. package/render/index.js +77 -0
  348. package/render/prerender.d.ts +57 -0
  349. package/render/prerender.d.ts.map +1 -0
  350. package/renderers/index.d.ts +21 -0
  351. package/renderers/index.d.ts.map +1 -0
  352. package/renderers/index.js +416 -0
  353. package/renderers/react.adapter.d.ts +70 -0
  354. package/renderers/react.adapter.d.ts.map +1 -0
  355. package/renderers/react.renderer.d.ts +96 -0
  356. package/renderers/react.renderer.d.ts.map +1 -0
  357. package/universal/UniversalApp.d.ts +108 -0
  358. package/universal/UniversalApp.d.ts.map +1 -0
  359. package/universal/cached-runtime.d.ts +115 -0
  360. package/universal/cached-runtime.d.ts.map +1 -0
  361. package/universal/context.d.ts +122 -0
  362. package/universal/context.d.ts.map +1 -0
  363. package/universal/index.d.ts +57 -0
  364. package/universal/index.d.ts.map +1 -0
  365. package/universal/index.js +1841 -0
  366. package/universal/renderers/html.renderer.d.ts +37 -0
  367. package/universal/renderers/html.renderer.d.ts.map +1 -0
  368. package/universal/renderers/index.d.ts +112 -0
  369. package/universal/renderers/index.d.ts.map +1 -0
  370. package/universal/renderers/markdown.renderer.d.ts +33 -0
  371. package/universal/renderers/markdown.renderer.d.ts.map +1 -0
  372. package/universal/renderers/mdx.renderer.d.ts +38 -0
  373. package/universal/renderers/mdx.renderer.d.ts.map +1 -0
  374. package/universal/renderers/react.renderer.d.ts +46 -0
  375. package/universal/renderers/react.renderer.d.ts.map +1 -0
  376. package/universal/runtime-builder.d.ts +33 -0
  377. package/universal/runtime-builder.d.ts.map +1 -0
  378. package/universal/store.d.ts +135 -0
  379. package/universal/store.d.ts.map +1 -0
  380. package/universal/types.d.ts +199 -0
  381. package/universal/types.d.ts.map +1 -0
  382. package/web-components/core/attribute-parser.d.ts +82 -0
  383. package/web-components/core/attribute-parser.d.ts.map +1 -0
  384. package/web-components/core/base-element.d.ts +197 -0
  385. package/web-components/core/base-element.d.ts.map +1 -0
  386. package/web-components/core/index.d.ts +9 -0
  387. package/web-components/core/index.d.ts.map +1 -0
  388. package/web-components/elements/fmcp-alert.d.ts +46 -0
  389. package/web-components/elements/fmcp-alert.d.ts.map +1 -0
  390. package/web-components/elements/fmcp-badge.d.ts +47 -0
  391. package/web-components/elements/fmcp-badge.d.ts.map +1 -0
  392. package/web-components/elements/fmcp-button.d.ts +117 -0
  393. package/web-components/elements/fmcp-button.d.ts.map +1 -0
  394. package/web-components/elements/fmcp-card.d.ts +53 -0
  395. package/web-components/elements/fmcp-card.d.ts.map +1 -0
  396. package/web-components/elements/fmcp-input.d.ts +96 -0
  397. package/web-components/elements/fmcp-input.d.ts.map +1 -0
  398. package/web-components/elements/fmcp-select.d.ts +100 -0
  399. package/web-components/elements/fmcp-select.d.ts.map +1 -0
  400. package/web-components/elements/index.d.ts +13 -0
  401. package/web-components/elements/index.d.ts.map +1 -0
  402. package/web-components/index.d.ts +50 -0
  403. package/web-components/index.d.ts.map +1 -0
  404. package/web-components/index.js +2028 -0
  405. package/web-components/register.d.ts +57 -0
  406. package/web-components/register.d.ts.map +1 -0
  407. package/web-components/types.d.ts +122 -0
  408. package/web-components/types.d.ts.map +1 -0
  409. package/widgets/index.d.ts +8 -0
  410. package/widgets/index.d.ts.map +1 -0
  411. package/widgets/index.js +910 -0
  412. package/widgets/progress.d.ts +133 -0
  413. package/widgets/progress.d.ts.map +1 -0
  414. package/widgets/resource.d.ts +163 -0
  415. package/widgets/resource.d.ts.map +1 -0
  416. package/src/adapters/index.d.ts +0 -10
  417. package/src/adapters/index.js +0 -18
  418. package/src/adapters/index.js.map +0 -1
  419. package/src/adapters/platform-meta.d.ts +0 -165
  420. package/src/adapters/platform-meta.js +0 -310
  421. package/src/adapters/platform-meta.js.map +0 -1
  422. package/src/base-template/bridge.d.ts +0 -89
  423. package/src/base-template/bridge.js +0 -452
  424. package/src/base-template/bridge.js.map +0 -1
  425. package/src/base-template/default-base-template.d.ts +0 -91
  426. package/src/base-template/default-base-template.js +0 -435
  427. package/src/base-template/default-base-template.js.map +0 -1
  428. package/src/base-template/index.d.ts +0 -14
  429. package/src/base-template/index.js +0 -30
  430. package/src/base-template/index.js.map +0 -1
  431. package/src/base-template/polyfills.d.ts +0 -30
  432. package/src/base-template/polyfills.js +0 -190
  433. package/src/base-template/polyfills.js.map +0 -1
  434. package/src/base-template/theme-styles.d.ts +0 -73
  435. package/src/base-template/theme-styles.js +0 -95
  436. package/src/base-template/theme-styles.js.map +0 -1
  437. package/src/bridge/adapters/base-adapter.d.ts +0 -103
  438. package/src/bridge/adapters/base-adapter.js +0 -314
  439. package/src/bridge/adapters/base-adapter.js.map +0 -1
  440. package/src/bridge/adapters/claude.adapter.d.ts +0 -66
  441. package/src/bridge/adapters/claude.adapter.js +0 -145
  442. package/src/bridge/adapters/claude.adapter.js.map +0 -1
  443. package/src/bridge/adapters/ext-apps.adapter.d.ts +0 -142
  444. package/src/bridge/adapters/ext-apps.adapter.js +0 -416
  445. package/src/bridge/adapters/ext-apps.adapter.js.map +0 -1
  446. package/src/bridge/adapters/gemini.adapter.d.ts +0 -63
  447. package/src/bridge/adapters/gemini.adapter.js +0 -160
  448. package/src/bridge/adapters/gemini.adapter.js.map +0 -1
  449. package/src/bridge/adapters/generic.adapter.d.ts +0 -55
  450. package/src/bridge/adapters/generic.adapter.js +0 -108
  451. package/src/bridge/adapters/generic.adapter.js.map +0 -1
  452. package/src/bridge/adapters/index.d.ts +0 -25
  453. package/src/bridge/adapters/index.js +0 -65
  454. package/src/bridge/adapters/index.js.map +0 -1
  455. package/src/bridge/adapters/openai.adapter.d.ts +0 -64
  456. package/src/bridge/adapters/openai.adapter.js +0 -194
  457. package/src/bridge/adapters/openai.adapter.js.map +0 -1
  458. package/src/bridge/core/adapter-registry.d.ts +0 -121
  459. package/src/bridge/core/adapter-registry.js +0 -271
  460. package/src/bridge/core/adapter-registry.js.map +0 -1
  461. package/src/bridge/core/bridge-factory.d.ts +0 -198
  462. package/src/bridge/core/bridge-factory.js +0 -428
  463. package/src/bridge/core/bridge-factory.js.map +0 -1
  464. package/src/bridge/core/index.d.ts +0 -9
  465. package/src/bridge/core/index.js +0 -22
  466. package/src/bridge/core/index.js.map +0 -1
  467. package/src/bridge/index.d.ts +0 -61
  468. package/src/bridge/index.js +0 -94
  469. package/src/bridge/index.js.map +0 -1
  470. package/src/bridge/runtime/iife-generator.d.ts +0 -61
  471. package/src/bridge/runtime/iife-generator.js +0 -940
  472. package/src/bridge/runtime/iife-generator.js.map +0 -1
  473. package/src/bridge/runtime/index.d.ts +0 -8
  474. package/src/bridge/runtime/index.js +0 -16
  475. package/src/bridge/runtime/index.js.map +0 -1
  476. package/src/bridge/types.d.ts +0 -385
  477. package/src/bridge/types.js +0 -11
  478. package/src/bridge/types.js.map +0 -1
  479. package/src/build/cdn-resources.d.ts +0 -140
  480. package/src/build/cdn-resources.js +0 -314
  481. package/src/build/cdn-resources.js.map +0 -1
  482. package/src/build/index.d.ts +0 -294
  483. package/src/build/index.js +0 -325
  484. package/src/build/index.js.map +0 -1
  485. package/src/build/widget-manifest.d.ts +0 -212
  486. package/src/build/widget-manifest.js +0 -652
  487. package/src/build/widget-manifest.js.map +0 -1
  488. package/src/bundler/bundler.d.ts +0 -110
  489. package/src/bundler/bundler.js +0 -432
  490. package/src/bundler/bundler.js.map +0 -1
  491. package/src/bundler/cache.d.ts +0 -172
  492. package/src/bundler/cache.js +0 -250
  493. package/src/bundler/cache.js.map +0 -1
  494. package/src/bundler/index.d.ts +0 -41
  495. package/src/bundler/index.js +0 -73
  496. package/src/bundler/index.js.map +0 -1
  497. package/src/bundler/sandbox/enclave-adapter.d.ts +0 -120
  498. package/src/bundler/sandbox/enclave-adapter.js +0 -339
  499. package/src/bundler/sandbox/enclave-adapter.js.map +0 -1
  500. package/src/bundler/sandbox/executor.d.ts +0 -13
  501. package/src/bundler/sandbox/executor.js +0 -22
  502. package/src/bundler/sandbox/executor.js.map +0 -1
  503. package/src/bundler/sandbox/policy.d.ts +0 -61
  504. package/src/bundler/sandbox/policy.js +0 -238
  505. package/src/bundler/sandbox/policy.js.map +0 -1
  506. package/src/bundler/types.d.ts +0 -347
  507. package/src/bundler/types.js +0 -132
  508. package/src/bundler/types.js.map +0 -1
  509. package/src/components/alert.d.ts +0 -71
  510. package/src/components/alert.js +0 -189
  511. package/src/components/alert.js.map +0 -1
  512. package/src/components/alert.schema.d.ts +0 -114
  513. package/src/components/alert.schema.js +0 -105
  514. package/src/components/alert.schema.js.map +0 -1
  515. package/src/components/avatar.d.ts +0 -76
  516. package/src/components/avatar.js +0 -176
  517. package/src/components/avatar.js.map +0 -1
  518. package/src/components/avatar.schema.d.ts +0 -169
  519. package/src/components/avatar.schema.js +0 -103
  520. package/src/components/avatar.schema.js.map +0 -1
  521. package/src/components/badge.d.ts +0 -70
  522. package/src/components/badge.js +0 -149
  523. package/src/components/badge.js.map +0 -1
  524. package/src/components/badge.schema.d.ts +0 -109
  525. package/src/components/badge.schema.js +0 -96
  526. package/src/components/badge.schema.js.map +0 -1
  527. package/src/components/button.d.ts +0 -111
  528. package/src/components/button.js +0 -336
  529. package/src/components/button.js.map +0 -1
  530. package/src/components/button.schema.d.ts +0 -148
  531. package/src/components/button.schema.js +0 -121
  532. package/src/components/button.schema.js.map +0 -1
  533. package/src/components/card.d.ts +0 -60
  534. package/src/components/card.js +0 -117
  535. package/src/components/card.js.map +0 -1
  536. package/src/components/card.schema.d.ts +0 -113
  537. package/src/components/card.schema.js +0 -98
  538. package/src/components/card.schema.js.map +0 -1
  539. package/src/components/form.d.ts +0 -239
  540. package/src/components/form.js +0 -420
  541. package/src/components/form.js.map +0 -1
  542. package/src/components/form.schema.d.ts +0 -441
  543. package/src/components/form.schema.js +0 -406
  544. package/src/components/form.schema.js.map +0 -1
  545. package/src/components/index.d.ts +0 -29
  546. package/src/components/index.js +0 -98
  547. package/src/components/index.js.map +0 -1
  548. package/src/components/list.d.ts +0 -127
  549. package/src/components/list.js +0 -279
  550. package/src/components/list.js.map +0 -1
  551. package/src/components/list.schema.d.ts +0 -134
  552. package/src/components/list.schema.js +0 -168
  553. package/src/components/list.schema.js.map +0 -1
  554. package/src/components/modal.d.ts +0 -111
  555. package/src/components/modal.js +0 -260
  556. package/src/components/modal.js.map +0 -1
  557. package/src/components/modal.schema.d.ts +0 -186
  558. package/src/components/modal.schema.js +0 -167
  559. package/src/components/modal.schema.js.map +0 -1
  560. package/src/components/table.d.ts +0 -105
  561. package/src/components/table.js +0 -283
  562. package/src/components/table.js.map +0 -1
  563. package/src/components/table.schema.d.ts +0 -159
  564. package/src/components/table.schema.js +0 -173
  565. package/src/components/table.schema.js.map +0 -1
  566. package/src/handlebars/helpers.d.ts +0 -348
  567. package/src/handlebars/helpers.js +0 -605
  568. package/src/handlebars/helpers.js.map +0 -1
  569. package/src/handlebars/index.d.ts +0 -193
  570. package/src/handlebars/index.js +0 -350
  571. package/src/handlebars/index.js.map +0 -1
  572. package/src/index.d.ts +0 -50
  573. package/src/index.js +0 -192
  574. package/src/index.js.map +0 -1
  575. package/src/layouts/base.d.ts +0 -88
  576. package/src/layouts/base.js +0 -227
  577. package/src/layouts/base.js.map +0 -1
  578. package/src/layouts/index.d.ts +0 -7
  579. package/src/layouts/index.js +0 -25
  580. package/src/layouts/index.js.map +0 -1
  581. package/src/layouts/presets.d.ts +0 -133
  582. package/src/layouts/presets.js +0 -277
  583. package/src/layouts/presets.js.map +0 -1
  584. package/src/pages/consent.d.ts +0 -116
  585. package/src/pages/consent.js +0 -218
  586. package/src/pages/consent.js.map +0 -1
  587. package/src/pages/error.d.ts +0 -100
  588. package/src/pages/error.js +0 -263
  589. package/src/pages/error.js.map +0 -1
  590. package/src/pages/index.d.ts +0 -8
  591. package/src/pages/index.js +0 -27
  592. package/src/pages/index.js.map +0 -1
  593. package/src/react/Alert.d.ts +0 -101
  594. package/src/react/Alert.js +0 -51
  595. package/src/react/Alert.js.map +0 -1
  596. package/src/react/Badge.d.ts +0 -100
  597. package/src/react/Badge.js +0 -55
  598. package/src/react/Badge.js.map +0 -1
  599. package/src/react/Button.d.ts +0 -108
  600. package/src/react/Button.js +0 -52
  601. package/src/react/Button.js.map +0 -1
  602. package/src/react/Card.d.ts +0 -103
  603. package/src/react/Card.js +0 -55
  604. package/src/react/Card.js.map +0 -1
  605. package/src/react/hooks/context.d.ts +0 -178
  606. package/src/react/hooks/context.js +0 -287
  607. package/src/react/hooks/context.js.map +0 -1
  608. package/src/react/hooks/index.d.ts +0 -41
  609. package/src/react/hooks/index.js +0 -61
  610. package/src/react/hooks/index.js.map +0 -1
  611. package/src/react/hooks/tools.d.ts +0 -283
  612. package/src/react/hooks/tools.js +0 -465
  613. package/src/react/hooks/tools.js.map +0 -1
  614. package/src/react/index.d.ts +0 -80
  615. package/src/react/index.js +0 -113
  616. package/src/react/index.js.map +0 -1
  617. package/src/react/types.d.ts +0 -105
  618. package/src/react/types.js +0 -12
  619. package/src/react/types.js.map +0 -1
  620. package/src/react/utils.d.ts +0 -42
  621. package/src/react/utils.js +0 -99
  622. package/src/react/utils.js.map +0 -1
  623. package/src/registry/index.d.ts +0 -45
  624. package/src/registry/index.js +0 -67
  625. package/src/registry/index.js.map +0 -1
  626. package/src/registry/render-template.d.ts +0 -86
  627. package/src/registry/render-template.js +0 -239
  628. package/src/registry/render-template.js.map +0 -1
  629. package/src/registry/tool-ui.registry.d.ts +0 -260
  630. package/src/registry/tool-ui.registry.js +0 -438
  631. package/src/registry/tool-ui.registry.js.map +0 -1
  632. package/src/registry/uri-utils.d.ts +0 -55
  633. package/src/registry/uri-utils.js +0 -97
  634. package/src/registry/uri-utils.js.map +0 -1
  635. package/src/render/index.d.ts +0 -7
  636. package/src/render/index.js +0 -14
  637. package/src/render/index.js.map +0 -1
  638. package/src/render/prerender.d.ts +0 -56
  639. package/src/render/prerender.js +0 -98
  640. package/src/render/prerender.js.map +0 -1
  641. package/src/renderers/cache.d.ts +0 -144
  642. package/src/renderers/cache.js +0 -240
  643. package/src/renderers/cache.js.map +0 -1
  644. package/src/renderers/html.renderer.d.ts +0 -122
  645. package/src/renderers/html.renderer.js +0 -204
  646. package/src/renderers/html.renderer.js.map +0 -1
  647. package/src/renderers/index.d.ts +0 -35
  648. package/src/renderers/index.js +0 -70
  649. package/src/renderers/index.js.map +0 -1
  650. package/src/renderers/mdx.renderer.d.ts +0 -119
  651. package/src/renderers/mdx.renderer.js +0 -305
  652. package/src/renderers/mdx.renderer.js.map +0 -1
  653. package/src/renderers/react.renderer.d.ts +0 -95
  654. package/src/renderers/react.renderer.js +0 -260
  655. package/src/renderers/react.renderer.js.map +0 -1
  656. package/src/renderers/registry.d.ts +0 -133
  657. package/src/renderers/registry.js +0 -232
  658. package/src/renderers/registry.js.map +0 -1
  659. package/src/renderers/types.d.ts +0 -341
  660. package/src/renderers/types.js +0 -9
  661. package/src/renderers/types.js.map +0 -1
  662. package/src/renderers/utils/detect.d.ts +0 -106
  663. package/src/renderers/utils/detect.js +0 -267
  664. package/src/renderers/utils/detect.js.map +0 -1
  665. package/src/renderers/utils/hash.d.ts +0 -39
  666. package/src/renderers/utils/hash.js +0 -75
  667. package/src/renderers/utils/hash.js.map +0 -1
  668. package/src/renderers/utils/index.d.ts +0 -8
  669. package/src/renderers/utils/index.js +0 -28
  670. package/src/renderers/utils/index.js.map +0 -1
  671. package/src/renderers/utils/transpiler.d.ts +0 -88
  672. package/src/renderers/utils/transpiler.js +0 -215
  673. package/src/renderers/utils/transpiler.js.map +0 -1
  674. package/src/runtime/adapters/html.adapter.d.ts +0 -58
  675. package/src/runtime/adapters/html.adapter.js +0 -131
  676. package/src/runtime/adapters/html.adapter.js.map +0 -1
  677. package/src/runtime/adapters/index.d.ts +0 -25
  678. package/src/runtime/adapters/index.js +0 -54
  679. package/src/runtime/adapters/index.js.map +0 -1
  680. package/src/runtime/adapters/mdx.adapter.d.ts +0 -72
  681. package/src/runtime/adapters/mdx.adapter.js +0 -241
  682. package/src/runtime/adapters/mdx.adapter.js.map +0 -1
  683. package/src/runtime/adapters/react.adapter.d.ts +0 -69
  684. package/src/runtime/adapters/react.adapter.js +0 -245
  685. package/src/runtime/adapters/react.adapter.js.map +0 -1
  686. package/src/runtime/adapters/types.d.ts +0 -94
  687. package/src/runtime/adapters/types.js +0 -11
  688. package/src/runtime/adapters/types.js.map +0 -1
  689. package/src/runtime/csp.d.ts +0 -37
  690. package/src/runtime/csp.js +0 -140
  691. package/src/runtime/csp.js.map +0 -1
  692. package/src/runtime/index.d.ts +0 -16
  693. package/src/runtime/index.js +0 -72
  694. package/src/runtime/index.js.map +0 -1
  695. package/src/runtime/mcp-bridge.d.ts +0 -100
  696. package/src/runtime/mcp-bridge.js +0 -581
  697. package/src/runtime/mcp-bridge.js.map +0 -1
  698. package/src/runtime/renderer-runtime.d.ts +0 -132
  699. package/src/runtime/renderer-runtime.js +0 -389
  700. package/src/runtime/renderer-runtime.js.map +0 -1
  701. package/src/runtime/sanitizer.d.ts +0 -171
  702. package/src/runtime/sanitizer.js +0 -318
  703. package/src/runtime/sanitizer.js.map +0 -1
  704. package/src/runtime/types.d.ts +0 -414
  705. package/src/runtime/types.js +0 -12
  706. package/src/runtime/types.js.map +0 -1
  707. package/src/runtime/wrapper.d.ts +0 -375
  708. package/src/runtime/wrapper.js +0 -1793
  709. package/src/runtime/wrapper.js.map +0 -1
  710. package/src/styles/index.d.ts +0 -7
  711. package/src/styles/index.js +0 -11
  712. package/src/styles/index.js.map +0 -1
  713. package/src/styles/variants.d.ts +0 -50
  714. package/src/styles/variants.js +0 -175
  715. package/src/styles/variants.js.map +0 -1
  716. package/src/theme/cdn.d.ts +0 -194
  717. package/src/theme/cdn.js +0 -375
  718. package/src/theme/cdn.js.map +0 -1
  719. package/src/theme/index.d.ts +0 -17
  720. package/src/theme/index.js +0 -57
  721. package/src/theme/index.js.map +0 -1
  722. package/src/theme/platforms.d.ts +0 -106
  723. package/src/theme/platforms.js +0 -161
  724. package/src/theme/platforms.js.map +0 -1
  725. package/src/theme/presets/github-openai.d.ts +0 -49
  726. package/src/theme/presets/github-openai.js +0 -189
  727. package/src/theme/presets/github-openai.js.map +0 -1
  728. package/src/theme/presets/index.d.ts +0 -10
  729. package/src/theme/presets/index.js +0 -17
  730. package/src/theme/presets/index.js.map +0 -1
  731. package/src/theme/theme.d.ts +0 -395
  732. package/src/theme/theme.js +0 -332
  733. package/src/theme/theme.js.map +0 -1
  734. package/src/tool-template/builder.d.ts +0 -212
  735. package/src/tool-template/builder.js +0 -397
  736. package/src/tool-template/builder.js.map +0 -1
  737. package/src/tool-template/index.d.ts +0 -15
  738. package/src/tool-template/index.js +0 -38
  739. package/src/tool-template/index.js.map +0 -1
  740. package/src/types/index.d.ts +0 -13
  741. package/src/types/index.js +0 -26
  742. package/src/types/index.js.map +0 -1
  743. package/src/types/ui-config.d.ts +0 -357
  744. package/src/types/ui-config.js +0 -12
  745. package/src/types/ui-config.js.map +0 -1
  746. package/src/types/ui-runtime.d.ts +0 -965
  747. package/src/types/ui-runtime.js +0 -117
  748. package/src/types/ui-runtime.js.map +0 -1
  749. package/src/validation/error-box.d.ts +0 -55
  750. package/src/validation/error-box.js +0 -75
  751. package/src/validation/error-box.js.map +0 -1
  752. package/src/validation/index.d.ts +0 -12
  753. package/src/validation/index.js +0 -21
  754. package/src/validation/index.js.map +0 -1
  755. package/src/validation/wrapper.d.ts +0 -96
  756. package/src/validation/wrapper.js +0 -117
  757. package/src/validation/wrapper.js.map +0 -1
  758. package/src/web-components/core/attribute-parser.d.ts +0 -85
  759. package/src/web-components/core/attribute-parser.js +0 -189
  760. package/src/web-components/core/attribute-parser.js.map +0 -1
  761. package/src/web-components/core/base-element.d.ts +0 -197
  762. package/src/web-components/core/base-element.js +0 -289
  763. package/src/web-components/core/base-element.js.map +0 -1
  764. package/src/web-components/core/index.d.ts +0 -8
  765. package/src/web-components/core/index.js +0 -18
  766. package/src/web-components/core/index.js.map +0 -1
  767. package/src/web-components/elements/fmcp-alert.d.ts +0 -45
  768. package/src/web-components/elements/fmcp-alert.js +0 -93
  769. package/src/web-components/elements/fmcp-alert.js.map +0 -1
  770. package/src/web-components/elements/fmcp-badge.d.ts +0 -46
  771. package/src/web-components/elements/fmcp-badge.js +0 -99
  772. package/src/web-components/elements/fmcp-badge.js.map +0 -1
  773. package/src/web-components/elements/fmcp-button.d.ts +0 -124
  774. package/src/web-components/elements/fmcp-button.js +0 -233
  775. package/src/web-components/elements/fmcp-button.js.map +0 -1
  776. package/src/web-components/elements/fmcp-card.d.ts +0 -52
  777. package/src/web-components/elements/fmcp-card.js +0 -115
  778. package/src/web-components/elements/fmcp-card.js.map +0 -1
  779. package/src/web-components/elements/fmcp-input.d.ts +0 -95
  780. package/src/web-components/elements/fmcp-input.js +0 -248
  781. package/src/web-components/elements/fmcp-input.js.map +0 -1
  782. package/src/web-components/elements/fmcp-select.d.ts +0 -99
  783. package/src/web-components/elements/fmcp-select.js +0 -243
  784. package/src/web-components/elements/fmcp-select.js.map +0 -1
  785. package/src/web-components/elements/index.d.ts +0 -12
  786. package/src/web-components/elements/index.js +0 -34
  787. package/src/web-components/elements/index.js.map +0 -1
  788. package/src/web-components/index.d.ts +0 -49
  789. package/src/web-components/index.js +0 -75
  790. package/src/web-components/index.js.map +0 -1
  791. package/src/web-components/register.d.ts +0 -56
  792. package/src/web-components/register.js +0 -80
  793. package/src/web-components/register.js.map +0 -1
  794. package/src/web-components/types.d.ts +0 -121
  795. package/src/web-components/types.js +0 -25
  796. package/src/web-components/types.js.map +0 -1
  797. package/src/widgets/index.d.ts +0 -7
  798. package/src/widgets/index.js +0 -24
  799. package/src/widgets/index.js.map +0 -1
  800. package/src/widgets/progress.d.ts +0 -132
  801. package/src/widgets/progress.js +0 -303
  802. package/src/widgets/progress.js.map +0 -1
  803. package/src/widgets/resource.d.ts +0 -162
  804. package/src/widgets/resource.js +0 -340
  805. package/src/widgets/resource.js.map +0 -1
@@ -1,218 +0,0 @@
1
- "use strict";
2
- /**
3
- * OAuth Consent Page Template
4
- *
5
- * OAuth/OpenID Connect consent page for authorization flows.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.consentPage = consentPage;
9
- exports.consentSuccessPage = consentSuccessPage;
10
- exports.consentDeniedPage = consentDeniedPage;
11
- const layouts_1 = require("../layouts");
12
- const button_1 = require("../components/button");
13
- const list_1 = require("../components/list");
14
- const form_1 = require("../components/form");
15
- const alert_1 = require("../components/alert");
16
- const base_1 = require("../layouts/base");
17
- // ============================================
18
- // Consent Page Builder
19
- // ============================================
20
- /**
21
- * Build an OAuth consent page
22
- */
23
- function consentPage(options) {
24
- const { client, user, permissions, approveUrl, denyUrl, csrfToken, state, redirectUri, responseType, nonce, codeChallenge, codeChallengeMethod, error, layout = {}, warningMessage, allowScopeSelection = false, approveText = 'Allow', denyText = 'Deny', } = options;
25
- // Error alert
26
- const errorAlert = error ? (0, alert_1.alert)(error, { variant: 'danger', dismissible: true }) : '';
27
- // Warning for unverified apps
28
- const unverifiedWarning = !client.verified
29
- ? (0, alert_1.alert)(warningMessage || 'This application has not been verified. Only authorize applications you trust.', {
30
- variant: 'warning',
31
- title: 'Unverified Application',
32
- })
33
- : '';
34
- // Client header
35
- const clientHeader = `
36
- <div class="text-center mb-6">
37
- ${client.icon
38
- ? `<img src="${(0, base_1.escapeHtml)(client.icon)}" alt="${(0, base_1.escapeHtml)(client.name)}" class="w-16 h-16 rounded-xl mx-auto mb-4 shadow-md">`
39
- : `<div class="inline-flex items-center justify-center w-16 h-16 rounded-xl bg-gradient-to-br from-primary to-secondary text-white font-bold text-2xl mx-auto mb-4 shadow-md">
40
- ${(0, base_1.escapeHtml)(client.name.charAt(0).toUpperCase())}
41
- </div>`}
42
- <h1 class="text-xl font-bold text-text-primary">
43
- ${client.verified
44
- ? `<span class="inline-flex items-center gap-1">
45
- ${(0, base_1.escapeHtml)(client.name)}
46
- <svg class="w-5 h-5 text-primary" fill="currentColor" viewBox="0 0 20 20">
47
- <path fill-rule="evenodd" d="M6.267 3.455a3.066 3.066 0 001.745-.723 3.066 3.066 0 013.976 0 3.066 3.066 0 001.745.723 3.066 3.066 0 012.812 2.812c.051.643.304 1.254.723 1.745a3.066 3.066 0 010 3.976 3.066 3.066 0 00-.723 1.745 3.066 3.066 0 01-2.812 2.812 3.066 3.066 0 00-1.745.723 3.066 3.066 0 01-3.976 0 3.066 3.066 0 00-1.745-.723 3.066 3.066 0 01-2.812-2.812 3.066 3.066 0 00-.723-1.745 3.066 3.066 0 010-3.976 3.066 3.066 0 00.723-1.745 3.066 3.066 0 012.812-2.812zm7.44 5.252a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/>
48
- </svg>
49
- </span>`
50
- : (0, base_1.escapeHtml)(client.name)}
51
- </h1>
52
- <p class="text-text-secondary mt-1">wants to access your account</p>
53
- </div>
54
- `;
55
- // User info section
56
- const userSection = user
57
- ? `
58
- <div class="flex items-center gap-3 p-4 bg-gray-50 rounded-lg mb-6">
59
- ${user.avatar
60
- ? `<img src="${(0, base_1.escapeHtml)(user.avatar)}" class="w-12 h-12 rounded-full">`
61
- : `<div class="w-12 h-12 rounded-full bg-primary text-white flex items-center justify-center font-semibold text-lg">
62
- ${(0, base_1.escapeHtml)((user.name || user.email || 'U').charAt(0).toUpperCase())}
63
- </div>`}
64
- <div class="flex-1 min-w-0">
65
- ${user.name ? `<div class="font-medium text-text-primary truncate">${(0, base_1.escapeHtml)(user.name)}</div>` : ''}
66
- ${user.email ? `<div class="text-sm text-text-secondary truncate">${(0, base_1.escapeHtml)(user.email)}</div>` : ''}
67
- </div>
68
- <a href="/login?prompt=select_account" class="text-sm text-primary hover:text-primary/80">
69
- Switch account
70
- </a>
71
- </div>
72
- `
73
- : '';
74
- // Permissions section
75
- const permissionsSection = `
76
- <div class="mb-6">
77
- <h3 class="font-medium text-text-primary mb-3">This will allow ${(0, base_1.escapeHtml)(client.name)} to:</h3>
78
- ${(0, list_1.permissionList)(permissions, {
79
- checkable: allowScopeSelection,
80
- inputName: 'scope',
81
- })}
82
- </div>
83
- `;
84
- // Hidden form fields
85
- const hiddenFields = [
86
- csrfToken ? (0, form_1.csrfInput)(csrfToken) : '',
87
- state ? (0, form_1.hiddenInput)('state', state) : '',
88
- redirectUri ? (0, form_1.hiddenInput)('redirect_uri', redirectUri) : '',
89
- responseType ? (0, form_1.hiddenInput)('response_type', responseType) : '',
90
- nonce ? (0, form_1.hiddenInput)('nonce', nonce) : '',
91
- codeChallenge ? (0, form_1.hiddenInput)('code_challenge', codeChallenge) : '',
92
- codeChallengeMethod ? (0, form_1.hiddenInput)('code_challenge_method', codeChallengeMethod) : '',
93
- (0, form_1.hiddenInput)('client_id', client.clientId),
94
- // Include all scopes if not selectable
95
- !allowScopeSelection ? permissions.map((p) => (0, form_1.hiddenInput)('scope[]', p.scope)).join('\n') : '',
96
- ]
97
- .filter(Boolean)
98
- .join('\n');
99
- // Action buttons
100
- const actionsHtml = `
101
- <div class="flex gap-3 pt-4">
102
- <form action="${(0, base_1.escapeHtml)(denyUrl || approveUrl)}" method="post" class="flex-1">
103
- ${hiddenFields}
104
- <input type="hidden" name="action" value="deny">
105
- ${(0, button_1.outlineButton)(denyText, { type: 'submit', fullWidth: true })}
106
- </form>
107
- <form action="${(0, base_1.escapeHtml)(approveUrl)}" method="post" class="flex-1">
108
- ${hiddenFields}
109
- <input type="hidden" name="action" value="approve">
110
- ${(0, button_1.primaryButton)(approveText, { type: 'submit', fullWidth: true })}
111
- </form>
112
- </div>
113
- `;
114
- // Privacy/Terms links
115
- const linksHtml = client.privacyUrl || client.termsUrl || client.websiteUrl
116
- ? `
117
- <div class="text-center text-xs text-text-secondary mt-6 space-x-3">
118
- ${client.websiteUrl
119
- ? `<a href="${(0, base_1.escapeHtml)(client.websiteUrl)}" target="_blank" rel="noopener" class="hover:text-primary">Website</a>`
120
- : ''}
121
- ${client.privacyUrl
122
- ? `<a href="${(0, base_1.escapeHtml)(client.privacyUrl)}" target="_blank" rel="noopener" class="hover:text-primary">Privacy Policy</a>`
123
- : ''}
124
- ${client.termsUrl
125
- ? `<a href="${(0, base_1.escapeHtml)(client.termsUrl)}" target="_blank" rel="noopener" class="hover:text-primary">Terms of Service</a>`
126
- : ''}
127
- </div>
128
- `
129
- : '';
130
- // Combine all content
131
- const content = `
132
- ${errorAlert}
133
- ${unverifiedWarning}
134
- ${clientHeader}
135
- ${userSection}
136
- ${permissionsSection}
137
- ${actionsHtml}
138
- ${linksHtml}
139
- `;
140
- return (0, layouts_1.consentLayout)(content, {
141
- title: `Authorize ${client.name}`,
142
- clientName: client.name,
143
- clientIcon: client.icon,
144
- userInfo: user,
145
- ...layout,
146
- });
147
- }
148
- /**
149
- * Build a consent success page
150
- */
151
- function consentSuccessPage(options) {
152
- const { client, redirectUrl, autoRedirectDelay = 3000, layout = {} } = options;
153
- const redirectScript = redirectUrl && autoRedirectDelay > 0
154
- ? `
155
- <script>
156
- setTimeout(() => {
157
- window.location.href = '${(0, base_1.escapeHtml)(redirectUrl)}';
158
- }, ${autoRedirectDelay});
159
- </script>
160
- `
161
- : '';
162
- const content = `
163
- <div class="text-center">
164
- <div class="inline-flex items-center justify-center w-16 h-16 rounded-full bg-success/10 mb-6">
165
- <svg class="w-8 h-8 text-success" fill="none" stroke="currentColor" viewBox="0 0 24 24">
166
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
167
- </svg>
168
- </div>
169
- <h1 class="text-2xl font-bold text-text-primary mb-2">Authorization Successful</h1>
170
- <p class="text-text-secondary mb-4">
171
- You have authorized <strong>${(0, base_1.escapeHtml)(client.name)}</strong> to access your account.
172
- </p>
173
- ${redirectUrl
174
- ? `<p class="text-sm text-text-secondary">Redirecting you back to ${(0, base_1.escapeHtml)(client.name)}...</p>`
175
- : ''}
176
- </div>
177
- ${redirectScript}
178
- `;
179
- return (0, layouts_1.consentLayout)(content, {
180
- title: 'Authorization Successful',
181
- clientName: client.name,
182
- clientIcon: client.icon,
183
- ...layout,
184
- });
185
- }
186
- /**
187
- * Build a consent denied page
188
- */
189
- function consentDeniedPage(options) {
190
- const { client, redirectUrl, layout = {} } = options;
191
- const content = `
192
- <div class="text-center">
193
- <div class="inline-flex items-center justify-center w-16 h-16 rounded-full bg-gray-100 mb-6">
194
- <svg class="w-8 h-8 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
195
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
196
- </svg>
197
- </div>
198
- <h1 class="text-2xl font-bold text-text-primary mb-2">Authorization Denied</h1>
199
- <p class="text-text-secondary mb-6">
200
- You denied <strong>${(0, base_1.escapeHtml)(client.name)}</strong> access to your account.
201
- </p>
202
- ${redirectUrl
203
- ? `
204
- <a href="${(0, base_1.escapeHtml)(redirectUrl)}" class="inline-block px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">
205
- Return to ${(0, base_1.escapeHtml)(client.name)}
206
- </a>
207
- `
208
- : ''}
209
- </div>
210
- `;
211
- return (0, layouts_1.consentLayout)(content, {
212
- title: 'Authorization Denied',
213
- clientName: client.name,
214
- clientIcon: client.icon,
215
- ...layout,
216
- });
217
- }
218
- //# sourceMappingURL=consent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consent.js","sourceRoot":"","sources":["../../../src/pages/consent.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * OAuth Consent Page Template\n *\n * OAuth/OpenID Connect consent page for authorization flows.\n */\n\nimport { consentLayout, type ConsentLayoutOptions } from '../layouts';\nimport { primaryButton, outlineButton, dangerButton } from '../components/button';\nimport { permissionList, type PermissionItem } from '../components/list';\nimport { form, formActions, csrfInput, hiddenInput } from '../components/form';\nimport { alert } from '../components/alert';\nimport { escapeHtml } from '../layouts/base';\n\n// ============================================\n// Consent Page Types\n// ============================================\n\n/**\n * Client/Application information\n */\nexport interface ClientInfo {\n /** Client ID */\n clientId: string;\n /** Client name */\n name: string;\n /** Client icon/logo URL */\n icon?: string;\n /** Client website URL */\n websiteUrl?: string;\n /** Privacy policy URL */\n privacyUrl?: string;\n /** Terms of service URL */\n termsUrl?: string;\n /** Verified client badge */\n verified?: boolean;\n}\n\n/**\n * User information\n */\nexport interface UserInfo {\n /** User ID */\n id?: string;\n /** User name */\n name?: string;\n /** User email */\n email?: string;\n /** Avatar URL */\n avatar?: string;\n}\n\n/**\n * Consent page options\n */\nexport interface ConsentPageOptions {\n /** Client/App requesting authorization */\n client: ClientInfo;\n /** Current user info */\n user?: UserInfo;\n /** Requested permissions/scopes */\n permissions: PermissionItem[];\n /** Form action URL for approval */\n approveUrl: string;\n /** Form action URL for denial (optional, uses approveUrl if not provided) */\n denyUrl?: string;\n /** CSRF token */\n csrfToken?: string;\n /** OAuth state parameter */\n state?: string;\n /** Redirect URI */\n redirectUri?: string;\n /** Response type */\n responseType?: string;\n /** Nonce */\n nonce?: string;\n /** Code challenge */\n codeChallenge?: string;\n /** Code challenge method */\n codeChallengeMethod?: string;\n /** Error message */\n error?: string;\n /** Layout options */\n layout?: Partial<ConsentLayoutOptions>;\n /** Custom warning message */\n warningMessage?: string;\n /** Allow partial scope selection */\n allowScopeSelection?: boolean;\n /** Custom approve button text */\n approveText?: string;\n /** Custom deny button text */\n denyText?: string;\n}\n\n// ============================================\n// Consent Page Builder\n// ============================================\n\n/**\n * Build an OAuth consent page\n */\nexport function consentPage(options: ConsentPageOptions): string {\n const {\n client,\n user,\n permissions,\n approveUrl,\n denyUrl,\n csrfToken,\n state,\n redirectUri,\n responseType,\n nonce,\n codeChallenge,\n codeChallengeMethod,\n error,\n layout = {},\n warningMessage,\n allowScopeSelection = false,\n approveText = 'Allow',\n denyText = 'Deny',\n } = options;\n\n // Error alert\n const errorAlert = error ? alert(error, { variant: 'danger', dismissible: true }) : '';\n\n // Warning for unverified apps\n const unverifiedWarning = !client.verified\n ? alert(warningMessage || 'This application has not been verified. Only authorize applications you trust.', {\n variant: 'warning',\n title: 'Unverified Application',\n })\n : '';\n\n // Client header\n const clientHeader = `\n <div class=\"text-center mb-6\">\n ${\n client.icon\n ? `<img src=\"${escapeHtml(client.icon)}\" alt=\"${escapeHtml(\n client.name,\n )}\" class=\"w-16 h-16 rounded-xl mx-auto mb-4 shadow-md\">`\n : `<div class=\"inline-flex items-center justify-center w-16 h-16 rounded-xl bg-gradient-to-br from-primary to-secondary text-white font-bold text-2xl mx-auto mb-4 shadow-md\">\n ${escapeHtml(client.name.charAt(0).toUpperCase())}\n </div>`\n }\n <h1 class=\"text-xl font-bold text-text-primary\">\n ${\n client.verified\n ? `<span class=\"inline-flex items-center gap-1\">\n ${escapeHtml(client.name)}\n <svg class=\"w-5 h-5 text-primary\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fill-rule=\"evenodd\" d=\"M6.267 3.455a3.066 3.066 0 001.745-.723 3.066 3.066 0 013.976 0 3.066 3.066 0 001.745.723 3.066 3.066 0 012.812 2.812c.051.643.304 1.254.723 1.745a3.066 3.066 0 010 3.976 3.066 3.066 0 00-.723 1.745 3.066 3.066 0 01-2.812 2.812 3.066 3.066 0 00-1.745.723 3.066 3.066 0 01-3.976 0 3.066 3.066 0 00-1.745-.723 3.066 3.066 0 01-2.812-2.812 3.066 3.066 0 00-.723-1.745 3.066 3.066 0 010-3.976 3.066 3.066 0 00.723-1.745 3.066 3.066 0 012.812-2.812zm7.44 5.252a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/>\n </svg>\n </span>`\n : escapeHtml(client.name)\n }\n </h1>\n <p class=\"text-text-secondary mt-1\">wants to access your account</p>\n </div>\n `;\n\n // User info section\n const userSection = user\n ? `\n <div class=\"flex items-center gap-3 p-4 bg-gray-50 rounded-lg mb-6\">\n ${\n user.avatar\n ? `<img src=\"${escapeHtml(user.avatar)}\" class=\"w-12 h-12 rounded-full\">`\n : `<div class=\"w-12 h-12 rounded-full bg-primary text-white flex items-center justify-center font-semibold text-lg\">\n ${escapeHtml((user.name || user.email || 'U').charAt(0).toUpperCase())}\n </div>`\n }\n <div class=\"flex-1 min-w-0\">\n ${user.name ? `<div class=\"font-medium text-text-primary truncate\">${escapeHtml(user.name)}</div>` : ''}\n ${user.email ? `<div class=\"text-sm text-text-secondary truncate\">${escapeHtml(user.email)}</div>` : ''}\n </div>\n <a href=\"/login?prompt=select_account\" class=\"text-sm text-primary hover:text-primary/80\">\n Switch account\n </a>\n </div>\n `\n : '';\n\n // Permissions section\n const permissionsSection = `\n <div class=\"mb-6\">\n <h3 class=\"font-medium text-text-primary mb-3\">This will allow ${escapeHtml(client.name)} to:</h3>\n ${permissionList(permissions, {\n checkable: allowScopeSelection,\n inputName: 'scope',\n })}\n </div>\n `;\n\n // Hidden form fields\n const hiddenFields = [\n csrfToken ? csrfInput(csrfToken) : '',\n state ? hiddenInput('state', state) : '',\n redirectUri ? hiddenInput('redirect_uri', redirectUri) : '',\n responseType ? hiddenInput('response_type', responseType) : '',\n nonce ? hiddenInput('nonce', nonce) : '',\n codeChallenge ? hiddenInput('code_challenge', codeChallenge) : '',\n codeChallengeMethod ? hiddenInput('code_challenge_method', codeChallengeMethod) : '',\n hiddenInput('client_id', client.clientId),\n // Include all scopes if not selectable\n !allowScopeSelection ? permissions.map((p) => hiddenInput('scope[]', p.scope)).join('\\n') : '',\n ]\n .filter(Boolean)\n .join('\\n');\n\n // Action buttons\n const actionsHtml = `\n <div class=\"flex gap-3 pt-4\">\n <form action=\"${escapeHtml(denyUrl || approveUrl)}\" method=\"post\" class=\"flex-1\">\n ${hiddenFields}\n <input type=\"hidden\" name=\"action\" value=\"deny\">\n ${outlineButton(denyText, { type: 'submit', fullWidth: true })}\n </form>\n <form action=\"${escapeHtml(approveUrl)}\" method=\"post\" class=\"flex-1\">\n ${hiddenFields}\n <input type=\"hidden\" name=\"action\" value=\"approve\">\n ${primaryButton(approveText, { type: 'submit', fullWidth: true })}\n </form>\n </div>\n `;\n\n // Privacy/Terms links\n const linksHtml =\n client.privacyUrl || client.termsUrl || client.websiteUrl\n ? `\n <div class=\"text-center text-xs text-text-secondary mt-6 space-x-3\">\n ${\n client.websiteUrl\n ? `<a href=\"${escapeHtml(\n client.websiteUrl,\n )}\" target=\"_blank\" rel=\"noopener\" class=\"hover:text-primary\">Website</a>`\n : ''\n }\n ${\n client.privacyUrl\n ? `<a href=\"${escapeHtml(\n client.privacyUrl,\n )}\" target=\"_blank\" rel=\"noopener\" class=\"hover:text-primary\">Privacy Policy</a>`\n : ''\n }\n ${\n client.termsUrl\n ? `<a href=\"${escapeHtml(\n client.termsUrl,\n )}\" target=\"_blank\" rel=\"noopener\" class=\"hover:text-primary\">Terms of Service</a>`\n : ''\n }\n </div>\n `\n : '';\n\n // Combine all content\n const content = `\n ${errorAlert}\n ${unverifiedWarning}\n ${clientHeader}\n ${userSection}\n ${permissionsSection}\n ${actionsHtml}\n ${linksHtml}\n `;\n\n return consentLayout(content, {\n title: `Authorize ${client.name}`,\n clientName: client.name,\n clientIcon: client.icon,\n userInfo: user,\n ...layout,\n });\n}\n\n// ============================================\n// Consent Success Page\n// ============================================\n\n/**\n * Consent success page options\n */\nexport interface ConsentSuccessOptions {\n /** Client info */\n client: ClientInfo;\n /** Redirect URL */\n redirectUrl?: string;\n /** Auto redirect delay (ms) */\n autoRedirectDelay?: number;\n /** Layout options */\n layout?: Partial<ConsentLayoutOptions>;\n}\n\n/**\n * Build a consent success page\n */\nexport function consentSuccessPage(options: ConsentSuccessOptions): string {\n const { client, redirectUrl, autoRedirectDelay = 3000, layout = {} } = options;\n\n const redirectScript =\n redirectUrl && autoRedirectDelay > 0\n ? `\n <script>\n setTimeout(() => {\n window.location.href = '${escapeHtml(redirectUrl)}';\n }, ${autoRedirectDelay});\n </script>\n `\n : '';\n\n const content = `\n <div class=\"text-center\">\n <div class=\"inline-flex items-center justify-center w-16 h-16 rounded-full bg-success/10 mb-6\">\n <svg class=\"w-8 h-8 text-success\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"/>\n </svg>\n </div>\n <h1 class=\"text-2xl font-bold text-text-primary mb-2\">Authorization Successful</h1>\n <p class=\"text-text-secondary mb-4\">\n You have authorized <strong>${escapeHtml(client.name)}</strong> to access your account.\n </p>\n ${\n redirectUrl\n ? `<p class=\"text-sm text-text-secondary\">Redirecting you back to ${escapeHtml(client.name)}...</p>`\n : ''\n }\n </div>\n ${redirectScript}\n `;\n\n return consentLayout(content, {\n title: 'Authorization Successful',\n clientName: client.name,\n clientIcon: client.icon,\n ...layout,\n });\n}\n\n// ============================================\n// Consent Denied Page\n// ============================================\n\n/**\n * Consent denied page options\n */\nexport interface ConsentDeniedOptions {\n /** Client info */\n client: ClientInfo;\n /** Redirect URL */\n redirectUrl?: string;\n /** Layout options */\n layout?: Partial<ConsentLayoutOptions>;\n}\n\n/**\n * Build a consent denied page\n */\nexport function consentDeniedPage(options: ConsentDeniedOptions): string {\n const { client, redirectUrl, layout = {} } = options;\n\n const content = `\n <div class=\"text-center\">\n <div class=\"inline-flex items-center justify-center w-16 h-16 rounded-full bg-gray-100 mb-6\">\n <svg class=\"w-8 h-8 text-gray-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </div>\n <h1 class=\"text-2xl font-bold text-text-primary mb-2\">Authorization Denied</h1>\n <p class=\"text-text-secondary mb-6\">\n You denied <strong>${escapeHtml(client.name)}</strong> access to your account.\n </p>\n ${\n redirectUrl\n ? `\n <a href=\"${escapeHtml(\n redirectUrl,\n )}\" class=\"inline-block px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors\">\n Return to ${escapeHtml(client.name)}\n </a>\n `\n : ''\n }\n </div>\n `;\n\n return consentLayout(content, {\n title: 'Authorization Denied',\n clientName: client.name,\n clientIcon: client.icon,\n ...layout,\n });\n}\n"]}
@@ -1,100 +0,0 @@
1
- /**
2
- * Error Page Templates
3
- *
4
- * Various error page templates (404, 500, etc.)
5
- */
6
- import { type ErrorLayoutOptions } from '../layouts';
7
- /**
8
- * Error page options
9
- */
10
- export interface ErrorPageOptions {
11
- /** Error code (404, 500, etc.) */
12
- code?: string | number;
13
- /** Error title */
14
- title?: string;
15
- /** Error message */
16
- message?: string;
17
- /** Detailed error (for development) */
18
- details?: string;
19
- /** Show stack trace (development only) */
20
- showStack?: boolean;
21
- /** Stack trace */
22
- stack?: string;
23
- /** Show retry button */
24
- showRetry?: boolean;
25
- /** Retry URL */
26
- retryUrl?: string;
27
- /** Show home button */
28
- showHome?: boolean;
29
- /** Home URL */
30
- homeUrl?: string;
31
- /** Show back button */
32
- showBack?: boolean;
33
- /** Custom actions HTML */
34
- actions?: string;
35
- /** Layout options */
36
- layout?: Partial<ErrorLayoutOptions>;
37
- /** Request ID (for support) */
38
- requestId?: string;
39
- }
40
- /**
41
- * Build a generic error page
42
- */
43
- export declare function errorPage(options: ErrorPageOptions): string;
44
- /**
45
- * 404 Not Found page
46
- */
47
- export declare function notFoundPage(options?: Partial<ErrorPageOptions>): string;
48
- /**
49
- * 403 Forbidden page
50
- */
51
- export declare function forbiddenPage(options?: Partial<ErrorPageOptions>): string;
52
- /**
53
- * 401 Unauthorized page
54
- */
55
- export declare function unauthorizedPage(options?: Partial<ErrorPageOptions> & {
56
- loginUrl?: string;
57
- }): string;
58
- /**
59
- * 500 Internal Server Error page
60
- */
61
- export declare function serverErrorPage(options?: Partial<ErrorPageOptions>): string;
62
- /**
63
- * 503 Service Unavailable page
64
- */
65
- export declare function maintenancePage(options?: Partial<ErrorPageOptions> & {
66
- estimatedTime?: string;
67
- }): string;
68
- /**
69
- * 429 Rate Limit page
70
- */
71
- export declare function rateLimitPage(options?: Partial<ErrorPageOptions> & {
72
- retryAfter?: number;
73
- }): string;
74
- /**
75
- * Offline page
76
- */
77
- export declare function offlinePage(options?: Partial<ErrorPageOptions>): string;
78
- /**
79
- * Session expired page
80
- */
81
- export declare function sessionExpiredPage(options?: Partial<ErrorPageOptions> & {
82
- loginUrl?: string;
83
- }): string;
84
- /**
85
- * OAuth error page options
86
- */
87
- export interface OAuthErrorPageOptions extends Partial<ErrorPageOptions> {
88
- /** OAuth error code */
89
- errorCode?: string;
90
- /** OAuth error description */
91
- errorDescription?: string;
92
- /** Redirect URI */
93
- redirectUri?: string;
94
- /** Client name */
95
- clientName?: string;
96
- }
97
- /**
98
- * OAuth error page
99
- */
100
- export declare function oauthErrorPage(options: OAuthErrorPageOptions): string;
@@ -1,263 +0,0 @@
1
- "use strict";
2
- /**
3
- * Error Page Templates
4
- *
5
- * Various error page templates (404, 500, etc.)
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.errorPage = errorPage;
9
- exports.notFoundPage = notFoundPage;
10
- exports.forbiddenPage = forbiddenPage;
11
- exports.unauthorizedPage = unauthorizedPage;
12
- exports.serverErrorPage = serverErrorPage;
13
- exports.maintenancePage = maintenancePage;
14
- exports.rateLimitPage = rateLimitPage;
15
- exports.offlinePage = offlinePage;
16
- exports.sessionExpiredPage = sessionExpiredPage;
17
- exports.oauthErrorPage = oauthErrorPage;
18
- const layouts_1 = require("../layouts");
19
- const base_1 = require("../layouts/base");
20
- // ============================================
21
- // Error Page Builder
22
- // ============================================
23
- /**
24
- * Build a generic error page
25
- */
26
- function errorPage(options) {
27
- const { code, title = 'Something went wrong', message, details, showStack = false, stack, showRetry = true, retryUrl, showHome = true, homeUrl = '/', showBack = false, actions, layout = {}, requestId, } = options;
28
- // Details section (for development)
29
- const detailsHtml = details || (showStack && stack)
30
- ? `
31
- <div class="mt-8 text-left">
32
- ${details
33
- ? `
34
- <div class="p-4 bg-gray-50 rounded-lg text-sm text-text-secondary mb-4">
35
- <strong class="text-text-primary">Details:</strong>
36
- <p class="mt-1">${(0, base_1.escapeHtml)(details)}</p>
37
- </div>
38
- `
39
- : ''}
40
- ${showStack && stack
41
- ? `
42
- <details class="p-4 bg-gray-900 rounded-lg text-sm">
43
- <summary class="text-gray-300 cursor-pointer hover:text-white">Stack Trace</summary>
44
- <pre class="mt-2 text-xs text-gray-400 overflow-x-auto whitespace-pre-wrap">${(0, base_1.escapeHtml)(stack)}</pre>
45
- </details>
46
- `
47
- : ''}
48
- </div>
49
- `
50
- : '';
51
- // Request ID for support
52
- const requestIdHtml = requestId
53
- ? `
54
- <p class="text-xs text-text-secondary mt-6">
55
- Request ID: <code class="px-1.5 py-0.5 bg-gray-100 rounded text-xs">${(0, base_1.escapeHtml)(requestId)}</code>
56
- </p>
57
- `
58
- : '';
59
- // Custom actions or default buttons are handled by errorLayout
60
- const content = `
61
- ${detailsHtml}
62
- ${actions || ''}
63
- ${requestIdHtml}
64
- `;
65
- return (0, layouts_1.errorLayout)(content, {
66
- title: `${code ? `Error ${code} - ` : ''}${title}`,
67
- errorCode: code?.toString(),
68
- errorTitle: title,
69
- errorMessage: message,
70
- showRetry,
71
- retryUrl,
72
- showHome,
73
- homeUrl,
74
- ...layout,
75
- });
76
- }
77
- // ============================================
78
- // Specific Error Pages
79
- // ============================================
80
- /**
81
- * 404 Not Found page
82
- */
83
- function notFoundPage(options = {}) {
84
- return errorPage({
85
- code: 404,
86
- title: 'Page Not Found',
87
- message: "The page you're looking for doesn't exist or has been moved.",
88
- showRetry: false,
89
- ...options,
90
- });
91
- }
92
- /**
93
- * 403 Forbidden page
94
- */
95
- function forbiddenPage(options = {}) {
96
- return errorPage({
97
- code: 403,
98
- title: 'Access Denied',
99
- message: "You don't have permission to access this resource.",
100
- showRetry: false,
101
- ...options,
102
- });
103
- }
104
- /**
105
- * 401 Unauthorized page
106
- */
107
- function unauthorizedPage(options = {}) {
108
- const { loginUrl = '/login', ...rest } = options;
109
- return errorPage({
110
- code: 401,
111
- title: 'Authentication Required',
112
- message: 'Please sign in to access this resource.',
113
- showRetry: false,
114
- showHome: false,
115
- actions: `
116
- <div class="flex justify-center mt-8">
117
- <a href="${(0, base_1.escapeHtml)(loginUrl)}" class="px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">
118
- Sign In
119
- </a>
120
- </div>
121
- `,
122
- ...rest,
123
- });
124
- }
125
- /**
126
- * 500 Internal Server Error page
127
- */
128
- function serverErrorPage(options = {}) {
129
- return errorPage({
130
- code: 500,
131
- title: 'Server Error',
132
- message: "We're having trouble processing your request. Please try again later.",
133
- showRetry: true,
134
- ...options,
135
- });
136
- }
137
- /**
138
- * 503 Service Unavailable page
139
- */
140
- function maintenancePage(options = {}) {
141
- const { estimatedTime, ...rest } = options;
142
- const timeMessage = estimatedTime
143
- ? `We expect to be back by ${(0, base_1.escapeHtml)(estimatedTime)}.`
144
- : "We'll be back shortly.";
145
- return errorPage({
146
- code: 503,
147
- title: 'Under Maintenance',
148
- message: `We're currently performing scheduled maintenance. ${timeMessage}`,
149
- showRetry: true,
150
- showHome: false,
151
- ...rest,
152
- });
153
- }
154
- /**
155
- * 429 Rate Limit page
156
- */
157
- function rateLimitPage(options = {}) {
158
- const { retryAfter, ...rest } = options;
159
- const retryMessage = retryAfter
160
- ? `Please wait ${retryAfter} seconds before trying again.`
161
- : 'Please wait a moment before trying again.';
162
- return errorPage({
163
- code: 429,
164
- title: 'Too Many Requests',
165
- message: `You've made too many requests. ${retryMessage}`,
166
- showRetry: true,
167
- showHome: true,
168
- ...rest,
169
- });
170
- }
171
- /**
172
- * Offline page
173
- */
174
- function offlinePage(options = {}) {
175
- return errorPage({
176
- title: "You're Offline",
177
- message: 'Please check your internet connection and try again.',
178
- showRetry: true,
179
- showHome: false,
180
- ...options,
181
- layout: {
182
- ...options.layout,
183
- },
184
- });
185
- }
186
- /**
187
- * Session expired page
188
- */
189
- function sessionExpiredPage(options = {}) {
190
- const { loginUrl = '/login', ...rest } = options;
191
- return errorPage({
192
- title: 'Session Expired',
193
- message: 'Your session has expired. Please sign in again to continue.',
194
- showRetry: false,
195
- showHome: false,
196
- actions: `
197
- <div class="flex justify-center mt-8">
198
- <a href="${(0, base_1.escapeHtml)(loginUrl)}" class="px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">
199
- Sign In Again
200
- </a>
201
- </div>
202
- `,
203
- ...rest,
204
- });
205
- }
206
- /**
207
- * OAuth error page
208
- */
209
- function oauthErrorPage(options) {
210
- const { errorCode, errorDescription, redirectUri, clientName, ...rest } = options;
211
- // Map OAuth error codes to user-friendly messages
212
- const errorMessages = {
213
- invalid_request: {
214
- title: 'Invalid Request',
215
- message: 'The authorization request is missing required parameters or is malformed.',
216
- },
217
- unauthorized_client: {
218
- title: 'Unauthorized Client',
219
- message: 'The client is not authorized to request an authorization code.',
220
- },
221
- access_denied: {
222
- title: 'Access Denied',
223
- message: 'The resource owner denied the authorization request.',
224
- },
225
- unsupported_response_type: {
226
- title: 'Unsupported Response Type',
227
- message: 'The authorization server does not support the requested response type.',
228
- },
229
- invalid_scope: {
230
- title: 'Invalid Scope',
231
- message: 'The requested scope is invalid, unknown, or malformed.',
232
- },
233
- server_error: {
234
- title: 'Server Error',
235
- message: 'The authorization server encountered an unexpected error.',
236
- },
237
- temporarily_unavailable: {
238
- title: 'Temporarily Unavailable',
239
- message: 'The authorization server is temporarily unavailable. Please try again later.',
240
- },
241
- };
242
- const errorInfo = errorCode && errorMessages[errorCode]
243
- ? errorMessages[errorCode]
244
- : { title: 'Authorization Error', message: errorDescription || 'An error occurred during authorization.' };
245
- const clientMessage = clientName ? ` while connecting to ${(0, base_1.escapeHtml)(clientName)}` : '';
246
- const redirectAction = redirectUri
247
- ? `
248
- <a href="${(0, base_1.escapeHtml)(redirectUri)}" class="px-6 py-3 bg-gray-100 hover:bg-gray-200 text-text-primary font-medium rounded-lg transition-colors">
249
- Return to ${clientName ? (0, base_1.escapeHtml)(clientName) : 'Application'}
250
- </a>
251
- `
252
- : '';
253
- return errorPage({
254
- title: errorInfo.title,
255
- message: `${errorInfo.message}${clientMessage}`,
256
- details: errorCode && errorDescription ? `Error: ${errorCode}\n${errorDescription}` : undefined,
257
- showRetry: errorCode === 'server_error' || errorCode === 'temporarily_unavailable',
258
- showHome: true,
259
- actions: redirectAction ? `<div class="flex justify-center gap-4 mt-8">${redirectAction}</div>` : undefined,
260
- ...rest,
261
- });
262
- }
263
- //# sourceMappingURL=error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/pages/error.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Error Page Templates\n *\n * Various error page templates (404, 500, etc.)\n */\n\nimport { errorLayout, type ErrorLayoutOptions } from '../layouts';\nimport { escapeHtml } from '../layouts/base';\n\n// ============================================\n// Error Page Types\n// ============================================\n\n/**\n * Error page options\n */\nexport interface ErrorPageOptions {\n /** Error code (404, 500, etc.) */\n code?: string | number;\n /** Error title */\n title?: string;\n /** Error message */\n message?: string;\n /** Detailed error (for development) */\n details?: string;\n /** Show stack trace (development only) */\n showStack?: boolean;\n /** Stack trace */\n stack?: string;\n /** Show retry button */\n showRetry?: boolean;\n /** Retry URL */\n retryUrl?: string;\n /** Show home button */\n showHome?: boolean;\n /** Home URL */\n homeUrl?: string;\n /** Show back button */\n showBack?: boolean;\n /** Custom actions HTML */\n actions?: string;\n /** Layout options */\n layout?: Partial<ErrorLayoutOptions>;\n /** Request ID (for support) */\n requestId?: string;\n}\n\n// ============================================\n// Error Page Builder\n// ============================================\n\n/**\n * Build a generic error page\n */\nexport function errorPage(options: ErrorPageOptions): string {\n const {\n code,\n title = 'Something went wrong',\n message,\n details,\n showStack = false,\n stack,\n showRetry = true,\n retryUrl,\n showHome = true,\n homeUrl = '/',\n showBack = false,\n actions,\n layout = {},\n requestId,\n } = options;\n\n // Details section (for development)\n const detailsHtml =\n details || (showStack && stack)\n ? `\n <div class=\"mt-8 text-left\">\n ${\n details\n ? `\n <div class=\"p-4 bg-gray-50 rounded-lg text-sm text-text-secondary mb-4\">\n <strong class=\"text-text-primary\">Details:</strong>\n <p class=\"mt-1\">${escapeHtml(details)}</p>\n </div>\n `\n : ''\n }\n ${\n showStack && stack\n ? `\n <details class=\"p-4 bg-gray-900 rounded-lg text-sm\">\n <summary class=\"text-gray-300 cursor-pointer hover:text-white\">Stack Trace</summary>\n <pre class=\"mt-2 text-xs text-gray-400 overflow-x-auto whitespace-pre-wrap\">${escapeHtml(stack)}</pre>\n </details>\n `\n : ''\n }\n </div>\n `\n : '';\n\n // Request ID for support\n const requestIdHtml = requestId\n ? `\n <p class=\"text-xs text-text-secondary mt-6\">\n Request ID: <code class=\"px-1.5 py-0.5 bg-gray-100 rounded text-xs\">${escapeHtml(requestId)}</code>\n </p>\n `\n : '';\n\n // Custom actions or default buttons are handled by errorLayout\n const content = `\n ${detailsHtml}\n ${actions || ''}\n ${requestIdHtml}\n `;\n\n return errorLayout(content, {\n title: `${code ? `Error ${code} - ` : ''}${title}`,\n errorCode: code?.toString(),\n errorTitle: title,\n errorMessage: message,\n showRetry,\n retryUrl,\n showHome,\n homeUrl,\n ...layout,\n });\n}\n\n// ============================================\n// Specific Error Pages\n// ============================================\n\n/**\n * 404 Not Found page\n */\nexport function notFoundPage(options: Partial<ErrorPageOptions> = {}): string {\n return errorPage({\n code: 404,\n title: 'Page Not Found',\n message: \"The page you're looking for doesn't exist or has been moved.\",\n showRetry: false,\n ...options,\n });\n}\n\n/**\n * 403 Forbidden page\n */\nexport function forbiddenPage(options: Partial<ErrorPageOptions> = {}): string {\n return errorPage({\n code: 403,\n title: 'Access Denied',\n message: \"You don't have permission to access this resource.\",\n showRetry: false,\n ...options,\n });\n}\n\n/**\n * 401 Unauthorized page\n */\nexport function unauthorizedPage(options: Partial<ErrorPageOptions> & { loginUrl?: string } = {}): string {\n const { loginUrl = '/login', ...rest } = options;\n\n return errorPage({\n code: 401,\n title: 'Authentication Required',\n message: 'Please sign in to access this resource.',\n showRetry: false,\n showHome: false,\n actions: `\n <div class=\"flex justify-center mt-8\">\n <a href=\"${escapeHtml(\n loginUrl,\n )}\" class=\"px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors\">\n Sign In\n </a>\n </div>\n `,\n ...rest,\n });\n}\n\n/**\n * 500 Internal Server Error page\n */\nexport function serverErrorPage(options: Partial<ErrorPageOptions> = {}): string {\n return errorPage({\n code: 500,\n title: 'Server Error',\n message: \"We're having trouble processing your request. Please try again later.\",\n showRetry: true,\n ...options,\n });\n}\n\n/**\n * 503 Service Unavailable page\n */\nexport function maintenancePage(options: Partial<ErrorPageOptions> & { estimatedTime?: string } = {}): string {\n const { estimatedTime, ...rest } = options;\n\n const timeMessage = estimatedTime\n ? `We expect to be back by ${escapeHtml(estimatedTime)}.`\n : \"We'll be back shortly.\";\n\n return errorPage({\n code: 503,\n title: 'Under Maintenance',\n message: `We're currently performing scheduled maintenance. ${timeMessage}`,\n showRetry: true,\n showHome: false,\n ...rest,\n });\n}\n\n/**\n * 429 Rate Limit page\n */\nexport function rateLimitPage(options: Partial<ErrorPageOptions> & { retryAfter?: number } = {}): string {\n const { retryAfter, ...rest } = options;\n\n const retryMessage = retryAfter\n ? `Please wait ${retryAfter} seconds before trying again.`\n : 'Please wait a moment before trying again.';\n\n return errorPage({\n code: 429,\n title: 'Too Many Requests',\n message: `You've made too many requests. ${retryMessage}`,\n showRetry: true,\n showHome: true,\n ...rest,\n });\n}\n\n/**\n * Offline page\n */\nexport function offlinePage(options: Partial<ErrorPageOptions> = {}): string {\n return errorPage({\n title: \"You're Offline\",\n message: 'Please check your internet connection and try again.',\n showRetry: true,\n showHome: false,\n ...options,\n layout: {\n ...options.layout,\n },\n });\n}\n\n/**\n * Session expired page\n */\nexport function sessionExpiredPage(options: Partial<ErrorPageOptions> & { loginUrl?: string } = {}): string {\n const { loginUrl = '/login', ...rest } = options;\n\n return errorPage({\n title: 'Session Expired',\n message: 'Your session has expired. Please sign in again to continue.',\n showRetry: false,\n showHome: false,\n actions: `\n <div class=\"flex justify-center mt-8\">\n <a href=\"${escapeHtml(\n loginUrl,\n )}\" class=\"px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors\">\n Sign In Again\n </a>\n </div>\n `,\n ...rest,\n });\n}\n\n// ============================================\n// OAuth Error Pages\n// ============================================\n\n/**\n * OAuth error page options\n */\nexport interface OAuthErrorPageOptions extends Partial<ErrorPageOptions> {\n /** OAuth error code */\n errorCode?: string;\n /** OAuth error description */\n errorDescription?: string;\n /** Redirect URI */\n redirectUri?: string;\n /** Client name */\n clientName?: string;\n}\n\n/**\n * OAuth error page\n */\nexport function oauthErrorPage(options: OAuthErrorPageOptions): string {\n const { errorCode, errorDescription, redirectUri, clientName, ...rest } = options;\n\n // Map OAuth error codes to user-friendly messages\n const errorMessages: Record<string, { title: string; message: string }> = {\n invalid_request: {\n title: 'Invalid Request',\n message: 'The authorization request is missing required parameters or is malformed.',\n },\n unauthorized_client: {\n title: 'Unauthorized Client',\n message: 'The client is not authorized to request an authorization code.',\n },\n access_denied: {\n title: 'Access Denied',\n message: 'The resource owner denied the authorization request.',\n },\n unsupported_response_type: {\n title: 'Unsupported Response Type',\n message: 'The authorization server does not support the requested response type.',\n },\n invalid_scope: {\n title: 'Invalid Scope',\n message: 'The requested scope is invalid, unknown, or malformed.',\n },\n server_error: {\n title: 'Server Error',\n message: 'The authorization server encountered an unexpected error.',\n },\n temporarily_unavailable: {\n title: 'Temporarily Unavailable',\n message: 'The authorization server is temporarily unavailable. Please try again later.',\n },\n };\n\n const errorInfo =\n errorCode && errorMessages[errorCode]\n ? errorMessages[errorCode]\n : { title: 'Authorization Error', message: errorDescription || 'An error occurred during authorization.' };\n\n const clientMessage = clientName ? ` while connecting to ${escapeHtml(clientName)}` : '';\n\n const redirectAction = redirectUri\n ? `\n <a href=\"${escapeHtml(\n redirectUri,\n )}\" class=\"px-6 py-3 bg-gray-100 hover:bg-gray-200 text-text-primary font-medium rounded-lg transition-colors\">\n Return to ${clientName ? escapeHtml(clientName) : 'Application'}\n </a>\n `\n : '';\n\n return errorPage({\n title: errorInfo.title,\n message: `${errorInfo.message}${clientMessage}`,\n details: errorCode && errorDescription ? `Error: ${errorCode}\\n${errorDescription}` : undefined,\n showRetry: errorCode === 'server_error' || errorCode === 'temporarily_unavailable',\n showHome: true,\n actions: redirectAction ? `<div class=\"flex justify-center gap-4 mt-8\">${redirectAction}</div>` : undefined,\n ...rest,\n });\n}\n"]}