@epicbagel/saas-kit 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (580) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -2
  3. package/THIRD_PARTY_NOTICES.md +47 -0
  4. package/dist/chunk-23UMHZ4S.cjs +124 -0
  5. package/dist/chunk-2BHI5ZWJ.cjs +117 -0
  6. package/dist/chunk-2HTYXBDU.cjs +34 -0
  7. package/dist/chunk-2XDFTB2W.cjs +35 -0
  8. package/dist/chunk-35YMAIEL.js +135 -0
  9. package/dist/chunk-373W6VAD.cjs +82 -0
  10. package/dist/chunk-3BZ4CQHW.js +94 -0
  11. package/dist/chunk-3OWGL4Q2.js +65 -0
  12. package/dist/chunk-3QT5VYZ3.js +141 -0
  13. package/dist/chunk-4HWCNRK4.js +117 -0
  14. package/dist/chunk-4LXN6GLZ.cjs +44 -0
  15. package/dist/chunk-4NN7EA3W.js +222 -0
  16. package/dist/chunk-62UTAG2C.js +152 -0
  17. package/dist/chunk-667ZCM4X.cjs +72 -0
  18. package/dist/chunk-6RVPQGYS.js +181 -0
  19. package/dist/chunk-6T2EULKN.cjs +42 -0
  20. package/dist/chunk-7CRDYV3C.js +137 -0
  21. package/dist/chunk-BEJJN2SY.cjs +73 -0
  22. package/dist/chunk-BGLGRUPP.cjs +31 -0
  23. package/dist/chunk-CS7DM3NV.js +98 -0
  24. package/dist/chunk-CTYOW3V2.cjs +59 -0
  25. package/dist/chunk-D4ZL2OEQ.js +61 -0
  26. package/dist/chunk-DFB4ILN6.cjs +137 -0
  27. package/dist/chunk-E2TQMDO7.js +34 -0
  28. package/dist/chunk-EIY5LLSP.js +82 -0
  29. package/dist/chunk-EJP2L5QV.cjs +74 -0
  30. package/dist/chunk-F73ONTCK.js +73 -0
  31. package/dist/chunk-F7JHSZNT.js +73 -0
  32. package/dist/chunk-FJLINIC6.js +48 -0
  33. package/dist/chunk-FLPYZNWZ.js +124 -0
  34. package/dist/chunk-FNDBM67K.cjs +61 -0
  35. package/dist/chunk-G54TQV2R.cjs +222 -0
  36. package/dist/chunk-G6SRSWXB.js +32 -0
  37. package/dist/chunk-G76JANB4.js +138 -0
  38. package/dist/chunk-GL5CV4FF.js +59 -0
  39. package/dist/chunk-GMJWBGTJ.js +34 -0
  40. package/dist/chunk-GRZMUGT6.cjs +94 -0
  41. package/dist/chunk-GXHGMI3Z.cjs +48 -0
  42. package/dist/chunk-H2O6NMLZ.js +52 -0
  43. package/dist/chunk-H2UFRLLN.cjs +100 -0
  44. package/dist/chunk-H7TETFLB.js +39 -0
  45. package/dist/chunk-HQRWRRZJ.js +179 -0
  46. package/dist/chunk-HYSWE75T.js +67 -0
  47. package/dist/chunk-HYTILYE5.js +31 -0
  48. package/dist/chunk-I6GUOEBO.cjs +61 -0
  49. package/dist/chunk-IQZLUT2Y.cjs +34 -0
  50. package/dist/chunk-J3GQXM37.js +61 -0
  51. package/dist/chunk-J6NXDZR5.js +145 -0
  52. package/dist/chunk-JH4GAGOQ.cjs +34 -0
  53. package/dist/chunk-KGFL3VWY.cjs +62 -0
  54. package/dist/chunk-KN4RPX35.js +36 -0
  55. package/dist/chunk-KWLSBTB2.cjs +34 -0
  56. package/dist/chunk-L4DH72UF.cjs +179 -0
  57. package/dist/chunk-LELBCBDT.cjs +52 -0
  58. package/dist/chunk-LELFPLTE.js +55 -0
  59. package/dist/chunk-LI5EOSQG.js +171 -0
  60. package/dist/chunk-LIE6W3QT.js +42 -0
  61. package/dist/chunk-MLHNYRFX.js +411 -0
  62. package/dist/chunk-NBUWGRQO.js +31 -0
  63. package/dist/chunk-NE3ZVJ6G.cjs +67 -0
  64. package/dist/chunk-NQK5ZWC7.cjs +31 -0
  65. package/dist/chunk-NW3OWKBN.js +57 -0
  66. package/dist/chunk-OICAYRVH.js +34 -0
  67. package/dist/chunk-PIU5SSUV.js +25 -0
  68. package/dist/chunk-PNWNU6JW.cjs +171 -0
  69. package/dist/chunk-PPX2VPGI.cjs +138 -0
  70. package/dist/chunk-PQUSJEXL.cjs +51 -0
  71. package/dist/chunk-QD63LB2F.js +62 -0
  72. package/dist/chunk-QMA3WVB7.js +51 -0
  73. package/dist/chunk-QNZYQLNP.js +125 -0
  74. package/dist/chunk-R35FT53G.cjs +25 -0
  75. package/dist/chunk-R3DQS6U4.cjs +135 -0
  76. package/dist/chunk-R4AIM3BQ.js +72 -0
  77. package/dist/chunk-R5L4CM6V.cjs +202 -0
  78. package/dist/chunk-RRRD5EUI.js +202 -0
  79. package/dist/chunk-RSFEKQDR.cjs +181 -0
  80. package/dist/chunk-RWWOFWLP.cjs +510 -0
  81. package/dist/chunk-SGW4FWBX.cjs +411 -0
  82. package/dist/chunk-T2ZFSPE4.cjs +36 -0
  83. package/dist/chunk-U2NES7VR.cjs +32 -0
  84. package/dist/chunk-UGF2K6NR.js +510 -0
  85. package/dist/chunk-V4LE2HWP.js +166 -0
  86. package/dist/chunk-V5SPFLKW.cjs +145 -0
  87. package/dist/chunk-V7542UGX.js +31 -0
  88. package/dist/chunk-VBPPFC7X.cjs +66 -0
  89. package/dist/chunk-VGTINL5Q.cjs +39 -0
  90. package/dist/chunk-VKIGJNJR.cjs +57 -0
  91. package/dist/chunk-W5HPHEE7.cjs +31 -0
  92. package/dist/chunk-W5I4FN7G.cjs +78 -0
  93. package/dist/chunk-WABCLRBR.cjs +65 -0
  94. package/dist/chunk-WDXEJDMO.cjs +141 -0
  95. package/dist/chunk-WNXVGUBF.cjs +40 -0
  96. package/dist/chunk-WQJKUKBL.cjs +125 -0
  97. package/dist/chunk-XAPPU3MD.js +35 -0
  98. package/dist/chunk-XLIAY56V.cjs +55 -0
  99. package/dist/chunk-YEW65ASC.js +66 -0
  100. package/dist/chunk-YG7FBJRM.js +40 -0
  101. package/dist/chunk-YWAQRAXP.js +78 -0
  102. package/dist/chunk-YYFVG5A6.cjs +152 -0
  103. package/dist/chunk-ZAITUDYD.cjs +166 -0
  104. package/dist/chunk-ZRLUUZHK.js +32 -0
  105. package/dist/chunk-ZWZAAGQF.js +44 -0
  106. package/dist/hooks/use-copy-to-clipboard.cjs +7 -0
  107. package/dist/hooks/use-copy-to-clipboard.d.cts +12 -0
  108. package/dist/hooks/use-copy-to-clipboard.d.ts +12 -0
  109. package/dist/hooks/use-copy-to-clipboard.js +7 -0
  110. package/dist/hooks/use-layout-preference.cjs +51 -0
  111. package/dist/hooks/use-layout-preference.d.cts +10 -0
  112. package/dist/hooks/use-layout-preference.d.ts +10 -0
  113. package/dist/hooks/use-layout-preference.js +51 -0
  114. package/dist/hooks/use-mobile.cjs +7 -0
  115. package/dist/hooks/use-mobile.d.cts +3 -0
  116. package/dist/hooks/use-mobile.d.ts +3 -0
  117. package/dist/hooks/use-mobile.js +7 -0
  118. package/dist/lib/date-utils.cjs +15 -0
  119. package/dist/lib/date-utils.d.cts +16 -0
  120. package/dist/lib/date-utils.d.ts +16 -0
  121. package/dist/lib/date-utils.js +14 -0
  122. package/dist/lib/filter-types.cjs +161 -0
  123. package/dist/lib/filter-types.d.cts +60 -0
  124. package/dist/lib/filter-types.d.ts +60 -0
  125. package/dist/lib/filter-types.js +160 -0
  126. package/dist/lib/neutral-theme.cjs +238 -0
  127. package/dist/lib/neutral-theme.d.cts +92 -0
  128. package/dist/lib/neutral-theme.d.ts +92 -0
  129. package/dist/lib/neutral-theme.js +236 -0
  130. package/dist/lib/status-colors.cjs +18 -0
  131. package/dist/lib/status-colors.d.cts +76 -0
  132. package/dist/lib/status-colors.d.ts +76 -0
  133. package/dist/lib/status-colors.js +17 -0
  134. package/dist/lib/utils.cjs +9 -0
  135. package/dist/lib/utils.d.cts +9 -0
  136. package/dist/lib/utils.d.ts +9 -0
  137. package/dist/lib/utils.js +8 -0
  138. package/dist/primitives/activity-feed.cjs +177 -0
  139. package/dist/primitives/activity-feed.d.cts +78 -0
  140. package/dist/primitives/activity-feed.d.ts +78 -0
  141. package/dist/primitives/activity-feed.js +177 -0
  142. package/dist/primitives/activity-log.cjs +79 -0
  143. package/dist/primitives/activity-log.d.cts +55 -0
  144. package/dist/primitives/activity-log.d.ts +55 -0
  145. package/dist/primitives/activity-log.js +79 -0
  146. package/dist/primitives/agent-comment.cjs +39 -0
  147. package/dist/primitives/agent-comment.d.cts +33 -0
  148. package/dist/primitives/agent-comment.d.ts +33 -0
  149. package/dist/primitives/agent-comment.js +39 -0
  150. package/dist/primitives/alert-dialog.cjs +30 -0
  151. package/dist/primitives/alert-dialog.d.cts +23 -0
  152. package/dist/primitives/alert-dialog.d.ts +23 -0
  153. package/dist/primitives/alert-dialog.js +30 -0
  154. package/dist/primitives/alert.cjs +12 -0
  155. package/dist/primitives/alert.d.cts +26 -0
  156. package/dist/primitives/alert.d.ts +26 -0
  157. package/dist/primitives/alert.js +12 -0
  158. package/dist/primitives/anchor-target.cjs +13 -0
  159. package/dist/primitives/anchor-target.d.cts +7 -0
  160. package/dist/primitives/anchor-target.d.ts +7 -0
  161. package/dist/primitives/anchor-target.js +13 -0
  162. package/dist/primitives/anchor.cjs +35 -0
  163. package/dist/primitives/anchor.d.cts +16 -0
  164. package/dist/primitives/anchor.d.ts +16 -0
  165. package/dist/primitives/anchor.js +35 -0
  166. package/dist/primitives/archive-confirmation-dialog.cjs +50 -0
  167. package/dist/primitives/archive-confirmation-dialog.d.cts +12 -0
  168. package/dist/primitives/archive-confirmation-dialog.d.ts +12 -0
  169. package/dist/primitives/archive-confirmation-dialog.js +50 -0
  170. package/dist/primitives/aspect-ratio.cjs +8 -0
  171. package/dist/primitives/aspect-ratio.d.cts +6 -0
  172. package/dist/primitives/aspect-ratio.d.ts +6 -0
  173. package/dist/primitives/aspect-ratio.js +8 -0
  174. package/dist/primitives/attachment.cjs +203 -0
  175. package/dist/primitives/attachment.d.cts +28 -0
  176. package/dist/primitives/attachment.d.ts +28 -0
  177. package/dist/primitives/attachment.js +203 -0
  178. package/dist/primitives/avatar.cjs +12 -0
  179. package/dist/primitives/avatar.d.cts +22 -0
  180. package/dist/primitives/avatar.d.ts +22 -0
  181. package/dist/primitives/avatar.js +12 -0
  182. package/dist/primitives/badge.cjs +10 -0
  183. package/dist/primitives/badge.d.cts +27 -0
  184. package/dist/primitives/badge.d.ts +27 -0
  185. package/dist/primitives/badge.js +10 -0
  186. package/dist/primitives/board-view-internals.cjs +16 -0
  187. package/dist/primitives/board-view-internals.d.cts +33 -0
  188. package/dist/primitives/board-view-internals.d.ts +33 -0
  189. package/dist/primitives/board-view-internals.js +16 -0
  190. package/dist/primitives/board-view.cjs +108 -0
  191. package/dist/primitives/board-view.d.cts +39 -0
  192. package/dist/primitives/board-view.d.ts +39 -0
  193. package/dist/primitives/board-view.js +108 -0
  194. package/dist/primitives/browser-preview.cjs +62 -0
  195. package/dist/primitives/browser-preview.d.cts +41 -0
  196. package/dist/primitives/browser-preview.d.ts +41 -0
  197. package/dist/primitives/browser-preview.js +62 -0
  198. package/dist/primitives/button.cjs +10 -0
  199. package/dist/primitives/button.d.cts +32 -0
  200. package/dist/primitives/button.d.ts +32 -0
  201. package/dist/primitives/button.js +10 -0
  202. package/dist/primitives/calendar.cjs +11 -0
  203. package/dist/primitives/calendar.d.cts +13 -0
  204. package/dist/primitives/calendar.d.ts +13 -0
  205. package/dist/primitives/calendar.js +11 -0
  206. package/dist/primitives/call-card.cjs +195 -0
  207. package/dist/primitives/call-card.d.cts +86 -0
  208. package/dist/primitives/call-card.d.ts +86 -0
  209. package/dist/primitives/call-card.js +195 -0
  210. package/dist/primitives/callout.cjs +8 -0
  211. package/dist/primitives/callout.d.cts +41 -0
  212. package/dist/primitives/callout.d.ts +41 -0
  213. package/dist/primitives/callout.js +8 -0
  214. package/dist/primitives/card.cjs +18 -0
  215. package/dist/primitives/card.d.cts +55 -0
  216. package/dist/primitives/card.d.ts +55 -0
  217. package/dist/primitives/card.js +18 -0
  218. package/dist/primitives/checkbox.cjs +8 -0
  219. package/dist/primitives/checkbox.d.cts +20 -0
  220. package/dist/primitives/checkbox.d.ts +20 -0
  221. package/dist/primitives/checkbox.js +8 -0
  222. package/dist/primitives/chip-tabs.cjs +10 -0
  223. package/dist/primitives/chip-tabs.d.cts +39 -0
  224. package/dist/primitives/chip-tabs.d.ts +39 -0
  225. package/dist/primitives/chip-tabs.js +10 -0
  226. package/dist/primitives/code-block.cjs +56 -0
  227. package/dist/primitives/code-block.d.cts +35 -0
  228. package/dist/primitives/code-block.d.ts +35 -0
  229. package/dist/primitives/code-block.js +56 -0
  230. package/dist/primitives/collapsible-section.cjs +69 -0
  231. package/dist/primitives/collapsible-section.d.cts +24 -0
  232. package/dist/primitives/collapsible-section.d.ts +24 -0
  233. package/dist/primitives/collapsible-section.js +69 -0
  234. package/dist/primitives/collapsible.cjs +12 -0
  235. package/dist/primitives/collapsible.d.cts +14 -0
  236. package/dist/primitives/collapsible.d.ts +14 -0
  237. package/dist/primitives/collapsible.js +12 -0
  238. package/dist/primitives/compact-app-shell.cjs +40 -0
  239. package/dist/primitives/compact-app-shell.d.cts +12 -0
  240. package/dist/primitives/compact-app-shell.d.ts +12 -0
  241. package/dist/primitives/compact-app-shell.js +40 -0
  242. package/dist/primitives/compact-log.cjs +39 -0
  243. package/dist/primitives/compact-log.d.cts +19 -0
  244. package/dist/primitives/compact-log.d.ts +19 -0
  245. package/dist/primitives/compact-log.js +39 -0
  246. package/dist/primitives/confirm-bar.cjs +101 -0
  247. package/dist/primitives/confirm-bar.d.cts +60 -0
  248. package/dist/primitives/confirm-bar.d.ts +60 -0
  249. package/dist/primitives/confirm-bar.js +101 -0
  250. package/dist/primitives/connection-status-bar.cjs +243 -0
  251. package/dist/primitives/connection-status-bar.d.cts +52 -0
  252. package/dist/primitives/connection-status-bar.d.ts +52 -0
  253. package/dist/primitives/connection-status-bar.js +243 -0
  254. package/dist/primitives/connection.cjs +206 -0
  255. package/dist/primitives/connection.d.cts +126 -0
  256. package/dist/primitives/connection.d.ts +126 -0
  257. package/dist/primitives/connection.js +206 -0
  258. package/dist/primitives/contact-header.cjs +60 -0
  259. package/dist/primitives/contact-header.d.cts +54 -0
  260. package/dist/primitives/contact-header.d.ts +54 -0
  261. package/dist/primitives/contact-header.js +60 -0
  262. package/dist/primitives/copy-button.cjs +10 -0
  263. package/dist/primitives/copy-button.d.cts +21 -0
  264. package/dist/primitives/copy-button.d.ts +21 -0
  265. package/dist/primitives/copy-button.js +10 -0
  266. package/dist/primitives/count-badge.cjs +9 -0
  267. package/dist/primitives/count-badge.d.cts +21 -0
  268. package/dist/primitives/count-badge.d.ts +21 -0
  269. package/dist/primitives/count-badge.js +9 -0
  270. package/dist/primitives/decision-actions.cjs +66 -0
  271. package/dist/primitives/decision-actions.d.cts +31 -0
  272. package/dist/primitives/decision-actions.d.ts +31 -0
  273. package/dist/primitives/decision-actions.js +66 -0
  274. package/dist/primitives/definition-list.cjs +65 -0
  275. package/dist/primitives/definition-list.d.cts +23 -0
  276. package/dist/primitives/definition-list.d.ts +23 -0
  277. package/dist/primitives/definition-list.js +65 -0
  278. package/dist/primitives/delete-confirmation-dialog.cjs +11 -0
  279. package/dist/primitives/delete-confirmation-dialog.d.cts +23 -0
  280. package/dist/primitives/delete-confirmation-dialog.d.ts +23 -0
  281. package/dist/primitives/delete-confirmation-dialog.js +11 -0
  282. package/dist/primitives/dialog.cjs +26 -0
  283. package/dist/primitives/dialog.d.cts +44 -0
  284. package/dist/primitives/dialog.d.ts +44 -0
  285. package/dist/primitives/dialog.js +26 -0
  286. package/dist/primitives/drawer.cjs +26 -0
  287. package/dist/primitives/drawer.d.cts +36 -0
  288. package/dist/primitives/drawer.d.ts +36 -0
  289. package/dist/primitives/drawer.js +26 -0
  290. package/dist/primitives/dropdown-menu.cjs +36 -0
  291. package/dist/primitives/dropdown-menu.d.cts +34 -0
  292. package/dist/primitives/dropdown-menu.d.ts +34 -0
  293. package/dist/primitives/dropdown-menu.js +36 -0
  294. package/dist/primitives/editable-list.cjs +108 -0
  295. package/dist/primitives/editable-list.d.cts +23 -0
  296. package/dist/primitives/editable-list.d.ts +23 -0
  297. package/dist/primitives/editable-list.js +108 -0
  298. package/dist/primitives/empty-state.cjs +9 -0
  299. package/dist/primitives/empty-state.d.cts +54 -0
  300. package/dist/primitives/empty-state.d.ts +54 -0
  301. package/dist/primitives/empty-state.js +9 -0
  302. package/dist/primitives/eyebrow.cjs +8 -0
  303. package/dist/primitives/eyebrow.d.cts +21 -0
  304. package/dist/primitives/eyebrow.d.ts +21 -0
  305. package/dist/primitives/eyebrow.js +8 -0
  306. package/dist/primitives/feature-empty-state.cjs +133 -0
  307. package/dist/primitives/feature-empty-state.d.cts +42 -0
  308. package/dist/primitives/feature-empty-state.d.ts +42 -0
  309. package/dist/primitives/feature-empty-state.js +133 -0
  310. package/dist/primitives/field.cjs +260 -0
  311. package/dist/primitives/field.d.cts +43 -0
  312. package/dist/primitives/field.d.ts +43 -0
  313. package/dist/primitives/field.js +260 -0
  314. package/dist/primitives/file-dropzone.cjs +118 -0
  315. package/dist/primitives/file-dropzone.d.cts +36 -0
  316. package/dist/primitives/file-dropzone.d.ts +36 -0
  317. package/dist/primitives/file-dropzone.js +118 -0
  318. package/dist/primitives/filter-bar.cjs +20 -0
  319. package/dist/primitives/filter-bar.d.cts +25 -0
  320. package/dist/primitives/filter-bar.d.ts +25 -0
  321. package/dist/primitives/filter-bar.js +20 -0
  322. package/dist/primitives/flex-item.cjs +34 -0
  323. package/dist/primitives/flex-item.d.cts +18 -0
  324. package/dist/primitives/flex-item.d.ts +18 -0
  325. package/dist/primitives/flex-item.js +34 -0
  326. package/dist/primitives/grid.cjs +47 -0
  327. package/dist/primitives/grid.d.cts +18 -0
  328. package/dist/primitives/grid.d.ts +18 -0
  329. package/dist/primitives/grid.js +47 -0
  330. package/dist/primitives/heading.cjs +8 -0
  331. package/dist/primitives/heading.d.cts +28 -0
  332. package/dist/primitives/heading.d.ts +28 -0
  333. package/dist/primitives/heading.js +8 -0
  334. package/dist/primitives/hidden-control.cjs +13 -0
  335. package/dist/primitives/hidden-control.d.cts +7 -0
  336. package/dist/primitives/hidden-control.d.ts +7 -0
  337. package/dist/primitives/hidden-control.js +13 -0
  338. package/dist/primitives/icon.cjs +8 -0
  339. package/dist/primitives/icon.d.cts +22 -0
  340. package/dist/primitives/icon.d.ts +22 -0
  341. package/dist/primitives/icon.js +8 -0
  342. package/dist/primitives/image.cjs +52 -0
  343. package/dist/primitives/image.d.cts +21 -0
  344. package/dist/primitives/image.d.ts +21 -0
  345. package/dist/primitives/image.js +52 -0
  346. package/dist/primitives/inline-code.cjs +34 -0
  347. package/dist/primitives/inline-code.d.cts +15 -0
  348. package/dist/primitives/inline-code.d.ts +15 -0
  349. package/dist/primitives/inline-code.js +34 -0
  350. package/dist/primitives/input.cjs +8 -0
  351. package/dist/primitives/input.d.cts +23 -0
  352. package/dist/primitives/input.d.ts +23 -0
  353. package/dist/primitives/input.js +8 -0
  354. package/dist/primitives/inset.cjs +20 -0
  355. package/dist/primitives/inset.d.cts +12 -0
  356. package/dist/primitives/inset.d.ts +12 -0
  357. package/dist/primitives/inset.js +20 -0
  358. package/dist/primitives/interactive-card.cjs +11 -0
  359. package/dist/primitives/interactive-card.d.cts +68 -0
  360. package/dist/primitives/interactive-card.d.ts +68 -0
  361. package/dist/primitives/interactive-card.js +11 -0
  362. package/dist/primitives/label.cjs +8 -0
  363. package/dist/primitives/label.d.cts +12 -0
  364. package/dist/primitives/label.d.ts +12 -0
  365. package/dist/primitives/label.js +8 -0
  366. package/dist/primitives/line-break.cjs +10 -0
  367. package/dist/primitives/line-break.d.cts +6 -0
  368. package/dist/primitives/line-break.d.ts +6 -0
  369. package/dist/primitives/line-break.js +10 -0
  370. package/dist/primitives/list.cjs +68 -0
  371. package/dist/primitives/list.d.cts +35 -0
  372. package/dist/primitives/list.d.ts +35 -0
  373. package/dist/primitives/list.js +68 -0
  374. package/dist/primitives/load-more-button.cjs +10 -0
  375. package/dist/primitives/load-more-button.d.cts +42 -0
  376. package/dist/primitives/load-more-button.d.ts +42 -0
  377. package/dist/primitives/load-more-button.js +10 -0
  378. package/dist/primitives/loading.cjs +10 -0
  379. package/dist/primitives/loading.d.cts +5 -0
  380. package/dist/primitives/loading.d.ts +5 -0
  381. package/dist/primitives/loading.js +10 -0
  382. package/dist/primitives/message.cjs +95 -0
  383. package/dist/primitives/message.d.cts +13 -0
  384. package/dist/primitives/message.d.ts +13 -0
  385. package/dist/primitives/message.js +95 -0
  386. package/dist/primitives/native-select.cjs +33 -0
  387. package/dist/primitives/native-select.d.cts +15 -0
  388. package/dist/primitives/native-select.d.ts +15 -0
  389. package/dist/primitives/native-select.js +33 -0
  390. package/dist/primitives/page-header-actions.cjs +11 -0
  391. package/dist/primitives/page-header-actions.d.cts +49 -0
  392. package/dist/primitives/page-header-actions.d.ts +49 -0
  393. package/dist/primitives/page-header-actions.js +11 -0
  394. package/dist/primitives/page-header.cjs +72 -0
  395. package/dist/primitives/page-header.d.cts +40 -0
  396. package/dist/primitives/page-header.d.ts +40 -0
  397. package/dist/primitives/page-header.js +72 -0
  398. package/dist/primitives/page-shell.cjs +46 -0
  399. package/dist/primitives/page-shell.d.cts +44 -0
  400. package/dist/primitives/page-shell.d.ts +44 -0
  401. package/dist/primitives/page-shell.js +46 -0
  402. package/dist/primitives/page-tabs.cjs +63 -0
  403. package/dist/primitives/page-tabs.d.cts +28 -0
  404. package/dist/primitives/page-tabs.d.ts +28 -0
  405. package/dist/primitives/page-tabs.js +63 -0
  406. package/dist/primitives/panel-section.cjs +52 -0
  407. package/dist/primitives/panel-section.d.cts +20 -0
  408. package/dist/primitives/panel-section.d.ts +20 -0
  409. package/dist/primitives/panel-section.js +52 -0
  410. package/dist/primitives/person-avatar.cjs +57 -0
  411. package/dist/primitives/person-avatar.d.cts +33 -0
  412. package/dist/primitives/person-avatar.d.ts +33 -0
  413. package/dist/primitives/person-avatar.js +57 -0
  414. package/dist/primitives/phone.cjs +69 -0
  415. package/dist/primitives/phone.d.cts +50 -0
  416. package/dist/primitives/phone.d.ts +50 -0
  417. package/dist/primitives/phone.js +69 -0
  418. package/dist/primitives/popover.cjs +12 -0
  419. package/dist/primitives/popover.d.cts +14 -0
  420. package/dist/primitives/popover.d.ts +14 -0
  421. package/dist/primitives/popover.js +12 -0
  422. package/dist/primitives/progress.cjs +31 -0
  423. package/dist/primitives/progress.d.cts +6 -0
  424. package/dist/primitives/progress.d.ts +6 -0
  425. package/dist/primitives/progress.js +31 -0
  426. package/dist/primitives/quick-filters.cjs +10 -0
  427. package/dist/primitives/quick-filters.d.cts +36 -0
  428. package/dist/primitives/quick-filters.d.ts +36 -0
  429. package/dist/primitives/quick-filters.js +10 -0
  430. package/dist/primitives/radio-group.cjs +46 -0
  431. package/dist/primitives/radio-group.d.cts +7 -0
  432. package/dist/primitives/radio-group.d.ts +7 -0
  433. package/dist/primitives/radio-group.js +46 -0
  434. package/dist/primitives/resource-card.cjs +104 -0
  435. package/dist/primitives/resource-card.d.cts +93 -0
  436. package/dist/primitives/resource-card.d.ts +93 -0
  437. package/dist/primitives/resource-card.js +104 -0
  438. package/dist/primitives/resource-list.cjs +28 -0
  439. package/dist/primitives/resource-list.d.cts +103 -0
  440. package/dist/primitives/resource-list.d.ts +103 -0
  441. package/dist/primitives/resource-list.js +28 -0
  442. package/dist/primitives/responsive-dialog.cjs +142 -0
  443. package/dist/primitives/responsive-dialog.d.cts +56 -0
  444. package/dist/primitives/responsive-dialog.d.ts +56 -0
  445. package/dist/primitives/responsive-dialog.js +142 -0
  446. package/dist/primitives/responsive-view.cjs +29 -0
  447. package/dist/primitives/responsive-view.d.cts +10 -0
  448. package/dist/primitives/responsive-view.d.ts +10 -0
  449. package/dist/primitives/responsive-view.js +29 -0
  450. package/dist/primitives/rich-text.cjs +43 -0
  451. package/dist/primitives/rich-text.d.cts +14 -0
  452. package/dist/primitives/rich-text.d.ts +14 -0
  453. package/dist/primitives/rich-text.js +43 -0
  454. package/dist/primitives/scroll-area.cjs +10 -0
  455. package/dist/primitives/scroll-area.d.cts +13 -0
  456. package/dist/primitives/scroll-area.d.ts +13 -0
  457. package/dist/primitives/scroll-area.js +10 -0
  458. package/dist/primitives/section-header.cjs +51 -0
  459. package/dist/primitives/section-header.d.cts +22 -0
  460. package/dist/primitives/section-header.d.ts +22 -0
  461. package/dist/primitives/section-header.js +51 -0
  462. package/dist/primitives/section.cjs +39 -0
  463. package/dist/primitives/section.d.cts +22 -0
  464. package/dist/primitives/section.d.ts +22 -0
  465. package/dist/primitives/section.js +39 -0
  466. package/dist/primitives/select.cjs +26 -0
  467. package/dist/primitives/select.d.cts +25 -0
  468. package/dist/primitives/select.d.ts +25 -0
  469. package/dist/primitives/select.js +26 -0
  470. package/dist/primitives/selection-overlay.cjs +24 -0
  471. package/dist/primitives/selection-overlay.d.cts +7 -0
  472. package/dist/primitives/selection-overlay.d.ts +7 -0
  473. package/dist/primitives/selection-overlay.js +24 -0
  474. package/dist/primitives/sentiment-dot.cjs +15 -0
  475. package/dist/primitives/sentiment-dot.d.cts +42 -0
  476. package/dist/primitives/sentiment-dot.d.ts +42 -0
  477. package/dist/primitives/sentiment-dot.js +15 -0
  478. package/dist/primitives/separator.cjs +8 -0
  479. package/dist/primitives/separator.d.cts +9 -0
  480. package/dist/primitives/separator.d.ts +9 -0
  481. package/dist/primitives/separator.js +8 -0
  482. package/dist/primitives/sheet.cjs +27 -0
  483. package/dist/primitives/sheet.d.cts +48 -0
  484. package/dist/primitives/sheet.d.ts +48 -0
  485. package/dist/primitives/sheet.js +27 -0
  486. package/dist/primitives/skeleton.cjs +8 -0
  487. package/dist/primitives/skeleton.d.cts +15 -0
  488. package/dist/primitives/skeleton.d.ts +15 -0
  489. package/dist/primitives/skeleton.js +8 -0
  490. package/dist/primitives/spacer.cjs +20 -0
  491. package/dist/primitives/spacer.d.cts +11 -0
  492. package/dist/primitives/spacer.d.ts +11 -0
  493. package/dist/primitives/spacer.js +20 -0
  494. package/dist/primitives/split-action-button.cjs +95 -0
  495. package/dist/primitives/split-action-button.d.cts +41 -0
  496. package/dist/primitives/split-action-button.d.ts +41 -0
  497. package/dist/primitives/split-action-button.js +95 -0
  498. package/dist/primitives/stack.cjs +8 -0
  499. package/dist/primitives/stack.d.cts +63 -0
  500. package/dist/primitives/stack.d.ts +63 -0
  501. package/dist/primitives/stack.js +8 -0
  502. package/dist/primitives/status-badge.cjs +9 -0
  503. package/dist/primitives/status-badge.d.cts +20 -0
  504. package/dist/primitives/status-badge.d.ts +20 -0
  505. package/dist/primitives/status-badge.js +9 -0
  506. package/dist/primitives/status-icon-tile.cjs +32 -0
  507. package/dist/primitives/status-icon-tile.d.cts +12 -0
  508. package/dist/primitives/status-icon-tile.d.ts +12 -0
  509. package/dist/primitives/status-icon-tile.js +32 -0
  510. package/dist/primitives/status-icon.cjs +8 -0
  511. package/dist/primitives/status-icon.d.cts +18 -0
  512. package/dist/primitives/status-icon.d.ts +18 -0
  513. package/dist/primitives/status-icon.js +8 -0
  514. package/dist/primitives/status-panel.cjs +83 -0
  515. package/dist/primitives/status-panel.d.cts +25 -0
  516. package/dist/primitives/status-panel.d.ts +25 -0
  517. package/dist/primitives/status-panel.js +83 -0
  518. package/dist/primitives/switch-field.cjs +44 -0
  519. package/dist/primitives/switch-field.d.cts +17 -0
  520. package/dist/primitives/switch-field.d.ts +17 -0
  521. package/dist/primitives/switch-field.js +44 -0
  522. package/dist/primitives/switch.cjs +8 -0
  523. package/dist/primitives/switch.d.cts +6 -0
  524. package/dist/primitives/switch.d.ts +6 -0
  525. package/dist/primitives/switch.js +8 -0
  526. package/dist/primitives/tabs.cjs +14 -0
  527. package/dist/primitives/tabs.d.cts +36 -0
  528. package/dist/primitives/tabs.d.ts +36 -0
  529. package/dist/primitives/tabs.js +14 -0
  530. package/dist/primitives/tag-input.cjs +90 -0
  531. package/dist/primitives/tag-input.d.cts +13 -0
  532. package/dist/primitives/tag-input.d.ts +13 -0
  533. package/dist/primitives/tag-input.js +90 -0
  534. package/dist/primitives/text.cjs +8 -0
  535. package/dist/primitives/text.d.cts +51 -0
  536. package/dist/primitives/text.d.ts +51 -0
  537. package/dist/primitives/text.js +8 -0
  538. package/dist/primitives/textarea.cjs +37 -0
  539. package/dist/primitives/textarea.d.cts +12 -0
  540. package/dist/primitives/textarea.d.ts +12 -0
  541. package/dist/primitives/textarea.js +37 -0
  542. package/dist/primitives/thinking-screen.cjs +87 -0
  543. package/dist/primitives/thinking-screen.d.cts +46 -0
  544. package/dist/primitives/thinking-screen.d.ts +46 -0
  545. package/dist/primitives/thinking-screen.js +87 -0
  546. package/dist/primitives/timeline.cjs +13 -0
  547. package/dist/primitives/timeline.d.cts +54 -0
  548. package/dist/primitives/timeline.d.ts +54 -0
  549. package/dist/primitives/timeline.js +13 -0
  550. package/dist/primitives/toggle-group.cjs +51 -0
  551. package/dist/primitives/toggle-group.d.cts +18 -0
  552. package/dist/primitives/toggle-group.d.ts +18 -0
  553. package/dist/primitives/toggle-group.js +51 -0
  554. package/dist/primitives/toggle.cjs +10 -0
  555. package/dist/primitives/toggle.d.cts +15 -0
  556. package/dist/primitives/toggle.d.ts +15 -0
  557. package/dist/primitives/toggle.js +10 -0
  558. package/dist/primitives/tooltip.cjs +14 -0
  559. package/dist/primitives/tooltip.d.cts +9 -0
  560. package/dist/primitives/tooltip.d.ts +9 -0
  561. package/dist/primitives/tooltip.js +14 -0
  562. package/dist/primitives/voice-dictation-button.cjs +244 -0
  563. package/dist/primitives/voice-dictation-button.d.cts +41 -0
  564. package/dist/primitives/voice-dictation-button.d.ts +41 -0
  565. package/dist/primitives/voice-dictation-button.js +244 -0
  566. package/package.json +1243 -3
  567. package/src/styles/components/attachment.css +61 -0
  568. package/src/styles/components/message.css +29 -0
  569. package/src/styles/components.css +3 -0
  570. package/src/styles/globals.css +10 -0
  571. package/src/styles/keyframes.css +26 -0
  572. package/src/styles/palette.gen.css +150 -0
  573. package/src/styles/shadcn.css +631 -0
  574. package/src/styles/source.css +4 -0
  575. package/src/styles/tokens/base.css +36 -0
  576. package/src/styles/tokens/container.css +9 -0
  577. package/src/styles/tokens/forms.css +61 -0
  578. package/src/styles/tokens/theme.css +93 -0
  579. package/src/styles/tokens.css +17 -0
  580. package/src/styles/utilities.css +9 -0
