@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.
- package/LICENSE +21 -0
- package/README.md +71 -2
- package/THIRD_PARTY_NOTICES.md +47 -0
- package/dist/chunk-23UMHZ4S.cjs +124 -0
- package/dist/chunk-2BHI5ZWJ.cjs +117 -0
- package/dist/chunk-2HTYXBDU.cjs +34 -0
- package/dist/chunk-2XDFTB2W.cjs +35 -0
- package/dist/chunk-35YMAIEL.js +135 -0
- package/dist/chunk-373W6VAD.cjs +82 -0
- package/dist/chunk-3BZ4CQHW.js +94 -0
- package/dist/chunk-3OWGL4Q2.js +65 -0
- package/dist/chunk-3QT5VYZ3.js +141 -0
- package/dist/chunk-4HWCNRK4.js +117 -0
- package/dist/chunk-4LXN6GLZ.cjs +44 -0
- package/dist/chunk-4NN7EA3W.js +222 -0
- package/dist/chunk-62UTAG2C.js +152 -0
- package/dist/chunk-667ZCM4X.cjs +72 -0
- package/dist/chunk-6RVPQGYS.js +181 -0
- package/dist/chunk-6T2EULKN.cjs +42 -0
- package/dist/chunk-7CRDYV3C.js +137 -0
- package/dist/chunk-BEJJN2SY.cjs +73 -0
- package/dist/chunk-BGLGRUPP.cjs +31 -0
- package/dist/chunk-CS7DM3NV.js +98 -0
- package/dist/chunk-CTYOW3V2.cjs +59 -0
- package/dist/chunk-D4ZL2OEQ.js +61 -0
- package/dist/chunk-DFB4ILN6.cjs +137 -0
- package/dist/chunk-E2TQMDO7.js +34 -0
- package/dist/chunk-EIY5LLSP.js +82 -0
- package/dist/chunk-EJP2L5QV.cjs +74 -0
- package/dist/chunk-F73ONTCK.js +73 -0
- package/dist/chunk-F7JHSZNT.js +73 -0
- package/dist/chunk-FJLINIC6.js +48 -0
- package/dist/chunk-FLPYZNWZ.js +124 -0
- package/dist/chunk-FNDBM67K.cjs +61 -0
- package/dist/chunk-G54TQV2R.cjs +222 -0
- package/dist/chunk-G6SRSWXB.js +32 -0
- package/dist/chunk-G76JANB4.js +138 -0
- package/dist/chunk-GL5CV4FF.js +59 -0
- package/dist/chunk-GMJWBGTJ.js +34 -0
- package/dist/chunk-GRZMUGT6.cjs +94 -0
- package/dist/chunk-GXHGMI3Z.cjs +48 -0
- package/dist/chunk-H2O6NMLZ.js +52 -0
- package/dist/chunk-H2UFRLLN.cjs +100 -0
- package/dist/chunk-H7TETFLB.js +39 -0
- package/dist/chunk-HQRWRRZJ.js +179 -0
- package/dist/chunk-HYSWE75T.js +67 -0
- package/dist/chunk-HYTILYE5.js +31 -0
- package/dist/chunk-I6GUOEBO.cjs +61 -0
- package/dist/chunk-IQZLUT2Y.cjs +34 -0
- package/dist/chunk-J3GQXM37.js +61 -0
- package/dist/chunk-J6NXDZR5.js +145 -0
- package/dist/chunk-JH4GAGOQ.cjs +34 -0
- package/dist/chunk-KGFL3VWY.cjs +62 -0
- package/dist/chunk-KN4RPX35.js +36 -0
- package/dist/chunk-KWLSBTB2.cjs +34 -0
- package/dist/chunk-L4DH72UF.cjs +179 -0
- package/dist/chunk-LELBCBDT.cjs +52 -0
- package/dist/chunk-LELFPLTE.js +55 -0
- package/dist/chunk-LI5EOSQG.js +171 -0
- package/dist/chunk-LIE6W3QT.js +42 -0
- package/dist/chunk-MLHNYRFX.js +411 -0
- package/dist/chunk-NBUWGRQO.js +31 -0
- package/dist/chunk-NE3ZVJ6G.cjs +67 -0
- package/dist/chunk-NQK5ZWC7.cjs +31 -0
- package/dist/chunk-NW3OWKBN.js +57 -0
- package/dist/chunk-OICAYRVH.js +34 -0
- package/dist/chunk-PIU5SSUV.js +25 -0
- package/dist/chunk-PNWNU6JW.cjs +171 -0
- package/dist/chunk-PPX2VPGI.cjs +138 -0
- package/dist/chunk-PQUSJEXL.cjs +51 -0
- package/dist/chunk-QD63LB2F.js +62 -0
- package/dist/chunk-QMA3WVB7.js +51 -0
- package/dist/chunk-QNZYQLNP.js +125 -0
- package/dist/chunk-R35FT53G.cjs +25 -0
- package/dist/chunk-R3DQS6U4.cjs +135 -0
- package/dist/chunk-R4AIM3BQ.js +72 -0
- package/dist/chunk-R5L4CM6V.cjs +202 -0
- package/dist/chunk-RRRD5EUI.js +202 -0
- package/dist/chunk-RSFEKQDR.cjs +181 -0
- package/dist/chunk-RWWOFWLP.cjs +510 -0
- package/dist/chunk-SGW4FWBX.cjs +411 -0
- package/dist/chunk-T2ZFSPE4.cjs +36 -0
- package/dist/chunk-U2NES7VR.cjs +32 -0
- package/dist/chunk-UGF2K6NR.js +510 -0
- package/dist/chunk-V4LE2HWP.js +166 -0
- package/dist/chunk-V5SPFLKW.cjs +145 -0
- package/dist/chunk-V7542UGX.js +31 -0
- package/dist/chunk-VBPPFC7X.cjs +66 -0
- package/dist/chunk-VGTINL5Q.cjs +39 -0
- package/dist/chunk-VKIGJNJR.cjs +57 -0
- package/dist/chunk-W5HPHEE7.cjs +31 -0
- package/dist/chunk-W5I4FN7G.cjs +78 -0
- package/dist/chunk-WABCLRBR.cjs +65 -0
- package/dist/chunk-WDXEJDMO.cjs +141 -0
- package/dist/chunk-WNXVGUBF.cjs +40 -0
- package/dist/chunk-WQJKUKBL.cjs +125 -0
- package/dist/chunk-XAPPU3MD.js +35 -0
- package/dist/chunk-XLIAY56V.cjs +55 -0
- package/dist/chunk-YEW65ASC.js +66 -0
- package/dist/chunk-YG7FBJRM.js +40 -0
- package/dist/chunk-YWAQRAXP.js +78 -0
- package/dist/chunk-YYFVG5A6.cjs +152 -0
- package/dist/chunk-ZAITUDYD.cjs +166 -0
- package/dist/chunk-ZRLUUZHK.js +32 -0
- package/dist/chunk-ZWZAAGQF.js +44 -0
- package/dist/hooks/use-copy-to-clipboard.cjs +7 -0
- package/dist/hooks/use-copy-to-clipboard.d.cts +12 -0
- package/dist/hooks/use-copy-to-clipboard.d.ts +12 -0
- package/dist/hooks/use-copy-to-clipboard.js +7 -0
- package/dist/hooks/use-layout-preference.cjs +51 -0
- package/dist/hooks/use-layout-preference.d.cts +10 -0
- package/dist/hooks/use-layout-preference.d.ts +10 -0
- package/dist/hooks/use-layout-preference.js +51 -0
- package/dist/hooks/use-mobile.cjs +7 -0
- package/dist/hooks/use-mobile.d.cts +3 -0
- package/dist/hooks/use-mobile.d.ts +3 -0
- package/dist/hooks/use-mobile.js +7 -0
- package/dist/lib/date-utils.cjs +15 -0
- package/dist/lib/date-utils.d.cts +16 -0
- package/dist/lib/date-utils.d.ts +16 -0
- package/dist/lib/date-utils.js +14 -0
- package/dist/lib/filter-types.cjs +161 -0
- package/dist/lib/filter-types.d.cts +60 -0
- package/dist/lib/filter-types.d.ts +60 -0
- package/dist/lib/filter-types.js +160 -0
- package/dist/lib/neutral-theme.cjs +238 -0
- package/dist/lib/neutral-theme.d.cts +92 -0
- package/dist/lib/neutral-theme.d.ts +92 -0
- package/dist/lib/neutral-theme.js +236 -0
- package/dist/lib/status-colors.cjs +18 -0
- package/dist/lib/status-colors.d.cts +76 -0
- package/dist/lib/status-colors.d.ts +76 -0
- package/dist/lib/status-colors.js +17 -0
- package/dist/lib/utils.cjs +9 -0
- package/dist/lib/utils.d.cts +9 -0
- package/dist/lib/utils.d.ts +9 -0
- package/dist/lib/utils.js +8 -0
- package/dist/primitives/activity-feed.cjs +177 -0
- package/dist/primitives/activity-feed.d.cts +78 -0
- package/dist/primitives/activity-feed.d.ts +78 -0
- package/dist/primitives/activity-feed.js +177 -0
- package/dist/primitives/activity-log.cjs +79 -0
- package/dist/primitives/activity-log.d.cts +55 -0
- package/dist/primitives/activity-log.d.ts +55 -0
- package/dist/primitives/activity-log.js +79 -0
- package/dist/primitives/agent-comment.cjs +39 -0
- package/dist/primitives/agent-comment.d.cts +33 -0
- package/dist/primitives/agent-comment.d.ts +33 -0
- package/dist/primitives/agent-comment.js +39 -0
- package/dist/primitives/alert-dialog.cjs +30 -0
- package/dist/primitives/alert-dialog.d.cts +23 -0
- package/dist/primitives/alert-dialog.d.ts +23 -0
- package/dist/primitives/alert-dialog.js +30 -0
- package/dist/primitives/alert.cjs +12 -0
- package/dist/primitives/alert.d.cts +26 -0
- package/dist/primitives/alert.d.ts +26 -0
- package/dist/primitives/alert.js +12 -0
- package/dist/primitives/anchor-target.cjs +13 -0
- package/dist/primitives/anchor-target.d.cts +7 -0
- package/dist/primitives/anchor-target.d.ts +7 -0
- package/dist/primitives/anchor-target.js +13 -0
- package/dist/primitives/anchor.cjs +35 -0
- package/dist/primitives/anchor.d.cts +16 -0
- package/dist/primitives/anchor.d.ts +16 -0
- package/dist/primitives/anchor.js +35 -0
- package/dist/primitives/archive-confirmation-dialog.cjs +50 -0
- package/dist/primitives/archive-confirmation-dialog.d.cts +12 -0
- package/dist/primitives/archive-confirmation-dialog.d.ts +12 -0
- package/dist/primitives/archive-confirmation-dialog.js +50 -0
- package/dist/primitives/aspect-ratio.cjs +8 -0
- package/dist/primitives/aspect-ratio.d.cts +6 -0
- package/dist/primitives/aspect-ratio.d.ts +6 -0
- package/dist/primitives/aspect-ratio.js +8 -0
- package/dist/primitives/attachment.cjs +203 -0
- package/dist/primitives/attachment.d.cts +28 -0
- package/dist/primitives/attachment.d.ts +28 -0
- package/dist/primitives/attachment.js +203 -0
- package/dist/primitives/avatar.cjs +12 -0
- package/dist/primitives/avatar.d.cts +22 -0
- package/dist/primitives/avatar.d.ts +22 -0
- package/dist/primitives/avatar.js +12 -0
- package/dist/primitives/badge.cjs +10 -0
- package/dist/primitives/badge.d.cts +27 -0
- package/dist/primitives/badge.d.ts +27 -0
- package/dist/primitives/badge.js +10 -0
- package/dist/primitives/board-view-internals.cjs +16 -0
- package/dist/primitives/board-view-internals.d.cts +33 -0
- package/dist/primitives/board-view-internals.d.ts +33 -0
- package/dist/primitives/board-view-internals.js +16 -0
- package/dist/primitives/board-view.cjs +108 -0
- package/dist/primitives/board-view.d.cts +39 -0
- package/dist/primitives/board-view.d.ts +39 -0
- package/dist/primitives/board-view.js +108 -0
- package/dist/primitives/browser-preview.cjs +62 -0
- package/dist/primitives/browser-preview.d.cts +41 -0
- package/dist/primitives/browser-preview.d.ts +41 -0
- package/dist/primitives/browser-preview.js +62 -0
- package/dist/primitives/button.cjs +10 -0
- package/dist/primitives/button.d.cts +32 -0
- package/dist/primitives/button.d.ts +32 -0
- package/dist/primitives/button.js +10 -0
- package/dist/primitives/calendar.cjs +11 -0
- package/dist/primitives/calendar.d.cts +13 -0
- package/dist/primitives/calendar.d.ts +13 -0
- package/dist/primitives/calendar.js +11 -0
- package/dist/primitives/call-card.cjs +195 -0
- package/dist/primitives/call-card.d.cts +86 -0
- package/dist/primitives/call-card.d.ts +86 -0
- package/dist/primitives/call-card.js +195 -0
- package/dist/primitives/callout.cjs +8 -0
- package/dist/primitives/callout.d.cts +41 -0
- package/dist/primitives/callout.d.ts +41 -0
- package/dist/primitives/callout.js +8 -0
- package/dist/primitives/card.cjs +18 -0
- package/dist/primitives/card.d.cts +55 -0
- package/dist/primitives/card.d.ts +55 -0
- package/dist/primitives/card.js +18 -0
- package/dist/primitives/checkbox.cjs +8 -0
- package/dist/primitives/checkbox.d.cts +20 -0
- package/dist/primitives/checkbox.d.ts +20 -0
- package/dist/primitives/checkbox.js +8 -0
- package/dist/primitives/chip-tabs.cjs +10 -0
- package/dist/primitives/chip-tabs.d.cts +39 -0
- package/dist/primitives/chip-tabs.d.ts +39 -0
- package/dist/primitives/chip-tabs.js +10 -0
- package/dist/primitives/code-block.cjs +56 -0
- package/dist/primitives/code-block.d.cts +35 -0
- package/dist/primitives/code-block.d.ts +35 -0
- package/dist/primitives/code-block.js +56 -0
- package/dist/primitives/collapsible-section.cjs +69 -0
- package/dist/primitives/collapsible-section.d.cts +24 -0
- package/dist/primitives/collapsible-section.d.ts +24 -0
- package/dist/primitives/collapsible-section.js +69 -0
- package/dist/primitives/collapsible.cjs +12 -0
- package/dist/primitives/collapsible.d.cts +14 -0
- package/dist/primitives/collapsible.d.ts +14 -0
- package/dist/primitives/collapsible.js +12 -0
- package/dist/primitives/compact-app-shell.cjs +40 -0
- package/dist/primitives/compact-app-shell.d.cts +12 -0
- package/dist/primitives/compact-app-shell.d.ts +12 -0
- package/dist/primitives/compact-app-shell.js +40 -0
- package/dist/primitives/compact-log.cjs +39 -0
- package/dist/primitives/compact-log.d.cts +19 -0
- package/dist/primitives/compact-log.d.ts +19 -0
- package/dist/primitives/compact-log.js +39 -0
- package/dist/primitives/confirm-bar.cjs +101 -0
- package/dist/primitives/confirm-bar.d.cts +60 -0
- package/dist/primitives/confirm-bar.d.ts +60 -0
- package/dist/primitives/confirm-bar.js +101 -0
- package/dist/primitives/connection-status-bar.cjs +243 -0
- package/dist/primitives/connection-status-bar.d.cts +52 -0
- package/dist/primitives/connection-status-bar.d.ts +52 -0
- package/dist/primitives/connection-status-bar.js +243 -0
- package/dist/primitives/connection.cjs +206 -0
- package/dist/primitives/connection.d.cts +126 -0
- package/dist/primitives/connection.d.ts +126 -0
- package/dist/primitives/connection.js +206 -0
- package/dist/primitives/contact-header.cjs +60 -0
- package/dist/primitives/contact-header.d.cts +54 -0
- package/dist/primitives/contact-header.d.ts +54 -0
- package/dist/primitives/contact-header.js +60 -0
- package/dist/primitives/copy-button.cjs +10 -0
- package/dist/primitives/copy-button.d.cts +21 -0
- package/dist/primitives/copy-button.d.ts +21 -0
- package/dist/primitives/copy-button.js +10 -0
- package/dist/primitives/count-badge.cjs +9 -0
- package/dist/primitives/count-badge.d.cts +21 -0
- package/dist/primitives/count-badge.d.ts +21 -0
- package/dist/primitives/count-badge.js +9 -0
- package/dist/primitives/decision-actions.cjs +66 -0
- package/dist/primitives/decision-actions.d.cts +31 -0
- package/dist/primitives/decision-actions.d.ts +31 -0
- package/dist/primitives/decision-actions.js +66 -0
- package/dist/primitives/definition-list.cjs +65 -0
- package/dist/primitives/definition-list.d.cts +23 -0
- package/dist/primitives/definition-list.d.ts +23 -0
- package/dist/primitives/definition-list.js +65 -0
- package/dist/primitives/delete-confirmation-dialog.cjs +11 -0
- package/dist/primitives/delete-confirmation-dialog.d.cts +23 -0
- package/dist/primitives/delete-confirmation-dialog.d.ts +23 -0
- package/dist/primitives/delete-confirmation-dialog.js +11 -0
- package/dist/primitives/dialog.cjs +26 -0
- package/dist/primitives/dialog.d.cts +44 -0
- package/dist/primitives/dialog.d.ts +44 -0
- package/dist/primitives/dialog.js +26 -0
- package/dist/primitives/drawer.cjs +26 -0
- package/dist/primitives/drawer.d.cts +36 -0
- package/dist/primitives/drawer.d.ts +36 -0
- package/dist/primitives/drawer.js +26 -0
- package/dist/primitives/dropdown-menu.cjs +36 -0
- package/dist/primitives/dropdown-menu.d.cts +34 -0
- package/dist/primitives/dropdown-menu.d.ts +34 -0
- package/dist/primitives/dropdown-menu.js +36 -0
- package/dist/primitives/editable-list.cjs +108 -0
- package/dist/primitives/editable-list.d.cts +23 -0
- package/dist/primitives/editable-list.d.ts +23 -0
- package/dist/primitives/editable-list.js +108 -0
- package/dist/primitives/empty-state.cjs +9 -0
- package/dist/primitives/empty-state.d.cts +54 -0
- package/dist/primitives/empty-state.d.ts +54 -0
- package/dist/primitives/empty-state.js +9 -0
- package/dist/primitives/eyebrow.cjs +8 -0
- package/dist/primitives/eyebrow.d.cts +21 -0
- package/dist/primitives/eyebrow.d.ts +21 -0
- package/dist/primitives/eyebrow.js +8 -0
- package/dist/primitives/feature-empty-state.cjs +133 -0
- package/dist/primitives/feature-empty-state.d.cts +42 -0
- package/dist/primitives/feature-empty-state.d.ts +42 -0
- package/dist/primitives/feature-empty-state.js +133 -0
- package/dist/primitives/field.cjs +260 -0
- package/dist/primitives/field.d.cts +43 -0
- package/dist/primitives/field.d.ts +43 -0
- package/dist/primitives/field.js +260 -0
- package/dist/primitives/file-dropzone.cjs +118 -0
- package/dist/primitives/file-dropzone.d.cts +36 -0
- package/dist/primitives/file-dropzone.d.ts +36 -0
- package/dist/primitives/file-dropzone.js +118 -0
- package/dist/primitives/filter-bar.cjs +20 -0
- package/dist/primitives/filter-bar.d.cts +25 -0
- package/dist/primitives/filter-bar.d.ts +25 -0
- package/dist/primitives/filter-bar.js +20 -0
- package/dist/primitives/flex-item.cjs +34 -0
- package/dist/primitives/flex-item.d.cts +18 -0
- package/dist/primitives/flex-item.d.ts +18 -0
- package/dist/primitives/flex-item.js +34 -0
- package/dist/primitives/grid.cjs +47 -0
- package/dist/primitives/grid.d.cts +18 -0
- package/dist/primitives/grid.d.ts +18 -0
- package/dist/primitives/grid.js +47 -0
- package/dist/primitives/heading.cjs +8 -0
- package/dist/primitives/heading.d.cts +28 -0
- package/dist/primitives/heading.d.ts +28 -0
- package/dist/primitives/heading.js +8 -0
- package/dist/primitives/hidden-control.cjs +13 -0
- package/dist/primitives/hidden-control.d.cts +7 -0
- package/dist/primitives/hidden-control.d.ts +7 -0
- package/dist/primitives/hidden-control.js +13 -0
- package/dist/primitives/icon.cjs +8 -0
- package/dist/primitives/icon.d.cts +22 -0
- package/dist/primitives/icon.d.ts +22 -0
- package/dist/primitives/icon.js +8 -0
- package/dist/primitives/image.cjs +52 -0
- package/dist/primitives/image.d.cts +21 -0
- package/dist/primitives/image.d.ts +21 -0
- package/dist/primitives/image.js +52 -0
- package/dist/primitives/inline-code.cjs +34 -0
- package/dist/primitives/inline-code.d.cts +15 -0
- package/dist/primitives/inline-code.d.ts +15 -0
- package/dist/primitives/inline-code.js +34 -0
- package/dist/primitives/input.cjs +8 -0
- package/dist/primitives/input.d.cts +23 -0
- package/dist/primitives/input.d.ts +23 -0
- package/dist/primitives/input.js +8 -0
- package/dist/primitives/inset.cjs +20 -0
- package/dist/primitives/inset.d.cts +12 -0
- package/dist/primitives/inset.d.ts +12 -0
- package/dist/primitives/inset.js +20 -0
- package/dist/primitives/interactive-card.cjs +11 -0
- package/dist/primitives/interactive-card.d.cts +68 -0
- package/dist/primitives/interactive-card.d.ts +68 -0
- package/dist/primitives/interactive-card.js +11 -0
- package/dist/primitives/label.cjs +8 -0
- package/dist/primitives/label.d.cts +12 -0
- package/dist/primitives/label.d.ts +12 -0
- package/dist/primitives/label.js +8 -0
- package/dist/primitives/line-break.cjs +10 -0
- package/dist/primitives/line-break.d.cts +6 -0
- package/dist/primitives/line-break.d.ts +6 -0
- package/dist/primitives/line-break.js +10 -0
- package/dist/primitives/list.cjs +68 -0
- package/dist/primitives/list.d.cts +35 -0
- package/dist/primitives/list.d.ts +35 -0
- package/dist/primitives/list.js +68 -0
- package/dist/primitives/load-more-button.cjs +10 -0
- package/dist/primitives/load-more-button.d.cts +42 -0
- package/dist/primitives/load-more-button.d.ts +42 -0
- package/dist/primitives/load-more-button.js +10 -0
- package/dist/primitives/loading.cjs +10 -0
- package/dist/primitives/loading.d.cts +5 -0
- package/dist/primitives/loading.d.ts +5 -0
- package/dist/primitives/loading.js +10 -0
- package/dist/primitives/message.cjs +95 -0
- package/dist/primitives/message.d.cts +13 -0
- package/dist/primitives/message.d.ts +13 -0
- package/dist/primitives/message.js +95 -0
- package/dist/primitives/native-select.cjs +33 -0
- package/dist/primitives/native-select.d.cts +15 -0
- package/dist/primitives/native-select.d.ts +15 -0
- package/dist/primitives/native-select.js +33 -0
- package/dist/primitives/page-header-actions.cjs +11 -0
- package/dist/primitives/page-header-actions.d.cts +49 -0
- package/dist/primitives/page-header-actions.d.ts +49 -0
- package/dist/primitives/page-header-actions.js +11 -0
- package/dist/primitives/page-header.cjs +72 -0
- package/dist/primitives/page-header.d.cts +40 -0
- package/dist/primitives/page-header.d.ts +40 -0
- package/dist/primitives/page-header.js +72 -0
- package/dist/primitives/page-shell.cjs +46 -0
- package/dist/primitives/page-shell.d.cts +44 -0
- package/dist/primitives/page-shell.d.ts +44 -0
- package/dist/primitives/page-shell.js +46 -0
- package/dist/primitives/page-tabs.cjs +63 -0
- package/dist/primitives/page-tabs.d.cts +28 -0
- package/dist/primitives/page-tabs.d.ts +28 -0
- package/dist/primitives/page-tabs.js +63 -0
- package/dist/primitives/panel-section.cjs +52 -0
- package/dist/primitives/panel-section.d.cts +20 -0
- package/dist/primitives/panel-section.d.ts +20 -0
- package/dist/primitives/panel-section.js +52 -0
- package/dist/primitives/person-avatar.cjs +57 -0
- package/dist/primitives/person-avatar.d.cts +33 -0
- package/dist/primitives/person-avatar.d.ts +33 -0
- package/dist/primitives/person-avatar.js +57 -0
- package/dist/primitives/phone.cjs +69 -0
- package/dist/primitives/phone.d.cts +50 -0
- package/dist/primitives/phone.d.ts +50 -0
- package/dist/primitives/phone.js +69 -0
- package/dist/primitives/popover.cjs +12 -0
- package/dist/primitives/popover.d.cts +14 -0
- package/dist/primitives/popover.d.ts +14 -0
- package/dist/primitives/popover.js +12 -0
- package/dist/primitives/progress.cjs +31 -0
- package/dist/primitives/progress.d.cts +6 -0
- package/dist/primitives/progress.d.ts +6 -0
- package/dist/primitives/progress.js +31 -0
- package/dist/primitives/quick-filters.cjs +10 -0
- package/dist/primitives/quick-filters.d.cts +36 -0
- package/dist/primitives/quick-filters.d.ts +36 -0
- package/dist/primitives/quick-filters.js +10 -0
- package/dist/primitives/radio-group.cjs +46 -0
- package/dist/primitives/radio-group.d.cts +7 -0
- package/dist/primitives/radio-group.d.ts +7 -0
- package/dist/primitives/radio-group.js +46 -0
- package/dist/primitives/resource-card.cjs +104 -0
- package/dist/primitives/resource-card.d.cts +93 -0
- package/dist/primitives/resource-card.d.ts +93 -0
- package/dist/primitives/resource-card.js +104 -0
- package/dist/primitives/resource-list.cjs +28 -0
- package/dist/primitives/resource-list.d.cts +103 -0
- package/dist/primitives/resource-list.d.ts +103 -0
- package/dist/primitives/resource-list.js +28 -0
- package/dist/primitives/responsive-dialog.cjs +142 -0
- package/dist/primitives/responsive-dialog.d.cts +56 -0
- package/dist/primitives/responsive-dialog.d.ts +56 -0
- package/dist/primitives/responsive-dialog.js +142 -0
- package/dist/primitives/responsive-view.cjs +29 -0
- package/dist/primitives/responsive-view.d.cts +10 -0
- package/dist/primitives/responsive-view.d.ts +10 -0
- package/dist/primitives/responsive-view.js +29 -0
- package/dist/primitives/rich-text.cjs +43 -0
- package/dist/primitives/rich-text.d.cts +14 -0
- package/dist/primitives/rich-text.d.ts +14 -0
- package/dist/primitives/rich-text.js +43 -0
- package/dist/primitives/scroll-area.cjs +10 -0
- package/dist/primitives/scroll-area.d.cts +13 -0
- package/dist/primitives/scroll-area.d.ts +13 -0
- package/dist/primitives/scroll-area.js +10 -0
- package/dist/primitives/section-header.cjs +51 -0
- package/dist/primitives/section-header.d.cts +22 -0
- package/dist/primitives/section-header.d.ts +22 -0
- package/dist/primitives/section-header.js +51 -0
- package/dist/primitives/section.cjs +39 -0
- package/dist/primitives/section.d.cts +22 -0
- package/dist/primitives/section.d.ts +22 -0
- package/dist/primitives/section.js +39 -0
- package/dist/primitives/select.cjs +26 -0
- package/dist/primitives/select.d.cts +25 -0
- package/dist/primitives/select.d.ts +25 -0
- package/dist/primitives/select.js +26 -0
- package/dist/primitives/selection-overlay.cjs +24 -0
- package/dist/primitives/selection-overlay.d.cts +7 -0
- package/dist/primitives/selection-overlay.d.ts +7 -0
- package/dist/primitives/selection-overlay.js +24 -0
- package/dist/primitives/sentiment-dot.cjs +15 -0
- package/dist/primitives/sentiment-dot.d.cts +42 -0
- package/dist/primitives/sentiment-dot.d.ts +42 -0
- package/dist/primitives/sentiment-dot.js +15 -0
- package/dist/primitives/separator.cjs +8 -0
- package/dist/primitives/separator.d.cts +9 -0
- package/dist/primitives/separator.d.ts +9 -0
- package/dist/primitives/separator.js +8 -0
- package/dist/primitives/sheet.cjs +27 -0
- package/dist/primitives/sheet.d.cts +48 -0
- package/dist/primitives/sheet.d.ts +48 -0
- package/dist/primitives/sheet.js +27 -0
- package/dist/primitives/skeleton.cjs +8 -0
- package/dist/primitives/skeleton.d.cts +15 -0
- package/dist/primitives/skeleton.d.ts +15 -0
- package/dist/primitives/skeleton.js +8 -0
- package/dist/primitives/spacer.cjs +20 -0
- package/dist/primitives/spacer.d.cts +11 -0
- package/dist/primitives/spacer.d.ts +11 -0
- package/dist/primitives/spacer.js +20 -0
- package/dist/primitives/split-action-button.cjs +95 -0
- package/dist/primitives/split-action-button.d.cts +41 -0
- package/dist/primitives/split-action-button.d.ts +41 -0
- package/dist/primitives/split-action-button.js +95 -0
- package/dist/primitives/stack.cjs +8 -0
- package/dist/primitives/stack.d.cts +63 -0
- package/dist/primitives/stack.d.ts +63 -0
- package/dist/primitives/stack.js +8 -0
- package/dist/primitives/status-badge.cjs +9 -0
- package/dist/primitives/status-badge.d.cts +20 -0
- package/dist/primitives/status-badge.d.ts +20 -0
- package/dist/primitives/status-badge.js +9 -0
- package/dist/primitives/status-icon-tile.cjs +32 -0
- package/dist/primitives/status-icon-tile.d.cts +12 -0
- package/dist/primitives/status-icon-tile.d.ts +12 -0
- package/dist/primitives/status-icon-tile.js +32 -0
- package/dist/primitives/status-icon.cjs +8 -0
- package/dist/primitives/status-icon.d.cts +18 -0
- package/dist/primitives/status-icon.d.ts +18 -0
- package/dist/primitives/status-icon.js +8 -0
- package/dist/primitives/status-panel.cjs +83 -0
- package/dist/primitives/status-panel.d.cts +25 -0
- package/dist/primitives/status-panel.d.ts +25 -0
- package/dist/primitives/status-panel.js +83 -0
- package/dist/primitives/switch-field.cjs +44 -0
- package/dist/primitives/switch-field.d.cts +17 -0
- package/dist/primitives/switch-field.d.ts +17 -0
- package/dist/primitives/switch-field.js +44 -0
- package/dist/primitives/switch.cjs +8 -0
- package/dist/primitives/switch.d.cts +6 -0
- package/dist/primitives/switch.d.ts +6 -0
- package/dist/primitives/switch.js +8 -0
- package/dist/primitives/tabs.cjs +14 -0
- package/dist/primitives/tabs.d.cts +36 -0
- package/dist/primitives/tabs.d.ts +36 -0
- package/dist/primitives/tabs.js +14 -0
- package/dist/primitives/tag-input.cjs +90 -0
- package/dist/primitives/tag-input.d.cts +13 -0
- package/dist/primitives/tag-input.d.ts +13 -0
- package/dist/primitives/tag-input.js +90 -0
- package/dist/primitives/text.cjs +8 -0
- package/dist/primitives/text.d.cts +51 -0
- package/dist/primitives/text.d.ts +51 -0
- package/dist/primitives/text.js +8 -0
- package/dist/primitives/textarea.cjs +37 -0
- package/dist/primitives/textarea.d.cts +12 -0
- package/dist/primitives/textarea.d.ts +12 -0
- package/dist/primitives/textarea.js +37 -0
- package/dist/primitives/thinking-screen.cjs +87 -0
- package/dist/primitives/thinking-screen.d.cts +46 -0
- package/dist/primitives/thinking-screen.d.ts +46 -0
- package/dist/primitives/thinking-screen.js +87 -0
- package/dist/primitives/timeline.cjs +13 -0
- package/dist/primitives/timeline.d.cts +54 -0
- package/dist/primitives/timeline.d.ts +54 -0
- package/dist/primitives/timeline.js +13 -0
- package/dist/primitives/toggle-group.cjs +51 -0
- package/dist/primitives/toggle-group.d.cts +18 -0
- package/dist/primitives/toggle-group.d.ts +18 -0
- package/dist/primitives/toggle-group.js +51 -0
- package/dist/primitives/toggle.cjs +10 -0
- package/dist/primitives/toggle.d.cts +15 -0
- package/dist/primitives/toggle.d.ts +15 -0
- package/dist/primitives/toggle.js +10 -0
- package/dist/primitives/tooltip.cjs +14 -0
- package/dist/primitives/tooltip.d.cts +9 -0
- package/dist/primitives/tooltip.d.ts +9 -0
- package/dist/primitives/tooltip.js +14 -0
- package/dist/primitives/voice-dictation-button.cjs +244 -0
- package/dist/primitives/voice-dictation-button.d.cts +41 -0
- package/dist/primitives/voice-dictation-button.d.ts +41 -0
- package/dist/primitives/voice-dictation-button.js +244 -0
- package/package.json +1243 -3
- package/src/styles/components/attachment.css +61 -0
- package/src/styles/components/message.css +29 -0
- package/src/styles/components.css +3 -0
- package/src/styles/globals.css +10 -0
- package/src/styles/keyframes.css +26 -0
- package/src/styles/palette.gen.css +150 -0
- package/src/styles/shadcn.css +631 -0
- package/src/styles/source.css +4 -0
- package/src/styles/tokens/base.css +36 -0
- package/src/styles/tokens/container.css +9 -0
- package/src/styles/tokens/forms.css +61 -0
- package/src/styles/tokens/theme.css +93 -0
- package/src/styles/tokens.css +17 -0
- 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 };
|