@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,406 @@
1
+ "use strict";
2
+ /**
3
+ * @file form.schema.ts
4
+ * @description Zod schemas for Form component options validation.
5
+ *
6
+ * Provides strict validation schemas for all form-related components including
7
+ * input, select, textarea, checkbox, radio groups, and form layouts.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { InputOptionsSchema, SelectOptionsSchema } from '@frontmcp/ui';
12
+ *
13
+ * const inputResult = InputOptionsSchema.safeParse({
14
+ * name: 'email',
15
+ * type: 'email',
16
+ * label: 'Email Address',
17
+ * });
18
+ * ```
19
+ *
20
+ * @module @frontmcp/ui/components/form.schema
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.FormActionsOptionsSchema = exports.FormSectionOptionsSchema = exports.FormRowOptionsSchema = exports.FormOptionsSchema = exports.FormFormHtmxSchema = exports.FormEnctypeSchema = exports.FormMethodSchema = exports.RadioGroupOptionsSchema = exports.RadioOptionItemSchema = exports.CheckboxOptionsSchema = exports.CheckboxHtmxSchema = exports.TextareaOptionsSchema = exports.TextareaResizeSchema = exports.SelectOptionsSchema = exports.SelectOptionItemSchema = exports.InputOptionsSchema = exports.FormHtmxSchema = exports.InputStateSchema = exports.InputSizeSchema = exports.InputTypeSchema = void 0;
24
+ const zod_1 = require("zod");
25
+ // ============================================
26
+ // Input Type Schemas
27
+ // ============================================
28
+ /**
29
+ * Input type enum schema
30
+ */
31
+ exports.InputTypeSchema = zod_1.z.enum([
32
+ 'text',
33
+ 'email',
34
+ 'password',
35
+ 'number',
36
+ 'tel',
37
+ 'url',
38
+ 'search',
39
+ 'date',
40
+ 'time',
41
+ 'datetime-local',
42
+ 'hidden',
43
+ ]);
44
+ /**
45
+ * Input size enum schema
46
+ */
47
+ exports.InputSizeSchema = zod_1.z.enum(['sm', 'md', 'lg']);
48
+ /**
49
+ * Input state enum schema
50
+ */
51
+ exports.InputStateSchema = zod_1.z.enum(['default', 'error', 'success', 'warning']);
52
+ // ============================================
53
+ // HTMX Schema for Form Fields
54
+ // ============================================
55
+ /**
56
+ * Form field HTMX options schema
57
+ */
58
+ exports.FormHtmxSchema = zod_1.z
59
+ .object({
60
+ post: zod_1.z.string().optional(),
61
+ get: zod_1.z.string().optional(),
62
+ target: zod_1.z.string().optional(),
63
+ swap: zod_1.z.string().optional(),
64
+ trigger: zod_1.z.string().optional(),
65
+ validate: zod_1.z.boolean().optional(),
66
+ })
67
+ .strict()
68
+ .optional();
69
+ // ============================================
70
+ // Input Options Schema
71
+ // ============================================
72
+ /**
73
+ * Complete input options schema
74
+ */
75
+ exports.InputOptionsSchema = zod_1.z
76
+ .object({
77
+ /** Input type */
78
+ type: exports.InputTypeSchema.optional(),
79
+ /** Input name (required) */
80
+ name: zod_1.z.string(),
81
+ /** Input ID (defaults to name) */
82
+ id: zod_1.z.string().optional(),
83
+ /** Input value */
84
+ value: zod_1.z.string().optional(),
85
+ /** Placeholder text */
86
+ placeholder: zod_1.z.string().optional(),
87
+ /** Label text */
88
+ label: zod_1.z.string().optional(),
89
+ /** Helper text */
90
+ helper: zod_1.z.string().optional(),
91
+ /** Error message */
92
+ error: zod_1.z.string().optional(),
93
+ /** Input size */
94
+ size: exports.InputSizeSchema.optional(),
95
+ /** Input state */
96
+ state: exports.InputStateSchema.optional(),
97
+ /** Required field */
98
+ required: zod_1.z.boolean().optional(),
99
+ /** Disabled state */
100
+ disabled: zod_1.z.boolean().optional(),
101
+ /** Readonly state */
102
+ readonly: zod_1.z.boolean().optional(),
103
+ /** Autocomplete attribute */
104
+ autocomplete: zod_1.z.string().optional(),
105
+ /** Pattern for validation */
106
+ pattern: zod_1.z.string().optional(),
107
+ /** Min value (for number/date) */
108
+ min: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]).optional(),
109
+ /** Max value (for number/date) */
110
+ max: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]).optional(),
111
+ /** Step value (for number) */
112
+ step: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]).optional(),
113
+ /** Additional CSS classes */
114
+ className: zod_1.z.string().optional(),
115
+ /** HTMX attributes */
116
+ htmx: exports.FormHtmxSchema,
117
+ /** Data attributes */
118
+ data: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
119
+ /** Icon before input (HTML string) */
120
+ iconBefore: zod_1.z.string().optional(),
121
+ /** Icon after input (HTML string) */
122
+ iconAfter: zod_1.z.string().optional(),
123
+ })
124
+ .strict();
125
+ // ============================================
126
+ // Select Options Schema
127
+ // ============================================
128
+ /**
129
+ * Select option item schema
130
+ */
131
+ exports.SelectOptionItemSchema = zod_1.z
132
+ .object({
133
+ value: zod_1.z.string(),
134
+ label: zod_1.z.string(),
135
+ disabled: zod_1.z.boolean().optional(),
136
+ selected: zod_1.z.boolean().optional(),
137
+ })
138
+ .strict();
139
+ /**
140
+ * Complete select options schema
141
+ */
142
+ exports.SelectOptionsSchema = zod_1.z
143
+ .object({
144
+ /** Input name (required) */
145
+ name: zod_1.z.string(),
146
+ /** Input ID (defaults to name) */
147
+ id: zod_1.z.string().optional(),
148
+ /** Input value */
149
+ value: zod_1.z.string().optional(),
150
+ /** Placeholder text */
151
+ placeholder: zod_1.z.string().optional(),
152
+ /** Label text */
153
+ label: zod_1.z.string().optional(),
154
+ /** Helper text */
155
+ helper: zod_1.z.string().optional(),
156
+ /** Error message */
157
+ error: zod_1.z.string().optional(),
158
+ /** Input size */
159
+ size: exports.InputSizeSchema.optional(),
160
+ /** Input state */
161
+ state: exports.InputStateSchema.optional(),
162
+ /** Required field */
163
+ required: zod_1.z.boolean().optional(),
164
+ /** Disabled state */
165
+ disabled: zod_1.z.boolean().optional(),
166
+ /** Readonly state */
167
+ readonly: zod_1.z.boolean().optional(),
168
+ /** Additional CSS classes */
169
+ className: zod_1.z.string().optional(),
170
+ /** HTMX attributes */
171
+ htmx: exports.FormHtmxSchema,
172
+ /** Data attributes */
173
+ data: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
174
+ /** Icon before input (HTML string) */
175
+ iconBefore: zod_1.z.string().optional(),
176
+ /** Icon after input (HTML string) */
177
+ iconAfter: zod_1.z.string().optional(),
178
+ /** Select options (required) */
179
+ options: zod_1.z.array(exports.SelectOptionItemSchema),
180
+ /** Multiple selection */
181
+ multiple: zod_1.z.boolean().optional(),
182
+ })
183
+ .strict();
184
+ // ============================================
185
+ // Textarea Options Schema
186
+ // ============================================
187
+ /**
188
+ * Textarea resize enum schema
189
+ */
190
+ exports.TextareaResizeSchema = zod_1.z.enum(['none', 'vertical', 'horizontal', 'both']);
191
+ /**
192
+ * Complete textarea options schema
193
+ */
194
+ exports.TextareaOptionsSchema = zod_1.z
195
+ .object({
196
+ /** Input name (required) */
197
+ name: zod_1.z.string(),
198
+ /** Input ID (defaults to name) */
199
+ id: zod_1.z.string().optional(),
200
+ /** Input value */
201
+ value: zod_1.z.string().optional(),
202
+ /** Placeholder text */
203
+ placeholder: zod_1.z.string().optional(),
204
+ /** Label text */
205
+ label: zod_1.z.string().optional(),
206
+ /** Helper text */
207
+ helper: zod_1.z.string().optional(),
208
+ /** Error message */
209
+ error: zod_1.z.string().optional(),
210
+ /** Input size */
211
+ size: exports.InputSizeSchema.optional(),
212
+ /** Input state */
213
+ state: exports.InputStateSchema.optional(),
214
+ /** Required field */
215
+ required: zod_1.z.boolean().optional(),
216
+ /** Disabled state */
217
+ disabled: zod_1.z.boolean().optional(),
218
+ /** Readonly state */
219
+ readonly: zod_1.z.boolean().optional(),
220
+ /** Autocomplete attribute */
221
+ autocomplete: zod_1.z.string().optional(),
222
+ /** Additional CSS classes */
223
+ className: zod_1.z.string().optional(),
224
+ /** HTMX attributes */
225
+ htmx: exports.FormHtmxSchema,
226
+ /** Data attributes */
227
+ data: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
228
+ /** Icon before input (HTML string) */
229
+ iconBefore: zod_1.z.string().optional(),
230
+ /** Icon after input (HTML string) */
231
+ iconAfter: zod_1.z.string().optional(),
232
+ /** Number of rows */
233
+ rows: zod_1.z.number().min(1).optional(),
234
+ /** Resize behavior */
235
+ resize: exports.TextareaResizeSchema.optional(),
236
+ })
237
+ .strict();
238
+ // ============================================
239
+ // Checkbox Options Schema
240
+ // ============================================
241
+ /**
242
+ * Checkbox HTMX options schema
243
+ */
244
+ exports.CheckboxHtmxSchema = zod_1.z
245
+ .object({
246
+ post: zod_1.z.string().optional(),
247
+ get: zod_1.z.string().optional(),
248
+ target: zod_1.z.string().optional(),
249
+ swap: zod_1.z.string().optional(),
250
+ trigger: zod_1.z.string().optional(),
251
+ })
252
+ .strict()
253
+ .optional();
254
+ /**
255
+ * Complete checkbox options schema
256
+ */
257
+ exports.CheckboxOptionsSchema = zod_1.z
258
+ .object({
259
+ /** Input name (required) */
260
+ name: zod_1.z.string(),
261
+ /** Input ID */
262
+ id: zod_1.z.string().optional(),
263
+ /** Input value */
264
+ value: zod_1.z.string().optional(),
265
+ /** Label text (required) */
266
+ label: zod_1.z.string(),
267
+ /** Checked state */
268
+ checked: zod_1.z.boolean().optional(),
269
+ /** Disabled state */
270
+ disabled: zod_1.z.boolean().optional(),
271
+ /** Helper text */
272
+ helper: zod_1.z.string().optional(),
273
+ /** Error message */
274
+ error: zod_1.z.string().optional(),
275
+ /** Additional CSS classes */
276
+ className: zod_1.z.string().optional(),
277
+ /** HTMX attributes */
278
+ htmx: exports.CheckboxHtmxSchema,
279
+ })
280
+ .strict();
281
+ // ============================================
282
+ // Radio Group Options Schema
283
+ // ============================================
284
+ /**
285
+ * Radio option item schema
286
+ */
287
+ exports.RadioOptionItemSchema = zod_1.z
288
+ .object({
289
+ value: zod_1.z.string(),
290
+ label: zod_1.z.string(),
291
+ disabled: zod_1.z.boolean().optional(),
292
+ })
293
+ .strict();
294
+ /**
295
+ * Complete radio group options schema
296
+ */
297
+ exports.RadioGroupOptionsSchema = zod_1.z
298
+ .object({
299
+ /** Group name (required) */
300
+ name: zod_1.z.string(),
301
+ /** Radio options (required) */
302
+ options: zod_1.z.array(exports.RadioOptionItemSchema),
303
+ /** Selected value */
304
+ value: zod_1.z.string().optional(),
305
+ /** Label for the group */
306
+ label: zod_1.z.string().optional(),
307
+ /** Helper text */
308
+ helper: zod_1.z.string().optional(),
309
+ /** Error message */
310
+ error: zod_1.z.string().optional(),
311
+ /** Layout direction */
312
+ direction: zod_1.z.enum(['horizontal', 'vertical']).optional(),
313
+ /** Additional CSS classes */
314
+ className: zod_1.z.string().optional(),
315
+ })
316
+ .strict();
317
+ // ============================================
318
+ // Form Options Schema
319
+ // ============================================
320
+ /**
321
+ * Form method enum schema
322
+ */
323
+ exports.FormMethodSchema = zod_1.z.enum(['get', 'post', 'dialog']);
324
+ /**
325
+ * Form enctype enum schema
326
+ */
327
+ exports.FormEnctypeSchema = zod_1.z.enum(['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain']);
328
+ /**
329
+ * Form HTMX options schema
330
+ */
331
+ exports.FormFormHtmxSchema = zod_1.z
332
+ .object({
333
+ post: zod_1.z.string().optional(),
334
+ put: zod_1.z.string().optional(),
335
+ patch: zod_1.z.string().optional(),
336
+ delete: zod_1.z.string().optional(),
337
+ target: zod_1.z.string().optional(),
338
+ swap: zod_1.z.string().optional(),
339
+ encoding: zod_1.z.string().optional(),
340
+ })
341
+ .strict()
342
+ .optional();
343
+ /**
344
+ * Complete form options schema
345
+ */
346
+ exports.FormOptionsSchema = zod_1.z
347
+ .object({
348
+ /** Form action URL */
349
+ action: zod_1.z.string().optional(),
350
+ /** Form method */
351
+ method: exports.FormMethodSchema.optional(),
352
+ /** Form ID */
353
+ id: zod_1.z.string().optional(),
354
+ /** Form enctype */
355
+ enctype: exports.FormEnctypeSchema.optional(),
356
+ /** Disable browser validation */
357
+ novalidate: zod_1.z.boolean().optional(),
358
+ /** Autocomplete behavior */
359
+ autocomplete: zod_1.z.enum(['on', 'off']).optional(),
360
+ /** Additional CSS classes */
361
+ className: zod_1.z.string().optional(),
362
+ /** HTMX attributes */
363
+ htmx: exports.FormFormHtmxSchema,
364
+ })
365
+ .strict();
366
+ // ============================================
367
+ // Form Row & Section Options
368
+ // ============================================
369
+ /**
370
+ * Form row options schema
371
+ */
372
+ exports.FormRowOptionsSchema = zod_1.z
373
+ .object({
374
+ /** Number of columns */
375
+ cols: zod_1.z.number().min(1).max(12).optional(),
376
+ /** Gap between columns */
377
+ gap: zod_1.z.enum(['sm', 'md', 'lg']).optional(),
378
+ /** Additional CSS classes */
379
+ className: zod_1.z.string().optional(),
380
+ })
381
+ .strict();
382
+ /**
383
+ * Form section options schema
384
+ */
385
+ exports.FormSectionOptionsSchema = zod_1.z
386
+ .object({
387
+ /** Section title */
388
+ title: zod_1.z.string().optional(),
389
+ /** Section description */
390
+ description: zod_1.z.string().optional(),
391
+ /** Additional CSS classes */
392
+ className: zod_1.z.string().optional(),
393
+ })
394
+ .strict();
395
+ /**
396
+ * Form actions options schema
397
+ */
398
+ exports.FormActionsOptionsSchema = zod_1.z
399
+ .object({
400
+ /** Alignment */
401
+ align: zod_1.z.enum(['left', 'center', 'right', 'between']).optional(),
402
+ /** Additional CSS classes */
403
+ className: zod_1.z.string().optional(),
404
+ })
405
+ .strict();
406
+ //# sourceMappingURL=form.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.schema.js","sourceRoot":"","sources":["../../../src/components/form.schema.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,6BAAwB;AAExB,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,IAAI,CAAC;IACpC,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,KAAK;IACL,KAAK;IACL,QAAQ;IACR,MAAM;IACN,MAAM;IACN,gBAAgB;IAChB,QAAQ;CACT,CAAC,CAAC;AAOH;;GAEG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAO1D;;GAEG;AACU,QAAA,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAOnF,+CAA+C;AAC/C,8BAA8B;AAC9B,+CAA+C;AAE/C;;GAEG;AACU,QAAA,cAAc,GAAG,OAAC;KAC5B,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,EAAE,CAAC;AAOd,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,CAAC;IACN,iBAAiB;IACjB,IAAI,EAAE,uBAAe,CAAC,QAAQ,EAAE;IAChC,4BAA4B;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,kCAAkC;IAClC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,kBAAkB;IAClB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uBAAuB;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,iBAAiB;IACjB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,kBAAkB;IAClB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,oBAAoB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,iBAAiB;IACjB,IAAI,EAAE,uBAAe,CAAC,QAAQ,EAAE;IAChC,kBAAkB;IAClB,KAAK,EAAE,wBAAgB,CAAC,QAAQ,EAAE;IAClC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,6BAA6B;IAC7B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,6BAA6B;IAC7B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,kCAAkC;IAClC,GAAG,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,kCAAkC;IAClC,GAAG,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,8BAA8B;IAC9B,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClD,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,sBAAsB;IACtB,IAAI,EAAE,sBAAc;IACpB,sBAAsB;IACtB,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjD,sCAAsC;IACtC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,qCAAqC;IACrC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,wBAAwB;AACxB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,sBAAsB,GAAG,OAAC;KACpC,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ;;GAEG;AACU,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,CAAC;IACN,4BAA4B;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,kCAAkC;IAClC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,kBAAkB;IAClB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uBAAuB;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,iBAAiB;IACjB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,kBAAkB;IAClB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,oBAAoB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,iBAAiB;IACjB,IAAI,EAAE,uBAAe,CAAC,QAAQ,EAAE;IAChC,kBAAkB;IAClB,KAAK,EAAE,wBAAgB,CAAC,QAAQ,EAAE;IAClC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,sBAAsB;IACtB,IAAI,EAAE,sBAAc;IACpB,sBAAsB;IACtB,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjD,sCAAsC;IACtC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,qCAAqC;IACrC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,gCAAgC;IAChC,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,8BAAsB,CAAC;IACxC,yBAAyB;IACzB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,0BAA0B;AAC1B,+CAA+C;AAE/C;;GAEG;AACU,QAAA,oBAAoB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvF;;GAEG;AACU,QAAA,qBAAqB,GAAG,OAAC;KACnC,MAAM,CAAC;IACN,4BAA4B;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,kCAAkC;IAClC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,kBAAkB;IAClB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uBAAuB;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,iBAAiB;IACjB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,kBAAkB;IAClB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,oBAAoB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,iBAAiB;IACjB,IAAI,EAAE,uBAAe,CAAC,QAAQ,EAAE;IAChC,kBAAkB;IAClB,KAAK,EAAE,wBAAgB,CAAC,QAAQ,EAAE;IAClC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,6BAA6B;IAC7B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,sBAAsB;IACtB,IAAI,EAAE,sBAAc;IACpB,sBAAsB;IACtB,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjD,sCAAsC;IACtC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,qCAAqC;IACrC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,qBAAqB;IACrB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,sBAAsB;IACtB,MAAM,EAAE,4BAAoB,CAAC,QAAQ,EAAE;CACxC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,0BAA0B;AAC1B,+CAA+C;AAE/C;;GAEG;AACU,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,EAAE,CAAC;AAEd;;GAEG;AACU,QAAA,qBAAqB,GAAG,OAAC;KACnC,MAAM,CAAC;IACN,4BAA4B;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,eAAe;IACf,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,kBAAkB;IAClB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,4BAA4B;IAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,oBAAoB;IACpB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,qBAAqB;IACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,kBAAkB;IAClB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,oBAAoB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,sBAAsB;IACtB,IAAI,EAAE,0BAAkB;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,6BAA6B;AAC7B,+CAA+C;AAE/C;;GAEG;AACU,QAAA,qBAAqB,GAAG,OAAC;KACnC,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ;;GAEG;AACU,QAAA,uBAAuB,GAAG,OAAC;KACrC,MAAM,CAAC;IACN,4BAA4B;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,+BAA+B;IAC/B,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,6BAAqB,CAAC;IACvC,qBAAqB;IACrB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,0BAA0B;IAC1B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,kBAAkB;IAClB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,oBAAoB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uBAAuB;IACvB,SAAS,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,sBAAsB;AACtB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE;;GAEG;AACU,QAAA,iBAAiB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,mCAAmC,EAAE,qBAAqB,EAAE,YAAY,CAAC,CAAC,CAAC;AAEpH;;GAEG;AACU,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,EAAE,CAAC;AAEd;;GAEG;AACU,QAAA,iBAAiB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,sBAAsB;IACtB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,kBAAkB;IAClB,MAAM,EAAE,wBAAgB,CAAC,QAAQ,EAAE;IACnC,cAAc;IACd,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,mBAAmB;IACnB,OAAO,EAAE,yBAAiB,CAAC,QAAQ,EAAE;IACrC,iCAAiC;IACjC,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,4BAA4B;IAC5B,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9C,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,sBAAsB;IACtB,IAAI,EAAE,0BAAkB;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,6BAA6B;AAC7B,+CAA+C;AAE/C;;GAEG;AACU,QAAA,oBAAoB,GAAG,OAAC;KAClC,MAAM,CAAC;IACN,wBAAwB;IACxB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,0BAA0B;IAC1B,GAAG,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ;;GAEG;AACU,QAAA,wBAAwB,GAAG,OAAC;KACtC,MAAM,CAAC;IACN,oBAAoB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,0BAA0B;IAC1B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ;;GAEG;AACU,QAAA,wBAAwB,GAAG,OAAC;KACtC,MAAM,CAAC;IACN,gBAAgB;IAChB,KAAK,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChE,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC","sourcesContent":["/**\n * @file form.schema.ts\n * @description Zod schemas for Form component options validation.\n *\n * Provides strict validation schemas for all form-related components including\n * input, select, textarea, checkbox, radio groups, and form layouts.\n *\n * @example\n * ```typescript\n * import { InputOptionsSchema, SelectOptionsSchema } from '@frontmcp/ui';\n *\n * const inputResult = InputOptionsSchema.safeParse({\n * name: 'email',\n * type: 'email',\n * label: 'Email Address',\n * });\n * ```\n *\n * @module @frontmcp/ui/components/form.schema\n */\n\nimport { z } from 'zod';\n\n// ============================================\n// Input Type Schemas\n// ============================================\n\n/**\n * Input type enum schema\n */\nexport const InputTypeSchema = z.enum([\n 'text',\n 'email',\n 'password',\n 'number',\n 'tel',\n 'url',\n 'search',\n 'date',\n 'time',\n 'datetime-local',\n 'hidden',\n]);\n\n/**\n * Input type\n */\nexport type InputType = z.infer<typeof InputTypeSchema>;\n\n/**\n * Input size enum schema\n */\nexport const InputSizeSchema = z.enum(['sm', 'md', 'lg']);\n\n/**\n * Input size type\n */\nexport type InputSize = z.infer<typeof InputSizeSchema>;\n\n/**\n * Input state enum schema\n */\nexport const InputStateSchema = z.enum(['default', 'error', 'success', 'warning']);\n\n/**\n * Input state type\n */\nexport type InputState = z.infer<typeof InputStateSchema>;\n\n// ============================================\n// HTMX Schema for Form Fields\n// ============================================\n\n/**\n * Form field HTMX options schema\n */\nexport const FormHtmxSchema = z\n .object({\n post: z.string().optional(),\n get: z.string().optional(),\n target: z.string().optional(),\n swap: z.string().optional(),\n trigger: z.string().optional(),\n validate: z.boolean().optional(),\n })\n .strict()\n .optional();\n\n/**\n * Form field HTMX type\n */\nexport type FormHtmx = z.infer<typeof FormHtmxSchema>;\n\n// ============================================\n// Input Options Schema\n// ============================================\n\n/**\n * Complete input options schema\n */\nexport const InputOptionsSchema = z\n .object({\n /** Input type */\n type: InputTypeSchema.optional(),\n /** Input name (required) */\n name: z.string(),\n /** Input ID (defaults to name) */\n id: z.string().optional(),\n /** Input value */\n value: z.string().optional(),\n /** Placeholder text */\n placeholder: z.string().optional(),\n /** Label text */\n label: z.string().optional(),\n /** Helper text */\n helper: z.string().optional(),\n /** Error message */\n error: z.string().optional(),\n /** Input size */\n size: InputSizeSchema.optional(),\n /** Input state */\n state: InputStateSchema.optional(),\n /** Required field */\n required: z.boolean().optional(),\n /** Disabled state */\n disabled: z.boolean().optional(),\n /** Readonly state */\n readonly: z.boolean().optional(),\n /** Autocomplete attribute */\n autocomplete: z.string().optional(),\n /** Pattern for validation */\n pattern: z.string().optional(),\n /** Min value (for number/date) */\n min: z.union([z.string(), z.number()]).optional(),\n /** Max value (for number/date) */\n max: z.union([z.string(), z.number()]).optional(),\n /** Step value (for number) */\n step: z.union([z.string(), z.number()]).optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n /** HTMX attributes */\n htmx: FormHtmxSchema,\n /** Data attributes */\n data: z.record(z.string(), z.string()).optional(),\n /** Icon before input (HTML string) */\n iconBefore: z.string().optional(),\n /** Icon after input (HTML string) */\n iconAfter: z.string().optional(),\n })\n .strict();\n\n/**\n * Input options type (derived from schema)\n */\nexport type InputOptions = z.infer<typeof InputOptionsSchema>;\n\n// ============================================\n// Select Options Schema\n// ============================================\n\n/**\n * Select option item schema\n */\nexport const SelectOptionItemSchema = z\n .object({\n value: z.string(),\n label: z.string(),\n disabled: z.boolean().optional(),\n selected: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Select option item type\n */\nexport type SelectOptionItem = z.infer<typeof SelectOptionItemSchema>;\n\n/**\n * Complete select options schema\n */\nexport const SelectOptionsSchema = z\n .object({\n /** Input name (required) */\n name: z.string(),\n /** Input ID (defaults to name) */\n id: z.string().optional(),\n /** Input value */\n value: z.string().optional(),\n /** Placeholder text */\n placeholder: z.string().optional(),\n /** Label text */\n label: z.string().optional(),\n /** Helper text */\n helper: z.string().optional(),\n /** Error message */\n error: z.string().optional(),\n /** Input size */\n size: InputSizeSchema.optional(),\n /** Input state */\n state: InputStateSchema.optional(),\n /** Required field */\n required: z.boolean().optional(),\n /** Disabled state */\n disabled: z.boolean().optional(),\n /** Readonly state */\n readonly: z.boolean().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n /** HTMX attributes */\n htmx: FormHtmxSchema,\n /** Data attributes */\n data: z.record(z.string(), z.string()).optional(),\n /** Icon before input (HTML string) */\n iconBefore: z.string().optional(),\n /** Icon after input (HTML string) */\n iconAfter: z.string().optional(),\n /** Select options (required) */\n options: z.array(SelectOptionItemSchema),\n /** Multiple selection */\n multiple: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Select options type\n */\nexport type SelectOptions = z.infer<typeof SelectOptionsSchema>;\n\n// ============================================\n// Textarea Options Schema\n// ============================================\n\n/**\n * Textarea resize enum schema\n */\nexport const TextareaResizeSchema = z.enum(['none', 'vertical', 'horizontal', 'both']);\n\n/**\n * Complete textarea options schema\n */\nexport const TextareaOptionsSchema = z\n .object({\n /** Input name (required) */\n name: z.string(),\n /** Input ID (defaults to name) */\n id: z.string().optional(),\n /** Input value */\n value: z.string().optional(),\n /** Placeholder text */\n placeholder: z.string().optional(),\n /** Label text */\n label: z.string().optional(),\n /** Helper text */\n helper: z.string().optional(),\n /** Error message */\n error: z.string().optional(),\n /** Input size */\n size: InputSizeSchema.optional(),\n /** Input state */\n state: InputStateSchema.optional(),\n /** Required field */\n required: z.boolean().optional(),\n /** Disabled state */\n disabled: z.boolean().optional(),\n /** Readonly state */\n readonly: z.boolean().optional(),\n /** Autocomplete attribute */\n autocomplete: z.string().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n /** HTMX attributes */\n htmx: FormHtmxSchema,\n /** Data attributes */\n data: z.record(z.string(), z.string()).optional(),\n /** Icon before input (HTML string) */\n iconBefore: z.string().optional(),\n /** Icon after input (HTML string) */\n iconAfter: z.string().optional(),\n /** Number of rows */\n rows: z.number().min(1).optional(),\n /** Resize behavior */\n resize: TextareaResizeSchema.optional(),\n })\n .strict();\n\n/**\n * Textarea options type\n */\nexport type TextareaOptions = z.infer<typeof TextareaOptionsSchema>;\n\n// ============================================\n// Checkbox Options Schema\n// ============================================\n\n/**\n * Checkbox HTMX options schema\n */\nexport const CheckboxHtmxSchema = z\n .object({\n post: z.string().optional(),\n get: z.string().optional(),\n target: z.string().optional(),\n swap: z.string().optional(),\n trigger: z.string().optional(),\n })\n .strict()\n .optional();\n\n/**\n * Complete checkbox options schema\n */\nexport const CheckboxOptionsSchema = z\n .object({\n /** Input name (required) */\n name: z.string(),\n /** Input ID */\n id: z.string().optional(),\n /** Input value */\n value: z.string().optional(),\n /** Label text (required) */\n label: z.string(),\n /** Checked state */\n checked: z.boolean().optional(),\n /** Disabled state */\n disabled: z.boolean().optional(),\n /** Helper text */\n helper: z.string().optional(),\n /** Error message */\n error: z.string().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n /** HTMX attributes */\n htmx: CheckboxHtmxSchema,\n })\n .strict();\n\n/**\n * Checkbox options type\n */\nexport type CheckboxOptions = z.infer<typeof CheckboxOptionsSchema>;\n\n// ============================================\n// Radio Group Options Schema\n// ============================================\n\n/**\n * Radio option item schema\n */\nexport const RadioOptionItemSchema = z\n .object({\n value: z.string(),\n label: z.string(),\n disabled: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Radio option item type\n */\nexport type RadioOptionItem = z.infer<typeof RadioOptionItemSchema>;\n\n/**\n * Complete radio group options schema\n */\nexport const RadioGroupOptionsSchema = z\n .object({\n /** Group name (required) */\n name: z.string(),\n /** Radio options (required) */\n options: z.array(RadioOptionItemSchema),\n /** Selected value */\n value: z.string().optional(),\n /** Label for the group */\n label: z.string().optional(),\n /** Helper text */\n helper: z.string().optional(),\n /** Error message */\n error: z.string().optional(),\n /** Layout direction */\n direction: z.enum(['horizontal', 'vertical']).optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Radio group options type\n */\nexport type RadioGroupOptions = z.infer<typeof RadioGroupOptionsSchema>;\n\n// ============================================\n// Form Options Schema\n// ============================================\n\n/**\n * Form method enum schema\n */\nexport const FormMethodSchema = z.enum(['get', 'post', 'dialog']);\n\n/**\n * Form enctype enum schema\n */\nexport const FormEnctypeSchema = z.enum(['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain']);\n\n/**\n * Form HTMX options schema\n */\nexport const FormFormHtmxSchema = z\n .object({\n post: z.string().optional(),\n put: z.string().optional(),\n patch: z.string().optional(),\n delete: z.string().optional(),\n target: z.string().optional(),\n swap: z.string().optional(),\n encoding: z.string().optional(),\n })\n .strict()\n .optional();\n\n/**\n * Complete form options schema\n */\nexport const FormOptionsSchema = z\n .object({\n /** Form action URL */\n action: z.string().optional(),\n /** Form method */\n method: FormMethodSchema.optional(),\n /** Form ID */\n id: z.string().optional(),\n /** Form enctype */\n enctype: FormEnctypeSchema.optional(),\n /** Disable browser validation */\n novalidate: z.boolean().optional(),\n /** Autocomplete behavior */\n autocomplete: z.enum(['on', 'off']).optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n /** HTMX attributes */\n htmx: FormFormHtmxSchema,\n })\n .strict();\n\n/**\n * Form options type\n */\nexport type FormOptions = z.infer<typeof FormOptionsSchema>;\n\n// ============================================\n// Form Row & Section Options\n// ============================================\n\n/**\n * Form row options schema\n */\nexport const FormRowOptionsSchema = z\n .object({\n /** Number of columns */\n cols: z.number().min(1).max(12).optional(),\n /** Gap between columns */\n gap: z.enum(['sm', 'md', 'lg']).optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Form row options type\n */\nexport type FormRowOptions = z.infer<typeof FormRowOptionsSchema>;\n\n/**\n * Form section options schema\n */\nexport const FormSectionOptionsSchema = z\n .object({\n /** Section title */\n title: z.string().optional(),\n /** Section description */\n description: z.string().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Form section options type\n */\nexport type FormSectionOptions = z.infer<typeof FormSectionOptionsSchema>;\n\n/**\n * Form actions options schema\n */\nexport const FormActionsOptionsSchema = z\n .object({\n /** Alignment */\n align: z.enum(['left', 'center', 'right', 'between']).optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Form actions options type\n */\nexport type FormActionsOptions = z.infer<typeof FormActionsOptionsSchema>;\n"]}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @file index.ts
3
+ * @description UI Components Module for FrontMCP.
4
+ *
5
+ * Provides reusable UI components for FrontMCP pages including:
6
+ * - Button, Card, Badge, Alert, Avatar, Modal, Table, Form, List components
7
+ * - Zod schemas for all component options (for runtime validation)
8
+ * - Full HTMX support for dynamic interactions
9
+ *
10
+ * @module @frontmcp/ui/components
11
+ */
12
+ export * from './button.schema';
13
+ export * from './card.schema';
14
+ export * from './badge.schema';
15
+ export * from './alert.schema';
16
+ export * from './avatar.schema';
17
+ export * from './modal.schema';
18
+ export * from './table.schema';
19
+ export * from './form.schema';
20
+ export * from './list.schema';
21
+ export { type ButtonVariant, type ButtonSize, type ButtonOptions, type ButtonGroupOptions, button, buttonGroup, primaryButton, secondaryButton, outlineButton, ghostButton, dangerButton, linkButton, } from './button';
22
+ export { type CardVariant, type CardSize, type CardOptions, card, cardGroup } from './card';
23
+ export { type InputType, type InputSize, type InputState, type InputOptions, type SelectOption, type SelectOptions, type TextareaOptions, type CheckboxOptions, type RadioGroupOptions, type FormOptions, input, select, textarea, checkbox, radioGroup, form, formRow, formSection, formActions, hiddenInput, csrfInput, } from './form';
24
+ export { type BadgeVariant, type BadgeSize, type BadgeOptions, badge, badgeGroup, activeBadge, inactiveBadge, pendingBadge, errorBadge, newBadge, betaBadge, onlineDot, offlineDot, busyDot, awayDot, } from './badge';
25
+ export { type AlertVariant, type AlertOptions, type ToastOptions, alert, infoAlert, successAlert, warningAlert, dangerAlert, toast, toastContainer, } from './alert';
26
+ export { type AvatarSize, type AvatarShape, type AvatarStatus, type AvatarOptions, type AvatarGroupOptions, type AvatarWithTextOptions, avatar, avatarGroup, avatarWithText, } from './avatar';
27
+ export { type ModalSize, type ModalOptions, type ConfirmModalOptions, type DrawerPosition, type DrawerOptions, modal, modalTrigger, confirmModal, drawer, } from './modal';
28
+ export { type TableColumn, type TableOptions, type PaginationOptions, table, pagination } from './table';
29
+ export { type PermissionItem, type FeatureItem, type DescriptionItem, type PermissionListOptions, type FeatureListOptions, type DescriptionListOptions, type ActionItem, permissionList, featureList, descriptionList, actionList, } from './list';
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ /**
3
+ * @file index.ts
4
+ * @description UI Components Module for FrontMCP.
5
+ *
6
+ * Provides reusable UI components for FrontMCP pages including:
7
+ * - Button, Card, Badge, Alert, Avatar, Modal, Table, Form, List components
8
+ * - Zod schemas for all component options (for runtime validation)
9
+ * - Full HTMX support for dynamic interactions
10
+ *
11
+ * @module @frontmcp/ui/components
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.featureList = exports.permissionList = exports.pagination = exports.table = exports.drawer = exports.confirmModal = exports.modalTrigger = exports.modal = exports.avatarWithText = exports.avatarGroup = exports.avatar = exports.toastContainer = exports.toast = exports.dangerAlert = exports.warningAlert = exports.successAlert = exports.infoAlert = exports.awayDot = exports.busyDot = exports.offlineDot = exports.onlineDot = exports.betaBadge = exports.newBadge = exports.errorBadge = exports.pendingBadge = exports.inactiveBadge = exports.activeBadge = exports.badgeGroup = exports.badge = exports.csrfInput = exports.hiddenInput = exports.formActions = exports.formSection = exports.formRow = exports.form = exports.radioGroup = exports.checkbox = exports.textarea = exports.select = exports.input = exports.cardGroup = exports.card = exports.linkButton = exports.dangerButton = exports.ghostButton = exports.outlineButton = exports.secondaryButton = exports.primaryButton = exports.buttonGroup = exports.button = void 0;
15
+ exports.actionList = exports.descriptionList = void 0;
16
+ const tslib_1 = require("tslib");
17
+ // Component Schemas (Zod validation)
18
+ tslib_1.__exportStar(require("./button.schema"), exports);
19
+ tslib_1.__exportStar(require("./card.schema"), exports);
20
+ tslib_1.__exportStar(require("./badge.schema"), exports);
21
+ tslib_1.__exportStar(require("./alert.schema"), exports);
22
+ tslib_1.__exportStar(require("./avatar.schema"), exports);
23
+ tslib_1.__exportStar(require("./modal.schema"), exports);
24
+ tslib_1.__exportStar(require("./table.schema"), exports);
25
+ tslib_1.__exportStar(require("./form.schema"), exports);
26
+ tslib_1.__exportStar(require("./list.schema"), exports);
27
+ // Button components
28
+ var button_1 = require("./button");
29
+ Object.defineProperty(exports, "button", { enumerable: true, get: function () { return button_1.button; } });
30
+ Object.defineProperty(exports, "buttonGroup", { enumerable: true, get: function () { return button_1.buttonGroup; } });
31
+ Object.defineProperty(exports, "primaryButton", { enumerable: true, get: function () { return button_1.primaryButton; } });
32
+ Object.defineProperty(exports, "secondaryButton", { enumerable: true, get: function () { return button_1.secondaryButton; } });
33
+ Object.defineProperty(exports, "outlineButton", { enumerable: true, get: function () { return button_1.outlineButton; } });
34
+ Object.defineProperty(exports, "ghostButton", { enumerable: true, get: function () { return button_1.ghostButton; } });
35
+ Object.defineProperty(exports, "dangerButton", { enumerable: true, get: function () { return button_1.dangerButton; } });
36
+ Object.defineProperty(exports, "linkButton", { enumerable: true, get: function () { return button_1.linkButton; } });
37
+ // Card components
38
+ var card_1 = require("./card");
39
+ Object.defineProperty(exports, "card", { enumerable: true, get: function () { return card_1.card; } });
40
+ Object.defineProperty(exports, "cardGroup", { enumerable: true, get: function () { return card_1.cardGroup; } });
41
+ // Form components
42
+ var form_1 = require("./form");
43
+ Object.defineProperty(exports, "input", { enumerable: true, get: function () { return form_1.input; } });
44
+ Object.defineProperty(exports, "select", { enumerable: true, get: function () { return form_1.select; } });
45
+ Object.defineProperty(exports, "textarea", { enumerable: true, get: function () { return form_1.textarea; } });
46
+ Object.defineProperty(exports, "checkbox", { enumerable: true, get: function () { return form_1.checkbox; } });
47
+ Object.defineProperty(exports, "radioGroup", { enumerable: true, get: function () { return form_1.radioGroup; } });
48
+ Object.defineProperty(exports, "form", { enumerable: true, get: function () { return form_1.form; } });
49
+ Object.defineProperty(exports, "formRow", { enumerable: true, get: function () { return form_1.formRow; } });
50
+ Object.defineProperty(exports, "formSection", { enumerable: true, get: function () { return form_1.formSection; } });
51
+ Object.defineProperty(exports, "formActions", { enumerable: true, get: function () { return form_1.formActions; } });
52
+ Object.defineProperty(exports, "hiddenInput", { enumerable: true, get: function () { return form_1.hiddenInput; } });
53
+ Object.defineProperty(exports, "csrfInput", { enumerable: true, get: function () { return form_1.csrfInput; } });
54
+ // Badge components
55
+ var badge_1 = require("./badge");
56
+ Object.defineProperty(exports, "badge", { enumerable: true, get: function () { return badge_1.badge; } });
57
+ Object.defineProperty(exports, "badgeGroup", { enumerable: true, get: function () { return badge_1.badgeGroup; } });
58
+ Object.defineProperty(exports, "activeBadge", { enumerable: true, get: function () { return badge_1.activeBadge; } });
59
+ Object.defineProperty(exports, "inactiveBadge", { enumerable: true, get: function () { return badge_1.inactiveBadge; } });
60
+ Object.defineProperty(exports, "pendingBadge", { enumerable: true, get: function () { return badge_1.pendingBadge; } });
61
+ Object.defineProperty(exports, "errorBadge", { enumerable: true, get: function () { return badge_1.errorBadge; } });
62
+ Object.defineProperty(exports, "newBadge", { enumerable: true, get: function () { return badge_1.newBadge; } });
63
+ Object.defineProperty(exports, "betaBadge", { enumerable: true, get: function () { return badge_1.betaBadge; } });
64
+ Object.defineProperty(exports, "onlineDot", { enumerable: true, get: function () { return badge_1.onlineDot; } });
65
+ Object.defineProperty(exports, "offlineDot", { enumerable: true, get: function () { return badge_1.offlineDot; } });
66
+ Object.defineProperty(exports, "busyDot", { enumerable: true, get: function () { return badge_1.busyDot; } });
67
+ Object.defineProperty(exports, "awayDot", { enumerable: true, get: function () { return badge_1.awayDot; } });
68
+ // Alert components
69
+ var alert_1 = require("./alert");
70
+ Object.defineProperty(exports, "alert", { enumerable: true, get: function () { return alert_1.alert; } });
71
+ Object.defineProperty(exports, "infoAlert", { enumerable: true, get: function () { return alert_1.infoAlert; } });
72
+ Object.defineProperty(exports, "successAlert", { enumerable: true, get: function () { return alert_1.successAlert; } });
73
+ Object.defineProperty(exports, "warningAlert", { enumerable: true, get: function () { return alert_1.warningAlert; } });
74
+ Object.defineProperty(exports, "dangerAlert", { enumerable: true, get: function () { return alert_1.dangerAlert; } });
75
+ Object.defineProperty(exports, "toast", { enumerable: true, get: function () { return alert_1.toast; } });
76
+ Object.defineProperty(exports, "toastContainer", { enumerable: true, get: function () { return alert_1.toastContainer; } });
77
+ // Avatar components
78
+ var avatar_1 = require("./avatar");
79
+ Object.defineProperty(exports, "avatar", { enumerable: true, get: function () { return avatar_1.avatar; } });
80
+ Object.defineProperty(exports, "avatarGroup", { enumerable: true, get: function () { return avatar_1.avatarGroup; } });
81
+ Object.defineProperty(exports, "avatarWithText", { enumerable: true, get: function () { return avatar_1.avatarWithText; } });
82
+ // Modal components
83
+ var modal_1 = require("./modal");
84
+ Object.defineProperty(exports, "modal", { enumerable: true, get: function () { return modal_1.modal; } });
85
+ Object.defineProperty(exports, "modalTrigger", { enumerable: true, get: function () { return modal_1.modalTrigger; } });
86
+ Object.defineProperty(exports, "confirmModal", { enumerable: true, get: function () { return modal_1.confirmModal; } });
87
+ Object.defineProperty(exports, "drawer", { enumerable: true, get: function () { return modal_1.drawer; } });
88
+ // Table components
89
+ var table_1 = require("./table");
90
+ Object.defineProperty(exports, "table", { enumerable: true, get: function () { return table_1.table; } });
91
+ Object.defineProperty(exports, "pagination", { enumerable: true, get: function () { return table_1.pagination; } });
92
+ // List components
93
+ var list_1 = require("./list");
94
+ Object.defineProperty(exports, "permissionList", { enumerable: true, get: function () { return list_1.permissionList; } });
95
+ Object.defineProperty(exports, "featureList", { enumerable: true, get: function () { return list_1.featureList; } });
96
+ Object.defineProperty(exports, "descriptionList", { enumerable: true, get: function () { return list_1.descriptionList; } });
97
+ Object.defineProperty(exports, "actionList", { enumerable: true, get: function () { return list_1.actionList; } });
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;AAEH,qCAAqC;AACrC,0DAAgC;AAChC,wDAA8B;AAC9B,yDAA+B;AAC/B,yDAA+B;AAC/B,0DAAgC;AAChC,yDAA+B;AAC/B,yDAA+B;AAC/B,wDAA8B;AAC9B,wDAA8B;AAE9B,oBAAoB;AACpB,mCAakB;AARhB,gGAAA,MAAM,OAAA;AACN,qGAAA,WAAW,OAAA;AACX,uGAAA,aAAa,OAAA;AACb,yGAAA,eAAe,OAAA;AACf,uGAAA,aAAa,OAAA;AACb,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,oGAAA,UAAU,OAAA;AAGZ,kBAAkB;AAClB,+BAA4F;AAAhC,4FAAA,IAAI,OAAA;AAAE,iGAAA,SAAS,OAAA;AAE3E,kBAAkB;AAClB,+BAsBgB;AAXd,6FAAA,KAAK,OAAA;AACL,8FAAA,MAAM,OAAA;AACN,gGAAA,QAAQ,OAAA;AACR,gGAAA,QAAQ,OAAA;AACR,kGAAA,UAAU,OAAA;AACV,4FAAA,IAAI,OAAA;AACJ,+FAAA,OAAO,OAAA;AACP,mGAAA,WAAW,OAAA;AACX,mGAAA,WAAW,OAAA;AACX,mGAAA,WAAW,OAAA;AACX,iGAAA,SAAS,OAAA;AAGX,mBAAmB;AACnB,iCAgBiB;AAZf,8FAAA,KAAK,OAAA;AACL,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AACX,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,mGAAA,UAAU,OAAA;AACV,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,mGAAA,UAAU,OAAA;AACV,gGAAA,OAAO,OAAA;AACP,gGAAA,OAAO,OAAA;AAGT,mBAAmB;AACnB,iCAWiB;AAPf,8FAAA,KAAK,OAAA;AACL,kGAAA,SAAS,OAAA;AACT,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AACX,8FAAA,KAAK,OAAA;AACL,uGAAA,cAAc,OAAA;AAGhB,oBAAoB;AACpB,mCAUkB;AAHhB,gGAAA,MAAM,OAAA;AACN,qGAAA,WAAW,OAAA;AACX,wGAAA,cAAc,OAAA;AAGhB,mBAAmB;AACnB,iCAUiB;AAJf,8FAAA,KAAK,OAAA;AACL,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,+FAAA,MAAM,OAAA;AAGR,mBAAmB;AACnB,iCAAyG;AAAnC,8FAAA,KAAK,OAAA;AAAE,mGAAA,UAAU,OAAA;AAEvF,kBAAkB;AAClB,+BAYgB;AAJd,sGAAA,cAAc,OAAA;AACd,mGAAA,WAAW,OAAA;AACX,uGAAA,eAAe,OAAA;AACf,kGAAA,UAAU,OAAA","sourcesContent":["/**\n * @file index.ts\n * @description UI Components Module for FrontMCP.\n *\n * Provides reusable UI components for FrontMCP pages including:\n * - Button, Card, Badge, Alert, Avatar, Modal, Table, Form, List components\n * - Zod schemas for all component options (for runtime validation)\n * - Full HTMX support for dynamic interactions\n *\n * @module @frontmcp/ui/components\n */\n\n// Component Schemas (Zod validation)\nexport * from './button.schema';\nexport * from './card.schema';\nexport * from './badge.schema';\nexport * from './alert.schema';\nexport * from './avatar.schema';\nexport * from './modal.schema';\nexport * from './table.schema';\nexport * from './form.schema';\nexport * from './list.schema';\n\n// Button components\nexport {\n type ButtonVariant,\n type ButtonSize,\n type ButtonOptions,\n type ButtonGroupOptions,\n button,\n buttonGroup,\n primaryButton,\n secondaryButton,\n outlineButton,\n ghostButton,\n dangerButton,\n linkButton,\n} from './button';\n\n// Card components\nexport { type CardVariant, type CardSize, type CardOptions, card, cardGroup } from './card';\n\n// Form components\nexport {\n type InputType,\n type InputSize,\n type InputState,\n type InputOptions,\n type SelectOption,\n type SelectOptions,\n type TextareaOptions,\n type CheckboxOptions,\n type RadioGroupOptions,\n type FormOptions,\n input,\n select,\n textarea,\n checkbox,\n radioGroup,\n form,\n formRow,\n formSection,\n formActions,\n hiddenInput,\n csrfInput,\n} from './form';\n\n// Badge components\nexport {\n type BadgeVariant,\n type BadgeSize,\n type BadgeOptions,\n badge,\n badgeGroup,\n activeBadge,\n inactiveBadge,\n pendingBadge,\n errorBadge,\n newBadge,\n betaBadge,\n onlineDot,\n offlineDot,\n busyDot,\n awayDot,\n} from './badge';\n\n// Alert components\nexport {\n type AlertVariant,\n type AlertOptions,\n type ToastOptions,\n alert,\n infoAlert,\n successAlert,\n warningAlert,\n dangerAlert,\n toast,\n toastContainer,\n} from './alert';\n\n// Avatar components\nexport {\n type AvatarSize,\n type AvatarShape,\n type AvatarStatus,\n type AvatarOptions,\n type AvatarGroupOptions,\n type AvatarWithTextOptions,\n avatar,\n avatarGroup,\n avatarWithText,\n} from './avatar';\n\n// Modal components\nexport {\n type ModalSize,\n type ModalOptions,\n type ConfirmModalOptions,\n type DrawerPosition,\n type DrawerOptions,\n modal,\n modalTrigger,\n confirmModal,\n drawer,\n} from './modal';\n\n// Table components\nexport { type TableColumn, type TableOptions, type PaginationOptions, table, pagination } from './table';\n\n// List components\nexport {\n type PermissionItem,\n type FeatureItem,\n type DescriptionItem,\n type PermissionListOptions,\n type FeatureListOptions,\n type DescriptionListOptions,\n type ActionItem,\n permissionList,\n featureList,\n descriptionList,\n actionList,\n} from './list';\n"]}