@@ -0,0 +1,126 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ type ConnectionStatus = "connected" | "disconnected" | "syncing" | "error";
5
+ interface ConnectionAction {
6
+ label: ReactNode;
7
+ onClick?: () => void;
8
+ /** Optional leading icon. */
9
+ icon?: ReactNode;
10
+ /** Muted sub-line under the label (e.g. "Re-fetch the last 90 days"). */
11
+ description?: ReactNode;
12
+ disabled?: boolean;
13
+ /**
14
+ * Red treatment in the menu, and a destructive (red) confirm button. The
15
+ * common treatment for Disconnect / Remove / Revoke.
16
+ */
17
+ destructive?: boolean;
18
+ /**
19
+ * Require confirmation before `onClick` fires. Just pass the dialog copy —
20
+ * the menu item opens an AlertDialog and `onClick` runs only on confirm.
21
+ * Pair with `destructive` for the standard Disconnect pattern.
22
+ */
23
+ confirm?: {
24
+ title?: ReactNode;
25
+ description?: ReactNode;
26
+ confirmLabel?: ReactNode;
27
+ cancelLabel?: ReactNode;
28
+ };
29
+ /**
30
+ * Open a form dialog when the menu item is selected — for setup that needs
31
+ * input (an API key, a webhook generator). `content` receives a `close`
32
+ * callback to dismiss the dialog (call it after a successful connect).
33
+ * Use this for configuration that belongs under the standard Settings menu.
34
+ */
35
+ dialog?: {
36
+ title?: ReactNode;
37
+ description?: ReactNode;
38
+ content: (close: () => void) => ReactNode;
39
+ };
40
+ }
41
+ interface ConnectionPrimaryAction {
42
+ label: ReactNode;
43
+ onClick?: () => void;
44
+ disabled?: boolean;
45
+ /** Standard setup dialog opened by the primary action. */
46
+ dialog?: {
47
+ title?: ReactNode;
48
+ description?: ReactNode;
49
+ content: (close: () => void) => ReactNode;
50
+ };
51
+ }
52
+ interface ConnectionProps {
53
+ /** Service name, e.g. "Gmail". */
54
+ name: ReactNode;
55
+ /** Logo / icon shown left of the name (a brand mark, lucide icon, …). */
56
+ logo?: ReactNode;
57
+ /** Status — drives the badge. Defaults to "disconnected". */
58
+ status?: ConnectionStatus;
59
+ /** Override the badge text (e.g. "Sign-in required"). */
60
+ statusLabel?: ReactNode;
61
+ /** Secondary line — e.g. "you@example.com · last synced 2h ago". */
62
+ meta?: ReactNode;
63
+ /** Help / description text under the header. */
64
+ description?: ReactNode;
65
+ /**
66
+ * The one visible row action, normally Connect. Connection owns its
67
+ * placement and sizing so every integration uses the same action pattern.
68
+ */
69
+ primaryAction?: ConnectionPrimaryAction;
70
+ /**
71
+ * Optional supporting content. Primary Connect and Settings controls belong
72
+ * in `primaryAction` and `actions`; do not recreate them here.
73
+ */
74
+ children?: ReactNode;
75
+ /**
76
+ * Management actions (Sync, Re-sync, Disconnect, …) collapsed into the
77
+ * visible Settings menu on the right of the row. Mark Disconnect with
78
+ * `{ destructive: true, confirm: { … } }` for the standard guarded treatment.
79
+ */
80
+ actions?: ConnectionAction[];
81
+ /** Error — rendered as a destructive Alert under the row. */
82
+ error?: ReactNode;
83
+ className?: string;
84
+ }
85
+ /**
86
+ * Connection — one external service in a settings/onboarding connections list.
87
+ *
88
+ * Handles every state from one shape: **disconnected** (a visible Connect
89
+ * action), **connected** (status + meta + a Settings menu of management
90
+ * `actions`), **syncing**, and **error** (a destructive Alert).
91
+ * Local config — logo, name, description, status label — is all per-connection
92
+ * props, so the same primitive serves Gmail, Outlook, an API-key integration,
93
+ * anything. Stack several inside `<ConnectionList>`.
94
+ *
95
+ * ```tsx
96
+ * <Connection
97
+ * name="Gmail"
98
+ * logo={<Mail className="h-5 w-5" />}
99
+ * status="connected"
100
+ * meta="you@example.com · last synced 2h ago"
101
+ * primaryAction={{ label: "Connect", onClick: connect }}
102
+ * actions={[
103
+ * { label: "Sync now", onClick: sync },
104
+ * {
105
+ * label: "Disconnect",
106
+ * onClick: disconnect,
107
+ * destructive: true,
108
+ * confirm: {
109
+ * title: "Disconnect Gmail?",
110
+ * description: "Syncing stops. You can reconnect anytime.",
111
+ * confirmLabel: "Disconnect",
112
+ * },
113
+ * },
114
+ * ]}
115
+ * />
116
+ * ```
117
+ */
118
+ declare function Connection({ name, logo, status, statusLabel, meta, description, primaryAction, children, actions, error, className, }: ConnectionProps): react_jsx_runtime.JSX.Element;
119
+ interface ConnectionListProps {
120
+ children: ReactNode;
121
+ className?: string;
122
+ }
123
+ /** A divided stack of `<Connection>`s. */
124
+ declare function ConnectionList({ children, className }: ConnectionListProps): react_jsx_runtime.JSX.Element;
125
+
126
+ export { Connection, type ConnectionAction, ConnectionList, type ConnectionListProps, type ConnectionPrimaryAction, type ConnectionProps, type ConnectionStatus };
@@ -0,0 +1,206 @@
1
+ "use client";
2
+ import {
3
+ StatusBadge
4
+ } from "../chunk-GMJWBGTJ.js";
5
+ import {
6
+ PageHeaderActions
7
+ } from "../chunk-QNZYQLNP.js";
8
+ import {
9
+ Dialog,
10
+ DialogContent,
11
+ DialogDescription,
12
+ DialogHeader,
13
+ DialogTitle
14
+ } from "../chunk-3QT5VYZ3.js";
15
+ import "../chunk-V4LE2HWP.js";
16
+ import {
17
+ Text
18
+ } from "../chunk-EIY5LLSP.js";
19
+ import {
20
+ Callout
21
+ } from "../chunk-GL5CV4FF.js";
22
+ import "../chunk-D4ZL2OEQ.js";
23
+ import {
24
+ Alert,
25
+ AlertDescription
26
+ } from "../chunk-R4AIM3BQ.js";
27
+ import {
28
+ AlertDialog,
29
+ AlertDialogAction,
30
+ AlertDialogCancel,
31
+ AlertDialogContent,
32
+ AlertDialogDescription,
33
+ AlertDialogFooter,
34
+ AlertDialogHeader,
35
+ AlertDialogTitle
36
+ } from "../chunk-FLPYZNWZ.js";
37
+ import {
38
+ buttonVariants
39
+ } from "../chunk-HQRWRRZJ.js";
40
+ import {
41
+ cn
42
+ } from "../chunk-G6SRSWXB.js";
43
+
44
+ // src/primitives/connection.tsx
45
+ import { useState } from "react";
46
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
47
+ var STATUS = {
48
+ connected: { label: "Connected", tone: "success" },
49
+ syncing: { label: "Syncing", tone: "info" },
50
+ error: { label: "Error", tone: "error" },
51
+ disconnected: { label: "Not connected", tone: "neutral" }
52
+ };
53
+ function Connection({
54
+ name,
55
+ logo,
56
+ status = "disconnected",
57
+ statusLabel,
58
+ meta,
59
+ description,
60
+ primaryAction,
61
+ children,
62
+ actions,
63
+ error,
64
+ className
65
+ }) {
66
+ const [primaryDialogOpen, setPrimaryDialogOpen] = useState(false);
67
+ const [confirmIdx, setConfirmIdx] = useState(null);
68
+ const [formIdx, setFormIdx] = useState(null);
69
+ const s = STATUS[status];
70
+ const hasActions = Boolean(actions && actions.length > 0);
71
+ const confirming = confirmIdx == null ? null : actions?.[confirmIdx];
72
+ const formAction = formIdx == null ? null : actions?.[formIdx];
73
+ const confirmation = confirming?.confirm;
74
+ const formDialog = formAction?.dialog;
75
+ const responsiveActions = [
76
+ ...primaryAction ? [
77
+ {
78
+ id: "connection-primary",
79
+ label: primaryAction.label,
80
+ variant: "default",
81
+ priority: "primary",
82
+ disabled: primaryAction.disabled,
83
+ onSelect: () => {
84
+ if (primaryAction.dialog) setPrimaryDialogOpen(true);
85
+ else primaryAction.onClick?.();
86
+ }
87
+ }
88
+ ] : [],
89
+ ...hasActions ? [
90
+ {
91
+ id: "connection-settings",
92
+ label: "Settings",
93
+ variant: "outline",
94
+ priority: "secondary",
95
+ items: actions.map((action, index) => ({
96
+ id: `connection-setting-${index}`,
97
+ label: action.label,
98
+ icon: action.icon,
99
+ description: action.description,
100
+ disabled: action.disabled,
101
+ tone: action.destructive ? "destructive" : "default",
102
+ separatorBefore: index > 0,
103
+ onSelect: () => {
104
+ if (action.dialog) setFormIdx(index);
105
+ else if (action.confirm) setConfirmIdx(index);
106
+ else action.onClick?.();
107
+ }
108
+ }))
109
+ }
110
+ ] : []
111
+ ];
112
+ const hasSecondary = Boolean(meta || description || children || error);
113
+ return /* @__PURE__ */ jsxs(
114
+ "div",
115
+ {
116
+ "data-slot": "connection",
117
+ className: cn(
118
+ "flex flex-col gap-3 py-4 first:pt-0 last:pb-0 sm:flex-row sm:items-start",
119
+ className
120
+ ),
121
+ children: [
122
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-start gap-3", children: [
123
+ logo && /* @__PURE__ */ jsx("span", { className: "flex h-9 w-9 shrink-0 items-center justify-center overflow-hidden rounded-md border border-border bg-background text-muted-foreground", children: logo }),
124
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
125
+ /* @__PURE__ */ jsx("div", { className: "truncate text-base font-medium text-foreground", children: name }),
126
+ hasSecondary && /* @__PURE__ */ jsxs("div", { className: "mt-0.5 flex flex-col gap-2", children: [
127
+ description && /* @__PURE__ */ jsx(Text, { variant: "small", className: "text-muted-foreground", children: description }),
128
+ meta && /* @__PURE__ */ jsx(Text, { variant: "small", className: "truncate text-muted-foreground", children: meta }),
129
+ children && /* @__PURE__ */ jsx(Callout, { padding: "sm", className: "mt-1 flex flex-col gap-2", children }),
130
+ error && /* @__PURE__ */ jsx(Alert, { variant: "destructive", className: "mt-1", children: /* @__PURE__ */ jsx(AlertDescription, { children: error }) })
131
+ ] })
132
+ ] })
133
+ ] }),
134
+ /* @__PURE__ */ jsxs(
135
+ "div",
136
+ {
137
+ "data-slot": "connection-controls",
138
+ className: cn(
139
+ "flex w-full shrink-0 items-center justify-between gap-2 sm:w-auto sm:justify-end",
140
+ logo && "pl-12 sm:pl-0"
141
+ ),
142
+ children: [
143
+ /* @__PURE__ */ jsx(StatusBadge, { tone: s.tone, children: statusLabel ?? s.label }),
144
+ responsiveActions.length > 0 && /* @__PURE__ */ jsx(PageHeaderActions, { actions: responsiveActions, mobileLabel: "Actions" })
145
+ ]
146
+ }
147
+ ),
148
+ primaryAction?.dialog && /* @__PURE__ */ jsx(Dialog, { open: primaryDialogOpen, onOpenChange: setPrimaryDialogOpen, children: /* @__PURE__ */ jsxs(DialogContent, { children: [
149
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
150
+ /* @__PURE__ */ jsx(DialogTitle, { children: primaryAction.dialog.title ?? primaryAction.label }),
151
+ primaryAction.dialog.description && /* @__PURE__ */ jsx(DialogDescription, { children: primaryAction.dialog.description })
152
+ ] }),
153
+ primaryAction.dialog.content(() => setPrimaryDialogOpen(false))
154
+ ] }) }),
155
+ /* @__PURE__ */ jsx(
156
+ AlertDialog,
157
+ {
158
+ open: confirming != null,
159
+ onOpenChange: (open) => !open && setConfirmIdx(null),
160
+ children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
161
+ /* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
162
+ /* @__PURE__ */ jsx(AlertDialogTitle, { children: confirmation?.title ?? "Are you sure?" }),
163
+ confirmation?.description && /* @__PURE__ */ jsx(AlertDialogDescription, { children: confirmation.description })
164
+ ] }),
165
+ /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
166
+ /* @__PURE__ */ jsx(AlertDialogCancel, { children: confirmation?.cancelLabel ?? "Cancel" }),
167
+ /* @__PURE__ */ jsx(
168
+ AlertDialogAction,
169
+ {
170
+ onClick: () => {
171
+ confirming?.onClick?.();
172
+ setConfirmIdx(null);
173
+ },
174
+ className: confirming?.destructive ? buttonVariants({ variant: "destructive" }) : void 0,
175
+ children: confirmation?.confirmLabel ?? confirming?.label
176
+ }
177
+ )
178
+ ] })
179
+ ] })
180
+ }
181
+ ),
182
+ /* @__PURE__ */ jsx(
183
+ Dialog,
184
+ {
185
+ open: formAction != null,
186
+ onOpenChange: (open) => !open && setFormIdx(null),
187
+ children: /* @__PURE__ */ jsx(DialogContent, { children: formDialog && /* @__PURE__ */ jsxs(Fragment, { children: [
188
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
189
+ /* @__PURE__ */ jsx(DialogTitle, { children: formDialog.title ?? formAction?.label }),
190
+ formDialog.description && /* @__PURE__ */ jsx(DialogDescription, { children: formDialog.description })
191
+ ] }),
192
+ formDialog.content(() => setFormIdx(null))
193
+ ] }) })
194
+ }
195
+ )
196
+ ]
197
+ }
198
+ );
199
+ }
200
+ function ConnectionList({ children, className }) {
201
+ return /* @__PURE__ */ jsx("div", { className: cn("divide-y divide-border", className), children });
202
+ }
203
+ export {
204
+ Connection,
205
+ ConnectionList
206
+ };
@@ -0,0 +1,60 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
5
+
6
+ // src/primitives/contact-header.tsx
7
+ var _jsxruntime = require('react/jsx-runtime');
8
+ function ContactHeader({
9
+ avatar,
10
+ name,
11
+ status,
12
+ meta,
13
+ actions,
14
+ onClose,
15
+ closeLabel = "Close",
16
+ className,
17
+ spacing = "default"
18
+ }) {
19
+ const hasTrailing = !!actions || !!onClose;
20
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex items-start gap-4", spacing === "default" && "mb-6", className), children: [
21
+ avatar && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: avatar }),
22
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
23
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start justify-between gap-3", children: [
24
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "min-w-0 text-xl font-semibold tracking-tight md:text-2xl", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "inline-flex min-w-0 max-w-full items-center gap-2", children: [
25
+ name,
26
+ status
27
+ ] }) }),
28
+ hasTrailing && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 items-center gap-1.5", children: [
29
+ actions,
30
+ onClose && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31
+ "button",
32
+ {
33
+ type: "button",
34
+ onClick: onClose,
35
+ "aria-label": closeLabel,
36
+ className: "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
37
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
38
+ "svg",
39
+ {
40
+ viewBox: "0 0 24 24",
41
+ fill: "none",
42
+ stroke: "currentColor",
43
+ strokeWidth: "2",
44
+ strokeLinecap: "round",
45
+ className: "h-4 w-4",
46
+ "aria-hidden": true,
47
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M18 6 6 18M6 6l12 12" })
48
+ }
49
+ )
50
+ }
51
+ )
52
+ ] })
53
+ ] }),
54
+ meta && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-1.5 flex flex-wrap items-center gap-1.5", children: meta })
55
+ ] })
56
+ ] });
57
+ }
58
+
59
+
60
+ exports.ContactHeader = ContactHeader;
@@ -0,0 +1,54 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface ContactHeaderProps {
5
+ /** Avatar or avatar uploader. Sized by the caller; 44–48px reads best. */
6
+ avatar?: ReactNode;
7
+ /** The person's name — plain text, or an inline editor. */
8
+ name: ReactNode;
9
+ /**
10
+ * A marker that belongs ON the name line: an unread dot, a "needs contact"
11
+ * indicator, a verification tick. Kept out of `meta` so it can't be pushed
12
+ * onto the second line when the chips wrap.
13
+ */
14
+ status?: ReactNode;
15
+ /**
16
+ * Secondary identity under the name — role and company, typically as chips
17
+ * or inline editors. Wraps freely.
18
+ */
19
+ meta?: ReactNode;
20
+ /** Reach-out controls. Sits on the name line, right-aligned. */
21
+ actions?: ReactNode;
22
+ /** Renders a close control alongside the actions. Omit outside a panel. */
23
+ onClose?: () => void;
24
+ closeLabel?: string;
25
+ className?: string;
26
+ spacing?: "none" | "default";
27
+ }
28
+ /**
29
+ * The identity block at the top of a contact view — avatar, name, role and
30
+ * company, and the ways to reach them.
31
+ *
32
+ * Exists because composing this from a page header goes subtly wrong. A page
33
+ * header IS a row: title left, actions right, `justify-between` between them. Put it
34
+ * in a column beside an avatar and that row collapses to the column's width,
35
+ * so the actions have nowhere to go but underneath — a third stacked band with
36
+ * a lone icon in it, and a wide empty gutter to the right of the name. Its
37
+ * page-level `text-3xl` and `mb-6` are tuned for a route heading, not for
38
+ * sitting next to a 44px avatar.
39
+ *
40
+ * So this owns the whole composition instead:
41
+ * - one row: avatar, then a column of (name + actions) over (meta)
42
+ * - the actions share the name's line, which is what closes the gutter and
43
+ * removes the orphaned band
44
+ * - the close control joins the actions, so there's a single right-hand
45
+ * cluster rather than a × floating in the corner
46
+ * - the name steps down to text-xl/2xl — a contact is the subject of a
47
+ * panel, not the title of a page
48
+ *
49
+ * Every slot is a ReactNode, so the same header serves a read-only card and a
50
+ * fully editable detail view without knowing which it is.
51
+ */
52
+ declare function ContactHeader({ avatar, name, status, meta, actions, onClose, closeLabel, className, spacing, }: ContactHeaderProps): react_jsx_runtime.JSX.Element;
53
+
54
+ export { ContactHeader, type ContactHeaderProps };
@@ -0,0 +1,54 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface ContactHeaderProps {
5
+ /** Avatar or avatar uploader. Sized by the caller; 44–48px reads best. */
6
+ avatar?: ReactNode;
7
+ /** The person's name — plain text, or an inline editor. */
8
+ name: ReactNode;
9
+ /**
10
+ * A marker that belongs ON the name line: an unread dot, a "needs contact"
11
+ * indicator, a verification tick. Kept out of `meta` so it can't be pushed
12
+ * onto the second line when the chips wrap.
13
+ */
14
+ status?: ReactNode;
15
+ /**
16
+ * Secondary identity under the name — role and company, typically as chips
17
+ * or inline editors. Wraps freely.
18
+ */
19
+ meta?: ReactNode;
20
+ /** Reach-out controls. Sits on the name line, right-aligned. */
21
+ actions?: ReactNode;
22
+ /** Renders a close control alongside the actions. Omit outside a panel. */
23
+ onClose?: () => void;
24
+ closeLabel?: string;
25
+ className?: string;
26
+ spacing?: "none" | "default";
27
+ }
28
+ /**
29
+ * The identity block at the top of a contact view — avatar, name, role and
30
+ * company, and the ways to reach them.
31
+ *
32
+ * Exists because composing this from a page header goes subtly wrong. A page
33
+ * header IS a row: title left, actions right, `justify-between` between them. Put it
34
+ * in a column beside an avatar and that row collapses to the column's width,
35
+ * so the actions have nowhere to go but underneath — a third stacked band with
36
+ * a lone icon in it, and a wide empty gutter to the right of the name. Its
37
+ * page-level `text-3xl` and `mb-6` are tuned for a route heading, not for
38
+ * sitting next to a 44px avatar.
39
+ *
40
+ * So this owns the whole composition instead:
41
+ * - one row: avatar, then a column of (name + actions) over (meta)
42
+ * - the actions share the name's line, which is what closes the gutter and
43
+ * removes the orphaned band
44
+ * - the close control joins the actions, so there's a single right-hand
45
+ * cluster rather than a × floating in the corner
46
+ * - the name steps down to text-xl/2xl — a contact is the subject of a
47
+ * panel, not the title of a page
48
+ *
49
+ * Every slot is a ReactNode, so the same header serves a read-only card and a
50
+ * fully editable detail view without knowing which it is.
51
+ */
52
+ declare function ContactHeader({ avatar, name, status, meta, actions, onClose, closeLabel, className, spacing, }: ContactHeaderProps): react_jsx_runtime.JSX.Element;
53
+
54
+ export { ContactHeader, type ContactHeaderProps };
@@ -0,0 +1,60 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "../chunk-G6SRSWXB.js";
5
+
6
+ // src/primitives/contact-header.tsx
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function ContactHeader({
9
+ avatar,
10
+ name,
11
+ status,
12
+ meta,
13
+ actions,
14
+ onClose,
15
+ closeLabel = "Close",
16
+ className,
17
+ spacing = "default"
18
+ }) {
19
+ const hasTrailing = !!actions || !!onClose;
20
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-4", spacing === "default" && "mb-6", className), children: [
21
+ avatar && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: avatar }),
22
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
23
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
24
+ /* @__PURE__ */ jsx("h1", { className: "min-w-0 text-xl font-semibold tracking-tight md:text-2xl", children: /* @__PURE__ */ jsxs("span", { className: "inline-flex min-w-0 max-w-full items-center gap-2", children: [
25
+ name,
26
+ status
27
+ ] }) }),
28
+ hasTrailing && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [
29
+ actions,
30
+ onClose && /* @__PURE__ */ jsx(
31
+ "button",
32
+ {
33
+ type: "button",
34
+ onClick: onClose,
35
+ "aria-label": closeLabel,
36
+ className: "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
37
+ children: /* @__PURE__ */ jsx(
38
+ "svg",
39
+ {
40
+ viewBox: "0 0 24 24",
41
+ fill: "none",
42
+ stroke: "currentColor",
43
+ strokeWidth: "2",
44
+ strokeLinecap: "round",
45
+ className: "h-4 w-4",
46
+ "aria-hidden": true,
47
+ children: /* @__PURE__ */ jsx("path", { d: "M18 6 6 18M6 6l12 12" })
48
+ }
49
+ )
50
+ }
51
+ )
52
+ ] })
53
+ ] }),
54
+ meta && /* @__PURE__ */ jsx("div", { className: "mt-1.5 flex flex-wrap items-center gap-1.5", children: meta })
55
+ ] })
56
+ ] });
57
+ }
58
+ export {
59
+ ContactHeader
60
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkVKIGJNJRcjs = require('../chunk-VKIGJNJR.cjs');
5
+ require('../chunk-L4DH72UF.cjs');
6
+ require('../chunk-4LXN6GLZ.cjs');
7
+ require('../chunk-KWLSBTB2.cjs');
8
+
9
+
10
+ exports.CopyButton = _chunkVKIGJNJRcjs.CopyButton;
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { ButtonProps } from './button.cjs';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ interface CopyButtonProps extends Omit<ButtonProps, "onClick" | "children"> {
8
+ /** The text to copy when clicked. */
9
+ text: string;
10
+ /** Optional label shown next to the icon. Omit for an icon-only button. */
11
+ label?: ReactNode;
12
+ /** Label shown after a successful copy. Defaults to `label`. */
13
+ copiedLabel?: ReactNode;
14
+ /** ms before the success state reverts. Defaults to 2000. */
15
+ resetAfter?: number;
16
+ /** Fired after `navigator.clipboard.writeText` resolves with success/failure. */
17
+ onCopied?: (success: boolean) => void;
18
+ }
19
+ declare const CopyButton: React.ForwardRefExoticComponent<CopyButtonProps & React.RefAttributes<HTMLButtonElement>>;
20
+
21
+ export { CopyButton, type CopyButtonProps };
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { ButtonProps } from './button.js';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ interface CopyButtonProps extends Omit<ButtonProps, "onClick" | "children"> {
8
+ /** The text to copy when clicked. */
9
+ text: string;
10
+ /** Optional label shown next to the icon. Omit for an icon-only button. */
11
+ label?: ReactNode;
12
+ /** Label shown after a successful copy. Defaults to `label`. */
13
+ copiedLabel?: ReactNode;
14
+ /** ms before the success state reverts. Defaults to 2000. */
15
+ resetAfter?: number;
16
+ /** Fired after `navigator.clipboard.writeText` resolves with success/failure. */
17
+ onCopied?: (success: boolean) => void;
18
+ }
19
+ declare const CopyButton: React.ForwardRefExoticComponent<CopyButtonProps & React.RefAttributes<HTMLButtonElement>>;
20
+
21
+ export { CopyButton, type CopyButtonProps };
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import {
3
+ CopyButton
4
+ } from "../chunk-NW3OWKBN.js";
5
+ import "../chunk-HQRWRRZJ.js";
6
+ import "../chunk-ZWZAAGQF.js";
7
+ import "../chunk-G6SRSWXB.js";
8
+ export {
9
+ CopyButton
10
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkVGTINL5Qcjs = require('../chunk-VGTINL5Q.cjs');
5
+ require('../chunk-I6GUOEBO.cjs');
6
+ require('../chunk-KWLSBTB2.cjs');
7
+
8
+
9
+ exports.CountBadge = _chunkVGTINL5Qcjs.CountBadge;
@@ -0,0 +1,21 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { BadgeProps } from './badge.cjs';
3
+ import 'class-variance-authority/types';
4
+ import 'class-variance-authority';
5
+ import 'react';
6
+
7
+ interface CountBadgeProps extends Omit<BadgeProps, "as" | "children" | "size" | "shrink"> {
8
+ /** Theme colour. Defaults to destructive; use secondary for neutral totals. */
9
+ variant?: BadgeProps["variant"];
10
+ /** Number or compact count label, for example `12`, `9+`, or `…`. */
11
+ value: number | string;
12
+ }
13
+ /**
14
+ * Compact numeric status badge with stable geometry.
15
+ *
16
+ * A single character is a true 20px circle. Longer values grow horizontally
17
+ * while retaining a 20px height, centred text, and tabular numerals.
18
+ */
19
+ declare function CountBadge({ value, variant, className, ...props }: CountBadgeProps): react_jsx_runtime.JSX.Element;
20
+
21
+ export { CountBadge, type CountBadgeProps };