@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,101 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
2
+ "use client";
3
+
4
+
5
+ var _chunkL4DH72UFcjs = require('../chunk-L4DH72UF.cjs');
6
+ require('../chunk-KWLSBTB2.cjs');
7
+
8
+ // src/primitives/confirm-bar.tsx
9
+ var _react = require('react');
10
+ var _reactdom = require('react-dom');
11
+ var _jsxruntime = require('react/jsx-runtime');
12
+ function ConfirmBar({
13
+ open,
14
+ title,
15
+ description,
16
+ confirmLabel = "Confirm",
17
+ cancelLabel = "Cancel",
18
+ confirmVariant = "default",
19
+ onConfirm,
20
+ onCancel,
21
+ countdown: initialCountdown,
22
+ paused = false,
23
+ expandableDescription = false,
24
+ containerClassName = "max-w-3xl",
25
+ className
26
+ }) {
27
+ const [remaining, setRemaining] = _react.useState.call(void 0, _nullishCoalesce(initialCountdown, () => ( 0)));
28
+ const timerRef = _react.useRef.call(void 0, null);
29
+ const [mounted, setMounted] = _react.useState.call(void 0, false);
30
+ const [expanded, setExpanded] = _react.useState.call(void 0, false);
31
+ _react.useEffect.call(void 0, () => {
32
+ setMounted(true);
33
+ }, []);
34
+ _react.useEffect.call(void 0, () => {
35
+ if (!open) setExpanded(false);
36
+ }, [open]);
37
+ const timerPaused = paused || expanded;
38
+ _react.useEffect.call(void 0, () => {
39
+ if (!open || !initialCountdown || timerPaused) {
40
+ if (timerRef.current) {
41
+ clearInterval(timerRef.current);
42
+ timerRef.current = null;
43
+ }
44
+ return;
45
+ }
46
+ setRemaining(initialCountdown);
47
+ timerRef.current = setInterval(() => {
48
+ setRemaining((prev) => {
49
+ if (prev <= 1) {
50
+ clearInterval(timerRef.current);
51
+ timerRef.current = null;
52
+ onCancel();
53
+ return 0;
54
+ }
55
+ return prev - 1;
56
+ });
57
+ }, 1e3);
58
+ return () => {
59
+ if (timerRef.current) {
60
+ clearInterval(timerRef.current);
61
+ timerRef.current = null;
62
+ }
63
+ };
64
+ }, [open, initialCountdown, timerPaused]);
65
+ if (!mounted || !open) return null;
66
+ return _reactdom.createPortal.call(void 0,
67
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
68
+ "div",
69
+ {
70
+ className: `fixed inset-x-0 bottom-0 z-50 border-t bg-background shadow-lg pb-[env(safe-area-inset-bottom)] animate-in slide-in-from-bottom-full duration-200 ${_nullishCoalesce(className, () => ( ""))}`,
71
+ onClick: (e) => e.stopPropagation(),
72
+ onPointerDown: (e) => e.stopPropagation(),
73
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `mx-auto px-5 py-4 flex items-center gap-4 ${containerClassName}`, children: [
74
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0", children: [
75
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-base font-medium", children: title }),
76
+ description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: `text-sm text-muted-foreground mt-0.5 ${expandableDescription && !expanded ? "truncate" : ""}`, children: description }),
77
+ expandableDescription && description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
78
+ "button",
79
+ {
80
+ type: "button",
81
+ onClick: () => setExpanded((v) => !v),
82
+ className: "text-xs text-foreground/70 hover:text-foreground underline underline-offset-2 mt-1",
83
+ children: expanded ? "See less" : "See more"
84
+ }
85
+ )
86
+ ] }),
87
+ initialCountdown && !timerPaused && remaining > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-xs text-muted-foreground tabular-nums shrink-0", children: [
88
+ remaining,
89
+ "s"
90
+ ] }),
91
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL4DH72UFcjs.Button, { size: "sm", variant: "ghost", onClick: onCancel, className: "shrink-0", children: cancelLabel }),
92
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL4DH72UFcjs.Button, { size: "sm", variant: confirmVariant, onClick: onConfirm, className: "shrink-0", children: confirmLabel })
93
+ ] })
94
+ }
95
+ ),
96
+ document.body
97
+ );
98
+ }
99
+
100
+
101
+ exports.ConfirmBar = ConfirmBar;
@@ -0,0 +1,60 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface ConfirmBarProps {
5
+ /** Whether the bar is visible. */
6
+ open: boolean;
7
+ /** Primary question — e.g. "No to Tom Harris?" */
8
+ title: ReactNode;
9
+ /** Supporting detail — e.g. the transcript or reason. */
10
+ description?: ReactNode;
11
+ /** Label for the confirm button. Defaults to "Confirm". */
12
+ confirmLabel?: ReactNode;
13
+ /** Label for the cancel button. Defaults to "Cancel". */
14
+ cancelLabel?: ReactNode;
15
+ /** Visual style of the confirm button. */
16
+ confirmVariant?: "default" | "destructive";
17
+ /** Called when the user confirms (or the countdown expires). */
18
+ onConfirm: () => void;
19
+ /** Called when the user cancels. */
20
+ onCancel: () => void;
21
+ /**
22
+ * Auto-dismiss countdown in seconds. When set, the bar shows a
23
+ * countdown and auto-fires onCancel (dismiss) when it reaches zero.
24
+ * The user must explicitly click Confirm to act. Omit for no timer.
25
+ */
26
+ countdown?: number;
27
+ /**
28
+ * Pause the countdown without dismissing the bar. Useful while the
29
+ * user is reading more detail so it doesn't auto-dismiss out from
30
+ * under them. Combine with internal expand if needed.
31
+ */
32
+ paused?: boolean;
33
+ /**
34
+ * When true, the description is truncated to one line with a
35
+ * "See more" toggle that expands the full text and pauses the
36
+ * countdown while expanded. Use for long AI explanations that don't
37
+ * fit on small screens.
38
+ */
39
+ expandableDescription?: boolean;
40
+ /** Outer container max-width class. Defaults to `max-w-3xl`. */
41
+ containerClassName?: string;
42
+ className?: string;
43
+ }
44
+ /**
45
+ * Fixed bottom confirmation bar — slides up to confirm or cancel an
46
+ * action. Optionally counts down and auto-fires if the user doesn't
47
+ * respond.
48
+ *
49
+ * Use when the system has inferred an action from user input (voice
50
+ * note → reject, bulk import → archive duplicates, AI suggestion →
51
+ * apply) and wants to surface the suggestion for explicit confirmation.
52
+ * The countdown auto-dismisses (not auto-confirms) — the user must
53
+ * actively click to act.
54
+ *
55
+ * For form save state, use `<SaveBar>` instead. For multi-select
56
+ * batch actions, use `<BatchActionBar>`.
57
+ */
58
+ declare function ConfirmBar({ open, title, description, confirmLabel, cancelLabel, confirmVariant, onConfirm, onCancel, countdown: initialCountdown, paused, expandableDescription, containerClassName, className, }: ConfirmBarProps): React.ReactPortal | null;
59
+
60
+ export { ConfirmBar, type ConfirmBarProps };
@@ -0,0 +1,60 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface ConfirmBarProps {
5
+ /** Whether the bar is visible. */
6
+ open: boolean;
7
+ /** Primary question — e.g. "No to Tom Harris?" */
8
+ title: ReactNode;
9
+ /** Supporting detail — e.g. the transcript or reason. */
10
+ description?: ReactNode;
11
+ /** Label for the confirm button. Defaults to "Confirm". */
12
+ confirmLabel?: ReactNode;
13
+ /** Label for the cancel button. Defaults to "Cancel". */
14
+ cancelLabel?: ReactNode;
15
+ /** Visual style of the confirm button. */
16
+ confirmVariant?: "default" | "destructive";
17
+ /** Called when the user confirms (or the countdown expires). */
18
+ onConfirm: () => void;
19
+ /** Called when the user cancels. */
20
+ onCancel: () => void;
21
+ /**
22
+ * Auto-dismiss countdown in seconds. When set, the bar shows a
23
+ * countdown and auto-fires onCancel (dismiss) when it reaches zero.
24
+ * The user must explicitly click Confirm to act. Omit for no timer.
25
+ */
26
+ countdown?: number;
27
+ /**
28
+ * Pause the countdown without dismissing the bar. Useful while the
29
+ * user is reading more detail so it doesn't auto-dismiss out from
30
+ * under them. Combine with internal expand if needed.
31
+ */
32
+ paused?: boolean;
33
+ /**
34
+ * When true, the description is truncated to one line with a
35
+ * "See more" toggle that expands the full text and pauses the
36
+ * countdown while expanded. Use for long AI explanations that don't
37
+ * fit on small screens.
38
+ */
39
+ expandableDescription?: boolean;
40
+ /** Outer container max-width class. Defaults to `max-w-3xl`. */
41
+ containerClassName?: string;
42
+ className?: string;
43
+ }
44
+ /**
45
+ * Fixed bottom confirmation bar — slides up to confirm or cancel an
46
+ * action. Optionally counts down and auto-fires if the user doesn't
47
+ * respond.
48
+ *
49
+ * Use when the system has inferred an action from user input (voice
50
+ * note → reject, bulk import → archive duplicates, AI suggestion →
51
+ * apply) and wants to surface the suggestion for explicit confirmation.
52
+ * The countdown auto-dismisses (not auto-confirms) — the user must
53
+ * actively click to act.
54
+ *
55
+ * For form save state, use `<SaveBar>` instead. For multi-select
56
+ * batch actions, use `<BatchActionBar>`.
57
+ */
58
+ declare function ConfirmBar({ open, title, description, confirmLabel, cancelLabel, confirmVariant, onConfirm, onCancel, countdown: initialCountdown, paused, expandableDescription, containerClassName, className, }: ConfirmBarProps): React.ReactPortal | null;
59
+
60
+ export { ConfirmBar, type ConfirmBarProps };
@@ -0,0 +1,101 @@
1
+ "use client";
2
+ "use client";
3
+ import {
4
+ Button
5
+ } from "../chunk-HQRWRRZJ.js";
6
+ import "../chunk-G6SRSWXB.js";
7
+
8
+ // src/primitives/confirm-bar.tsx
9
+ import { useEffect, useRef, useState } from "react";
10
+ import { createPortal } from "react-dom";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ function ConfirmBar({
13
+ open,
14
+ title,
15
+ description,
16
+ confirmLabel = "Confirm",
17
+ cancelLabel = "Cancel",
18
+ confirmVariant = "default",
19
+ onConfirm,
20
+ onCancel,
21
+ countdown: initialCountdown,
22
+ paused = false,
23
+ expandableDescription = false,
24
+ containerClassName = "max-w-3xl",
25
+ className
26
+ }) {
27
+ const [remaining, setRemaining] = useState(initialCountdown ?? 0);
28
+ const timerRef = useRef(null);
29
+ const [mounted, setMounted] = useState(false);
30
+ const [expanded, setExpanded] = useState(false);
31
+ useEffect(() => {
32
+ setMounted(true);
33
+ }, []);
34
+ useEffect(() => {
35
+ if (!open) setExpanded(false);
36
+ }, [open]);
37
+ const timerPaused = paused || expanded;
38
+ useEffect(() => {
39
+ if (!open || !initialCountdown || timerPaused) {
40
+ if (timerRef.current) {
41
+ clearInterval(timerRef.current);
42
+ timerRef.current = null;
43
+ }
44
+ return;
45
+ }
46
+ setRemaining(initialCountdown);
47
+ timerRef.current = setInterval(() => {
48
+ setRemaining((prev) => {
49
+ if (prev <= 1) {
50
+ clearInterval(timerRef.current);
51
+ timerRef.current = null;
52
+ onCancel();
53
+ return 0;
54
+ }
55
+ return prev - 1;
56
+ });
57
+ }, 1e3);
58
+ return () => {
59
+ if (timerRef.current) {
60
+ clearInterval(timerRef.current);
61
+ timerRef.current = null;
62
+ }
63
+ };
64
+ }, [open, initialCountdown, timerPaused]);
65
+ if (!mounted || !open) return null;
66
+ return createPortal(
67
+ /* @__PURE__ */ jsx(
68
+ "div",
69
+ {
70
+ className: `fixed inset-x-0 bottom-0 z-50 border-t bg-background shadow-lg pb-[env(safe-area-inset-bottom)] animate-in slide-in-from-bottom-full duration-200 ${className ?? ""}`,
71
+ onClick: (e) => e.stopPropagation(),
72
+ onPointerDown: (e) => e.stopPropagation(),
73
+ children: /* @__PURE__ */ jsxs("div", { className: `mx-auto px-5 py-4 flex items-center gap-4 ${containerClassName}`, children: [
74
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
75
+ /* @__PURE__ */ jsx("p", { className: "text-base font-medium", children: title }),
76
+ description && /* @__PURE__ */ jsx("p", { className: `text-sm text-muted-foreground mt-0.5 ${expandableDescription && !expanded ? "truncate" : ""}`, children: description }),
77
+ expandableDescription && description && /* @__PURE__ */ jsx(
78
+ "button",
79
+ {
80
+ type: "button",
81
+ onClick: () => setExpanded((v) => !v),
82
+ className: "text-xs text-foreground/70 hover:text-foreground underline underline-offset-2 mt-1",
83
+ children: expanded ? "See less" : "See more"
84
+ }
85
+ )
86
+ ] }),
87
+ initialCountdown && !timerPaused && remaining > 0 && /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground tabular-nums shrink-0", children: [
88
+ remaining,
89
+ "s"
90
+ ] }),
91
+ /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", onClick: onCancel, className: "shrink-0", children: cancelLabel }),
92
+ /* @__PURE__ */ jsx(Button, { size: "sm", variant: confirmVariant, onClick: onConfirm, className: "shrink-0", children: confirmLabel })
93
+ ] })
94
+ }
95
+ ),
96
+ document.body
97
+ );
98
+ }
99
+ export {
100
+ ConfirmBar
101
+ };
@@ -0,0 +1,243 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
+
3
+
4
+ var _chunkI6GUOEBOcjs = require('../chunk-I6GUOEBO.cjs');
5
+
6
+
7
+ var _chunkL4DH72UFcjs = require('../chunk-L4DH72UF.cjs');
8
+
9
+
10
+ var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
11
+
12
+ // src/primitives/connection-status-bar.tsx
13
+ var _reactcollapsible = require('@radix-ui/react-collapsible'); var CollapsiblePrimitive = _interopRequireWildcard(_reactcollapsible);
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+ var _lucidereact = require('lucide-react');
22
+
23
+
24
+ var _react = require('react');
25
+ var _jsxruntime = require('react/jsx-runtime');
26
+ var statePresentation = {
27
+ disconnected: { icon: _lucidereact.Plug, iconClassName: "text-muted-foreground" },
28
+ syncing: { icon: _lucidereact.RefreshCw, iconClassName: "text-blue-600 dark:text-blue-400" },
29
+ connected: { icon: _lucidereact.CheckCircle2, iconClassName: "text-emerald-600 dark:text-emerald-400" },
30
+ error: { icon: _lucidereact.AlertCircle, iconClassName: "text-destructive" }
31
+ };
32
+ function StatusAction({
33
+ action,
34
+ state
35
+ }) {
36
+ const external = action.external || action.target === "_blank";
37
+ const ariaLabel = _nullishCoalesce(action.ariaLabel, () => ( (typeof action.label === "string" ? action.label : void 0)));
38
+ const showSyncIcon = !external && (state === "connected" || state === "syncing");
39
+ const content = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
40
+ showSyncIcon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
41
+ _lucidereact.RefreshCw,
42
+ {
43
+ "aria-hidden": "true",
44
+ className: state === "syncing" ? "animate-spin" : void 0
45
+ }
46
+ ) : null,
47
+ action.iconOnly ? null : action.label,
48
+ external ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { "aria-hidden": "true" }) : null
49
+ ] });
50
+ const className = _chunkKWLSBTB2cjs.cn.call(void 0,
51
+ state === "disconnected" && "bg-foreground text-background hover:bg-foreground/90",
52
+ state === "error" && "border-destructive/30 text-destructive hover:bg-destructive/5 hover:text-destructive"
53
+ );
54
+ const variant = state === "disconnected" ? "default" : action.iconOnly ? "quiet" : "outline";
55
+ const size = action.iconOnly ? "icon-sm" : "sm";
56
+ if (action.href) {
57
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL4DH72UFcjs.Button, { asChild: true, variant, size, className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
58
+ "a",
59
+ {
60
+ href: action.href,
61
+ target: _nullishCoalesce(action.target, () => ( (action.external ? "_blank" : void 0))),
62
+ rel: external ? "noreferrer" : void 0,
63
+ "aria-label": action.iconOnly ? ariaLabel : void 0,
64
+ title: action.iconOnly ? ariaLabel : void 0,
65
+ "aria-disabled": action.disabled || void 0,
66
+ onClick: (event) => {
67
+ if (action.disabled) {
68
+ event.preventDefault();
69
+ return;
70
+ }
71
+ _optionalChain([action, 'access', _ => _.onClick, 'optionalCall', _2 => _2()]);
72
+ },
73
+ children: content
74
+ }
75
+ ) });
76
+ }
77
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
78
+ _chunkL4DH72UFcjs.Button,
79
+ {
80
+ type: "button",
81
+ variant,
82
+ size,
83
+ className,
84
+ "aria-label": action.iconOnly ? ariaLabel : void 0,
85
+ title: action.iconOnly ? ariaLabel : void 0,
86
+ disabled: action.disabled,
87
+ onClick: action.onClick,
88
+ children: content
89
+ }
90
+ );
91
+ }
92
+ function ConnectionStatusBar({
93
+ state,
94
+ name,
95
+ description,
96
+ facts,
97
+ action,
98
+ actions,
99
+ progress,
100
+ progressLabel = "Sync progress",
101
+ children,
102
+ open,
103
+ defaultOpen = false,
104
+ onOpenChange,
105
+ className
106
+ }) {
107
+ const [uncontrolledOpen, setUncontrolledOpen] = _react.useState.call(void 0, defaultOpen);
108
+ const controlled = open !== void 0;
109
+ const isOpen = controlled ? open : uncontrolledOpen;
110
+ const presentation = statePresentation[state];
111
+ const StateIcon = presentation.icon;
112
+ const clampedProgress = progress === void 0 ? void 0 : Math.min(100, Math.max(0, progress));
113
+ const visibleActions = _nullishCoalesce(actions, () => ( (action ? [action] : [])));
114
+ const setOpen = (nextOpen) => {
115
+ if (!controlled) setUncontrolledOpen(nextOpen);
116
+ _optionalChain([onOpenChange, 'optionalCall', _3 => _3(nextOpen)]);
117
+ };
118
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
119
+ CollapsiblePrimitive.Root,
120
+ {
121
+ open: isOpen,
122
+ onOpenChange: setOpen,
123
+ "data-slot": "connection-status-bar",
124
+ "data-status": state,
125
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
126
+ "overflow-hidden rounded-xl border border-border bg-background shadow-sm",
127
+ className
128
+ ),
129
+ children: [
130
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
131
+ "div",
132
+ {
133
+ "data-slot": "connection-status-row",
134
+ className: "flex min-h-[4.75rem] flex-row items-center gap-3 px-4 py-4 sm:gap-5 sm:px-5",
135
+ children: [
136
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
137
+ "div",
138
+ {
139
+ "data-slot": "connection-status-leading",
140
+ className: "flex min-w-0 flex-1 items-center gap-3 sm:min-h-11 sm:gap-4",
141
+ children: [
142
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-11 w-5 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
143
+ StateIcon,
144
+ {
145
+ "aria-hidden": "true",
146
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
147
+ "size-5",
148
+ state === "syncing" && "animate-spin",
149
+ presentation.iconClassName
150
+ )
151
+ }
152
+ ) }),
153
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-center gap-3 sm:min-h-11 sm:gap-4", children: [
154
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-w-0 shrink items-center truncate whitespace-nowrap text-sm font-semibold leading-none text-foreground", children: name }),
155
+ description || _optionalChain([facts, 'optionalAccess', _4 => _4.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "aria-hidden": "true", className: "h-5 w-px shrink-0 bg-border" }) : null,
156
+ description || _optionalChain([facts, 'optionalAccess', _5 => _5.length]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
157
+ "div",
158
+ {
159
+ "data-slot": "connection-status-summary",
160
+ className: "flex min-w-0 flex-1 flex-nowrap items-center gap-2 overflow-hidden",
161
+ children: [
162
+ description ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 truncate whitespace-nowrap text-sm leading-none text-muted-foreground", children: description }) : null,
163
+ _optionalChain([facts, 'optionalAccess', _6 => _6.map, 'call', _7 => _7((fact, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
164
+ _chunkI6GUOEBOcjs.Badge,
165
+ {
166
+ "data-status-fact": "true",
167
+ variant: _nullishCoalesce(fact.variant, () => ( "default")),
168
+ size: "micro",
169
+ padding: "roomy",
170
+ weight: "semibold",
171
+ shrink: true,
172
+ transform: "uppercase",
173
+ className: "whitespace-nowrap tabular-nums",
174
+ children: fact.label
175
+ },
176
+ index
177
+ ))])
178
+ ]
179
+ }
180
+ ) : null
181
+ ] })
182
+ ]
183
+ }
184
+ ),
185
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 items-center justify-end gap-2 sm:gap-3", children: [
186
+ state === "syncing" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
187
+ "div",
188
+ {
189
+ role: "progressbar",
190
+ "aria-label": progressLabel,
191
+ "aria-valuemin": clampedProgress === void 0 ? void 0 : 0,
192
+ "aria-valuemax": clampedProgress === void 0 ? void 0 : 100,
193
+ "aria-valuenow": clampedProgress,
194
+ className: "h-1.5 w-16 overflow-hidden rounded-full bg-muted sm:w-28",
195
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
196
+ "div",
197
+ {
198
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
199
+ "h-full rounded-full bg-blue-600/70 transition-[width] dark:bg-blue-400/70",
200
+ clampedProgress === void 0 && "w-3/5 animate-pulse"
201
+ ),
202
+ style: clampedProgress === void 0 ? void 0 : { width: `${clampedProgress}%` }
203
+ }
204
+ )
205
+ }
206
+ ) : null,
207
+ visibleActions.map((visibleAction, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
208
+ StatusAction,
209
+ {
210
+ action: visibleAction,
211
+ state
212
+ },
213
+ _nullishCoalesce(visibleAction.ariaLabel, () => ( (typeof visibleAction.label === "string" ? visibleAction.label : index)))
214
+ )),
215
+ children ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CollapsiblePrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
216
+ _chunkL4DH72UFcjs.Button,
217
+ {
218
+ type: "button",
219
+ variant: "quiet",
220
+ size: "icon-sm",
221
+ "aria-label": isOpen ? "Hide connection details" : "Show connection details",
222
+ "aria-expanded": isOpen,
223
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
224
+ _lucidereact.ChevronDown,
225
+ {
226
+ "aria-hidden": "true",
227
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "transition-transform", isOpen && "rotate-180")
228
+ }
229
+ )
230
+ }
231
+ ) }) : null
232
+ ] })
233
+ ]
234
+ }
235
+ ),
236
+ children ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CollapsiblePrimitive.Content, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "connection-status-details", className: "border-t border-border px-5 py-4", children }) }) : null
237
+ ]
238
+ }
239
+ );
240
+ }
241
+
242
+
243
+ exports.ConnectionStatusBar = ConnectionStatusBar;
@@ -0,0 +1,52 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode, HTMLAttributeAnchorTarget } from 'react';
3
+ import { BadgeVariant } from './badge.cjs';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ type ConnectionStatusBarState = "disconnected" | "syncing" | "connected" | "error";
8
+ interface ConnectionStatusBarAction {
9
+ label: ReactNode;
10
+ ariaLabel?: string;
11
+ onClick?: () => void;
12
+ href?: string;
13
+ target?: HTMLAttributeAnchorTarget;
14
+ external?: boolean;
15
+ iconOnly?: boolean;
16
+ disabled?: boolean;
17
+ }
18
+ interface ConnectionStatusBarFact {
19
+ label: ReactNode;
20
+ variant?: BadgeVariant;
21
+ }
22
+ interface ConnectionStatusBarProps {
23
+ state: ConnectionStatusBarState;
24
+ /** Integration name, or the setup prompt before a source is connected. */
25
+ name: ReactNode;
26
+ /** Current activity or health summary. */
27
+ description?: ReactNode;
28
+ /** Compact, structured values displayed as separate data badges. */
29
+ facts?: readonly ConnectionStatusBarFact[];
30
+ /** One primary action retained for backwards compatibility. */
31
+ action?: ConnectionStatusBarAction;
32
+ /** Compact action group, rendered in the supplied order. */
33
+ actions?: readonly ConnectionStatusBarAction[];
34
+ /** A real 0–100 value. Omit it for an indeterminate syncing treatment. */
35
+ progress?: number;
36
+ /** Accessible label for the progress indicator. */
37
+ progressLabel?: string;
38
+ /** Optional supporting content revealed by the trailing chevron. */
39
+ children?: ReactNode;
40
+ open?: boolean;
41
+ defaultOpen?: boolean;
42
+ onOpenChange?: (open: boolean) => void;
43
+ className?: string;
44
+ }
45
+ /**
46
+ * A single, shared status row for data-source connections. It covers setup,
47
+ * active syncing, healthy connections, and recoverable errors without making
48
+ * each product recreate the layout or semantic colour treatment.
49
+ */
50
+ declare function ConnectionStatusBar({ state, name, description, facts, action, actions, progress, progressLabel, children, open, defaultOpen, onOpenChange, className, }: ConnectionStatusBarProps): react_jsx_runtime.JSX.Element;
51
+
52
+ export { ConnectionStatusBar, type ConnectionStatusBarAction, type ConnectionStatusBarFact, type ConnectionStatusBarProps, type ConnectionStatusBarState };
@@ -0,0 +1,52 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode, HTMLAttributeAnchorTarget } from 'react';
3
+ import { BadgeVariant } from './badge.js';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ type ConnectionStatusBarState = "disconnected" | "syncing" | "connected" | "error";
8
+ interface ConnectionStatusBarAction {
9
+ label: ReactNode;
10
+ ariaLabel?: string;
11
+ onClick?: () => void;
12
+ href?: string;
13
+ target?: HTMLAttributeAnchorTarget;
14
+ external?: boolean;
15
+ iconOnly?: boolean;
16
+ disabled?: boolean;
17
+ }
18
+ interface ConnectionStatusBarFact {
19
+ label: ReactNode;
20
+ variant?: BadgeVariant;
21
+ }
22
+ interface ConnectionStatusBarProps {
23
+ state: ConnectionStatusBarState;
24
+ /** Integration name, or the setup prompt before a source is connected. */
25
+ name: ReactNode;
26
+ /** Current activity or health summary. */
27
+ description?: ReactNode;
28
+ /** Compact, structured values displayed as separate data badges. */
29
+ facts?: readonly ConnectionStatusBarFact[];
30
+ /** One primary action retained for backwards compatibility. */
31
+ action?: ConnectionStatusBarAction;
32
+ /** Compact action group, rendered in the supplied order. */
33
+ actions?: readonly ConnectionStatusBarAction[];
34
+ /** A real 0–100 value. Omit it for an indeterminate syncing treatment. */
35
+ progress?: number;
36
+ /** Accessible label for the progress indicator. */
37
+ progressLabel?: string;
38
+ /** Optional supporting content revealed by the trailing chevron. */
39
+ children?: ReactNode;
40
+ open?: boolean;
41
+ defaultOpen?: boolean;
42
+ onOpenChange?: (open: boolean) => void;
43
+ className?: string;
44
+ }
45
+ /**
46
+ * A single, shared status row for data-source connections. It covers setup,
47
+ * active syncing, healthy connections, and recoverable errors without making
48
+ * each product recreate the layout or semantic colour treatment.
49
+ */
50
+ declare function ConnectionStatusBar({ state, name, description, facts, action, actions, progress, progressLabel, children, open, defaultOpen, onOpenChange, className, }: ConnectionStatusBarProps): react_jsx_runtime.JSX.Element;
51
+
52
+ export { ConnectionStatusBar, type ConnectionStatusBarAction, type ConnectionStatusBarFact, type ConnectionStatusBarProps, type ConnectionStatusBarState };