@omnitron-dev/prism 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (961) hide show
  1. package/README.md +148 -0
  2. package/dist/accessibility/index.d.ts +7 -151
  3. package/dist/accessibility/index.d.ts.map +1 -0
  4. package/dist/accessibility/index.js +0 -1
  5. package/dist/accessibility/index.js.map +1 -1
  6. package/dist/accessibility/vision-mode.d.ts +154 -0
  7. package/dist/accessibility/vision-mode.d.ts.map +1 -0
  8. package/dist/blocks/auth-block/auth-block.d.ts +107 -0
  9. package/dist/blocks/auth-block/auth-block.d.ts.map +1 -0
  10. package/dist/blocks/auth-block/guards.d.ts +262 -0
  11. package/dist/blocks/auth-block/guards.d.ts.map +1 -0
  12. package/dist/blocks/auth-block/index.d.ts +13 -0
  13. package/dist/blocks/auth-block/index.d.ts.map +1 -0
  14. package/dist/blocks/auth-block/types.d.ts +232 -0
  15. package/dist/blocks/auth-block/types.d.ts.map +1 -0
  16. package/dist/blocks/dashboard-block/dashboard-block.d.ts +53 -0
  17. package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -0
  18. package/dist/blocks/dashboard-block/index.d.ts +12 -0
  19. package/dist/blocks/dashboard-block/index.d.ts.map +1 -0
  20. package/dist/blocks/dashboard-block/types.d.ts +182 -0
  21. package/dist/blocks/dashboard-block/types.d.ts.map +1 -0
  22. package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +95 -0
  23. package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -0
  24. package/dist/blocks/data-grid-block/data-grid-block.d.ts +81 -0
  25. package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -0
  26. package/dist/blocks/data-grid-block/index.d.ts +11 -0
  27. package/dist/blocks/data-grid-block/index.d.ts.map +1 -0
  28. package/dist/blocks/data-grid-block/types.d.ts +304 -0
  29. package/dist/blocks/data-grid-block/types.d.ts.map +1 -0
  30. package/dist/blocks/index.d.ts +10 -1235
  31. package/dist/blocks/index.d.ts.map +1 -0
  32. package/dist/blocks/index.js +141 -42
  33. package/dist/blocks/index.js.map +1 -1
  34. package/dist/{chunk-IZOIO7PA.js → chunk-472SOF76.js} +31 -22
  35. package/dist/chunk-472SOF76.js.map +1 -0
  36. package/dist/chunk-4Z5DE5GK.js +1579 -0
  37. package/dist/chunk-4Z5DE5GK.js.map +1 -0
  38. package/dist/chunk-52PQL67Q.js +559 -0
  39. package/dist/chunk-52PQL67Q.js.map +1 -0
  40. package/dist/chunk-75FQ5IW3.js +590 -0
  41. package/dist/chunk-75FQ5IW3.js.map +1 -0
  42. package/dist/{chunk-VAAIHNWQ.js → chunk-7G5D5PTC.js} +4 -3
  43. package/dist/chunk-7G5D5PTC.js.map +1 -0
  44. package/dist/{chunk-JDTC2SBY.js → chunk-AD4W7HYC.js} +2 -2
  45. package/dist/chunk-AD4W7HYC.js.map +1 -0
  46. package/dist/{chunk-SNKGGHBT.js → chunk-ADG4HZEP.js} +3 -3
  47. package/dist/chunk-ADG4HZEP.js.map +1 -0
  48. package/dist/{chunk-JNU4QHJK.js → chunk-AYYFMTMI.js} +5 -4
  49. package/dist/{chunk-JNU4QHJK.js.map → chunk-AYYFMTMI.js.map} +1 -1
  50. package/dist/chunk-BJE2AKD4.js +105 -0
  51. package/dist/chunk-BJE2AKD4.js.map +1 -0
  52. package/dist/{chunk-HO2GKTWJ.js → chunk-BRDWQVRT.js} +2 -2
  53. package/dist/chunk-BRDWQVRT.js.map +1 -0
  54. package/dist/{chunk-2FYNRDXR.js → chunk-DRFNMZLG.js} +2 -2
  55. package/dist/chunk-DRFNMZLG.js.map +1 -0
  56. package/dist/chunk-FF5RF32O.js +248 -0
  57. package/dist/chunk-FF5RF32O.js.map +1 -0
  58. package/dist/{chunk-KTCWPGON.js → chunk-GMIE6III.js} +561 -111
  59. package/dist/chunk-GMIE6III.js.map +1 -0
  60. package/dist/{chunk-BV32OJ2A.js → chunk-GUFHFEPZ.js} +2 -2
  61. package/dist/chunk-GUFHFEPZ.js.map +1 -0
  62. package/dist/chunk-GUGTDURV.js +826 -0
  63. package/dist/chunk-GUGTDURV.js.map +1 -0
  64. package/dist/chunk-HOXFSQUV.js +573 -0
  65. package/dist/chunk-HOXFSQUV.js.map +1 -0
  66. package/dist/chunk-JSQTYDPG.js +3 -0
  67. package/dist/{chunk-77KIJLPP.js.map → chunk-JSQTYDPG.js.map} +1 -1
  68. package/dist/{chunk-MEFT6XPH.js → chunk-KQ67XB6T.js} +351 -704
  69. package/dist/chunk-KQ67XB6T.js.map +1 -0
  70. package/dist/{chunk-YJMAQL3S.js → chunk-LOY2NPCO.js} +129 -635
  71. package/dist/chunk-LOY2NPCO.js.map +1 -0
  72. package/dist/{chunk-A2Z7NVGL.js → chunk-LSPFFEJT.js} +1026 -2128
  73. package/dist/chunk-LSPFFEJT.js.map +1 -0
  74. package/dist/{chunk-XXP3ZGU6.js → chunk-OKTLA23Q.js} +22 -14
  75. package/dist/chunk-OKTLA23Q.js.map +1 -0
  76. package/dist/chunk-PFT2BNYO.js +191 -0
  77. package/dist/chunk-PFT2BNYO.js.map +1 -0
  78. package/dist/chunk-PGHEP4JD.js +106 -0
  79. package/dist/chunk-PGHEP4JD.js.map +1 -0
  80. package/dist/chunk-PXXPLHIY.js +74 -0
  81. package/dist/chunk-PXXPLHIY.js.map +1 -0
  82. package/dist/chunk-SNZK5X6F.js +594 -0
  83. package/dist/chunk-SNZK5X6F.js.map +1 -0
  84. package/dist/chunk-SU3LVQ7N.js +518 -0
  85. package/dist/chunk-SU3LVQ7N.js.map +1 -0
  86. package/dist/{chunk-DDY7TLUI.js → chunk-XIXSSI3B.js} +28 -2
  87. package/dist/chunk-XIXSSI3B.js.map +1 -0
  88. package/dist/chunk-YHE7HXSG.js +206 -0
  89. package/dist/chunk-YHE7HXSG.js.map +1 -0
  90. package/dist/{chunk-XWL6J6IO.js → chunk-YSIG2XYH.js} +2 -2
  91. package/dist/chunk-YSIG2XYH.js.map +1 -0
  92. package/dist/cli/commands/add.d.ts +22 -0
  93. package/dist/cli/commands/add.d.ts.map +1 -0
  94. package/dist/cli/commands/diff.d.ts +13 -0
  95. package/dist/cli/commands/diff.d.ts.map +1 -0
  96. package/dist/cli/commands/doctor.d.ts +13 -0
  97. package/dist/cli/commands/doctor.d.ts.map +1 -0
  98. package/dist/cli/commands/init.d.ts +13 -0
  99. package/dist/cli/commands/init.d.ts.map +1 -0
  100. package/dist/cli/commands/list.d.ts +13 -0
  101. package/dist/cli/commands/list.d.ts.map +1 -0
  102. package/dist/cli/commands/remove.d.ts +13 -0
  103. package/dist/cli/commands/remove.d.ts.map +1 -0
  104. package/dist/cli/commands/update.d.ts +13 -0
  105. package/dist/cli/commands/update.d.ts.map +1 -0
  106. package/dist/cli/config.d.ts +73 -0
  107. package/dist/cli/config.d.ts.map +1 -0
  108. package/dist/cli/constants.d.ts +60 -0
  109. package/dist/cli/constants.d.ts.map +1 -0
  110. package/dist/cli/index.d.ts +27 -0
  111. package/dist/cli/index.d.ts.map +1 -0
  112. package/dist/cli/index.js +38 -39
  113. package/dist/cli/index.js.map +1 -1
  114. package/dist/components/accordion/accordion.d.ts +149 -0
  115. package/dist/components/accordion/accordion.d.ts.map +1 -0
  116. package/dist/components/accordion/index.d.ts +7 -0
  117. package/dist/components/accordion/index.d.ts.map +1 -0
  118. package/dist/components/admin-filters/admin-data-table.d.ts +185 -0
  119. package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -0
  120. package/dist/components/admin-filters/amount-cell.d.ts +39 -0
  121. package/dist/components/admin-filters/amount-cell.d.ts.map +1 -0
  122. package/dist/components/admin-filters/filter-toolbar.d.ts +99 -0
  123. package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -0
  124. package/dist/components/admin-filters/index.d.ts +13 -0
  125. package/dist/components/admin-filters/index.d.ts.map +1 -0
  126. package/dist/components/admin-filters/status-chip.d.ts +55 -0
  127. package/dist/components/admin-filters/status-chip.d.ts.map +1 -0
  128. package/dist/components/alert/alert.d.ts +159 -0
  129. package/dist/components/alert/alert.d.ts.map +1 -0
  130. package/dist/components/alert/index.d.ts +7 -0
  131. package/dist/components/alert/index.d.ts.map +1 -0
  132. package/dist/components/animate/animate-border.d.ts +33 -0
  133. package/dist/components/animate/animate-border.d.ts.map +1 -0
  134. package/dist/components/animate/index.d.ts +3 -0
  135. package/dist/components/animate/index.d.ts.map +1 -0
  136. package/dist/components/animate/motion-lazy.d.ts +5 -0
  137. package/dist/components/animate/motion-lazy.d.ts.map +1 -0
  138. package/dist/components/avatar/avatar.d.ts +78 -0
  139. package/dist/components/avatar/avatar.d.ts.map +1 -0
  140. package/dist/components/avatar/index.d.ts +7 -0
  141. package/dist/components/avatar/index.d.ts.map +1 -0
  142. package/dist/components/badge/badge.d.ts +102 -0
  143. package/dist/components/badge/badge.d.ts.map +1 -0
  144. package/dist/components/badge/index.d.ts +7 -0
  145. package/dist/components/badge/index.d.ts.map +1 -0
  146. package/dist/components/breadcrumbs/breadcrumbs.d.ts +100 -0
  147. package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  148. package/dist/components/breadcrumbs/index.d.ts +7 -0
  149. package/dist/components/breadcrumbs/index.d.ts.map +1 -0
  150. package/dist/components/card/card.d.ts +127 -0
  151. package/dist/components/card/card.d.ts.map +1 -0
  152. package/dist/components/card/index.d.ts +7 -0
  153. package/dist/components/card/index.d.ts.map +1 -0
  154. package/dist/components/carousel/carousel.d.ts +35 -0
  155. package/dist/components/carousel/carousel.d.ts.map +1 -0
  156. package/dist/components/carousel/classes.d.ts +35 -0
  157. package/dist/components/carousel/classes.d.ts.map +1 -0
  158. package/dist/components/carousel/index.d.ts +10 -0
  159. package/dist/components/carousel/index.d.ts.map +1 -0
  160. package/dist/components/carousel/types.d.ts +167 -0
  161. package/dist/components/carousel/types.d.ts.map +1 -0
  162. package/dist/components/carousel/use-carousel.d.ts +51 -0
  163. package/dist/components/carousel/use-carousel.d.ts.map +1 -0
  164. package/dist/components/changelog/changelog-entry.d.ts +10 -0
  165. package/dist/components/changelog/changelog-entry.d.ts.map +1 -0
  166. package/dist/components/changelog/changelog-timeline.d.ts +9 -0
  167. package/dist/components/changelog/changelog-timeline.d.ts.map +1 -0
  168. package/dist/components/changelog/index.d.ts +3 -0
  169. package/dist/components/changelog/index.d.ts.map +1 -0
  170. package/dist/components/chart/chart.d.ts +39 -0
  171. package/dist/components/chart/chart.d.ts.map +1 -0
  172. package/dist/components/chart/classes.d.ts +24 -0
  173. package/dist/components/chart/classes.d.ts.map +1 -0
  174. package/dist/components/chart/components/chart-legends.d.ts +24 -0
  175. package/dist/components/chart/components/chart-legends.d.ts.map +1 -0
  176. package/dist/components/chart/components/chart-loading.d.ts +21 -0
  177. package/dist/components/chart/components/chart-loading.d.ts.map +1 -0
  178. package/dist/components/chart/components/index.d.ts +8 -0
  179. package/dist/components/chart/components/index.d.ts.map +1 -0
  180. package/dist/components/chart/index.d.ts +14 -0
  181. package/dist/components/chart/index.d.ts.map +1 -0
  182. package/dist/components/chart/types.d.ts +264 -0
  183. package/dist/components/chart/types.d.ts.map +1 -0
  184. package/dist/components/chart/use-chart.d.ts +34 -0
  185. package/dist/components/chart/use-chart.d.ts.map +1 -0
  186. package/dist/components/command-palette/command-palette.d.ts +73 -0
  187. package/dist/components/command-palette/command-palette.d.ts.map +1 -0
  188. package/dist/components/command-palette/index.d.ts +7 -0
  189. package/dist/components/command-palette/index.d.ts.map +1 -0
  190. package/dist/components/confirm-dialog/confirm-dialog.d.ts +89 -0
  191. package/dist/components/confirm-dialog/confirm-dialog.d.ts.map +1 -0
  192. package/dist/components/confirm-dialog/index.d.ts +7 -0
  193. package/dist/components/confirm-dialog/index.d.ts.map +1 -0
  194. package/dist/components/content-renderer/classes.d.ts +33 -0
  195. package/dist/components/content-renderer/classes.d.ts.map +1 -0
  196. package/dist/components/content-renderer/content-renderer.d.ts +37 -0
  197. package/dist/components/content-renderer/content-renderer.d.ts.map +1 -0
  198. package/dist/components/content-renderer/html-tags.d.ts +6 -0
  199. package/dist/components/content-renderer/html-tags.d.ts.map +1 -0
  200. package/dist/components/content-renderer/html-to-markdown.d.ts +7 -0
  201. package/dist/components/content-renderer/html-to-markdown.d.ts.map +1 -0
  202. package/dist/components/content-renderer/index.d.ts +7 -0
  203. package/dist/components/content-renderer/index.d.ts.map +1 -0
  204. package/dist/components/content-renderer/markdown.d.ts +23 -0
  205. package/dist/components/content-renderer/markdown.d.ts.map +1 -0
  206. package/dist/components/content-renderer/remark-spoiler.d.ts +9 -0
  207. package/dist/components/content-renderer/remark-spoiler.d.ts.map +1 -0
  208. package/dist/components/content-renderer/styles.d.ts +2 -0
  209. package/dist/components/content-renderer/styles.d.ts.map +1 -0
  210. package/dist/components/country-select/country-select.d.ts +101 -0
  211. package/dist/components/country-select/country-select.d.ts.map +1 -0
  212. package/dist/components/country-select/flag-icon.d.ts +36 -0
  213. package/dist/components/country-select/flag-icon.d.ts.map +1 -0
  214. package/dist/components/country-select/index.d.ts +5 -0
  215. package/dist/components/country-select/index.d.ts.map +1 -0
  216. package/dist/components/date-input/date-input.d.ts +27 -0
  217. package/dist/components/date-input/date-input.d.ts.map +1 -0
  218. package/dist/components/date-input/index.d.ts +4 -0
  219. package/dist/components/date-input/index.d.ts.map +1 -0
  220. package/dist/components/date-input/value.d.ts +9 -0
  221. package/dist/components/date-input/value.d.ts.map +1 -0
  222. package/dist/components/date-range-picker/date-range-input.d.ts +48 -0
  223. package/dist/components/date-range-picker/date-range-input.d.ts.map +1 -0
  224. package/dist/components/date-range-picker/date-range-picker.d.ts +39 -0
  225. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -0
  226. package/dist/components/date-range-picker/index.d.ts +7 -0
  227. package/dist/components/date-range-picker/index.d.ts.map +1 -0
  228. package/dist/components/date-range-picker/use-date-range-picker.d.ts +28 -0
  229. package/dist/components/date-range-picker/use-date-range-picker.d.ts.map +1 -0
  230. package/dist/components/deadline-chip/deadline-chip.d.ts +41 -0
  231. package/dist/components/deadline-chip/deadline-chip.d.ts.map +1 -0
  232. package/dist/components/deadline-chip/index.d.ts +7 -0
  233. package/dist/components/deadline-chip/index.d.ts.map +1 -0
  234. package/dist/components/doc-layout/doc-layout.d.ts +17 -0
  235. package/dist/components/doc-layout/doc-layout.d.ts.map +1 -0
  236. package/dist/components/doc-layout/doc-section-nav.d.ts +16 -0
  237. package/dist/components/doc-layout/doc-section-nav.d.ts.map +1 -0
  238. package/dist/components/doc-layout/doc-sidebar.d.ts +18 -0
  239. package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -0
  240. package/dist/components/doc-layout/index.d.ts +4 -0
  241. package/dist/components/doc-layout/index.d.ts.map +1 -0
  242. package/dist/components/doc-layout/index.js +6 -0
  243. package/dist/components/doc-layout/index.js.map +1 -0
  244. package/dist/components/drawer/drawer.d.ts +65 -0
  245. package/dist/components/drawer/drawer.d.ts.map +1 -0
  246. package/dist/components/drawer/index.d.ts +7 -0
  247. package/dist/components/drawer/index.d.ts.map +1 -0
  248. package/dist/components/duration-picker/duration-picker.d.ts +24 -0
  249. package/dist/components/duration-picker/duration-picker.d.ts.map +1 -0
  250. package/dist/components/duration-picker/index.d.ts +2 -0
  251. package/dist/components/duration-picker/index.d.ts.map +1 -0
  252. package/dist/components/editor/classes.d.ts +52 -0
  253. package/dist/components/editor/classes.d.ts.map +1 -0
  254. package/dist/components/editor/editor.d.ts +15 -0
  255. package/dist/components/editor/editor.d.ts.map +1 -0
  256. package/dist/components/editor/extensions/clear-format.d.ts +3 -0
  257. package/dist/components/editor/extensions/clear-format.d.ts.map +1 -0
  258. package/dist/components/editor/extensions/index.d.ts +3 -0
  259. package/dist/components/editor/extensions/index.d.ts.map +1 -0
  260. package/dist/components/editor/extensions/text-transform.d.ts +20 -0
  261. package/dist/components/editor/extensions/text-transform.d.ts.map +1 -0
  262. package/dist/components/editor/icons/index.d.ts +34 -0
  263. package/dist/components/editor/icons/index.d.ts.map +1 -0
  264. package/dist/components/editor/index.d.ts +41 -104
  265. package/dist/components/editor/index.d.ts.map +1 -0
  266. package/dist/components/editor/index.js +3 -2
  267. package/dist/components/editor/presets.d.ts +3 -0
  268. package/dist/components/editor/presets.d.ts.map +1 -0
  269. package/dist/components/editor/styles.d.ts +2 -0
  270. package/dist/components/editor/styles.d.ts.map +1 -0
  271. package/dist/components/editor/toolbar/bubble-toolbar.d.ts +9 -0
  272. package/dist/components/editor/toolbar/bubble-toolbar.d.ts.map +1 -0
  273. package/dist/components/editor/toolbar/code-highlight-block.d.ts +3 -0
  274. package/dist/components/editor/toolbar/code-highlight-block.d.ts.map +1 -0
  275. package/dist/components/editor/toolbar/heading-block.d.ts +11 -0
  276. package/dist/components/editor/toolbar/heading-block.d.ts.map +1 -0
  277. package/dist/components/editor/toolbar/image-block.d.ts +11 -0
  278. package/dist/components/editor/toolbar/image-block.d.ts.map +1 -0
  279. package/dist/components/editor/toolbar/link-block.d.ts +13 -0
  280. package/dist/components/editor/toolbar/link-block.d.ts.map +1 -0
  281. package/dist/components/editor/toolbar/toolbar-item.d.ts +3 -0
  282. package/dist/components/editor/toolbar/toolbar-item.d.ts.map +1 -0
  283. package/dist/components/editor/toolbar/toolbar.d.ts +3 -0
  284. package/dist/components/editor/toolbar/toolbar.d.ts.map +1 -0
  285. package/dist/components/editor/toolbar/use-toolbar-state.d.ts +24 -0
  286. package/dist/components/editor/toolbar/use-toolbar-state.d.ts.map +1 -0
  287. package/dist/components/editor/types.d.ts +130 -0
  288. package/dist/components/editor/types.d.ts.map +1 -0
  289. package/dist/components/emoji-picker/emoji-picker.d.ts +24 -0
  290. package/dist/components/emoji-picker/emoji-picker.d.ts.map +1 -0
  291. package/dist/components/emoji-picker/emoji-search.d.ts +22 -0
  292. package/dist/components/emoji-picker/emoji-search.d.ts.map +1 -0
  293. package/dist/components/emoji-picker/emoji.d.ts +19 -0
  294. package/dist/components/emoji-picker/emoji.d.ts.map +1 -0
  295. package/dist/components/emoji-picker/index.d.ts +14 -0
  296. package/dist/components/emoji-picker/index.d.ts.map +1 -0
  297. package/dist/components/emoji-picker/index.js +3 -0
  298. package/dist/components/emoji-picker/index.js.map +1 -0
  299. package/dist/components/emoji-picker/twemoji-url.d.ts +26 -0
  300. package/dist/components/emoji-picker/twemoji-url.d.ts.map +1 -0
  301. package/dist/components/emoji-picker/types.d.ts +96 -0
  302. package/dist/components/emoji-picker/types.d.ts.map +1 -0
  303. package/dist/components/emoji-picker/use-emoji-data.d.ts +26 -0
  304. package/dist/components/emoji-picker/use-emoji-data.d.ts.map +1 -0
  305. package/dist/components/emoji-picker/use-recent-emojis.d.ts +16 -0
  306. package/dist/components/emoji-picker/use-recent-emojis.d.ts.map +1 -0
  307. package/dist/components/empty-content/empty-content.d.ts +92 -0
  308. package/dist/components/empty-content/empty-content.d.ts.map +1 -0
  309. package/dist/components/empty-content/index.d.ts +7 -0
  310. package/dist/components/empty-content/index.d.ts.map +1 -0
  311. package/dist/components/error-boundary/error-boundary.d.ts +162 -0
  312. package/dist/components/error-boundary/error-boundary.d.ts.map +1 -0
  313. package/dist/components/error-boundary/index.d.ts +7 -0
  314. package/dist/components/error-boundary/index.d.ts.map +1 -0
  315. package/dist/components/field/field-autocomplete.d.ts +74 -0
  316. package/dist/components/field/field-autocomplete.d.ts.map +1 -0
  317. package/dist/components/field/field-checkbox.d.ts +42 -0
  318. package/dist/components/field/field-checkbox.d.ts.map +1 -0
  319. package/dist/components/field/field-code.d.ts +80 -0
  320. package/dist/components/field/field-code.d.ts.map +1 -0
  321. package/dist/components/field/field-country-select.d.ts +84 -0
  322. package/dist/components/field/field-country-select.d.ts.map +1 -0
  323. package/dist/components/field/field-date-picker.d.ts +58 -0
  324. package/dist/components/field/field-date-picker.d.ts.map +1 -0
  325. package/dist/components/field/field-datetime-picker.d.ts +96 -0
  326. package/dist/components/field/field-datetime-picker.d.ts.map +1 -0
  327. package/dist/components/field/field-editor.d.ts +218 -0
  328. package/dist/components/field/field-editor.d.ts.map +1 -0
  329. package/dist/components/field/field-multi-checkbox.d.ts +91 -0
  330. package/dist/components/field/field-multi-checkbox.d.ts.map +1 -0
  331. package/dist/components/field/field-multi-select.d.ts +85 -0
  332. package/dist/components/field/field-multi-select.d.ts.map +1 -0
  333. package/dist/components/field/field-multi-switch.d.ts +93 -0
  334. package/dist/components/field/field-multi-switch.d.ts.map +1 -0
  335. package/dist/components/field/field-number.d.ts +50 -0
  336. package/dist/components/field/field-number.d.ts.map +1 -0
  337. package/dist/components/field/field-phone.d.ts +82 -0
  338. package/dist/components/field/field-phone.d.ts.map +1 -0
  339. package/dist/components/field/field-radio.d.ts +64 -0
  340. package/dist/components/field/field-radio.d.ts.map +1 -0
  341. package/dist/components/field/field-rating.d.ts +43 -0
  342. package/dist/components/field/field-rating.d.ts.map +1 -0
  343. package/dist/components/field/field-select.d.ts +50 -0
  344. package/dist/components/field/field-select.d.ts.map +1 -0
  345. package/dist/components/field/field-slider.d.ts +56 -0
  346. package/dist/components/field/field-slider.d.ts.map +1 -0
  347. package/dist/components/field/field-switch.d.ts +44 -0
  348. package/dist/components/field/field-switch.d.ts.map +1 -0
  349. package/dist/components/field/field-text.d.ts +38 -0
  350. package/dist/components/field/field-text.d.ts.map +1 -0
  351. package/dist/components/field/field-time-picker.d.ts +79 -0
  352. package/dist/components/field/field-time-picker.d.ts.map +1 -0
  353. package/dist/components/field/field-upload.d.ts +120 -0
  354. package/dist/components/field/field-upload.d.ts.map +1 -0
  355. package/dist/components/field/index.d.ts +149 -0
  356. package/dist/components/field/index.d.ts.map +1 -0
  357. package/dist/components/image/image.d.ts +79 -0
  358. package/dist/components/image/image.d.ts.map +1 -0
  359. package/dist/components/image/index.d.ts +7 -0
  360. package/dist/components/image/index.d.ts.map +1 -0
  361. package/dist/components/index.css +4 -0
  362. package/dist/components/index.css.map +1 -1
  363. package/dist/components/index.d.ts +60 -7072
  364. package/dist/components/index.d.ts.map +1 -0
  365. package/dist/components/index.js +21 -11
  366. package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
  367. package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
  368. package/dist/components/knowledge-graph/graph.d.ts +56 -0
  369. package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
  370. package/dist/components/knowledge-graph/index.css +176 -0
  371. package/dist/components/knowledge-graph/index.css.map +1 -0
  372. package/dist/components/knowledge-graph/index.d.ts +3 -0
  373. package/dist/components/knowledge-graph/index.d.ts.map +1 -0
  374. package/dist/components/knowledge-graph/index.js +795 -0
  375. package/dist/components/knowledge-graph/index.js.map +1 -0
  376. package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
  377. package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
  378. package/dist/components/knowledge-graph/label-store.d.ts +15 -0
  379. package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
  380. package/dist/components/knowledge-graph/model.d.ts +92 -0
  381. package/dist/components/knowledge-graph/model.d.ts.map +1 -0
  382. package/dist/components/label/index.d.ts +7 -0
  383. package/dist/components/label/index.d.ts.map +1 -0
  384. package/dist/components/label/label.d.ts +71 -0
  385. package/dist/components/label/label.d.ts.map +1 -0
  386. package/dist/components/lightbox/classes.d.ts +34 -0
  387. package/dist/components/lightbox/classes.d.ts.map +1 -0
  388. package/dist/components/lightbox/index.d.ts +11 -0
  389. package/dist/components/lightbox/index.d.ts.map +1 -0
  390. package/dist/components/lightbox/lightbox.d.ts +42 -0
  391. package/dist/components/lightbox/lightbox.d.ts.map +1 -0
  392. package/dist/components/lightbox/types.d.ts +233 -0
  393. package/dist/components/lightbox/types.d.ts.map +1 -0
  394. package/dist/components/lightbox/use-lightbox.d.ts +42 -0
  395. package/dist/components/lightbox/use-lightbox.d.ts.map +1 -0
  396. package/dist/components/loading-screen/index.d.ts +8 -0
  397. package/dist/components/loading-screen/index.d.ts.map +1 -0
  398. package/dist/components/loading-screen/loading-screen.d.ts +37 -0
  399. package/dist/components/loading-screen/loading-screen.d.ts.map +1 -0
  400. package/dist/components/loading-screen/splash-screen.d.ts +80 -0
  401. package/dist/components/loading-screen/splash-screen.d.ts.map +1 -0
  402. package/dist/components/map/Map.d.ts +39 -0
  403. package/dist/components/map/Map.d.ts.map +1 -0
  404. package/dist/components/map/MapCoverageLayer.d.ts +25 -0
  405. package/dist/components/map/MapCoverageLayer.d.ts.map +1 -0
  406. package/dist/components/map/MapMarker.d.ts +17 -0
  407. package/dist/components/map/MapMarker.d.ts.map +1 -0
  408. package/dist/components/map/MapPlaceSearch.d.ts +33 -0
  409. package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
  410. package/dist/components/map/MapPointPicker.d.ts +35 -0
  411. package/dist/components/map/MapPointPicker.d.ts.map +1 -0
  412. package/dist/components/map/coordinates.d.ts +10 -0
  413. package/dist/components/map/coordinates.d.ts.map +1 -0
  414. package/dist/components/map/index.css +4 -0
  415. package/dist/components/map/index.css.map +1 -0
  416. package/dist/components/map/index.d.ts +19 -0
  417. package/dist/components/map/index.d.ts.map +1 -0
  418. package/dist/components/map/index.js +3 -0
  419. package/dist/components/map/index.js.map +1 -0
  420. package/dist/components/mega-menu/index.d.ts +12 -0
  421. package/dist/components/mega-menu/index.d.ts.map +1 -0
  422. package/dist/components/mega-menu/mega-menu-horizontal.d.ts +41 -0
  423. package/dist/components/mega-menu/mega-menu-horizontal.d.ts.map +1 -0
  424. package/dist/components/mega-menu/mega-menu-mobile.d.ts +28 -0
  425. package/dist/components/mega-menu/mega-menu-mobile.d.ts.map +1 -0
  426. package/dist/components/mega-menu/mega-menu-vertical.d.ts +28 -0
  427. package/dist/components/mega-menu/mega-menu-vertical.d.ts.map +1 -0
  428. package/dist/components/mega-menu/styles.d.ts +18 -0
  429. package/dist/components/mega-menu/styles.d.ts.map +1 -0
  430. package/dist/components/mega-menu/types.d.ts +200 -0
  431. package/dist/components/mega-menu/types.d.ts.map +1 -0
  432. package/dist/components/menu/index.d.ts +7 -0
  433. package/dist/components/menu/index.d.ts.map +1 -0
  434. package/dist/components/menu/menu.d.ts +144 -0
  435. package/dist/components/menu/menu.d.ts.map +1 -0
  436. package/dist/components/nav-card/index.d.ts +8 -0
  437. package/dist/components/nav-card/index.d.ts.map +1 -0
  438. package/dist/components/nav-card/nav-card-grid.d.ts +57 -0
  439. package/dist/components/nav-card/nav-card-grid.d.ts.map +1 -0
  440. package/dist/components/nav-card/nav-card.d.ts +69 -0
  441. package/dist/components/nav-card/nav-card.d.ts.map +1 -0
  442. package/dist/components/nav-section/components.d.ts +143 -0
  443. package/dist/components/nav-section/components.d.ts.map +1 -0
  444. package/dist/components/nav-section/index.d.ts +15 -0
  445. package/dist/components/nav-section/index.d.ts.map +1 -0
  446. package/dist/components/nav-section/nav-context.d.ts +80 -0
  447. package/dist/components/nav-section/nav-context.d.ts.map +1 -0
  448. package/dist/components/nav-section/nav-item.d.ts +20 -0
  449. package/dist/components/nav-section/nav-item.d.ts.map +1 -0
  450. package/dist/components/nav-section/nav-list.d.ts +25 -0
  451. package/dist/components/nav-section/nav-list.d.ts.map +1 -0
  452. package/dist/components/nav-section/nav-section-horizontal.d.ts +29 -0
  453. package/dist/components/nav-section/nav-section-horizontal.d.ts.map +1 -0
  454. package/dist/components/nav-section/nav-section-mini.d.ts +30 -0
  455. package/dist/components/nav-section/nav-section-mini.d.ts.map +1 -0
  456. package/dist/components/nav-section/nav-section-vertical.d.ts +37 -0
  457. package/dist/components/nav-section/nav-section-vertical.d.ts.map +1 -0
  458. package/dist/components/nav-section/styles.d.ts +35 -0
  459. package/dist/components/nav-section/styles.d.ts.map +1 -0
  460. package/dist/components/nav-section/types.d.ts +178 -0
  461. package/dist/components/nav-section/types.d.ts.map +1 -0
  462. package/dist/components/navigation-progress/index.d.ts +7 -0
  463. package/dist/components/navigation-progress/index.d.ts.map +1 -0
  464. package/dist/components/navigation-progress/navigation-progress.d.ts +36 -0
  465. package/dist/components/navigation-progress/navigation-progress.d.ts.map +1 -0
  466. package/dist/components/page-content/index.d.ts +7 -0
  467. package/dist/components/page-content/index.d.ts.map +1 -0
  468. package/dist/components/page-content/page-content.d.ts +55 -0
  469. package/dist/components/page-content/page-content.d.ts.map +1 -0
  470. package/dist/components/popover/index.d.ts +7 -0
  471. package/dist/components/popover/index.d.ts.map +1 -0
  472. package/dist/{popover-Dmw7SJLR.d.ts → components/popover/popover.d.ts} +11 -14
  473. package/dist/components/popover/popover.d.ts.map +1 -0
  474. package/dist/components/progress/countdown-ring.d.ts +60 -0
  475. package/dist/components/progress/countdown-ring.d.ts.map +1 -0
  476. package/dist/components/progress/index.d.ts +8 -0
  477. package/dist/components/progress/index.d.ts.map +1 -0
  478. package/dist/components/progress/progress.d.ts +106 -0
  479. package/dist/components/progress/progress.d.ts.map +1 -0
  480. package/dist/components/rail/index.d.ts +7 -0
  481. package/dist/components/rail/index.d.ts.map +1 -0
  482. package/dist/components/rail/rail.d.ts +39 -0
  483. package/dist/components/rail/rail.d.ts.map +1 -0
  484. package/dist/components/research/diagram-image.d.ts +11 -0
  485. package/dist/components/research/diagram-image.d.ts.map +1 -0
  486. package/dist/components/research/diagram.d.ts +8 -0
  487. package/dist/components/research/diagram.d.ts.map +1 -0
  488. package/dist/components/research/document.d.ts +33 -0
  489. package/dist/components/research/document.d.ts.map +1 -0
  490. package/dist/components/research/frontmatter.d.ts +15 -0
  491. package/dist/components/research/frontmatter.d.ts.map +1 -0
  492. package/dist/components/research/index.css +51 -0
  493. package/dist/components/research/index.css.map +1 -0
  494. package/dist/components/research/index.d.ts +3 -0
  495. package/dist/components/research/index.d.ts.map +1 -0
  496. package/dist/components/research/index.js +6 -0
  497. package/dist/components/research/index.js.map +1 -0
  498. package/dist/components/research/parse.d.ts +29 -0
  499. package/dist/components/research/parse.d.ts.map +1 -0
  500. package/dist/components/research-editor/block-commands.d.ts +20 -0
  501. package/dist/components/research-editor/block-commands.d.ts.map +1 -0
  502. package/dist/components/research-editor/block-controls.d.ts +13 -0
  503. package/dist/components/research-editor/block-controls.d.ts.map +1 -0
  504. package/dist/components/research-editor/editor.d.ts +75 -0
  505. package/dist/components/research-editor/editor.d.ts.map +1 -0
  506. package/dist/components/research-editor/extensions.d.ts +14 -0
  507. package/dist/components/research-editor/extensions.d.ts.map +1 -0
  508. package/dist/components/research-editor/index.css +332 -0
  509. package/dist/components/research-editor/index.css.map +1 -0
  510. package/dist/components/research-editor/index.d.ts +5 -0
  511. package/dist/components/research-editor/index.d.ts.map +1 -0
  512. package/dist/components/research-editor/index.js +1592 -0
  513. package/dist/components/research-editor/index.js.map +1 -0
  514. package/dist/components/research-editor/math-input.d.ts +32 -0
  515. package/dist/components/research-editor/math-input.d.ts.map +1 -0
  516. package/dist/components/research-editor/math-markup.d.ts +4 -0
  517. package/dist/components/research-editor/math-markup.d.ts.map +1 -0
  518. package/dist/components/research-editor/math-navigation.d.ts +6 -0
  519. package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
  520. package/dist/components/research-editor/math-node.d.ts +11 -0
  521. package/dist/components/research-editor/math-node.d.ts.map +1 -0
  522. package/dist/components/research-editor/source.d.ts +19 -0
  523. package/dist/components/research-editor/source.d.ts.map +1 -0
  524. package/dist/components/scroll-spy/index.d.ts +3 -0
  525. package/dist/components/scroll-spy/index.d.ts.map +1 -0
  526. package/dist/components/scroll-spy/scroll-spy-provider.d.ts +26 -0
  527. package/dist/components/scroll-spy/scroll-spy-provider.d.ts.map +1 -0
  528. package/dist/components/scroll-spy/scroll-spy-section.d.ts +10 -0
  529. package/dist/components/scroll-spy/scroll-spy-section.d.ts.map +1 -0
  530. package/dist/components/scroll-to-top/index.d.ts +7 -0
  531. package/dist/components/scroll-to-top/index.d.ts.map +1 -0
  532. package/dist/components/scroll-to-top/scroll-to-top.d.ts +25 -0
  533. package/dist/components/scroll-to-top/scroll-to-top.d.ts.map +1 -0
  534. package/dist/components/scrollbar/index.d.ts +7 -0
  535. package/dist/components/scrollbar/index.d.ts.map +1 -0
  536. package/dist/components/scrollbar/scrollbar.d.ts +61 -0
  537. package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
  538. package/dist/components/search-input/index.d.ts +2 -0
  539. package/dist/components/search-input/index.d.ts.map +1 -0
  540. package/dist/components/search-input/search-input.d.ts +36 -0
  541. package/dist/components/search-input/search-input.d.ts.map +1 -0
  542. package/dist/components/settings/index.d.ts +10 -0
  543. package/dist/components/settings/index.d.ts.map +1 -0
  544. package/dist/components/settings/settings-drawer.d.ts +39 -0
  545. package/dist/components/settings/settings-drawer.d.ts.map +1 -0
  546. package/dist/components/settings/settings-provider.d.ts +106 -0
  547. package/dist/components/settings/settings-provider.d.ts.map +1 -0
  548. package/dist/components/skeleton/index.d.ts +7 -0
  549. package/dist/components/skeleton/index.d.ts.map +1 -0
  550. package/dist/components/skeleton/skeleton.d.ts +77 -0
  551. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  552. package/dist/components/snackbar/index.d.ts +7 -0
  553. package/dist/components/snackbar/index.d.ts.map +1 -0
  554. package/dist/components/snackbar/snackbar.d.ts +120 -0
  555. package/dist/components/snackbar/snackbar.d.ts.map +1 -0
  556. package/dist/components/sponsored-slot/index.d.ts +3 -0
  557. package/dist/components/sponsored-slot/index.d.ts.map +1 -0
  558. package/dist/components/sponsored-slot/sponsored-slot.d.ts +16 -0
  559. package/dist/components/sponsored-slot/sponsored-slot.d.ts.map +1 -0
  560. package/dist/components/sponsored-slot/types.d.ts +45 -0
  561. package/dist/components/sponsored-slot/types.d.ts.map +1 -0
  562. package/dist/components/stepper/index.d.ts +7 -0
  563. package/dist/components/stepper/index.d.ts.map +1 -0
  564. package/dist/components/stepper/stepper.d.ts +145 -0
  565. package/dist/components/stepper/stepper.d.ts.map +1 -0
  566. package/dist/components/svg-color/index.d.ts +7 -0
  567. package/dist/components/svg-color/index.d.ts.map +1 -0
  568. package/dist/components/svg-color/svg-color.d.ts +80 -0
  569. package/dist/components/svg-color/svg-color.d.ts.map +1 -0
  570. package/dist/components/table/index.d.ts +7 -0
  571. package/dist/components/table/index.d.ts.map +1 -0
  572. package/dist/components/table/table.d.ts +184 -0
  573. package/dist/components/table/table.d.ts.map +1 -0
  574. package/dist/components/tabs/index.d.ts +7 -0
  575. package/dist/components/tabs/index.d.ts.map +1 -0
  576. package/dist/components/tabs/tabs.d.ts +146 -0
  577. package/dist/components/tabs/tabs.d.ts.map +1 -0
  578. package/dist/components/tag-cloud/index.d.ts +7 -0
  579. package/dist/components/tag-cloud/index.d.ts.map +1 -0
  580. package/dist/components/tag-cloud/tag-cloud.d.ts +58 -0
  581. package/dist/components/tag-cloud/tag-cloud.d.ts.map +1 -0
  582. package/dist/components/tiptap-renderer/index.d.ts +2 -0
  583. package/dist/components/tiptap-renderer/index.d.ts.map +1 -0
  584. package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +46 -0
  585. package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -0
  586. package/dist/components/tooltip/index.d.ts +7 -0
  587. package/dist/components/tooltip/index.d.ts.map +1 -0
  588. package/dist/components/tooltip/tooltip.d.ts +38 -0
  589. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  590. package/dist/components/virtual-list/index.d.ts +7 -0
  591. package/dist/components/virtual-list/index.d.ts.map +1 -0
  592. package/dist/components/virtual-list/virtual-list.d.ts +64 -0
  593. package/dist/components/virtual-list/virtual-list.d.ts.map +1 -0
  594. package/dist/core/accessibility/index.d.ts +96 -0
  595. package/dist/core/accessibility/index.d.ts.map +1 -0
  596. package/dist/core/accessibility/skip-link.d.ts +31 -0
  597. package/dist/core/accessibility/skip-link.d.ts.map +1 -0
  598. package/dist/core/context.d.ts +99 -0
  599. package/dist/core/context.d.ts.map +1 -0
  600. package/dist/core/hooks/use-boolean.d.ts +54 -0
  601. package/dist/core/hooks/use-boolean.d.ts.map +1 -0
  602. package/dist/core/hooks/use-breakpoints.d.ts +87 -0
  603. package/dist/core/hooks/use-breakpoints.d.ts.map +1 -0
  604. package/dist/core/hooks/use-click-outside.d.ts +26 -0
  605. package/dist/core/hooks/use-click-outside.d.ts.map +1 -0
  606. package/dist/core/hooks/use-copy-to-clipboard.d.ts +66 -0
  607. package/dist/core/hooks/use-copy-to-clipboard.d.ts.map +1 -0
  608. package/dist/core/hooks/use-countdown.d.ts +105 -0
  609. package/dist/core/hooks/use-countdown.d.ts.map +1 -0
  610. package/dist/core/hooks/use-debounce.d.ts +64 -0
  611. package/dist/core/hooks/use-debounce.d.ts.map +1 -0
  612. package/dist/core/hooks/use-event-listener.d.ts +37 -0
  613. package/dist/core/hooks/use-event-listener.d.ts.map +1 -0
  614. package/dist/core/hooks/use-interval.d.ts +30 -0
  615. package/dist/core/hooks/use-interval.d.ts.map +1 -0
  616. package/dist/core/hooks/use-is-client.d.ts +24 -0
  617. package/dist/core/hooks/use-is-client.d.ts.map +1 -0
  618. package/dist/core/hooks/use-local-storage.d.ts +61 -0
  619. package/dist/core/hooks/use-local-storage.d.ts.map +1 -0
  620. package/dist/core/hooks/use-media-query.d.ts +107 -0
  621. package/dist/core/hooks/use-media-query.d.ts.map +1 -0
  622. package/dist/core/hooks/use-mounted.d.ts +33 -0
  623. package/dist/core/hooks/use-mounted.d.ts.map +1 -0
  624. package/dist/core/hooks/use-multi-select.d.ts +113 -0
  625. package/dist/core/hooks/use-multi-select.d.ts.map +1 -0
  626. package/dist/core/hooks/use-previous.d.ts +23 -0
  627. package/dist/core/hooks/use-previous.d.ts.map +1 -0
  628. package/dist/core/hooks/use-set-state.d.ts +56 -0
  629. package/dist/core/hooks/use-set-state.d.ts.map +1 -0
  630. package/dist/core/hooks/use-tabs.d.ts +74 -0
  631. package/dist/core/hooks/use-tabs.d.ts.map +1 -0
  632. package/dist/core/hooks/use-timeout.d.ts +37 -0
  633. package/dist/core/hooks/use-timeout.d.ts.map +1 -0
  634. package/dist/core/index.d.ts +36 -468
  635. package/dist/core/index.d.ts.map +1 -0
  636. package/dist/core/index.js +10 -7
  637. package/dist/core/provider-stack.d.ts +181 -0
  638. package/dist/core/provider-stack.d.ts.map +1 -0
  639. package/dist/core/provider.d.ts +72 -0
  640. package/dist/core/provider.d.ts.map +1 -0
  641. package/dist/forms/index.d.ts +6 -557
  642. package/dist/forms/index.d.ts.map +1 -0
  643. package/dist/forms/index.js +0 -1
  644. package/dist/forms/index.js.map +1 -1
  645. package/dist/forms/schema-provider.d.ts +282 -0
  646. package/dist/forms/schema-provider.d.ts.map +1 -0
  647. package/dist/forms/schema-utils.d.ts +286 -0
  648. package/dist/forms/schema-utils.d.ts.map +1 -0
  649. package/dist/hooks/index.d.ts +38 -8
  650. package/dist/hooks/index.d.ts.map +1 -0
  651. package/dist/hooks/index.js +12 -9
  652. package/dist/hooks/use-array.d.ts +126 -0
  653. package/dist/hooks/use-array.d.ts.map +1 -0
  654. package/dist/hooks/use-async.d.ts +88 -0
  655. package/dist/hooks/use-async.d.ts.map +1 -0
  656. package/dist/hooks/use-back-to-top.d.ts +57 -0
  657. package/dist/hooks/use-back-to-top.d.ts.map +1 -0
  658. package/dist/hooks/use-client-rect.d.ts +67 -0
  659. package/dist/hooks/use-client-rect.d.ts.map +1 -0
  660. package/dist/hooks/use-config-from-query.d.ts +98 -0
  661. package/dist/hooks/use-config-from-query.d.ts.map +1 -0
  662. package/dist/hooks/use-cookies.d.ts +62 -0
  663. package/dist/hooks/use-cookies.d.ts.map +1 -0
  664. package/dist/hooks/use-countdown-date.d.ts +47 -0
  665. package/dist/hooks/use-countdown-date.d.ts.map +1 -0
  666. package/dist/hooks/use-countdown-seconds.d.ts +83 -0
  667. package/dist/hooks/use-countdown-seconds.d.ts.map +1 -0
  668. package/dist/hooks/use-double-click.d.ts +67 -0
  669. package/dist/hooks/use-double-click.d.ts.map +1 -0
  670. package/dist/hooks/use-focus-trap.d.ts +66 -0
  671. package/dist/hooks/use-focus-trap.d.ts.map +1 -0
  672. package/dist/hooks/use-image-dimensions.d.ts +124 -0
  673. package/dist/hooks/use-image-dimensions.d.ts.map +1 -0
  674. package/dist/hooks/use-infinite-scroll.d.ts +204 -0
  675. package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
  676. package/dist/hooks/use-intersection-observer.d.ts +93 -0
  677. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  678. package/dist/hooks/use-isomorphic-layout-effect.d.ts +34 -0
  679. package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  680. package/dist/hooks/use-keyboard-shortcut.d.ts +112 -0
  681. package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -0
  682. package/dist/hooks/use-lazy-query.d.ts +132 -0
  683. package/dist/hooks/use-lazy-query.d.ts.map +1 -0
  684. package/dist/hooks/use-mutation.d.ts +141 -0
  685. package/dist/hooks/use-mutation.d.ts.map +1 -0
  686. package/dist/hooks/use-online-status.d.ts +56 -0
  687. package/dist/hooks/use-online-status.d.ts.map +1 -0
  688. package/dist/hooks/use-password-visibility.d.ts +83 -0
  689. package/dist/hooks/use-password-visibility.d.ts.map +1 -0
  690. package/dist/hooks/use-popover-hover.d.ts +78 -0
  691. package/dist/hooks/use-popover-hover.d.ts.map +1 -0
  692. package/dist/hooks/use-scroll-offset-top.d.ts +69 -0
  693. package/dist/hooks/use-scroll-offset-top.d.ts.map +1 -0
  694. package/dist/hooks/use-scroll-position.d.ts +96 -0
  695. package/dist/hooks/use-scroll-position.d.ts.map +1 -0
  696. package/dist/hooks/use-session-storage.d.ts +66 -0
  697. package/dist/hooks/use-session-storage.d.ts.map +1 -0
  698. package/dist/hooks/use-throttle.d.ts +67 -0
  699. package/dist/hooks/use-throttle.d.ts.map +1 -0
  700. package/dist/hooks/use-update-effect.d.ts +53 -0
  701. package/dist/hooks/use-update-effect.d.ts.map +1 -0
  702. package/dist/hooks/use-window-size.d.ts +132 -0
  703. package/dist/hooks/use-window-size.d.ts.map +1 -0
  704. package/dist/http/client.d.ts +74 -0
  705. package/dist/http/client.d.ts.map +1 -0
  706. package/dist/http/index.d.ts +6 -229
  707. package/dist/http/index.d.ts.map +1 -0
  708. package/dist/http/index.js +0 -2
  709. package/dist/http/index.js.map +1 -1
  710. package/dist/http/types.d.ts +158 -0
  711. package/dist/http/types.d.ts.map +1 -0
  712. package/dist/icons/context.d.ts +17 -0
  713. package/dist/icons/context.d.ts.map +1 -0
  714. package/dist/icons/controls.d.ts +51 -0
  715. package/dist/icons/controls.d.ts.map +1 -0
  716. package/dist/icons/index.d.ts +3 -0
  717. package/dist/icons/index.d.ts.map +1 -0
  718. package/dist/icons/index.js +4 -0
  719. package/dist/icons/index.js.map +1 -0
  720. package/dist/icons/theme.d.ts +4 -0
  721. package/dist/icons/theme.d.ts.map +1 -0
  722. package/dist/index.css +4 -0
  723. package/dist/index.css.map +1 -1
  724. package/dist/index.d.ts +19 -2758
  725. package/dist/index.d.ts.map +1 -0
  726. package/dist/index.js +46 -63
  727. package/dist/index.js.map +1 -1
  728. package/dist/layouts/auth/centered.d.ts +49 -0
  729. package/dist/layouts/auth/centered.d.ts.map +1 -0
  730. package/dist/layouts/auth/index.d.ts +12 -0
  731. package/dist/layouts/auth/index.d.ts.map +1 -0
  732. package/dist/layouts/auth/simple.d.ts +58 -0
  733. package/dist/layouts/auth/simple.d.ts.map +1 -0
  734. package/dist/layouts/auth/split.d.ts +81 -0
  735. package/dist/layouts/auth/split.d.ts.map +1 -0
  736. package/dist/layouts/core/context.d.ts +102 -0
  737. package/dist/layouts/core/context.d.ts.map +1 -0
  738. package/dist/layouts/core/css-vars.d.ts +43 -0
  739. package/dist/layouts/core/css-vars.d.ts.map +1 -0
  740. package/dist/layouts/core/header-section.d.ts +79 -0
  741. package/dist/layouts/core/header-section.d.ts.map +1 -0
  742. package/dist/layouts/core/index.d.ts +18 -0
  743. package/dist/layouts/core/index.d.ts.map +1 -0
  744. package/dist/layouts/core/layout-section.d.ts +64 -0
  745. package/dist/layouts/core/layout-section.d.ts.map +1 -0
  746. package/dist/layouts/core/user-menu.d.ts +88 -0
  747. package/dist/layouts/core/user-menu.d.ts.map +1 -0
  748. package/dist/layouts/dashboard/index.d.ts +10 -0
  749. package/dist/layouts/dashboard/index.d.ts.map +1 -0
  750. package/dist/layouts/dashboard/labels.d.ts +12 -0
  751. package/dist/layouts/dashboard/labels.d.ts.map +1 -0
  752. package/dist/layouts/dashboard/layout.d.ts +96 -0
  753. package/dist/layouts/dashboard/layout.d.ts.map +1 -0
  754. package/dist/layouts/dashboard/sidenav.d.ts +62 -0
  755. package/dist/layouts/dashboard/sidenav.d.ts.map +1 -0
  756. package/dist/layouts/dashboard/topnav.d.ts +41 -0
  757. package/dist/layouts/dashboard/topnav.d.ts.map +1 -0
  758. package/dist/layouts/index.d.ts +32 -850
  759. package/dist/layouts/index.d.ts.map +1 -0
  760. package/dist/layouts/index.js +8 -4
  761. package/dist/layouts/panel-layout.d.ts +35 -0
  762. package/dist/layouts/panel-layout.d.ts.map +1 -0
  763. package/dist/layouts/sidebar-toggle.d.ts +11 -0
  764. package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
  765. package/dist/layouts/types.d.ts +317 -0
  766. package/dist/layouts/types.d.ts.map +1 -0
  767. package/dist/netron/context.d.ts +18 -0
  768. package/dist/netron/context.d.ts.map +1 -0
  769. package/dist/netron/hooks.d.ts +10 -0
  770. package/dist/netron/hooks.d.ts.map +1 -0
  771. package/dist/netron/index.d.ts +47 -4
  772. package/dist/netron/index.d.ts.map +1 -0
  773. package/dist/netron/index.js +1 -2
  774. package/dist/netron/types.d.ts +12 -0
  775. package/dist/netron/types.d.ts.map +1 -0
  776. package/dist/registry/index.d.ts +8 -341
  777. package/dist/registry/index.d.ts.map +1 -0
  778. package/dist/registry/index.js +1 -2
  779. package/dist/registry/installer.d.ts +137 -0
  780. package/dist/registry/installer.d.ts.map +1 -0
  781. package/dist/registry/manager.d.ts +196 -0
  782. package/dist/registry/manager.d.ts.map +1 -0
  783. package/dist/state/create-store.d.ts +164 -0
  784. package/dist/state/create-store.d.ts.map +1 -0
  785. package/dist/state/index.d.ts +12 -969
  786. package/dist/state/index.d.ts.map +1 -0
  787. package/dist/state/index.js +2 -3
  788. package/dist/state/settings-version.d.ts +255 -0
  789. package/dist/state/settings-version.d.ts.map +1 -0
  790. package/dist/state/stores/auth.d.ts +143 -0
  791. package/dist/state/stores/auth.d.ts.map +1 -0
  792. package/dist/state/stores/index.d.ts +10 -0
  793. package/dist/state/stores/index.d.ts.map +1 -0
  794. package/dist/state/stores/settings.d.ts +151 -0
  795. package/dist/state/stores/settings.d.ts.map +1 -0
  796. package/dist/state/stores/theme.d.ts +87 -0
  797. package/dist/state/stores/theme.d.ts.map +1 -0
  798. package/dist/state/stores/ui.d.ts +106 -0
  799. package/dist/state/stores/ui.d.ts.map +1 -0
  800. package/dist/theme/colors/base.d.ts +61 -0
  801. package/dist/theme/colors/base.d.ts.map +1 -0
  802. package/dist/theme/colors/index.d.ts +10 -0
  803. package/dist/theme/colors/index.d.ts.map +1 -0
  804. package/dist/theme/colors/luxury.d.ts +49 -0
  805. package/dist/theme/colors/luxury.d.ts.map +1 -0
  806. package/dist/theme/components/Autocomplete.d.ts +9 -0
  807. package/dist/theme/components/Autocomplete.d.ts.map +1 -0
  808. package/dist/theme/components/Button.d.ts +33 -0
  809. package/dist/theme/components/Button.d.ts.map +1 -0
  810. package/dist/theme/components/Card.d.ts +20 -0
  811. package/dist/theme/components/Card.d.ts.map +1 -0
  812. package/dist/theme/components/Chip.d.ts +29 -0
  813. package/dist/theme/components/Chip.d.ts.map +1 -0
  814. package/dist/theme/components/DataGrid.d.ts +15 -0
  815. package/dist/theme/components/DataGrid.d.ts.map +1 -0
  816. package/dist/theme/components/DatePicker.d.ts +19 -0
  817. package/dist/theme/components/DatePicker.d.ts.map +1 -0
  818. package/dist/theme/components/Dialog.d.ts +23 -0
  819. package/dist/theme/components/Dialog.d.ts.map +1 -0
  820. package/dist/theme/components/FormControls.d.ts +44 -0
  821. package/dist/theme/components/FormControls.d.ts.map +1 -0
  822. package/dist/theme/components/Tabs.d.ts +21 -0
  823. package/dist/theme/components/Tabs.d.ts.map +1 -0
  824. package/dist/theme/components/TextField.d.ts +87 -0
  825. package/dist/theme/components/TextField.d.ts.map +1 -0
  826. package/dist/theme/components/index.d.ts +27 -0
  827. package/dist/theme/components/index.d.ts.map +1 -0
  828. package/dist/theme/components/theme-utils.d.ts +42 -0
  829. package/dist/theme/components/theme-utils.d.ts.map +1 -0
  830. package/dist/theme/create-theme.d.ts +119 -0
  831. package/dist/theme/create-theme.d.ts.map +1 -0
  832. package/dist/theme/css-variables.d.ts +42 -0
  833. package/dist/theme/css-variables.d.ts.map +1 -0
  834. package/dist/theme/custom-shadows.d.ts +58 -0
  835. package/dist/theme/custom-shadows.d.ts.map +1 -0
  836. package/dist/theme/index.d.ts +23 -1045
  837. package/dist/theme/index.d.ts.map +1 -0
  838. package/dist/theme/index.js +6 -3
  839. package/dist/theme/mixins.d.ts +334 -0
  840. package/dist/theme/mixins.d.ts.map +1 -0
  841. package/dist/theme/opacity.d.ts +51 -0
  842. package/dist/theme/opacity.d.ts.map +1 -0
  843. package/dist/theme/palette/builder.d.ts +138 -0
  844. package/dist/theme/palette/builder.d.ts.map +1 -0
  845. package/dist/theme/palette/index.d.ts +7 -0
  846. package/dist/theme/palette/index.d.ts.map +1 -0
  847. package/dist/theme/palette/overrides.d.ts +23 -0
  848. package/dist/theme/palette/overrides.d.ts.map +1 -0
  849. package/dist/theme/palette.d.ts +43 -0
  850. package/dist/theme/palette.d.ts.map +1 -0
  851. package/dist/theme/presets/arctic.d.ts +13 -0
  852. package/dist/theme/presets/arctic.d.ts.map +1 -0
  853. package/dist/theme/presets/default.d.ts +13 -0
  854. package/dist/theme/presets/default.d.ts.map +1 -0
  855. package/dist/theme/presets/dracula.d.ts +27 -0
  856. package/dist/theme/presets/dracula.d.ts.map +1 -0
  857. package/dist/theme/presets/ember.d.ts +23 -0
  858. package/dist/theme/presets/ember.d.ts.map +1 -0
  859. package/dist/theme/presets/index.d.ts +39 -0
  860. package/dist/theme/presets/index.d.ts.map +1 -0
  861. package/dist/theme/presets/luxury.d.ts +13 -0
  862. package/dist/theme/presets/luxury.d.ts.map +1 -0
  863. package/dist/theme/presets/midnight.d.ts +23 -0
  864. package/dist/theme/presets/midnight.d.ts.map +1 -0
  865. package/dist/theme/presets/minimal.d.ts +23 -0
  866. package/dist/theme/presets/minimal.d.ts.map +1 -0
  867. package/dist/theme/presets/nature.d.ts +14 -0
  868. package/dist/theme/presets/nature.d.ts.map +1 -0
  869. package/dist/theme/presets/retro.d.ts +23 -0
  870. package/dist/theme/presets/retro.d.ts.map +1 -0
  871. package/dist/theme/shadows.d.ts +61 -0
  872. package/dist/theme/shadows.d.ts.map +1 -0
  873. package/dist/theme/typography.d.ts +24 -0
  874. package/dist/theme/typography.d.ts.map +1 -0
  875. package/dist/theme/utils/color.d.ts +295 -0
  876. package/dist/theme/utils/color.d.ts.map +1 -0
  877. package/dist/theme/utils/index.d.ts +7 -0
  878. package/dist/theme/utils/index.d.ts.map +1 -0
  879. package/dist/{registry-DQcIzW2s.d.ts → types/blocks.d.ts} +30 -191
  880. package/dist/types/blocks.d.ts.map +1 -0
  881. package/dist/{components-BCGZ-Rwt.d.ts → types/components.d.ts} +17 -20
  882. package/dist/types/components.d.ts.map +1 -0
  883. package/dist/{config-Pct0n_Kq.d.ts → types/config.d.ts} +14 -16
  884. package/dist/types/config.d.ts.map +1 -0
  885. package/dist/types/index.d.ts +13 -7
  886. package/dist/types/index.d.ts.map +1 -0
  887. package/dist/types/index.js +1 -2
  888. package/dist/types/registry.d.ts +158 -0
  889. package/dist/types/registry.d.ts.map +1 -0
  890. package/dist/{theme-B4Q3Bg5o.d.ts → types/theme.d.ts} +31 -34
  891. package/dist/types/theme.d.ts.map +1 -0
  892. package/dist/ui/index.d.ts +18 -0
  893. package/dist/ui/index.d.ts.map +1 -0
  894. package/dist/ui/index.js +148 -0
  895. package/dist/ui/index.js.map +1 -0
  896. package/dist/utils/async-lock.d.ts +169 -0
  897. package/dist/utils/async-lock.d.ts.map +1 -0
  898. package/dist/utils/cn.d.ts +80 -0
  899. package/dist/utils/cn.d.ts.map +1 -0
  900. package/dist/utils/cookies.d.ts +68 -0
  901. package/dist/utils/cookies.d.ts.map +1 -0
  902. package/dist/utils/create-classes.d.ts +90 -0
  903. package/dist/utils/create-classes.d.ts.map +1 -0
  904. package/dist/utils/errors.d.ts +201 -0
  905. package/dist/utils/errors.d.ts.map +1 -0
  906. package/dist/utils/fetch-interceptor.d.ts +230 -0
  907. package/dist/utils/fetch-interceptor.d.ts.map +1 -0
  908. package/dist/utils/font.d.ts +65 -0
  909. package/dist/utils/font.d.ts.map +1 -0
  910. package/dist/utils/format-crypto.d.ts +312 -0
  911. package/dist/utils/format-crypto.d.ts.map +1 -0
  912. package/dist/utils/format-date.d.ts +240 -0
  913. package/dist/utils/format-date.d.ts.map +1 -0
  914. package/dist/utils/format-number.d.ts +245 -0
  915. package/dist/utils/format-number.d.ts.map +1 -0
  916. package/dist/utils/i18n-text.d.ts +68 -0
  917. package/dist/utils/i18n-text.d.ts.map +1 -0
  918. package/dist/utils/index.d.ts +30 -0
  919. package/dist/utils/index.d.ts.map +1 -0
  920. package/dist/utils/jwt.d.ts +227 -0
  921. package/dist/utils/jwt.d.ts.map +1 -0
  922. package/dist/utils/object.d.ts +96 -0
  923. package/dist/utils/object.d.ts.map +1 -0
  924. package/dist/utils/refs.d.ts +60 -0
  925. package/dist/utils/refs.d.ts.map +1 -0
  926. package/dist/utils/rtl.d.ts +75 -0
  927. package/dist/utils/rtl.d.ts.map +1 -0
  928. package/dist/utils/storage.d.ts +190 -0
  929. package/dist/utils/storage.d.ts.map +1 -0
  930. package/dist/utils/string.d.ts +216 -0
  931. package/dist/utils/string.d.ts.map +1 -0
  932. package/dist/utils/template-resolver.d.ts +12 -0
  933. package/dist/utils/template-resolver.d.ts.map +1 -0
  934. package/dist/utils/toast.d.ts +25 -0
  935. package/dist/utils/toast.d.ts.map +1 -0
  936. package/dist/utils/transform-number.d.ts +108 -0
  937. package/dist/utils/transform-number.d.ts.map +1 -0
  938. package/dist/utils/url.d.ts +198 -0
  939. package/dist/utils/url.d.ts.map +1 -0
  940. package/package.json +120 -63
  941. package/dist/chunk-2FYNRDXR.js.map +0 -1
  942. package/dist/chunk-77KIJLPP.js +0 -37
  943. package/dist/chunk-A2Z7NVGL.js.map +0 -1
  944. package/dist/chunk-BV32OJ2A.js.map +0 -1
  945. package/dist/chunk-DDY7TLUI.js.map +0 -1
  946. package/dist/chunk-HO2GKTWJ.js.map +0 -1
  947. package/dist/chunk-IZOIO7PA.js.map +0 -1
  948. package/dist/chunk-JDTC2SBY.js.map +0 -1
  949. package/dist/chunk-KTCWPGON.js.map +0 -1
  950. package/dist/chunk-MEFT6XPH.js.map +0 -1
  951. package/dist/chunk-SNKGGHBT.js.map +0 -1
  952. package/dist/chunk-VAAIHNWQ.js.map +0 -1
  953. package/dist/chunk-XQXGE2PW.js +0 -16793
  954. package/dist/chunk-XQXGE2PW.js.map +0 -1
  955. package/dist/chunk-XWL6J6IO.js.map +0 -1
  956. package/dist/chunk-XXP3ZGU6.js.map +0 -1
  957. package/dist/chunk-YJMAQL3S.js.map +0 -1
  958. package/dist/index-nmJ8Muwg.d.ts +0 -2368
  959. package/dist/settings-CAC0qFjS.d.ts +0 -455
  960. package/dist/text-transform-D6MzzF7V.d.ts +0 -165
  961. package/dist/use-timeout-D7U3EAtH.d.ts +0 -808
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/search-input/search-input.tsx","../src/components/field/field-text.tsx","../src/components/field/field-select.tsx","../src/components/field/field-checkbox.tsx","../src/components/field/field-switch.tsx","../src/utils/transform-number.ts","../src/components/field/field-number.tsx","../src/components/field/field-radio.tsx","../src/components/field/field-autocomplete.tsx","../src/components/field/field-multi-select.tsx","../src/components/field/field-rating.tsx","../src/components/field/field-slider.tsx","../src/components/field/field-date-picker.tsx","../src/components/field/field-time-picker.tsx","../src/components/field/field-datetime-picker.tsx","../src/components/field/field-multi-checkbox.tsx","../src/components/field/field-multi-switch.tsx","../src/components/field/field-code.tsx","../src/components/field/field-upload.tsx","../src/components/field/field-phone.tsx","../src/components/field/field-country-select.tsx","../src/components/field/field-editor.tsx","../src/components/field/index.ts"],"names":["SearchInput","Box","jsx","useFormContext","useId","Controller","jsxs","TextField","FormControl","FormHelperText","FormControlLabel","num","useState","useEffect","FormLabel","Autocomplete","Typography","parsed","normalizeValue","dayjs","Checkbox","FormGroup","Switch","useRef","useCallback","useTheme","alpha","useMemo","Fragment","InputAdornment","IconButton","MenuItem","DEFAULT_COUNTRIES"],"mappings":"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","file":"chunk-KTCWPGON.js","sourcesContent":["/**\n * SearchInput — Unified search field for the entire platform.\n *\n * Features:\n * - Consistent styling (filled appearance, no outline notch issues)\n * - Built-in search icon (left) and clear button (right)\n * - Optional debounce for expensive filters\n * - Compact mode for sidebars (smaller padding)\n * - Works standalone or controlled\n */\n\nimport { useState, useEffect, useRef, forwardRef, type ChangeEvent, type ReactNode } from 'react';\nimport InputBase from '@mui/material/InputBase';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Tooltip from '@mui/material/Tooltip';\nimport Box from '@mui/material/Box';\nimport { alpha, useTheme, type SxProps, type Theme } from '@mui/material/styles';\n\n// ---------------------------------------------------------------------------\n// Icons (inline SVG — no external dependency)\n// ---------------------------------------------------------------------------\n\nfunction SearchIcon({ size = 18 }: { size?: number }): ReactNode {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n );\n}\n\nfunction ClearIcon(): ReactNode {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface SearchInputProps {\n /** Current value (controlled). */\n value?: string;\n /** Change handler. Receives the raw string (or debounced string if `debounce` > 0). */\n onChange?: (value: string) => void;\n /** Placeholder text. */\n placeholder?: string;\n /** Debounce delay in ms. 0 = no debounce (default). */\n debounce?: number;\n /** Compact mode — smaller padding, for sidebars and tight spaces. */\n compact?: boolean;\n /** Full width. Default true. */\n fullWidth?: boolean;\n /** Fixed or min width. */\n width?: number | string;\n /** Min width. */\n minWidth?: number | string;\n /** Clear button tooltip text. */\n clearTooltip?: string;\n /** Autofocus on mount. */\n autoFocus?: boolean;\n /** Focus handler. */\n onFocus?: () => void;\n /** Blur handler. */\n onBlur?: () => void;\n /** Keyboard handler. */\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n /** Custom sx overrides. */\n sx?: SxProps<Theme>;\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(function SearchInput(\n {\n value: controlledValue,\n onChange,\n placeholder = 'Search...',\n debounce = 0,\n compact = false,\n fullWidth = true,\n width,\n minWidth,\n clearTooltip = 'Clear',\n autoFocus,\n onFocus,\n onBlur,\n onKeyDown,\n sx,\n },\n ref\n) {\n const theme = useTheme();\n\n // Internal state for debounced mode or uncontrolled usage\n const [localValue, setLocalValue] = useState(controlledValue ?? '');\n const timerRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n // Sync internal state when controlled value changes externally\n useEffect(() => {\n if (controlledValue !== undefined) {\n setLocalValue(controlledValue);\n }\n }, [controlledValue]);\n\n const displayValue = controlledValue !== undefined && debounce === 0 ? controlledValue : localValue;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n setLocalValue(val);\n\n if (debounce > 0) {\n clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => onChange?.(val), debounce);\n } else {\n onChange?.(val);\n }\n };\n\n const handleClear = () => {\n setLocalValue('');\n clearTimeout(timerRef.current);\n onChange?.('');\n };\n\n // Cleanup timer\n useEffect(() => () => clearTimeout(timerRef.current), []);\n\n const py = compact ? 0.625 : 0.75;\n const px = compact ? 1.25 : 1.5;\n const inputPy = compact ? '3px' : '4px';\n\n return (\n <InputBase\n ref={ref}\n fullWidth={fullWidth}\n placeholder={placeholder}\n value={displayValue}\n onChange={handleChange}\n autoFocus={autoFocus}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n startAdornment={\n <InputAdornment position=\"start\" sx={{ color: 'text.disabled', mr: compact ? 0.75 : 1 }}>\n <SearchIcon size={compact ? 16 : 18} />\n </InputAdornment>\n }\n endAdornment={\n displayValue ? (\n <InputAdornment position=\"end\">\n <Tooltip title={clearTooltip}>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={handleClear}\n sx={{\n p: 0.25,\n border: 'none',\n background: 'none',\n cursor: 'pointer',\n color: 'text.disabled',\n display: 'flex',\n alignItems: 'center',\n borderRadius: '50%',\n '&:hover': { color: 'text.secondary' },\n }}\n >\n <ClearIcon />\n </Box>\n </Tooltip>\n </InputAdornment>\n ) : null\n }\n sx={{\n px,\n py,\n borderRadius: 1,\n fontSize: '0.875rem',\n bgcolor: alpha(theme.palette.grey[500], 0.08),\n transition: theme.transitions.create(['background-color'], {\n duration: theme.transitions.duration.shorter,\n }),\n '&:hover': {\n bgcolor: alpha(theme.palette.grey[500], 0.12),\n },\n '&.Mui-focused': {\n bgcolor: alpha(theme.palette.grey[500], 0.16),\n },\n '& .MuiInputBase-input': {\n py: inputPy,\n px: 0,\n overflow: 'visible',\n '&::placeholder': {\n opacity: 0.64,\n },\n },\n ...(width != null && { width }),\n ...(minWidth != null && { minWidth }),\n ...(!fullWidth && { width: width ?? 'auto' }),\n ...(Array.isArray(sx) ? Object.assign({}, ...sx) : sx),\n }}\n />\n );\n});\n","'use client';\n\n/**\n * Field.Text Component\n *\n * React Hook Form integrated text field with full accessibility support.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, ComponentProps } from 'react';\nimport { useId } from 'react';\nimport { Controller, useFormContext, type RegisterOptions } from 'react-hook-form';\nimport TextField from '@mui/material/TextField';\n\n/**\n * Props for Field.Text component.\n */\nexport interface FieldTextProps extends Omit<ComponentProps<typeof TextField>, 'name'> {\n /** Field name in the form */\n name: string;\n /** Validation rules for react-hook-form */\n rules?: RegisterOptions;\n}\n\n/**\n * Field.Text - Text input with React Hook Form integration.\n *\n * Includes comprehensive accessibility attributes:\n * - aria-describedby for helper text and error messages\n * - aria-invalid for error states\n * - aria-required for required fields\n * - Proper label associations via htmlFor\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Text name=\"email\" label=\"Email\" type=\"email\" />\n * <Field.Text name=\"password\" label=\"Password\" type=\"password\" />\n * </FormProvider>\n * ```\n */\nexport function FieldText({\n name,\n helperText,\n rules,\n required,\n slotProps,\n multiline,\n ...other\n}: FieldTextProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const inputId = `field-text-${id}`;\n const helperId = `field-text-helper-${id}`;\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field, fieldState: { error } }) => (\n <TextField\n {...field}\n id={inputId}\n fullWidth\n multiline={multiline}\n value={field.value ?? ''}\n error={!!error}\n helperText={error?.message ?? helperText}\n required={required}\n slotProps={{\n formHelperText: {\n id: helperId,\n },\n htmlInput: {\n 'aria-describedby': error?.message || helperText ? helperId : undefined,\n 'aria-invalid': !!error,\n 'aria-required': required,\n },\n // Shrink label for multiline fields to prevent overlap with textarea content\n ...(multiline ? { inputLabel: { shrink: true } } : {}),\n ...slotProps,\n }}\n {...other}\n />\n )}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Select Component\n *\n * React Hook Form integrated select field with full accessibility support.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, ComponentProps } from 'react';\nimport { useId } from 'react';\nimport { Controller, useFormContext, type RegisterOptions } from 'react-hook-form';\nimport TextField from '@mui/material/TextField';\nimport MenuItem from '@mui/material/MenuItem';\nimport type { SelectOption } from '../../types/components.js';\n\n/**\n * Props for Field.Select component.\n */\nexport interface FieldSelectProps extends Omit<ComponentProps<typeof TextField>, 'name' | 'select'> {\n /** Field name in the form */\n name: string;\n /** Select options */\n options: SelectOption<string | number>[];\n /** Placeholder text */\n placeholder?: string;\n /** Validation rules for react-hook-form */\n rules?: RegisterOptions;\n}\n\n/**\n * Field.Select - Select input with React Hook Form integration.\n *\n * Includes comprehensive accessibility attributes:\n * - aria-describedby for helper text and error messages\n * - aria-invalid for error states\n * - aria-required for required fields\n * - Proper listbox role for dropdown\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Select\n * name=\"country\"\n * label=\"Country\"\n * options={[\n * { value: 'us', label: 'United States' },\n * { value: 'uk', label: 'United Kingdom' },\n * { value: 'ca', label: 'Canada' },\n * ]}\n * />\n * </FormProvider>\n * ```\n */\nexport function FieldSelect({\n name,\n options,\n helperText,\n placeholder,\n rules,\n required,\n slotProps,\n ...other\n}: FieldSelectProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const inputId = `field-select-${id}`;\n const helperId = `field-select-helper-${id}`;\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field, fieldState: { error } }) => (\n <TextField\n {...field}\n id={inputId}\n select\n fullWidth\n value={field.value ?? ''}\n error={!!error}\n helperText={error?.message ?? helperText}\n required={required}\n slotProps={{\n formHelperText: {\n id: helperId,\n },\n select: {\n 'aria-describedby': error?.message || helperText ? helperId : undefined,\n 'aria-invalid': !!error,\n 'aria-required': required,\n },\n ...slotProps,\n }}\n {...other}\n >\n {placeholder && (\n <MenuItem value=\"\" disabled aria-hidden=\"true\">\n {placeholder}\n </MenuItem>\n )}\n {options.map((option) => (\n <MenuItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n aria-disabled={option.disabled}\n >\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n )}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Checkbox Component\n *\n * React Hook Form integrated checkbox field with full accessibility support.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, ComponentProps } from 'react';\nimport { useId } from 'react';\nimport { Controller, useFormContext, type RegisterOptions } from 'react-hook-form';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\n\n/**\n * Props for Field.Checkbox component.\n */\nexport interface FieldCheckboxProps extends Omit<ComponentProps<typeof Checkbox>, 'name'> {\n /** Field name in the form */\n name: string;\n /** Checkbox label */\n label?: ReactNode;\n /** Helper text */\n helperText?: string;\n /** Validation rules for react-hook-form */\n rules?: RegisterOptions;\n}\n\n/**\n * Field.Checkbox - Checkbox with React Hook Form integration.\n *\n * Includes comprehensive accessibility attributes:\n * - aria-describedby for helper text and error messages\n * - aria-invalid for error states\n * - aria-required for required fields\n * - Proper label associations\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Checkbox name=\"terms\" label=\"I agree to the terms\" />\n * <Field.Checkbox name=\"newsletter\" label=\"Subscribe to newsletter\" />\n * </FormProvider>\n * ```\n */\nexport function FieldCheckbox({\n name,\n label,\n helperText,\n rules,\n required,\n indeterminate,\n ...other\n}: FieldCheckboxProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const inputId = `field-checkbox-${id}`;\n const helperId = `field-checkbox-helper-${id}`;\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field, fieldState: { error } }) => (\n <FormControl error={!!error} required={required}>\n <FormControlLabel\n control={\n <Checkbox\n {...field}\n id={inputId}\n checked={!!field.value}\n indeterminate={indeterminate}\n {...other}\n slotProps={{\n input: {\n 'aria-describedby': error?.message || helperText ? helperId : undefined,\n 'aria-invalid': !!error,\n 'aria-required': required,\n ...(indeterminate && { 'aria-checked': 'mixed' as const }),\n }\n }} />\n }\n label={label}\n htmlFor={inputId}\n />\n {(error?.message || helperText) && (\n <FormHelperText id={helperId}>{error?.message ?? helperText}</FormHelperText>\n )}\n </FormControl>\n )}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Switch Component\n *\n * React Hook Form integrated switch field with full accessibility support.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, ComponentProps } from 'react';\nimport { useId } from 'react';\nimport { Controller, useFormContext, type RegisterOptions } from 'react-hook-form';\nimport Switch from '@mui/material/Switch';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\n\n/**\n * Props for Field.Switch component.\n */\nexport interface FieldSwitchProps extends Omit<ComponentProps<typeof Switch>, 'name'> {\n /** Field name in the form */\n name: string;\n /** Switch label */\n label?: ReactNode;\n /** Helper text */\n helperText?: string;\n /** Label placement */\n labelPlacement?: 'end' | 'start' | 'top' | 'bottom';\n /** Validation rules for react-hook-form */\n rules?: RegisterOptions;\n}\n\n/**\n * Field.Switch - Switch with React Hook Form integration.\n *\n * Includes comprehensive accessibility attributes:\n * - aria-describedby for helper text and error messages\n * - aria-invalid for error states\n * - aria-required for required fields\n * - Proper label associations\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Switch name=\"notifications\" label=\"Enable notifications\" />\n * <Field.Switch name=\"darkMode\" label=\"Dark mode\" labelPlacement=\"start\" />\n * </FormProvider>\n * ```\n */\nexport function FieldSwitch({\n name,\n label,\n helperText,\n labelPlacement = 'end',\n rules,\n required,\n ...other\n}: FieldSwitchProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const inputId = `field-switch-${id}`;\n const helperId = `field-switch-helper-${id}`;\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field, fieldState: { error } }) => (\n <FormControl error={!!error} required={required}>\n <FormControlLabel\n control={\n <Switch\n {...field}\n id={inputId}\n checked={!!field.value}\n {...other}\n slotProps={{\n input: {\n 'aria-describedby': error?.message || helperText ? helperId : undefined,\n 'aria-invalid': !!error,\n 'aria-required': required,\n }\n }} />\n }\n label={label}\n labelPlacement={labelPlacement}\n htmlFor={inputId}\n />\n {(error?.message || helperText) && (\n <FormHelperText id={helperId}>{error?.message ?? helperText}</FormHelperText>\n )}\n </FormControl>\n )}\n />\n );\n}\n","/**\n * Number Input Transform Utilities\n *\n * Three-phase number input handling for controlled inputs.\n * Allows users to type freely while maintaining valid numeric state.\n *\n * @module @omnitron-dev/prism/utils/transform-number\n */\n\n/**\n * Options for number transformation.\n */\nexport interface TransformNumberOptions {\n /** Minimum allowed value */\n min?: number;\n /** Maximum allowed value */\n max?: number;\n /** Decimal places to allow */\n decimals?: number;\n /** Allow negative numbers */\n allowNegative?: boolean;\n /** Default value when input is empty or invalid */\n defaultValue?: number;\n}\n\n/**\n * Parse a string to a number, handling edge cases.\n *\n * @param value - String value to parse\n * @param options - Transformation options\n * @returns Parsed number or undefined if invalid\n */\nexport function parseNumber(value: string, options: TransformNumberOptions = {}): number | undefined {\n const { allowNegative = true } = options;\n\n // Handle empty or whitespace-only strings\n const trimmed = value.trim();\n if (trimmed === '' || trimmed === '-' || trimmed === '.') {\n return undefined;\n }\n\n // Handle negative sign\n if (!allowNegative && trimmed.startsWith('-')) {\n return undefined;\n }\n\n const num = parseFloat(trimmed);\n return Number.isNaN(num) ? undefined : num;\n}\n\n/**\n * Clamp a number to min/max bounds.\n *\n * @param value - Value to clamp\n * @param options - Options with min/max\n * @returns Clamped value\n */\nexport function clampNumber(value: number, options: TransformNumberOptions = {}): number {\n const { min, max } = options;\n let result = value;\n\n if (min !== undefined && result < min) {\n result = min;\n }\n if (max !== undefined && result > max) {\n result = max;\n }\n\n return result;\n}\n\n/**\n * Round a number to specified decimal places.\n *\n * @param value - Value to round\n * @param decimals - Number of decimal places\n * @returns Rounded value\n */\nexport function roundToDecimals(value: number, decimals: number): number {\n const factor = Math.pow(10, decimals);\n return Math.round(value * factor) / factor;\n}\n\n/**\n * Transform value during onChange (while typing).\n * Allows intermediate states like empty string, single minus, or trailing decimal.\n *\n * @param value - Current input value\n * @param options - Transformation options\n * @returns Transformed string value (may include intermediate states)\n */\nexport function transformOnChange(value: string, options: TransformNumberOptions = {}): string {\n const { allowNegative = true, decimals } = options;\n\n // Allow empty string for clearing\n if (value === '') return '';\n\n // Allow single minus at start (user is typing negative number)\n if (allowNegative && value === '-') return '-';\n\n // Allow trailing decimal point (user is typing decimal)\n if (value.endsWith('.') && decimals !== 0) {\n const withoutDot = value.slice(0, -1);\n const num = parseNumber(withoutDot, options);\n if (num !== undefined) return value;\n }\n\n // Allow trailing zeros after decimal (e.g., \"1.50\" while typing \"1.500\")\n if (decimals !== 0 && value.includes('.')) {\n const parts = value.split('.');\n if (parts.length === 2 && /^0*$/.test(parts[1])) {\n const num = parseNumber(parts[0], options);\n if (num !== undefined) return value;\n }\n }\n\n // Parse and validate\n const num = parseNumber(value, options);\n if (num === undefined) {\n // Invalid input, return empty to trigger validation\n return '';\n }\n\n // Keep the original string representation to preserve user formatting\n return value;\n}\n\n/**\n * Transform value during onBlur (when input loses focus).\n * Finalizes the value with proper formatting and validation.\n *\n * @param value - Current input value\n * @param options - Transformation options\n * @returns Finalized numeric value\n */\nexport function transformOnBlur(value: string, options: TransformNumberOptions = {}): number {\n const { min, max, decimals, defaultValue = 0 } = options;\n\n const num = parseNumber(value, options);\n if (num === undefined) {\n return defaultValue;\n }\n\n let result = num;\n\n // Apply decimal rounding\n if (decimals !== undefined) {\n result = roundToDecimals(result, decimals);\n }\n\n // Apply min/max clamping\n result = clampNumber(result, { min, max });\n\n return result;\n}\n\n/**\n * Transform a number for display in an input.\n * Converts number back to string representation.\n *\n * @param value - Numeric value\n * @param options - Transformation options\n * @returns String representation for input value\n */\nexport function transformForDisplay(value: number | null | undefined, options: TransformNumberOptions = {}): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const { decimals } = options;\n\n if (decimals !== undefined) {\n return value.toFixed(decimals);\n }\n\n return String(value);\n}\n\n/**\n * Create a complete number input handler.\n * Returns handlers for onChange, onBlur, and value display.\n *\n * @example\n * ```tsx\n * const [price, setPrice] = useState(0);\n * const handlers = createNumberInputHandlers({\n * value: price,\n * onChange: setPrice,\n * min: 0,\n * decimals: 2,\n * });\n *\n * <TextField\n * value={handlers.displayValue}\n * onChange={(e) => handlers.handleChange(e.target.value)}\n * onBlur={handlers.handleBlur}\n * />\n * ```\n *\n * @param config - Handler configuration\n * @returns Object with handlers and display value\n */\nexport function createNumberInputHandlers(config: {\n value: number;\n onChange: (value: number) => void;\n options?: TransformNumberOptions;\n}): {\n displayValue: string;\n handleChange: (value: string) => void;\n handleBlur: () => void;\n} {\n const { value, onChange, options = {} } = config;\n let intermediateValue: string | null = null;\n\n return {\n displayValue: intermediateValue ?? transformForDisplay(value, options),\n\n handleChange: (newValue: string) => {\n const transformed = transformOnChange(newValue, options);\n intermediateValue = transformed;\n\n // Try to parse for immediate feedback\n const num = parseNumber(transformed, options);\n if (num !== undefined) {\n onChange(num);\n }\n },\n\n handleBlur: () => {\n const finalValue = transformOnBlur(intermediateValue ?? String(value), options);\n intermediateValue = null;\n onChange(finalValue);\n },\n };\n}\n","'use client';\n\n/**\n * Field.Number Component\n *\n * React Hook Form integrated number field with proper numeric handling\n * and full accessibility support.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, ComponentProps } from 'react';\nimport { useCallback, useState, useEffect, useId } from 'react';\nimport {\n Controller,\n useFormContext,\n type RegisterOptions,\n type ControllerRenderProps,\n type FieldValues,\n type FieldError,\n} from 'react-hook-form';\nimport TextField from '@mui/material/TextField';\nimport type { TransformNumberOptions } from '../../utils/transform-number.js';\nimport { transformOnChange, transformOnBlur, transformForDisplay } from '../../utils/transform-number.js';\n\n/**\n * Props for Field.Number component.\n */\nexport interface FieldNumberProps extends Omit<ComponentProps<typeof TextField>, 'name' | 'type'> {\n /** Field name in the form */\n name: string;\n /** Minimum allowed value */\n min?: number;\n /** Maximum allowed value */\n max?: number;\n /** Decimal places to allow */\n decimals?: number;\n /** Allow negative numbers */\n allowNegative?: boolean;\n /** Default value when input is empty */\n defaultValue?: number;\n /** Validation rules for react-hook-form */\n rules?: RegisterOptions;\n}\n\n/**\n * Internal props for the number input renderer.\n * Excludes 'error' from FieldNumberProps because TextField's error is boolean,\n * but we need FieldError from react-hook-form.\n */\ninterface NumberInputProps extends Omit<FieldNumberProps, 'name' | 'rules' | 'error'> {\n field: ControllerRenderProps<FieldValues, string>;\n error?: FieldError;\n options: TransformNumberOptions;\n inputId: string;\n helperId: string;\n}\n\n/**\n * Internal component that handles the number input rendering.\n * Extracted to comply with Rules of Hooks - hooks must be called at top level.\n *\n * Includes comprehensive accessibility attributes:\n * - aria-describedby for helper text and error messages\n * - aria-invalid for error states\n * - aria-valuemin/max for range constraints\n * - Proper inputMode for numeric keyboard\n */\nfunction NumberInput({\n field,\n error,\n options,\n helperText,\n inputId,\n helperId,\n required,\n slotProps,\n ...other\n}: NumberInputProps): ReactNode {\n const [displayValue, setDisplayValue] = useState<string>(() =>\n transformForDisplay(field.value ?? options.defaultValue ?? 0, options)\n );\n\n // Sync display value when field value changes externally (e.g., form reset)\n useEffect(() => {\n const formatted = transformForDisplay(field.value ?? options.defaultValue ?? 0, options);\n setDisplayValue(formatted);\n }, [field.value, options]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const transformed = transformOnChange(e.target.value, options);\n setDisplayValue(transformed);\n\n // Update form value if we have a valid number\n const num = parseFloat(transformed);\n if (!isNaN(num)) {\n field.onChange(num);\n } else if (transformed === '' || transformed === '-') {\n // Keep intermediate states for UX\n field.onChange(options.defaultValue ?? 0);\n }\n },\n [field, options]\n );\n\n const handleBlur = useCallback(() => {\n const finalValue = transformOnBlur(displayValue || String(field.value ?? options.defaultValue ?? 0), options);\n field.onChange(finalValue);\n setDisplayValue(transformForDisplay(finalValue, options));\n field.onBlur();\n }, [displayValue, field, options]);\n\n return (\n <TextField\n {...other}\n id={inputId}\n fullWidth\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n error={!!error}\n helperText={error?.message ?? helperText}\n required={required}\n slotProps={{\n formHelperText: {\n id: helperId,\n },\n htmlInput: {\n inputMode: options.decimals === 0 ? 'numeric' : 'decimal',\n 'aria-describedby': error?.message || helperText ? helperId : undefined,\n 'aria-invalid': !!error,\n 'aria-required': required,\n 'aria-valuemin': options.min,\n 'aria-valuemax': options.max,\n 'aria-valuenow': field.value ?? options.defaultValue ?? 0,\n },\n ...slotProps,\n }}\n />\n );\n}\n\n/**\n * Field.Number - Number input with proper numeric handling.\n * Uses transformNumber utilities for three-phase input handling.\n *\n * Includes comprehensive accessibility attributes:\n * - aria-describedby for helper text and error messages\n * - aria-invalid for error states\n * - aria-valuemin/max for range constraints\n * - Proper inputMode for numeric keyboard\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Number name=\"quantity\" label=\"Quantity\" min={1} max={100} />\n * <Field.Number name=\"price\" label=\"Price\" decimals={2} min={0} />\n * </FormProvider>\n * ```\n */\nexport function FieldNumber({\n name,\n min,\n max,\n decimals,\n allowNegative = true,\n defaultValue = 0,\n rules,\n\n error: _error,\n ...other\n}: FieldNumberProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const inputId = `field-number-${id}`;\n const helperId = `field-number-helper-${id}`;\n\n const options: TransformNumberOptions = {\n min,\n max,\n decimals,\n allowNegative,\n defaultValue,\n };\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field, fieldState: { error } }) => (\n <NumberInput field={field} error={error} options={options} inputId={inputId} helperId={helperId} {...other} />\n )}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Radio Component\n *\n * React Hook Form integrated radio group with full accessibility support.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode } from 'react';\nimport { useId } from 'react';\nimport { Controller, useFormContext, type RegisterOptions } from 'react-hook-form';\nimport FormControl from '@mui/material/FormControl';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport type { FormControlProps } from '@mui/material/FormControl';\n\n/**\n * Option for radio group.\n */\nexport interface RadioOption {\n /** Option value */\n value: string | number;\n /** Display label */\n label: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\n/**\n * Props for Field.Radio component.\n */\nexport interface FieldRadioProps extends Omit<FormControlProps, 'name'> {\n /** Field name in the form */\n name: string;\n /** Radio options */\n options: RadioOption[];\n /** Label for the radio group */\n label?: string;\n /** Helper text */\n helperText?: string;\n /** Layout direction */\n row?: boolean;\n /** Validation rules for react-hook-form */\n rules?: RegisterOptions;\n}\n\n/**\n * Field.Radio - Radio group with React Hook Form integration.\n *\n * Includes comprehensive accessibility attributes:\n * - aria-describedby for helper text and error messages\n * - aria-invalid for error states\n * - aria-required for required fields\n * - Proper radiogroup role and label association\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Radio\n * name=\"gender\"\n * label=\"Gender\"\n * options={[\n * { value: 'male', label: 'Male' },\n * { value: 'female', label: 'Female' },\n * { value: 'other', label: 'Other' },\n * ]}\n * />\n * </FormProvider>\n * ```\n */\nexport function FieldRadio({\n name,\n options,\n label,\n helperText,\n row = false,\n rules,\n required,\n ...other\n}: FieldRadioProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const groupId = `field-radio-${id}`;\n const labelId = `field-radio-label-${id}`;\n const helperId = `field-radio-helper-${id}`;\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field, fieldState: { error } }) => (\n <FormControl error={!!error} required={required} {...other}>\n {label && (\n <FormLabel id={labelId} htmlFor={groupId}>\n {label}\n </FormLabel>\n )}\n <RadioGroup\n {...field}\n id={groupId}\n row={row}\n value={field.value ?? ''}\n aria-labelledby={label ? labelId : undefined}\n aria-describedby={error?.message || helperText ? helperId : undefined}\n aria-invalid={!!error}\n aria-required={required}\n >\n {options.map((option, index) => (\n <FormControlLabel\n key={String(option.value)}\n value={option.value}\n control={\n <Radio\n id={`${groupId}-option-${index}`}\n slotProps={{\n input: {\n 'aria-label': option.label,\n }\n }}\n />\n }\n label={option.label}\n disabled={option.disabled}\n />\n ))}\n </RadioGroup>\n {(error?.message || helperText) && (\n <FormHelperText id={helperId}>{error?.message ?? helperText}</FormHelperText>\n )}\n </FormControl>\n )}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Autocomplete Component\n *\n * React Hook Form integrated autocomplete with search.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, SyntheticEvent } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport type { TextFieldProps } from '@mui/material/TextField';\n\n/**\n * Option for autocomplete.\n */\nexport interface AutocompleteOption {\n /** Option value */\n value: string | number;\n /** Display label */\n label: string;\n /** Optional group */\n group?: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\n/**\n * Props for Field.Autocomplete component.\n */\nexport interface FieldAutocompleteProps {\n /** Field name in the form */\n name: string;\n /** Autocomplete options */\n options: AutocompleteOption[];\n /** Field label */\n label?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Helper text */\n helperText?: string;\n /** Props passed to TextField */\n textFieldProps?: Partial<TextFieldProps>;\n /** Disable clearable */\n disableClearable?: boolean;\n /** Disable close on select */\n disableCloseOnSelect?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Loading text */\n loadingText?: ReactNode;\n /** No options text */\n noOptionsText?: ReactNode;\n /** Disabled state */\n disabled?: boolean;\n /** Read only state */\n readOnly?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Size */\n size?: 'small' | 'medium';\n}\n\n/**\n * Field.Autocomplete - Autocomplete with React Hook Form integration.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Autocomplete\n * name=\"country\"\n * label=\"Country\"\n * options={countries}\n * placeholder=\"Select a country...\"\n * />\n * </FormProvider>\n * ```\n */\nexport function FieldAutocomplete({\n name,\n options,\n label,\n placeholder,\n helperText,\n textFieldProps,\n disableClearable,\n disableCloseOnSelect,\n loading,\n loadingText,\n noOptionsText,\n disabled,\n readOnly,\n fullWidth = true,\n size,\n}: FieldAutocompleteProps): ReactNode {\n const { control, setValue } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n // Find selected option\n const selectedOption = options.find((opt) => opt.value === field.value) ?? null;\n\n return (\n <Autocomplete\n options={options}\n value={selectedOption}\n disableClearable={disableClearable}\n disableCloseOnSelect={disableCloseOnSelect}\n loading={loading}\n loadingText={loadingText}\n noOptionsText={noOptionsText}\n disabled={disabled}\n readOnly={readOnly}\n fullWidth={fullWidth}\n size={size}\n getOptionLabel={(option) => option.label}\n getOptionDisabled={(option) => !!option.disabled}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n groupBy={options.some((opt) => opt.group) ? (option) => option.group ?? '' : undefined}\n onChange={(_event: SyntheticEvent, newValue: AutocompleteOption | null) => {\n setValue(name, newValue?.value ?? '', { shouldValidate: true });\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n placeholder={placeholder}\n error={!!error}\n helperText={error?.message ?? helperText}\n {...textFieldProps}\n />\n )}\n />\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.MultiSelect Component\n *\n * React Hook Form integrated multi-select with chips.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, SyntheticEvent } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport Chip from '@mui/material/Chip';\nimport type { TextFieldProps } from '@mui/material/TextField';\n\n/**\n * Option for multi-select.\n */\nexport interface MultiSelectOption {\n /** Option value */\n value: string | number;\n /** Display label */\n label: string;\n /** Optional group */\n group?: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\n/**\n * Props for Field.MultiSelect component.\n */\nexport interface FieldMultiSelectProps {\n /** Field name in the form */\n name: string;\n /** Select options */\n options: MultiSelectOption[];\n /** Field label */\n label?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Helper text */\n helperText?: string;\n /** Props passed to TextField */\n textFieldProps?: Partial<TextFieldProps>;\n /** Maximum number of selections */\n maxSelections?: number;\n /** Chip variant */\n chipVariant?: 'filled' | 'outlined' | 'soft';\n /** Chip color */\n chipColor?: 'default' | 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'warning';\n /** Disable clearable */\n disableClearable?: boolean;\n /** Disable close on select */\n disableCloseOnSelect?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Loading text */\n loadingText?: ReactNode;\n /** No options text */\n noOptionsText?: ReactNode;\n /** Disabled state */\n disabled?: boolean;\n /** Read only state */\n readOnly?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Size */\n size?: 'small' | 'medium';\n /** Limit number of visible tags */\n limitTags?: number;\n}\n\n/**\n * Field.MultiSelect - Multiple selection with React Hook Form integration.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.MultiSelect\n * name=\"tags\"\n * label=\"Tags\"\n * options={[\n * { value: 'react', label: 'React' },\n * { value: 'typescript', label: 'TypeScript' },\n * { value: 'nodejs', label: 'Node.js' },\n * ]}\n * />\n * </FormProvider>\n * ```\n */\nexport function FieldMultiSelect({\n name,\n options,\n label,\n placeholder,\n helperText,\n textFieldProps,\n maxSelections,\n chipVariant = 'filled',\n chipColor = 'primary',\n disableClearable,\n disableCloseOnSelect,\n loading,\n loadingText,\n noOptionsText,\n disabled,\n readOnly,\n fullWidth = true,\n size,\n limitTags,\n}: FieldMultiSelectProps): ReactNode {\n const { control, setValue } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n // Convert array of values to array of options\n const values = (field.value as (string | number)[] | undefined) ?? [];\n const selectedOptions = values\n .map((val) => options.find((opt) => opt.value === val))\n .filter((opt): opt is MultiSelectOption => opt !== undefined);\n\n const isMaxReached = maxSelections !== undefined && selectedOptions.length >= maxSelections;\n\n return (\n <Autocomplete\n multiple\n options={options}\n value={selectedOptions}\n disableClearable={disableClearable}\n disableCloseOnSelect={disableCloseOnSelect}\n loading={loading}\n loadingText={loadingText}\n noOptionsText={noOptionsText}\n disabled={disabled}\n readOnly={readOnly}\n fullWidth={fullWidth}\n size={size}\n limitTags={limitTags}\n getOptionLabel={(option) => option.label}\n getOptionDisabled={(option) => {\n if (option.disabled) return true;\n // Disable all options if max reached and option not already selected\n if (isMaxReached) {\n const isSelected = selectedOptions.some((sel) => sel.value === option.value);\n return !isSelected;\n }\n return false;\n }}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n groupBy={options.some((opt) => opt.group) ? (option) => option.group ?? '' : undefined}\n onChange={(_event: SyntheticEvent, newValue: MultiSelectOption[]) => {\n const newValues = newValue.map((item) => item.value);\n setValue(name, newValues, { shouldValidate: true });\n }}\n renderValue={(value, getItemProps) =>\n value.map((option, index) => {\n const { key, ...tagProps } = getItemProps({ index });\n return (\n <Chip\n key={key}\n label={option.label}\n variant={chipVariant as 'filled' | 'outlined'}\n color={chipColor}\n size=\"small\"\n {...tagProps}\n />\n );\n })\n }\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n placeholder={selectedOptions.length === 0 ? placeholder : undefined}\n error={!!error}\n helperText={\n error?.message ??\n (maxSelections\n ? `${selectedOptions.length}/${maxSelections} selected${helperText ? ` - ${helperText}` : ''}`\n : helperText)\n }\n {...textFieldProps}\n />\n )}\n />\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Rating Component\n *\n * React Hook Form integrated star rating.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport { useId, type ReactNode } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport Rating from '@mui/material/Rating';\nimport type { RatingProps } from '@mui/material/Rating';\nimport type { FormControlProps } from '@mui/material/FormControl';\n\n/**\n * Props for Field.Rating component.\n */\nexport interface FieldRatingProps extends Omit<RatingProps, 'name' | 'value' | 'onChange'> {\n /** Field name in the form */\n name: string;\n /** Field label */\n label?: string;\n /** Helper text */\n helperText?: string;\n /** Props passed to FormControl */\n formControlProps?: FormControlProps;\n /** Show numeric value next to rating */\n showValue?: boolean;\n}\n\n/**\n * Field.Rating - Star rating with React Hook Form integration.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Rating\n * name=\"rating\"\n * label=\"How would you rate this?\"\n * max={5}\n * precision={0.5}\n * showValue\n * />\n * </FormProvider>\n * ```\n */\nexport function FieldRating({\n name,\n label,\n helperText,\n formControlProps,\n showValue = false,\n max = 5,\n precision = 1,\n size = 'medium',\n ...other\n}: FieldRatingProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const helperId = `field-rating-helper-${id}`;\n const labelId = `field-rating-label-${id}`;\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const hasHelper = !!(error?.message || helperText);\n return (\n <FormControl error={!!error} {...formControlProps}>\n {label && (\n <FormLabel id={labelId} sx={{ mb: 1 }}>\n {label}\n </FormLabel>\n )}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Rating\n {...other}\n {...field}\n value={field.value ?? 0}\n max={max}\n precision={precision}\n size={size}\n onChange={(_event, newValue) => {\n field.onChange(newValue);\n }}\n aria-labelledby={label ? labelId : undefined}\n aria-describedby={hasHelper ? helperId : undefined}\n aria-invalid={!!error}\n />\n {showValue && (\n <Box\n component=\"span\"\n sx={{\n color: 'text.secondary',\n fontSize: size === 'small' ? '0.75rem' : size === 'large' ? '1rem' : '0.875rem',\n }}\n >\n {field.value ?? 0}/{max}\n </Box>\n )}\n </Box>\n {hasHelper && <FormHelperText id={helperId}>{error?.message ?? helperText}</FormHelperText>}\n </FormControl>\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Slider Component\n *\n * React Hook Form integrated slider.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport { useId, type ReactNode } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport Slider from '@mui/material/Slider';\nimport Typography from '@mui/material/Typography';\nimport type { SliderProps } from '@mui/material/Slider';\nimport type { FormControlProps } from '@mui/material/FormControl';\n\n/**\n * Props for Field.Slider component.\n */\nexport interface FieldSliderProps extends Omit<SliderProps, 'name' | 'value' | 'onChange'> {\n /** Field name in the form */\n name: string;\n /** Field label */\n label?: string;\n /** Helper text */\n helperText?: string;\n /** Props passed to FormControl */\n formControlProps?: FormControlProps;\n /** Show current value */\n showValue?: boolean;\n /** Format value display */\n formatValue?: (value: number | number[]) => string;\n /** Unit suffix (e.g., '%', 'px', 'MB') */\n unit?: string;\n}\n\n/**\n * Field.Slider - Slider with React Hook Form integration.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Slider\n * name=\"volume\"\n * label=\"Volume\"\n * min={0}\n * max={100}\n * unit=\"%\"\n * showValue\n * />\n * <Field.Slider\n * name=\"priceRange\"\n * label=\"Price Range\"\n * min={0}\n * max={1000}\n * formatValue={(val) => `$${val[0]} - $${val[1]}`}\n * showValue\n * />\n * </FormProvider>\n * ```\n */\nexport function FieldSlider({\n name,\n label,\n helperText,\n formControlProps,\n showValue = false,\n formatValue,\n unit,\n min = 0,\n max = 100,\n step = 1,\n ...other\n}: FieldSliderProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const helperId = `field-slider-helper-${id}`;\n const labelId = `field-slider-label-${id}`;\n\n const defaultFormatValue = (value: number | number[]): string => {\n if (Array.isArray(value)) {\n return `${value[0]}${unit ?? ''} - ${value[1]}${unit ?? ''}`;\n }\n return `${value}${unit ?? ''}`;\n };\n\n const displayValue = formatValue ?? defaultFormatValue;\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const hasHelper = !!(error?.message || helperText);\n return (\n <FormControl error={!!error} fullWidth {...formControlProps}>\n {(label || showValue) && (\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 1 }}>\n {label && <FormLabel id={labelId}>{label}</FormLabel>}\n {showValue && (\n <Typography variant=\"body2\" sx={{\n color: \"text.secondary\"\n }}>\n {displayValue(field.value ?? (Array.isArray(other.defaultValue) ? [min, max] : min))}\n </Typography>\n )}\n </Box>\n )}\n <Slider\n {...other}\n {...field}\n value={field.value ?? (Array.isArray(other.defaultValue) ? [min, max] : min)}\n min={min}\n max={max}\n step={step}\n onChange={(_event, newValue) => {\n field.onChange(newValue);\n }}\n valueLabelDisplay={other.valueLabelDisplay ?? 'auto'}\n valueLabelFormat={(value) => `${value}${unit ?? ''}`}\n aria-labelledby={label ? labelId : undefined}\n aria-describedby={hasHelper ? helperId : undefined}\n aria-invalid={!!error}\n />\n {hasHelper && <FormHelperText id={helperId}>{error?.message ?? helperText}</FormHelperText>}\n </FormControl>\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.DatePicker Component\n *\n * React Hook Form integrated date picker using MUI X DatePickers.\n * Consistent with Field.DateTimePicker and Field.TimePicker.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport type { TextFieldProps } from '@mui/material/TextField';\nimport dayjs from 'dayjs';\nimport type { Dayjs } from 'dayjs';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\ntype DateValue = Dayjs | Date | string | number | null | undefined;\n\n/**\n * Props for Field.DatePicker component.\n */\nexport interface FieldDatePickerProps {\n /** Field name in the form */\n name: string;\n /** Field label */\n label?: ReactNode;\n /** Helper text shown below the field */\n helperText?: ReactNode;\n /** TextField props for customization */\n textFieldProps?: Partial<TextFieldProps>;\n /** Disable the field */\n disabled?: boolean;\n /** Read-only mode */\n readOnly?: boolean;\n /** Minimum selectable date */\n minDate?: Dayjs;\n /** Maximum selectable date */\n maxDate?: Dayjs;\n /** Disable past dates */\n disablePast?: boolean;\n /** Disable future dates */\n disableFuture?: boolean;\n /** Views to display */\n views?: Array<'year' | 'month' | 'day'>;\n /** Open picker to specific view */\n openTo?: 'year' | 'month' | 'day';\n /** Format for display */\n format?: string;\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\nfunction normalizeValue(value: DateValue): Dayjs | null {\n if (value === null || value === undefined || value === '') return null;\n if (dayjs.isDayjs(value)) return value.isValid() ? value : null;\n if (value instanceof Date) {\n const parsed = dayjs(value);\n return parsed.isValid() ? parsed : null;\n }\n const parsed = dayjs(value);\n return parsed.isValid() ? parsed : null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Field.DatePicker - Date picker with React Hook Form integration.\n *\n * Uses @mui/x-date-pickers DatePicker for a polished calendar UI.\n * Stores value as ISO string for serialization compatibility.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.DatePicker name=\"birthDate\" label=\"Birth Date\" />\n * <Field.DatePicker name=\"deadline\" label=\"Deadline\" disablePast />\n * </FormProvider>\n * ```\n */\nexport function FieldDatePicker({\n name,\n label,\n helperText,\n textFieldProps,\n disabled,\n readOnly,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n views,\n openTo,\n format,\n}: FieldDatePickerProps): ReactNode {\n const { control } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const normalizedValue = normalizeValue(field.value);\n\n return (\n <DatePicker\n label={label}\n value={normalizedValue}\n onChange={(newValue: Dayjs | null) => {\n field.onChange(newValue?.toISOString() ?? null);\n }}\n disabled={disabled}\n readOnly={readOnly}\n minDate={minDate}\n maxDate={maxDate}\n disablePast={disablePast}\n disableFuture={disableFuture}\n views={views}\n openTo={openTo}\n format={format}\n slotProps={{\n // MUI v9 x-date-pickers' default textField slot is the new\n // PickersTextField (separate from the MUI TextField). The\n // shape is structurally compatible for our use (fullWidth,\n // error, helperText, sx, label) but TS's strict slot typing\n // refuses to merge with our caller-supplied TextFieldProps.\n // Cast silences the union mismatch without losing runtime\n // behaviour — the picker forwards every prop through to\n // the underlying input.\n textField: {\n fullWidth: true,\n error: !!error,\n helperText: error?.message ?? helperText,\n ...textFieldProps,\n } as never,\n }}\n />\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.TimePicker Component\n *\n * React Hook Form integrated time picker using MUI X DatePickers.\n * Provides a professional time selection experience with dayjs integration.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { TimePicker } from '@mui/x-date-pickers/TimePicker';\nimport type { TextFieldProps } from '@mui/material/TextField';\nimport dayjs from 'dayjs';\nimport type { Dayjs } from 'dayjs';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Value types that can be normalized to Dayjs\n */\ntype DateValue = Dayjs | Date | string | number | null | undefined;\n\n/**\n * Props for Field.TimePicker component.\n */\nexport interface FieldTimePickerProps {\n /** Field name in the form */\n name: string;\n /** Field label */\n label?: ReactNode;\n /** Helper text shown below the field */\n helperText?: ReactNode;\n /** TextField props for customization */\n textFieldProps?: Partial<TextFieldProps>;\n /** Disable the field */\n disabled?: boolean;\n /** Read-only mode */\n readOnly?: boolean;\n /** Minutes step for time selection */\n minutesStep?: number;\n /** Use 12-hour format with AM/PM */\n ampm?: boolean;\n /** Minimum selectable time */\n minTime?: Dayjs;\n /** Maximum selectable time */\n maxTime?: Dayjs;\n /** Time views to display */\n views?: Array<'hours' | 'minutes' | 'seconds'>;\n /** Open picker to specific view */\n openTo?: 'hours' | 'minutes' | 'seconds';\n /** Format for display */\n format?: string;\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Normalize various date value types to Dayjs or null.\n * Handles Dayjs, Date, string, number, null, and undefined.\n */\nfunction normalizeValue(value: DateValue): Dayjs | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n // Already Dayjs\n if (dayjs.isDayjs(value)) {\n return value.isValid() ? value : null;\n }\n\n // Date object\n if (value instanceof Date) {\n const parsed = dayjs(value);\n return parsed.isValid() ? parsed : null;\n }\n\n // String or number\n const parsed = dayjs(value);\n return parsed.isValid() ? parsed : null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Field.TimePicker - Time picker with React Hook Form integration.\n *\n * Uses @mui/x-date-pickers TimePicker for a professional time selection experience.\n * Automatically normalizes various date/time value types to Dayjs.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.TimePicker\n * name=\"startTime\"\n * label=\"Start Time\"\n * />\n * <Field.TimePicker\n * name=\"endTime\"\n * label=\"End Time\"\n * ampm={false}\n * minutesStep={15}\n * />\n * </FormProvider>\n * ```\n *\n * @example\n * ```tsx\n * // With custom text field props\n * <Field.TimePicker\n * name=\"meetingTime\"\n * label=\"Meeting Time\"\n * textFieldProps={{\n * variant: 'filled',\n * size: 'small',\n * }}\n * />\n * ```\n */\nexport function FieldTimePicker({\n name,\n label,\n helperText,\n textFieldProps,\n disabled,\n readOnly,\n minutesStep,\n ampm,\n minTime,\n maxTime,\n views,\n openTo,\n format,\n}: FieldTimePickerProps): ReactNode {\n const { control } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const normalizedValue = normalizeValue(field.value);\n\n return (\n <TimePicker\n label={label}\n value={normalizedValue}\n onChange={(newValue: Dayjs | null) => {\n // Store as ISO string for serialization compatibility\n field.onChange(newValue?.toISOString() ?? null);\n }}\n disabled={disabled}\n readOnly={readOnly}\n minutesStep={minutesStep}\n ampm={ampm}\n minTime={minTime}\n maxTime={maxTime}\n views={views}\n openTo={openTo}\n format={format}\n slotProps={{\n textField: {\n fullWidth: true,\n error: !!error,\n helperText: error?.message ?? helperText,\n ...textFieldProps,\n } as never,\n }}\n />\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.DateTimePicker Component\n *\n * React Hook Form integrated date-time picker using MUI X DatePickers.\n * Combines date and time selection in a single component.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';\nimport type { TextFieldProps } from '@mui/material/TextField';\nimport dayjs from 'dayjs';\nimport type { Dayjs } from 'dayjs';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Value types that can be normalized to Dayjs\n */\ntype DateValue = Dayjs | Date | string | number | null | undefined;\n\n/**\n * Props for Field.DateTimePicker component.\n */\nexport interface FieldDateTimePickerProps {\n /** Field name in the form */\n name: string;\n /** Field label */\n label?: ReactNode;\n /** Helper text shown below the field */\n helperText?: ReactNode;\n /** TextField props for customization */\n textFieldProps?: Partial<TextFieldProps>;\n /** Disable the field */\n disabled?: boolean;\n /** Read-only mode */\n readOnly?: boolean;\n /** Minutes step for time selection */\n minutesStep?: number;\n /** Use 12-hour format with AM/PM */\n ampm?: boolean;\n /** Minimum selectable datetime */\n minDateTime?: Dayjs;\n /** Maximum selectable datetime */\n maxDateTime?: Dayjs;\n /** Disable past dates */\n disablePast?: boolean;\n /** Disable future dates */\n disableFuture?: boolean;\n /** Views to display */\n views?: Array<'year' | 'month' | 'day' | 'hours' | 'minutes' | 'seconds'>;\n /** Open picker to specific view */\n openTo?: 'year' | 'month' | 'day' | 'hours' | 'minutes' | 'seconds';\n /** Format for display */\n format?: string;\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Normalize various date value types to Dayjs or null.\n * Handles Dayjs, Date, string, number, null, and undefined.\n */\nfunction normalizeValue(value: DateValue): Dayjs | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n // Already Dayjs\n if (dayjs.isDayjs(value)) {\n return value.isValid() ? value : null;\n }\n\n // Date object\n if (value instanceof Date) {\n const parsed = dayjs(value);\n return parsed.isValid() ? parsed : null;\n }\n\n // String or number\n const parsed = dayjs(value);\n return parsed.isValid() ? parsed : null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Field.DateTimePicker - Combined date and time picker with React Hook Form integration.\n *\n * Uses @mui/x-date-pickers DateTimePicker for comprehensive date-time selection.\n * Automatically normalizes various date/time value types to Dayjs.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.DateTimePicker\n * name=\"eventStart\"\n * label=\"Event Start\"\n * />\n * <Field.DateTimePicker\n * name=\"eventEnd\"\n * label=\"Event End\"\n * ampm={false}\n * minutesStep={15}\n * />\n * </FormProvider>\n * ```\n *\n * @example\n * ```tsx\n * // With date constraints\n * <Field.DateTimePicker\n * name=\"appointment\"\n * label=\"Appointment\"\n * minDateTime={dayjs()}\n * maxDateTime={dayjs().add(30, 'day')}\n * disablePast\n * />\n * ```\n *\n * @example\n * ```tsx\n * // With custom views\n * <Field.DateTimePicker\n * name=\"scheduledAt\"\n * label=\"Schedule\"\n * views={['year', 'month', 'day', 'hours', 'minutes']}\n * textFieldProps={{\n * variant: 'filled',\n * size: 'small',\n * }}\n * />\n * ```\n */\nexport function FieldDateTimePicker({\n name,\n label,\n helperText,\n textFieldProps,\n disabled,\n readOnly,\n minutesStep,\n ampm,\n minDateTime,\n maxDateTime,\n disablePast,\n disableFuture,\n views,\n openTo,\n format,\n}: FieldDateTimePickerProps): ReactNode {\n const { control } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const normalizedValue = normalizeValue(field.value);\n\n return (\n <DateTimePicker\n label={label}\n value={normalizedValue}\n onChange={(newValue: Dayjs | null) => {\n // Store as ISO string for serialization compatibility\n field.onChange(newValue?.toISOString() ?? null);\n }}\n disabled={disabled}\n readOnly={readOnly}\n minutesStep={minutesStep}\n ampm={ampm}\n minDateTime={minDateTime}\n maxDateTime={maxDateTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n views={views}\n openTo={openTo}\n format={format}\n slotProps={{\n textField: {\n fullWidth: true,\n error: !!error,\n helperText: error?.message ?? helperText,\n ...textFieldProps,\n } as never,\n }}\n />\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.MultiCheckbox Component\n *\n * React Hook Form integrated multiple checkbox group.\n * Manages array values for multi-select scenarios.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport { useId, type ReactNode } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControl from '@mui/material/FormControl';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormGroup from '@mui/material/FormGroup';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport type { BoxProps } from '@mui/material/Box';\nimport type { CheckboxProps } from '@mui/material/Checkbox';\nimport type { FormControlProps } from '@mui/material/FormControl';\nimport type { FormGroupProps } from '@mui/material/FormGroup';\nimport type { FormHelperTextProps } from '@mui/material/FormHelperText';\nimport type { FormLabelProps } from '@mui/material/FormLabel';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Option for multi-checkbox selection\n */\nexport interface MultiCheckboxOption {\n /** Display label */\n label: string;\n /** Value stored when selected */\n value: string;\n /** Disable this option */\n disabled?: boolean;\n}\n\n/**\n * Props for Field.MultiCheckbox component.\n */\nexport interface FieldMultiCheckboxProps extends Omit<FormGroupProps, 'onChange'> {\n /** Field name in the form */\n name: string;\n /** Label for the checkbox group */\n label?: string;\n /** Available options */\n options: MultiCheckboxOption[];\n /** Helper text shown below the group */\n helperText?: ReactNode;\n /** Slot props for nested components */\n slotProps?: {\n /** Wrapper FormControl props */\n wrapper?: Partial<FormControlProps>;\n /** Individual Checkbox props */\n checkbox?: Partial<CheckboxProps>;\n /** FormLabel props */\n formLabel?: Partial<FormLabelProps>;\n /** FormHelperText props */\n helperText?: Partial<FormHelperTextProps>;\n /** Container Box props */\n container?: Partial<BoxProps>;\n };\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Field.MultiCheckbox - Multiple checkbox group with React Hook Form integration.\n *\n * Stores selected values as an array. Toggle logic automatically adds/removes\n * values when checkboxes are clicked.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.MultiCheckbox\n * name=\"interests\"\n * label=\"Select your interests\"\n * options={[\n * { label: 'Technology', value: 'tech' },\n * { label: 'Sports', value: 'sports' },\n * { label: 'Music', value: 'music' },\n * { label: 'Art', value: 'art' },\n * ]}\n * />\n * </FormProvider>\n * ```\n *\n * @example\n * ```tsx\n * // Horizontal layout\n * <Field.MultiCheckbox\n * name=\"features\"\n * label=\"Enable features\"\n * row\n * options={[\n * { label: 'Dark Mode', value: 'dark' },\n * { label: 'Notifications', value: 'notify' },\n * { label: 'Auto-save', value: 'autosave', disabled: true },\n * ]}\n * />\n * ```\n */\nexport function FieldMultiCheckbox({\n name,\n label,\n options,\n helperText,\n slotProps,\n row,\n ...other\n}: FieldMultiCheckboxProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const helperId = `field-multi-checkbox-helper-${id}`;\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const selectedValues: string[] = Array.isArray(field.value) ? field.value : [];\n const hasHelper = !!(error?.message || helperText);\n\n const handleToggle = (optionValue: string) => {\n const isSelected = selectedValues.includes(optionValue);\n const newValues = isSelected\n ? selectedValues.filter((v) => v !== optionValue)\n : [...selectedValues, optionValue];\n field.onChange(newValues);\n };\n\n return (\n <FormControl\n component=\"fieldset\"\n error={!!error}\n aria-describedby={hasHelper ? helperId : undefined}\n {...slotProps?.wrapper}\n >\n {label && (\n <FormLabel\n component=\"legend\"\n {...slotProps?.formLabel}\n sx={{\n mb: 1,\n ...slotProps?.formLabel?.sx,\n }}\n >\n {label}\n </FormLabel>\n )}\n\n <Box {...slotProps?.container}>\n <FormGroup row={row} {...other}>\n {options.map((option) => (\n <FormControlLabel\n key={option.value}\n label={option.label}\n disabled={option.disabled}\n control={\n <Checkbox\n checked={selectedValues.includes(option.value)}\n onChange={() => handleToggle(option.value)}\n {...slotProps?.checkbox}\n />\n }\n />\n ))}\n </FormGroup>\n </Box>\n\n {hasHelper && (\n <FormHelperText id={helperId} error={!!error} {...slotProps?.helperText}>\n {error?.message ?? helperText}\n </FormHelperText>\n )}\n </FormControl>\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.MultiSwitch Component\n *\n * React Hook Form integrated multiple switch group.\n * Manages array values for multi-toggle scenarios.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport { useId, type ReactNode } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Box from '@mui/material/Box';\nimport Switch from '@mui/material/Switch';\nimport FormControl from '@mui/material/FormControl';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormGroup from '@mui/material/FormGroup';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport type { BoxProps } from '@mui/material/Box';\nimport type { SwitchProps } from '@mui/material/Switch';\nimport type { FormControlProps } from '@mui/material/FormControl';\nimport type { FormGroupProps } from '@mui/material/FormGroup';\nimport type { FormHelperTextProps } from '@mui/material/FormHelperText';\nimport type { FormLabelProps } from '@mui/material/FormLabel';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Option for multi-switch selection\n */\nexport interface MultiSwitchOption {\n /** Display label */\n label: string;\n /** Value stored when enabled */\n value: string;\n /** Disable this option */\n disabled?: boolean;\n}\n\n/**\n * Props for Field.MultiSwitch component.\n */\nexport interface FieldMultiSwitchProps extends Omit<FormGroupProps, 'onChange'> {\n /** Field name in the form */\n name: string;\n /** Label for the switch group */\n label?: string;\n /** Available options */\n options: MultiSwitchOption[];\n /** Helper text shown below the group */\n helperText?: ReactNode;\n /** Slot props for nested components */\n slotProps?: {\n /** Wrapper FormControl props */\n wrapper?: Partial<FormControlProps>;\n /** Individual Switch props */\n switch?: Partial<SwitchProps>;\n /** FormLabel props */\n formLabel?: Partial<FormLabelProps>;\n /** FormHelperText props */\n helperText?: Partial<FormHelperTextProps>;\n /** Container Box props */\n container?: Partial<BoxProps>;\n };\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Field.MultiSwitch - Multiple switch group with React Hook Form integration.\n *\n * Stores enabled values as an array. Toggle logic automatically adds/removes\n * values when switches are toggled.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.MultiSwitch\n * name=\"notifications\"\n * label=\"Notification Settings\"\n * options={[\n * { label: 'Email notifications', value: 'email' },\n * { label: 'Push notifications', value: 'push' },\n * { label: 'SMS notifications', value: 'sms' },\n * ]}\n * />\n * </FormProvider>\n * ```\n *\n * @example\n * ```tsx\n * // Horizontal layout with custom styling\n * <Field.MultiSwitch\n * name=\"features\"\n * label=\"Feature Toggles\"\n * row\n * options={[\n * { label: 'Beta Features', value: 'beta' },\n * { label: 'Analytics', value: 'analytics' },\n * { label: 'Debug Mode', value: 'debug', disabled: true },\n * ]}\n * slotProps={{\n * switch: { color: 'success' },\n * }}\n * />\n * ```\n */\nexport function FieldMultiSwitch({\n name,\n label,\n options,\n helperText,\n slotProps,\n row,\n ...other\n}: FieldMultiSwitchProps): ReactNode {\n const { control } = useFormContext();\n const id = useId();\n const helperId = `field-multi-switch-helper-${id}`;\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const selectedValues: string[] = Array.isArray(field.value) ? field.value : [];\n const hasHelper = !!(error?.message || helperText);\n\n const handleToggle = (optionValue: string) => {\n const isSelected = selectedValues.includes(optionValue);\n const newValues = isSelected\n ? selectedValues.filter((v) => v !== optionValue)\n : [...selectedValues, optionValue];\n field.onChange(newValues);\n };\n\n return (\n <FormControl\n component=\"fieldset\"\n error={!!error}\n aria-describedby={hasHelper ? helperId : undefined}\n {...slotProps?.wrapper}\n >\n {label && (\n <FormLabel\n component=\"legend\"\n {...slotProps?.formLabel}\n sx={{\n mb: 1,\n ...slotProps?.formLabel?.sx,\n }}\n >\n {label}\n </FormLabel>\n )}\n\n <Box {...slotProps?.container}>\n <FormGroup row={row} {...other}>\n {options.map((option) => (\n <FormControlLabel\n key={option.value}\n label={option.label}\n disabled={option.disabled}\n control={\n <Switch\n checked={selectedValues.includes(option.value)}\n onChange={() => handleToggle(option.value)}\n {...slotProps?.switch}\n />\n }\n />\n ))}\n </FormGroup>\n </Box>\n\n {hasHelper && (\n <FormHelperText id={helperId} error={!!error} {...slotProps?.helperText}>\n {error?.message ?? helperText}\n </FormHelperText>\n )}\n </FormControl>\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Code Component\n *\n * React Hook Form integrated OTP (One-Time Password) input.\n * Provides a professional code/PIN entry experience.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, ChangeEvent, KeyboardEvent, ClipboardEvent } from 'react';\nimport { useRef, useCallback, useId } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Box from '@mui/material/Box';\nimport TextField from '@mui/material/TextField';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport type { BoxProps } from '@mui/material/Box';\nimport type { TextFieldProps } from '@mui/material/TextField';\nimport type { FormHelperTextProps } from '@mui/material/FormHelperText';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Props for Field.Code component.\n */\nexport interface FieldCodeProps {\n /** Field name in the form */\n name: string;\n /** Number of code digits (default: 6) */\n length?: number;\n /** Placeholder character (default: '-') */\n placeholder?: string;\n /** Helper text shown below the input */\n helperText?: ReactNode;\n /** Auto-focus the first input on mount */\n autoFocus?: boolean;\n /** Disable all inputs */\n disabled?: boolean;\n /** Input type: text, number, or password */\n type?: 'text' | 'number' | 'password';\n /** Gap between inputs (CSS value) */\n gap?: number | string;\n /** Width of each input field (CSS value) */\n inputWidth?: number | string;\n /** Slot props for nested components */\n slotProps?: {\n /** Wrapper Box props */\n wrapper?: Partial<BoxProps>;\n /** Individual TextField props */\n textField?: Partial<TextFieldProps>;\n /** FormHelperText props */\n helperText?: Partial<FormHelperTextProps>;\n };\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Field.Code - OTP/PIN code input with React Hook Form integration.\n *\n * Features:\n * - Automatic focus navigation between digits\n * - Paste support for full codes\n * - Backspace navigation\n * - Configurable length and styling\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Code\n * name=\"verificationCode\"\n * autoFocus\n * />\n * </FormProvider>\n * ```\n *\n * @example\n * ```tsx\n * // With custom styling\n * <Field.Code\n * name=\"pin\"\n * length={4}\n * type=\"password\"\n * inputWidth={56}\n * gap={2}\n * slotProps={{\n * textField: { variant: 'filled' },\n * }}\n * />\n * ```\n */\nexport function FieldCode({\n name,\n length = 6,\n placeholder = '-',\n helperText,\n autoFocus = false,\n disabled = false,\n type = 'text',\n gap = 1.5,\n inputWidth = 48,\n slotProps,\n}: FieldCodeProps): ReactNode {\n const { control } = useFormContext();\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n const id = useId();\n const helperId = `field-code-helper-${id}`;\n\n const focusInput = useCallback((index: number) => {\n const input = inputRefs.current[index];\n if (input) {\n input.focus();\n input.select();\n }\n }, []);\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n // Ensure value is a string of correct length\n const valueString = String(field.value ?? '').slice(0, length);\n const digits = Array.from({ length }, (_, i) => valueString[i] ?? '');\n\n const updateValue = (newDigits: string[]) => {\n const newValue = newDigits.join('');\n field.onChange(newValue);\n };\n\n const handleChange = (index: number) => (e: ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n\n // Handle single character input\n if (inputValue.length <= 1) {\n const newDigits = [...digits];\n newDigits[index] = inputValue;\n updateValue(newDigits);\n\n // Move to next input if character was entered\n if (inputValue && index < length - 1) {\n focusInput(index + 1);\n }\n }\n };\n\n const handleKeyDown = (index: number) => (e: KeyboardEvent<HTMLInputElement>) => {\n const key = e.key;\n\n // Backspace: clear current or go to previous\n if (key === 'Backspace') {\n e.preventDefault();\n const newDigits = [...digits];\n\n if (digits[index]) {\n // Clear current digit\n newDigits[index] = '';\n updateValue(newDigits);\n } else if (index > 0) {\n // Move to previous and clear it\n newDigits[index - 1] = '';\n updateValue(newDigits);\n focusInput(index - 1);\n }\n }\n\n // Arrow keys navigation\n if (key === 'ArrowLeft' && index > 0) {\n e.preventDefault();\n focusInput(index - 1);\n }\n if (key === 'ArrowRight' && index < length - 1) {\n e.preventDefault();\n focusInput(index + 1);\n }\n\n // Delete: clear current\n if (key === 'Delete') {\n e.preventDefault();\n const newDigits = [...digits];\n newDigits[index] = '';\n updateValue(newDigits);\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text').slice(0, length);\n\n // Only allow valid characters based on type\n const validChars = type === 'number' ? pastedData.replace(/\\D/g, '') : pastedData;\n\n if (validChars) {\n const newDigits = Array.from({ length }, (_, i) => validChars[i] ?? '');\n updateValue(newDigits);\n\n // Focus the input after the last pasted character\n const focusIndex = Math.min(validChars.length, length - 1);\n focusInput(focusIndex);\n }\n };\n\n const hasHelper = !!(error?.message || helperText);\n\n return (\n <Box role=\"group\" aria-label={`${name} code input`} {...slotProps?.wrapper}>\n <Box\n sx={{\n display: 'flex',\n gap,\n justifyContent: 'center',\n }}\n >\n {digits.map((digit, index) => (\n <TextField\n key={index}\n inputRef={(el) => {\n inputRefs.current[index] = el;\n }}\n value={digit}\n onChange={handleChange(index)}\n onKeyDown={handleKeyDown(index)}\n onPaste={handlePaste}\n onFocus={(e) => e.target.select()}\n disabled={disabled}\n error={!!error}\n autoFocus={autoFocus && index === 0}\n placeholder={placeholder}\n slotProps={{\n htmlInput: {\n maxLength: 1,\n 'aria-label': `Digit ${index + 1} of ${length}`,\n 'aria-describedby': hasHelper ? helperId : undefined,\n 'aria-invalid': !!error,\n style: {\n textAlign: 'center',\n fontSize: '1.25rem',\n fontWeight: 600,\n padding: '12px 0',\n },\n inputMode: type === 'number' ? 'numeric' : 'text',\n autoComplete: 'one-time-code',\n },\n }}\n sx={{\n width: inputWidth,\n '& .MuiInputBase-input': {\n p: 0,\n height: inputWidth,\n },\n }}\n {...slotProps?.textField}\n />\n ))}\n </Box>\n\n {hasHelper && (\n <FormHelperText\n id={helperId}\n error={!!error}\n sx={{ textAlign: 'center', mt: 1 }}\n {...slotProps?.helperText}\n >\n {error?.message ?? helperText}\n </FormHelperText>\n )}\n </Box>\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Upload Component Suite\n *\n * React Hook Form integrated file upload components using react-dropzone.\n * Includes Upload, UploadBox, and UploadAvatar variants.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode } from 'react';\nimport { useState, useCallback, useMemo } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { useDropzone } from 'react-dropzone';\nimport type { DropzoneOptions, FileRejection } from 'react-dropzone';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport Avatar from '@mui/material/Avatar';\nimport { alpha, useTheme } from '@mui/material/styles';\nimport type { BoxProps } from '@mui/material/Box';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** File value can be File object or URL string */\nexport type FileValue = File | string;\n\n/** Single or multiple file values */\nexport type UploadValue = FileValue | FileValue[] | null;\n\n/**\n * Base props shared by all upload variants\n */\nexport interface UploadBaseProps extends Omit<DropzoneOptions, 'onDrop'> {\n /** Field name in the form */\n name: string;\n /** Error state */\n error?: boolean;\n /** Disable upload */\n disabled?: boolean;\n /** Helper text shown below */\n helperText?: ReactNode;\n /** Custom placeholder content */\n placeholder?: ReactNode;\n /** Custom styles */\n sx?: SxProps<Theme>;\n}\n\n/**\n * Props for Field.Upload component\n */\nexport interface FieldUploadProps extends UploadBaseProps {\n /** Enable multiple file selection */\n multiple?: boolean;\n /** Show thumbnail previews */\n thumbnail?: boolean;\n /** Callback when files are removed */\n onRemove?: (file: FileValue) => void;\n /** Callback to remove all files */\n onRemoveAll?: () => void;\n /** Slot props for nested components */\n slotProps?: {\n wrapper?: Partial<BoxProps>;\n };\n}\n\n/**\n * Props for Field.UploadBox component\n */\nexport interface FieldUploadBoxProps extends UploadBaseProps {\n /** Box size in pixels */\n size?: number;\n}\n\n/**\n * Props for Field.UploadAvatar component\n */\nexport interface FieldUploadAvatarProps extends UploadBaseProps {\n /** Avatar size in pixels */\n size?: number;\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Format file size for display\n */\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;\n}\n\n/**\n * Get preview URL for a file\n */\nfunction getPreviewUrl(file: FileValue): string | null {\n if (typeof file === 'string') return file;\n if (file instanceof File && file.type.startsWith('image/')) {\n return URL.createObjectURL(file);\n }\n return null;\n}\n\n/**\n * Get file name for display\n */\nfunction getFileName(file: FileValue): string {\n if (typeof file === 'string') {\n return file.split('/').pop() ?? 'file';\n }\n return file.name;\n}\n\n// =============================================================================\n// UPLOAD PLACEHOLDER\n// =============================================================================\n\ninterface PlaceholderProps {\n isDragActive: boolean;\n disabled?: boolean;\n}\n\nfunction UploadPlaceholder({ isDragActive, disabled }: PlaceholderProps): ReactNode {\n const theme = useTheme();\n\n return (\n <Stack\n spacing={1}\n sx={{\n alignItems: \"center\",\n justifyContent: \"center\",\n p: 3,\n textAlign: 'center',\n color: disabled ? 'text.disabled' : 'text.secondary'\n }}>\n <Box\n component=\"span\"\n sx={{\n width: 48,\n height: 48,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n bgcolor: alpha(theme.palette.primary.main, 0.08),\n color: 'primary.main',\n fontSize: 24,\n }}\n >\n 📁\n </Box>\n <Typography variant=\"body2\" component=\"span\">\n {isDragActive ? (\n 'Drop files here'\n ) : (\n <>\n Drag & drop files here, or{' '}\n <Typography component=\"span\" variant=\"body2\" sx={{ color: 'primary.main', textDecoration: 'underline' }}>\n browse\n </Typography>\n </>\n )}\n </Typography>\n </Stack>\n );\n}\n\n// =============================================================================\n// FILE PREVIEW\n// =============================================================================\n\ninterface FilePreviewProps {\n files: FileValue[];\n thumbnail?: boolean;\n onRemove?: (file: FileValue) => void;\n}\n\nfunction FilePreview({ files, thumbnail, onRemove }: FilePreviewProps): ReactNode {\n if (files.length === 0) return null;\n\n return (\n <Stack spacing={1} sx={{ mt: 2 }}>\n {files.map((file, index) => {\n const previewUrl = thumbnail ? getPreviewUrl(file) : null;\n const fileName = getFileName(file);\n const fileSize = file instanceof File ? formatFileSize(file.size) : '';\n\n return (\n <Box\n key={`${fileName}-${index}`}\n sx={{\n p: 1,\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n borderRadius: 1,\n bgcolor: 'background.neutral',\n border: '1px solid',\n borderColor: 'divider',\n }}\n >\n {previewUrl && (\n <Box\n component=\"img\"\n src={previewUrl}\n alt={fileName}\n sx={{\n width: 40,\n height: 40,\n borderRadius: 0.5,\n objectFit: 'cover',\n flexShrink: 0,\n }}\n />\n )}\n <Box sx={{ flexGrow: 1, minWidth: 0 }}>\n <Typography variant=\"body2\" noWrap>\n {fileName}\n </Typography>\n {fileSize && (\n <Typography variant=\"caption\" sx={{\n color: \"text.secondary\"\n }}>\n {fileSize}\n </Typography>\n )}\n </Box>\n {onRemove && (\n <IconButton size=\"small\" onClick={() => onRemove(file)} sx={{ flexShrink: 0 }}>\n ✕\n </IconButton>\n )}\n </Box>\n );\n })}\n </Stack>\n );\n}\n\n// =============================================================================\n// REJECTION FILES\n// =============================================================================\n\ninterface RejectionFilesProps {\n rejections: FileRejection[];\n}\n\nfunction RejectionFiles({ rejections }: RejectionFilesProps): ReactNode {\n if (rejections.length === 0) return null;\n\n return (\n <Box sx={{ mt: 2 }}>\n {rejections.map(({ file, errors }) => (\n <Box\n key={file.name}\n sx={{\n p: 1,\n mb: 1,\n borderRadius: 1,\n bgcolor: 'error.lighter',\n border: '1px solid',\n borderColor: 'error.light',\n }}\n >\n <Typography variant=\"body2\" color=\"error\">\n {file.name}\n </Typography>\n {errors.map((error) => (\n <Typography key={error.code} variant=\"caption\" color=\"error\">\n {error.message}\n </Typography>\n ))}\n </Box>\n ))}\n </Box>\n );\n}\n\n// =============================================================================\n// FIELD.UPLOAD INNER COMPONENT\n// =============================================================================\n\ninterface FieldUploadInnerProps {\n value: UploadValue;\n error?: { message?: string };\n multiple: boolean;\n thumbnail: boolean;\n disabled?: boolean;\n helperText?: ReactNode;\n placeholder?: ReactNode;\n onRemove?: (file: FileValue) => void;\n onRemoveAll?: () => void;\n slotProps?: FieldUploadProps['slotProps'];\n sx?: SxProps<Theme>;\n dropzoneOptions: Omit<DropzoneOptions, 'onDrop'>;\n setValue: (name: string, value: UploadValue, options?: { shouldValidate?: boolean }) => void;\n name: string;\n}\n\n/**\n * Inner component for FieldUpload to properly use hooks.\n * Extracted to comply with Rules of Hooks.\n */\nfunction FieldUploadInner({\n value,\n error,\n multiple,\n thumbnail,\n disabled,\n helperText,\n placeholder,\n onRemove,\n onRemoveAll,\n slotProps,\n sx,\n dropzoneOptions,\n setValue,\n name,\n}: FieldUploadInnerProps): ReactNode {\n const theme = useTheme();\n const [rejections, setRejections] = useState<FileRejection[]>([]);\n\n const files: FileValue[] = useMemo(() => {\n if (!value) return [];\n return Array.isArray(value) ? value : [value];\n }, [value]);\n\n const onDrop = useCallback(\n (acceptedFiles: File[], fileRejections: FileRejection[]) => {\n setRejections(fileRejections);\n\n if (acceptedFiles.length === 0) return;\n\n if (multiple) {\n setValue(name, [...files, ...acceptedFiles], { shouldValidate: true });\n } else {\n setValue(name, acceptedFiles[0], { shouldValidate: true });\n }\n },\n [files, multiple, name, setValue]\n );\n\n const handleRemove = useCallback(\n (file: FileValue) => {\n const newFiles = files.filter((f) => f !== file);\n setValue(name, multiple ? newFiles : null, { shouldValidate: true });\n onRemove?.(file);\n },\n [files, multiple, name, onRemove, setValue]\n );\n\n const handleRemoveAll = useCallback(() => {\n setValue(name, multiple ? [] : null, { shouldValidate: true });\n onRemoveAll?.();\n }, [multiple, name, onRemoveAll, setValue]);\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n ...dropzoneOptions,\n multiple,\n disabled,\n onDrop,\n });\n\n const hasError = !!error;\n const hasFiles = files.length > 0;\n\n return (\n <Box {...slotProps?.wrapper}>\n <Box\n {...getRootProps()}\n sx={{\n p: 0,\n outline: 'none',\n borderRadius: 1,\n cursor: disabled ? 'default' : 'pointer',\n overflow: 'hidden',\n border: '1px dashed',\n borderColor: hasError ? 'error.main' : isDragActive ? 'primary.main' : 'divider',\n bgcolor: isDragActive ? alpha(theme.palette.primary.main, 0.08) : 'background.paper',\n transition: theme.transitions.create(['border-color', 'background-color']),\n '&:hover': {\n borderColor: disabled ? 'divider' : 'primary.main',\n bgcolor: disabled ? 'background.paper' : alpha(theme.palette.primary.main, 0.04),\n },\n ...sx,\n }}\n >\n <input {...getInputProps()} />\n {placeholder ?? <UploadPlaceholder isDragActive={isDragActive} disabled={disabled} />}\n </Box>\n\n <RejectionFiles rejections={rejections} />\n\n <FilePreview files={files} thumbnail={thumbnail} onRemove={handleRemove} />\n\n {hasFiles && multiple && onRemoveAll && (\n <Box sx={{ mt: 1, textAlign: 'right' }}>\n <Typography\n component=\"button\"\n variant=\"caption\"\n onClick={handleRemoveAll}\n sx={{\n color: 'error.main',\n cursor: 'pointer',\n border: 'none',\n bgcolor: 'transparent',\n '&:hover': { textDecoration: 'underline' },\n }}\n >\n Remove all\n </Typography>\n </Box>\n )}\n\n {(error?.message || helperText) && (\n <FormHelperText error={hasError} sx={{ mt: 1 }}>\n {error?.message ?? helperText}\n </FormHelperText>\n )}\n </Box>\n );\n}\n\n// =============================================================================\n// FIELD.UPLOAD\n// =============================================================================\n\n/**\n * Field.Upload - File upload with drag & drop and React Hook Form integration.\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Upload\n * name=\"documents\"\n * multiple\n * accept={{ 'application/pdf': ['.pdf'] }}\n * maxSize={5 * 1024 * 1024}\n * />\n * </FormProvider>\n * ```\n *\n * @example\n * ```tsx\n * // With thumbnail previews\n * <Field.Upload\n * name=\"images\"\n * multiple\n * thumbnail\n * accept={{ 'image/*': [] }}\n * onRemove={(file) => console.log('Removed:', file)}\n * />\n * ```\n */\nexport function FieldUpload({\n name,\n multiple = false,\n thumbnail = false,\n disabled,\n helperText,\n placeholder,\n onRemove,\n onRemoveAll,\n slotProps,\n sx,\n ...dropzoneOptions\n}: FieldUploadProps): ReactNode {\n const { control, setValue } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FieldUploadInner\n value={field.value}\n error={error}\n multiple={multiple}\n thumbnail={thumbnail}\n disabled={disabled}\n helperText={helperText}\n placeholder={placeholder}\n onRemove={onRemove}\n onRemoveAll={onRemoveAll}\n slotProps={slotProps}\n sx={sx}\n dropzoneOptions={dropzoneOptions}\n setValue={setValue}\n name={name}\n />\n )}\n />\n );\n}\n\n// =============================================================================\n// FIELD.UPLOAD BOX INNER\n// =============================================================================\n\ninterface FieldUploadBoxInnerProps {\n value: FileValue | null;\n error?: { message?: string };\n size: number;\n disabled?: boolean;\n helperText?: ReactNode;\n sx?: SxProps<Theme>;\n dropzoneOptions: Omit<DropzoneOptions, 'onDrop'>;\n setValue: (name: string, value: UploadValue, options?: { shouldValidate?: boolean }) => void;\n name: string;\n}\n\nfunction FieldUploadBoxInner({\n value,\n error,\n size,\n disabled,\n helperText,\n sx,\n dropzoneOptions,\n setValue,\n name,\n}: FieldUploadBoxInnerProps): ReactNode {\n const theme = useTheme();\n\n const onDrop = useCallback(\n (acceptedFiles: File[]) => {\n if (acceptedFiles.length > 0) {\n setValue(name, acceptedFiles[0], { shouldValidate: true });\n }\n },\n [name, setValue]\n );\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n ...dropzoneOptions,\n multiple: false,\n disabled,\n onDrop,\n });\n\n const previewUrl = value ? getPreviewUrl(value) : null;\n const hasError = !!error;\n\n return (\n <Box>\n <Box\n {...getRootProps()}\n sx={{\n width: size,\n height: size,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 1,\n cursor: disabled ? 'default' : 'pointer',\n border: '1px dashed',\n borderColor: hasError ? 'error.main' : isDragActive ? 'primary.main' : 'divider',\n bgcolor: isDragActive ? alpha(theme.palette.primary.main, 0.08) : 'background.paper',\n backgroundImage: previewUrl ? `url(${previewUrl})` : 'none',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n transition: theme.transitions.create(['border-color', 'background-color']),\n '&:hover': {\n borderColor: disabled ? 'divider' : 'primary.main',\n },\n ...sx,\n }}\n >\n <input {...getInputProps()} />\n {!previewUrl && (\n <Typography\n sx={{\n fontSize: size / 3,\n color: isDragActive ? 'primary.main' : 'text.disabled',\n }}\n >\n +\n </Typography>\n )}\n </Box>\n\n {(error?.message || helperText) && (\n <FormHelperText error={hasError} sx={{ mt: 0.5 }}>\n {error?.message ?? helperText}\n </FormHelperText>\n )}\n </Box>\n );\n}\n\n// =============================================================================\n// FIELD.UPLOAD BOX\n// =============================================================================\n\n/**\n * Field.UploadBox - Compact square upload box for minimal UI.\n *\n * @example\n * ```tsx\n * <Field.UploadBox\n * name=\"thumbnail\"\n * size={80}\n * accept={{ 'image/*': [] }}\n * />\n * ```\n */\nexport function FieldUploadBox({\n name,\n size = 64,\n disabled,\n helperText,\n sx,\n ...dropzoneOptions\n}: FieldUploadBoxProps): ReactNode {\n const { control, setValue } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FieldUploadBoxInner\n value={field.value}\n error={error}\n size={size}\n disabled={disabled}\n helperText={helperText}\n sx={sx}\n dropzoneOptions={dropzoneOptions}\n setValue={setValue}\n name={name}\n />\n )}\n />\n );\n}\n\n// =============================================================================\n// FIELD.UPLOAD AVATAR INNER\n// =============================================================================\n\ninterface FieldUploadAvatarInnerProps {\n value: FileValue | null;\n error?: { message?: string };\n size: number;\n disabled?: boolean;\n helperText?: ReactNode;\n sx?: SxProps<Theme>;\n dropzoneOptions: Omit<DropzoneOptions, 'onDrop'>;\n setValue: (name: string, value: UploadValue, options?: { shouldValidate?: boolean }) => void;\n name: string;\n}\n\nfunction FieldUploadAvatarInner({\n value,\n error,\n size,\n disabled,\n helperText,\n sx,\n dropzoneOptions,\n setValue,\n name,\n}: FieldUploadAvatarInnerProps): ReactNode {\n const theme = useTheme();\n\n const onDrop = useCallback(\n (acceptedFiles: File[]) => {\n if (acceptedFiles.length > 0) {\n setValue(name, acceptedFiles[0], { shouldValidate: true });\n }\n },\n [name, setValue]\n );\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n ...dropzoneOptions,\n multiple: false,\n disabled,\n accept: dropzoneOptions.accept ?? { 'image/*': [] },\n onDrop,\n });\n\n const previewUrl = value ? getPreviewUrl(value) : null;\n const hasError = !!error;\n\n return (\n <Box sx={{ display: 'inline-flex', flexDirection: 'column', alignItems: 'center' }}>\n <Box\n {...getRootProps()}\n sx={{\n width: size,\n height: size,\n borderRadius: '50%',\n cursor: disabled ? 'default' : 'pointer',\n position: 'relative',\n overflow: 'hidden',\n border: '1px dashed',\n borderColor: hasError ? 'error.main' : isDragActive ? 'primary.main' : 'divider',\n transition: theme.transitions.create(['border-color']),\n '&:hover .upload-overlay': {\n opacity: disabled ? 0 : 1,\n },\n ...sx,\n }}\n >\n <input {...getInputProps()} />\n\n <Avatar\n src={previewUrl ?? undefined}\n sx={{\n width: '100%',\n height: '100%',\n bgcolor: 'background.neutral',\n }}\n >\n {!previewUrl && <Typography sx={{ fontSize: size / 4, color: 'text.disabled' }}>📷</Typography>}\n </Avatar>\n\n {/* Hover overlay */}\n <Box\n className=\"upload-overlay\"\n sx={{\n position: 'absolute',\n inset: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n bgcolor: alpha(theme.palette.grey[900], 0.64),\n color: 'common.white',\n opacity: isDragActive ? 1 : 0,\n transition: theme.transitions.create('opacity'),\n }}\n >\n <Typography sx={{ fontSize: size / 6 }}>📷</Typography>\n <Typography variant=\"caption\">{previewUrl ? 'Update' : 'Upload'}</Typography>\n </Box>\n </Box>\n\n {(error?.message || helperText) && (\n <FormHelperText error={hasError} sx={{ mt: 1, textAlign: 'center' }}>\n {error?.message ?? helperText}\n </FormHelperText>\n )}\n </Box>\n );\n}\n\n// =============================================================================\n// FIELD.UPLOAD AVATAR\n// =============================================================================\n\n/**\n * Field.UploadAvatar - Circular avatar upload with preview.\n *\n * @example\n * ```tsx\n * <Field.UploadAvatar\n * name=\"avatar\"\n * size={120}\n * accept={{ 'image/*': [] }}\n * maxSize={3 * 1024 * 1024}\n * />\n * ```\n */\nexport function FieldUploadAvatar({\n name,\n size = 144,\n disabled,\n helperText,\n sx,\n ...dropzoneOptions\n}: FieldUploadAvatarProps): ReactNode {\n const { control, setValue } = useFormContext();\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <FieldUploadAvatarInner\n value={field.value}\n error={error}\n size={size}\n disabled={disabled}\n helperText={helperText}\n sx={sx}\n dropzoneOptions={dropzoneOptions}\n setValue={setValue}\n name={name}\n />\n )}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Phone Component\n *\n * React Hook Form integrated international phone number input.\n * Provides country selection with flag display and validation.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, ChangeEvent } from 'react';\nimport { useState, useCallback, useMemo, useRef } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport TextField from '@mui/material/TextField';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport type { TextFieldProps } from '@mui/material/TextField';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Country data structure\n */\nexport interface CountryData {\n /** ISO 3166-1 alpha-2 code */\n code: string;\n /** Country name */\n name: string;\n /** Dial code with + prefix */\n dialCode: string;\n /** Flag emoji */\n flag: string;\n}\n\n/**\n * Props for Field.Phone component.\n */\nexport interface FieldPhoneProps extends Omit<TextFieldProps, 'name' | 'value' | 'onChange'> {\n /** Field name in the form */\n name: string;\n /** Default country code (e.g., 'US') */\n defaultCountry?: string;\n /** Preferred countries shown at top of list */\n preferredCountries?: string[];\n /** Hide country selector */\n hideCountrySelect?: boolean;\n /** Custom countries data (overrides default) */\n countries?: CountryData[];\n}\n\n// =============================================================================\n// DEFAULT COUNTRIES DATA\n// =============================================================================\n\nconst DEFAULT_COUNTRIES: CountryData[] = [\n { code: 'US', name: 'United States', dialCode: '+1', flag: '🇺🇸' },\n { code: 'GB', name: 'United Kingdom', dialCode: '+44', flag: '🇬🇧' },\n { code: 'CA', name: 'Canada', dialCode: '+1', flag: '🇨🇦' },\n { code: 'AU', name: 'Australia', dialCode: '+61', flag: '🇦🇺' },\n { code: 'DE', name: 'Germany', dialCode: '+49', flag: '🇩🇪' },\n { code: 'FR', name: 'France', dialCode: '+33', flag: '🇫🇷' },\n { code: 'IT', name: 'Italy', dialCode: '+39', flag: '🇮🇹' },\n { code: 'ES', name: 'Spain', dialCode: '+34', flag: '🇪🇸' },\n { code: 'JP', name: 'Japan', dialCode: '+81', flag: '🇯🇵' },\n { code: 'CN', name: 'China', dialCode: '+86', flag: '🇨🇳' },\n { code: 'KR', name: 'South Korea', dialCode: '+82', flag: '🇰🇷' },\n { code: 'IN', name: 'India', dialCode: '+91', flag: '🇮🇳' },\n { code: 'BR', name: 'Brazil', dialCode: '+55', flag: '🇧🇷' },\n { code: 'MX', name: 'Mexico', dialCode: '+52', flag: '🇲🇽' },\n { code: 'RU', name: 'Russia', dialCode: '+7', flag: '🇷🇺' },\n { code: 'NL', name: 'Netherlands', dialCode: '+31', flag: '🇳🇱' },\n { code: 'BE', name: 'Belgium', dialCode: '+32', flag: '🇧🇪' },\n { code: 'CH', name: 'Switzerland', dialCode: '+41', flag: '🇨🇭' },\n { code: 'AT', name: 'Austria', dialCode: '+43', flag: '🇦🇹' },\n { code: 'SE', name: 'Sweden', dialCode: '+46', flag: '🇸🇪' },\n { code: 'NO', name: 'Norway', dialCode: '+47', flag: '🇳🇴' },\n { code: 'DK', name: 'Denmark', dialCode: '+45', flag: '🇩🇰' },\n { code: 'FI', name: 'Finland', dialCode: '+358', flag: '🇫🇮' },\n { code: 'PL', name: 'Poland', dialCode: '+48', flag: '🇵🇱' },\n { code: 'PT', name: 'Portugal', dialCode: '+351', flag: '🇵🇹' },\n { code: 'GR', name: 'Greece', dialCode: '+30', flag: '🇬🇷' },\n { code: 'IE', name: 'Ireland', dialCode: '+353', flag: '🇮🇪' },\n { code: 'NZ', name: 'New Zealand', dialCode: '+64', flag: '🇳🇿' },\n { code: 'SG', name: 'Singapore', dialCode: '+65', flag: '🇸🇬' },\n { code: 'HK', name: 'Hong Kong', dialCode: '+852', flag: '🇭🇰' },\n { code: 'AE', name: 'UAE', dialCode: '+971', flag: '🇦🇪' },\n { code: 'SA', name: 'Saudi Arabia', dialCode: '+966', flag: '🇸🇦' },\n { code: 'IL', name: 'Israel', dialCode: '+972', flag: '🇮🇱' },\n { code: 'TR', name: 'Turkey', dialCode: '+90', flag: '🇹🇷' },\n { code: 'ZA', name: 'South Africa', dialCode: '+27', flag: '🇿🇦' },\n { code: 'EG', name: 'Egypt', dialCode: '+20', flag: '🇪🇬' },\n { code: 'NG', name: 'Nigeria', dialCode: '+234', flag: '🇳🇬' },\n { code: 'KE', name: 'Kenya', dialCode: '+254', flag: '🇰🇪' },\n { code: 'AR', name: 'Argentina', dialCode: '+54', flag: '🇦🇷' },\n { code: 'CL', name: 'Chile', dialCode: '+56', flag: '🇨🇱' },\n { code: 'CO', name: 'Colombia', dialCode: '+57', flag: '🇨🇴' },\n { code: 'PE', name: 'Peru', dialCode: '+51', flag: '🇵🇪' },\n { code: 'VE', name: 'Venezuela', dialCode: '+58', flag: '🇻🇪' },\n { code: 'TH', name: 'Thailand', dialCode: '+66', flag: '🇹🇭' },\n { code: 'VN', name: 'Vietnam', dialCode: '+84', flag: '🇻🇳' },\n { code: 'MY', name: 'Malaysia', dialCode: '+60', flag: '🇲🇾' },\n { code: 'ID', name: 'Indonesia', dialCode: '+62', flag: '🇮🇩' },\n { code: 'PH', name: 'Philippines', dialCode: '+63', flag: '🇵🇭' },\n { code: 'PK', name: 'Pakistan', dialCode: '+92', flag: '🇵🇰' },\n { code: 'BD', name: 'Bangladesh', dialCode: '+880', flag: '🇧🇩' },\n { code: 'UA', name: 'Ukraine', dialCode: '+380', flag: '🇺🇦' },\n { code: 'CZ', name: 'Czech Republic', dialCode: '+420', flag: '🇨🇿' },\n { code: 'RO', name: 'Romania', dialCode: '+40', flag: '🇷🇴' },\n { code: 'HU', name: 'Hungary', dialCode: '+36', flag: '🇭🇺' },\n];\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Format phone number by removing non-digit characters except +\n */\nfunction formatPhoneNumber(value: string): string {\n return value.replace(/[^\\d+]/g, '');\n}\n\n/**\n * Detect country from phone number based on dial code\n */\nfunction detectCountryFromNumber(phoneNumber: string, countries: CountryData[]): CountryData | null {\n if (!phoneNumber.startsWith('+')) return null;\n\n // Sort by dial code length (longer first) for more specific matching\n const sortedCountries = [...countries].sort((a, b) => b.dialCode.length - a.dialCode.length);\n\n for (const country of sortedCountries) {\n if (phoneNumber.startsWith(country.dialCode)) {\n return country;\n }\n }\n\n return null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Field.Phone - International phone input with React Hook Form integration.\n *\n * Features:\n * - Country selector with flags\n * - Automatic country detection from dial code\n * - Preferred countries list\n * - Phone number formatting\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.Phone\n * name=\"phone\"\n * label=\"Phone Number\"\n * defaultCountry=\"US\"\n * />\n * </FormProvider>\n * ```\n *\n * @example\n * ```tsx\n * // With preferred countries\n * <Field.Phone\n * name=\"mobile\"\n * label=\"Mobile\"\n * defaultCountry=\"GB\"\n * preferredCountries={['GB', 'US', 'DE', 'FR']}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Hide country selector\n * <Field.Phone\n * name=\"phone\"\n * label=\"Phone\"\n * hideCountrySelect\n * defaultCountry=\"US\"\n * />\n * ```\n */\nexport function FieldPhone({\n name,\n label,\n helperText,\n defaultCountry = 'US',\n preferredCountries = [],\n hideCountrySelect = false,\n countries: customCountries,\n disabled,\n ...other\n}: FieldPhoneProps): ReactNode {\n const { control } = useFormContext();\n const countries = customCountries ?? DEFAULT_COUNTRIES;\n const anchorRef = useRef<HTMLButtonElement>(null);\n const [menuOpen, setMenuOpen] = useState(false);\n\n // Get default country data\n const defaultCountryData = useMemo(\n () => countries.find((c) => c.code === defaultCountry) ?? countries[0],\n [countries, defaultCountry]\n );\n\n // Sort countries with preferred at top\n const sortedCountries = useMemo(() => {\n if (preferredCountries.length === 0) return countries;\n\n const preferred = preferredCountries\n .map((code) => countries.find((c) => c.code === code))\n .filter(Boolean) as CountryData[];\n\n const rest = countries.filter((c) => !preferredCountries.includes(c.code));\n\n return [...preferred, ...rest];\n }, [countries, preferredCountries]);\n\n const handleOpenMenu = useCallback(() => {\n if (!disabled) {\n setMenuOpen(true);\n }\n }, [disabled]);\n\n const handleCloseMenu = useCallback(() => {\n setMenuOpen(false);\n }, []);\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n // Detect country from current value\n const detectedCountry = field.value ? detectCountryFromNumber(field.value, countries) : null;\n const selectedCountry = detectedCountry ?? defaultCountryData;\n\n const handleCountrySelect = (country: CountryData) => {\n // Update value with new dial code\n const currentNumber = field.value ?? '';\n const numberWithoutCode = currentNumber.replace(/^\\+\\d+\\s*/, '');\n field.onChange(`${country.dialCode}${numberWithoutCode}`);\n handleCloseMenu();\n };\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value;\n const formatted = formatPhoneNumber(rawValue);\n\n // If user starts typing without +, prepend country code\n if (formatted && !formatted.startsWith('+')) {\n field.onChange(`${selectedCountry.dialCode}${formatted}`);\n } else {\n field.onChange(formatted);\n }\n };\n\n // Display value: show number without leading dial code for cleaner UI\n const displayValue = field.value ?? '';\n\n return (\n <>\n <TextField\n {...other}\n label={label}\n value={displayValue}\n onChange={handleInputChange}\n disabled={disabled}\n error={!!error}\n helperText={error?.message ?? helperText}\n fullWidth\n slotProps={{\n input: {\n startAdornment: !hideCountrySelect && (\n <InputAdornment position=\"start\">\n <IconButton\n ref={anchorRef}\n onClick={handleOpenMenu}\n disabled={disabled}\n size=\"small\"\n edge=\"start\"\n aria-label={`Select country, current: ${selectedCountry.name}`}\n aria-haspopup=\"listbox\"\n aria-expanded={menuOpen}\n sx={{ mr: -0.5 }}\n >\n <Box\n component=\"span\"\n sx={{\n fontSize: '1.25rem',\n lineHeight: 1,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n {selectedCountry.flag}\n </Box>\n </IconButton>\n <Typography\n variant=\"body2\"\n sx={{\n color: \"text.secondary\",\n mr: 0.5,\n minWidth: 40\n }}>\n {selectedCountry.dialCode}\n </Typography>\n </InputAdornment>\n ),\n },\n htmlInput: {\n inputMode: 'tel',\n autoComplete: 'tel',\n },\n }}\n />\n <Menu\n anchorEl={anchorRef.current}\n open={menuOpen}\n onClose={handleCloseMenu}\n slotProps={{\n paper: {\n sx: {\n maxHeight: 300,\n minWidth: 280,\n },\n },\n }}\n >\n {sortedCountries.map((country, index) => (\n <MenuItem\n key={country.code}\n selected={country.code === selectedCountry.code}\n onClick={() => handleCountrySelect(country)}\n divider={preferredCountries.length > 0 && index === preferredCountries.length - 1}\n >\n <ListItemIcon sx={{ fontSize: '1.25rem', minWidth: 36 }}>{country.flag}</ListItemIcon>\n <ListItemText primary={country.name} secondary={country.dialCode} />\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.CountrySelect Component\n *\n * React Hook Form integrated country selector with flag icons.\n * Provides searchable country selection with ISO code support.\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, SyntheticEvent } from 'react';\nimport { useMemo } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport type { AutocompleteProps } from '@mui/material/Autocomplete';\nimport type { TextFieldProps } from '@mui/material/TextField';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Country data structure\n */\nexport interface Country {\n /** ISO 3166-1 alpha-2 code */\n code: string;\n /** Country name */\n label: string;\n /** Dial code with + prefix */\n phone: string;\n /** Flag emoji */\n flag: string;\n}\n\n/**\n * Props for Field.CountrySelect component.\n */\nexport interface FieldCountrySelectProps extends Omit<\n AutocompleteProps<Country, boolean, boolean, false>,\n 'options' | 'renderInput' | 'value' | 'onChange' | 'getOptionLabel' | 'isOptionEqualToValue'\n> {\n /** Field name in the form */\n name: string;\n /** Field label */\n label?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Helper text shown below the field */\n helperText?: ReactNode;\n /** Return value type: 'code' returns ISO code, 'label' returns country name */\n getValue?: 'code' | 'label' | 'full';\n /** Custom countries data (overrides default) */\n countries?: Country[];\n /** TextField props for customization */\n textFieldProps?: Partial<TextFieldProps>;\n}\n\n// =============================================================================\n// DEFAULT COUNTRIES DATA\n// =============================================================================\n\nconst DEFAULT_COUNTRIES: Country[] = [\n { code: 'AD', label: 'Andorra', phone: '+376', flag: '🇦🇩' },\n { code: 'AE', label: 'United Arab Emirates', phone: '+971', flag: '🇦🇪' },\n { code: 'AF', label: 'Afghanistan', phone: '+93', flag: '🇦🇫' },\n { code: 'AG', label: 'Antigua and Barbuda', phone: '+1-268', flag: '🇦🇬' },\n { code: 'AI', label: 'Anguilla', phone: '+1-264', flag: '🇦🇮' },\n { code: 'AL', label: 'Albania', phone: '+355', flag: '🇦🇱' },\n { code: 'AM', label: 'Armenia', phone: '+374', flag: '🇦🇲' },\n { code: 'AO', label: 'Angola', phone: '+244', flag: '🇦🇴' },\n { code: 'AR', label: 'Argentina', phone: '+54', flag: '🇦🇷' },\n { code: 'AT', label: 'Austria', phone: '+43', flag: '🇦🇹' },\n { code: 'AU', label: 'Australia', phone: '+61', flag: '🇦🇺' },\n { code: 'AZ', label: 'Azerbaijan', phone: '+994', flag: '🇦🇿' },\n { code: 'BA', label: 'Bosnia and Herzegovina', phone: '+387', flag: '🇧🇦' },\n { code: 'BB', label: 'Barbados', phone: '+1-246', flag: '🇧🇧' },\n { code: 'BD', label: 'Bangladesh', phone: '+880', flag: '🇧🇩' },\n { code: 'BE', label: 'Belgium', phone: '+32', flag: '🇧🇪' },\n { code: 'BF', label: 'Burkina Faso', phone: '+226', flag: '🇧🇫' },\n { code: 'BG', label: 'Bulgaria', phone: '+359', flag: '🇧🇬' },\n { code: 'BH', label: 'Bahrain', phone: '+973', flag: '🇧🇭' },\n { code: 'BI', label: 'Burundi', phone: '+257', flag: '🇧🇮' },\n { code: 'BJ', label: 'Benin', phone: '+229', flag: '🇧🇯' },\n { code: 'BN', label: 'Brunei', phone: '+673', flag: '🇧🇳' },\n { code: 'BO', label: 'Bolivia', phone: '+591', flag: '🇧🇴' },\n { code: 'BR', label: 'Brazil', phone: '+55', flag: '🇧🇷' },\n { code: 'BS', label: 'Bahamas', phone: '+1-242', flag: '🇧🇸' },\n { code: 'BT', label: 'Bhutan', phone: '+975', flag: '🇧🇹' },\n { code: 'BW', label: 'Botswana', phone: '+267', flag: '🇧🇼' },\n { code: 'BY', label: 'Belarus', phone: '+375', flag: '🇧🇾' },\n { code: 'BZ', label: 'Belize', phone: '+501', flag: '🇧🇿' },\n { code: 'CA', label: 'Canada', phone: '+1', flag: '🇨🇦' },\n { code: 'CH', label: 'Switzerland', phone: '+41', flag: '🇨🇭' },\n { code: 'CL', label: 'Chile', phone: '+56', flag: '🇨🇱' },\n { code: 'CN', label: 'China', phone: '+86', flag: '🇨🇳' },\n { code: 'CO', label: 'Colombia', phone: '+57', flag: '🇨🇴' },\n { code: 'CR', label: 'Costa Rica', phone: '+506', flag: '🇨🇷' },\n { code: 'CU', label: 'Cuba', phone: '+53', flag: '🇨🇺' },\n { code: 'CY', label: 'Cyprus', phone: '+357', flag: '🇨🇾' },\n { code: 'CZ', label: 'Czech Republic', phone: '+420', flag: '🇨🇿' },\n { code: 'DE', label: 'Germany', phone: '+49', flag: '🇩🇪' },\n { code: 'DJ', label: 'Djibouti', phone: '+253', flag: '🇩🇯' },\n { code: 'DK', label: 'Denmark', phone: '+45', flag: '🇩🇰' },\n { code: 'DM', label: 'Dominica', phone: '+1-767', flag: '🇩🇲' },\n { code: 'DO', label: 'Dominican Republic', phone: '+1-809', flag: '🇩🇴' },\n { code: 'DZ', label: 'Algeria', phone: '+213', flag: '🇩🇿' },\n { code: 'EC', label: 'Ecuador', phone: '+593', flag: '🇪🇨' },\n { code: 'EE', label: 'Estonia', phone: '+372', flag: '🇪🇪' },\n { code: 'EG', label: 'Egypt', phone: '+20', flag: '🇪🇬' },\n { code: 'ES', label: 'Spain', phone: '+34', flag: '🇪🇸' },\n { code: 'ET', label: 'Ethiopia', phone: '+251', flag: '🇪🇹' },\n { code: 'FI', label: 'Finland', phone: '+358', flag: '🇫🇮' },\n { code: 'FJ', label: 'Fiji', phone: '+679', flag: '🇫🇯' },\n { code: 'FR', label: 'France', phone: '+33', flag: '🇫🇷' },\n { code: 'GA', label: 'Gabon', phone: '+241', flag: '🇬🇦' },\n { code: 'GB', label: 'United Kingdom', phone: '+44', flag: '🇬🇧' },\n { code: 'GE', label: 'Georgia', phone: '+995', flag: '🇬🇪' },\n { code: 'GH', label: 'Ghana', phone: '+233', flag: '🇬🇭' },\n { code: 'GR', label: 'Greece', phone: '+30', flag: '🇬🇷' },\n { code: 'GT', label: 'Guatemala', phone: '+502', flag: '🇬🇹' },\n { code: 'GY', label: 'Guyana', phone: '+592', flag: '🇬🇾' },\n { code: 'HK', label: 'Hong Kong', phone: '+852', flag: '🇭🇰' },\n { code: 'HN', label: 'Honduras', phone: '+504', flag: '🇭🇳' },\n { code: 'HR', label: 'Croatia', phone: '+385', flag: '🇭🇷' },\n { code: 'HT', label: 'Haiti', phone: '+509', flag: '🇭🇹' },\n { code: 'HU', label: 'Hungary', phone: '+36', flag: '🇭🇺' },\n { code: 'ID', label: 'Indonesia', phone: '+62', flag: '🇮🇩' },\n { code: 'IE', label: 'Ireland', phone: '+353', flag: '🇮🇪' },\n { code: 'IL', label: 'Israel', phone: '+972', flag: '🇮🇱' },\n { code: 'IN', label: 'India', phone: '+91', flag: '🇮🇳' },\n { code: 'IQ', label: 'Iraq', phone: '+964', flag: '🇮🇶' },\n { code: 'IR', label: 'Iran', phone: '+98', flag: '🇮🇷' },\n { code: 'IS', label: 'Iceland', phone: '+354', flag: '🇮🇸' },\n { code: 'IT', label: 'Italy', phone: '+39', flag: '🇮🇹' },\n { code: 'JM', label: 'Jamaica', phone: '+1-876', flag: '🇯🇲' },\n { code: 'JO', label: 'Jordan', phone: '+962', flag: '🇯🇴' },\n { code: 'JP', label: 'Japan', phone: '+81', flag: '🇯🇵' },\n { code: 'KE', label: 'Kenya', phone: '+254', flag: '🇰🇪' },\n { code: 'KG', label: 'Kyrgyzstan', phone: '+996', flag: '🇰🇬' },\n { code: 'KH', label: 'Cambodia', phone: '+855', flag: '🇰🇭' },\n { code: 'KR', label: 'South Korea', phone: '+82', flag: '🇰🇷' },\n { code: 'KW', label: 'Kuwait', phone: '+965', flag: '🇰🇼' },\n { code: 'KZ', label: 'Kazakhstan', phone: '+7', flag: '🇰🇿' },\n { code: 'LA', label: 'Laos', phone: '+856', flag: '🇱🇦' },\n { code: 'LB', label: 'Lebanon', phone: '+961', flag: '🇱🇧' },\n { code: 'LK', label: 'Sri Lanka', phone: '+94', flag: '🇱🇰' },\n { code: 'LR', label: 'Liberia', phone: '+231', flag: '🇱🇷' },\n { code: 'LT', label: 'Lithuania', phone: '+370', flag: '🇱🇹' },\n { code: 'LU', label: 'Luxembourg', phone: '+352', flag: '🇱🇺' },\n { code: 'LV', label: 'Latvia', phone: '+371', flag: '🇱🇻' },\n { code: 'LY', label: 'Libya', phone: '+218', flag: '🇱🇾' },\n { code: 'MA', label: 'Morocco', phone: '+212', flag: '🇲🇦' },\n { code: 'MC', label: 'Monaco', phone: '+377', flag: '🇲🇨' },\n { code: 'MD', label: 'Moldova', phone: '+373', flag: '🇲🇩' },\n { code: 'ME', label: 'Montenegro', phone: '+382', flag: '🇲🇪' },\n { code: 'MG', label: 'Madagascar', phone: '+261', flag: '🇲🇬' },\n { code: 'MK', label: 'North Macedonia', phone: '+389', flag: '🇲🇰' },\n { code: 'ML', label: 'Mali', phone: '+223', flag: '🇲🇱' },\n { code: 'MM', label: 'Myanmar', phone: '+95', flag: '🇲🇲' },\n { code: 'MN', label: 'Mongolia', phone: '+976', flag: '🇲🇳' },\n { code: 'MO', label: 'Macau', phone: '+853', flag: '🇲🇴' },\n { code: 'MT', label: 'Malta', phone: '+356', flag: '🇲🇹' },\n { code: 'MU', label: 'Mauritius', phone: '+230', flag: '🇲🇺' },\n { code: 'MV', label: 'Maldives', phone: '+960', flag: '🇲🇻' },\n { code: 'MW', label: 'Malawi', phone: '+265', flag: '🇲🇼' },\n { code: 'MX', label: 'Mexico', phone: '+52', flag: '🇲🇽' },\n { code: 'MY', label: 'Malaysia', phone: '+60', flag: '🇲🇾' },\n { code: 'MZ', label: 'Mozambique', phone: '+258', flag: '🇲🇿' },\n { code: 'NA', label: 'Namibia', phone: '+264', flag: '🇳🇦' },\n { code: 'NE', label: 'Niger', phone: '+227', flag: '🇳🇪' },\n { code: 'NG', label: 'Nigeria', phone: '+234', flag: '🇳🇬' },\n { code: 'NI', label: 'Nicaragua', phone: '+505', flag: '🇳🇮' },\n { code: 'NL', label: 'Netherlands', phone: '+31', flag: '🇳🇱' },\n { code: 'NO', label: 'Norway', phone: '+47', flag: '🇳🇴' },\n { code: 'NP', label: 'Nepal', phone: '+977', flag: '🇳🇵' },\n { code: 'NZ', label: 'New Zealand', phone: '+64', flag: '🇳🇿' },\n { code: 'OM', label: 'Oman', phone: '+968', flag: '🇴🇲' },\n { code: 'PA', label: 'Panama', phone: '+507', flag: '🇵🇦' },\n { code: 'PE', label: 'Peru', phone: '+51', flag: '🇵🇪' },\n { code: 'PG', label: 'Papua New Guinea', phone: '+675', flag: '🇵🇬' },\n { code: 'PH', label: 'Philippines', phone: '+63', flag: '🇵🇭' },\n { code: 'PK', label: 'Pakistan', phone: '+92', flag: '🇵🇰' },\n { code: 'PL', label: 'Poland', phone: '+48', flag: '🇵🇱' },\n { code: 'PT', label: 'Portugal', phone: '+351', flag: '🇵🇹' },\n { code: 'PY', label: 'Paraguay', phone: '+595', flag: '🇵🇾' },\n { code: 'QA', label: 'Qatar', phone: '+974', flag: '🇶🇦' },\n { code: 'RO', label: 'Romania', phone: '+40', flag: '🇷🇴' },\n { code: 'RS', label: 'Serbia', phone: '+381', flag: '🇷🇸' },\n { code: 'RU', label: 'Russia', phone: '+7', flag: '🇷🇺' },\n { code: 'RW', label: 'Rwanda', phone: '+250', flag: '🇷🇼' },\n { code: 'SA', label: 'Saudi Arabia', phone: '+966', flag: '🇸🇦' },\n { code: 'SD', label: 'Sudan', phone: '+249', flag: '🇸🇩' },\n { code: 'SE', label: 'Sweden', phone: '+46', flag: '🇸🇪' },\n { code: 'SG', label: 'Singapore', phone: '+65', flag: '🇸🇬' },\n { code: 'SI', label: 'Slovenia', phone: '+386', flag: '🇸🇮' },\n { code: 'SK', label: 'Slovakia', phone: '+421', flag: '🇸🇰' },\n { code: 'SL', label: 'Sierra Leone', phone: '+232', flag: '🇸🇱' },\n { code: 'SN', label: 'Senegal', phone: '+221', flag: '🇸🇳' },\n { code: 'SO', label: 'Somalia', phone: '+252', flag: '🇸🇴' },\n { code: 'SR', label: 'Suriname', phone: '+597', flag: '🇸🇷' },\n { code: 'SV', label: 'El Salvador', phone: '+503', flag: '🇸🇻' },\n { code: 'SY', label: 'Syria', phone: '+963', flag: '🇸🇾' },\n { code: 'TH', label: 'Thailand', phone: '+66', flag: '🇹🇭' },\n { code: 'TJ', label: 'Tajikistan', phone: '+992', flag: '🇹🇯' },\n { code: 'TM', label: 'Turkmenistan', phone: '+993', flag: '🇹🇲' },\n { code: 'TN', label: 'Tunisia', phone: '+216', flag: '🇹🇳' },\n { code: 'TR', label: 'Turkey', phone: '+90', flag: '🇹🇷' },\n { code: 'TT', label: 'Trinidad and Tobago', phone: '+1-868', flag: '🇹🇹' },\n { code: 'TW', label: 'Taiwan', phone: '+886', flag: '🇹🇼' },\n { code: 'TZ', label: 'Tanzania', phone: '+255', flag: '🇹🇿' },\n { code: 'UA', label: 'Ukraine', phone: '+380', flag: '🇺🇦' },\n { code: 'UG', label: 'Uganda', phone: '+256', flag: '🇺🇬' },\n { code: 'US', label: 'United States', phone: '+1', flag: '🇺🇸' },\n { code: 'UY', label: 'Uruguay', phone: '+598', flag: '🇺🇾' },\n { code: 'UZ', label: 'Uzbekistan', phone: '+998', flag: '🇺🇿' },\n { code: 'VE', label: 'Venezuela', phone: '+58', flag: '🇻🇪' },\n { code: 'VN', label: 'Vietnam', phone: '+84', flag: '🇻🇳' },\n { code: 'YE', label: 'Yemen', phone: '+967', flag: '🇾🇪' },\n { code: 'ZA', label: 'South Africa', phone: '+27', flag: '🇿🇦' },\n { code: 'ZM', label: 'Zambia', phone: '+260', flag: '🇿🇲' },\n { code: 'ZW', label: 'Zimbabwe', phone: '+263', flag: '🇿🇼' },\n];\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Field.CountrySelect - Country selector with React Hook Form integration.\n *\n * Features:\n * - Searchable country list with flag icons\n * - Return ISO code, country name, or full object\n * - Custom country data support\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n * <Field.CountrySelect\n * name=\"country\"\n * label=\"Country\"\n * />\n * </FormProvider>\n * ```\n *\n * @example\n * ```tsx\n * // Return ISO code instead of full object\n * <Field.CountrySelect\n * name=\"countryCode\"\n * label=\"Country\"\n * getValue=\"code\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Multiple selection\n * <Field.CountrySelect\n * name=\"visitedCountries\"\n * label=\"Countries Visited\"\n * multiple\n * getValue=\"code\"\n * />\n * ```\n */\nexport function FieldCountrySelect({\n name,\n label,\n placeholder,\n helperText,\n getValue = 'full',\n countries: customCountries,\n textFieldProps,\n multiple,\n disabled,\n ...other\n}: FieldCountrySelectProps): ReactNode {\n const { control } = useFormContext();\n const countries = customCountries ?? DEFAULT_COUNTRIES;\n\n // Create a lookup map for finding country by code or label\n const countryMap = useMemo(() => {\n const byCode = new Map<string, Country>();\n const byLabel = new Map<string, Country>();\n for (const country of countries) {\n byCode.set(country.code, country);\n byLabel.set(country.label, country);\n }\n return { byCode, byLabel };\n }, [countries]);\n\n // Find country by code or label\n const findCountry = (v: unknown): Country | null => {\n if (v === null || v === undefined) return null;\n if (typeof v === 'object' && v !== null && 'code' in v) {\n return v as Country;\n }\n if (typeof v === 'string') {\n return countryMap.byCode.get(v) ?? countryMap.byLabel.get(v) ?? null;\n }\n return null;\n };\n\n // Convert stored value back to Country object(s)\n const valueToCountry = (value: unknown): Country | Country[] | null => {\n if (value === null || value === undefined) {\n return multiple ? [] : null;\n }\n\n if (multiple) {\n const values = Array.isArray(value) ? value : [value];\n return values.map(findCountry).filter((c): c is Country => c !== null);\n }\n\n return findCountry(value);\n };\n\n // Convert Country object(s) to storage format\n const countryToValue = (country: Country | Country[] | null): unknown => {\n if (country === null) {\n return multiple ? [] : null;\n }\n\n if (multiple && Array.isArray(country)) {\n if (getValue === 'code') return country.map((c) => c.code);\n if (getValue === 'label') return country.map((c) => c.label);\n return country;\n }\n\n if (!Array.isArray(country)) {\n if (getValue === 'code') return country.code;\n if (getValue === 'label') return country.label;\n return country;\n }\n\n return null;\n };\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const currentValue = valueToCountry(field.value);\n\n return (\n <Autocomplete\n {...other}\n multiple={multiple}\n disabled={disabled}\n options={countries}\n value={currentValue}\n onChange={(_event: SyntheticEvent, newValue: Country | Country[] | null) => {\n field.onChange(countryToValue(newValue));\n }}\n getOptionLabel={(option: Country) => option.label}\n isOptionEqualToValue={(option: Country, value: Country) => option.code === value.code}\n renderOption={(props, option: Country) => {\n const { key, ...optionProps } = props;\n return (\n <Box key={key} component=\"li\" sx={{ '& > span': { mr: 1.5, flexShrink: 0 } }} {...optionProps}>\n <span style={{ fontSize: '1.25rem' }}>{option.flag}</span>\n {option.label} ({option.code})\n </Box>\n );\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n label={label}\n placeholder={placeholder}\n error={!!error}\n helperText={error?.message ?? helperText}\n slotProps={{\n ...params.slotProps,\n ...textFieldProps?.slotProps,\n\n htmlInput: {\n ...params.slotProps.htmlInput,\n autoComplete: 'country-name',\n }\n }}\n />\n )}\n />\n );\n }}\n />\n );\n}\n","'use client';\n\n/**\n * Field.Editor Component\n *\n * Rich text editor with React Hook Form integration.\n * Provides both a basic textarea fallback and a headless API for custom editors (TipTap, etc.)\n *\n * @module @omnitron-dev/prism/components/field\n */\n\nimport type { ReactNode, ComponentProps, ReactElement } from 'react';\nimport { Controller, useFormContext, type RegisterOptions } from 'react-hook-form';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Toolbar configuration for the editor.\n */\nexport interface EditorToolbarConfig {\n /** Enable bold formatting */\n bold?: boolean;\n /** Enable italic formatting */\n italic?: boolean;\n /** Enable underline formatting */\n underline?: boolean;\n /** Enable strikethrough formatting */\n strikethrough?: boolean;\n /** Enable heading levels */\n headings?: boolean | number[];\n /** Enable bullet list */\n bulletList?: boolean;\n /** Enable numbered list */\n orderedList?: boolean;\n /** Enable blockquote */\n blockquote?: boolean;\n /** Enable code block */\n codeBlock?: boolean;\n /** Enable link insertion */\n link?: boolean;\n /** Enable image insertion */\n image?: boolean;\n /** Enable text alignment */\n align?: boolean;\n /** Enable undo/redo */\n history?: boolean;\n}\n\n/**\n * Props passed to custom editor render function.\n */\nexport interface EditorRenderProps {\n /** Current HTML content */\n value: string;\n /** Update handler - call with new HTML content */\n onChange: (html: string) => void;\n /** Blur handler for form validation */\n onBlur: () => void;\n /** Error state */\n error: boolean;\n /** Field name */\n name: string;\n /** Disabled state */\n disabled?: boolean;\n /** Read-only state */\n readOnly?: boolean;\n /** Placeholder text */\n placeholder?: string;\n /** Toolbar configuration */\n toolbar?: EditorToolbarConfig;\n /** Minimum height */\n minHeight?: number | string;\n /** Maximum height */\n maxHeight?: number | string;\n /** Custom CSS class */\n className?: string;\n /** Aria label for accessibility */\n 'aria-label'?: string;\n /** Aria described-by for error messages */\n 'aria-describedby'?: string;\n}\n\n/**\n * Props for Field.Editor component.\n */\nexport interface FieldEditorProps {\n /** Field name in the form */\n name: string;\n /** Field label */\n label?: string;\n /** Helper text displayed below the editor */\n helperText?: ReactNode;\n /** Validation rules for react-hook-form */\n rules?: RegisterOptions;\n /** Placeholder text */\n placeholder?: string;\n /** Disabled state */\n disabled?: boolean;\n /** Read-only state */\n readOnly?: boolean;\n /** Toolbar configuration */\n toolbar?: EditorToolbarConfig;\n /** Minimum height */\n minHeight?: number | string;\n /** Maximum height */\n maxHeight?: number | string;\n /** Required field indicator */\n required?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Custom editor render function (for TipTap, etc.) */\n renderEditor?: (props: EditorRenderProps) => ReactElement;\n /** Additional props for the wrapper Box */\n sx?: ComponentProps<typeof Box>['sx'];\n /** Aria label for accessibility */\n 'aria-label'?: string;\n}\n\n/**\n * Default toolbar configuration.\n */\nexport const DEFAULT_EDITOR_TOOLBAR: EditorToolbarConfig = {\n bold: true,\n italic: true,\n underline: true,\n headings: [1, 2, 3],\n bulletList: true,\n orderedList: true,\n link: true,\n history: true,\n};\n\n// =============================================================================\n// BASIC EDITOR (FALLBACK)\n// =============================================================================\n\n/**\n * Basic textarea-based editor as fallback.\n */\nfunction BasicEditor({\n value,\n onChange,\n onBlur,\n error,\n name,\n disabled,\n readOnly,\n placeholder,\n minHeight = 200,\n maxHeight,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n}: EditorRenderProps): ReactNode {\n return (\n <TextField\n multiline\n fullWidth\n minRows={6}\n maxRows={maxHeight ? 20 : undefined}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onBlur={onBlur}\n error={error}\n disabled={disabled}\n slotProps={{\n input: {\n readOnly,\n },\n htmlInput: {\n 'aria-label': ariaLabel || name,\n 'aria-describedby': ariaDescribedBy,\n },\n }}\n placeholder={placeholder}\n sx={{\n '& .MuiOutlinedInput-root': {\n minHeight,\n maxHeight,\n alignItems: 'flex-start',\n },\n '& .MuiInputBase-input': {\n resize: 'vertical',\n },\n }}\n />\n );\n}\n\n// =============================================================================\n// FIELD.EDITOR COMPONENT\n// =============================================================================\n\n/**\n * Field.Editor - Rich text editor with React Hook Form integration.\n *\n * Supports both a basic textarea fallback and custom editor implementations.\n *\n * @example\n * ```tsx\n * // Basic usage (textarea fallback)\n * <FormProvider {...methods}>\n * <Field.Editor\n * name=\"content\"\n * label=\"Article Content\"\n * placeholder=\"Write your article...\"\n * minHeight={300}\n * />\n * </FormProvider>\n *\n * // With custom TipTap editor\n * <Field.Editor\n * name=\"content\"\n * label=\"Article Content\"\n * renderEditor={({ value, onChange, onBlur, error }) => (\n * <TipTapEditor\n * content={value}\n * onUpdate={({ editor }) => onChange(editor.getHTML())}\n * onBlur={onBlur}\n * editorProps={{\n * attributes: {\n * class: error ? 'editor-error' : '',\n * },\n * }}\n * />\n * )}\n * />\n * ```\n */\nexport function FieldEditor({\n name,\n label,\n helperText,\n rules,\n placeholder,\n disabled,\n readOnly,\n toolbar = DEFAULT_EDITOR_TOOLBAR,\n minHeight = 200,\n maxHeight,\n required,\n fullWidth = true,\n renderEditor,\n sx,\n 'aria-label': ariaLabel,\n}: FieldEditorProps): ReactNode {\n const { control } = useFormContext();\n const errorId = `${name}-error`;\n const helperId = `${name}-helper`;\n const describedBy = [helperText ? helperId : null, errorId].filter(Boolean).join(' ') || undefined;\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field, fieldState: { error } }) => (\n <FormControl fullWidth={fullWidth} error={!!error} disabled={disabled} required={required} sx={sx}>\n {label && (\n <FormLabel htmlFor={name} sx={{ mb: 1, fontWeight: 500 }}>\n {label}\n </FormLabel>\n )}\n\n {renderEditor ? (\n // Custom editor implementation\n (renderEditor({\n value: field.value ?? '',\n onChange: field.onChange,\n onBlur: field.onBlur,\n error: !!error,\n name,\n disabled,\n readOnly,\n placeholder,\n toolbar,\n minHeight,\n maxHeight,\n 'aria-label': ariaLabel || label || name,\n 'aria-describedby': describedBy,\n }))\n ) : (\n // Basic textarea fallback\n (<BasicEditor\n value={field.value ?? ''}\n onChange={field.onChange}\n onBlur={field.onBlur}\n error={!!error}\n name={name}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={placeholder}\n toolbar={toolbar}\n minHeight={minHeight}\n maxHeight={maxHeight}\n aria-label={ariaLabel || label || name}\n aria-describedby={describedBy}\n />)\n )}\n\n {(error?.message || helperText) && (\n <FormHelperText id={error ? errorId : helperId} error={!!error}>\n {error?.message ?? helperText}\n </FormHelperText>\n )}\n </FormControl>\n )}\n />\n );\n}\n\n// =============================================================================\n// FIELD.CUSTOM EDITOR (RENDER PROP PATTERN)\n// =============================================================================\n\n/**\n * Props for Field.CustomEditor component.\n */\nexport interface FieldCustomEditorProps {\n /** Field name in the form */\n name: string;\n /** Field label */\n label?: string;\n /** Helper text displayed below the editor */\n helperText?: ReactNode;\n /** Validation rules for react-hook-form */\n rules?: RegisterOptions;\n /** Required field indicator */\n required?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Additional props for the wrapper Box */\n sx?: ComponentProps<typeof Box>['sx'];\n /** Render function for custom editor */\n children: (props: {\n value: string;\n onChange: (value: string) => void;\n onBlur: () => void;\n error: boolean;\n errorMessage?: string;\n name: string;\n disabled?: boolean;\n }) => ReactElement;\n}\n\n/**\n * Field.CustomEditor - Headless editor field with render prop pattern.\n *\n * Provides maximum flexibility for integrating any editor library.\n *\n * @example\n * ```tsx\n * import { useEditor, EditorContent } from '@tiptap/react';\n * import StarterKit from '@tiptap/starter-kit';\n *\n * function ArticleForm() {\n * return (\n * <FormProvider {...methods}>\n * <Field.CustomEditor name=\"content\" label=\"Content\" required>\n * {({ value, onChange, onBlur, error }) => {\n * const editor = useEditor({\n * extensions: [StarterKit],\n * content: value,\n * onUpdate: ({ editor }) => onChange(editor.getHTML()),\n * onBlur: () => onBlur(),\n * });\n *\n * return (\n * <Box sx={{ border: error ? '1px solid red' : '1px solid gray' }}>\n * <EditorContent editor={editor} />\n * </Box>\n * );\n * }}\n * </Field.CustomEditor>\n * </FormProvider>\n * );\n * }\n * ```\n */\nexport function FieldCustomEditor({\n name,\n label,\n helperText,\n rules,\n required,\n fullWidth = true,\n disabled,\n sx,\n children,\n}: FieldCustomEditorProps): ReactNode {\n const { control } = useFormContext();\n const errorId = `${name}-error`;\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field, fieldState: { error } }) => (\n <FormControl fullWidth={fullWidth} error={!!error} disabled={disabled} required={required} sx={sx}>\n {label && (\n <FormLabel htmlFor={name} sx={{ mb: 1, fontWeight: 500 }}>\n {label}\n </FormLabel>\n )}\n\n {children({\n value: field.value ?? '',\n onChange: field.onChange,\n onBlur: field.onBlur,\n error: !!error,\n errorMessage: error?.message,\n name,\n disabled,\n })}\n\n {(error?.message || helperText) && (\n <FormHelperText id={errorId} error={!!error}>\n {error?.message ?? helperText}\n </FormHelperText>\n )}\n </FormControl>\n )}\n />\n );\n}\n","/**\n * Field Namespace\n *\n * React Hook Form integrated form fields organized under a single namespace.\n * Provides a clean, consistent API for form building.\n *\n * @example\n * ```tsx\n * import { Field } from '@omnitron-dev/prism';\n *\n * function ProfileForm() {\n * const methods = useForm<ProfileData>();\n *\n * return (\n * <FormProvider {...methods}>\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <Field.Text name=\"name\" label=\"Full Name\" />\n * <Field.Text name=\"email\" label=\"Email\" type=\"email\" />\n * <Field.Select name=\"country\" label=\"Country\" options={countries} />\n * <Field.Number name=\"age\" label=\"Age\" min={0} max={150} />\n * <Field.Checkbox name=\"terms\" label=\"I agree to terms\" />\n * <Field.Switch name=\"newsletter\" label=\"Subscribe\" />\n * <Field.Phone name=\"phone\" label=\"Phone\" defaultCountry=\"US\" />\n * <Field.Upload name=\"avatar\" />\n * </form>\n * </FormProvider>\n * );\n * }\n * ```\n *\n * @module @omnitron-dev/prism/components/field\n */\n\n// Base fields\nimport { FieldText } from './field-text.js';\nimport { FieldSelect } from './field-select.js';\nimport { FieldCheckbox } from './field-checkbox.js';\nimport { FieldSwitch } from './field-switch.js';\nimport { FieldNumber } from './field-number.js';\nimport { FieldRadio } from './field-radio.js';\nimport { FieldAutocomplete } from './field-autocomplete.js';\nimport { FieldMultiSelect } from './field-multi-select.js';\nimport { FieldRating } from './field-rating.js';\nimport { FieldSlider } from './field-slider.js';\nimport { FieldDatePicker } from './field-date-picker.js';\n\n// New fields (v0.4.0)\nimport { FieldTimePicker } from './field-time-picker.js';\nimport { FieldDateTimePicker } from './field-datetime-picker.js';\nimport { FieldMultiCheckbox } from './field-multi-checkbox.js';\nimport { FieldMultiSwitch } from './field-multi-switch.js';\nimport { FieldCode } from './field-code.js';\nimport { FieldUpload, FieldUploadBox, FieldUploadAvatar } from './field-upload.js';\nimport { FieldPhone } from './field-phone.js';\nimport { FieldCountrySelect } from './field-country-select.js';\n\n// Editor fields (v0.4.0)\nimport { FieldEditor, FieldCustomEditor } from './field-editor.js';\n\n// =============================================================================\n// TYPE EXPORTS\n// =============================================================================\n\n// Base field types\nexport type { FieldTextProps } from './field-text.js';\nexport type { FieldSelectProps } from './field-select.js';\nexport type { FieldCheckboxProps } from './field-checkbox.js';\nexport type { FieldSwitchProps } from './field-switch.js';\nexport type { FieldNumberProps } from './field-number.js';\nexport type { FieldRadioProps, RadioOption } from './field-radio.js';\nexport type { FieldAutocompleteProps, AutocompleteOption } from './field-autocomplete.js';\nexport type { FieldMultiSelectProps, MultiSelectOption } from './field-multi-select.js';\nexport type { FieldRatingProps } from './field-rating.js';\nexport type { FieldSliderProps } from './field-slider.js';\nexport type { FieldDatePickerProps } from './field-date-picker.js';\n\n// New field types (v0.4.0)\nexport type { FieldTimePickerProps } from './field-time-picker.js';\nexport type { FieldDateTimePickerProps } from './field-datetime-picker.js';\nexport type { FieldMultiCheckboxProps, MultiCheckboxOption } from './field-multi-checkbox.js';\nexport type { FieldMultiSwitchProps, MultiSwitchOption } from './field-multi-switch.js';\nexport type { FieldCodeProps } from './field-code.js';\nexport type {\n FieldUploadProps,\n FieldUploadBoxProps,\n FieldUploadAvatarProps,\n FileValue,\n UploadValue,\n} from './field-upload.js';\nexport type { FieldPhoneProps, CountryData } from './field-phone.js';\nexport type { FieldCountrySelectProps, Country } from './field-country-select.js';\n\n// Editor field types (v0.4.0)\nexport type {\n FieldEditorProps,\n FieldCustomEditorProps,\n EditorRenderProps,\n EditorToolbarConfig,\n} from './field-editor.js';\n\n// =============================================================================\n// FIELD NAMESPACE\n// =============================================================================\n\n/**\n * Field namespace - React Hook Form integrated form fields.\n *\n * Available fields:\n * - Field.Text - Text input (text, email, password, etc.)\n * - Field.Select - Dropdown select\n * - Field.Checkbox - Checkbox input\n * - Field.Switch - Toggle switch\n * - Field.Number - Numeric input with validation\n * - Field.Radio - Radio button group\n * - Field.Autocomplete - Autocomplete with search\n * - Field.MultiSelect - Multiple selection with chips\n * - Field.Rating - Star rating\n * - Field.Slider - Range slider\n * - Field.DatePicker - Date picker (MUI X)\n * - Field.TimePicker - Time picker (MUI X)\n * - Field.DateTimePicker - Combined date-time picker (MUI X)\n * - Field.MultiCheckbox - Multiple checkbox group\n * - Field.MultiSwitch - Multiple switch group\n * - Field.Code - OTP/PIN code input\n * - Field.Upload - File upload with dropzone\n * - Field.UploadBox - Compact file upload box\n * - Field.UploadAvatar - Circular avatar upload\n * - Field.Phone - International phone input\n * - Field.Editor - Rich text editor (textarea fallback or custom)\n * - Field.CustomEditor - Headless editor with render prop\n */\nexport const Field = {\n // Base fields\n /** Text input field */\n Text: FieldText,\n /** Select dropdown field */\n Select: FieldSelect,\n /** Checkbox field */\n Checkbox: FieldCheckbox,\n /** Switch toggle field */\n Switch: FieldSwitch,\n /** Number input field */\n Number: FieldNumber,\n /** Radio button group field */\n Radio: FieldRadio,\n /** Autocomplete with search field */\n Autocomplete: FieldAutocomplete,\n /** Multiple selection with chips field */\n MultiSelect: FieldMultiSelect,\n /** Star rating field */\n Rating: FieldRating,\n /** Range slider field */\n Slider: FieldSlider,\n /** Date picker field (MUI X) */\n DatePicker: FieldDatePicker,\n\n // New fields (v0.4.0)\n /** Time picker field (MUI X) */\n TimePicker: FieldTimePicker,\n /** Combined date-time picker field (MUI X) */\n DateTimePicker: FieldDateTimePicker,\n /** Multiple checkbox group field */\n MultiCheckbox: FieldMultiCheckbox,\n /** Multiple switch group field */\n MultiSwitch: FieldMultiSwitch,\n /** OTP/PIN code input field */\n Code: FieldCode,\n /** File upload with dropzone */\n Upload: FieldUpload,\n /** Compact file upload box */\n UploadBox: FieldUploadBox,\n /** Circular avatar upload */\n UploadAvatar: FieldUploadAvatar,\n /** International phone input */\n Phone: FieldPhone,\n /** Country selector with flags */\n CountrySelect: FieldCountrySelect,\n\n // Editor fields (v0.4.0)\n /** Rich text editor (with textarea fallback or custom editor) */\n Editor: FieldEditor,\n /** Headless editor field with render prop */\n CustomEditor: FieldCustomEditor,\n} as const;\n\n// =============================================================================\n// INDIVIDUAL EXPORTS\n// =============================================================================\n\n// Also export individual components for those who prefer direct imports\nexport {\n // Base fields\n FieldText,\n FieldSelect,\n FieldCheckbox,\n FieldSwitch,\n FieldNumber,\n FieldRadio,\n FieldAutocomplete,\n FieldMultiSelect,\n FieldRating,\n FieldSlider,\n FieldDatePicker,\n // New fields (v0.4.0)\n FieldTimePicker,\n FieldDateTimePicker,\n FieldMultiCheckbox,\n FieldMultiSwitch,\n FieldCode,\n FieldUpload,\n FieldUploadBox,\n FieldUploadAvatar,\n FieldPhone,\n FieldCountrySelect,\n // Editor fields (v0.4.0)\n FieldEditor,\n FieldCustomEditor,\n};\n"]}