@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,235 @@
1
+ 'use client';
2
+ import { t as cn } from "./utils-D2bGp2p_.mjs";
3
+ import { a as DropdownMenuItem, h as DropdownMenuTrigger, i as DropdownMenuGroup, o as DropdownMenuLabel, r as DropdownMenuContent, t as DropdownMenu } from "./dropdown-menu-91g1g_Cl.mjs";
4
+ import { t as Separator } from "./separator-veJJBul5.mjs";
5
+ import { d as SidebarMenu, h as SidebarMenuItem, m as SidebarMenuButton } from "./sidebar-CdWE7H3R.mjs";
6
+ import * as React$1 from "react";
7
+ import { useDisclosure, useMediaQuery } from "@mantine/hooks";
8
+ import { Check, ChevronsUpDown } from "lucide-react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+
11
+ //#region src/components/layout/nav-app-switcher/nav-app-switcher.tsx
12
+ /**
13
+ * @fileoverview NavAppSwitcher Component - Premium Harmony V2
14
+ *
15
+ * A sidebar component for switching between different applications or products.
16
+ * Displays the current application with a dropdown menu to select others,
17
+ * featuring Premium Harmony V2 motion standards and accessibility enhancements.
18
+ *
19
+ * Features:
20
+ * - Premium Harmony V2 spring physics for smooth animations
21
+ * - Touch detection with automatic sizing for mobile devices
22
+ * - Reduced motion support for accessibility compliance
23
+ * - WCAG 2.5.5 compliant 44px minimum touch targets on touch devices
24
+ * - Semantic focus styles with ring indicators
25
+ * - Animated chevron rotation on open/close
26
+ * - Support for custom Link component (e.g., Next.js Link)
27
+ *
28
+ * @module @od-oneapp/uni-ui/components/layout/nav-app-switcher
29
+ * @component NavAppSwitcher
30
+ *
31
+ * @useCases
32
+ * - Multi-app navigation: Switching between different products in a suite
33
+ * - Organizational context: Moving between different business units or departments
34
+ * - Admin dashboards: Quick access to system-wide administration tools
35
+ * - User portal: Navigating between personal, team, and enterprise contexts
36
+ *
37
+ * @example
38
+ * const apps = [
39
+ * { id: 'app1', name: 'App One', icon: Home, url: '/' },
40
+ * { id: 'app2', name: 'App Two', icon: Settings, url: '/settings' },
41
+ * ];
42
+ * <NavAppSwitcher currentApp={apps[0]} apps={apps} onAppSelect={(app) => console.log('Selected:', app.name)} />
43
+ */
44
+ /**
45
+ * Navigation application switcher component
46
+ *
47
+ * Provides a dropdown interface in the sidebar to switch between different
48
+ * products or organizational units. Applies Premium Harmony V2 patterns
49
+ * including touch detection and spring-based animations.
50
+ *
51
+ * @param {NavAppSwitcherProps} props - Component props
52
+ * @returns {JSX.Element} Rendered app switcher
53
+ */
54
+ function NavAppSwitcher({ currentApp, apps, onAppSelect, LinkComponent = "a" }) {
55
+ const [mounted, setMounted] = React$1.useState(false);
56
+ const [opened, { open, close }] = useDisclosure(false);
57
+ const closeTimeoutRef = React$1.useRef(null);
58
+ const isTouch = useMediaQuery("(pointer: coarse)");
59
+ React$1.useEffect(() => {
60
+ setMounted(true);
61
+ }, []);
62
+ const touchActive = mounted && isTouch;
63
+ const handleMouseEnter = React$1.useCallback(() => {
64
+ if (touchActive) return;
65
+ if (closeTimeoutRef.current) {
66
+ clearTimeout(closeTimeoutRef.current);
67
+ closeTimeoutRef.current = null;
68
+ }
69
+ open();
70
+ }, [touchActive, open]);
71
+ const handleMouseLeave = React$1.useCallback(() => {
72
+ if (touchActive) return;
73
+ if (closeTimeoutRef.current) clearTimeout(closeTimeoutRef.current);
74
+ closeTimeoutRef.current = setTimeout(() => {
75
+ close();
76
+ closeTimeoutRef.current = null;
77
+ }, 150);
78
+ }, [touchActive, close]);
79
+ React$1.useEffect(() => {
80
+ return () => {
81
+ if (closeTimeoutRef.current) clearTimeout(closeTimeoutRef.current);
82
+ };
83
+ }, []);
84
+ return /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, {
85
+ "data-touch": touchActive ? "true" : void 0,
86
+ onMouseEnter: handleMouseEnter,
87
+ onMouseLeave: handleMouseLeave,
88
+ children: /* @__PURE__ */ jsxs(DropdownMenu, {
89
+ open: opened,
90
+ onOpenChange: (v) => v ? open() : close(),
91
+ children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
92
+ asChild: true,
93
+ children: /* @__PURE__ */ jsxs(SidebarMenuButton, {
94
+ size: "lg",
95
+ className: "transition-none",
96
+ style: touchActive ? {
97
+ minHeight: "44px",
98
+ minWidth: "44px"
99
+ } : void 0,
100
+ children: [
101
+ /* @__PURE__ */ jsx("div", {
102
+ className: "bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg",
103
+ children: /* @__PURE__ */ jsx(currentApp.icon, {
104
+ className: "size-4",
105
+ "aria-hidden": "true"
106
+ })
107
+ }),
108
+ /* @__PURE__ */ jsxs("div", {
109
+ className: "grid flex-1 text-left text-sm leading-tight",
110
+ children: [/* @__PURE__ */ jsx("span", {
111
+ className: "truncate font-semibold",
112
+ children: currentApp.name
113
+ }), currentApp.subtitle ? /* @__PURE__ */ jsx("span", {
114
+ className: "text-muted-foreground truncate text-xs",
115
+ children: currentApp.subtitle
116
+ }) : null]
117
+ }),
118
+ /* @__PURE__ */ jsx("div", {
119
+ className: "ml-auto flex items-center justify-center",
120
+ "aria-hidden": "true",
121
+ children: /* @__PURE__ */ jsx(ChevronsUpDown, { className: "size-4 opacity-50" })
122
+ })
123
+ ]
124
+ })
125
+ }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
126
+ className: "w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-md p-0 shadow-xl",
127
+ side: "bottom",
128
+ align: "start",
129
+ sideOffset: -49,
130
+ animate: false,
131
+ onMouseEnter: handleMouseEnter,
132
+ onMouseLeave: handleMouseLeave,
133
+ children: [
134
+ /* @__PURE__ */ jsx(DropdownMenuLabel, {
135
+ className: "p-0 font-normal",
136
+ children: /* @__PURE__ */ jsxs("div", {
137
+ className: "flex items-center gap-2 p-2 text-left text-sm",
138
+ children: [/* @__PURE__ */ jsx("div", {
139
+ className: "bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg",
140
+ children: /* @__PURE__ */ jsx(currentApp.icon, {
141
+ className: "size-4",
142
+ "aria-hidden": "true"
143
+ })
144
+ }), /* @__PURE__ */ jsxs("div", {
145
+ className: "grid flex-1 text-left text-sm leading-tight",
146
+ children: [/* @__PURE__ */ jsx("span", {
147
+ className: "truncate font-semibold",
148
+ children: currentApp.name
149
+ }), currentApp.subtitle ? /* @__PURE__ */ jsx("span", {
150
+ className: "text-muted-foreground truncate text-xs",
151
+ children: currentApp.subtitle
152
+ }) : null]
153
+ })]
154
+ })
155
+ }),
156
+ /* @__PURE__ */ jsx(Separator, { className: "bg-border h-px" }),
157
+ /* @__PURE__ */ jsxs(DropdownMenuGroup, {
158
+ className: "p-1",
159
+ children: [/* @__PURE__ */ jsx(DropdownMenuLabel, {
160
+ className: "text-muted-foreground px-2 py-1.5 text-xs font-medium",
161
+ children: "Switch Application"
162
+ }), apps.filter((app) => app.id !== currentApp.id).map((app) => /* @__PURE__ */ jsx(DropdownMenuItem, {
163
+ onClick: () => onAppSelect?.(app),
164
+ className: cn("p-2", touchActive && "min-h-[44px]"),
165
+ asChild: true,
166
+ animate: false,
167
+ children: /* @__PURE__ */ jsxs(LinkComponent, {
168
+ href: app.url,
169
+ prefetch: false,
170
+ className: "flex items-center gap-2",
171
+ children: [
172
+ /* @__PURE__ */ jsx("div", {
173
+ className: "border-sidebar-border flex size-8 items-center justify-center rounded-sm border",
174
+ children: /* @__PURE__ */ jsx(app.icon, {
175
+ className: "size-4 shrink-0",
176
+ "aria-hidden": "true"
177
+ })
178
+ }),
179
+ /* @__PURE__ */ jsxs("div", {
180
+ className: "flex flex-1 flex-col text-sm",
181
+ children: [/* @__PURE__ */ jsx("span", {
182
+ className: "font-medium",
183
+ children: app.name
184
+ }), app.subtitle ? /* @__PURE__ */ jsx("span", {
185
+ className: "text-muted-foreground text-xs",
186
+ children: app.subtitle
187
+ }) : null]
188
+ }),
189
+ app.isActive ? /* @__PURE__ */ jsx(Check, { className: "ml-auto size-4 shrink-0 opacity-100" }) : null
190
+ ]
191
+ })
192
+ }, app.id))]
193
+ }),
194
+ /* @__PURE__ */ jsx(Separator, { className: "bg-border h-px" }),
195
+ /* @__PURE__ */ jsx("div", {
196
+ className: "p-1",
197
+ children: /* @__PURE__ */ jsx(DropdownMenuItem, {
198
+ className: "p-2",
199
+ asChild: true,
200
+ animate: false,
201
+ children: /* @__PURE__ */ jsxs(LinkComponent, {
202
+ href: "/apps",
203
+ prefetch: false,
204
+ className: "flex items-center gap-2",
205
+ children: [/* @__PURE__ */ jsx("div", {
206
+ className: "border-sidebar-border bg-background flex size-8 items-center justify-center rounded-sm border",
207
+ children: /* @__PURE__ */ jsx("span", {
208
+ className: "text-xs font-bold",
209
+ children: "+"
210
+ })
211
+ }), /* @__PURE__ */ jsx("div", {
212
+ className: "font-medium",
213
+ children: "Explore all apps"
214
+ })]
215
+ })
216
+ })
217
+ })
218
+ ]
219
+ })]
220
+ })
221
+ }) });
222
+ }
223
+ /**
224
+ * OneDigital Brand Logo component for use in the app switcher
225
+ */
226
+ const OneDigitalLogo = ({ className, ...props }) => /* @__PURE__ */ jsx("img", {
227
+ src: "/cropped-Triad_2022.png",
228
+ alt: "OneDigital",
229
+ className: cn("object-contain", className),
230
+ ...props
231
+ });
232
+
233
+ //#endregion
234
+ export { OneDigitalLogo as n, NavAppSwitcher as t };
235
+ //# sourceMappingURL=nav-app-switcher-V7aJAC18.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-app-switcher-V7aJAC18.mjs","names":["React"],"sources":["../src/components/layout/nav-app-switcher/nav-app-switcher.tsx"],"sourcesContent":["/**\n * @fileoverview NavAppSwitcher Component - Premium Harmony V2\n *\n * A sidebar component for switching between different applications or products.\n * Displays the current application with a dropdown menu to select others,\n * featuring Premium Harmony V2 motion standards and accessibility enhancements.\n *\n * Features:\n * - Premium Harmony V2 spring physics for smooth animations\n * - Touch detection with automatic sizing for mobile devices\n * - Reduced motion support for accessibility compliance\n * - WCAG 2.5.5 compliant 44px minimum touch targets on touch devices\n * - Semantic focus styles with ring indicators\n * - Animated chevron rotation on open/close\n * - Support for custom Link component (e.g., Next.js Link)\n *\n * @module @od-oneapp/uni-ui/components/layout/nav-app-switcher\n * @component NavAppSwitcher\n *\n * @useCases\n * - Multi-app navigation: Switching between different products in a suite\n * - Organizational context: Moving between different business units or departments\n * - Admin dashboards: Quick access to system-wide administration tools\n * - User portal: Navigating between personal, team, and enterprise contexts\n *\n * @example\n * const apps = [\n * { id: 'app1', name: 'App One', icon: Home, url: '/' },\n * { id: 'app2', name: 'App Two', icon: Settings, url: '/settings' },\n * ];\n * <NavAppSwitcher currentApp={apps[0]} apps={apps} onAppSelect={(app) => console.log('Selected:', app.name)} />\n */\n\n'use client';\n\nimport * as React from 'react';\n\nimport { useDisclosure, useMediaQuery } from '@mantine/hooks';\nimport { Check, ChevronsUpDown } from 'lucide-react';\n\nimport { cn } from '../../../lib/utils';\nimport { Separator } from '../../elements/atoms/separator/separator';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuTrigger,\n} from '../../elements/organisms/dropdown-menu';\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '../sidebar';\n\n/**\n * Application definition for the switcher\n */\nexport interface App {\n /** Unique identifier for the app */\n id: string;\n /** Display name of the application */\n name: string;\n /** Optional subtitle or description */\n subtitle?: string;\n /** Icon component to display for the app (Lucide icon or custom component) */\n icon: React.ComponentType<{ className?: string; 'aria-hidden'?: boolean | 'true' | 'false' }>;\n /** URL for the application */\n url: string;\n /** Whether this app is currently active */\n isActive?: boolean;\n}\n\n/**\n * Props for NavAppSwitcher component\n */\nexport interface NavAppSwitcherProps {\n /** Current active app information */\n currentApp: App;\n /** List of available apps to switch between */\n apps: App[];\n /** Callback triggered when an app is selected */\n onAppSelect?: (app: App) => void;\n /** Custom link component for navigation */\n LinkComponent?: React.ElementType<{\n href: string;\n children: React.ReactNode;\n className?: string;\n prefetch?: boolean;\n }>;\n}\n\n/**\n * Navigation application switcher component\n *\n * Provides a dropdown interface in the sidebar to switch between different\n * products or organizational units. Applies Premium Harmony V2 patterns\n * including touch detection and spring-based animations.\n *\n * @param {NavAppSwitcherProps} props - Component props\n * @returns {JSX.Element} Rendered app switcher\n */\nexport function NavAppSwitcher({\n currentApp,\n apps,\n onAppSelect,\n LinkComponent = 'a',\n}: NavAppSwitcherProps) {\n const [mounted, setMounted] = React.useState(false);\n const [opened, { open, close }] = useDisclosure(false);\n const closeTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Premium Harmony V2: Touch detection for mobile devices\n const isTouch = useMediaQuery('(pointer: coarse)');\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n // Avoid hydration mismatch by only applying touch-specific attributes on the client\n const touchActive = mounted && isTouch;\n\n // Unified hover handlers for both trigger and content\n const handleMouseEnter = React.useCallback(() => {\n if (touchActive) return;\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = null;\n }\n open();\n }, [touchActive, open]);\n\n const handleMouseLeave = React.useCallback(() => {\n if (touchActive) return;\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n closeTimeoutRef.current = setTimeout(() => {\n close();\n closeTimeoutRef.current = null;\n }, 150);\n }, [touchActive, close]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <SidebarMenu>\n <SidebarMenuItem\n data-touch={touchActive ? 'true' : undefined}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <DropdownMenu open={opened} onOpenChange={v => (v ? open() : close())}>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"transition-none\"\n // WCAG 2.5.5: Ensure 44px minimum touch target on touch devices\n style={\n touchActive\n ? {\n minHeight: '44px',\n minWidth: '44px',\n }\n : undefined\n }\n >\n <div className=\"bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg\">\n <currentApp.icon className=\"size-4\" aria-hidden=\"true\" />\n </div>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{currentApp.name}</span>\n {currentApp.subtitle ? (\n <span className=\"text-muted-foreground truncate text-xs\">\n {currentApp.subtitle}\n </span>\n ) : null}\n </div>\n <div className=\"ml-auto flex items-center justify-center\" aria-hidden=\"true\">\n <ChevronsUpDown className=\"size-4 opacity-50\" />\n </div>\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-md p-0 shadow-xl\"\n side=\"bottom\"\n align=\"start\"\n sideOffset={-49}\n animate={false}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 p-2 text-left text-sm\">\n <div className=\"bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg\">\n <currentApp.icon className=\"size-4\" aria-hidden=\"true\" />\n </div>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{currentApp.name}</span>\n {currentApp.subtitle ? (\n <span className=\"text-muted-foreground truncate text-xs\">\n {currentApp.subtitle}\n </span>\n ) : null}\n </div>\n </div>\n </DropdownMenuLabel>\n <Separator className=\"bg-border h-px\" />\n <DropdownMenuGroup className=\"p-1\">\n <DropdownMenuLabel className=\"text-muted-foreground px-2 py-1.5 text-xs font-medium\">\n Switch Application\n </DropdownMenuLabel>\n {apps\n .filter(app => app.id !== currentApp.id)\n .map(app => (\n <DropdownMenuItem\n key={app.id}\n onClick={() => onAppSelect?.(app)}\n className={cn('p-2', touchActive && 'min-h-[44px]')}\n asChild\n animate={false}\n >\n <LinkComponent\n href={app.url}\n prefetch={false}\n className=\"flex items-center gap-2\"\n >\n <div className=\"border-sidebar-border flex size-8 items-center justify-center rounded-sm border\">\n <app.icon className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n </div>\n <div className=\"flex flex-1 flex-col text-sm\">\n <span className=\"font-medium\">{app.name}</span>\n {app.subtitle ? (\n <span className=\"text-muted-foreground text-xs\">{app.subtitle}</span>\n ) : null}\n </div>\n {app.isActive ? (\n <Check className=\"ml-auto size-4 shrink-0 opacity-100\" />\n ) : null}\n </LinkComponent>\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n <Separator className=\"bg-border h-px\" />\n <div className=\"p-1\">\n <DropdownMenuItem className=\"p-2\" asChild animate={false}>\n <LinkComponent href=\"/apps\" prefetch={false} className=\"flex items-center gap-2\">\n <div className=\"border-sidebar-border bg-background flex size-8 items-center justify-center rounded-sm border\">\n <span className=\"text-xs font-bold\">+</span>\n </div>\n <div className=\"font-medium\">Explore all apps</div>\n </LinkComponent>\n </DropdownMenuItem>\n </div>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n\n/**\n * OneDigital Brand Logo component for use in the app switcher\n */\nexport const OneDigitalLogo = ({\n className,\n ...props\n}: {\n className?: string;\n [key: string]: any;\n}) => (\n <img\n src=\"/cropped-Triad_2022.png\"\n alt=\"OneDigital\"\n className={cn('object-contain', className)}\n {...props}\n />\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGA,SAAgB,eAAe,EAC7B,YACA,MACA,aACA,gBAAgB,OACM;CACtB,MAAM,CAAC,SAAS,cAAcA,QAAM,SAAS,MAAM;CACnD,MAAM,CAAC,QAAQ,EAAE,MAAM,WAAW,cAAc,MAAM;CACtD,MAAM,kBAAkBA,QAAM,OAA6C,KAAK;CAGhF,MAAM,UAAU,cAAc,oBAAoB;AAElD,SAAM,gBAAgB;AACpB,aAAW,KAAK;IACf,EAAE,CAAC;CAGN,MAAM,cAAc,WAAW;CAG/B,MAAM,mBAAmBA,QAAM,kBAAkB;AAC/C,MAAI,YAAa;AACjB,MAAI,gBAAgB,SAAS;AAC3B,gBAAa,gBAAgB,QAAQ;AACrC,mBAAgB,UAAU;;AAE5B,QAAM;IACL,CAAC,aAAa,KAAK,CAAC;CAEvB,MAAM,mBAAmBA,QAAM,kBAAkB;AAC/C,MAAI,YAAa;AACjB,MAAI,gBAAgB,QAClB,cAAa,gBAAgB,QAAQ;AAEvC,kBAAgB,UAAU,iBAAiB;AACzC,UAAO;AACP,mBAAgB,UAAU;KACzB,IAAI;IACN,CAAC,aAAa,MAAM,CAAC;AAGxB,SAAM,gBAAgB;AACpB,eAAa;AACX,OAAI,gBAAgB,QAClB,cAAa,gBAAgB,QAAQ;;IAGxC,EAAE,CAAC;AAEN,QACE,oBAAC,yBACC,oBAAC;EACC,cAAY,cAAc,SAAS;EACnC,cAAc;EACd,cAAc;YAEd,qBAAC;GAAa,MAAM;GAAQ,eAAc,MAAM,IAAI,MAAM,GAAG,OAAO;cAClE,oBAAC;IAAoB;cACnB,qBAAC;KACC,MAAK;KACL,WAAU;KAEV,OACE,cACI;MACE,WAAW;MACX,UAAU;MACX,GACD;;MAGN,oBAAC;OAAI,WAAU;iBACb,oBAAC,WAAW;QAAK,WAAU;QAAS,eAAY;SAAS;QACrD;MACN,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAK,WAAU;kBAA0B,WAAW;SAAY,EAChE,WAAW,WACV,oBAAC;QAAK,WAAU;kBACb,WAAW;SACP,GACL;QACA;MACN,oBAAC;OAAI,WAAU;OAA2C,eAAY;iBACpE,oBAAC,kBAAe,WAAU,sBAAsB;QAC5C;;MACY;KACA,EACtB,qBAAC;IACC,WAAU;IACV,MAAK;IACL,OAAM;IACN,YAAY;IACZ,SAAS;IACT,cAAc;IACd,cAAc;;KAEd,oBAAC;MAAkB,WAAU;gBAC3B,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAI,WAAU;kBACb,oBAAC,WAAW;SAAK,WAAU;SAAS,eAAY;UAAS;SACrD,EACN,qBAAC;QAAI,WAAU;mBACb,oBAAC;SAAK,WAAU;mBAA0B,WAAW;UAAY,EAChE,WAAW,WACV,oBAAC;SAAK,WAAU;mBACb,WAAW;UACP,GACL;SACA;QACF;OACY;KACpB,oBAAC,aAAU,WAAU,mBAAmB;KACxC,qBAAC;MAAkB,WAAU;iBAC3B,oBAAC;OAAkB,WAAU;iBAAwD;QAEjE,EACnB,KACE,QAAO,QAAO,IAAI,OAAO,WAAW,GAAG,CACvC,KAAI,QACH,oBAAC;OAEC,eAAe,cAAc,IAAI;OACjC,WAAW,GAAG,OAAO,eAAe,eAAe;OACnD;OACA,SAAS;iBAET,qBAAC;QACC,MAAM,IAAI;QACV,UAAU;QACV,WAAU;;SAEV,oBAAC;UAAI,WAAU;oBACb,oBAAC,IAAI;WAAK,WAAU;WAAkB,eAAY;YAAS;WACvD;SACN,qBAAC;UAAI,WAAU;qBACb,oBAAC;WAAK,WAAU;qBAAe,IAAI;YAAY,EAC9C,IAAI,WACH,oBAAC;WAAK,WAAU;qBAAiC,IAAI;YAAgB,GACnE;WACA;SACL,IAAI,WACH,oBAAC,SAAM,WAAU,wCAAwC,GACvD;;SACU;SAvBX,IAAI,GAwBQ,CACnB;OACc;KACpB,oBAAC,aAAU,WAAU,mBAAmB;KACxC,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAiB,WAAU;OAAM;OAAQ,SAAS;iBACjD,qBAAC;QAAc,MAAK;QAAQ,UAAU;QAAO,WAAU;mBACrD,oBAAC;SAAI,WAAU;mBACb,oBAAC;UAAK,WAAU;oBAAoB;WAAQ;UACxC,EACN,oBAAC;SAAI,WAAU;mBAAc;UAAsB;SACrC;QACC;OACf;;KACc;IACT;GACC,GACN;;;;;AAOlB,MAAa,kBAAkB,EAC7B,WACA,GAAG,YAKH,oBAAC;CACC,KAAI;CACJ,KAAI;CACJ,WAAW,GAAG,kBAAkB,UAAU;CAC1C,GAAI;EACJ"}
@@ -0,0 +1,105 @@
1
+ 'use client';
2
+ import { r as SPRING_FLUID, t as AI_FOCUS } from "./motion-zelaDelJ.mjs";
3
+ import { _ as SidebarMenuSub, d as SidebarMenu, h as SidebarMenuItem, i as SidebarGroup, m as SidebarMenuButton, s as SidebarGroupLabel, v as SidebarMenuSubButton, y as SidebarMenuSubItem } from "./sidebar-CdWE7H3R.mjs";
4
+ import { i as CollapsibleTrigger, n as CollapsibleContent, t as Collapsible } from "./collapsible-CXy4T04n.mjs";
5
+ import * as React$1 from "react";
6
+ import { useMediaQuery, useReducedMotion } from "@mantine/hooks";
7
+ import { ChevronRight } from "lucide-react";
8
+ import { motion } from "motion/react";
9
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
+
11
+ //#region src/components/layout/nav-main/nav-main.tsx
12
+ /**
13
+ * Individual navigation menu item with collapsible sub-items
14
+ * Applies Premium Harmony V2 patterns for touch and motion
15
+ */
16
+ function NavMenuItem({ item, LinkComponent = "a" }) {
17
+ const [open, setOpen] = React$1.useState(item.isActive ?? false);
18
+ const [mounted, setMounted] = React$1.useState(false);
19
+ const isTouch = useMediaQuery("(pointer: coarse)");
20
+ const prefersReducedMotion = useReducedMotion();
21
+ React$1.useEffect(() => {
22
+ setMounted(true);
23
+ }, []);
24
+ const touchActive = mounted && isTouch;
25
+ const chevronTransition = React$1.useMemo(() => prefersReducedMotion ? { duration: .2 } : SPRING_FLUID, [prefersReducedMotion]);
26
+ return /* @__PURE__ */ jsx(Collapsible, {
27
+ asChild: true,
28
+ open,
29
+ onOpenChange: setOpen,
30
+ children: /* @__PURE__ */ jsx(SidebarMenuItem, {
31
+ "data-touch": touchActive ? "true" : void 0,
32
+ children: item.items?.length ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
33
+ asChild: true,
34
+ children: /* @__PURE__ */ jsxs(SidebarMenuButton, {
35
+ tooltip: item.title,
36
+ className: AI_FOCUS.ring,
37
+ "data-state": open ? "open" : "closed",
38
+ style: touchActive ? {
39
+ minHeight: "44px",
40
+ minWidth: "44px"
41
+ } : void 0,
42
+ children: [
43
+ /* @__PURE__ */ jsx(item.icon, { "aria-hidden": "true" }),
44
+ /* @__PURE__ */ jsx("span", { children: item.title }),
45
+ /* @__PURE__ */ jsx(motion.div, {
46
+ animate: { rotate: open ? 90 : 0 },
47
+ transition: chevronTransition,
48
+ className: "ml-auto flex items-center justify-center",
49
+ "aria-hidden": "true",
50
+ children: /* @__PURE__ */ jsx(ChevronRight, { className: "size-4" })
51
+ })
52
+ ]
53
+ })
54
+ }), /* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsx(SidebarMenuSub, { children: item.items.map((subItem) => /* @__PURE__ */ jsx(SidebarMenuSubItem, { children: /* @__PURE__ */ jsx(SidebarMenuSubButton, {
55
+ asChild: true,
56
+ className: AI_FOCUS.ring,
57
+ onClick: (e) => {
58
+ e.stopPropagation();
59
+ },
60
+ style: touchActive ? {
61
+ minHeight: "44px",
62
+ minWidth: "44px"
63
+ } : void 0,
64
+ children: /* @__PURE__ */ jsx(LinkComponent, {
65
+ href: subItem.url,
66
+ prefetch: false,
67
+ children: /* @__PURE__ */ jsx("span", { children: subItem.title })
68
+ })
69
+ }) }, subItem.title)) }) })] }) : /* @__PURE__ */ jsx(SidebarMenuButton, {
70
+ asChild: true,
71
+ tooltip: item.title,
72
+ className: AI_FOCUS.ring,
73
+ style: touchActive ? {
74
+ minHeight: "44px",
75
+ minWidth: "44px"
76
+ } : void 0,
77
+ children: /* @__PURE__ */ jsxs(LinkComponent, {
78
+ href: item.url,
79
+ prefetch: false,
80
+ children: [/* @__PURE__ */ jsx(item.icon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", { children: item.title })]
81
+ })
82
+ })
83
+ })
84
+ });
85
+ }
86
+ /**
87
+ * Main navigation component for sidebar menus
88
+ *
89
+ * Renders a labeled navigation group with collapsible sub-items.
90
+ * Applies Premium Harmony V2 patterns including touch detection,
91
+ * reduced motion support, and 44px minimum touch targets.
92
+ *
93
+ * @param {NavMainProps} props - Component props
94
+ * @returns {JSX.Element} Rendered navigation group
95
+ */
96
+ function NavMain({ items, label = "Platform", LinkComponent = "a" }) {
97
+ return /* @__PURE__ */ jsxs(SidebarGroup, { children: [/* @__PURE__ */ jsx(SidebarGroupLabel, { children: label }), /* @__PURE__ */ jsx(SidebarMenu, { children: items.map((item) => /* @__PURE__ */ jsx(NavMenuItem, {
98
+ item,
99
+ LinkComponent
100
+ }, item.title)) })] });
101
+ }
102
+
103
+ //#endregion
104
+ export { NavMain as t };
105
+ //# sourceMappingURL=nav-main-BscfzNoi.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-main-BscfzNoi.mjs","names":["React"],"sources":["../src/components/layout/nav-main/nav-main.tsx"],"sourcesContent":["'use client';\n\n/**\n * @fileoverview NavMain Component - Premium Harmony V2\n *\n * Main navigation component for sidebar menus with collapsible sub-items.\n * Supports nested navigation structures with icons, active state tracking,\n * and Premium Harmony V2 motion standards.\n *\n * Features:\n * - ES2023 syntax with modern patterns\n * - Tailwind v4 CSS-first theming with CSS variables\n * - Premium Harmony V2 spring physics for smooth chevron rotation\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 focus styles from design tokens\n * - Collapsible sub-navigation with spring animations\n * - Active state tracking and persistence\n * - Polymorphic link rendering for framework integration\n * - Data attributes for state management\n *\n * @module @od-oneapp/uni-ui/components/layout/nav-main\n * @component NavMain, NavMenuItem\n *\n * @useCases\n * - Application sidebar navigation with hierarchical menu structure\n * - Dashboard layouts with categorized navigation sections\n * - Admin panels with nested settings and configuration menus\n * - Multi-tenant applications with organization/team navigation\n * - Content management systems with section-based navigation\n * - Mobile-responsive navigation with touch-optimized targets\n * - Accessibility-compliant navigation for keyboard and screen reader users\n * - Framework-agnostic navigation (Next.js, React Router, etc.)\n *\n * @example\n * import { NavMain } from '@od-oneapp/uni-ui/components/layout/nav-main';\n * import { Home, Settings, Users } from 'lucide-react';\n * import Link from 'next/link';\n * const items = [\n * { title: 'Home', url: '/', icon: Home, isActive: true },\n * { title: 'Settings', url: '/settings', icon: Settings,\n * items: [{ title: 'Profile', url: '/settings/profile' }] },\n * ];\n * <NavMain items={items} label=\"Platform\" LinkComponent={Link} />\n *\n * @example\n * <NavMain items={navigationItems} label=\"Dashboard\" LinkComponent={RouterLink} />\n */\n\nimport type { ComponentType } from 'react';\nimport * as React from 'react';\n\nimport { useMediaQuery, useReducedMotion } from '@mantine/hooks';\nimport { ChevronRight, type LucideIcon } from 'lucide-react';\nimport { motion } from 'motion/react';\n\nimport { AI_FOCUS, SPRING_FLUID } from '../../../constants/motion';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '../../elements/molecules/collapsible';\nimport {\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n} from '../sidebar';\n\n/**\n * Navigation item configuration\n * Supports both flat and nested navigation structures\n */\ninterface NavItem {\n /** Display title for the navigation item */\n title: string;\n /** URL/path for the navigation item */\n url: string;\n /** Icon component (Lucide or custom React component) */\n icon: LucideIcon | ComponentType<any>;\n /** Whether this item is currently active (controls default open state for collapsibles) */\n isActive?: boolean;\n /** Optional nested sub-items (creates collapsible navigation group) */\n items?: {\n /** Display title for the sub-item */\n title: string;\n /** URL/path for the sub-item */\n url: string;\n }[];\n}\n\n/**\n * Individual navigation menu item with collapsible sub-items\n * Applies Premium Harmony V2 patterns for touch and motion\n */\nfunction NavMenuItem({\n item,\n LinkComponent = 'a',\n}: {\n item: NavItem;\n LinkComponent?: React.ElementType;\n}) {\n const [open, setOpen] = React.useState(item.isActive ?? false);\n const [mounted, setMounted] = React.useState(false);\n\n // Premium Harmony V2: Touch detection for mobile devices\n const isTouch = useMediaQuery('(pointer: coarse)');\n\n // Premium Harmony V2: Reduced motion support\n const prefersReducedMotion = useReducedMotion();\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n // Avoid hydration mismatch by only applying touch-specific attributes on the client\n const touchActive = mounted && isTouch;\n\n // Calculate spring transition based on motion preferences\n const chevronTransition = React.useMemo(\n () =>\n prefersReducedMotion\n ? { duration: 0.2 } // Faster, simpler animation for reduced motion\n : SPRING_FLUID, // Premium spring physics for normal motion\n [prefersReducedMotion],\n );\n\n return (\n <Collapsible asChild open={open} onOpenChange={setOpen}>\n <SidebarMenuItem data-touch={touchActive ? 'true' : undefined}>\n {item.items?.length ? (\n <>\n <CollapsibleTrigger asChild>\n <SidebarMenuButton\n tooltip={item.title}\n className={AI_FOCUS.ring}\n data-state={open ? 'open' : 'closed'}\n // WCAG 2.5.5: Ensure 44px minimum touch target on touch devices\n style={\n touchActive\n ? {\n minHeight: '44px',\n minWidth: '44px',\n }\n : undefined\n }\n >\n <item.icon aria-hidden=\"true\" />\n <span>{item.title}</span>\n <motion.div\n animate={{ rotate: open ? 90 : 0 }}\n transition={chevronTransition}\n className=\"ml-auto flex items-center justify-center\"\n aria-hidden=\"true\"\n >\n <ChevronRight className=\"size-4\" />\n </motion.div>\n </SidebarMenuButton>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <SidebarMenuSub>\n {item.items.map(subItem => (\n <SidebarMenuSubItem key={subItem.title}>\n <SidebarMenuSubButton\n asChild\n className={AI_FOCUS.ring}\n onClick={e => {\n // Prevent closing the group when clicking sub-items\n e.stopPropagation();\n }}\n // WCAG 2.5.5: Ensure 44px minimum touch target on touch devices\n style={\n touchActive\n ? {\n minHeight: '44px',\n minWidth: '44px',\n }\n : undefined\n }\n >\n <LinkComponent href={subItem.url} prefetch={false}>\n <span>{subItem.title}</span>\n </LinkComponent>\n </SidebarMenuSubButton>\n </SidebarMenuSubItem>\n ))}\n </SidebarMenuSub>\n </CollapsibleContent>\n </>\n ) : (\n <SidebarMenuButton\n asChild\n tooltip={item.title}\n className={AI_FOCUS.ring}\n // WCAG 2.5.5: Ensure 44px minimum touch target on touch devices\n style={\n touchActive\n ? {\n minHeight: '44px',\n minWidth: '44px',\n }\n : undefined\n }\n >\n <LinkComponent href={item.url} prefetch={false}>\n <item.icon aria-hidden=\"true\" />\n <span>{item.title}</span>\n </LinkComponent>\n </SidebarMenuButton>\n )}\n </SidebarMenuItem>\n </Collapsible>\n );\n}\n\n/**\n * Props for NavMain component\n */\ninterface NavMainProps {\n /** Array of navigation items to render */\n items: NavItem[];\n /** Label for the navigation group (e.g., \"Platform\", \"Dashboard\") */\n label?: string;\n /**\n * Custom link component for navigation.\n * Use `Link` from `next/link` or `@vercel/microfrontends/next/client` for Next.js apps.\n * Use `Link` from `react-router-dom` for React Router apps.\n * @default 'a' - Regular anchor element\n */\n LinkComponent?: React.ElementType;\n}\n\n/**\n * Main navigation component for sidebar menus\n *\n * Renders a labeled navigation group with collapsible sub-items.\n * Applies Premium Harmony V2 patterns including touch detection,\n * reduced motion support, and 44px minimum touch targets.\n *\n * @param {NavMainProps} props - Component props\n * @returns {JSX.Element} Rendered navigation group\n */\nexport function NavMain({ items, label = 'Platform', LinkComponent = 'a' }: NavMainProps) {\n return (\n <SidebarGroup>\n <SidebarGroupLabel>{label}</SidebarGroupLabel>\n <SidebarMenu>\n {items.map(item => (\n <NavMenuItem key={item.title} item={item} LinkComponent={LinkComponent} />\n ))}\n </SidebarMenu>\n </SidebarGroup>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoGA,SAAS,YAAY,EACnB,MACA,gBAAgB,OAIf;CACD,MAAM,CAAC,MAAM,WAAWA,QAAM,SAAS,KAAK,YAAY,MAAM;CAC9D,MAAM,CAAC,SAAS,cAAcA,QAAM,SAAS,MAAM;CAGnD,MAAM,UAAU,cAAc,oBAAoB;CAGlD,MAAM,uBAAuB,kBAAkB;AAE/C,SAAM,gBAAgB;AACpB,aAAW,KAAK;IACf,EAAE,CAAC;CAGN,MAAM,cAAc,WAAW;CAG/B,MAAM,oBAAoBA,QAAM,cAE5B,uBACI,EAAE,UAAU,IAAK,GACjB,cACN,CAAC,qBAAqB,CACvB;AAED,QACE,oBAAC;EAAY;EAAc;EAAM,cAAc;YAC7C,oBAAC;GAAgB,cAAY,cAAc,SAAS;aACjD,KAAK,OAAO,SACX,8CACE,oBAAC;IAAmB;cAClB,qBAAC;KACC,SAAS,KAAK;KACd,WAAW,SAAS;KACpB,cAAY,OAAO,SAAS;KAE5B,OACE,cACI;MACE,WAAW;MACX,UAAU;MACX,GACD;;MAGN,oBAAC,KAAK,QAAK,eAAY,SAAS;MAChC,oBAAC,oBAAM,KAAK,QAAa;MACzB,oBAAC,OAAO;OACN,SAAS,EAAE,QAAQ,OAAO,KAAK,GAAG;OAClC,YAAY;OACZ,WAAU;OACV,eAAY;iBAEZ,oBAAC,gBAAa,WAAU,WAAW;QACxB;;MACK;KACD,EACrB,oBAAC,gCACC,oBAAC,4BACE,KAAK,MAAM,KAAI,YACd,oBAAC,gCACC,oBAAC;IACC;IACA,WAAW,SAAS;IACpB,UAAS,MAAK;AAEZ,OAAE,iBAAiB;;IAGrB,OACE,cACI;KACE,WAAW;KACX,UAAU;KACX,GACD;cAGN,oBAAC;KAAc,MAAM,QAAQ;KAAK,UAAU;eAC1C,oBAAC,oBAAM,QAAQ,QAAa;MACd;KACK,IArBA,QAAQ,MAsBZ,CACrB,GACa,GACE,IACpB,GAEH,oBAAC;IACC;IACA,SAAS,KAAK;IACd,WAAW,SAAS;IAEpB,OACE,cACI;KACE,WAAW;KACX,UAAU;KACX,GACD;cAGN,qBAAC;KAAc,MAAM,KAAK;KAAK,UAAU;gBACvC,oBAAC,KAAK,QAAK,eAAY,SAAS,EAChC,oBAAC,oBAAM,KAAK,QAAa;MACX;KACE;IAEN;GACN;;;;;;;;;;;;AA+BlB,SAAgB,QAAQ,EAAE,OAAO,QAAQ,YAAY,gBAAgB,OAAqB;AACxF,QACE,qBAAC,2BACC,oBAAC,+BAAmB,QAA0B,EAC9C,oBAAC,yBACE,MAAM,KAAI,SACT,oBAAC;EAAmC;EAAqB;IAAvC,KAAK,MAAmD,CAC1E,GACU,IACD"}
@@ -0,0 +1,51 @@
1
+ 'use client';
2
+ import { AI_FOCUS } from "./components-ai-elements-constants.mjs";
3
+ import { d as SidebarMenu, h as SidebarMenuItem, i as SidebarGroup, m as SidebarMenuButton, o as SidebarGroupContent } from "./sidebar-CdWE7H3R.mjs";
4
+ import * as React$1 from "react";
5
+ import { useMediaQuery } from "@mantine/hooks";
6
+ import "lucide-react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+
9
+ //#region src/components/layout/nav-secondary/nav-secondary.tsx
10
+ /**
11
+ * Secondary navigation component for sidebar menus
12
+ *
13
+ * Renders a simple list of navigation links for secondary/utility actions.
14
+ * Applies Premium Harmony V2 patterns including touch detection,
15
+ * reduced motion support, and 44px minimum touch targets.
16
+ *
17
+ * @param {NavSecondaryProps} props - Component props
18
+ * @returns {JSX.Element} Rendered navigation group
19
+ */
20
+ function NavSecondary({ items, LinkComponent = "a", ...props }) {
21
+ const [mounted, setMounted] = React$1.useState(false);
22
+ const isTouch = useMediaQuery("(pointer: coarse)");
23
+ React$1.useEffect(() => {
24
+ setMounted(true);
25
+ }, []);
26
+ const touchActive = mounted && isTouch;
27
+ return /* @__PURE__ */ jsx(SidebarGroup, {
28
+ ...props,
29
+ children: /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: items.map((item) => /* @__PURE__ */ jsx(SidebarMenuItem, {
30
+ "data-touch": touchActive ? "true" : void 0,
31
+ children: /* @__PURE__ */ jsx(SidebarMenuButton, {
32
+ asChild: true,
33
+ size: "sm",
34
+ className: AI_FOCUS.ring,
35
+ style: touchActive ? {
36
+ minHeight: "44px",
37
+ minWidth: "44px"
38
+ } : void 0,
39
+ children: /* @__PURE__ */ jsxs(LinkComponent, {
40
+ href: item.url,
41
+ prefetch: false,
42
+ children: [/* @__PURE__ */ jsx(item.icon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", { children: item.title })]
43
+ })
44
+ })
45
+ }, item.title)) }) })
46
+ });
47
+ }
48
+
49
+ //#endregion
50
+ export { NavSecondary as t };
51
+ //# sourceMappingURL=nav-secondary-t-xeA0I4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-secondary-t-xeA0I4.mjs","names":["React"],"sources":["../src/components/layout/nav-secondary/nav-secondary.tsx"],"sourcesContent":["'use client';\n\n/**\n * @fileoverview NavSecondary Component - Premium Harmony V2\n *\n * A sidebar navigation component for displaying secondary navigation items.\n * Used for external links, supplementary navigation options, and utility actions.\n * Implements Premium Harmony V2 patterns for enhanced touch and accessibility support.\n *\n * Features:\n * - ES2023 syntax with modern patterns\n * - Tailwind v4 CSS-first theming with CSS variables\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 focus styles from design tokens\n * - Polymorphic link rendering for framework integration\n * - Data attributes for state management\n *\n * @module @od-oneapp/uni-ui/components/layout/nav-secondary\n * @component NavSecondary\n *\n * @useCases\n * - Secondary navigation for help, support, and documentation links\n * - Utility links in application sidebars (Settings, Profile, Logout)\n * - External resource links in admin panels\n * - Footer navigation in sidebar layouts\n * - Social media and community links in app navigation\n * - Quick access to feedback and contact options\n * - Mobile-responsive navigation with touch-optimized targets\n * - Accessibility-compliant navigation for keyboard and screen reader users\n * - Framework-agnostic navigation (Next.js, React Router, etc.)\n *\n * @example\n * // Basic usage with Next.js Link\n * import { NavSecondary } from '@od-oneapp/uni-ui/components/layout/nav-secondary';\n * import { HelpCircle, Settings, Mail } from 'lucide-react';\n * import Link from 'next/link';\n * const items = [{ title: 'Help', url: '/help', icon: HelpCircle }];\n * <NavSecondary items={items} LinkComponent={Link} />\n *\n * @example\n * // External links in sidebar footer\n * <SidebarFooter><NavSecondary items={externalLinks} /></SidebarFooter>\n *\n * @example\n * // With custom link component\n * <NavSecondary items={items} LinkComponent={RouterLink} className=\"mt-auto\" />\n */\n\nimport type { ComponentType } from 'react';\nimport * as React from 'react';\n\nimport { useMediaQuery } from '@mantine/hooks';\nimport { type LucideIcon } from 'lucide-react';\n\nimport { AI_FOCUS } from '../../ai-elements/ai-elements.constants';\nimport {\n SidebarGroup,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n} from '../sidebar';\n\n/**\n * Navigation item configuration for secondary navigation\n */\ninterface NavSecondaryItem {\n /** Display title for the navigation item */\n title: string;\n /** URL/path for the navigation item */\n url: string;\n /** Icon component (Lucide or custom React component) */\n icon: LucideIcon | ComponentType<any>;\n}\n\n/**\n * Props for NavSecondary component\n */\nexport interface NavSecondaryProps extends React.ComponentPropsWithoutRef<typeof SidebarGroup> {\n /** Navigation items to display */\n items: NavSecondaryItem[];\n /**\n * Custom link component for navigation.\n * Use `Link` from `next/link` or `@vercel/microfrontends/next/client` for Next.js apps.\n * @default 'a' - Regular anchor element\n */\n LinkComponent?: React.ElementType | ComponentType<any>;\n}\n\n/**\n * Secondary navigation component for sidebar menus\n *\n * Renders a simple list of navigation links for secondary/utility actions.\n * Applies Premium Harmony V2 patterns including touch detection,\n * reduced motion support, and 44px minimum touch targets.\n *\n * @param {NavSecondaryProps} props - Component props\n * @returns {JSX.Element} Rendered navigation group\n */\nexport function NavSecondary({ items, LinkComponent = 'a', ...props }: NavSecondaryProps) {\n // Premium Harmony V2: Touch detection for mobile devices\n const [mounted, setMounted] = React.useState(false);\n const isTouch = useMediaQuery('(pointer: coarse)');\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n // Avoid hydration mismatch by only applying touch-specific attributes on the client\n const touchActive = mounted && isTouch;\n\n return (\n <SidebarGroup {...props}>\n <SidebarGroupContent>\n <SidebarMenu>\n {items.map(item => (\n <SidebarMenuItem key={item.title} data-touch={touchActive ? 'true' : undefined}>\n <SidebarMenuButton\n asChild\n size=\"sm\"\n className={AI_FOCUS.ring}\n // WCAG 2.5.5: Ensure 44px minimum touch target on touch devices\n style={\n touchActive\n ? {\n minHeight: '44px',\n minWidth: '44px',\n }\n : undefined\n }\n >\n <LinkComponent href={item.url} prefetch={false}>\n <item.icon aria-hidden=\"true\" />\n <span>{item.title}</span>\n </LinkComponent>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAqGA,SAAgB,aAAa,EAAE,OAAO,gBAAgB,KAAK,GAAG,SAA4B;CAExF,MAAM,CAAC,SAAS,cAAcA,QAAM,SAAS,MAAM;CACnD,MAAM,UAAU,cAAc,oBAAoB;AAElD,SAAM,gBAAgB;AACpB,aAAW,KAAK;IACf,EAAE,CAAC;CAGN,MAAM,cAAc,WAAW;AAE/B,QACE,oBAAC;EAAa,GAAI;YAChB,oBAAC,iCACC,oBAAC,yBACE,MAAM,KAAI,SACT,oBAAC;GAAiC,cAAY,cAAc,SAAS;aACnE,oBAAC;IACC;IACA,MAAK;IACL,WAAW,SAAS;IAEpB,OACE,cACI;KACE,WAAW;KACX,UAAU;KACX,GACD;cAGN,qBAAC;KAAc,MAAM,KAAK;KAAK,UAAU;gBACvC,oBAAC,KAAK,QAAK,eAAY,SAAS,EAChC,oBAAC,oBAAM,KAAK,QAAa;MACX;KACE;KAnBA,KAAK,MAoBT,CAClB,GACU,GACM;GACT"}
@@ -0,0 +1,193 @@
1
+ 'use client';
2
+ import { r as SPRING_FLUID } from "./motion-zelaDelJ.mjs";
3
+ import { AI_FOCUS } from "./components-ai-elements-constants.mjs";
4
+ import { n as AvatarFallback, r as AvatarImage, t as Avatar } from "./avatar-DjiX7nT8.mjs";
5
+ import { a as DropdownMenuItem, h as DropdownMenuTrigger, i as DropdownMenuGroup, o as DropdownMenuLabel, r as DropdownMenuContent, t as DropdownMenu, u as DropdownMenuSeparator } from "./dropdown-menu-91g1g_Cl.mjs";
6
+ import { d as SidebarMenu, h as SidebarMenuItem, m as SidebarMenuButton, w as useSidebar } from "./sidebar-CdWE7H3R.mjs";
7
+ import * as React$1 from "react";
8
+ import { useMediaQuery, useReducedMotion } from "@mantine/hooks";
9
+ import { BadgeCheck, Bell, ChevronsUpDown, CreditCard, LogOut, Moon, Sparkles, Sun } from "lucide-react";
10
+ import { motion } from "motion/react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ import { useTheme } from "next-themes";
13
+
14
+ //#region src/components/layout/nav-user/nav-user.tsx
15
+ /**
16
+ * @fileoverview NavUser Component - Premium Harmony V2
17
+ *
18
+ * User menu component for sidebar navigation. Displays user avatar, name, email,
19
+ * and provides dropdown menu with user account actions and theme toggle.
20
+ *
21
+ * Features:
22
+ * - ES2023 syntax with modern patterns
23
+ * - Tailwind v4 CSS-first theming with CSS variables
24
+ * - Premium Harmony V2 spring physics for smooth animations
25
+ * - Touch detection with automatic sizing for mobile devices
26
+ * - Reduced motion support for accessibility
27
+ * - WCAG 2.5.5 compliant 44px minimum touch targets on touch devices
28
+ * - Semantic focus styles from design tokens
29
+ * - Theme toggle integration (light/dark mode)
30
+ * - Data attributes for state management
31
+ * - Responsive dropdown positioning (mobile vs desktop)
32
+ *
33
+ * @module @od-oneapp/uni-ui/components/layout/nav-user
34
+ * @component NavUser
35
+ *
36
+ * @useCases
37
+ * - Application sidebar user profile menu with account settings
38
+ * - Dashboard layouts with quick access to user preferences
39
+ * - Admin panels with user-specific actions and theme controls
40
+ * - Multi-tenant applications with organization/account switching
41
+ * - Mobile-responsive navigation with touch-optimized user menu
42
+ * - Accessibility-compliant user menu for keyboard and screen reader users
43
+ * - Settings access with theme toggle, billing, and notification preferences
44
+ * - Quick logout and account management from any page
45
+ *
46
+ * @example
47
+ * // Basic usage
48
+ * import { NavUser } from '@od-oneapp/uni-ui/components/layout/nav-user';
49
+ * const user = { name: 'Jane Doe', email: 'jane@example.com', avatar: '/avatar.jpg' };
50
+ * <NavUser user={user} />
51
+ *
52
+ * @example
53
+ * // With dynamic user data from auth hook
54
+ * const { user } = useAuth();
55
+ * <NavUser user={{ name: user.displayName, email: user.email, avatar: user.photoURL }} />
56
+ */
57
+ /**
58
+ * Navigation user component with dropdown menu
59
+ *
60
+ * Displays user profile information and provides access to account settings,
61
+ * theme toggle, and user actions. Applies Premium Harmony V2 patterns including
62
+ * touch detection, reduced motion support, and 44px minimum touch targets.
63
+ *
64
+ * @param {NavUserProps} props - Component props
65
+ * @returns {JSX.Element} Rendered user navigation menu
66
+ */
67
+ function NavUser({ user }) {
68
+ const { isMobile } = useSidebar();
69
+ const { setTheme } = useTheme();
70
+ const isTouch = useMediaQuery("(pointer: coarse)");
71
+ const prefersReducedMotion = useReducedMotion();
72
+ const chevronTransition = React$1.useMemo(() => prefersReducedMotion ? { duration: .2 } : SPRING_FLUID, [prefersReducedMotion]);
73
+ const [open, setOpen] = React$1.useState(false);
74
+ return /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, {
75
+ "data-touch": isTouch ? "true" : void 0,
76
+ children: /* @__PURE__ */ jsxs(DropdownMenu, {
77
+ open,
78
+ onOpenChange: setOpen,
79
+ children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
80
+ asChild: true,
81
+ children: /* @__PURE__ */ jsxs(SidebarMenuButton, {
82
+ size: "lg",
83
+ className: `data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground ${AI_FOCUS.ring}`,
84
+ "data-state": open ? "open" : "closed",
85
+ style: isTouch ? {
86
+ minHeight: "44px",
87
+ minWidth: "44px"
88
+ } : void 0,
89
+ children: [
90
+ /* @__PURE__ */ jsxs(Avatar, {
91
+ className: "h-8 w-8 rounded-lg",
92
+ children: [/* @__PURE__ */ jsx(AvatarImage, {
93
+ src: user.avatar,
94
+ alt: user.name
95
+ }), /* @__PURE__ */ jsx(AvatarFallback, {
96
+ className: "rounded-lg",
97
+ children: "CN"
98
+ })]
99
+ }),
100
+ /* @__PURE__ */ jsxs("div", {
101
+ className: "grid flex-1 text-left text-sm leading-tight",
102
+ children: [/* @__PURE__ */ jsx("span", {
103
+ className: "truncate font-medium",
104
+ children: user.name
105
+ }), /* @__PURE__ */ jsx("span", {
106
+ className: "truncate text-xs",
107
+ children: user.email
108
+ })]
109
+ }),
110
+ /* @__PURE__ */ jsx(motion.div, {
111
+ animate: { rotate: open ? 180 : 0 },
112
+ transition: chevronTransition,
113
+ className: "ml-auto flex items-center justify-center",
114
+ "aria-hidden": "true",
115
+ children: /* @__PURE__ */ jsx(ChevronsUpDown, { className: "size-4" })
116
+ })
117
+ ]
118
+ })
119
+ }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
120
+ className: "w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg",
121
+ side: isMobile ? "bottom" : "right",
122
+ align: "end",
123
+ sideOffset: 4,
124
+ children: [
125
+ /* @__PURE__ */ jsx(DropdownMenuLabel, {
126
+ className: "p-0 font-normal",
127
+ children: /* @__PURE__ */ jsxs("div", {
128
+ className: "flex items-center gap-2 px-1 py-1.5 text-left text-sm",
129
+ children: [/* @__PURE__ */ jsxs(Avatar, {
130
+ className: "h-8 w-8 rounded-lg",
131
+ children: [/* @__PURE__ */ jsx(AvatarImage, {
132
+ src: user.avatar,
133
+ alt: user.name
134
+ }), /* @__PURE__ */ jsx(AvatarFallback, {
135
+ className: "rounded-lg",
136
+ children: "CN"
137
+ })]
138
+ }), /* @__PURE__ */ jsxs("div", {
139
+ className: "grid flex-1 text-left text-sm leading-tight",
140
+ children: [/* @__PURE__ */ jsx("span", {
141
+ className: "truncate font-medium",
142
+ children: user.name
143
+ }), /* @__PURE__ */ jsx("span", {
144
+ className: "truncate text-xs",
145
+ children: user.email
146
+ })]
147
+ })]
148
+ })
149
+ }),
150
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
151
+ /* @__PURE__ */ jsx(DropdownMenuGroup, { children: /* @__PURE__ */ jsxs(DropdownMenuItem, {
152
+ size: isTouch ? "touch" : "default",
153
+ children: [/* @__PURE__ */ jsx(Sparkles, {}), "Upgrade to Pro"]
154
+ }) }),
155
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
156
+ /* @__PURE__ */ jsxs(DropdownMenuGroup, { children: [
157
+ /* @__PURE__ */ jsxs(DropdownMenuItem, {
158
+ size: isTouch ? "touch" : "default",
159
+ children: [/* @__PURE__ */ jsx(BadgeCheck, {}), "Account"]
160
+ }),
161
+ /* @__PURE__ */ jsxs(DropdownMenuItem, {
162
+ size: isTouch ? "touch" : "default",
163
+ children: [/* @__PURE__ */ jsx(CreditCard, {}), "Billing"]
164
+ }),
165
+ /* @__PURE__ */ jsxs(DropdownMenuItem, {
166
+ size: isTouch ? "touch" : "default",
167
+ children: [/* @__PURE__ */ jsx(Bell, {}), "Notifications"]
168
+ })
169
+ ] }),
170
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
171
+ /* @__PURE__ */ jsxs(DropdownMenuGroup, { children: [/* @__PURE__ */ jsxs(DropdownMenuItem, {
172
+ size: isTouch ? "touch" : "default",
173
+ onClick: () => setTheme("light"),
174
+ children: [/* @__PURE__ */ jsx(Sun, {}), "Light"]
175
+ }), /* @__PURE__ */ jsxs(DropdownMenuItem, {
176
+ size: isTouch ? "touch" : "default",
177
+ onClick: () => setTheme("dark"),
178
+ children: [/* @__PURE__ */ jsx(Moon, {}), "Dark"]
179
+ })] }),
180
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
181
+ /* @__PURE__ */ jsxs(DropdownMenuItem, {
182
+ size: isTouch ? "touch" : "default",
183
+ children: [/* @__PURE__ */ jsx(LogOut, {}), "Log out"]
184
+ })
185
+ ]
186
+ })]
187
+ })
188
+ }) });
189
+ }
190
+
191
+ //#endregion
192
+ export { NavUser as t };
193
+ //# sourceMappingURL=nav-user-A4YHm3-O.mjs.map