@od-oneapp/uni-ui 2026.1.1301

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 (1253) hide show
  1. package/README.md +753 -0
  2. package/dist/actions-C-SEx2GS.mjs +180 -0
  3. package/dist/actions-C-SEx2GS.mjs.map +1 -0
  4. package/dist/actions-Ch7h6cYC.d.mts +50 -0
  5. package/dist/actions-Cnupw96c.d.mts +50 -0
  6. package/dist/alert-BVUF7Xzb.d.mts +22 -0
  7. package/dist/alert-BuPyEXF-.mjs +206 -0
  8. package/dist/alert-BuPyEXF-.mjs.map +1 -0
  9. package/dist/alert-CfjDnZpm.d.mts +22 -0
  10. package/dist/animated-size-container-DSKNt1Cn.mjs +106 -0
  11. package/dist/animated-size-container-DSKNt1Cn.mjs.map +1 -0
  12. package/dist/areas-CtE8w69A.mjs +144 -0
  13. package/dist/areas-CtE8w69A.mjs.map +1 -0
  14. package/dist/areas-DtGnjGuX.d.mts +22 -0
  15. package/dist/auth-nav-user-CRxDpY_7.d.mts +30 -0
  16. package/dist/auth-nav-user-DPFv8dTp.mjs +181 -0
  17. package/dist/auth-nav-user-DPFv8dTp.mjs.map +1 -0
  18. package/dist/avatar-DjiX7nT8.mjs +202 -0
  19. package/dist/avatar-DjiX7nT8.mjs.map +1 -0
  20. package/dist/badge-CGTN2VG0.d.mts +25 -0
  21. package/dist/badge-CVoIuyYX.mjs +242 -0
  22. package/dist/badge-CVoIuyYX.mjs.map +1 -0
  23. package/dist/badge-DH0tY3wJ.d.mts +25 -0
  24. package/dist/bars-CWTAPKgm.d.mts +20 -0
  25. package/dist/bars-DOLvecrq.mjs +125 -0
  26. package/dist/bars-DOLvecrq.mjs.map +1 -0
  27. package/dist/branch-BEl6eS77.mjs +323 -0
  28. package/dist/branch-BEl6eS77.mjs.map +1 -0
  29. package/dist/branch-BtdY_TLE.d.mts +58 -0
  30. package/dist/branch-Duq6cW0s.d.mts +58 -0
  31. package/dist/button-BAdq0gBE.d.mts +31 -0
  32. package/dist/button-DVOrrZLw.mjs +632 -0
  33. package/dist/button-DVOrrZLw.mjs.map +1 -0
  34. package/dist/button-DnjeAftr.d.mts +31 -0
  35. package/dist/carousel-D-J1Zgn1.d.mts +49 -0
  36. package/dist/carousel-Dx5AOW5k.mjs +345 -0
  37. package/dist/carousel-Dx5AOW5k.mjs.map +1 -0
  38. package/dist/carousel-sY0y1-or.d.mts +49 -0
  39. package/dist/chart-context-CLV35VLJ.mjs +27 -0
  40. package/dist/chart-context-CLV35VLJ.mjs.map +1 -0
  41. package/dist/checkbox-wiF-DV6q.mjs +194 -0
  42. package/dist/checkbox-wiF-DV6q.mjs.map +1 -0
  43. package/dist/code-block-Cg_XtPH7.mjs +243 -0
  44. package/dist/code-block-Cg_XtPH7.mjs.map +1 -0
  45. package/dist/collapsible-CRgTpRfr.d.mts +46 -0
  46. package/dist/collapsible-CXy4T04n.mjs +239 -0
  47. package/dist/collapsible-CXy4T04n.mjs.map +1 -0
  48. package/dist/combobox-DSrxSkSl.d.mts +79 -0
  49. package/dist/combobox-DYFh2eZf.d.mts +79 -0
  50. package/dist/combobox-uEKksQFR.mjs +410 -0
  51. package/dist/combobox-uEKksQFR.mjs.map +1 -0
  52. package/dist/command-xK3X_A9t.mjs +206 -0
  53. package/dist/command-xK3X_A9t.mjs.map +1 -0
  54. package/dist/components-ai-elements/actions/index.d.mts +5 -0
  55. package/dist/components-ai-elements/actions/index.mjs +4 -0
  56. package/dist/components-ai-elements/agent-step/index.d.mts +32 -0
  57. package/dist/components-ai-elements/agent-step/index.mjs +183 -0
  58. package/dist/components-ai-elements/agent-step/index.mjs.map +1 -0
  59. package/dist/components-ai-elements/artifact/index.d.mts +81 -0
  60. package/dist/components-ai-elements/artifact/index.mjs +153 -0
  61. package/dist/components-ai-elements/artifact/index.mjs.map +1 -0
  62. package/dist/components-ai-elements/branch/index.d.mts +5 -0
  63. package/dist/components-ai-elements/branch/index.mjs +4 -0
  64. package/dist/components-ai-elements/chain-of-thought/index.d.mts +90 -0
  65. package/dist/components-ai-elements/chain-of-thought/index.mjs +338 -0
  66. package/dist/components-ai-elements/chain-of-thought/index.mjs.map +1 -0
  67. package/dist/components-ai-elements/chat-input/index.d.mts +21 -0
  68. package/dist/components-ai-elements/chat-input/index.mjs +137 -0
  69. package/dist/components-ai-elements/chat-input/index.mjs.map +1 -0
  70. package/dist/components-ai-elements/checkpoint/index.d.mts +46 -0
  71. package/dist/components-ai-elements/checkpoint/index.mjs +161 -0
  72. package/dist/components-ai-elements/checkpoint/index.mjs.map +1 -0
  73. package/dist/components-ai-elements/code-block/index.d.mts +39 -0
  74. package/dist/components-ai-elements/code-block/index.mjs +4 -0
  75. package/dist/components-ai-elements/confirmation/index.d.mts +96 -0
  76. package/dist/components-ai-elements/confirmation/index.mjs +295 -0
  77. package/dist/components-ai-elements/confirmation/index.mjs.map +1 -0
  78. package/dist/components-ai-elements/context/index.d.mts +83 -0
  79. package/dist/components-ai-elements/context/index.mjs +456 -0
  80. package/dist/components-ai-elements/context/index.mjs.map +1 -0
  81. package/dist/components-ai-elements/conversation/index.d.mts +46 -0
  82. package/dist/components-ai-elements/conversation/index.mjs +180 -0
  83. package/dist/components-ai-elements/conversation/index.mjs.map +1 -0
  84. package/dist/components-ai-elements/custom/index.d.mts +1142 -0
  85. package/dist/components-ai-elements/custom/index.mjs +5578 -0
  86. package/dist/components-ai-elements/custom/index.mjs.map +1 -0
  87. package/dist/components-ai-elements/generative-ui/index.d.mts +4 -0
  88. package/dist/components-ai-elements/generative-ui/index.mjs +4 -0
  89. package/dist/components-ai-elements/image/index.d.mts +20 -0
  90. package/dist/components-ai-elements/image/index.mjs +121 -0
  91. package/dist/components-ai-elements/image/index.mjs.map +1 -0
  92. package/dist/components-ai-elements/inline-citation/index.d.mts +94 -0
  93. package/dist/components-ai-elements/inline-citation/index.mjs +371 -0
  94. package/dist/components-ai-elements/inline-citation/index.mjs.map +1 -0
  95. package/dist/components-ai-elements/loader/index.d.mts +24 -0
  96. package/dist/components-ai-elements/loader/index.mjs +4 -0
  97. package/dist/components-ai-elements/message/index.d.mts +153 -0
  98. package/dist/components-ai-elements/message/index.mjs +597 -0
  99. package/dist/components-ai-elements/message/index.mjs.map +1 -0
  100. package/dist/components-ai-elements/model-selector/index.d.mts +72 -0
  101. package/dist/components-ai-elements/model-selector/index.mjs +224 -0
  102. package/dist/components-ai-elements/model-selector/index.mjs.map +1 -0
  103. package/dist/components-ai-elements/open-in-chat/index.d.mts +64 -0
  104. package/dist/components-ai-elements/open-in-chat/index.mjs +502 -0
  105. package/dist/components-ai-elements/open-in-chat/index.mjs.map +1 -0
  106. package/dist/components-ai-elements/plan/index.d.mts +71 -0
  107. package/dist/components-ai-elements/plan/index.mjs +219 -0
  108. package/dist/components-ai-elements/plan/index.mjs.map +1 -0
  109. package/dist/components-ai-elements/prompt-char-counter/index.d.mts +19 -0
  110. package/dist/components-ai-elements/prompt-char-counter/index.mjs +116 -0
  111. package/dist/components-ai-elements/prompt-char-counter/index.mjs.map +1 -0
  112. package/dist/components-ai-elements/prompt-input/index.d.mts +386 -0
  113. package/dist/components-ai-elements/prompt-input/index.mjs +4 -0
  114. package/dist/components-ai-elements/queue/index.d.mts +121 -0
  115. package/dist/components-ai-elements/queue/index.mjs +284 -0
  116. package/dist/components-ai-elements/queue/index.mjs.map +1 -0
  117. package/dist/components-ai-elements/reasoning/index.d.mts +42 -0
  118. package/dist/components-ai-elements/reasoning/index.mjs +241 -0
  119. package/dist/components-ai-elements/reasoning/index.mjs.map +1 -0
  120. package/dist/components-ai-elements/shimmer/index.d.mts +23 -0
  121. package/dist/components-ai-elements/shimmer/index.mjs +4 -0
  122. package/dist/components-ai-elements/sources/index.d.mts +56 -0
  123. package/dist/components-ai-elements/sources/index.mjs +211 -0
  124. package/dist/components-ai-elements/sources/index.mjs.map +1 -0
  125. package/dist/components-ai-elements/suggestion/index.d.mts +40 -0
  126. package/dist/components-ai-elements/suggestion/index.mjs +145 -0
  127. package/dist/components-ai-elements/suggestion/index.mjs.map +1 -0
  128. package/dist/components-ai-elements/task/index.d.mts +70 -0
  129. package/dist/components-ai-elements/task/index.mjs +218 -0
  130. package/dist/components-ai-elements/task/index.mjs.map +1 -0
  131. package/dist/components-ai-elements/tool/index.d.mts +78 -0
  132. package/dist/components-ai-elements/tool/index.mjs +370 -0
  133. package/dist/components-ai-elements/tool/index.mjs.map +1 -0
  134. package/dist/components-ai-elements/tool-approval/index.d.mts +20 -0
  135. package/dist/components-ai-elements/tool-approval/index.mjs +252 -0
  136. package/dist/components-ai-elements/tool-approval/index.mjs.map +1 -0
  137. package/dist/components-ai-elements/web-preview/index.d.mts +136 -0
  138. package/dist/components-ai-elements/web-preview/index.mjs +773 -0
  139. package/dist/components-ai-elements/web-preview/index.mjs.map +1 -0
  140. package/dist/components-ai-elements-constants.d.mts +207 -0
  141. package/dist/components-ai-elements-constants.mjs +301 -0
  142. package/dist/components-ai-elements-constants.mjs.map +1 -0
  143. package/dist/components-ai-workflows/canvas/index.d.mts +22 -0
  144. package/dist/components-ai-workflows/canvas/index.mjs +135 -0
  145. package/dist/components-ai-workflows/canvas/index.mjs.map +1 -0
  146. package/dist/components-ai-workflows/connection/index.d.mts +22 -0
  147. package/dist/components-ai-workflows/connection/index.mjs +4 -0
  148. package/dist/components-ai-workflows/controls/index.d.mts +14 -0
  149. package/dist/components-ai-workflows/controls/index.mjs +89 -0
  150. package/dist/components-ai-workflows/controls/index.mjs.map +1 -0
  151. package/dist/components-ai-workflows/edge/index.d.mts +20 -0
  152. package/dist/components-ai-workflows/edge/index.mjs +102 -0
  153. package/dist/components-ai-workflows/edge/index.mjs.map +1 -0
  154. package/dist/components-ai-workflows/node/index.d.mts +3 -0
  155. package/dist/components-ai-workflows/node/index.mjs +4 -0
  156. package/dist/components-ai-workflows/panel/index.d.mts +15 -0
  157. package/dist/components-ai-workflows/panel/index.mjs +89 -0
  158. package/dist/components-ai-workflows/panel/index.mjs.map +1 -0
  159. package/dist/components-ai-workflows/resizable-node/index.d.mts +30 -0
  160. package/dist/components-ai-workflows/resizable-node/index.mjs +164 -0
  161. package/dist/components-ai-workflows/resizable-node/index.mjs.map +1 -0
  162. package/dist/components-ai-workflows/toolbar/index.d.mts +19 -0
  163. package/dist/components-ai-workflows/toolbar/index.mjs +91 -0
  164. package/dist/components-ai-workflows/toolbar/index.mjs.map +1 -0
  165. package/dist/components-auth-client-nav-user.d.mts +3 -0
  166. package/dist/components-auth-client-nav-user.mjs +4 -0
  167. package/dist/components-auth-client-providers.d.mts +13 -0
  168. package/dist/components-auth-client-providers.mjs +89 -0
  169. package/dist/components-auth-client-providers.mjs.map +1 -0
  170. package/dist/components-auth-client.d.mts +5 -0
  171. package/dist/components-auth-client.mjs +5 -0
  172. package/dist/components-auth-server.d.mts +1878 -0
  173. package/dist/components-auth-server.mjs +32769 -0
  174. package/dist/components-auth-server.mjs.map +1 -0
  175. package/dist/components-auth.d.mts +5 -0
  176. package/dist/components-auth.mjs +5 -0
  177. package/dist/components-charts/areas/index.d.mts +3 -0
  178. package/dist/components-charts/areas/index.mjs +4 -0
  179. package/dist/components-charts/bars/index.d.mts +3 -0
  180. package/dist/components-charts/bars/index.mjs +4 -0
  181. package/dist/components-charts/funnel-chart/index.d.mts +3 -0
  182. package/dist/components-charts/funnel-chart/index.mjs +4 -0
  183. package/dist/components-charts/mini-area-chart/index.d.mts +3 -0
  184. package/dist/components-charts/mini-area-chart/index.mjs +4 -0
  185. package/dist/components-charts/time-series-chart/index.d.mts +3 -0
  186. package/dist/components-charts/time-series-chart/index.mjs +4 -0
  187. package/dist/components-charts/tooltip-sync/index.d.mts +3 -0
  188. package/dist/components-charts/tooltip-sync/index.mjs +4 -0
  189. package/dist/components-charts/x-axis/index.d.mts +3 -0
  190. package/dist/components-charts/x-axis/index.mjs +4 -0
  191. package/dist/components-charts/y-axis/index.d.mts +3 -0
  192. package/dist/components-charts/y-axis/index.mjs +4 -0
  193. package/dist/components-elements-accordion.d.mts +59 -0
  194. package/dist/components-elements-accordion.mjs +275 -0
  195. package/dist/components-elements-accordion.mjs.map +1 -0
  196. package/dist/components-elements-alert.d.mts +3 -0
  197. package/dist/components-elements-alert.mjs +4 -0
  198. package/dist/components-elements-avatar.d.mts +24 -0
  199. package/dist/components-elements-avatar.mjs +4 -0
  200. package/dist/components-elements-badge.d.mts +4 -0
  201. package/dist/components-elements-badge.mjs +4 -0
  202. package/dist/components-elements-button.d.mts +4 -0
  203. package/dist/components-elements-button.mjs +4 -0
  204. package/dist/components-elements-card.d.mts +3 -0
  205. package/dist/components-elements-card.mjs +4 -0
  206. package/dist/components-elements-carousel.d.mts +5 -0
  207. package/dist/components-elements-carousel.mjs +4 -0
  208. package/dist/components-elements-chart.d.mts +24 -0
  209. package/dist/components-elements-chart.mjs +226 -0
  210. package/dist/components-elements-chart.mjs.map +1 -0
  211. package/dist/components-elements-collapsible.d.mts +3 -0
  212. package/dist/components-elements-collapsible.mjs +4 -0
  213. package/dist/components-elements-dialog.d.mts +3 -0
  214. package/dist/components-elements-dialog.mjs +4 -0
  215. package/dist/components-elements-dropdown-menu.d.mts +3 -0
  216. package/dist/components-elements-dropdown-menu.mjs +4 -0
  217. package/dist/components-elements-dynamic-breadcrumb.d.mts +16 -0
  218. package/dist/components-elements-dynamic-breadcrumb.mjs +4 -0
  219. package/dist/components-elements-empty.d.mts +18 -0
  220. package/dist/components-elements-empty.mjs +199 -0
  221. package/dist/components-elements-empty.mjs.map +1 -0
  222. package/dist/components-elements-hover-card.d.mts +3 -0
  223. package/dist/components-elements-hover-card.mjs +4 -0
  224. package/dist/components-elements-loading-dots.d.mts +3 -0
  225. package/dist/components-elements-loading-dots.mjs +4 -0
  226. package/dist/components-elements-pagination-controls.d.mts +28 -0
  227. package/dist/components-elements-pagination-controls.mjs +4 -0
  228. package/dist/components-elements-progress.d.mts +28 -0
  229. package/dist/components-elements-progress.mjs +4 -0
  230. package/dist/components-elements-resizable.d.mts +31 -0
  231. package/dist/components-elements-resizable.mjs +4 -0
  232. package/dist/components-elements-scroll-area.d.mts +3 -0
  233. package/dist/components-elements-scroll-area.mjs +4 -0
  234. package/dist/components-elements-separator.d.mts +3 -0
  235. package/dist/components-elements-separator.mjs +4 -0
  236. package/dist/components-elements-skeleton.d.mts +3 -0
  237. package/dist/components-elements-skeleton.mjs +4 -0
  238. package/dist/components-elements-status-badge.d.mts +22 -0
  239. package/dist/components-elements-status-badge.mjs +174 -0
  240. package/dist/components-elements-status-badge.mjs.map +1 -0
  241. package/dist/components-elements-table.d.mts +44 -0
  242. package/dist/components-elements-table.mjs +4 -0
  243. package/dist/components-elements-tabs.d.mts +43 -0
  244. package/dist/components-elements-tabs.mjs +435 -0
  245. package/dist/components-elements-tabs.mjs.map +1 -0
  246. package/dist/components-elements-tooltip.d.mts +3 -0
  247. package/dist/components-elements-tooltip.mjs +4 -0
  248. package/dist/components-filter/filter-list/index.d.mts +4 -0
  249. package/dist/components-filter/filter-list/index.mjs +4 -0
  250. package/dist/components-filter/filter-select/index.d.mts +4 -0
  251. package/dist/components-filter/filter-select/index.mjs +4 -0
  252. package/dist/components-forms/checkbox/index.d.mts +27 -0
  253. package/dist/components-forms/checkbox/index.mjs +4 -0
  254. package/dist/components-forms/combobox/index.d.mts +5 -0
  255. package/dist/components-forms/combobox/index.mjs +4 -0
  256. package/dist/components-forms/date-picker/index.d.mts +3 -0
  257. package/dist/components-forms/date-picker/index.mjs +4 -0
  258. package/dist/components-forms/file-upload/index.d.mts +49 -0
  259. package/dist/components-forms/file-upload/index.mjs +323 -0
  260. package/dist/components-forms/file-upload/index.mjs.map +1 -0
  261. package/dist/components-forms/input/index.d.mts +3 -0
  262. package/dist/components-forms/input/index.mjs +4 -0
  263. package/dist/components-forms/input-group/index.d.mts +5 -0
  264. package/dist/components-forms/input-group/index.mjs +4 -0
  265. package/dist/components-forms/label/index.d.mts +23 -0
  266. package/dist/components-forms/label/index.mjs +4 -0
  267. package/dist/components-forms/radio-group/index.d.mts +29 -0
  268. package/dist/components-forms/radio-group/index.mjs +215 -0
  269. package/dist/components-forms/radio-group/index.mjs.map +1 -0
  270. package/dist/components-forms/select/index.d.mts +3 -0
  271. package/dist/components-forms/select/index.mjs +4 -0
  272. package/dist/components-forms/switch/index.d.mts +30 -0
  273. package/dist/components-forms/switch/index.mjs +4 -0
  274. package/dist/components-forms/textarea/index.d.mts +19 -0
  275. package/dist/components-forms/textarea/index.mjs +4 -0
  276. package/dist/components-layout/app-sidebar/index.d.mts +47 -0
  277. package/dist/components-layout/app-sidebar/index.mjs +340 -0
  278. package/dist/components-layout/app-sidebar/index.mjs.map +1 -0
  279. package/dist/components-layout/artifact-panel/index.d.mts +3 -0
  280. package/dist/components-layout/artifact-panel/index.mjs +4 -0
  281. package/dist/components-layout/content-sidebar/index.d.mts +89 -0
  282. package/dist/components-layout/content-sidebar/index.mjs +202 -0
  283. package/dist/components-layout/content-sidebar/index.mjs.map +1 -0
  284. package/dist/components-layout/nav-app-switcher/index.d.mts +3 -0
  285. package/dist/components-layout/nav-app-switcher/index.mjs +4 -0
  286. package/dist/components-layout/nav-main/index.d.mts +30 -0
  287. package/dist/components-layout/nav-main/index.mjs +4 -0
  288. package/dist/components-layout/nav-projects/index.d.mts +18 -0
  289. package/dist/components-layout/nav-projects/index.mjs +153 -0
  290. package/dist/components-layout/nav-projects/index.mjs.map +1 -0
  291. package/dist/components-layout/nav-secondary/index.d.mts +31 -0
  292. package/dist/components-layout/nav-secondary/index.mjs +4 -0
  293. package/dist/components-layout/nav-user/index.d.mts +17 -0
  294. package/dist/components-layout/nav-user/index.mjs +4 -0
  295. package/dist/components-layout/oneapp/index.mjs +4 -0
  296. package/dist/components-layout/sidebar/index.d.mts +8 -0
  297. package/dist/components-layout/sidebar/index.mjs +4 -0
  298. package/dist/components-layout/sidebar-inset-header-portal/index.d.mts +3 -0
  299. package/dist/components-layout/sidebar-inset-header-portal/index.mjs +4 -0
  300. package/dist/components-layout/sidebar-slots/index.d.mts +3 -0
  301. package/dist/components-layout/sidebar-slots/index.mjs +4 -0
  302. package/dist/components-layout/theme-provider/index.d.mts +15 -0
  303. package/dist/components-layout/theme-provider/index.mjs +4 -0
  304. package/dist/components-layout-app-shell.d.mts +83 -0
  305. package/dist/components-layout-app-shell.mjs +185 -0
  306. package/dist/components-layout-app-shell.mjs.map +1 -0
  307. package/dist/components-layout-oneapp.d.mts +84 -0
  308. package/dist/components-layout-oneapp.mjs +4 -0
  309. package/dist/components-overlays-confirm-dialog.d.mts +38 -0
  310. package/dist/components-overlays-confirm-dialog.mjs +145 -0
  311. package/dist/components-overlays-confirm-dialog.mjs.map +1 -0
  312. package/dist/components-overlays-toast.d.mts +16 -0
  313. package/dist/components-overlays-toast.mjs +127 -0
  314. package/dist/components-overlays-toast.mjs.map +1 -0
  315. package/dist/connection-D_kWZtAX.mjs +105 -0
  316. package/dist/connection-D_kWZtAX.mjs.map +1 -0
  317. package/dist/dark-mode-B4L-MZr7.mjs +288 -0
  318. package/dist/dark-mode-B4L-MZr7.mjs.map +1 -0
  319. package/dist/dark-mode-CYb7lJ6G.d.mts +191 -0
  320. package/dist/date-range-picker-CdemRFs_.mjs +676 -0
  321. package/dist/date-range-picker-CdemRFs_.mjs.map +1 -0
  322. package/dist/dialog-Di5QhIga.d.mts +31 -0
  323. package/dist/dialog-DuluSpxA.mjs +293 -0
  324. package/dist/dialog-DuluSpxA.mjs.map +1 -0
  325. package/dist/dropdown-menu-91g1g_Cl.mjs +379 -0
  326. package/dist/dropdown-menu-91g1g_Cl.mjs.map +1 -0
  327. package/dist/dropdown-menu-CwRZCnNs.d.mts +91 -0
  328. package/dist/dynamic-breadcrumb-33t_hdEI.mjs +385 -0
  329. package/dist/dynamic-breadcrumb-33t_hdEI.mjs.map +1 -0
  330. package/dist/error-boundary-Ggc5btkU.mjs +297 -0
  331. package/dist/error-boundary-Ggc5btkU.mjs.map +1 -0
  332. package/dist/filter-list-BMT7Nrli.d.mts +27 -0
  333. package/dist/filter-list-B_9aV5Lp.mjs +279 -0
  334. package/dist/filter-list-B_9aV5Lp.mjs.map +1 -0
  335. package/dist/filter-select-COLb1S5z.d.mts +34 -0
  336. package/dist/filter-select-CYfBhJ_E.mjs +341 -0
  337. package/dist/filter-select-CYfBhJ_E.mjs.map +1 -0
  338. package/dist/fonts.d.mts +22 -0
  339. package/dist/fonts.mjs +104 -0
  340. package/dist/fonts.mjs.map +1 -0
  341. package/dist/funnel-chart-CUpUr1pl.d.mts +22 -0
  342. package/dist/funnel-chart-fdwagDvc.mjs +318 -0
  343. package/dist/funnel-chart-fdwagDvc.mjs.map +1 -0
  344. package/dist/generative-ui-renderer-D0ZgNRZF.mjs +484 -0
  345. package/dist/generative-ui-renderer-D0ZgNRZF.mjs.map +1 -0
  346. package/dist/generative-ui-renderer-D69qYK0D.d.mts +32 -0
  347. package/dist/hooks/index.d.mts +5 -0
  348. package/dist/hooks/index.mjs +6 -0
  349. package/dist/hooks/use-mobile.d.mts +6 -0
  350. package/dist/hooks/use-mobile.mjs +45 -0
  351. package/dist/hooks/use-mobile.mjs.map +1 -0
  352. package/dist/hooks/use-responsive.d.mts +13 -0
  353. package/dist/hooks/use-responsive.mjs +50 -0
  354. package/dist/hooks/use-responsive.mjs.map +1 -0
  355. package/dist/hooks/use-scroll-progress.d.mts +17 -0
  356. package/dist/hooks/use-scroll-progress.mjs +62 -0
  357. package/dist/hooks/use-scroll-progress.mjs.map +1 -0
  358. package/dist/hooks/use-toast.d.mts +21 -0
  359. package/dist/hooks/use-toast.mjs +40 -0
  360. package/dist/hooks/use-toast.mjs.map +1 -0
  361. package/dist/hover-card-BqEpbXMp.d.mts +31 -0
  362. package/dist/hover-card-nn4fjJOh.mjs +161 -0
  363. package/dist/hover-card-nn4fjJOh.mjs.map +1 -0
  364. package/dist/index-AwyfWaOP.d.mts +60 -0
  365. package/dist/index.d.mts +503 -0
  366. package/dist/index.mjs +2158 -0
  367. package/dist/index.mjs.map +1 -0
  368. package/dist/input-CT1C9DMs.d.mts +19 -0
  369. package/dist/input-D0T5jbR6.d.mts +19 -0
  370. package/dist/input-DhpkXN3J.mjs +176 -0
  371. package/dist/input-DhpkXN3J.mjs.map +1 -0
  372. package/dist/input-group-CTBpkGI9.mjs +231 -0
  373. package/dist/input-group-CTBpkGI9.mjs.map +1 -0
  374. package/dist/input-group-DcDPUaQ3.d.mts +20 -0
  375. package/dist/input-group-VSZJM_on.d.mts +20 -0
  376. package/dist/integrations-COjiOhkd.d.mts +60 -0
  377. package/dist/integrations-Doz6nfxm.d.mts +60 -0
  378. package/dist/integrations-lBG309ZD.mjs +471 -0
  379. package/dist/integrations-lBG309ZD.mjs.map +1 -0
  380. package/dist/label-DnUThLUR.mjs +148 -0
  381. package/dist/label-DnUThLUR.mjs.map +1 -0
  382. package/dist/lib/export-csv.d.mts +12 -0
  383. package/dist/lib/export-csv.mjs +63 -0
  384. package/dist/lib/export-csv.mjs.map +1 -0
  385. package/dist/lib/index.d.mts +6 -0
  386. package/dist/lib/index.mjs +7 -0
  387. package/dist/lib/resize-image.d.mts +11 -0
  388. package/dist/lib/resize-image.mjs +66 -0
  389. package/dist/lib/resize-image.mjs.map +1 -0
  390. package/dist/lib/stable-sort.d.mts +6 -0
  391. package/dist/lib/stable-sort.mjs +33 -0
  392. package/dist/lib/stable-sort.mjs.map +1 -0
  393. package/dist/lib/utils.d.mts +8 -0
  394. package/dist/lib/utils.mjs +4 -0
  395. package/dist/lib-utils.mjs +4 -0
  396. package/dist/loader-B2SF0yPJ.mjs +168 -0
  397. package/dist/loader-B2SF0yPJ.mjs.map +1 -0
  398. package/dist/loading-dots-DJfxDgv3.mjs +119 -0
  399. package/dist/loading-dots-DJfxDgv3.mjs.map +1 -0
  400. package/dist/loading-dots-DvR1lwC-.d.mts +11 -0
  401. package/dist/mini-area-chart-GIUU-ZLo.d.mts +30 -0
  402. package/dist/mini-area-chart-s5ItHBk8.mjs +225 -0
  403. package/dist/mini-area-chart-s5ItHBk8.mjs.map +1 -0
  404. package/dist/motion-DLlwbMJ0.d.mts +33 -0
  405. package/dist/motion-zelaDelJ.mjs +47 -0
  406. package/dist/motion-zelaDelJ.mjs.map +1 -0
  407. package/dist/nav-app-switcher-B1NTlYrm.d.mts +43 -0
  408. package/dist/nav-app-switcher-V7aJAC18.mjs +235 -0
  409. package/dist/nav-app-switcher-V7aJAC18.mjs.map +1 -0
  410. package/dist/nav-main-BscfzNoi.mjs +105 -0
  411. package/dist/nav-main-BscfzNoi.mjs.map +1 -0
  412. package/dist/nav-secondary-t-xeA0I4.mjs +51 -0
  413. package/dist/nav-secondary-t-xeA0I4.mjs.map +1 -0
  414. package/dist/nav-user-A4YHm3-O.mjs +193 -0
  415. package/dist/nav-user-A4YHm3-O.mjs.map +1 -0
  416. package/dist/node-BKXOPjw9.d.mts +100 -0
  417. package/dist/node-CdmDD4k-.mjs +116 -0
  418. package/dist/node-CdmDD4k-.mjs.map +1 -0
  419. package/dist/oneapp-CfwhNatF.mjs +322 -0
  420. package/dist/oneapp-CfwhNatF.mjs.map +1 -0
  421. package/dist/pagination-controls-CE3-eCxI.mjs +135 -0
  422. package/dist/pagination-controls-CE3-eCxI.mjs.map +1 -0
  423. package/dist/popover-DmWxl2lW.mjs +198 -0
  424. package/dist/popover-DmWxl2lW.mjs.map +1 -0
  425. package/dist/preview.d.mts +6 -0
  426. package/dist/progress-BWxdthl4.mjs +230 -0
  427. package/dist/progress-BWxdthl4.mjs.map +1 -0
  428. package/dist/prompt-input-SFJ9_lNw.mjs +1149 -0
  429. package/dist/prompt-input-SFJ9_lNw.mjs.map +1 -0
  430. package/dist/resizable--DaTse0W.mjs +124 -0
  431. package/dist/resizable--DaTse0W.mjs.map +1 -0
  432. package/dist/scroll-area-Bxi-Edjc.mjs +139 -0
  433. package/dist/scroll-area-Bxi-Edjc.mjs.map +1 -0
  434. package/dist/scroll-area-CDRGG59G.d.mts +19 -0
  435. package/dist/select-DI6PzHN3.mjs +411 -0
  436. package/dist/select-DI6PzHN3.mjs.map +1 -0
  437. package/dist/select-csqviwUw.d.mts +44 -0
  438. package/dist/separator-BG9BqZqg.d.mts +20 -0
  439. package/dist/separator-CNQqqwfO.d.mts +20 -0
  440. package/dist/separator-veJJBul5.mjs +118 -0
  441. package/dist/separator-veJJBul5.mjs.map +1 -0
  442. package/dist/shared-BqVcofZN.d.mts +91 -0
  443. package/dist/shared-auth.d.mts +5 -0
  444. package/dist/shared-auth.mjs +6 -0
  445. package/dist/shimmer-BLRAD4VL.mjs +102 -0
  446. package/dist/shimmer-BLRAD4VL.mjs.map +1 -0
  447. package/dist/sidebar-CPteoqnB.d.mts +163 -0
  448. package/dist/sidebar-CdWE7H3R.mjs +814 -0
  449. package/dist/sidebar-CdWE7H3R.mjs.map +1 -0
  450. package/dist/sidebar-DYgXCHqQ.d.mts +163 -0
  451. package/dist/sidebar-inset-header-portal-CIRN-lKw.mjs +153 -0
  452. package/dist/sidebar-inset-header-portal-CIRN-lKw.mjs.map +1 -0
  453. package/dist/sidebar-inset-header-portal-DjfK7xCt.d.mts +24 -0
  454. package/dist/sidebar-slots-DNCEnx5L.mjs +135 -0
  455. package/dist/sidebar-slots-DNCEnx5L.mjs.map +1 -0
  456. package/dist/sidebar-slots-OqNmzlIk.d.mts +47 -0
  457. package/dist/skeleton-ByXUFNDF.d.mts +35 -0
  458. package/dist/skeleton-aXwA3YID.mjs +211 -0
  459. package/dist/skeleton-aXwA3YID.mjs.map +1 -0
  460. package/dist/sources.css +16 -0
  461. package/dist/storybook-preview.mjs +184 -0
  462. package/dist/storybook-preview.mjs.map +1 -0
  463. package/dist/styles/colors.css +166 -0
  464. package/dist/styles/index.css +2 -0
  465. package/dist/styles/mantine.css +1024 -0
  466. package/dist/styles/spacing.css +62 -0
  467. package/dist/styles/theme.css +1687 -0
  468. package/dist/styles/typography.css +59 -0
  469. package/dist/styles/variables.css +998 -0
  470. package/dist/styles.css +1 -0
  471. package/dist/switch-BFct1r4a.mjs +223 -0
  472. package/dist/switch-BFct1r4a.mjs.map +1 -0
  473. package/dist/table-DNkLM1TB.mjs +261 -0
  474. package/dist/table-DNkLM1TB.mjs.map +1 -0
  475. package/dist/textarea-MpLFc9sB.mjs +173 -0
  476. package/dist/textarea-MpLFc9sB.mjs.map +1 -0
  477. package/dist/theme-provider-4D34sBmG.mjs +83 -0
  478. package/dist/theme-provider-4D34sBmG.mjs.map +1 -0
  479. package/dist/time-series-chart-B66xH88w.d.mts +69 -0
  480. package/dist/time-series-chart-DxnknDhW.mjs +400 -0
  481. package/dist/time-series-chart-DxnknDhW.mjs.map +1 -0
  482. package/dist/tokens/tokens.dtcg.json +4353 -0
  483. package/dist/tokens/tokens.json +895 -0
  484. package/dist/tokens-mantine-types.d.mts +3 -0
  485. package/dist/tokens-mantine-types.mjs +4 -0
  486. package/dist/tokens.css +2 -0
  487. package/dist/tokens.d.mts +9398 -0
  488. package/dist/tokens.mjs +9311 -0
  489. package/dist/tokens.mjs.map +1 -0
  490. package/dist/tooltip-B8_zKnHC.mjs +301 -0
  491. package/dist/tooltip-B8_zKnHC.mjs.map +1 -0
  492. package/dist/tooltip-BA27ygge.d.mts +44 -0
  493. package/dist/tooltip-FqB3srL-.d.mts +44 -0
  494. package/dist/tooltip-sync-Ax1GmpjC.d.mts +17 -0
  495. package/dist/tooltip-sync-DzJUgiTM.mjs +85 -0
  496. package/dist/tooltip-sync-DzJUgiTM.mjs.map +1 -0
  497. package/dist/types-B8z57DW2.d.mts +41 -0
  498. package/dist/use-artifact-panel-state-CUQTn2Uq.mjs +346 -0
  499. package/dist/use-artifact-panel-state-CUQTn2Uq.mjs.map +1 -0
  500. package/dist/use-artifact-panel-state-DPZC--sz.d.mts +150 -0
  501. package/dist/utils-BJGrUJ6T.mjs +77 -0
  502. package/dist/utils-BJGrUJ6T.mjs.map +1 -0
  503. package/dist/utils-D2bGp2p_.mjs +33 -0
  504. package/dist/utils-D2bGp2p_.mjs.map +1 -0
  505. package/dist/x-axis-BY00htJY.mjs +137 -0
  506. package/dist/x-axis-BY00htJY.mjs.map +1 -0
  507. package/dist/x-axis-Dh66iD8l.d.mts +21 -0
  508. package/dist/y-axis-DgHlVHRG.mjs +118 -0
  509. package/dist/y-axis-DgHlVHRG.mjs.map +1 -0
  510. package/dist/y-axis-DocBbrSp.d.mts +23 -0
  511. package/dist/z-index-BlBlZL-F.d.mts +10775 -0
  512. package/package.json +429 -0
  513. package/src/ai-oneapp/flow-chat/index.ts +3 -0
  514. package/src/ai-oneapp/flow-chat/node-suggestion-card.tsx +37 -0
  515. package/src/ai-oneapp/flow-chat/template-suggestion-card.tsx +49 -0
  516. package/src/ai-oneapp/flow-chat/workflow-action-toast.tsx +55 -0
  517. package/src/components/.gitkeep +0 -0
  518. package/src/components/ai-elements/__tests__/test-utils.tsx +12 -0
  519. package/src/components/ai-elements/actions/actions.stories.tsx +288 -0
  520. package/src/components/ai-elements/actions/actions.test.tsx +60 -0
  521. package/src/components/ai-elements/actions/actions.tsx +286 -0
  522. package/src/components/ai-elements/actions/index.ts +7 -0
  523. package/src/components/ai-elements/agent-step/agent-step.stories.tsx +167 -0
  524. package/src/components/ai-elements/agent-step/agent-step.tsx +206 -0
  525. package/src/components/ai-elements/agent-step/index.ts +7 -0
  526. package/src/components/ai-elements/ai-elements.constants.ts +516 -0
  527. package/src/components/ai-elements/artifact/artifact.stories.tsx +199 -0
  528. package/src/components/ai-elements/artifact/artifact.tsx +277 -0
  529. package/src/components/ai-elements/artifact/index.ts +7 -0
  530. package/src/components/ai-elements/branch/branch.stories.tsx +212 -0
  531. package/src/components/ai-elements/branch/branch.test.tsx +148 -0
  532. package/src/components/ai-elements/branch/branch.tsx +502 -0
  533. package/src/components/ai-elements/branch/index.ts +7 -0
  534. package/src/components/ai-elements/chain-of-thought/chain-of-thought.stories.tsx +172 -0
  535. package/src/components/ai-elements/chain-of-thought/chain-of-thought.tsx +505 -0
  536. package/src/components/ai-elements/chain-of-thought/index.ts +7 -0
  537. package/src/components/ai-elements/chat-input/chat-input.stories.tsx +185 -0
  538. package/src/components/ai-elements/chat-input/chat-input.tsx +201 -0
  539. package/src/components/ai-elements/chat-input/index.ts +7 -0
  540. package/src/components/ai-elements/checkpoint/checkpoint.stories.tsx +171 -0
  541. package/src/components/ai-elements/checkpoint/checkpoint.tsx +256 -0
  542. package/src/components/ai-elements/checkpoint/index.ts +7 -0
  543. package/src/components/ai-elements/code-block/code-block.stories.tsx +317 -0
  544. package/src/components/ai-elements/code-block/code-block.tsx +366 -0
  545. package/src/components/ai-elements/code-block/index.ts +7 -0
  546. package/src/components/ai-elements/confirmation/confirmation.stories.tsx +236 -0
  547. package/src/components/ai-elements/confirmation/confirmation.tsx +465 -0
  548. package/src/components/ai-elements/confirmation/index.ts +7 -0
  549. package/src/components/ai-elements/context/context.stories.tsx +80 -0
  550. package/src/components/ai-elements/context/context.tsx +585 -0
  551. package/src/components/ai-elements/context/index.ts +7 -0
  552. package/src/components/ai-elements/conversation/__tests__/conversation.test.tsx +402 -0
  553. package/src/components/ai-elements/conversation/conversation.stories.tsx +1019 -0
  554. package/src/components/ai-elements/conversation/conversation.tsx +260 -0
  555. package/src/components/ai-elements/conversation/index.ts +7 -0
  556. package/src/components/ai-elements/custom/__tests__/accessibility.test.tsx +27 -0
  557. package/src/components/ai-elements/custom/__tests__/chat-container.test.tsx +30 -0
  558. package/src/components/ai-elements/custom/__tests__/conversation-history.test.tsx +100 -0
  559. package/src/components/ai-elements/custom/__tests__/export-dropdown.test.tsx +60 -0
  560. package/src/components/ai-elements/custom/ai-label/ai-label.stories.tsx +86 -0
  561. package/src/components/ai-elements/custom/ai-label/ai-label.tsx +291 -0
  562. package/src/components/ai-elements/custom/ai-label/index.ts +7 -0
  563. package/src/components/ai-elements/custom/artifact-skeleton/artifact-skeleton.stories.tsx +155 -0
  564. package/src/components/ai-elements/custom/artifact-skeleton/artifact-skeleton.tsx +269 -0
  565. package/src/components/ai-elements/custom/artifact-skeleton/index.ts +18 -0
  566. package/src/components/ai-elements/custom/audio-player/audio-player.stories.tsx +50 -0
  567. package/src/components/ai-elements/custom/audio-player/audio-player.tsx +296 -0
  568. package/src/components/ai-elements/custom/audio-player/index.ts +1 -0
  569. package/src/components/ai-elements/custom/button-group/button-group.stories.tsx +108 -0
  570. package/src/components/ai-elements/custom/button-group/button-group.tsx +142 -0
  571. package/src/components/ai-elements/custom/button-group/index.ts +15 -0
  572. package/src/components/ai-elements/custom/chat-container/chat-container.stories.tsx +143 -0
  573. package/src/components/ai-elements/custom/chat-container/chat-container.tsx +406 -0
  574. package/src/components/ai-elements/custom/chat-container/index.ts +9 -0
  575. package/src/components/ai-elements/custom/collapsible/collapsible.stories.tsx +130 -0
  576. package/src/components/ai-elements/custom/collapsible/index.ts +11 -0
  577. package/src/components/ai-elements/custom/collapsible/use-collapsible.tsx +240 -0
  578. package/src/components/ai-elements/custom/collapsible-content/collapsible-content.stories.tsx +113 -0
  579. package/src/components/ai-elements/custom/collapsible-content/collapsible-content.tsx +141 -0
  580. package/src/components/ai-elements/custom/collapsible-content/index.ts +7 -0
  581. package/src/components/ai-elements/custom/content-placeholder/content-placeholder.stories.tsx +82 -0
  582. package/src/components/ai-elements/custom/content-placeholder/content-placeholder.tsx +319 -0
  583. package/src/components/ai-elements/custom/content-placeholder/index.ts +10 -0
  584. package/src/components/ai-elements/custom/conversation-header/conversation-header.stories.tsx +102 -0
  585. package/src/components/ai-elements/custom/conversation-header/conversation-header.tsx +202 -0
  586. package/src/components/ai-elements/custom/conversation-header/index.ts +12 -0
  587. package/src/components/ai-elements/custom/conversation-history/conversation-history.stories.tsx +191 -0
  588. package/src/components/ai-elements/custom/conversation-history/conversation-history.tsx +515 -0
  589. package/src/components/ai-elements/custom/conversation-history/index.ts +16 -0
  590. package/src/components/ai-elements/custom/diff-view/diff-view.stories.tsx +173 -0
  591. package/src/components/ai-elements/custom/diff-view/diff-view.tsx +261 -0
  592. package/src/components/ai-elements/custom/diff-view/index.ts +7 -0
  593. package/src/components/ai-elements/custom/draggable-tabs/draggable-tabs.stories.tsx +157 -0
  594. package/src/components/ai-elements/custom/draggable-tabs/draggable-tabs.tsx +311 -0
  595. package/src/components/ai-elements/custom/draggable-tabs/index.ts +7 -0
  596. package/src/components/ai-elements/custom/export-conversation/export-conversation.stories.tsx +73 -0
  597. package/src/components/ai-elements/custom/export-conversation/export-conversation.tsx +405 -0
  598. package/src/components/ai-elements/custom/export-conversation/index.ts +10 -0
  599. package/src/components/ai-elements/custom/export-dropdown/export-dropdown.stories.tsx +121 -0
  600. package/src/components/ai-elements/custom/export-dropdown/export-dropdown.tsx +315 -0
  601. package/src/components/ai-elements/custom/export-dropdown/index.ts +11 -0
  602. package/src/components/ai-elements/custom/feedback/feedback.stories.tsx +85 -0
  603. package/src/components/ai-elements/custom/feedback/feedback.tsx +425 -0
  604. package/src/components/ai-elements/custom/feedback/index.ts +13 -0
  605. package/src/components/ai-elements/custom/file-card/file-card.stories.tsx +65 -0
  606. package/src/components/ai-elements/custom/file-card/file-card.tsx +249 -0
  607. package/src/components/ai-elements/custom/file-card/index.ts +1 -0
  608. package/src/components/ai-elements/custom/file-tree/file-tree.stories.tsx +96 -0
  609. package/src/components/ai-elements/custom/file-tree/file-tree.tsx +266 -0
  610. package/src/components/ai-elements/custom/file-tree/index.ts +7 -0
  611. package/src/components/ai-elements/custom/index.ts +73 -0
  612. package/src/components/ai-elements/custom/keyboard-shortcut/index.ts +14 -0
  613. package/src/components/ai-elements/custom/keyboard-shortcut/keyboard-shortcut.stories.tsx +118 -0
  614. package/src/components/ai-elements/custom/keyboard-shortcut/keyboard-shortcut.tsx +292 -0
  615. package/src/components/ai-elements/custom/message-edit/index.ts +1 -0
  616. package/src/components/ai-elements/custom/message-edit/message-edit.stories.tsx +88 -0
  617. package/src/components/ai-elements/custom/message-edit/message-edit.tsx +225 -0
  618. package/src/components/ai-elements/custom/message-error/index.ts +7 -0
  619. package/src/components/ai-elements/custom/message-error/message-error.stories.tsx +85 -0
  620. package/src/components/ai-elements/custom/message-error/message-error.tsx +301 -0
  621. package/src/components/ai-elements/custom/message-group/index.ts +1 -0
  622. package/src/components/ai-elements/custom/message-group/message-group.stories.tsx +82 -0
  623. package/src/components/ai-elements/custom/message-group/message-group.tsx +77 -0
  624. package/src/components/ai-elements/custom/message-separator/index.ts +1 -0
  625. package/src/components/ai-elements/custom/message-separator/message-separator.stories.tsx +65 -0
  626. package/src/components/ai-elements/custom/message-separator/message-separator.tsx +132 -0
  627. package/src/components/ai-elements/custom/scroll-to-bottom/index.ts +11 -0
  628. package/src/components/ai-elements/custom/scroll-to-bottom/scroll-to-bottom.stories.tsx +116 -0
  629. package/src/components/ai-elements/custom/scroll-to-bottom/use-scroll-to-bottom.tsx +215 -0
  630. package/src/components/ai-elements/custom/snippet/index.ts +1 -0
  631. package/src/components/ai-elements/custom/snippet/snippet.stories.tsx +59 -0
  632. package/src/components/ai-elements/custom/snippet/snippet.tsx +158 -0
  633. package/src/components/ai-elements/custom/stack-trace/index.ts +1 -0
  634. package/src/components/ai-elements/custom/stack-trace/stack-trace.stories.tsx +112 -0
  635. package/src/components/ai-elements/custom/stack-trace/stack-trace.tsx +368 -0
  636. package/src/components/ai-elements/custom/terminal/index.ts +9 -0
  637. package/src/components/ai-elements/custom/terminal/terminal.stories.tsx +92 -0
  638. package/src/components/ai-elements/custom/terminal/terminal.tsx +233 -0
  639. package/src/components/ai-elements/custom/test-results/test-results.tsx +438 -0
  640. package/src/components/ai-elements/custom/thought-chain/index.ts +7 -0
  641. package/src/components/ai-elements/custom/thought-chain/thought-chain.stories.tsx +123 -0
  642. package/src/components/ai-elements/custom/thought-chain/thought-chain.tsx +246 -0
  643. package/src/components/ai-elements/custom/token-usage/index.ts +6 -0
  644. package/src/components/ai-elements/custom/token-usage/token-usage.stories.tsx +104 -0
  645. package/src/components/ai-elements/custom/token-usage/token-usage.tsx +236 -0
  646. package/src/components/ai-elements/custom/transcription/index.ts +1 -0
  647. package/src/components/ai-elements/custom/transcription/transcription.stories.tsx +80 -0
  648. package/src/components/ai-elements/custom/transcription/transcription.tsx +163 -0
  649. package/src/components/ai-elements/custom/typing-indicator/index.ts +1 -0
  650. package/src/components/ai-elements/custom/typing-indicator/typing-indicator.stories.tsx +71 -0
  651. package/src/components/ai-elements/custom/typing-indicator/typing-indicator.tsx +126 -0
  652. package/src/components/ai-elements/custom/undo-redo/index.ts +12 -0
  653. package/src/components/ai-elements/custom/undo-redo/undo-redo.stories.tsx +145 -0
  654. package/src/components/ai-elements/custom/undo-redo/use-undo-redo.tsx +324 -0
  655. package/src/components/ai-elements/custom/voice-selector/index.ts +7 -0
  656. package/src/components/ai-elements/custom/voice-selector/voice-selector.stories.tsx +67 -0
  657. package/src/components/ai-elements/custom/voice-selector/voice-selector.tsx +301 -0
  658. package/src/components/ai-elements/custom/welcome/index.ts +1 -0
  659. package/src/components/ai-elements/custom/welcome/welcome.stories.tsx +92 -0
  660. package/src/components/ai-elements/custom/welcome/welcome.tsx +213 -0
  661. package/src/components/ai-elements/generative-ui/generative-ui-renderer.stories.tsx +451 -0
  662. package/src/components/ai-elements/generative-ui/generative-ui-renderer.test.tsx +383 -0
  663. package/src/components/ai-elements/generative-ui/generative-ui-renderer.tsx +668 -0
  664. package/src/components/ai-elements/generative-ui/index.ts +21 -0
  665. package/src/components/ai-elements/image/image.stories.tsx +179 -0
  666. package/src/components/ai-elements/image/image.tsx +178 -0
  667. package/src/components/ai-elements/image/index.ts +7 -0
  668. package/src/components/ai-elements/index.ts +195 -0
  669. package/src/components/ai-elements/inline-citation/index.ts +7 -0
  670. package/src/components/ai-elements/inline-citation/inline-citation.stories.tsx +331 -0
  671. package/src/components/ai-elements/inline-citation/inline-citation.tsx +595 -0
  672. package/src/components/ai-elements/loader/index.ts +7 -0
  673. package/src/components/ai-elements/loader/loader.stories.tsx +185 -0
  674. package/src/components/ai-elements/loader/loader.tsx +177 -0
  675. package/src/components/ai-elements/message/__tests__/message.test.tsx +352 -0
  676. package/src/components/ai-elements/message/index.ts +7 -0
  677. package/src/components/ai-elements/message/message-actions.test.tsx +51 -0
  678. package/src/components/ai-elements/message/message.stories.tsx +609 -0
  679. package/src/components/ai-elements/message/message.test.tsx +52 -0
  680. package/src/components/ai-elements/message/message.tsx +1125 -0
  681. package/src/components/ai-elements/message/response.test.tsx +18 -0
  682. package/src/components/ai-elements/model-selector/index.ts +7 -0
  683. package/src/components/ai-elements/model-selector/model-selector.stories.tsx +198 -0
  684. package/src/components/ai-elements/model-selector/model-selector.tsx +406 -0
  685. package/src/components/ai-elements/modernization_walkthrough.md +51 -0
  686. package/src/components/ai-elements/open-in-chat/index.ts +7 -0
  687. package/src/components/ai-elements/open-in-chat/open-in-chat.stories.tsx +221 -0
  688. package/src/components/ai-elements/open-in-chat/open-in-chat.tsx +606 -0
  689. package/src/components/ai-elements/plan/index.ts +7 -0
  690. package/src/components/ai-elements/plan/plan.stories.tsx +233 -0
  691. package/src/components/ai-elements/plan/plan.tsx +337 -0
  692. package/src/components/ai-elements/prompt-char-counter/index.ts +7 -0
  693. package/src/components/ai-elements/prompt-char-counter/prompt-char-counter.stories.tsx +98 -0
  694. package/src/components/ai-elements/prompt-char-counter/prompt-char-counter.tsx +159 -0
  695. package/src/components/ai-elements/prompt-input/index.ts +7 -0
  696. package/src/components/ai-elements/prompt-input/prompt-input.stories.tsx +548 -0
  697. package/src/components/ai-elements/prompt-input/prompt-input.test.tsx +22 -0
  698. package/src/components/ai-elements/prompt-input/prompt-input.tsx +2112 -0
  699. package/src/components/ai-elements/queue/index.ts +7 -0
  700. package/src/components/ai-elements/queue/queue.stories.tsx +249 -0
  701. package/src/components/ai-elements/queue/queue.tsx +456 -0
  702. package/src/components/ai-elements/reasoning/index.ts +7 -0
  703. package/src/components/ai-elements/reasoning/reasoning.stories.tsx +147 -0
  704. package/src/components/ai-elements/reasoning/reasoning.tsx +356 -0
  705. package/src/components/ai-elements/shimmer/index.ts +7 -0
  706. package/src/components/ai-elements/shimmer/shimmer.stories.tsx +240 -0
  707. package/src/components/ai-elements/shimmer/shimmer.tsx +150 -0
  708. package/src/components/ai-elements/sources/index.ts +7 -0
  709. package/src/components/ai-elements/sources/sources.stories.tsx +259 -0
  710. package/src/components/ai-elements/sources/sources.test.tsx +40 -0
  711. package/src/components/ai-elements/sources/sources.tsx +327 -0
  712. package/src/components/ai-elements/suggestion/index.ts +7 -0
  713. package/src/components/ai-elements/suggestion/suggestion.stories.tsx +207 -0
  714. package/src/components/ai-elements/suggestion/suggestion.tsx +229 -0
  715. package/src/components/ai-elements/task/index.ts +7 -0
  716. package/src/components/ai-elements/task/task.stories.tsx +213 -0
  717. package/src/components/ai-elements/task/task.tsx +356 -0
  718. package/src/components/ai-elements/test-utils.tsx +28 -0
  719. package/src/components/ai-elements/tool/index.ts +7 -0
  720. package/src/components/ai-elements/tool/tool.stories.tsx +195 -0
  721. package/src/components/ai-elements/tool/tool.test.tsx +160 -0
  722. package/src/components/ai-elements/tool/tool.tsx +537 -0
  723. package/src/components/ai-elements/tool-approval/index.ts +7 -0
  724. package/src/components/ai-elements/tool-approval/tool-approval.stories.tsx +260 -0
  725. package/src/components/ai-elements/tool-approval/tool-approval.tsx +423 -0
  726. package/src/components/ai-elements/vitest.config.ts +17 -0
  727. package/src/components/ai-elements/vitest.setup.ts +6 -0
  728. package/src/components/ai-elements/web-preview/index.ts +7 -0
  729. package/src/components/ai-elements/web-preview/web-preview.stories.tsx +202 -0
  730. package/src/components/ai-elements/web-preview/web-preview.tsx +1166 -0
  731. package/src/components/ai-workflows/canvas/canvas.stories.tsx +120 -0
  732. package/src/components/ai-workflows/canvas/canvas.tsx +173 -0
  733. package/src/components/ai-workflows/canvas/index.ts +7 -0
  734. package/src/components/ai-workflows/connection/connection.stories.tsx +66 -0
  735. package/src/components/ai-workflows/connection/connection.tsx +119 -0
  736. package/src/components/ai-workflows/connection/index.ts +7 -0
  737. package/src/components/ai-workflows/controls/controls.stories.tsx +72 -0
  738. package/src/components/ai-workflows/controls/controls.tsx +132 -0
  739. package/src/components/ai-workflows/controls/index.ts +7 -0
  740. package/src/components/ai-workflows/edge/edge.stories.tsx +120 -0
  741. package/src/components/ai-workflows/edge/edge.test.tsx +47 -0
  742. package/src/components/ai-workflows/edge/edge.tsx +136 -0
  743. package/src/components/ai-workflows/edge/index.ts +7 -0
  744. package/src/components/ai-workflows/flow-constants.ts +11 -0
  745. package/src/components/ai-workflows/node/index.ts +7 -0
  746. package/src/components/ai-workflows/node/node.stories.tsx +111 -0
  747. package/src/components/ai-workflows/node/node.tsx +227 -0
  748. package/src/components/ai-workflows/panel/index.ts +7 -0
  749. package/src/components/ai-workflows/panel/panel.stories.tsx +102 -0
  750. package/src/components/ai-workflows/panel/panel.tsx +106 -0
  751. package/src/components/ai-workflows/resizable-node/index.ts +7 -0
  752. package/src/components/ai-workflows/resizable-node/resizable-node.stories.tsx +93 -0
  753. package/src/components/ai-workflows/resizable-node/resizable-node.tsx +228 -0
  754. package/src/components/ai-workflows/toolbar/index.ts +7 -0
  755. package/src/components/ai-workflows/toolbar/toolbar.stories.tsx +99 -0
  756. package/src/components/ai-workflows/toolbar/toolbar.tsx +130 -0
  757. package/src/components/auth/client/index.ts +12 -0
  758. package/src/components/auth/client/nav-user/auth-nav-user.tsx +237 -0
  759. package/src/components/auth/client/nav-user/index.ts +11 -0
  760. package/src/components/auth/client/providers/ThemeProvider.stories.tsx +59 -0
  761. package/src/components/auth/client/providers/ThemeProvider.tsx +39 -0
  762. package/src/components/auth/client/providers/index.ts +7 -0
  763. package/src/components/auth/client/providers.tsx +129 -0
  764. package/src/components/auth/index.ts +14 -0
  765. package/src/components/auth/server/account/ProfileForm.stories.tsx +105 -0
  766. package/src/components/auth/server/account/ProfileForm.tsx +236 -0
  767. package/src/components/auth/server/account/index.ts +7 -0
  768. package/src/components/auth/server/actions/index.ts +11 -0
  769. package/src/components/auth/server/actions.ts +88 -0
  770. package/src/components/auth/server/admin/AdminBulkUserActions.stories.tsx +129 -0
  771. package/src/components/auth/server/admin/AdminBulkUserActions.tsx +649 -0
  772. package/src/components/auth/server/admin/AdminDashboard.stories.tsx +215 -0
  773. package/src/components/auth/server/admin/AdminDashboard.tsx +785 -0
  774. package/src/components/auth/server/admin/AdminDevicesManager.tsx +411 -0
  775. package/src/components/auth/server/admin/AdminImpersonation.stories.tsx +121 -0
  776. package/src/components/auth/server/admin/AdminImpersonation.tsx +569 -0
  777. package/src/components/auth/server/admin/AdminPasskeysManager.tsx +393 -0
  778. package/src/components/auth/server/admin/AdminSecurityEventsViewer.tsx +395 -0
  779. package/src/components/auth/server/admin/AdminServiceAccountsManager.tsx +454 -0
  780. package/src/components/auth/server/admin/AdminSessionsManager.tsx +664 -0
  781. package/src/components/auth/server/admin/AdminTwoFactorManager.tsx +431 -0
  782. package/src/components/auth/server/admin/AdminUserCreation.stories.tsx +87 -0
  783. package/src/components/auth/server/admin/AdminUserCreation.tsx +777 -0
  784. package/src/components/auth/server/admin/AdminUserDetail.stories.tsx +178 -0
  785. package/src/components/auth/server/admin/AdminUserDetail.tsx +1044 -0
  786. package/src/components/auth/server/admin/AdminUsersList.stories.tsx +228 -0
  787. package/src/components/auth/server/admin/AdminUsersList.tsx +859 -0
  788. package/src/components/auth/server/admin/index.ts +59 -0
  789. package/src/components/auth/server/advanced/PasskeySetup.stories.tsx +70 -0
  790. package/src/components/auth/server/advanced/PasskeySetup.tsx +383 -0
  791. package/src/components/auth/server/advanced/TwoFactorSetup.stories.tsx +79 -0
  792. package/src/components/auth/server/advanced/TwoFactorSetup.tsx +459 -0
  793. package/src/components/auth/server/advanced/TwoFactorVerify.stories.tsx +69 -0
  794. package/src/components/auth/server/advanced/TwoFactorVerify.tsx +323 -0
  795. package/src/components/auth/server/advanced/index.ts +10 -0
  796. package/src/components/auth/server/api-keys/APIKeysList.stories.tsx +95 -0
  797. package/src/components/auth/server/api-keys/APIKeysList.tsx +470 -0
  798. package/src/components/auth/server/api-keys/CreateAPIKeyForm.stories.tsx +79 -0
  799. package/src/components/auth/server/api-keys/CreateAPIKeyForm.tsx +501 -0
  800. package/src/components/auth/server/api-keys/index.ts +9 -0
  801. package/src/components/auth/server/enhanced/AccountDeletionFlow.stories.tsx +115 -0
  802. package/src/components/auth/server/enhanced/AccountDeletionFlow.tsx +733 -0
  803. package/src/components/auth/server/enhanced/AnonymousSessionCreator.stories.tsx +80 -0
  804. package/src/components/auth/server/enhanced/AnonymousSessionCreator.tsx +398 -0
  805. package/src/components/auth/server/enhanced/AnonymousToAccountConverter.stories.tsx +61 -0
  806. package/src/components/auth/server/enhanced/AnonymousToAccountConverter.tsx +538 -0
  807. package/src/components/auth/server/enhanced/BackupCodesManager.stories.tsx +108 -0
  808. package/src/components/auth/server/enhanced/BackupCodesManager.tsx +718 -0
  809. package/src/components/auth/server/enhanced/BearerTokenGenerator.stories.tsx +85 -0
  810. package/src/components/auth/server/enhanced/BearerTokenGenerator.tsx +618 -0
  811. package/src/components/auth/server/enhanced/ChangePasswordForm.stories.tsx +108 -0
  812. package/src/components/auth/server/enhanced/ChangePasswordForm.tsx +313 -0
  813. package/src/components/auth/server/enhanced/DataExportRequest.stories.tsx +84 -0
  814. package/src/components/auth/server/enhanced/DataExportRequest.tsx +734 -0
  815. package/src/components/auth/server/enhanced/DeviceManagement.stories.tsx +161 -0
  816. package/src/components/auth/server/enhanced/DeviceManagement.tsx +700 -0
  817. package/src/components/auth/server/enhanced/EmailChangeVerification.stories.tsx +94 -0
  818. package/src/components/auth/server/enhanced/EmailChangeVerification.tsx +421 -0
  819. package/src/components/auth/server/enhanced/EmailOTPSignIn.stories.tsx +68 -0
  820. package/src/components/auth/server/enhanced/EmailOTPSignIn.tsx +516 -0
  821. package/src/components/auth/server/enhanced/EmailOTPVerification.stories.tsx +95 -0
  822. package/src/components/auth/server/enhanced/EmailOTPVerification.tsx +610 -0
  823. package/src/components/auth/server/enhanced/EmailVerificationRequest.stories.tsx +97 -0
  824. package/src/components/auth/server/enhanced/EmailVerificationRequest.tsx +461 -0
  825. package/src/components/auth/server/enhanced/EmailVerificationStatus.stories.tsx +96 -0
  826. package/src/components/auth/server/enhanced/EmailVerificationStatus.tsx +631 -0
  827. package/src/components/auth/server/enhanced/MagicLinkRequestForm.stories.tsx +88 -0
  828. package/src/components/auth/server/enhanced/MagicLinkRequestForm.tsx +439 -0
  829. package/src/components/auth/server/enhanced/MagicLinkStatusIndicator.stories.tsx +101 -0
  830. package/src/components/auth/server/enhanced/MagicLinkStatusIndicator.tsx +610 -0
  831. package/src/components/auth/server/enhanced/MultiSessionDashboard.stories.tsx +101 -0
  832. package/src/components/auth/server/enhanced/MultiSessionDashboard.tsx +996 -0
  833. package/src/components/auth/server/enhanced/OrganizationAuditLog.stories.tsx +86 -0
  834. package/src/components/auth/server/enhanced/OrganizationAuditLog.tsx +1006 -0
  835. package/src/components/auth/server/enhanced/PasskeyManagement.stories.tsx +102 -0
  836. package/src/components/auth/server/enhanced/PasskeyManagement.tsx +705 -0
  837. package/src/components/auth/server/enhanced/PasskeyRegistrationWizard.stories.tsx +83 -0
  838. package/src/components/auth/server/enhanced/PasskeyRegistrationWizard.tsx +566 -0
  839. package/src/components/auth/server/enhanced/PasskeySignInInterface.stories.tsx +90 -0
  840. package/src/components/auth/server/enhanced/PasskeySignInInterface.tsx +792 -0
  841. package/src/components/auth/server/enhanced/PasswordStrengthIndicator.stories.tsx +129 -0
  842. package/src/components/auth/server/enhanced/PasswordStrengthIndicator.tsx +539 -0
  843. package/src/components/auth/server/enhanced/PhoneNumberManagement.stories.tsx +103 -0
  844. package/src/components/auth/server/enhanced/PhoneNumberManagement.tsx +594 -0
  845. package/src/components/auth/server/enhanced/PhoneNumberSetupForm.stories.tsx +91 -0
  846. package/src/components/auth/server/enhanced/PhoneNumberSetupForm.tsx +518 -0
  847. package/src/components/auth/server/enhanced/PhoneSignInForm.stories.tsx +63 -0
  848. package/src/components/auth/server/enhanced/PhoneSignInForm.tsx +801 -0
  849. package/src/components/auth/server/enhanced/PhoneSignInWithSMS.stories.tsx +87 -0
  850. package/src/components/auth/server/enhanced/PhoneSignInWithSMS.tsx +886 -0
  851. package/src/components/auth/server/enhanced/PhoneVerificationForm.stories.tsx +81 -0
  852. package/src/components/auth/server/enhanced/PhoneVerificationForm.tsx +306 -0
  853. package/src/components/auth/server/enhanced/ResendVerificationEmail.stories.tsx +84 -0
  854. package/src/components/auth/server/enhanced/ResendVerificationEmail.tsx +407 -0
  855. package/src/components/auth/server/enhanced/SMSVerificationForm.stories.tsx +92 -0
  856. package/src/components/auth/server/enhanced/SMSVerificationForm.tsx +521 -0
  857. package/src/components/auth/server/enhanced/SecurityEventLog.stories.tsx +115 -0
  858. package/src/components/auth/server/enhanced/SecurityEventLog.tsx +916 -0
  859. package/src/components/auth/server/enhanced/TeamCreationWizard.stories.tsx +85 -0
  860. package/src/components/auth/server/enhanced/TeamCreationWizard.tsx +1023 -0
  861. package/src/components/auth/server/enhanced/__tests__/actions.test.ts +388 -0
  862. package/src/components/auth/server/enhanced/__tests__/more-actions.test.ts +139 -0
  863. package/src/components/auth/server/enhanced/actions.ts +1199 -0
  864. package/src/components/auth/server/enhanced/auth-enhanced-actions.ts +936 -0
  865. package/src/components/auth/server/enhanced/index.ts +37 -0
  866. package/src/components/auth/server/forms/ForgotPasswordForm.stories.tsx +82 -0
  867. package/src/components/auth/server/forms/ForgotPasswordForm.tsx +287 -0
  868. package/src/components/auth/server/forms/ResetPasswordForm.stories.tsx +79 -0
  869. package/src/components/auth/server/forms/ResetPasswordForm.tsx +217 -0
  870. package/src/components/auth/server/forms/SignInForm.stories.tsx +113 -0
  871. package/src/components/auth/server/forms/SignInForm.tsx +211 -0
  872. package/src/components/auth/server/forms/SignUpForm.stories.tsx +130 -0
  873. package/src/components/auth/server/forms/SignUpForm.tsx +243 -0
  874. package/src/components/auth/server/forms/index.ts +10 -0
  875. package/src/components/auth/server/index.ts +22 -0
  876. package/src/components/auth/server/jwt/JWTTokenManager.tsx +315 -0
  877. package/src/components/auth/server/jwt/index.ts +7 -0
  878. package/src/components/auth/server/organization/AuditLogViewer.tsx +288 -0
  879. package/src/components/auth/server/organization/CreateRoleDialog.tsx +540 -0
  880. package/src/components/auth/server/organization/EditRoleDialog.tsx +487 -0
  881. package/src/components/auth/server/organization/InviteMembers.stories.tsx +82 -0
  882. package/src/components/auth/server/organization/InviteMembers.tsx +264 -0
  883. package/src/components/auth/server/organization/MembersList.stories.tsx +117 -0
  884. package/src/components/auth/server/organization/MembersList.tsx +425 -0
  885. package/src/components/auth/server/organization/OrganizationCreation.stories.tsx +99 -0
  886. package/src/components/auth/server/organization/OrganizationCreation.tsx +293 -0
  887. package/src/components/auth/server/organization/OrganizationSettings.stories.tsx +99 -0
  888. package/src/components/auth/server/organization/OrganizationSettings.tsx +494 -0
  889. package/src/components/auth/server/organization/OrganizationSwitcher.stories.tsx +98 -0
  890. package/src/components/auth/server/organization/OrganizationSwitcher.tsx +308 -0
  891. package/src/components/auth/server/organization/PermissionMatrix.tsx +366 -0
  892. package/src/components/auth/server/organization/RoleManagement.stories.tsx +120 -0
  893. package/src/components/auth/server/organization/RoleManagement.tsx +318 -0
  894. package/src/components/auth/server/organization/index.ts +16 -0
  895. package/src/components/auth/server/session/SessionsList.stories.tsx +81 -0
  896. package/src/components/auth/server/session/SessionsList.tsx +274 -0
  897. package/src/components/auth/server/session/index.ts +7 -0
  898. package/src/components/auth/server/social/SocialLoginButtons.stories.tsx +139 -0
  899. package/src/components/auth/server/social/SocialLoginButtons.tsx +292 -0
  900. package/src/components/auth/server/social/index.ts +7 -0
  901. package/src/components/auth/server/ui/Alert.stories.tsx +97 -0
  902. package/src/components/auth/server/ui/Alert.tsx +159 -0
  903. package/src/components/auth/server/ui/Button.stories.tsx +149 -0
  904. package/src/components/auth/server/ui/Button.tsx +221 -0
  905. package/src/components/auth/server/ui/Card.stories.tsx +80 -0
  906. package/src/components/auth/server/ui/Card.tsx +51 -0
  907. package/src/components/auth/server/ui/Input.stories.tsx +143 -0
  908. package/src/components/auth/server/ui/Input.tsx +195 -0
  909. package/src/components/auth/server/ui/index.ts +18 -0
  910. package/src/components/charts/areas/areas.stories.tsx +113 -0
  911. package/src/components/charts/areas/areas.tsx +185 -0
  912. package/src/components/charts/areas/index.ts +11 -0
  913. package/src/components/charts/bars/bars.stories.tsx +109 -0
  914. package/src/components/charts/bars/bars.tsx +164 -0
  915. package/src/components/charts/bars/index.ts +11 -0
  916. package/src/components/charts/chart-context.ts +35 -0
  917. package/src/components/charts/funnel-chart/funnel-chart.stories.tsx +111 -0
  918. package/src/components/charts/funnel-chart/funnel-chart.tsx +392 -0
  919. package/src/components/charts/funnel-chart/index.ts +11 -0
  920. package/src/components/charts/index.ts +45 -0
  921. package/src/components/charts/mini-area-chart/index.ts +11 -0
  922. package/src/components/charts/mini-area-chart/mini-area-chart.stories.tsx +100 -0
  923. package/src/components/charts/mini-area-chart/mini-area-chart.tsx +244 -0
  924. package/src/components/charts/time-series-chart/index.ts +11 -0
  925. package/src/components/charts/time-series-chart/time-series-chart.stories.tsx +140 -0
  926. package/src/components/charts/time-series-chart/time-series-chart.tsx +337 -0
  927. package/src/components/charts/tooltip-sync/index.ts +11 -0
  928. package/src/components/charts/tooltip-sync/tooltip-sync.stories.tsx +89 -0
  929. package/src/components/charts/tooltip-sync/tooltip-sync.tsx +91 -0
  930. package/src/components/charts/types.ts +93 -0
  931. package/src/components/charts/use-tooltip.ts +230 -0
  932. package/src/components/charts/utils.ts +69 -0
  933. package/src/components/charts/x-axis/index.ts +11 -0
  934. package/src/components/charts/x-axis/x-axis.stories.tsx +94 -0
  935. package/src/components/charts/x-axis/x-axis.tsx +176 -0
  936. package/src/components/charts/y-axis/index.ts +7 -0
  937. package/src/components/charts/y-axis/y-axis.stories.tsx +110 -0
  938. package/src/components/charts/y-axis/y-axis.tsx +139 -0
  939. package/src/components/elements/atoms/alert/alert.stories.tsx +234 -0
  940. package/src/components/elements/atoms/alert/alert.tsx +293 -0
  941. package/src/components/elements/atoms/alert/index.ts +7 -0
  942. package/src/components/elements/atoms/avatar/avatar.stories.tsx +174 -0
  943. package/src/components/elements/atoms/avatar/avatar.tsx +274 -0
  944. package/src/components/elements/atoms/avatar/index.ts +7 -0
  945. package/src/components/elements/atoms/badge/badge.stories.tsx +186 -0
  946. package/src/components/elements/atoms/badge/badge.tsx +333 -0
  947. package/src/components/elements/atoms/badge/index.ts +7 -0
  948. package/src/components/elements/atoms/blur-image/blur-image.stories.tsx +140 -0
  949. package/src/components/elements/atoms/blur-image/blur-image.tsx +102 -0
  950. package/src/components/elements/atoms/blur-image/index.ts +7 -0
  951. package/src/components/elements/atoms/button/button.stories.tsx +776 -0
  952. package/src/components/elements/atoms/button/button.tsx +878 -0
  953. package/src/components/elements/atoms/button/index.ts +7 -0
  954. package/src/components/elements/atoms/copy-button/copy-button.stories.tsx +162 -0
  955. package/src/components/elements/atoms/copy-button/copy-button.tsx +232 -0
  956. package/src/components/elements/atoms/copy-button/index.ts +7 -0
  957. package/src/components/elements/atoms/copy-text/copy-text.stories.tsx +128 -0
  958. package/src/components/elements/atoms/copy-text/copy-text.tsx +201 -0
  959. package/src/components/elements/atoms/copy-text/index.ts +7 -0
  960. package/src/components/elements/atoms/empty-state/empty-state.stories.tsx +410 -0
  961. package/src/components/elements/atoms/empty-state/empty-state.tsx +338 -0
  962. package/src/components/elements/atoms/empty-state/index.ts +1 -0
  963. package/src/components/elements/atoms/go-back-button/go-back-button.stories.tsx +83 -0
  964. package/src/components/elements/atoms/go-back-button/go-back-button.tsx +104 -0
  965. package/src/components/elements/atoms/go-back-button/index.ts +7 -0
  966. package/src/components/elements/atoms/inline-snippet/index.ts +7 -0
  967. package/src/components/elements/atoms/inline-snippet/inline-snippet.stories.tsx +130 -0
  968. package/src/components/elements/atoms/inline-snippet/inline-snippet.tsx +140 -0
  969. package/src/components/elements/atoms/loading-dots/index.ts +1 -0
  970. package/src/components/elements/atoms/loading-dots/loading-dots.stories.tsx +274 -0
  971. package/src/components/elements/atoms/loading-dots/loading-dots.tsx +138 -0
  972. package/src/components/elements/atoms/mode-toggle/index.ts +7 -0
  973. package/src/components/elements/atoms/mode-toggle/mode-toggle.stories.tsx +67 -0
  974. package/src/components/elements/atoms/mode-toggle/mode-toggle.tsx +163 -0
  975. package/src/components/elements/atoms/progress/index.ts +7 -0
  976. package/src/components/elements/atoms/progress/progress.stories.tsx +141 -0
  977. package/src/components/elements/atoms/progress/progress.tsx +314 -0
  978. package/src/components/elements/atoms/progress-circle/index.ts +7 -0
  979. package/src/components/elements/atoms/progress-circle/progress-circle.stories.tsx +185 -0
  980. package/src/components/elements/atoms/progress-circle/progress-circle.tsx +207 -0
  981. package/src/components/elements/atoms/separator/index.ts +7 -0
  982. package/src/components/elements/atoms/separator/separator.stories.tsx +154 -0
  983. package/src/components/elements/atoms/separator/separator.tsx +169 -0
  984. package/src/components/elements/atoms/skeleton/index.ts +7 -0
  985. package/src/components/elements/atoms/skeleton/skeleton.stories.tsx +152 -0
  986. package/src/components/elements/atoms/skeleton/skeleton.tsx +336 -0
  987. package/src/components/elements/atoms/slider/index.ts +7 -0
  988. package/src/components/elements/atoms/slider/slider.stories.tsx +199 -0
  989. package/src/components/elements/atoms/slider/slider.tsx +487 -0
  990. package/src/components/elements/atoms/sonner/index.ts +7 -0
  991. package/src/components/elements/atoms/sonner/sonner.stories.tsx +408 -0
  992. package/src/components/elements/atoms/sonner/sonner.tsx +131 -0
  993. package/src/components/elements/atoms/status-badge/index.ts +7 -0
  994. package/src/components/elements/atoms/status-badge/status-badge.stories.tsx +166 -0
  995. package/src/components/elements/atoms/status-badge/status-badge.tsx +262 -0
  996. package/src/components/elements/atoms/timestamp-tooltip/index.ts +7 -0
  997. package/src/components/elements/atoms/timestamp-tooltip/timestamp-tooltip.stories.tsx +127 -0
  998. package/src/components/elements/atoms/timestamp-tooltip/timestamp-tooltip.tsx +404 -0
  999. package/src/components/elements/molecules/animated-size-container/animated-size-container.stories.tsx +165 -0
  1000. package/src/components/elements/molecules/animated-size-container/animated-size-container.tsx +125 -0
  1001. package/src/components/elements/molecules/animated-size-container/index.ts +7 -0
  1002. package/src/components/elements/molecules/avatar-stack/avatar-stack.stories.tsx +179 -0
  1003. package/src/components/elements/molecules/avatar-stack/avatar-stack.tsx +258 -0
  1004. package/src/components/elements/molecules/avatar-stack/index.ts +7 -0
  1005. package/src/components/elements/molecules/breadcrumb/breadcrumb.stories.tsx +273 -0
  1006. package/src/components/elements/molecules/breadcrumb/breadcrumb.tsx +299 -0
  1007. package/src/components/elements/molecules/breadcrumb/index.ts +7 -0
  1008. package/src/components/elements/molecules/button-group/button-group.stories.tsx +267 -0
  1009. package/src/components/elements/molecules/button-group/button-group.tsx +244 -0
  1010. package/src/components/elements/molecules/button-group/index.ts +7 -0
  1011. package/src/components/elements/molecules/collapsible/collapsible.stories.tsx +186 -0
  1012. package/src/components/elements/molecules/collapsible/collapsible.tsx +362 -0
  1013. package/src/components/elements/molecules/collapsible/index.ts +7 -0
  1014. package/src/components/elements/molecules/empty/empty.stories.tsx +182 -0
  1015. package/src/components/elements/molecules/empty/empty.tsx +230 -0
  1016. package/src/components/elements/molecules/empty/index.ts +7 -0
  1017. package/src/components/elements/molecules/pagination-controls/index.ts +8 -0
  1018. package/src/components/elements/molecules/pagination-controls/pagination-controls.stories.tsx +193 -0
  1019. package/src/components/elements/molecules/pagination-controls/pagination-controls.tsx +174 -0
  1020. package/src/components/elements/molecules/tab-select/index.ts +7 -0
  1021. package/src/components/elements/molecules/tab-select/tab-select.stories.tsx +175 -0
  1022. package/src/components/elements/molecules/tab-select/tab-select.tsx +261 -0
  1023. package/src/components/elements/molecules/tabs/index.ts +7 -0
  1024. package/src/components/elements/molecules/tabs/tabs.stories.tsx +198 -0
  1025. package/src/components/elements/molecules/tabs/tabs.tsx +744 -0
  1026. package/src/components/elements/molecules/toggle-group/index.ts +7 -0
  1027. package/src/components/elements/molecules/toggle-group/toggle-group.stories.tsx +201 -0
  1028. package/src/components/elements/molecules/toggle-group/toggle-group.tsx +236 -0
  1029. package/src/components/elements/organisms/accordion/accordion.stories.tsx +217 -0
  1030. package/src/components/elements/organisms/accordion/accordion.tsx +456 -0
  1031. package/src/components/elements/organisms/accordion/index.ts +7 -0
  1032. package/src/components/elements/organisms/card/card.stories.tsx +406 -0
  1033. package/src/components/elements/organisms/card/card.tsx +437 -0
  1034. package/src/components/elements/organisms/card/index.ts +8 -0
  1035. package/src/components/elements/organisms/card/integration-card.stories.tsx +348 -0
  1036. package/src/components/elements/organisms/card/integration-compact.stories.tsx +310 -0
  1037. package/src/components/elements/organisms/card/integrations.tsx +356 -0
  1038. package/src/components/elements/organisms/carousel/carousel.stories.tsx +182 -0
  1039. package/src/components/elements/organisms/carousel/carousel.tsx +537 -0
  1040. package/src/components/elements/organisms/carousel/index.ts +7 -0
  1041. package/src/components/elements/organisms/chart/chart.stories.tsx +147 -0
  1042. package/src/components/elements/organisms/chart/chart.tsx +317 -0
  1043. package/src/components/elements/organisms/chart/index.ts +7 -0
  1044. package/src/components/elements/organisms/command/command.stories.tsx +246 -0
  1045. package/src/components/elements/organisms/command/command.tsx +284 -0
  1046. package/src/components/elements/organisms/command/index.ts +7 -0
  1047. package/src/components/elements/organisms/dialog/dialog.stories.tsx +266 -0
  1048. package/src/components/elements/organisms/dialog/dialog.tsx +366 -0
  1049. package/src/components/elements/organisms/dialog/index.ts +7 -0
  1050. package/src/components/elements/organisms/dropdown-menu/dropdown-menu.stories.tsx +334 -0
  1051. package/src/components/elements/organisms/dropdown-menu/dropdown-menu.tsx +611 -0
  1052. package/src/components/elements/organisms/dropdown-menu/index.ts +7 -0
  1053. package/src/components/elements/organisms/dynamic-breadcrumb/dynamic-breadcrumb.stories.tsx +50 -0
  1054. package/src/components/elements/organisms/dynamic-breadcrumb/dynamic-breadcrumb.tsx +257 -0
  1055. package/src/components/elements/organisms/dynamic-breadcrumb/index.ts +7 -0
  1056. package/src/components/elements/organisms/error-boundary/error-boundary.stories.tsx +142 -0
  1057. package/src/components/elements/organisms/error-boundary/error-boundary.tsx +408 -0
  1058. package/src/components/elements/organisms/error-boundary/index.ts +7 -0
  1059. package/src/components/elements/organisms/hover-card/hover-card.stories.tsx +245 -0
  1060. package/src/components/elements/organisms/hover-card/hover-card.tsx +370 -0
  1061. package/src/components/elements/organisms/hover-card/index.ts +7 -0
  1062. package/src/components/elements/organisms/modal/index.ts +7 -0
  1063. package/src/components/elements/organisms/modal/modal.stories.tsx +189 -0
  1064. package/src/components/elements/organisms/modal/modal.tsx +266 -0
  1065. package/src/components/elements/organisms/popover/index.ts +7 -0
  1066. package/src/components/elements/organisms/popover/popover.stories.tsx +200 -0
  1067. package/src/components/elements/organisms/popover/popover.tsx +302 -0
  1068. package/src/components/elements/organisms/resizable/index.ts +7 -0
  1069. package/src/components/elements/organisms/resizable/resizable.stories.tsx +204 -0
  1070. package/src/components/elements/organisms/resizable/resizable.tsx +178 -0
  1071. package/src/components/elements/organisms/scroll-area/index.ts +7 -0
  1072. package/src/components/elements/organisms/scroll-area/scroll-area.stories.tsx +170 -0
  1073. package/src/components/elements/organisms/scroll-area/scroll-area.tsx +167 -0
  1074. package/src/components/elements/organisms/sheet/index.ts +7 -0
  1075. package/src/components/elements/organisms/sheet/sheet.stories.tsx +235 -0
  1076. package/src/components/elements/organisms/sheet/sheet.tsx +381 -0
  1077. package/src/components/elements/organisms/table/index.ts +7 -0
  1078. package/src/components/elements/organisms/table/table.stories.tsx +238 -0
  1079. package/src/components/elements/organisms/table/table.tsx +392 -0
  1080. package/src/components/elements/organisms/tooltip/index.ts +7 -0
  1081. package/src/components/elements/organisms/tooltip/tooltip.stories.tsx +205 -0
  1082. package/src/components/elements/organisms/tooltip/tooltip.tsx +547 -0
  1083. package/src/components/filter/filter-list/filter-list.stories.tsx +157 -0
  1084. package/src/components/filter/filter-list/filter-list.tsx +435 -0
  1085. package/src/components/filter/filter-list/index.ts +7 -0
  1086. package/src/components/filter/filter-select/filter-select.stories.tsx +124 -0
  1087. package/src/components/filter/filter-select/filter-select.tsx +558 -0
  1088. package/src/components/filter/filter-select/index.ts +7 -0
  1089. package/src/components/filter/index.ts +9 -0
  1090. package/src/components/filter/types.ts +70 -0
  1091. package/src/components/forms/checkbox/checkbox.stories.tsx +177 -0
  1092. package/src/components/forms/checkbox/checkbox.tsx +332 -0
  1093. package/src/components/forms/checkbox/index.ts +11 -0
  1094. package/src/components/forms/combobox/combobox.stories.tsx +224 -0
  1095. package/src/components/forms/combobox/combobox.tsx +679 -0
  1096. package/src/components/forms/combobox/index.ts +7 -0
  1097. package/src/components/forms/date-picker/calendar/calendar.stories.tsx +78 -0
  1098. package/src/components/forms/date-picker/calendar/calendar.tsx +271 -0
  1099. package/src/components/forms/date-picker/calendar/index.ts +7 -0
  1100. package/src/components/forms/date-picker/date-range-picker/date-range-picker.stories.tsx +108 -0
  1101. package/src/components/forms/date-picker/date-range-picker/date-range-picker.tsx +334 -0
  1102. package/src/components/forms/date-picker/date-range-picker/index.ts +7 -0
  1103. package/src/components/forms/date-picker/index.ts +10 -0
  1104. package/src/components/forms/date-picker/presets/index.ts +7 -0
  1105. package/src/components/forms/date-picker/presets/presets.stories.tsx +105 -0
  1106. package/src/components/forms/date-picker/presets/presets.tsx +196 -0
  1107. package/src/components/forms/date-picker/shared.ts +109 -0
  1108. package/src/components/forms/date-picker/trigger/index.ts +7 -0
  1109. package/src/components/forms/date-picker/trigger/trigger.stories.tsx +78 -0
  1110. package/src/components/forms/date-picker/trigger/trigger.tsx +195 -0
  1111. package/src/components/forms/date-picker/types.ts +63 -0
  1112. package/src/components/forms/file-upload/file-upload.stories.tsx +145 -0
  1113. package/src/components/forms/file-upload/file-upload.tsx +504 -0
  1114. package/src/components/forms/file-upload/index.ts +7 -0
  1115. package/src/components/forms/input/index.ts +7 -0
  1116. package/src/components/forms/input/input.stories.tsx +185 -0
  1117. package/src/components/forms/input/input.tsx +228 -0
  1118. package/src/components/forms/input-group/index.ts +11 -0
  1119. package/src/components/forms/input-group/input-group.stories.tsx +146 -0
  1120. package/src/components/forms/input-group/input-group.tsx +344 -0
  1121. package/src/components/forms/label/index.ts +7 -0
  1122. package/src/components/forms/label/label.stories.tsx +140 -0
  1123. package/src/components/forms/label/label.tsx +189 -0
  1124. package/src/components/forms/radio-group/index.ts +7 -0
  1125. package/src/components/forms/radio-group/radio-group.stories.tsx +233 -0
  1126. package/src/components/forms/radio-group/radio-group.tsx +476 -0
  1127. package/src/components/forms/select/index.ts +7 -0
  1128. package/src/components/forms/select/select.stories.tsx +274 -0
  1129. package/src/components/forms/select/select.tsx +654 -0
  1130. package/src/components/forms/switch/index.ts +11 -0
  1131. package/src/components/forms/switch/switch.stories.tsx +166 -0
  1132. package/src/components/forms/switch/switch.tsx +362 -0
  1133. package/src/components/forms/textarea/index.ts +7 -0
  1134. package/src/components/forms/textarea/textarea.stories.tsx +176 -0
  1135. package/src/components/forms/textarea/textarea.tsx +225 -0
  1136. package/src/components/layout/app-shell.tsx +363 -0
  1137. package/src/components/layout/app-sidebar/app-sidebar.stories.tsx +68 -0
  1138. package/src/components/layout/app-sidebar/app-sidebar.tsx +418 -0
  1139. package/src/components/layout/app-sidebar/index.ts +11 -0
  1140. package/src/components/layout/artifact-panel/artifact-panel-header.tsx +89 -0
  1141. package/src/components/layout/artifact-panel/expandable-panel.stories.tsx +484 -0
  1142. package/src/components/layout/artifact-panel/expandable-panel.tsx +289 -0
  1143. package/src/components/layout/artifact-panel/index.ts +23 -0
  1144. package/src/components/layout/artifact-panel/split-panel-layout.tsx +70 -0
  1145. package/src/components/layout/artifact-panel/types.ts +63 -0
  1146. package/src/components/layout/artifact-panel/use-artifact-panel-state.ts +101 -0
  1147. package/src/components/layout/content-sidebar/content-sidebar.stories.tsx +490 -0
  1148. package/src/components/layout/content-sidebar/content-sidebar.tsx +337 -0
  1149. package/src/components/layout/content-sidebar/index.ts +17 -0
  1150. package/src/components/layout/nav-app-switcher/index.ts +7 -0
  1151. package/src/components/layout/nav-app-switcher/nav-app-switcher.stories.tsx +138 -0
  1152. package/src/components/layout/nav-app-switcher/nav-app-switcher.tsx +282 -0
  1153. package/src/components/layout/nav-main/index.ts +11 -0
  1154. package/src/components/layout/nav-main/nav-main.stories.tsx +103 -0
  1155. package/src/components/layout/nav-main/nav-main.tsx +259 -0
  1156. package/src/components/layout/nav-projects/index.ts +11 -0
  1157. package/src/components/layout/nav-projects/nav-projects.stories.tsx +82 -0
  1158. package/src/components/layout/nav-projects/nav-projects.tsx +218 -0
  1159. package/src/components/layout/nav-secondary/index.ts +11 -0
  1160. package/src/components/layout/nav-secondary/nav-secondary.stories.tsx +81 -0
  1161. package/src/components/layout/nav-secondary/nav-secondary.tsx +145 -0
  1162. package/src/components/layout/nav-user/index.ts +11 -0
  1163. package/src/components/layout/nav-user/nav-user.stories.tsx +80 -0
  1164. package/src/components/layout/nav-user/nav-user.tsx +226 -0
  1165. package/src/components/layout/oneapp/auth-context.tsx +74 -0
  1166. package/src/components/layout/oneapp/ensure-anonymous-session.tsx +218 -0
  1167. package/src/components/layout/oneapp/index.ts +37 -0
  1168. package/src/components/layout/oneapp/microfrontend-layout.tsx +191 -0
  1169. package/src/components/layout/oneapp/types.ts +98 -0
  1170. package/src/components/layout/sidebar/index.ts +7 -0
  1171. package/src/components/layout/sidebar/sidebar.stories.tsx +170 -0
  1172. package/src/components/layout/sidebar/sidebar.tsx +945 -0
  1173. package/src/components/layout/sidebar-inset-header-portal/index.ts +8 -0
  1174. package/src/components/layout/sidebar-inset-header-portal/sidebar-inset-header-portal.stories.tsx +355 -0
  1175. package/src/components/layout/sidebar-inset-header-portal/sidebar-inset-header-portal.tsx +179 -0
  1176. package/src/components/layout/sidebar-slots/USAGE.md +163 -0
  1177. package/src/components/layout/sidebar-slots/__tests__/sidebar-slots.test.tsx +239 -0
  1178. package/src/components/layout/sidebar-slots/index.ts +9 -0
  1179. package/src/components/layout/sidebar-slots/sidebar-slots.stories.tsx +525 -0
  1180. package/src/components/layout/sidebar-slots/sidebar-slots.tsx +205 -0
  1181. package/src/components/layout/theme-provider/index.ts +11 -0
  1182. package/src/components/layout/theme-provider/theme-provider.stories.tsx +82 -0
  1183. package/src/components/layout/theme-provider/theme-provider.tsx +101 -0
  1184. package/src/components/overlays/confirm-dialog.stories.tsx +371 -0
  1185. package/src/components/overlays/confirm-dialog.tsx +201 -0
  1186. package/src/components/overlays/toast.stories.tsx +373 -0
  1187. package/src/components/overlays/toast.tsx +115 -0
  1188. package/src/constants/container.ts +183 -0
  1189. package/src/constants/index.ts +38 -0
  1190. package/src/constants/motion.ts +104 -0
  1191. package/src/fonts/Satoshi-Variable.woff2 +0 -0
  1192. package/src/fonts/Satoshi-VariableItalic.woff2 +0 -0
  1193. package/src/fonts/fonts.css +41 -0
  1194. package/src/fonts/index.ts +106 -0
  1195. package/src/hooks/.gitkeep +0 -0
  1196. package/src/hooks/ai-chat/context.tsx +294 -0
  1197. package/src/hooks/ai-chat/hooks.ts +297 -0
  1198. package/src/hooks/ai-chat/index.ts +35 -0
  1199. package/src/hooks/ai-chat/utils.ts +65 -0
  1200. package/src/hooks/index.ts +18 -0
  1201. package/src/hooks/use-mobile.ts +45 -0
  1202. package/src/hooks/use-responsive.ts +64 -0
  1203. package/src/hooks/use-scroll-progress.ts +101 -0
  1204. package/src/hooks/use-toast.ts +65 -0
  1205. package/src/index.ts +857 -0
  1206. package/src/lib/export-csv.ts +107 -0
  1207. package/src/lib/index.ts +10 -0
  1208. package/src/lib/resize-image.ts +109 -0
  1209. package/src/lib/stable-sort.ts +29 -0
  1210. package/src/lib/utils.ts +28 -0
  1211. package/src/react-19-compat.d.ts +28 -0
  1212. package/src/shared/auth/index.ts +8 -0
  1213. package/src/shared/auth/types/index.ts +163 -0
  1214. package/src/shared/auth/types.ts +196 -0
  1215. package/src/shared/auth/utils/dark-mode.ts +336 -0
  1216. package/src/shared/index.ts +5 -0
  1217. package/src/styles/_tokens.generated.scss +84 -0
  1218. package/src/styles/ai-elements.scss +9 -0
  1219. package/src/styles/base.scss +44 -0
  1220. package/src/styles/flows.scss +62 -0
  1221. package/src/styles/globals.css +627 -0
  1222. package/src/styles/index.scss +9 -0
  1223. package/src/styles/shadcn.scss +16 -0
  1224. package/src/styles/sources.css +16 -0
  1225. package/src/styles/theme.css +1687 -0
  1226. package/src/styles/theme.template.css +95 -0
  1227. package/src/tokens/accessibility.ts +494 -0
  1228. package/src/tokens/animations.ts +305 -0
  1229. package/src/tokens/aspect-ratio.ts +89 -0
  1230. package/src/tokens/blur.ts +82 -0
  1231. package/src/tokens/border-width.ts +86 -0
  1232. package/src/tokens/breakpoints.ts +150 -0
  1233. package/src/tokens/colors.ts +1199 -0
  1234. package/src/tokens/component.ts +362 -0
  1235. package/src/tokens/container.ts +42 -0
  1236. package/src/tokens/focus.ts +266 -0
  1237. package/src/tokens/form-states.ts +521 -0
  1238. package/src/tokens/grid.ts +258 -0
  1239. package/src/tokens/index.ts +1175 -0
  1240. package/src/tokens/interactions.ts +558 -0
  1241. package/src/tokens/mantine-types.ts +68 -0
  1242. package/src/tokens/opacity.ts +139 -0
  1243. package/src/tokens/palette.ts +854 -0
  1244. package/src/tokens/pseudo-elements.ts +508 -0
  1245. package/src/tokens/radius.ts +57 -0
  1246. package/src/tokens/shadows.ts +313 -0
  1247. package/src/tokens/spacing.ts +95 -0
  1248. package/src/tokens/states.ts +392 -0
  1249. package/src/tokens/structural.ts +589 -0
  1250. package/src/tokens/timing.ts +224 -0
  1251. package/src/tokens/typography.ts +242 -0
  1252. package/src/tokens/z-index.ts +184 -0
  1253. package/storybook/preview.tsx +201 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker-CdemRFs_.mjs","names":["Calendar","Calendar"],"sources":["../src/components/forms/date-picker/calendar/calendar.tsx","../src/components/forms/date-picker/presets/presets.tsx","../src/components/forms/date-picker/shared.ts","../src/components/forms/date-picker/trigger/trigger.tsx","../src/components/forms/date-picker/date-range-picker/date-range-picker.tsx"],"sourcesContent":["'use client';\n\n/**\n * @fileoverview Calendar Component - Premium Harmony V2\n *\n * Accessible calendar component built on react-day-picker with comprehensive\n * touch support and Premium Harmony V2 motion standards. Features single and\n * range selection modes, localized calendars, and WCAG-compliant touch targets.\n *\n * Features:\n * - Premium Harmony V2 reduced motion support\n * - Touch detection with automatic sizing for mobile devices\n * - WCAG 2.5.5 compliant 44px minimum touch targets\n * - Semantic color tokens (no hardcoded colors)\n * - Enhanced focus styles with ring indicators\n * - Keyboard navigation (arrow keys, enter, escape)\n * - Screen reader announcements for date changes\n * - Range selection with visual highlighting\n * - Flexible month/year navigation controls\n * - Disabled date support with visual indicators\n * - Locale-aware formatting\n *\n * @module @od-oneapp/uni-ui/components/date-picker/calendar\n *\n * @component Calendar\n *\n * @useCases\n * - Date selection: Single date or date range selection with keyboard navigation\n * - Scheduling interfaces: Appointment booking, event creation, deadline setting\n * - Date filtering: Report date ranges, analytics time periods, data queries\n * - Touch devices: Mobile-optimized with 44px minimum touch targets (WCAG 2.5.5)\n * - Accessible navigation: Keyboard shortcuts, screen reader support, focus management\n * - Localized calendars: Support for multiple locales and calendar systems\n * - Restricted dates: Min/max dates, disabled days, custom validation rules\n * - Year navigation: Quick year jumping for birth dates or historical data\n *\n * @subcomponents NavigationButton, CaptionComponent\n *\n * @example <Calendar mode=\"single\" selected={date} onSelect={setDate} />\n * @example <Calendar mode=\"range\" selected={range} onSelect={setRange} numberOfMonths={2} />\n * @example <Calendar showYearNavigation fromYear={1900} toYear={2100} />\n * @example <Calendar locale={fr} />\n */\n\nimport {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n type ElementType,\n type HTMLAttributes,\n} from 'react';\n\nimport { useMediaQuery, useReducedMotion } from '@mantine/hooks';\nimport { format } from 'date-fns';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker, useNavigation } from 'react-day-picker';\n\nimport { cn } from '../../../../lib/utils';\n\nimport type { FormatOptions, Locale } from 'date-fns';\nimport type { DayPickerProps, Matcher, MonthCaptionProps } from 'react-day-picker';\n\n/* -----------------------------------------------------------------------------\n * Calendar Context (for passing props to nested components)\n * -------------------------------------------------------------------------- */\n\ninterface CalendarContextValue {\n showYearNavigation: boolean;\n disableNavigation?: boolean;\n locale?: Partial<Locale>;\n}\n\nconst CalendarContext = createContext<CalendarContextValue>({\n showYearNavigation: false,\n});\n\n/* -----------------------------------------------------------------------------\n * Navigation Button\n * -------------------------------------------------------------------------- */\n\ninterface NavigationButtonProps extends HTMLAttributes<HTMLButtonElement> {\n onClick: () => void;\n icon: ElementType;\n disabled?: boolean;\n}\n\n// Static classNames - moved outside component to prevent recreation\nconst CALENDAR_NAV_BUTTON_BASE_CLASSNAME =\n 'flex shrink-0 items-center justify-center rounded border p-1 outline-none select-none';\nconst CALENDAR_NAV_BUTTON_SIZE_DEFAULT_CLASSNAME = 'size-7';\nconst CALENDAR_NAV_BUTTON_SIZE_TOUCH_CLASSNAME = 'size-11'; // 44px minimum for WCAG 2.5.5\nconst CALENDAR_NAV_BUTTON_TRANSITION_CLASSNAME = 'transition';\nconst CALENDAR_NAV_BUTTON_STYLE_CLASSNAME =\n 'border-border text-muted-foreground hover:text-foreground hover:bg-muted active:bg-accent';\nconst CALENDAR_NAV_BUTTON_DISABLED_CLASSNAME =\n 'disabled:text-muted-foreground/50 disabled:pointer-events-none';\nconst CALENDAR_NAV_BUTTON_FOCUS_CLASSNAME =\n 'focus-visible:ring-ring focus-visible:ring-offset-background focus-visible:ring-2 focus-visible:ring-offset-2';\nconst CALENDAR_NAV_ICON_CLASSNAME = 'size-full shrink-0';\n\nconst NavigationButton = forwardRef<HTMLButtonElement, NavigationButtonProps>(\n ({ onClick, icon: Icon, disabled, ...props }, forwardedRef) => {\n // Use Mantine's useReducedMotion to respect user accessibility preferences\n const reducedMotion = useReducedMotion() ?? false;\n // Detect touch devices for optimal touch target sizing (WCAG 2.5.5)\n const isTouchDevice = useMediaQuery('(pointer: coarse)') ?? false;\n\n // Memoize button className (conditionally include transition and touch sizing)\n const buttonClassName = useMemo(\n () =>\n cn(\n CALENDAR_NAV_BUTTON_BASE_CLASSNAME,\n isTouchDevice\n ? CALENDAR_NAV_BUTTON_SIZE_TOUCH_CLASSNAME\n : CALENDAR_NAV_BUTTON_SIZE_DEFAULT_CLASSNAME,\n // Only apply transition when user doesn't prefer reduced motion\n !reducedMotion && CALENDAR_NAV_BUTTON_TRANSITION_CLASSNAME,\n CALENDAR_NAV_BUTTON_STYLE_CLASSNAME,\n CALENDAR_NAV_BUTTON_DISABLED_CLASSNAME,\n CALENDAR_NAV_BUTTON_FOCUS_CLASSNAME,\n ),\n [reducedMotion, isTouchDevice],\n );\n\n return (\n <button\n ref={forwardedRef}\n type=\"button\"\n disabled={disabled}\n className={buttonClassName}\n onClick={onClick}\n {...props}\n >\n <Icon className={CALENDAR_NAV_ICON_CLASSNAME} />\n </button>\n );\n },\n);\n\nNavigationButton.displayName = 'NavigationButton';\n\n/* -----------------------------------------------------------------------------\n * Caption Component\n * -------------------------------------------------------------------------- */\n\nfunction CaptionComponent({ calendarMonth }: MonthCaptionProps) {\n const { locale, disableNavigation } = useContext(CalendarContext);\n const { goToMonth, nextMonth, previousMonth } = useNavigation();\n\n // Extract the display month from calendarMonth (react-day-picker v9 API)\n const displayMonth = calendarMonth.date;\n\n const formatOptions = locale\n ? ({ locale: locale as Locale } as FormatOptions | undefined)\n : undefined;\n\n return (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-1\">\n <NavigationButton\n disabled={disableNavigation === true || previousMonth == null}\n aria-label=\"Go to previous month\"\n onClick={() => {\n if (previousMonth != null) goToMonth(previousMonth);\n }}\n icon={ChevronLeft}\n />\n </div>\n\n <div\n role=\"presentation\"\n aria-live=\"polite\"\n className=\"text-foreground text-sm font-medium capitalize tabular-nums\"\n >\n {format(displayMonth, 'LLLL yyy', formatOptions)}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <NavigationButton\n disabled={disableNavigation === true || nextMonth == null}\n aria-label=\"Go to next month\"\n onClick={() => {\n if (nextMonth != null) goToMonth(nextMonth);\n }}\n icon={ChevronRight}\n />\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Calendar Types\n * -------------------------------------------------------------------------- */\n\ntype CalendarProps = DayPickerProps & {\n showYearNavigation?: boolean;\n};\n\n/* -----------------------------------------------------------------------------\n * Calendar Component\n * -------------------------------------------------------------------------- */\n\nfunction Calendar({\n mode = 'single',\n weekStartsOn = 0,\n numberOfMonths = 1,\n showYearNavigation = false,\n disableNavigation,\n locale,\n className,\n classNames,\n ...props\n}: CalendarProps) {\n // Detect touch devices for optimal touch target sizing (WCAG 2.5.5)\n const isTouchDevice = useMediaQuery('(pointer: coarse)') ?? false;\n\n const contextValue = useMemo(\n () => ({ showYearNavigation, disableNavigation, locale }),\n [showYearNavigation, disableNavigation, locale],\n );\n\n const dayPickerProps = {\n mode,\n weekStartsOn,\n numberOfMonths,\n locale,\n showOutsideDays: numberOfMonths === 1,\n className,\n classNames: {\n months: 'flex space-y-0',\n month: 'space-y-4 p-3 w-full',\n nav: 'gap-1 flex items-center rounded-full w-full h-full justify-between p-4',\n table: 'w-full border-separate border-spacing-y-1',\n head_cell: cn(\n 'font-medium text-xs text-center text-muted-foreground pb-2',\n isTouchDevice ? 'w-11' : 'w-9', // Wider header cells on touch for alignment\n ),\n row: 'w-full',\n cell: 'relative p-0 text-center focus-within:relative text-foreground',\n day: cn(\n 'relative rounded-md text-sm text-foreground',\n // 44px (size-11) minimum touch target for WCAG 2.5.5 compliance\n isTouchDevice ? 'size-11' : 'size-10',\n 'hover:bg-muted active:bg-accent outline outline-offset-2 outline-0 focus-visible:outline-2 outline-primary',\n ),\n day_today: 'font-semibold',\n day_selected: 'rounded aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_disabled: '!text-muted-foreground/50 line-through disabled:hover:bg-transparent',\n day_outside: 'text-muted-foreground',\n day_range_middle: '!rounded-none aria-selected:!bg-primary/10 aria-selected:!text-foreground',\n day_range_start: 'rounded-r-none !rounded-l',\n day_range_end: 'rounded-l-none !rounded-r',\n day_hidden: 'invisible',\n ...classNames,\n },\n components: {\n MonthCaption: CaptionComponent,\n },\n ...props,\n } as DayPickerProps;\n\n return (\n <CalendarContext.Provider value={contextValue}>\n <DayPicker {...dayPickerProps} />\n </CalendarContext.Provider>\n );\n}\n\nexport { Calendar, type Matcher };\n","'use client';\n\n/**\n * @fileoverview Presets Component - Premium Harmony V2\n *\n * Accessible preset selection component for date pickers with keyboard shortcuts,\n * quick selection for common ranges, visual shortcut hints, and premium/locked\n * states with tooltips.\n *\n * Features:\n * - Premium Harmony V2 semantic color tokens\n * - Enhanced focus styles with ring indicators\n * - WCAG 2.5.5 touch-friendly interaction targets\n * - Keyboard navigation via cmdk (Command Menu)\n * - Visual keyboard shortcut display\n * - Active preset highlighting\n * - Disabled/locked preset states\n * - Tooltip integration for upgrade prompts\n * - Responsive layout (horizontal scroll on mobile, vertical on desktop)\n * - Smart current value matching\n * - Data attributes for state management\n * - Semantic HTML with proper ARIA labels\n *\n * @module @od-oneapp/uni-ui/components/date-picker/presets\n * @component Presets\n *\n * @useCases\n * - Quick date selection: Common date ranges like \"Today\", \"Last 7 days\", \"This month\"\n * - Analytics shortcuts: Preset reporting periods for dashboards and metrics\n * - Keyboard navigation: Arrow keys for preset selection, Enter to confirm\n * - Keyboard shortcuts: Custom shortcut keys displayed and functional\n * - Premium features: Locked presets requiring upgrade with tooltip explanations\n * - Touch interfaces: Mobile-optimized with adequate touch targets\n * - Current selection: Visual indication of active preset or matching date range\n * - Accessibility: Screen reader support, keyboard focus management\n *\n * @example <Presets presets={[{ id: 'today', label: 'Today', dateRange: { from: today, to: today } }]} onSelect={handleSelect} />\n * @example <Presets presets={[{ id: 'last7', label: 'Last 7 days', shortcut: 'L', dateRange: range }]} onSelect={handleSelect} />\n * @example <Presets presets={[{ id: 'custom', label: 'Custom', requiresUpgrade: true, tooltipContent: 'Upgrade to Pro' }]} onSelect={handleSelect} />\n * @example <Presets currentPresetId=\"last7\" currentValue={currentRange} presets={presets} onSelect={handleSelect} />\n */\n\nimport { useMediaQuery } from '@mantine/hooks';\nimport { Command } from 'cmdk';\nimport { Lock } from 'lucide-react';\n\nimport { cn } from '../../../../lib/utils';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../../../elements/organisms/tooltip';\n\nimport type { DatePreset, DateRange, DateRangePreset, Preset } from '../types';\n\n/* -----------------------------------------------------------------------------\n * Helper Functions (defined outside component for stable references)\n * -------------------------------------------------------------------------- */\n\nfunction isDateRangePresets(preset: unknown): preset is DateRangePreset {\n return typeof preset === 'object' && preset !== null && 'dateRange' in preset;\n}\n\nfunction isDatePresets(preset: unknown): preset is DatePreset {\n return typeof preset === 'object' && preset !== null && 'date' in preset;\n}\n\nfunction compareDates(date1: Date, date2: Date): boolean {\n return (\n date1.getDate() === date2.getDate() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n}\n\nfunction compareRanges(range1: DateRange, range2: DateRange): boolean {\n const from1 = range1.from;\n const from2 = range2.from;\n\n let equalFrom = false;\n\n if (from1 != null && from2 != null) {\n const sameFrom = compareDates(from1, from2);\n if (sameFrom) equalFrom = true;\n }\n\n const to1 = range1.to;\n const to2 = range2.to;\n\n let equalTo = false;\n\n if (to1 != null && to2 != null) {\n const sameTo = compareDates(to1, to2);\n if (sameTo) equalTo = true;\n }\n\n return equalFrom && equalTo;\n}\n\n/* -----------------------------------------------------------------------------\n * Presets Component\n * -------------------------------------------------------------------------- */\n\ninterface PresetsProps<TPreset extends Preset, TValue> {\n presets: TPreset[];\n onSelect: (preset: TPreset) => void;\n currentValue?: TValue;\n currentPresetId?: string;\n}\n\nconst Presets = <TPreset extends Preset, TValue>({\n presets,\n onSelect,\n currentValue,\n currentPresetId,\n}: PresetsProps<TPreset, TValue>) => {\n // Detect touch devices for optimal touch target sizing (WCAG 2.5.5)\n const isTouchDevice = useMediaQuery('(pointer: coarse)') ?? false;\n\n const matchesCurrent = (preset: TPreset) => {\n if (currentPresetId != null) {\n return currentPresetId === preset.id;\n }\n\n if (isDateRangePresets(preset)) {\n const value = currentValue as DateRange | undefined;\n return value != null && compareRanges(value, preset.dateRange);\n } else if (isDatePresets(preset)) {\n const value = currentValue as Date | undefined;\n return value != null && compareDates(value, preset.date);\n }\n\n return false;\n };\n\n return (\n <Command\n className=\"ring-border w-full rounded ring-offset-2 focus:outline-none\"\n tabIndex={0}\n loop\n >\n <Command.List className=\"[&>*]:flex [&>*]:w-full [&>*]:items-start [&>*]:gap-x-2 [&>*]:gap-y-0.5 [&>*]:sm:flex-col\">\n {presets.map(preset => {\n return (\n <Command.Item\n key={preset.id}\n disabled={preset.requiresUpgrade}\n onSelect={() => onSelect(preset)}\n title={preset.label}\n value={preset.id}\n className={cn(\n 'group border-border relative flex cursor-pointer items-center justify-between overflow-hidden rounded border text-ellipsis whitespace-nowrap',\n 'text-foreground px-2.5 text-left text-sm shadow-xs outline-none sm:w-full sm:border-none sm:shadow-none',\n // WCAG 2.5.5: 44px minimum touch target height on touch devices\n isTouchDevice ? 'min-h-11 py-2.5' : 'py-1.5 sm:py-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'sm:data-[selected=true]:bg-muted',\n matchesCurrent(preset) && 'font-semibold',\n )}\n >\n <span>{preset.label}</span>\n {(() => {\n if (preset.requiresUpgrade === true) {\n return <Lock className=\"size-3.5\" aria-hidden=\"true\" />;\n }\n if (preset.shortcut != null) {\n return (\n <kbd className=\"bg-muted text-muted-foreground group-data-[selected=true]:bg-accent hidden rounded px-2 py-0.5 text-xs font-light md:block\">\n {preset.shortcut.toUpperCase()}\n </kbd>\n );\n }\n return null;\n })()}\n {preset.requiresUpgrade === true && preset.tooltipContent != null ? (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"absolute inset-0 cursor-not-allowed\" />\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{preset.tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : null}\n </Command.Item>\n );\n })}\n </Command.List>\n </Command>\n );\n};\n\nPresets.displayName = 'DatePicker.Presets';\n\nexport { Presets };\n","/**\n * @fileoverview Date Picker shared utilities\n *\n * Shared context and utility functions for date picker components.\n *\n * @module @od-oneapp/uni-ui/components/date-picker/shared\n */\n\n'use client';\n\nimport { createContext, type Dispatch, type SetStateAction } from 'react';\n\nimport { format, type Locale } from 'date-fns';\n\nimport type { DatePreset, DateRangePreset, PickerProps } from './types';\n\nexport const DatePickerContext = createContext<{\n isOpen: boolean;\n setIsOpen: Dispatch<SetStateAction<boolean>>;\n}>({\n isOpen: false,\n setIsOpen: () => {},\n});\n\nconst isBrowserLocaleClockType24h = () => {\n const language = typeof window !== 'undefined' ? window.navigator.language : 'en-US';\n\n const hr = new Intl.DateTimeFormat(language, {\n hour: 'numeric',\n }).format();\n\n return Number.isInteger(Number(hr));\n};\n\nexport const formatDate = (date: Date, locale: Locale, includeTime = false): string => {\n const usesAmPm = !isBrowserLocaleClockType24h();\n let dateString: string;\n\n if (includeTime) {\n dateString = usesAmPm\n ? format(date, `d MMM, yyyy h:mm a`, { locale })\n : format(date, `d MMM, yyyy HH:mm`, { locale });\n } else {\n dateString = format(date, `d MMM, yyyy`, { locale });\n }\n\n return dateString;\n};\n\nexport const validatePresets = (presets: DateRangePreset[] | DatePreset[], rules: PickerProps) => {\n const { toYear, fromYear, fromMonth, toMonth, fromDay, toDay } = rules;\n\n if (presets.length > 0) {\n presets.forEach(preset => {\n if ('date' in preset) {\n const presetYear = preset.date.getFullYear();\n\n if (fromYear && presetYear < fromYear) {\n throw new Error(`Preset ${preset.label} is before fromYear ${fromYear}.`);\n }\n\n if (toYear && presetYear > toYear) {\n throw new Error(`Preset ${preset.label} is after toYear ${toYear}.`);\n }\n\n if (fromMonth) {\n const presetMonth = preset.date.getMonth();\n if (presetMonth < fromMonth.getMonth()) {\n throw new Error(`Preset ${preset.label} is before fromMonth.`);\n }\n }\n\n if (toMonth) {\n const presetMonth = preset.date.getMonth();\n if (presetMonth > toMonth.getMonth()) {\n throw new Error(`Preset ${preset.label} is after toMonth.`);\n }\n }\n\n if (fromDay) {\n const presetDay = preset.date.getDate();\n if (presetDay < fromDay.getDate()) {\n throw new Error(`Preset ${preset.label} is before fromDay.`);\n }\n }\n\n if (toDay) {\n const presetDay = preset.date.getDate();\n if (presetDay > toDay.getDate()) {\n throw new Error(`Preset ${preset.label} is after toDay.`);\n }\n }\n }\n\n if ('dateRange' in preset) {\n const presetFromYear = preset.dateRange.from?.getFullYear();\n const presetToYear = preset.dateRange.to?.getFullYear();\n\n if (presetFromYear && fromYear && presetFromYear < fromYear) {\n throw new Error(`Preset ${preset.label}'s 'from' is before fromYear.`);\n }\n\n if (presetToYear && toYear && presetToYear > toYear) {\n throw new Error(`Preset ${preset.label}'s 'to' is after toYear.`);\n }\n }\n });\n }\n};\n","'use client';\n\n/**\n * @fileoverview Date Picker Trigger - Premium Harmony V2\n *\n * Accessible trigger button for date picker popover with comprehensive touch support\n * and Premium Harmony V2 spring physics. Features tactile feedback, automatic touch\n * target sizing, and error state styling.\n *\n * Features:\n * - Premium Harmony V2 spring physics (tactile feedback on tap)\n * - Touch detection with automatic sizing for mobile devices\n * - Reduced motion support for accessibility\n * - WCAG 2.5.5 compliant 44px minimum touch targets on touch devices\n * - Semantic color tokens (no hardcoded colors)\n * - Enhanced focus styles with ring indicators\n * - Data attributes for state management (data-state)\n * - Multiple size variants (sm, default, lg, touch)\n * - Error state styling with visual feedback\n * - Icon + text + chevron layout with proper spacing\n * - Ellipsis overflow handling for long dates\n * - Motion/React spring animations\n *\n * @module @od-oneapp/uni-ui/components/date-picker/trigger\n * @component Trigger\n *\n * @useCases\n * - Date picker activation: Opens calendar popover for date/range selection\n * - Form inputs: Date fields in forms with visual calendar trigger\n * - Filter controls: Date range filters for reports, analytics, data views\n * - Touch interfaces: Mobile-optimized with automatic 44px touch targets (WCAG 2.5.5)\n * - Loading states: Visual feedback during async date validation or data loading\n * - Error states: Visual error indication for invalid date selections\n * - Keyboard navigation: Space/Enter to open, Escape to close with focus management\n * - Screen readers: Proper ARIA labels and state announcements\n *\n * @variants\n * - size: \"sm\" | \"default\" | \"lg\" | \"touch\" - Controls height and padding\n * - hasError: boolean - Applies destructive ring and border styling\n *\n * @example <Trigger placeholder=\"Select date\" />\n * @example <Trigger>Jan 15, 2024</Trigger>\n * @example <Trigger hasError>Invalid date</Trigger>\n * @example <Trigger size=\"touch\">Select date range</Trigger>\n * @example <Trigger size=\"sm\" placeholder=\"Pick date\" />\n */\n\nimport { forwardRef, memo, useMemo, type ComponentProps } from 'react';\n\nimport { useMediaQuery, useReducedMotion } from '@mantine/hooks';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Calendar, ChevronDown } from 'lucide-react';\nimport { motion } from 'motion/react';\n\nimport { cn } from '../../../../lib/utils';\nimport { SPRING_TACTILE } from '../../../ai-elements/ai-elements.constants';\n\n// Default values - moved outside component to prevent recreation\nconst DEFAULT_TRIGGER_BUTTON_TYPE = 'button';\n\n// Static classNames - moved outside component to prevent recreation\nconst TRIGGER_FOCUS_CLASSNAME =\n 'focus-visible:ring-ring focus-visible:ring-offset-background focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none';\nconst TRIGGER_CALENDAR_ICON_BASE_CLASSNAME = 'text-muted-foreground size-4 shrink-0';\nconst TRIGGER_CALENDAR_ICON_WITH_CHILDREN_CLASSNAME = 'text-foreground';\nconst TRIGGER_CONTENT_SPAN_CLASSNAME =\n 'flex-1 overflow-hidden text-left text-ellipsis whitespace-nowrap';\nconst TRIGGER_PLACEHOLDER_CLASSNAME = 'text-muted-foreground';\nconst TRIGGER_CHEVRON_BASE_CLASSNAME = 'text-muted-foreground size-4 shrink-0';\nconst TRIGGER_CHEVRON_TRANSITION_CLASSNAME = 'transition-transform duration-75';\nconst TRIGGER_CHEVRON_OPEN_CLASSNAME = 'group-data-[state=open]:rotate-180';\n\n// Static classNames for trigger base styles - moved outside component to prevent recreation\nconst TRIGGER_BASE_CLASSNAME =\n 'group peer flex cursor-pointer appearance-none items-center gap-x-2 truncate rounded-md border px-3 outline-none text-sm';\nconst TRIGGER_TRANSITION_CLASSNAME = 'transition-all';\nconst TRIGGER_BACKGROUND_CLASSNAME =\n 'bg-background border-input text-foreground placeholder:text-muted-foreground';\nconst TRIGGER_DISABLED_CLASSNAME =\n 'disabled:pointer-events-none disabled:bg-muted disabled:text-muted-foreground';\nconst TRIGGER_FOCUS_BORDER_CLASSNAME =\n 'focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/20';\nconst TRIGGER_OPEN_STATE_CLASSNAME =\n 'data-[state=open]:border-ring data-[state=open]:ring-2 data-[state=open]:ring-ring/20';\nconst TRIGGER_ERROR_CLASSNAME = 'ring-2 ring-destructive/20 border-destructive';\n\nconst triggerStyles = cva(\n [\n TRIGGER_BASE_CLASSNAME,\n TRIGGER_TRANSITION_CLASSNAME,\n TRIGGER_BACKGROUND_CLASSNAME,\n TRIGGER_DISABLED_CLASSNAME,\n TRIGGER_FOCUS_BORDER_CLASSNAME,\n TRIGGER_OPEN_STATE_CLASSNAME,\n ],\n {\n variants: {\n hasError: {\n true: TRIGGER_ERROR_CLASSNAME,\n },\n size: {\n default: 'h-10',\n sm: 'h-9 px-2.5 text-xs',\n lg: 'h-11 px-4 text-base',\n touch: 'h-11 px-3 text-base md:text-sm',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\ninterface TriggerProps extends ComponentProps<'button'>, VariantProps<typeof triggerStyles> {\n placeholder?: string;\n}\n\n// Suppress unused prop type warnings - placeholder is used internally\n\nconst _unusedTriggerProps: Array<keyof TriggerProps> = ['placeholder'];\n\nconst Trigger = memo(\n forwardRef<HTMLButtonElement, TriggerProps>(\n ({ className, children, placeholder, hasError, size, ...props }, forwardedRef) => {\n // Use Mantine's useReducedMotion to respect user accessibility preferences\n const reducedMotion = useReducedMotion() ?? false;\n // Detect touch devices for optimal touch target sizing (WCAG 2.5.5)\n const isTouchDevice = useMediaQuery('(pointer: coarse)') ?? false;\n\n const hasChildren = children != null;\n\n // Auto-select touch size for touch devices if no size specified\n const effectiveSize = size ?? (isTouchDevice ? 'touch' : 'default');\n\n // Memoize button className computation (conditionally include transition)\n const buttonClassName = useMemo(\n () =>\n cn(triggerStyles({ hasError, size: effectiveSize }), TRIGGER_FOCUS_CLASSNAME, className),\n [hasError, effectiveSize, className],\n );\n\n // Memoize calendar icon className\n const calendarIconClassName = useMemo(\n () =>\n cn(\n TRIGGER_CALENDAR_ICON_BASE_CLASSNAME,\n hasChildren && TRIGGER_CALENDAR_ICON_WITH_CHILDREN_CLASSNAME,\n ),\n [hasChildren],\n );\n\n // Memoize chevron className (conditionally include transition)\n const chevronClassName = useMemo(\n () =>\n cn(\n TRIGGER_CHEVRON_BASE_CLASSNAME,\n !reducedMotion && TRIGGER_CHEVRON_TRANSITION_CLASSNAME,\n TRIGGER_CHEVRON_OPEN_CLASSNAME,\n ),\n [reducedMotion],\n );\n\n // Memoize content\n const content = useMemo(() => {\n if (hasChildren) {\n return children;\n }\n if (placeholder != null) {\n return <span className={TRIGGER_PLACEHOLDER_CLASSNAME}>{placeholder}</span>;\n }\n return null;\n }, [hasChildren, children, placeholder]);\n\n return (\n <motion.button\n type=\"button\"\n ref={forwardedRef}\n className={buttonClassName}\n whileTap={reducedMotion ? undefined : { scale: 0.98 }}\n transition={SPRING_TACTILE}\n {...(props as any)}\n >\n <Calendar className={calendarIconClassName} />\n <span className={TRIGGER_CONTENT_SPAN_CLASSNAME}>{content}</span>\n <ChevronDown className={chevronClassName} />\n </motion.button>\n );\n },\n ),\n);\n\nTrigger.displayName = 'DatePicker.Trigger';\n\nexport { Trigger };\nexport type { TriggerProps };\n","'use client';\n\n/**\n * @fileoverview DateRangePicker Component - Premium Harmony V2\n *\n * Accessible date range picker with optional presets, keyboard shortcuts,\n * and comprehensive touch support. Features dual-month desktop view,\n * single-month mobile view, and WCAG-compliant touch targets.\n *\n * Features:\n * - Premium Harmony V2 spring physics via Popover component\n * - Touch detection with automatic sizing for mobile devices\n * - Reduced motion support for accessibility (via Popover)\n * - WCAG 2.5.5 compliant 44px minimum touch targets on touch devices\n * - Semantic color tokens (no hardcoded colors)\n * - Enhanced focus styles with ring indicators\n * - Data attributes for state management (data-state)\n * - Responsive: Single month on mobile, dual months on desktop\n * - Preset shortcuts with keyboard support\n * - Smart date handling: Same-day ranges use full day (00:00 - 23:59)\n * - Scroll progress indicators for preset lists\n * - Cancel/reset functionality preserving initial selection\n * - Controlled and uncontrolled modes\n * - Locale-aware date formatting\n * - Validation and constraint support\n *\n * @module @od-oneapp/uni-ui/components/date-picker/date-range-picker\n * @component DateRangePicker\n *\n * @useCases\n * - Analytics dashboards: Date range selection for reports, charts, metrics\n * - Booking systems: Travel dates, hotel reservations, event scheduling\n * - Filtering data: Historical data queries, log analysis, time-based filtering\n * - Appointment scheduling: Multi-day event planning, shift scheduling\n * - Billing periods: Invoice date ranges, subscription periods, payment cycles\n * - Touch interfaces: Mobile-optimized with automatic 44px touch targets (WCAG 2.5.5)\n * - Quick selection: Preset ranges like \"Last 7 days\", \"This month\", \"Last quarter\"\n * - Same-day ranges: Full day selection from midnight to 11:59:59 PM\n *\n * @example\n * // Basic date range picker\n * <DateRangePicker value={range} onChange={setRange} placeholder=\"Select date range\" />\n *\n * @example\n * // With presets\n * <DateRangePicker value={range} onChange={setRange} presets={presetConfig} />\n *\n * @example\n * // With validation constraints\n * <DateRangePicker fromDate={new Date(2020, 0, 1)} toDate={new Date()} hasError={isInvalid} />\n *\n * @example\n * // Localized\n * <DateRangePicker locale={fr} />\n */\n\nimport {\n type Dispatch,\n type PropsWithChildren,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useDisclosure } from '@mantine/hooks';\nimport { endOfDay, isSameDay, startOfDay } from 'date-fns';\nimport { enUS } from 'date-fns/locale';\n\nimport { useResponsive } from '../../../../hooks/use-responsive';\nimport { useScrollProgress } from '../../../../hooks/use-scroll-progress';\nimport { cn } from '../../../../lib/utils';\nimport { Popover } from '../../../elements/organisms/popover';\nimport { Calendar } from '../calendar';\nimport { Presets } from '../presets';\nimport { DatePickerContext, formatDate, validatePresets } from '../shared';\nimport { Trigger } from '../trigger';\n\nimport type { DateRange, DateRangePreset, PickerProps } from '../types';\nimport type { SelectRangeEventHandler } from 'react-day-picker';\n\ninterface RangeDatePickerProps extends PickerProps {\n presets?: DateRangePreset[];\n presetId?: DateRangePreset['id'];\n defaultValue?: DateRange;\n value?: DateRange;\n onChange?: (dateRange?: DateRange, preset?: DateRangePreset) => void;\n}\n\nconst DateRangePickerInner = ({\n value,\n defaultValue,\n presetId,\n onChange,\n presets,\n disabled,\n disableNavigation,\n disabledDays,\n showYearNavigation = false,\n locale = enUS,\n placeholder = 'Select date range',\n hasError,\n align = 'center',\n className,\n ...props\n}: RangeDatePickerProps) => {\n const { isDesktop } = useResponsive();\n\n // Use Mantine's useDisclosure for boolean open/close state\n const [open, { open: openPopover, close: closePopover }] = useDisclosure(false);\n // Memoize setOpen handler for stable reference\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (newOpen) openPopover();\n else closePopover();\n },\n [openPopover, closePopover],\n );\n const [preset, setPreset] = useState<DateRangePreset | undefined>(\n presets != null && presetId != null ? presets.find(({ id }) => id === presetId) : undefined,\n );\n const [range, setRange] = useState<DateRange | undefined>(\n preset?.dateRange ?? value ?? defaultValue,\n );\n const [month, setMonth] = useState<Date | undefined>(range?.to);\n\n // Store initial range when popover opens for cancel functionality\n const [initialRange, setInitialRange] = useState<DateRange | undefined>(range);\n\n // Update internal state when value prop changes\n useEffect(() => {\n setRange(value);\n }, [value]);\n\n // Update internal state when preset props change\n useEffect(() => {\n const p = presets?.find(({ id }) => id === presetId);\n setPreset(p);\n setRange(p?.dateRange ?? value ?? defaultValue);\n }, [presets, presetId, value, defaultValue]);\n\n // Update month and initial range when popover opens/closes\n useEffect(() => {\n if (open) {\n setInitialRange(range);\n if (range?.to) setMonth(range.to);\n } else {\n if (range?.to) setMonth(range.to);\n }\n }, [open, range]);\n\n // Memoize calendar select handler\n const onCalendarSelect: SelectRangeEventHandler = useCallback(\n (selectedRange: DateRange | undefined, selectedDay: Date | undefined) => {\n // We can hopefully simplify this in the future\n const newRange =\n range?.from != null && range?.to != null ? { from: selectedDay } : selectedRange;\n\n // Handle same-day selection: set start of day and end of day with local timezone\n if (newRange?.from != null && newRange?.to != null && isSameDay(newRange.from, newRange.to)) {\n newRange.from = startOfDay(newRange.from);\n newRange.to = endOfDay(newRange.to);\n }\n\n setRange(newRange);\n setPreset(undefined);\n if (newRange?.from != null && newRange?.to != null) {\n onChange?.(newRange);\n setOpen(false);\n }\n },\n [range, onChange, setOpen],\n );\n\n // Memoize preset selected handler\n const onPresetSelected = useCallback(\n (selectedPreset: DateRangePreset) => {\n let adjustedDateRange = selectedPreset.dateRange;\n\n // Handle same-day selection for presets\n if (\n adjustedDateRange?.from != null &&\n adjustedDateRange?.to != null &&\n isSameDay(adjustedDateRange.from, adjustedDateRange.to)\n ) {\n adjustedDateRange = {\n from: startOfDay(adjustedDateRange.from),\n to: endOfDay(adjustedDateRange.to),\n };\n }\n\n setRange(adjustedDateRange);\n setPreset(selectedPreset);\n onChange?.(adjustedDateRange, selectedPreset);\n setOpen(false);\n },\n [onChange, setOpen],\n );\n\n // Memoize cancel handler\n const onCancel = useCallback(() => {\n setRange(initialRange);\n setOpen(false);\n }, [initialRange, setOpen]);\n\n // Memoize open change handler\n const onOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isOpen) onCancel();\n setOpen(isOpen);\n },\n [onCancel, setOpen],\n );\n\n const displayRange = useMemo(() => {\n if (!range) return null;\n\n return `${range.from != null ? formatDate(range.from, locale) : ''} - ${range.to != null ? formatDate(range.to, locale) : ''}`;\n }, [range, locale]);\n\n const setIsOpenDispatch = useCallback<Dispatch<SetStateAction<boolean>>>(\n value => {\n if (typeof value === 'function') {\n setOpen(value(open));\n } else {\n setOpen(value);\n }\n },\n [open, setOpen],\n );\n\n const contextValue = useMemo(\n () => ({ isOpen: open, setIsOpen: setIsOpenDispatch }),\n [open, setIsOpenDispatch],\n );\n\n return (\n <DatePickerContext.Provider value={contextValue}>\n <Popover\n align={align}\n openPopover={open}\n setOpenPopover={onOpenChange}\n popoverContentClassName=\"rounded-xl\"\n content={\n <div className=\"flex w-full\">\n <div className=\"scrollbar-hide relative flex w-full flex-col overflow-x-scroll sm:flex-row-reverse sm:items-start\">\n {presets != null && presets.length > 0 ? (\n <PresetScrollContainer>\n <div className=\"absolute px-3 sm:inset-0 sm:left-0\">\n <div className=\"sm:py-3\">\n <Presets\n currentPresetId={presetId}\n currentValue={range}\n presets={presets}\n onSelect={onPresetSelected}\n />\n </div>\n </div>\n </PresetScrollContainer>\n ) : null}\n <div className=\"scrollbar-hide overflow-x-scroll\">\n <Calendar\n mode=\"range\"\n selected={range}\n onSelect={onCalendarSelect}\n month={month}\n onMonthChange={setMonth}\n numberOfMonths={isDesktop ? 2 : 1}\n disabled={disabledDays}\n disableNavigation={disableNavigation}\n showYearNavigation={showYearNavigation}\n locale={locale}\n className=\"scrollbar-hide overflow-x-scroll\"\n classNames={{\n months: 'flex flex-row divide-x divide-border overflow-x-scroll scrollbar-hide',\n }}\n {...props}\n />\n </div>\n </div>\n </div>\n }\n >\n <Trigger\n placeholder={placeholder}\n disabled={disabled}\n className={className}\n hasError={hasError}\n aria-required={props.required ?? props['aria-required']}\n aria-invalid={props['aria-invalid']}\n aria-label={props['aria-label']}\n aria-labelledby={props['aria-labelledby']}\n >\n {preset?.label ?? displayRange}\n </Trigger>\n </Popover>\n </DatePickerContext.Provider>\n );\n};\n\nexport function DateRangePicker({ presets, ...props }: RangeDatePickerProps) {\n if (presets != null) validatePresets(presets, props);\n\n return <DateRangePickerInner presets={presets} {...props} />;\n}\n\nfunction PresetScrollContainer({ children }: PropsWithChildren) {\n const ref = useRef<HTMLDivElement>(null);\n const { scrollProgress, updateScrollProgress } = useScrollProgress(ref);\n return (\n <div className=\"relative sm:h-full\">\n <div\n ref={ref}\n onScroll={updateScrollProgress}\n className={cn(\n 'relative flex h-16 w-full items-center sm:h-full sm:w-48',\n 'border-border border-b sm:border-b-0 sm:border-l',\n 'scrollbar-hide overflow-auto',\n )}\n >\n {children}\n </div>\n {/* Bottom scroll fade */}\n <div\n className=\"from-background pointer-events-none absolute bottom-0 left-0 hidden h-16 w-full rounded-b-lg bg-gradient-to-t sm:block\"\n style={{ opacity: 1 - Math.pow(scrollProgress, 2) }}\n />\n </div>\n );\n}\n\nexport type { RangeDatePickerProps };\n"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+
