@frontmcp/ui 0.5.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 (393) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +438 -0
  3. package/package.json +147 -0
  4. package/src/adapters/index.d.ts +10 -0
  5. package/src/adapters/index.js +18 -0
  6. package/src/adapters/index.js.map +1 -0
  7. package/src/adapters/platform-meta.d.ts +165 -0
  8. package/src/adapters/platform-meta.js +310 -0
  9. package/src/adapters/platform-meta.js.map +1 -0
  10. package/src/base-template/bridge.d.ts +89 -0
  11. package/src/base-template/bridge.js +452 -0
  12. package/src/base-template/bridge.js.map +1 -0
  13. package/src/base-template/default-base-template.d.ts +91 -0
  14. package/src/base-template/default-base-template.js +435 -0
  15. package/src/base-template/default-base-template.js.map +1 -0
  16. package/src/base-template/index.d.ts +14 -0
  17. package/src/base-template/index.js +30 -0
  18. package/src/base-template/index.js.map +1 -0
  19. package/src/base-template/polyfills.d.ts +30 -0
  20. package/src/base-template/polyfills.js +190 -0
  21. package/src/base-template/polyfills.js.map +1 -0
  22. package/src/base-template/theme-styles.d.ts +73 -0
  23. package/src/base-template/theme-styles.js +95 -0
  24. package/src/base-template/theme-styles.js.map +1 -0
  25. package/src/bridge/adapters/base-adapter.d.ts +103 -0
  26. package/src/bridge/adapters/base-adapter.js +314 -0
  27. package/src/bridge/adapters/base-adapter.js.map +1 -0
  28. package/src/bridge/adapters/claude.adapter.d.ts +66 -0
  29. package/src/bridge/adapters/claude.adapter.js +145 -0
  30. package/src/bridge/adapters/claude.adapter.js.map +1 -0
  31. package/src/bridge/adapters/ext-apps.adapter.d.ts +142 -0
  32. package/src/bridge/adapters/ext-apps.adapter.js +416 -0
  33. package/src/bridge/adapters/ext-apps.adapter.js.map +1 -0
  34. package/src/bridge/adapters/gemini.adapter.d.ts +63 -0
  35. package/src/bridge/adapters/gemini.adapter.js +160 -0
  36. package/src/bridge/adapters/gemini.adapter.js.map +1 -0
  37. package/src/bridge/adapters/generic.adapter.d.ts +55 -0
  38. package/src/bridge/adapters/generic.adapter.js +108 -0
  39. package/src/bridge/adapters/generic.adapter.js.map +1 -0
  40. package/src/bridge/adapters/index.d.ts +25 -0
  41. package/src/bridge/adapters/index.js +65 -0
  42. package/src/bridge/adapters/index.js.map +1 -0
  43. package/src/bridge/adapters/openai.adapter.d.ts +64 -0
  44. package/src/bridge/adapters/openai.adapter.js +194 -0
  45. package/src/bridge/adapters/openai.adapter.js.map +1 -0
  46. package/src/bridge/core/adapter-registry.d.ts +121 -0
  47. package/src/bridge/core/adapter-registry.js +271 -0
  48. package/src/bridge/core/adapter-registry.js.map +1 -0
  49. package/src/bridge/core/bridge-factory.d.ts +198 -0
  50. package/src/bridge/core/bridge-factory.js +428 -0
  51. package/src/bridge/core/bridge-factory.js.map +1 -0
  52. package/src/bridge/core/index.d.ts +9 -0
  53. package/src/bridge/core/index.js +22 -0
  54. package/src/bridge/core/index.js.map +1 -0
  55. package/src/bridge/index.d.ts +61 -0
  56. package/src/bridge/index.js +94 -0
  57. package/src/bridge/index.js.map +1 -0
  58. package/src/bridge/runtime/iife-generator.d.ts +61 -0
  59. package/src/bridge/runtime/iife-generator.js +940 -0
  60. package/src/bridge/runtime/iife-generator.js.map +1 -0
  61. package/src/bridge/runtime/index.d.ts +8 -0
  62. package/src/bridge/runtime/index.js +16 -0
  63. package/src/bridge/runtime/index.js.map +1 -0
  64. package/src/bridge/types.d.ts +385 -0
  65. package/src/bridge/types.js +11 -0
  66. package/src/bridge/types.js.map +1 -0
  67. package/src/build/cdn-resources.d.ts +140 -0
  68. package/src/build/cdn-resources.js +314 -0
  69. package/src/build/cdn-resources.js.map +1 -0
  70. package/src/build/index.d.ts +294 -0
  71. package/src/build/index.js +325 -0
  72. package/src/build/index.js.map +1 -0
  73. package/src/build/widget-manifest.d.ts +212 -0
  74. package/src/build/widget-manifest.js +652 -0
  75. package/src/build/widget-manifest.js.map +1 -0
  76. package/src/bundler/bundler.d.ts +110 -0
  77. package/src/bundler/bundler.js +432 -0
  78. package/src/bundler/bundler.js.map +1 -0
  79. package/src/bundler/cache.d.ts +172 -0
  80. package/src/bundler/cache.js +250 -0
  81. package/src/bundler/cache.js.map +1 -0
  82. package/src/bundler/index.d.ts +41 -0
  83. package/src/bundler/index.js +73 -0
  84. package/src/bundler/index.js.map +1 -0
  85. package/src/bundler/sandbox/enclave-adapter.d.ts +120 -0
  86. package/src/bundler/sandbox/enclave-adapter.js +339 -0
  87. package/src/bundler/sandbox/enclave-adapter.js.map +1 -0
  88. package/src/bundler/sandbox/executor.d.ts +13 -0
  89. package/src/bundler/sandbox/executor.js +22 -0
  90. package/src/bundler/sandbox/executor.js.map +1 -0
  91. package/src/bundler/sandbox/policy.d.ts +61 -0
  92. package/src/bundler/sandbox/policy.js +238 -0
  93. package/src/bundler/sandbox/policy.js.map +1 -0
  94. package/src/bundler/types.d.ts +347 -0
  95. package/src/bundler/types.js +132 -0
  96. package/src/bundler/types.js.map +1 -0
  97. package/src/components/alert.d.ts +71 -0
  98. package/src/components/alert.js +189 -0
  99. package/src/components/alert.js.map +1 -0
  100. package/src/components/alert.schema.d.ts +114 -0
  101. package/src/components/alert.schema.js +105 -0
  102. package/src/components/alert.schema.js.map +1 -0
  103. package/src/components/avatar.d.ts +76 -0
  104. package/src/components/avatar.js +176 -0
  105. package/src/components/avatar.js.map +1 -0
  106. package/src/components/avatar.schema.d.ts +169 -0
  107. package/src/components/avatar.schema.js +103 -0
  108. package/src/components/avatar.schema.js.map +1 -0
  109. package/src/components/badge.d.ts +70 -0
  110. package/src/components/badge.js +149 -0
  111. package/src/components/badge.js.map +1 -0
  112. package/src/components/badge.schema.d.ts +109 -0
  113. package/src/components/badge.schema.js +96 -0
  114. package/src/components/badge.schema.js.map +1 -0
  115. package/src/components/button.d.ts +111 -0
  116. package/src/components/button.js +336 -0
  117. package/src/components/button.js.map +1 -0
  118. package/src/components/button.schema.d.ts +148 -0
  119. package/src/components/button.schema.js +121 -0
  120. package/src/components/button.schema.js.map +1 -0
  121. package/src/components/card.d.ts +60 -0
  122. package/src/components/card.js +117 -0
  123. package/src/components/card.js.map +1 -0
  124. package/src/components/card.schema.d.ts +113 -0
  125. package/src/components/card.schema.js +98 -0
  126. package/src/components/card.schema.js.map +1 -0
  127. package/src/components/form.d.ts +239 -0
  128. package/src/components/form.js +420 -0
  129. package/src/components/form.js.map +1 -0
  130. package/src/components/form.schema.d.ts +441 -0
  131. package/src/components/form.schema.js +406 -0
  132. package/src/components/form.schema.js.map +1 -0
  133. package/src/components/index.d.ts +29 -0
  134. package/src/components/index.js +98 -0
  135. package/src/components/index.js.map +1 -0
  136. package/src/components/list.d.ts +127 -0
  137. package/src/components/list.js +279 -0
  138. package/src/components/list.js.map +1 -0
  139. package/src/components/list.schema.d.ts +134 -0
  140. package/src/components/list.schema.js +168 -0
  141. package/src/components/list.schema.js.map +1 -0
  142. package/src/components/modal.d.ts +111 -0
  143. package/src/components/modal.js +260 -0
  144. package/src/components/modal.js.map +1 -0
  145. package/src/components/modal.schema.d.ts +186 -0
  146. package/src/components/modal.schema.js +167 -0
  147. package/src/components/modal.schema.js.map +1 -0
  148. package/src/components/table.d.ts +105 -0
  149. package/src/components/table.js +283 -0
  150. package/src/components/table.js.map +1 -0
  151. package/src/components/table.schema.d.ts +159 -0
  152. package/src/components/table.schema.js +173 -0
  153. package/src/components/table.schema.js.map +1 -0
  154. package/src/handlebars/helpers.d.ts +348 -0
  155. package/src/handlebars/helpers.js +605 -0
  156. package/src/handlebars/helpers.js.map +1 -0
  157. package/src/handlebars/index.d.ts +193 -0
  158. package/src/handlebars/index.js +350 -0
  159. package/src/handlebars/index.js.map +1 -0
  160. package/src/index.d.ts +50 -0
  161. package/src/index.js +192 -0
  162. package/src/index.js.map +1 -0
  163. package/src/layouts/base.d.ts +88 -0
  164. package/src/layouts/base.js +227 -0
  165. package/src/layouts/base.js.map +1 -0
  166. package/src/layouts/index.d.ts +7 -0
  167. package/src/layouts/index.js +25 -0
  168. package/src/layouts/index.js.map +1 -0
  169. package/src/layouts/presets.d.ts +133 -0
  170. package/src/layouts/presets.js +277 -0
  171. package/src/layouts/presets.js.map +1 -0
  172. package/src/pages/consent.d.ts +116 -0
  173. package/src/pages/consent.js +218 -0
  174. package/src/pages/consent.js.map +1 -0
  175. package/src/pages/error.d.ts +100 -0
  176. package/src/pages/error.js +263 -0
  177. package/src/pages/error.js.map +1 -0
  178. package/src/pages/index.d.ts +8 -0
  179. package/src/pages/index.js +27 -0
  180. package/src/pages/index.js.map +1 -0
  181. package/src/react/Alert.d.ts +101 -0
  182. package/src/react/Alert.js +51 -0
  183. package/src/react/Alert.js.map +1 -0
  184. package/src/react/Badge.d.ts +100 -0
  185. package/src/react/Badge.js +55 -0
  186. package/src/react/Badge.js.map +1 -0
  187. package/src/react/Button.d.ts +108 -0
  188. package/src/react/Button.js +52 -0
  189. package/src/react/Button.js.map +1 -0
  190. package/src/react/Card.d.ts +103 -0
  191. package/src/react/Card.js +55 -0
  192. package/src/react/Card.js.map +1 -0
  193. package/src/react/hooks/context.d.ts +178 -0
  194. package/src/react/hooks/context.js +287 -0
  195. package/src/react/hooks/context.js.map +1 -0
  196. package/src/react/hooks/index.d.ts +41 -0
  197. package/src/react/hooks/index.js +61 -0
  198. package/src/react/hooks/index.js.map +1 -0
  199. package/src/react/hooks/tools.d.ts +283 -0
  200. package/src/react/hooks/tools.js +465 -0
  201. package/src/react/hooks/tools.js.map +1 -0
  202. package/src/react/index.d.ts +80 -0
  203. package/src/react/index.js +113 -0
  204. package/src/react/index.js.map +1 -0
  205. package/src/react/types.d.ts +105 -0
  206. package/src/react/types.js +12 -0
  207. package/src/react/types.js.map +1 -0
  208. package/src/react/utils.d.ts +42 -0
  209. package/src/react/utils.js +99 -0
  210. package/src/react/utils.js.map +1 -0
  211. package/src/registry/index.d.ts +45 -0
  212. package/src/registry/index.js +67 -0
  213. package/src/registry/index.js.map +1 -0
  214. package/src/registry/render-template.d.ts +86 -0
  215. package/src/registry/render-template.js +239 -0
  216. package/src/registry/render-template.js.map +1 -0
  217. package/src/registry/tool-ui.registry.d.ts +260 -0
  218. package/src/registry/tool-ui.registry.js +438 -0
  219. package/src/registry/tool-ui.registry.js.map +1 -0
  220. package/src/registry/uri-utils.d.ts +55 -0
  221. package/src/registry/uri-utils.js +97 -0
  222. package/src/registry/uri-utils.js.map +1 -0
  223. package/src/render/index.d.ts +7 -0
  224. package/src/render/index.js +14 -0
  225. package/src/render/index.js.map +1 -0
  226. package/src/render/prerender.d.ts +56 -0
  227. package/src/render/prerender.js +98 -0
  228. package/src/render/prerender.js.map +1 -0
  229. package/src/renderers/cache.d.ts +144 -0
  230. package/src/renderers/cache.js +240 -0
  231. package/src/renderers/cache.js.map +1 -0
  232. package/src/renderers/html.renderer.d.ts +122 -0
  233. package/src/renderers/html.renderer.js +204 -0
  234. package/src/renderers/html.renderer.js.map +1 -0
  235. package/src/renderers/index.d.ts +35 -0
  236. package/src/renderers/index.js +70 -0
  237. package/src/renderers/index.js.map +1 -0
  238. package/src/renderers/mdx.renderer.d.ts +119 -0
  239. package/src/renderers/mdx.renderer.js +305 -0
  240. package/src/renderers/mdx.renderer.js.map +1 -0
  241. package/src/renderers/react.renderer.d.ts +95 -0
  242. package/src/renderers/react.renderer.js +260 -0
  243. package/src/renderers/react.renderer.js.map +1 -0
  244. package/src/renderers/registry.d.ts +133 -0
  245. package/src/renderers/registry.js +232 -0
  246. package/src/renderers/registry.js.map +1 -0
  247. package/src/renderers/types.d.ts +341 -0
  248. package/src/renderers/types.js +9 -0
  249. package/src/renderers/types.js.map +1 -0
  250. package/src/renderers/utils/detect.d.ts +106 -0
  251. package/src/renderers/utils/detect.js +267 -0
  252. package/src/renderers/utils/detect.js.map +1 -0
  253. package/src/renderers/utils/hash.d.ts +39 -0
  254. package/src/renderers/utils/hash.js +75 -0
  255. package/src/renderers/utils/hash.js.map +1 -0
  256. package/src/renderers/utils/index.d.ts +8 -0
  257. package/src/renderers/utils/index.js +28 -0
  258. package/src/renderers/utils/index.js.map +1 -0
  259. package/src/renderers/utils/transpiler.d.ts +88 -0
  260. package/src/renderers/utils/transpiler.js +215 -0
  261. package/src/renderers/utils/transpiler.js.map +1 -0
  262. package/src/runtime/adapters/html.adapter.d.ts +58 -0
  263. package/src/runtime/adapters/html.adapter.js +131 -0
  264. package/src/runtime/adapters/html.adapter.js.map +1 -0
  265. package/src/runtime/adapters/index.d.ts +25 -0
  266. package/src/runtime/adapters/index.js +54 -0
  267. package/src/runtime/adapters/index.js.map +1 -0
  268. package/src/runtime/adapters/mdx.adapter.d.ts +72 -0
  269. package/src/runtime/adapters/mdx.adapter.js +241 -0
  270. package/src/runtime/adapters/mdx.adapter.js.map +1 -0
  271. package/src/runtime/adapters/react.adapter.d.ts +69 -0
  272. package/src/runtime/adapters/react.adapter.js +245 -0
  273. package/src/runtime/adapters/react.adapter.js.map +1 -0
  274. package/src/runtime/adapters/types.d.ts +94 -0
  275. package/src/runtime/adapters/types.js +11 -0
  276. package/src/runtime/adapters/types.js.map +1 -0
  277. package/src/runtime/csp.d.ts +37 -0
  278. package/src/runtime/csp.js +140 -0
  279. package/src/runtime/csp.js.map +1 -0
  280. package/src/runtime/index.d.ts +16 -0
  281. package/src/runtime/index.js +72 -0
  282. package/src/runtime/index.js.map +1 -0
  283. package/src/runtime/mcp-bridge.d.ts +100 -0
  284. package/src/runtime/mcp-bridge.js +581 -0
  285. package/src/runtime/mcp-bridge.js.map +1 -0
  286. package/src/runtime/renderer-runtime.d.ts +132 -0
  287. package/src/runtime/renderer-runtime.js +389 -0
  288. package/src/runtime/renderer-runtime.js.map +1 -0
  289. package/src/runtime/sanitizer.d.ts +171 -0
  290. package/src/runtime/sanitizer.js +318 -0
  291. package/src/runtime/sanitizer.js.map +1 -0
  292. package/src/runtime/types.d.ts +414 -0
  293. package/src/runtime/types.js +12 -0
  294. package/src/runtime/types.js.map +1 -0
  295. package/src/runtime/wrapper.d.ts +375 -0
  296. package/src/runtime/wrapper.js +1793 -0
  297. package/src/runtime/wrapper.js.map +1 -0
  298. package/src/styles/index.d.ts +7 -0
  299. package/src/styles/index.js +11 -0
  300. package/src/styles/index.js.map +1 -0
  301. package/src/styles/variants.d.ts +50 -0
  302. package/src/styles/variants.js +175 -0
  303. package/src/styles/variants.js.map +1 -0
  304. package/src/theme/cdn.d.ts +194 -0
  305. package/src/theme/cdn.js +375 -0
  306. package/src/theme/cdn.js.map +1 -0
  307. package/src/theme/index.d.ts +17 -0
  308. package/src/theme/index.js +57 -0
  309. package/src/theme/index.js.map +1 -0
  310. package/src/theme/platforms.d.ts +106 -0
  311. package/src/theme/platforms.js +161 -0
  312. package/src/theme/platforms.js.map +1 -0
  313. package/src/theme/presets/github-openai.d.ts +49 -0
  314. package/src/theme/presets/github-openai.js +189 -0
  315. package/src/theme/presets/github-openai.js.map +1 -0
  316. package/src/theme/presets/index.d.ts +10 -0
  317. package/src/theme/presets/index.js +17 -0
  318. package/src/theme/presets/index.js.map +1 -0
  319. package/src/theme/theme.d.ts +395 -0
  320. package/src/theme/theme.js +332 -0
  321. package/src/theme/theme.js.map +1 -0
  322. package/src/tool-template/builder.d.ts +212 -0
  323. package/src/tool-template/builder.js +397 -0
  324. package/src/tool-template/builder.js.map +1 -0
  325. package/src/tool-template/index.d.ts +15 -0
  326. package/src/tool-template/index.js +38 -0
  327. package/src/tool-template/index.js.map +1 -0
  328. package/src/types/index.d.ts +13 -0
  329. package/src/types/index.js +26 -0
  330. package/src/types/index.js.map +1 -0
  331. package/src/types/ui-config.d.ts +357 -0
  332. package/src/types/ui-config.js +12 -0
  333. package/src/types/ui-config.js.map +1 -0
  334. package/src/types/ui-runtime.d.ts +965 -0
  335. package/src/types/ui-runtime.js +117 -0
  336. package/src/types/ui-runtime.js.map +1 -0
  337. package/src/validation/error-box.d.ts +55 -0
  338. package/src/validation/error-box.js +75 -0
  339. package/src/validation/error-box.js.map +1 -0
  340. package/src/validation/index.d.ts +12 -0
  341. package/src/validation/index.js +21 -0
  342. package/src/validation/index.js.map +1 -0
  343. package/src/validation/wrapper.d.ts +96 -0
  344. package/src/validation/wrapper.js +117 -0
  345. package/src/validation/wrapper.js.map +1 -0
  346. package/src/web-components/core/attribute-parser.d.ts +85 -0
  347. package/src/web-components/core/attribute-parser.js +189 -0
  348. package/src/web-components/core/attribute-parser.js.map +1 -0
  349. package/src/web-components/core/base-element.d.ts +197 -0
  350. package/src/web-components/core/base-element.js +289 -0
  351. package/src/web-components/core/base-element.js.map +1 -0
  352. package/src/web-components/core/index.d.ts +8 -0
  353. package/src/web-components/core/index.js +18 -0
  354. package/src/web-components/core/index.js.map +1 -0
  355. package/src/web-components/elements/fmcp-alert.d.ts +45 -0
  356. package/src/web-components/elements/fmcp-alert.js +93 -0
  357. package/src/web-components/elements/fmcp-alert.js.map +1 -0
  358. package/src/web-components/elements/fmcp-badge.d.ts +46 -0
  359. package/src/web-components/elements/fmcp-badge.js +99 -0
  360. package/src/web-components/elements/fmcp-badge.js.map +1 -0
  361. package/src/web-components/elements/fmcp-button.d.ts +124 -0
  362. package/src/web-components/elements/fmcp-button.js +233 -0
  363. package/src/web-components/elements/fmcp-button.js.map +1 -0
  364. package/src/web-components/elements/fmcp-card.d.ts +52 -0
  365. package/src/web-components/elements/fmcp-card.js +115 -0
  366. package/src/web-components/elements/fmcp-card.js.map +1 -0
  367. package/src/web-components/elements/fmcp-input.d.ts +95 -0
  368. package/src/web-components/elements/fmcp-input.js +248 -0
  369. package/src/web-components/elements/fmcp-input.js.map +1 -0
  370. package/src/web-components/elements/fmcp-select.d.ts +99 -0
  371. package/src/web-components/elements/fmcp-select.js +243 -0
  372. package/src/web-components/elements/fmcp-select.js.map +1 -0
  373. package/src/web-components/elements/index.d.ts +12 -0
  374. package/src/web-components/elements/index.js +34 -0
  375. package/src/web-components/elements/index.js.map +1 -0
  376. package/src/web-components/index.d.ts +49 -0
  377. package/src/web-components/index.js +75 -0
  378. package/src/web-components/index.js.map +1 -0
  379. package/src/web-components/register.d.ts +56 -0
  380. package/src/web-components/register.js +80 -0
  381. package/src/web-components/register.js.map +1 -0
  382. package/src/web-components/types.d.ts +121 -0
  383. package/src/web-components/types.js +25 -0
  384. package/src/web-components/types.js.map +1 -0
  385. package/src/widgets/index.d.ts +7 -0
  386. package/src/widgets/index.js +24 -0
  387. package/src/widgets/index.js.map +1 -0
  388. package/src/widgets/progress.d.ts +132 -0
  389. package/src/widgets/progress.js +303 -0
  390. package/src/widgets/progress.js.map +1 -0
  391. package/src/widgets/resource.d.ts +162 -0
  392. package/src/widgets/resource.js +340 -0
  393. package/src/widgets/resource.js.map +1 -0
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @file modal.schema.ts
3
+ * @description Zod schemas for Modal, ConfirmModal, and Drawer component options validation.
4
+ *
5
+ * Provides strict validation schemas for modal options including sizes,
6
+ * close behavior, confirm dialogs, and drawers with positioning.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { ModalOptionsSchema, DrawerOptionsSchema } from '@frontmcp/ui';
11
+ *
12
+ * const modalResult = ModalOptionsSchema.safeParse({
13
+ * id: 'my-modal',
14
+ * title: 'Dialog Title',
15
+ * });
16
+ * ```
17
+ *
18
+ * @module @frontmcp/ui/components/modal.schema
19
+ */
20
+ import { z } from 'zod';
21
+ /**
22
+ * Modal size enum schema
23
+ */
24
+ export declare const ModalSizeSchema: z.ZodEnum<{
25
+ sm: "sm";
26
+ lg: "lg";
27
+ xl: "xl";
28
+ md: "md";
29
+ full: "full";
30
+ }>;
31
+ /**
32
+ * Modal size type
33
+ */
34
+ export type ModalSize = z.infer<typeof ModalSizeSchema>;
35
+ /**
36
+ * Close button HTMX options schema
37
+ */
38
+ export declare const ModalOnCloseSchema: z.ZodOptional<z.ZodObject<{
39
+ delete: z.ZodOptional<z.ZodString>;
40
+ target: z.ZodOptional<z.ZodString>;
41
+ swap: z.ZodOptional<z.ZodString>;
42
+ }, z.core.$strict>>;
43
+ /**
44
+ * Modal onClose type
45
+ */
46
+ export type ModalOnClose = z.infer<typeof ModalOnCloseSchema>;
47
+ /**
48
+ * Complete modal options schema
49
+ */
50
+ export declare const ModalOptionsSchema: z.ZodObject<{
51
+ id: z.ZodString;
52
+ title: z.ZodOptional<z.ZodString>;
53
+ size: z.ZodOptional<z.ZodEnum<{
54
+ sm: "sm";
55
+ lg: "lg";
56
+ xl: "xl";
57
+ md: "md";
58
+ full: "full";
59
+ }>>;
60
+ showClose: z.ZodOptional<z.ZodBoolean>;
61
+ closeOnBackdrop: z.ZodOptional<z.ZodBoolean>;
62
+ closeOnEscape: z.ZodOptional<z.ZodBoolean>;
63
+ footer: z.ZodOptional<z.ZodString>;
64
+ className: z.ZodOptional<z.ZodString>;
65
+ open: z.ZodOptional<z.ZodBoolean>;
66
+ onClose: z.ZodOptional<z.ZodObject<{
67
+ delete: z.ZodOptional<z.ZodString>;
68
+ target: z.ZodOptional<z.ZodString>;
69
+ swap: z.ZodOptional<z.ZodString>;
70
+ }, z.core.$strict>>;
71
+ }, z.core.$strict>;
72
+ /**
73
+ * Modal options type (derived from schema)
74
+ */
75
+ export type ModalOptions = z.infer<typeof ModalOptionsSchema>;
76
+ /**
77
+ * Confirm modal variant schema
78
+ */
79
+ export declare const ConfirmModalVariantSchema: z.ZodEnum<{
80
+ warning: "warning";
81
+ danger: "danger";
82
+ info: "info";
83
+ }>;
84
+ /**
85
+ * Confirm modal variant type
86
+ */
87
+ export type ConfirmModalVariant = z.infer<typeof ConfirmModalVariantSchema>;
88
+ /**
89
+ * Confirm modal HTMX schema
90
+ */
91
+ export declare const ConfirmModalOnConfirmSchema: z.ZodOptional<z.ZodObject<{
92
+ post: z.ZodOptional<z.ZodString>;
93
+ delete: z.ZodOptional<z.ZodString>;
94
+ target: z.ZodOptional<z.ZodString>;
95
+ swap: z.ZodOptional<z.ZodString>;
96
+ }, z.core.$strict>>;
97
+ /**
98
+ * Confirm modal options schema
99
+ */
100
+ export declare const ConfirmModalOptionsSchema: z.ZodObject<{
101
+ id: z.ZodString;
102
+ message: z.ZodString;
103
+ title: z.ZodOptional<z.ZodString>;
104
+ variant: z.ZodOptional<z.ZodEnum<{
105
+ warning: "warning";
106
+ danger: "danger";
107
+ info: "info";
108
+ }>>;
109
+ confirmText: z.ZodOptional<z.ZodString>;
110
+ cancelText: z.ZodOptional<z.ZodString>;
111
+ open: z.ZodOptional<z.ZodBoolean>;
112
+ onConfirm: z.ZodOptional<z.ZodObject<{
113
+ post: z.ZodOptional<z.ZodString>;
114
+ delete: z.ZodOptional<z.ZodString>;
115
+ target: z.ZodOptional<z.ZodString>;
116
+ swap: z.ZodOptional<z.ZodString>;
117
+ }, z.core.$strict>>;
118
+ }, z.core.$strict>;
119
+ /**
120
+ * Confirm modal options type
121
+ */
122
+ export type ConfirmModalOptions = z.infer<typeof ConfirmModalOptionsSchema>;
123
+ /**
124
+ * Drawer position enum schema
125
+ */
126
+ export declare const DrawerPositionSchema: z.ZodEnum<{
127
+ top: "top";
128
+ left: "left";
129
+ right: "right";
130
+ bottom: "bottom";
131
+ }>;
132
+ /**
133
+ * Drawer position type
134
+ */
135
+ export type DrawerPosition = z.infer<typeof DrawerPositionSchema>;
136
+ /**
137
+ * Drawer options schema
138
+ */
139
+ export declare const DrawerOptionsSchema: z.ZodObject<{
140
+ id: z.ZodString;
141
+ position: z.ZodOptional<z.ZodEnum<{
142
+ top: "top";
143
+ left: "left";
144
+ right: "right";
145
+ bottom: "bottom";
146
+ }>>;
147
+ size: z.ZodOptional<z.ZodEnum<{
148
+ sm: "sm";
149
+ lg: "lg";
150
+ xl: "xl";
151
+ md: "md";
152
+ full: "full";
153
+ }>>;
154
+ title: z.ZodOptional<z.ZodString>;
155
+ showClose: z.ZodOptional<z.ZodBoolean>;
156
+ footer: z.ZodOptional<z.ZodString>;
157
+ className: z.ZodOptional<z.ZodString>;
158
+ open: z.ZodOptional<z.ZodBoolean>;
159
+ onClose: z.ZodOptional<z.ZodObject<{
160
+ delete: z.ZodOptional<z.ZodString>;
161
+ target: z.ZodOptional<z.ZodString>;
162
+ swap: z.ZodOptional<z.ZodString>;
163
+ }, z.core.$strict>>;
164
+ }, z.core.$strict>;
165
+ /**
166
+ * Drawer options type
167
+ */
168
+ export type DrawerOptions = z.infer<typeof DrawerOptionsSchema>;
169
+ /**
170
+ * Modal trigger options schema
171
+ */
172
+ export declare const ModalTriggerOptionsSchema: z.ZodObject<{
173
+ targetId: z.ZodString;
174
+ text: z.ZodOptional<z.ZodString>;
175
+ tag: z.ZodOptional<z.ZodEnum<{
176
+ button: "button";
177
+ div: "div";
178
+ a: "a";
179
+ span: "span";
180
+ }>>;
181
+ className: z.ZodOptional<z.ZodString>;
182
+ }, z.core.$strict>;
183
+ /**
184
+ * Modal trigger options type
185
+ */
186
+ export type ModalTriggerOptions = z.infer<typeof ModalTriggerOptionsSchema>;
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /**
3
+ * @file modal.schema.ts
4
+ * @description Zod schemas for Modal, ConfirmModal, and Drawer component options validation.
5
+ *
6
+ * Provides strict validation schemas for modal options including sizes,
7
+ * close behavior, confirm dialogs, and drawers with positioning.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { ModalOptionsSchema, DrawerOptionsSchema } from '@frontmcp/ui';
12
+ *
13
+ * const modalResult = ModalOptionsSchema.safeParse({
14
+ * id: 'my-modal',
15
+ * title: 'Dialog Title',
16
+ * });
17
+ * ```
18
+ *
19
+ * @module @frontmcp/ui/components/modal.schema
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ModalTriggerOptionsSchema = exports.DrawerOptionsSchema = exports.DrawerPositionSchema = exports.ConfirmModalOptionsSchema = exports.ConfirmModalOnConfirmSchema = exports.ConfirmModalVariantSchema = exports.ModalOptionsSchema = exports.ModalOnCloseSchema = exports.ModalSizeSchema = void 0;
23
+ const zod_1 = require("zod");
24
+ // ============================================
25
+ // Size Schema
26
+ // ============================================
27
+ /**
28
+ * Modal size enum schema
29
+ */
30
+ exports.ModalSizeSchema = zod_1.z.enum(['sm', 'md', 'lg', 'xl', 'full']);
31
+ // ============================================
32
+ // OnClose Schema
33
+ // ============================================
34
+ /**
35
+ * Close button HTMX options schema
36
+ */
37
+ exports.ModalOnCloseSchema = zod_1.z
38
+ .object({
39
+ delete: zod_1.z.string().optional(),
40
+ target: zod_1.z.string().optional(),
41
+ swap: zod_1.z.string().optional(),
42
+ })
43
+ .strict()
44
+ .optional();
45
+ // ============================================
46
+ // Modal Options Schema
47
+ // ============================================
48
+ /**
49
+ * Complete modal options schema
50
+ */
51
+ exports.ModalOptionsSchema = zod_1.z
52
+ .object({
53
+ /** Modal ID (required) */
54
+ id: zod_1.z.string(),
55
+ /** Modal title */
56
+ title: zod_1.z.string().optional(),
57
+ /** Modal size */
58
+ size: exports.ModalSizeSchema.optional(),
59
+ /** Show close button */
60
+ showClose: zod_1.z.boolean().optional(),
61
+ /** Close on backdrop click */
62
+ closeOnBackdrop: zod_1.z.boolean().optional(),
63
+ /** Close on escape key */
64
+ closeOnEscape: zod_1.z.boolean().optional(),
65
+ /** Footer content (HTML string) */
66
+ footer: zod_1.z.string().optional(),
67
+ /** Additional CSS classes for modal */
68
+ className: zod_1.z.string().optional(),
69
+ /** Initially visible */
70
+ open: zod_1.z.boolean().optional(),
71
+ /** HTMX for closing */
72
+ onClose: exports.ModalOnCloseSchema,
73
+ })
74
+ .strict();
75
+ // ============================================
76
+ // Confirm Modal Schema
77
+ // ============================================
78
+ /**
79
+ * Confirm modal variant schema
80
+ */
81
+ exports.ConfirmModalVariantSchema = zod_1.z.enum(['info', 'warning', 'danger']);
82
+ /**
83
+ * Confirm modal HTMX schema
84
+ */
85
+ exports.ConfirmModalOnConfirmSchema = zod_1.z
86
+ .object({
87
+ post: zod_1.z.string().optional(),
88
+ delete: zod_1.z.string().optional(),
89
+ target: zod_1.z.string().optional(),
90
+ swap: zod_1.z.string().optional(),
91
+ })
92
+ .strict()
93
+ .optional();
94
+ /**
95
+ * Confirm modal options schema
96
+ */
97
+ exports.ConfirmModalOptionsSchema = zod_1.z
98
+ .object({
99
+ /** Modal ID (required) */
100
+ id: zod_1.z.string(),
101
+ /** Confirm message */
102
+ message: zod_1.z.string(),
103
+ /** Title */
104
+ title: zod_1.z.string().optional(),
105
+ /** Variant/severity */
106
+ variant: exports.ConfirmModalVariantSchema.optional(),
107
+ /** Confirm button text */
108
+ confirmText: zod_1.z.string().optional(),
109
+ /** Cancel button text */
110
+ cancelText: zod_1.z.string().optional(),
111
+ /** Initially visible */
112
+ open: zod_1.z.boolean().optional(),
113
+ /** HTMX on confirm */
114
+ onConfirm: exports.ConfirmModalOnConfirmSchema,
115
+ })
116
+ .strict();
117
+ // ============================================
118
+ // Drawer Schema
119
+ // ============================================
120
+ /**
121
+ * Drawer position enum schema
122
+ */
123
+ exports.DrawerPositionSchema = zod_1.z.enum(['left', 'right', 'top', 'bottom']);
124
+ /**
125
+ * Drawer options schema
126
+ */
127
+ exports.DrawerOptionsSchema = zod_1.z
128
+ .object({
129
+ /** Drawer ID (required) */
130
+ id: zod_1.z.string(),
131
+ /** Position */
132
+ position: exports.DrawerPositionSchema.optional(),
133
+ /** Size (width for left/right, height for top/bottom) */
134
+ size: exports.ModalSizeSchema.optional(),
135
+ /** Drawer title */
136
+ title: zod_1.z.string().optional(),
137
+ /** Show close button */
138
+ showClose: zod_1.z.boolean().optional(),
139
+ /** Footer content (HTML string) */
140
+ footer: zod_1.z.string().optional(),
141
+ /** Additional CSS classes */
142
+ className: zod_1.z.string().optional(),
143
+ /** Initially visible */
144
+ open: zod_1.z.boolean().optional(),
145
+ /** HTMX for closing */
146
+ onClose: exports.ModalOnCloseSchema,
147
+ })
148
+ .strict();
149
+ // ============================================
150
+ // Modal Trigger Schema
151
+ // ============================================
152
+ /**
153
+ * Modal trigger options schema
154
+ */
155
+ exports.ModalTriggerOptionsSchema = zod_1.z
156
+ .object({
157
+ /** Target modal ID (required) */
158
+ targetId: zod_1.z.string(),
159
+ /** Trigger text */
160
+ text: zod_1.z.string().optional(),
161
+ /** HTML tag to use */
162
+ tag: zod_1.z.enum(['button', 'a', 'span', 'div']).optional(),
163
+ /** Additional CSS classes */
164
+ className: zod_1.z.string().optional(),
165
+ })
166
+ .strict();
167
+ //# sourceMappingURL=modal.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.schema.js","sourceRoot":"","sources":["../../../src/components/modal.schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @file modal.schema.ts\n * @description Zod schemas for Modal, ConfirmModal, and Drawer component options validation.\n *\n * Provides strict validation schemas for modal options including sizes,\n * close behavior, confirm dialogs, and drawers with positioning.\n *\n * @example\n * ```typescript\n * import { ModalOptionsSchema, DrawerOptionsSchema } from '@frontmcp/ui';\n *\n * const modalResult = ModalOptionsSchema.safeParse({\n * id: 'my-modal',\n * title: 'Dialog Title',\n * });\n * ```\n *\n * @module @frontmcp/ui/components/modal.schema\n */\n\nimport { z } from 'zod';\n\n// ============================================\n// Size Schema\n// ============================================\n\n/**\n * Modal size enum schema\n */\nexport const ModalSizeSchema = z.enum(['sm', 'md', 'lg', 'xl', 'full']);\n\n/**\n * Modal size type\n */\nexport type ModalSize = z.infer<typeof ModalSizeSchema>;\n\n// ============================================\n// OnClose Schema\n// ============================================\n\n/**\n * Close button HTMX options schema\n */\nexport const ModalOnCloseSchema = z\n .object({\n delete: z.string().optional(),\n target: z.string().optional(),\n swap: z.string().optional(),\n })\n .strict()\n .optional();\n\n/**\n * Modal onClose type\n */\nexport type ModalOnClose = z.infer<typeof ModalOnCloseSchema>;\n\n// ============================================\n// Modal Options Schema\n// ============================================\n\n/**\n * Complete modal options schema\n */\nexport const ModalOptionsSchema = z\n .object({\n /** Modal ID (required) */\n id: z.string(),\n /** Modal title */\n title: z.string().optional(),\n /** Modal size */\n size: ModalSizeSchema.optional(),\n /** Show close button */\n showClose: z.boolean().optional(),\n /** Close on backdrop click */\n closeOnBackdrop: z.boolean().optional(),\n /** Close on escape key */\n closeOnEscape: z.boolean().optional(),\n /** Footer content (HTML string) */\n footer: z.string().optional(),\n /** Additional CSS classes for modal */\n className: z.string().optional(),\n /** Initially visible */\n open: z.boolean().optional(),\n /** HTMX for closing */\n onClose: ModalOnCloseSchema,\n })\n .strict();\n\n/**\n * Modal options type (derived from schema)\n */\nexport type ModalOptions = z.infer<typeof ModalOptionsSchema>;\n\n// ============================================\n// Confirm Modal Schema\n// ============================================\n\n/**\n * Confirm modal variant schema\n */\nexport const ConfirmModalVariantSchema = z.enum(['info', 'warning', 'danger']);\n\n/**\n * Confirm modal variant type\n */\nexport type ConfirmModalVariant = z.infer<typeof ConfirmModalVariantSchema>;\n\n/**\n * Confirm modal HTMX schema\n */\nexport const ConfirmModalOnConfirmSchema = z\n .object({\n post: z.string().optional(),\n delete: z.string().optional(),\n target: z.string().optional(),\n swap: z.string().optional(),\n })\n .strict()\n .optional();\n\n/**\n * Confirm modal options schema\n */\nexport const ConfirmModalOptionsSchema = z\n .object({\n /** Modal ID (required) */\n id: z.string(),\n /** Confirm message */\n message: z.string(),\n /** Title */\n title: z.string().optional(),\n /** Variant/severity */\n variant: ConfirmModalVariantSchema.optional(),\n /** Confirm button text */\n confirmText: z.string().optional(),\n /** Cancel button text */\n cancelText: z.string().optional(),\n /** Initially visible */\n open: z.boolean().optional(),\n /** HTMX on confirm */\n onConfirm: ConfirmModalOnConfirmSchema,\n })\n .strict();\n\n/**\n * Confirm modal options type\n */\nexport type ConfirmModalOptions = z.infer<typeof ConfirmModalOptionsSchema>;\n\n// ============================================\n// Drawer Schema\n// ============================================\n\n/**\n * Drawer position enum schema\n */\nexport const DrawerPositionSchema = z.enum(['left', 'right', 'top', 'bottom']);\n\n/**\n * Drawer position type\n */\nexport type DrawerPosition = z.infer<typeof DrawerPositionSchema>;\n\n/**\n * Drawer options schema\n */\nexport const DrawerOptionsSchema = z\n .object({\n /** Drawer ID (required) */\n id: z.string(),\n /** Position */\n position: DrawerPositionSchema.optional(),\n /** Size (width for left/right, height for top/bottom) */\n size: ModalSizeSchema.optional(),\n /** Drawer title */\n title: z.string().optional(),\n /** Show close button */\n showClose: z.boolean().optional(),\n /** Footer content (HTML string) */\n footer: z.string().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n /** Initially visible */\n open: z.boolean().optional(),\n /** HTMX for closing */\n onClose: ModalOnCloseSchema,\n })\n .strict();\n\n/**\n * Drawer options type\n */\nexport type DrawerOptions = z.infer<typeof DrawerOptionsSchema>;\n\n// ============================================\n// Modal Trigger Schema\n// ============================================\n\n/**\n * Modal trigger options schema\n */\nexport const ModalTriggerOptionsSchema = z\n .object({\n /** Target modal ID (required) */\n targetId: z.string(),\n /** Trigger text */\n text: z.string().optional(),\n /** HTML tag to use */\n tag: z.enum(['button', 'a', 'span', 'div']).optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Modal trigger options type\n */\nexport type ModalTriggerOptions = z.infer<typeof ModalTriggerOptionsSchema>;\n"]}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Table Component
3
+ *
4
+ * Data tables with sorting, selection, and HTMX support.
5
+ */
6
+ /**
7
+ * Table column definition
8
+ */
9
+ export interface TableColumn<T = Record<string, unknown>> {
10
+ /** Column key (property name) */
11
+ key: string;
12
+ /** Column header text */
13
+ header: string;
14
+ /** Column width */
15
+ width?: string;
16
+ /** Text alignment */
17
+ align?: 'left' | 'center' | 'right';
18
+ /** Sortable column */
19
+ sortable?: boolean;
20
+ /** Current sort direction */
21
+ sortDirection?: 'asc' | 'desc' | null;
22
+ /** Custom cell renderer */
23
+ render?: (value: unknown, row: T, index: number) => string;
24
+ /** Additional header CSS classes */
25
+ headerClass?: string;
26
+ /** Additional cell CSS classes */
27
+ cellClass?: string;
28
+ }
29
+ /**
30
+ * Table options
31
+ */
32
+ export interface TableOptions<T = Record<string, unknown>> {
33
+ /** Column definitions */
34
+ columns: TableColumn<T>[];
35
+ /** Table ID */
36
+ id?: string;
37
+ /** Show row selection checkboxes */
38
+ selectable?: boolean;
39
+ /** Row hover effect */
40
+ hoverable?: boolean;
41
+ /** Striped rows */
42
+ striped?: boolean;
43
+ /** Bordered cells */
44
+ bordered?: boolean;
45
+ /** Compact size */
46
+ compact?: boolean;
47
+ /** Fixed header (sticky) */
48
+ stickyHeader?: boolean;
49
+ /** Additional CSS classes */
50
+ className?: string;
51
+ /** Empty state message */
52
+ emptyMessage?: string;
53
+ /** Empty state HTML */
54
+ emptyContent?: string;
55
+ /** Loading state */
56
+ loading?: boolean;
57
+ /** HTMX for sorting */
58
+ sortHtmx?: {
59
+ get: string;
60
+ target?: string;
61
+ swap?: string;
62
+ };
63
+ /** HTMX for selection */
64
+ selectHtmx?: {
65
+ post: string;
66
+ target?: string;
67
+ };
68
+ /** Row key property for selection */
69
+ rowKey?: keyof T;
70
+ /** Row click handler (URL template with {key}) */
71
+ onRowClick?: string;
72
+ }
73
+ /**
74
+ * Build a data table
75
+ */
76
+ export declare function table<T extends Record<string, unknown>>(data: T[], options: TableOptions<T>): string;
77
+ /**
78
+ * Pagination options
79
+ */
80
+ export interface PaginationOptions {
81
+ /** Current page (1-indexed) */
82
+ page: number;
83
+ /** Total pages */
84
+ totalPages: number;
85
+ /** Total items */
86
+ totalItems?: number;
87
+ /** Items per page */
88
+ pageSize?: number;
89
+ /** Show page size selector */
90
+ showPageSize?: boolean;
91
+ /** Page size options */
92
+ pageSizeOptions?: number[];
93
+ /** Additional CSS classes */
94
+ className?: string;
95
+ /** HTMX for page changes */
96
+ htmx?: {
97
+ get: string;
98
+ target?: string;
99
+ swap?: string;
100
+ };
101
+ }
102
+ /**
103
+ * Build pagination component
104
+ */
105
+ export declare function pagination(options: PaginationOptions): string;