2
+ import * as React$1 from "react";
3
+ import { VariantProps } from "class-variance-authority";
4
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
5
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
6
+ import * as class_variance_authority_types0 from "class-variance-authority/types";
7
+
8
+ //#region src/components/elements/organisms/dialog/dialog.d.ts
9
+ declare function Dialog({
10
+ children,
11
+ ...props
12
+ }: React$1.ComponentProps<typeof DialogPrimitive.Root>): react_jsx_runtime0.JSX.Element;
13
+ declare const DialogTrigger: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
14
+ declare const DialogPortal: (props: React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>) => react_jsx_runtime0.JSX.Element;
15
+ declare const DialogClose: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
16
+ declare const DialogOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
17
+ declare const dialogContentVariants: (props?: ({
18
+ size?: "default" | "sm" | "lg" | "xl" | "full" | null | undefined;
19
+ } & class_variance_authority_types0.ClassProp) | undefined) => string;
20
+ interface DialogContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof dialogContentVariants> {
21
+ showCloseButton?: boolean;
22
+ bounce?: boolean;
23
+ }
24
+ declare const DialogContent: React$1.ForwardRefExoticComponent<DialogContentProps & React$1.RefAttributes<HTMLDivElement>>;
25
+ declare const DialogHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
26
+ declare const DialogFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
27
+ declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
28
+ declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
29
+ //#endregion
30
+ export { DialogFooter as a, DialogPortal as c, dialogContentVariants as d, DialogDescription as i, DialogTitle as l, DialogClose as n, DialogHeader as o, DialogContent as r, DialogOverlay as s, Dialog as t, DialogTrigger as u };
31
+ //# sourceMappingURL=dialog-Di5QhIga.d.mts.map
@@ -0,0 +1,293 @@
1
+ 'use client';
2
+ import { t as cn } from "./utils-D2bGp2p_.mjs";
3
+ import { i as SPRING_GENTLE } from "./motion-zelaDelJ.mjs";
4
+ import { n as ErrorBoundary } from "./error-boundary-Ggc5btkU.mjs";
5
+ import * as React$1 from "react";
6
+ import { forwardRef, useMemo } from "react";
7
+ import { useReducedMotion } from "@mantine/hooks";
8
+ import { cva } from "class-variance-authority";
9
+ import { XIcon } from "lucide-react";
10
+ import { AnimatePresence, motion } from "motion/react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
13
+
14
+ //#region src/components/elements/organisms/dialog/dialog.tsx
15
+ /**
16
+ * @fileoverview Dialog Component - Premium Harmony V2
17
+ *
18
+ * A modal dialog component with customizable sizes for overlaying content.
19
+ * Built on Radix UI Dialog primitives with full accessibility support.
20
+ * Features Premium Harmony V2 spring physics for smooth, focused user interactions.
21
+ *
22
+ * Features:
23
+ * - Premium Harmony V2 spring physics animations (SPRING_GENTLE)
24
+ * - Motion/React for smooth, performant animations
25
+ * - Reduced motion support with useReducedMotion
26
+ * - ES2023 syntax with modern patterns
27
+ * - Tailwind v4 CSS-first theming with CSS variables
28
+ * - Super light/dark mode with seamless switching
29
+ * - CVA size variants (sm, default, lg, xl, full)
30
+ * - Optional bounce animation on open
31
+ * - Radix UI primitives for accessibility
32
+ * - Focus trap and scroll lock
33
+ * - ErrorBoundary wrapper for resilience
34
+ * - Data attributes for state management (data-state)
35
+ * - Semantic color tokens (no hardcoded colors)
36
+ * - Focus-visible ring styles for interactive elements
37
+ * - AnimatePresence for conditional rendering
38
+ *
39
+ * @module @od-oneapp/uni-ui/components/elements/dialog
40
+ * @component Dialog
41
+ *
42
+ * @useCases
43
+ * - Modal dialogs: Confirmations, data entry forms, or critical user decisions
44
+ * - Detail views: Showing expanded information without losing page context
45
+ * - Settings: Contextual configuration panels that overlay the main interface
46
+ * - Notifications: Alerts, warnings, or important messages requiring acknowledgment
47
+ * - Multi-step flows: Wizards or guided processes with sequential dialog states
48
+ * - Media display: Viewing images or videos in a focused modal overlay
49
+ * - Authentication: Login, sign-up, or password reset modal interfaces
50
+ *
51
+ * @subcomponents
52
+ * - Dialog - Root container with ErrorBoundary
53
+ * - DialogTrigger - Button/element that opens the dialog
54
+ * - DialogPortal - Portal container
55
+ * - DialogClose - Close button element
56
+ * - DialogOverlay - Background overlay with backdrop blur
57
+ * - DialogContent - Main content container
58
+ * - DialogHeader - Header section
59
+ * - DialogFooter - Footer section
60
+ * - DialogTitle - Dialog title
61
+ * - DialogDescription - Dialog description
62
+ *
63
+ * @variants
64
+ * - size: sm | default | lg | xl | full (DialogContent)
65
+ * - bounce: boolean (adds entry spring effect)
66
+ *
67
+ * @example
68
+ * // Standard confirmation dialog
69
+ * <Dialog>
70
+ * <DialogTrigger asChild><Button>Delete Account</Button></DialogTrigger>
71
+ * <DialogContent size="sm">
72
+ * <DialogHeader>
73
+ * <DialogTitle>Are you sure?</DialogTitle>
74
+ * <DialogDescription>This action cannot be undone.</DialogDescription>
75
+ * </DialogHeader>
76
+ * <DialogFooter>
77
+ * <DialogClose asChild><Button variant="ghost">Cancel</Button></DialogClose>
78
+ * <Button variant="destructive">Confirm</Button>
79
+ * </DialogFooter>
80
+ * </DialogContent>
81
+ * </Dialog>
82
+ *
83
+ * @example
84
+ * // Wide form dialog with bounce
85
+ * <Dialog>
86
+ * <DialogTrigger asChild><Button>Edit Profile</Button></DialogTrigger>
87
+ * <DialogContent size="lg" bounce>
88
+ * <DialogHeader>
89
+ * <DialogTitle>Edit Profile</DialogTitle>
90
+ * </DialogHeader>
91
+ * <form>Profile fields go here</form>
92
+ * </DialogContent>
93
+ * </Dialog>
94
+ */
95
+ const DialogContext = React$1.createContext({ open: false });
96
+ const useDialogContext = () => React$1.useContext(DialogContext);
97
+ /**
98
+ * Dialog root component that provides an error boundary around the underlying dialog root and forwards all received props.
99
+ *
100
+ * @param props - Props to pass through to the underlying DialogPrimitive.Root
101
+ * @returns The rendered dialog root element wrapped with an error boundary
102
+ */
103
+ function Dialog({ children, ...props }) {
104
+ const contextValue = useMemo(() => ({ open: props.open ?? false }), [props.open]);
105
+ return /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(DialogPrimitive.Root, {
106
+ "data-slot": "dialog",
107
+ ...props,
108
+ children: /* @__PURE__ */ jsx(DialogContext.Provider, {
109
+ value: contextValue,
110
+ children
111
+ })
112
+ }) });
113
+ }
114
+ const DIALOG_TRIGGER_BASE_CLASSNAME = "focus-visible:ring-ring focus-visible:ring-offset-background focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none";
115
+ const DIALOG_OVERLAY_BASE_CLASSNAME = "bg-backdrop fixed inset-0 z-50 backdrop-blur-xs";
116
+ const DIALOG_CLOSE_BUTTON_BASE_CLASSNAME = "ring-offset-background focus:ring-ring absolute top-4 right-4 inline-flex min-h-11 min-w-11 items-center justify-center rounded-xs opacity-70 transition-[opacity,transform] hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-4";
117
+ const DIALOG_CLOSE_SR_ONLY_CLASSNAME = "sr-only";
118
+ const DIALOG_HEADER_BASE_CLASSNAME = "flex flex-col gap-2 text-center sm:text-left";
119
+ const DIALOG_FOOTER_BASE_CLASSNAME = "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end";
120
+ const DIALOG_TITLE_BASE_CLASSNAME = "text-lg leading-none font-semibold";
121
+ const DIALOG_DESCRIPTION_BASE_CLASSNAME = "text-muted-foreground text-sm";
122
+ const DIALOG_CLOSE_ICON = /* @__PURE__ */ jsx(XIcon, {});
123
+ const DIALOG_CLOSE_SR_TEXT = /* @__PURE__ */ jsx("span", {
124
+ className: DIALOG_CLOSE_SR_ONLY_CLASSNAME,
125
+ children: "Close"
126
+ });
127
+ /**
128
+ * Renders a dialog trigger that wraps Radix's Trigger with preset focus-visible styles and a data-slot attribute.
129
+ *
130
+ * @param className - Additional CSS classes to merge with the component's focus-visible utilities.
131
+ * @returns A DialogTrigger element that forwards all other props to Radix's Trigger.
132
+ */
133
+ const DialogTrigger = forwardRef(function DialogTrigger({ className, ...props }, ref) {
134
+ const triggerClassName = useMemo(() => cn(DIALOG_TRIGGER_BASE_CLASSNAME, className), [className]);
135
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, {
136
+ ref,
137
+ "data-slot": "dialog-trigger",
138
+ className: triggerClassName,
139
+ ...props
140
+ });
141
+ });
142
+ /**
143
+ * Renders a dialog portal element and forwards all props to the underlying Portal.
144
+ *
145
+ * @param props - Props forwarded to the underlying Portal element.
146
+ * @returns A Portal element with `data-slot="dialog-portal"` and the forwarded props.
147
+ */
148
+ const DialogPortal = function DialogPortal(props) {
149
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, {
150
+ "data-slot": "dialog-portal",
151
+ ...props
152
+ });
153
+ };
154
+ const DialogClose = forwardRef(function DialogClose(props, ref) {
155
+ return /* @__PURE__ */ jsx(DialogPrimitive.Close, {
156
+ ref,
157
+ "data-slot": "dialog-close",
158
+ ...props
159
+ });
160
+ });
161
+ const DialogOverlay = forwardRef(function DialogOverlay({ className, ...props }, ref) {
162
+ const reducedMotion = useReducedMotion() ?? false;
163
+ const { open } = useDialogContext();
164
+ const overlayClassName = useMemo(() => cn(DIALOG_OVERLAY_BASE_CLASSNAME, className), [className]);
165
+ return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
166
+ ref,
167
+ asChild: true,
168
+ forceMount: true,
169
+ children: /* @__PURE__ */ jsx(motion.div, {
170
+ "data-slot": "dialog-overlay",
171
+ "data-state": open ? "open" : "closed",
172
+ className: overlayClassName,
173
+ initial: { opacity: 0 },
174
+ animate: { opacity: 1 },
175
+ exit: { opacity: 0 },
176
+ transition: reducedMotion ? { duration: 0 } : { duration: .2 },
177
+ ...props
178
+ })
179
+ });
180
+ });
181
+ const dialogContentVariants = cva("bg-background fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] rounded-lg border shadow-lg", {
182
+ variants: { size: {
183
+ sm: "gap-4 p-5 sm:max-w-sm",
184
+ default: "gap-5 p-6 sm:max-w-lg",
185
+ lg: "gap-6 p-8 sm:max-w-2xl",
186
+ xl: "gap-7 p-10 sm:max-w-4xl",
187
+ full: "gap-5 p-6 sm:max-w-[calc(100%-4rem)]"
188
+ } },
189
+ defaultVariants: { size: "default" }
190
+ });
191
+ const DialogContent = forwardRef(function DialogContent({ className, children, showCloseButton = true, size, bounce = false, ...props }, ref) {
192
+ const { open } = useDialogContext();
193
+ const reducedMotion = useReducedMotion() ?? false;
194
+ const contentClassName = useMemo(() => cn(dialogContentVariants({ size }), className), [size, className]);
195
+ const closeButtonElement = useMemo(() => showCloseButton ? /* @__PURE__ */ jsx(DialogPrimitive.Close, {
196
+ asChild: true,
197
+ children: /* @__PURE__ */ jsxs(motion.button, {
198
+ "data-slot": "dialog-close",
199
+ className: DIALOG_CLOSE_BUTTON_BASE_CLASSNAME,
200
+ whileTap: reducedMotion ? void 0 : { scale: .95 },
201
+ transition: reducedMotion ? { duration: 0 } : SPRING_GENTLE,
202
+ children: [DIALOG_CLOSE_ICON, DIALOG_CLOSE_SR_TEXT]
203
+ })
204
+ }) : null, [showCloseButton, reducedMotion]);
205
+ return /* @__PURE__ */ jsx(AnimatePresence, { children: open ? /* @__PURE__ */ jsxs(DialogPortal, {
206
+ forceMount: true,
207
+ children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsx(DialogPrimitive.Content, {
208
+ ref,
209
+ asChild: true,
210
+ forceMount: true,
211
+ ...props,
212
+ children: /* @__PURE__ */ jsxs(motion.div, {
213
+ "data-slot": "dialog-content",
214
+ "data-state": open ? "open" : "closed",
215
+ className: contentClassName,
216
+ initial: reducedMotion ? { opacity: 0 } : bounce ? {
217
+ opacity: 0,
218
+ scale: .9,
219
+ y: "-40%",
220
+ x: "-50%"
221
+ } : {
222
+ opacity: 0,
223
+ scale: .95,
224
+ y: "-50%",
225
+ x: "-50%"
226
+ },
227
+ animate: {
228
+ opacity: 1,
229
+ scale: 1,
230
+ y: "-50%",
231
+ x: "-50%"
232
+ },
233
+ exit: reducedMotion ? { opacity: 0 } : bounce ? {
234
+ opacity: 0,
235
+ scale: .9,
236
+ y: "-40%",
237
+ x: "-50%"
238
+ } : {
239
+ opacity: 0,
240
+ scale: .95,
241
+ y: "-50%",
242
+ x: "-50%"
243
+ },
244
+ transition: reducedMotion ? { duration: 0 } : bounce ? {
245
+ type: "spring",
246
+ stiffness: 300,
247
+ damping: 20
248
+ } : SPRING_GENTLE,
249
+ children: [children, closeButtonElement]
250
+ })
251
+ })]
252
+ }) : null });
253
+ });
254
+ const DialogHeader = forwardRef(function DialogHeader({ className, ...props }, ref) {
255
+ const headerClassName = useMemo(() => cn(DIALOG_HEADER_BASE_CLASSNAME, className), [className]);
256
+ return /* @__PURE__ */ jsx("div", {
257
+ ref,
258
+ "data-slot": "dialog-header",
259
+ className: headerClassName,
260
+ ...props
261
+ });
262
+ });
263
+ const DialogFooter = forwardRef(function DialogFooter({ className, ...props }, ref) {
264
+ const footerClassName = useMemo(() => cn(DIALOG_FOOTER_BASE_CLASSNAME, className), [className]);
265
+ return /* @__PURE__ */ jsx("div", {
266
+ ref,
267
+ "data-slot": "dialog-footer",
268
+ className: footerClassName,
269
+ ...props
270
+ });
271
+ });
272
+ const DialogTitle = forwardRef(function DialogTitle({ className, ...props }, ref) {
273
+ const titleClassName = useMemo(() => cn(DIALOG_TITLE_BASE_CLASSNAME, className), [className]);
274
+ return /* @__PURE__ */ jsx(DialogPrimitive.Title, {
275
+ ref,
276
+ "data-slot": "dialog-title",
277
+ className: titleClassName,
278
+ ...props
279
+ });
280
+ });
281
+ const DialogDescription = forwardRef(function DialogDescription({ className, ...props }, ref) {
282
+ const descriptionClassName = useMemo(() => cn(DIALOG_DESCRIPTION_BASE_CLASSNAME, className), [className]);
283
+ return /* @__PURE__ */ jsx(DialogPrimitive.Description, {
284
+ ref,
285
+ "data-slot": "dialog-description",
286
+ className: descriptionClassName,
287
+ ...props
288
+ });
289
+ });
290
+
291
+ //#endregion
292
+ export { DialogFooter as a, DialogPortal as c, dialogContentVariants as d, DialogDescription as i, DialogTitle as l, DialogClose as n, DialogHeader as o, DialogContent as r, DialogOverlay as s, Dialog as t, DialogTrigger as u };
293
+ //# sourceMappingURL=dialog-DuluSpxA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-DuluSpxA.mjs","names":["React"],"sources":["../src/components/elements/organisms/dialog/dialog.tsx"],"sourcesContent":["/**\n * @fileoverview Dialog Component - Premium Harmony V2\n *\n * A modal dialog component with customizable sizes for overlaying content.\n * Built on Radix UI Dialog primitives with full accessibility support.\n * Features Premium Harmony V2 spring physics for smooth, focused user interactions.\n *\n * Features:\n * - Premium Harmony V2 spring physics animations (SPRING_GENTLE)\n * - Motion/React for smooth, performant animations\n * - Reduced motion support with useReducedMotion\n * - ES2023 syntax with modern patterns\n * - Tailwind v4 CSS-first theming with CSS variables\n * - Super light/dark mode with seamless switching\n * - CVA size variants (sm, default, lg, xl, full)\n * - Optional bounce animation on open\n * - Radix UI primitives for accessibility\n * - Focus trap and scroll lock\n * - ErrorBoundary wrapper for resilience\n * - Data attributes for state management (data-state)\n * - Semantic color tokens (no hardcoded colors)\n * - Focus-visible ring styles for interactive elements\n * - AnimatePresence for conditional rendering\n *\n * @module @od-oneapp/uni-ui/components/elements/dialog\n * @component Dialog\n *\n * @useCases\n * - Modal dialogs: Confirmations, data entry forms, or critical user decisions\n * - Detail views: Showing expanded information without losing page context\n * - Settings: Contextual configuration panels that overlay the main interface\n * - Notifications: Alerts, warnings, or important messages requiring acknowledgment\n * - Multi-step flows: Wizards or guided processes with sequential dialog states\n * - Media display: Viewing images or videos in a focused modal overlay\n * - Authentication: Login, sign-up, or password reset modal interfaces\n *\n * @subcomponents\n * - Dialog - Root container with ErrorBoundary\n * - DialogTrigger - Button/element that opens the dialog\n * - DialogPortal - Portal container\n * - DialogClose - Close button element\n * - DialogOverlay - Background overlay with backdrop blur\n * - DialogContent - Main content container\n * - DialogHeader - Header section\n * - DialogFooter - Footer section\n * - DialogTitle - Dialog title\n * - DialogDescription - Dialog description\n *\n * @variants\n * - size: sm | default | lg | xl | full (DialogContent)\n * - bounce: boolean (adds entry spring effect)\n *\n * @example\n * // Standard confirmation dialog\n * <Dialog>\n * <DialogTrigger asChild><Button>Delete Account</Button></DialogTrigger>\n * <DialogContent size=\"sm\">\n * <DialogHeader>\n * <DialogTitle>Are you sure?</DialogTitle>\n * <DialogDescription>This action cannot be undone.</DialogDescription>\n * </DialogHeader>\n * <DialogFooter>\n * <DialogClose asChild><Button variant=\"ghost\">Cancel</Button></DialogClose>\n * <Button variant=\"destructive\">Confirm</Button>\n * </DialogFooter>\n * </DialogContent>\n * </Dialog>\n *\n * @example\n * // Wide form dialog with bounce\n * <Dialog>\n * <DialogTrigger asChild><Button>Edit Profile</Button></DialogTrigger>\n * <DialogContent size=\"lg\" bounce>\n * <DialogHeader>\n * <DialogTitle>Edit Profile</DialogTitle>\n * </DialogHeader>\n * <form>Profile fields go here</form>\n * </DialogContent>\n * </Dialog>\n */\n\n'use client';\n\nimport * as React from 'react';\nimport { forwardRef, useMemo } from 'react';\n\nimport { useReducedMotion } from '@mantine/hooks';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\nimport { AnimatePresence, motion } from 'motion/react';\n\nimport { SPRING_GENTLE } from '../../../../constants/motion';\nimport { cn } from '../../../../lib/utils';\nimport { ErrorBoundary } from '../error-boundary';\n\nconst DialogContext = React.createContext<{ open: boolean }>({ open: false });\n\nconst useDialogContext = () => React.useContext(DialogContext);\n\n/**\n * Dialog root component that provides an error boundary around the underlying dialog root and forwards all received props.\n *\n * @param props - Props to pass through to the underlying DialogPrimitive.Root\n * @returns The rendered dialog root element wrapped with an error boundary\n */\nfunction Dialog({ children, ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n const contextValue = useMemo(() => ({ open: props.open ?? false }), [props.open]);\n return (\n <ErrorBoundary>\n <DialogPrimitive.Root data-slot=\"dialog\" {...props}>\n <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>\n </DialogPrimitive.Root>\n </ErrorBoundary>\n );\n}\n\n// Static classNames - moved outside components to prevent recreation\nconst DIALOG_TRIGGER_BASE_CLASSNAME =\n 'focus-visible:ring-ring focus-visible:ring-offset-background focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none';\nconst DIALOG_OVERLAY_BASE_CLASSNAME = 'bg-backdrop fixed inset-0 z-50 backdrop-blur-xs';\nconst DIALOG_CLOSE_BUTTON_BASE_CLASSNAME =\n 'ring-offset-background focus:ring-ring absolute top-4 right-4 inline-flex min-h-11 min-w-11 items-center justify-center rounded-xs opacity-70 transition-[opacity,transform] hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-4';\nconst DIALOG_CLOSE_SR_ONLY_CLASSNAME = 'sr-only';\nconst DIALOG_HEADER_BASE_CLASSNAME = 'flex flex-col gap-2 text-center sm:text-left';\nconst DIALOG_FOOTER_BASE_CLASSNAME = 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end';\nconst DIALOG_TITLE_BASE_CLASSNAME = 'text-lg leading-none font-semibold';\nconst DIALOG_DESCRIPTION_BASE_CLASSNAME = 'text-muted-foreground text-sm';\n\n// Default React elements - moved outside components to prevent recreation\nconst DIALOG_CLOSE_ICON = <XIcon />;\nconst DIALOG_CLOSE_SR_TEXT = <span className={DIALOG_CLOSE_SR_ONLY_CLASSNAME}>Close</span>;\n\n/**\n * Renders a dialog trigger that wraps Radix's Trigger with preset focus-visible styles and a data-slot attribute.\n *\n * @param className - Additional CSS classes to merge with the component's focus-visible utilities.\n * @returns A DialogTrigger element that forwards all other props to Radix's Trigger.\n */\nconst DialogTrigger = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger>\n>(function DialogTrigger({ className, ...props }, ref) {\n const triggerClassName = useMemo(() => cn(DIALOG_TRIGGER_BASE_CLASSNAME, className), [className]);\n\n return (\n <DialogPrimitive.Trigger\n ref={ref}\n data-slot=\"dialog-trigger\"\n className={triggerClassName}\n {...props}\n />\n );\n});\n\n/**\n * Renders a dialog portal element and forwards all props to the underlying Portal.\n *\n * @param props - Props forwarded to the underlying Portal element.\n * @returns A Portal element with `data-slot=\"dialog-portal\"` and the forwarded props.\n */\nconst DialogPortal = function DialogPortal(\n props: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>,\n) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n};\n\nconst DialogClose = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>\n>(function DialogClose(props, ref) {\n return <DialogPrimitive.Close ref={ref} data-slot=\"dialog-close\" {...props} />;\n});\n\nconst DialogOverlay = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(function DialogOverlay({ className, ...props }, ref) {\n const reducedMotion = useReducedMotion() ?? false;\n const { open } = useDialogContext();\n\n const overlayClassName = useMemo(() => cn(DIALOG_OVERLAY_BASE_CLASSNAME, className), [className]);\n\n return (\n <DialogPrimitive.Overlay ref={ref} asChild forceMount>\n <motion.div\n data-slot=\"dialog-overlay\"\n data-state={open ? 'open' : 'closed'}\n className={overlayClassName}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={reducedMotion ? { duration: 0 } : { duration: 0.2 }}\n {...(props as any)}\n />\n </DialogPrimitive.Overlay>\n );\n});\n\nconst dialogContentVariants = cva(\n 'bg-background fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] rounded-lg border shadow-lg',\n {\n variants: {\n size: {\n sm: 'gap-4 p-5 sm:max-w-sm',\n default: 'gap-5 p-6 sm:max-w-lg',\n lg: 'gap-6 p-8 sm:max-w-2xl',\n xl: 'gap-7 p-10 sm:max-w-4xl',\n full: 'gap-5 p-6 sm:max-w-[calc(100%-4rem)]',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\ninterface DialogContentProps\n extends\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof dialogContentVariants> {\n showCloseButton?: boolean;\n /** Enable bounce animation on open */\n bounce?: boolean;\n}\n\nconst DialogContent = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(function DialogContent(\n { className, children, showCloseButton = true, size, bounce = false, ...props },\n ref,\n) {\n const { open } = useDialogContext();\n const reducedMotion = useReducedMotion() ?? false;\n\n const contentClassName = useMemo(\n () => cn(dialogContentVariants({ size }), className),\n [size, className],\n );\n\n const closeButtonElement = useMemo(\n () =>\n showCloseButton ? (\n <DialogPrimitive.Close asChild>\n <motion.button\n data-slot=\"dialog-close\"\n className={DIALOG_CLOSE_BUTTON_BASE_CLASSNAME}\n whileTap={reducedMotion ? undefined : { scale: 0.95 }}\n transition={reducedMotion ? { duration: 0 } : SPRING_GENTLE}\n >\n {DIALOG_CLOSE_ICON}\n {DIALOG_CLOSE_SR_TEXT}\n </motion.button>\n </DialogPrimitive.Close>\n ) : null,\n [showCloseButton, reducedMotion],\n );\n\n return (\n <AnimatePresence>\n {open ? (\n <DialogPortal forceMount>\n <DialogOverlay />\n <DialogPrimitive.Content ref={ref} asChild forceMount {...props}>\n <motion.div\n data-slot=\"dialog-content\"\n data-state={open ? 'open' : 'closed'}\n className={contentClassName}\n initial={\n reducedMotion\n ? { opacity: 0 }\n : (bounce\n ? { opacity: 0, scale: 0.9, y: '-40%', x: '-50%' }\n : { opacity: 0, scale: 0.95, y: '-50%', x: '-50%' })\n }\n animate={{ opacity: 1, scale: 1, y: '-50%', x: '-50%' }}\n exit={\n reducedMotion\n ? { opacity: 0 }\n : (bounce\n ? { opacity: 0, scale: 0.9, y: '-40%', x: '-50%' }\n : { opacity: 0, scale: 0.95, y: '-50%', x: '-50%' })\n }\n transition={\n reducedMotion\n ? { duration: 0 }\n : (bounce\n ? { type: 'spring', stiffness: 300, damping: 20 }\n : SPRING_GENTLE)\n }\n >\n {children}\n {closeButtonElement}\n </motion.div>\n </DialogPrimitive.Content>\n </DialogPortal>\n ) : null}\n </AnimatePresence>\n );\n});\n\nconst DialogHeader = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function DialogHeader({ className, ...props }, ref) {\n const headerClassName = useMemo(() => cn(DIALOG_HEADER_BASE_CLASSNAME, className), [className]);\n\n return <div ref={ref} data-slot=\"dialog-header\" className={headerClassName} {...props} />;\n },\n);\n\nconst DialogFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function DialogFooter({ className, ...props }, ref) {\n const footerClassName = useMemo(() => cn(DIALOG_FOOTER_BASE_CLASSNAME, className), [className]);\n\n return <div ref={ref} data-slot=\"dialog-footer\" className={footerClassName} {...props} />;\n },\n);\n\nconst DialogTitle = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(function DialogTitle({ className, ...props }, ref) {\n const titleClassName = useMemo(() => cn(DIALOG_TITLE_BASE_CLASSNAME, className), [className]);\n\n return (\n <DialogPrimitive.Title\n ref={ref}\n data-slot=\"dialog-title\"\n className={titleClassName}\n {...props}\n />\n );\n});\n\nconst DialogDescription = forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(function DialogDescription({ className, ...props }, ref) {\n const descriptionClassName = useMemo(\n () => cn(DIALOG_DESCRIPTION_BASE_CLASSNAME, className),\n [className],\n );\n\n return (\n <DialogPrimitive.Description\n ref={ref}\n data-slot=\"dialog-description\"\n className={descriptionClassName}\n {...props}\n />\n );\n});\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n dialogContentVariants,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"mappings":"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"}