@mycadet/web 0.0.1 → 0.12.6-dev.202610081023.3a27b77
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/README.md +222 -3
- package/dist/THIRD-PARTY-LICENSES.md +486 -0
- package/dist/activation-mascots.svg +115 -0
- package/dist/activation-pill-mascots.svg +74 -0
- package/dist/assets/DMMono-Medium-BM4x6WFW.ttf +0 -0
- package/dist/assets/DMMono-Regular-DbtWzYYn.ttf +0 -0
- package/dist/assets/DMSans-Regular-C1Em6CGS.ttf +0 -0
- package/dist/assets/InstrumentSerif-Regular-DXer19By.ttf +0 -0
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/assets/a2a-invite-Cb5L7aFX.js +1 -0
- package/dist/assets/about-page-CB5pBqUQ.js +1 -0
- package/dist/assets/account-9ifOctCs.js +1 -0
- package/dist/assets/account-C59_ZVEY.js +1 -0
- package/dist/assets/account-CnqVfERR.js +1 -0
- package/dist/assets/account-DVdolNcP.js +1 -0
- package/dist/assets/account-page-BzMhFe10.js +1 -0
- package/dist/assets/account-shell-FXKRg1fk.js +1 -0
- package/dist/assets/acp-run-detail-panel-Ddfvk9dJ.js +3 -0
- package/dist/assets/activation-C91KPzrh.js +1 -0
- package/dist/assets/activation-Dd7eAIHs.js +1 -0
- package/dist/assets/activation-ReimSfhn.js +1 -0
- package/dist/assets/activation-list-route-ChRtdypT.js +1 -0
- package/dist/assets/activation-tasks-CcT0Rqfx.js +1 -0
- package/dist/assets/activation-tasks-CjUCWfbQ.js +1 -0
- package/dist/assets/activation-tasks-rViOqW7C.js +1 -0
- package/dist/assets/activation-tasks-wtMwJ0EV.js +1 -0
- package/dist/assets/activation-yoBQ36AY.js +1 -0
- package/dist/assets/activity-redirect-page-3lAJfb78.js +1 -0
- package/dist/assets/activity-steps-panel-DMe6vxVH.js +1 -0
- package/dist/assets/add-credits-modal-7-AFM9IQ.js +1 -0
- package/dist/assets/add-credits-modal-_SwGWD1A.js +1 -0
- package/dist/assets/ai-page-DpzMA4Hh.js +1 -0
- package/dist/assets/all-chats-page-route-0m3TBFf6.js +1 -0
- package/dist/assets/android-billing-handoff-Dv_rAEHd.js +1 -0
- package/dist/assets/animated-stat-square-DP1YC8Yc.js +1 -0
- package/dist/assets/api-key-screen-DtEu2ScO.js +1 -0
- package/dist/assets/app-BXG8yk9C.css +1 -0
- package/dist/assets/app-CwqzrbFf.js +401 -0
- package/dist/assets/app-info-S-9J8w_J.js +1 -0
- package/dist/assets/app-types-DLSc4FO-.js +1 -0
- package/dist/assets/archive-redirect-page-BbbT1uRr.js +1 -0
- package/dist/assets/assistant-handle-modal-BhhjSLFN.js +1 -0
- package/dist/assets/assistant-inbox-CAvCHzi9.js +1 -0
- package/dist/assets/assistant-inbox-CQdSXLLi.js +1 -0
- package/dist/assets/assistant-inbox-DslyrhIn.js +1 -0
- package/dist/assets/assistant-inbox-page-route-D1pFmm0f.js +8 -0
- package/dist/assets/assistant-inbox-qWeVmA1L.js +1 -0
- package/dist/assets/assistant-status-panel-C5ruONrB.js +1 -0
- package/dist/assets/auth-store-BvEKpM_3.js +1 -0
- package/dist/assets/auth-welcome-screen-D46CdsFl.js +1 -0
- package/dist/assets/avatar-bundled-components-DR8fQnrQ.js +1 -0
- package/dist/assets/avatar-random-CcqNsIy7.js +2 -0
- package/dist/assets/await-org-header-settled-CD30PJhg.js +1 -0
- package/dist/assets/background-task-detail-panel-C2GGDXK-.js +1 -0
- package/dist/assets/billing-page-DY1DoUsN.js +3 -0
- package/dist/assets/billing-redirect-page-BB_ywQeI.js +1 -0
- package/dist/assets/bookmarks-page-Dbrc_CDX.js +1 -0
- package/dist/assets/build.umd-B0ATW5UM.js +7 -0
- package/dist/assets/bundle-confirm-page-CPFiWVE3.js +1 -0
- package/dist/assets/channel-transcript-panel-DBjlA1Gm.js +1 -0
- package/dist/assets/channels-BTbV4MWS.js +9 -0
- package/dist/assets/channels-Bp2JIVff.js +9 -0
- package/dist/assets/channels-D1SpbqXl.js +9 -0
- package/dist/assets/channels-D6K1KGr-.js +9 -0
- package/dist/assets/channels-page-route-_CUWKKSI.js +1 -0
- package/dist/assets/chat-6mEQwXrT.js +5 -0
- package/dist/assets/chat-Bi8jqwGX.js +5 -0
- package/dist/assets/chat-D2mr40mK.js +5 -0
- package/dist/assets/chat-DI0DKw32.js +5 -0
- package/dist/assets/chat-info-panel-CVK22vfL.js +1 -0
- package/dist/assets/checkout-continuation-CVaALTqi.js +1 -0
- package/dist/assets/checkout-page-DucRi2nu.js +1 -0
- package/dist/assets/checkout-return-target-D-rQ8UA8.js +1 -0
- package/dist/assets/command-palette-B1DNAtkf.js +1 -0
- package/dist/assets/command-palette-CkB0y8U4.js +1 -0
- package/dist/assets/command-palette-window-page-CFJ7MtFn.js +1 -0
- package/dist/assets/common-Bl28_zx0.js +1 -0
- package/dist/assets/common-CjxF28nX.js +1 -0
- package/dist/assets/common-DFAGeqca.js +1 -0
- package/dist/assets/common-ENHobhEF.js +1 -0
- package/dist/assets/community-page-BvU7QY1-.js +1 -0
- package/dist/assets/companion-accent-C6L1Km-E.js +1 -0
- package/dist/assets/companion-dock-zones-page-BE0Wj1Ft.js +1 -0
- package/dist/assets/companion-layout-Cw05HJM6.js +1 -0
- package/dist/assets/companion-popover-CIF_tZn4.js +1 -0
- package/dist/assets/companion-popover-page-6c8L5Piz.js +1 -0
- package/dist/assets/companion-surface-CxdvLyJt.js +1 -0
- package/dist/assets/companion-surface-page-D7K_cXPo.js +1 -0
- package/dist/assets/companion-tour-entry-DhcdrDXL.js +1 -0
- package/dist/assets/companion-watch-frame-page-CIv820YV.js +1 -0
- package/dist/assets/connect-page-CVKqKk8P.js +1 -0
- package/dist/assets/consent-controls-Cez9oaPe.js +1 -0
- package/dist/assets/contacts-BTmOfEVL.js +1 -0
- package/dist/assets/contacts-Cxz-DyYF.js +1 -0
- package/dist/assets/contacts-DgC-8PHB.js +1 -0
- package/dist/assets/contacts-gateway-DI5Kn8D9.js +1 -0
- package/dist/assets/contacts-mijLgegD.js +1 -0
- package/dist/assets/contacts-page-route-dHY7bXHb.js +1 -0
- package/dist/assets/copy-button-CBa1Xsz8.js +1 -0
- package/dist/assets/credential-entry-page-CFbtAWfA.js +1 -0
- package/dist/assets/credential-requests-CmFaXPwz.js +1 -0
- package/dist/assets/credential-requests-D3J3i5oa.js +1 -0
- package/dist/assets/credential-requests-gl4lfjL4.js +1 -0
- package/dist/assets/credential-requests-h908NRpv.js +1 -0
- package/dist/assets/credentials-page-DcsJCfr1.js +1 -0
- package/dist/assets/csv-preview-8v1DfyrT.js +1 -0
- package/dist/assets/danger-zone-redirect-page-DY-Jq2Zl.js +1 -0
- package/dist/assets/debug-page-DujNjASA.js +4 -0
- package/dist/assets/debug-page-TdnZ7DQy.css +1 -0
- package/dist/assets/definitions-BUCExH-9.js +1 -0
- package/dist/assets/definitions-DpZNNWA7.js +1 -0
- package/dist/assets/deploy-dialogs-CXWBu3Bb.js +1 -0
- package/dist/assets/deploy-dialogs-Ci-YAins.js +1 -0
- package/dist/assets/desktop-preview-content-DQkv8ZUT.js +2 -0
- package/dist/assets/desktop-status-Dy_rNzx5.js +1 -0
- package/dist/assets/desktop-viewer-BjgXYPX-.js +5 -0
- package/dist/assets/detail-card-lWS_EV_0.js +1 -0
- package/dist/assets/detail-panel-stop-button-DXbc7SNQ.js +1 -0
- package/dist/assets/detail-primitives-COKNzP54.js +1 -0
- package/dist/assets/developer-page-DuzJjwyk.js +1 -0
- package/dist/assets/devices-redirect-page-BLu1rQ8I.js +1 -0
- package/dist/assets/dictation-overlay-page-DmGoKS_E.js +1 -0
- package/dist/assets/diff-rows-DD2i4Iv8.js +1 -0
- package/dist/assets/document-load-BflV81J3.js +1 -0
- package/dist/assets/document-load-WGIPqo3G.js +1 -0
- package/dist/assets/document-viewer-page-CQ-O4nnM.js +1 -0
- package/dist/assets/ellipsis-vertical-DXwTXFid.js +1 -0
- package/dist/assets/emails-page-BszxVPSf.js +1 -0
- package/dist/assets/emoji-catalog-data-jMbpElmp.js +1 -0
- package/dist/assets/esm-3p9EjCxv.js +1 -0
- package/dist/assets/esm-81hjkY91.js +2 -0
- package/dist/assets/esm-B7eDjVec.js +1 -0
- package/dist/assets/esm-Bg5pAsee.js +2 -0
- package/dist/assets/esm-Bo2YRP0H.js +2 -0
- package/dist/assets/esm-Bogq5bK5.js +1 -0
- package/dist/assets/esm-OhpYdKED.js +1 -0
- package/dist/assets/esm-Qn-Ugt7M.js +2 -0
- package/dist/assets/esm-p-XTJuu2.js +2 -0
- package/dist/assets/esm-zzDLmzCb.js +2 -0
- package/dist/assets/file-diff-view-BqdKCDqS.js +3 -0
- package/dist/assets/file-view-mode-Djm5ZazK.js +3 -0
- package/dist/assets/format-countdown-jXi9FZ2J.js +1 -0
- package/dist/assets/format-file-size-zh148z6P.js +1 -0
- package/dist/assets/general-page-BPWtCGvi.js +2 -0
- package/dist/assets/hatching-screen-Cpp5Tg1t.js +1 -0
- package/dist/assets/home-BI-fzzA0.js +1 -0
- package/dist/assets/home-BZGFmZ0D.js +1 -0
- package/dist/assets/home-CM9kRnjx.js +1 -0
- package/dist/assets/home-D4Knhe9B.js +1 -0
- package/dist/assets/hosting-screen-Sgf2HwYg.js +1 -0
- package/dist/assets/icons-Dwi7aA1Y.js +1 -0
- package/dist/assets/identity-page-route-D4uwxAQ0.js +7 -0
- package/dist/assets/inspect-page-CkkqXMKP.js +8 -0
- package/dist/assets/integrations-page-CuRXFl5Y.js +1 -0
- package/dist/assets/intelligence-BzXuH7C3.js +5 -0
- package/dist/assets/intelligence-CRQIvpoS.js +5 -0
- package/dist/assets/intelligence-D6JLt55y.js +5 -0
- package/dist/assets/intelligence-EUWmzIF9.js +5 -0
- package/dist/assets/intelligence-layout-VRnCbIwb.js +1 -0
- package/dist/assets/intelligence-layout-slots-store-0pTDdylK.js +1 -0
- package/dist/assets/is-record-VoZP3nYK.js +1 -0
- package/dist/assets/jszip.min-4SBnqRxq.js +2 -0
- package/dist/assets/katex-CfUWwwYf.css +1 -0
- package/dist/assets/keyboard-shortcuts-redirect-page-BQlTLdsA.js +1 -0
- package/dist/assets/latest-assistant-text-2elAy0dG.js +24 -0
- package/dist/assets/library-B5UBdwOv.js +1 -0
- package/dist/assets/library-CGTnSkcA.js +1 -0
- package/dist/assets/library-DEPrqINm.js +1 -0
- package/dist/assets/library-DNEpT1eD.js +1 -0
- package/dist/assets/library-detail-page-B-EVkAjl.js +1 -0
- package/dist/assets/library-page-B25m2pmq.js +1 -0
- package/dist/assets/link-click-BJkFvMTf.js +1 -0
- package/dist/assets/list-detail-navigation-Bc3JpBO4.js +1 -0
- package/dist/assets/local-mode-Bdah2ONM.js +1 -0
- package/dist/assets/login-page-xnhw1RiU.js +1 -0
- package/dist/assets/logout-page-BdpvdBtF.js +1 -0
- package/dist/assets/logs-BKfLoluH.js +1 -0
- package/dist/assets/logs-BufZKV9C.js +1 -0
- package/dist/assets/logs-CAOgfUOH.js +1 -0
- package/dist/assets/logs-CW8mXm9O.js +1 -0
- package/dist/assets/logs-layout-uz-x1e70.js +1 -0
- package/dist/assets/machine-sizes-DZLd-6DF.js +1 -0
- package/dist/assets/managed-export-D_4_p4a3.js +1 -0
- package/dist/assets/markdown-preview-BSdnj6yk.js +1 -0
- package/dist/assets/media-preview-BSlmc16B.js +1 -0
- package/dist/assets/memory-page-route-jdx--Pa_.js +2 -0
- package/dist/assets/memory-router-playground-page-B7dcxvqq.js +1 -0
- package/dist/assets/message-files-panel-5-HCgUE8.js +1 -0
- package/dist/assets/mutation-error-BJDINriN.js +1 -0
- package/dist/assets/native-attachment-pickers-BL2SDdtg.js +1 -0
- package/dist/assets/native-file-BqJWmXTm.js +1 -0
- package/dist/assets/notifications-page-BHFv1q0R.js +1 -0
- package/dist/assets/oauth-complete-page-D4OFmuD2.js +105 -0
- package/dist/assets/oauth-popup-complete-page-Bfph03iM.js +105 -0
- package/dist/assets/onboarding-BnvKZweH.js +1 -0
- package/dist/assets/onboarding-ClaQ9TbS.js +1 -0
- package/dist/assets/onboarding-D5ZYk-vE.js +1 -0
- package/dist/assets/onboarding-DmjIVIBS.js +1 -0
- package/dist/assets/onboarding-step-layout-Vb0tyqKa.js +1 -0
- package/dist/assets/paired-platform-identity-CGnO45_q.js +1 -0
- package/dist/assets/pairing-page-C-PTs7cy.js +1 -0
- package/dist/assets/password-reset-page-cdeuTnPx.js +1 -0
- package/dist/assets/pcm-downsample-worklet-CwNZrVLe.js +1 -0
- package/dist/assets/pdf-C1Mi1b5E.js +56 -0
- package/dist/assets/pdf-file-preview-RLJfGBN5.js +1 -0
- package/dist/assets/pdf.worker.min-Dr1KORA9.mjs +31 -0
- package/dist/assets/peeking-eyes-CYWm-sDJ.js +1 -0
- package/dist/assets/permission-guide-page-D6FWkh5j.css +1 -0
- package/dist/assets/permission-guide-page-X3vmBH1i.js +1 -0
- package/dist/assets/permission-setup-qca9hY0O.js +1 -0
- package/dist/assets/personality-page-BeVLUmr9.js +1 -0
- package/dist/assets/personality-page-CXghu3qY.js +1 -0
- package/dist/assets/personality-sliders-DXsveApd.js +1 -0
- package/dist/assets/plans-page-DEx4ZEkr.js +1 -0
- package/dist/assets/platform-loopback-page-iVfYiqwj.js +1 -0
- package/dist/assets/plugin-attribution-CTeP_GNV.js +1 -0
- package/dist/assets/plugin-detail-page-DpceQnSE.js +1 -0
- package/dist/assets/plugins-page-DWIO1-fX.js +1 -0
- package/dist/assets/plugins-surface-CX9A0G4N.js +1 -0
- package/dist/assets/preview-error-WVRxj9kK.js +1 -0
- package/dist/assets/privacy-page-BWimyMYo.js +1 -0
- package/dist/assets/privacy-screen-Ct8wjNPF.js +1 -0
- package/dist/assets/profile-card-D_f9qUFv.js +1 -0
- package/dist/assets/provider-callback-page-CqeaIP5k.js +1 -0
- package/dist/assets/provider-key-DjSFVZZ-.js +1 -0
- package/dist/assets/provider-signup-page-aHY_EhPL.js +1 -0
- package/dist/assets/provisioning-targets-DKc5ORwj.js +1 -0
- package/dist/assets/quick-input-page-jpk5rKXu.js +1 -0
- package/dist/assets/radio-card-nav-d-b41vKg.js +1 -0
- package/dist/assets/react-BJ4PZBJN.js +12 -0
- package/dist/assets/rehype-katex-CzhvmWzz.js +259 -0
- package/dist/assets/remote-web-B4U_dWd7.js +1 -0
- package/dist/assets/remote-web-BDCxnZ9y.js +1 -0
- package/dist/assets/remote-web-CVtBV7uq.js +1 -0
- package/dist/assets/remote-web-N0Odpq2-.js +1 -0
- package/dist/assets/research-mock-page-cXhCXlnq.js +1 -0
- package/dist/assets/research-onboarding-route-BP8slwTM.js +50 -0
- package/dist/assets/review-terms-screen-B8DpfPms.js +1 -0
- package/dist/assets/rolldown-runtime-BM3Ffeng.js +1 -0
- package/dist/assets/routes-wJSwFH9l.js +1 -0
- package/dist/assets/schedules-Bk7XGnqS.js +1 -0
- package/dist/assets/schedules-CGU7CKaM.js +1 -0
- package/dist/assets/schedules-Cp6NtEFb.js +1 -0
- package/dist/assets/schedules-J687h0Fh.js +1 -0
- package/dist/assets/schedules-JnprnWDo.js +1 -0
- package/dist/assets/schedules-page-CtIUz36s.js +1 -0
- package/dist/assets/security-redirect-page-D494rPh_.js +1 -0
- package/dist/assets/select-assistant-screen-D3NHx0fP.js +1 -0
- package/dist/assets/self-hosted-servers-u4-ZQjXb.js +1 -0
- package/dist/assets/service-form-controls-Bftrx7Mu.js +1 -0
- package/dist/assets/setting-row-oGk_qX0f.js +1 -0
- package/dist/assets/settings-BAUjyIUb.js +5 -0
- package/dist/assets/settings-BEOMP91r.js +5 -0
- package/dist/assets/settings-BYrm7GEM.js +5 -0
- package/dist/assets/settings-C1JmohiF.js +5 -0
- package/dist/assets/settings-divider-BG062qVE.js +1 -0
- package/dist/assets/settings-layout-DRDDJscG.js +1 -0
- package/dist/assets/share-feedback-modal-B9x3V8Gi.js +1 -0
- package/dist/assets/share-feedback-modal-C3FpRro4.js +2 -0
- package/dist/assets/sidebar-tree-_vU-v_tk.js +1 -0
- package/dist/assets/signup-onboarding-handoff-aEYZuuHr.js +1 -0
- package/dist/assets/signup-page-D-KwKdjC.js +1 -0
- package/dist/assets/signup-shell-DaA0Rkxz.js +1 -0
- package/dist/assets/signup-shell-iu1RtjJg.css +1 -0
- package/dist/assets/skill-detail-page-CmO6_rS2.js +2 -0
- package/dist/assets/skill-detail-panel-CtVOvX8y.js +1 -0
- package/dist/assets/skill-icon-H-0SEc1H.js +1 -0
- package/dist/assets/skill-removal-dialog-AiL8UR6B.js +1 -0
- package/dist/assets/skills-page-BGhZ224Q.js +1 -0
- package/dist/assets/sounds-page-C55ejZ9q.js +1 -0
- package/dist/assets/start-screen-Bdw1y_Sy.js +1 -0
- package/dist/assets/status-badge-pill-CND5rJPR.js +1 -0
- package/dist/assets/step-detail-header-OvZIZ_hN.js +1 -0
- package/dist/assets/stt-language-picker-modal-CxP5ZNXV.js +1 -0
- package/dist/assets/subagent-detail-panel-NrIMuVOE.js +1 -0
- package/dist/assets/superpowers-page-CanTF9dB.js +1 -0
- package/dist/assets/system-events-page-DkvlTHFB.js +1 -0
- package/dist/assets/system-events-redirect-page-HGFgRZnS.js +1 -0
- package/dist/assets/tabular-grid-D-rK6Urd.js +4 -0
- package/dist/assets/teleport-gateway-client-DTMp6hK0.js +1 -0
- package/dist/assets/terminal-BV6xg9ZA.js +1 -0
- package/dist/assets/terminal-BjOF3LBT.js +1 -0
- package/dist/assets/terminal-CYHsl1AH.js +1 -0
- package/dist/assets/terminal-Cxm0NKaj.js +1 -0
- package/dist/assets/text-preview-DodpvhBk.js +1 -0
- package/dist/assets/theme-stage-page-BdViPYyc.js +1 -0
- package/dist/assets/tiptap-document-editor-BXmZeNa9.js +323 -0
- package/dist/assets/tool-detail-panel-Bc1cp1aw.js +1 -0
- package/dist/assets/tool-detail-panel-QFcw3_is.js +16 -0
- package/dist/assets/trait-cycle-row-Ck7HxbJE.js +1 -0
- package/dist/assets/upgrade-cancel-page-DX-JNOcM.js +1 -0
- package/dist/assets/upgrade-success-page-DOzCZzZm.js +1 -0
- package/dist/assets/usage-redirect-page-BGhRgxwl.js +1 -0
- package/dist/assets/usage-window-Dk_XVv4Y.js +1 -0
- package/dist/assets/use-app-delete-Dl30EH4x.js +1 -0
- package/dist/assets/use-assistant-identity-details-CWI0e_y_.js +1 -0
- package/dist/assets/use-async-read-deCq0DBg.js +1 -0
- package/dist/assets/use-channel-trust-floors-2hclMfGD.js +1 -0
- package/dist/assets/use-checkout-dismiss-refresh-D9_Q6waf.js +1 -0
- package/dist/assets/use-debounced-value-CPLEzsNt.js +1 -0
- package/dist/assets/use-edge-swipe-back-DT-9-eHs.js +1 -0
- package/dist/assets/use-hotkey-recorder-C8jylWeK.js +1 -0
- package/dist/assets/use-invite-link-dialog-B4DWPtt2.js +1 -0
- package/dist/assets/use-plugins-list-O_srhYRq.js +1 -0
- package/dist/assets/use-return-to-short-circuit-DcBMxWLc.js +1 -0
- package/dist/assets/use-side-list-room-ZV3Ebn00.js +1 -0
- package/dist/assets/use-skill-actions-Cnfs7Ss2.js +1 -0
- package/dist/assets/use-skill-detail-files-CmU-F530.js +1 -0
- package/dist/assets/use-supports-credentials-settings-Byz38P_8.js +1 -0
- package/dist/assets/use-truncated-blob-text-D16QRG1n.js +1 -0
- package/dist/assets/vendor-CezcraPH.js +125 -0
- package/dist/assets/voice-page-teUFHIpC.js +1 -0
- package/dist/assets/wake-detail-panel-DDZGrNBx.js +1 -0
- package/dist/assets/weather-forecast-display-BIavxof5.js +1 -0
- package/dist/assets/web-BA_SEIKY.js +1 -0
- package/dist/assets/web-BGBSTUE5.js +1 -0
- package/dist/assets/web-BOoSclHV.js +1 -0
- package/dist/assets/web-Cnoc-36d.js +1 -0
- package/dist/assets/web-D36IPmll.js +1 -0
- package/dist/assets/web-DaDJItvE.js +1 -0
- package/dist/assets/web-GjGo6RCY.js +1 -0
- package/dist/assets/web-ZoqYnuKe.js +1 -0
- package/dist/assets/web-mirSqNWL.js +1 -0
- package/dist/assets/welcome-screen-DK1SS4Wo.js +1 -0
- package/dist/assets/workflow-detail-panel-mH9E0KPC.js +1 -0
- package/dist/assets/workspace-Bcvg2VfS.js +1 -0
- package/dist/assets/workspace-BscXtFFU.js +1 -0
- package/dist/assets/workspace-C-huZiu_.js +1 -0
- package/dist/assets/workspace-P8HaFDdu.js +1 -0
- package/dist/assets/workspace-page-B69xlDXE.js +1 -0
- package/dist/assets/workspace-page-Cdm9g2X4.css +1 -0
- package/dist/assets/xlsx-preview-ScDGohb3.js +1 -0
- package/dist/assets/xterm-Pyzkt_-B.js +7 -0
- package/dist/assets/xterm-addon-fit-HaY_WHvm.js +1 -0
- package/dist/cadet-logo-white.svg +10 -0
- package/dist/cadet-logo.svg +8 -0
- package/dist/cadet-scene-cut.mp4 +0 -0
- package/dist/favicon.svg +28 -0
- package/dist/fonts/InstrumentSerif-Regular.ttf +0 -0
- package/dist/images/integrations/airtable.svg +1 -0
- package/dist/images/integrations/amplemarket-mcp.png +0 -0
- package/dist/images/integrations/apple-notes.svg +1 -0
- package/dist/images/integrations/asana.svg +1 -0
- package/dist/images/integrations/ashby-mcp.png +0 -0
- package/dist/images/integrations/atlassian-mcp.png +0 -0
- package/dist/images/integrations/attio-mcp.png +0 -0
- package/dist/images/integrations/brex-mcp.png +0 -0
- package/dist/images/integrations/calendly-mcp.png +0 -0
- package/dist/images/integrations/calendly.svg +1 -0
- package/dist/images/integrations/circleback-mcp.png +0 -0
- package/dist/images/integrations/clay-mcp.png +0 -0
- package/dist/images/integrations/craft-mcp.png +0 -0
- package/dist/images/integrations/customer-io-mcp.png +0 -0
- package/dist/images/integrations/discord.svg +1 -0
- package/dist/images/integrations/dropbox.svg +1 -0
- package/dist/images/integrations/eventbrite.svg +1 -0
- package/dist/images/integrations/excel.svg +1 -0
- package/dist/images/integrations/fathom-mcp.png +0 -0
- package/dist/images/integrations/figma.svg +8 -0
- package/dist/images/integrations/fireflies-mcp.png +0 -0
- package/dist/images/integrations/gamma-mcp.png +0 -0
- package/dist/images/integrations/github-dark.svg +1 -0
- package/dist/images/integrations/github.svg +1 -0
- package/dist/images/integrations/gmail.svg +7 -0
- package/dist/images/integrations/google-calendar.svg +11 -0
- package/dist/images/integrations/google-drive.svg +8 -0
- package/dist/images/integrations/guru-mcp.png +0 -0
- package/dist/images/integrations/hubspot.svg +1 -0
- package/dist/images/integrations/interactive-brokers-mcp.png +0 -0
- package/dist/images/integrations/intercom-mcp.png +0 -0
- package/dist/images/integrations/jira.svg +4 -0
- package/dist/images/integrations/jotform-mcp.png +0 -0
- package/dist/images/integrations/juicebox-mcp.png +0 -0
- package/dist/images/integrations/klaviyo-mcp.png +0 -0
- package/dist/images/integrations/linear-light-logo.svg +1 -0
- package/dist/images/integrations/linear-mcp.png +0 -0
- package/dist/images/integrations/mailerlite-mcp.png +0 -0
- package/dist/images/integrations/meltwater-mcp.png +0 -0
- package/dist/images/integrations/mem-mcp.png +0 -0
- package/dist/images/integrations/mercury-mcp.png +0 -0
- package/dist/images/integrations/monday.svg +1 -0
- package/dist/images/integrations/navan-mcp.png +0 -0
- package/dist/images/integrations/notion-mcp.png +0 -0
- package/dist/images/integrations/notion.svg +7 -0
- package/dist/images/integrations/otter-mcp.png +0 -0
- package/dist/images/integrations/outlook.png +0 -0
- package/dist/images/integrations/profound-mcp.png +0 -0
- package/dist/images/integrations/quickbooks.svg +1 -0
- package/dist/images/integrations/ramp-mcp.png +0 -0
- package/dist/images/integrations/readwise-mcp.png +0 -0
- package/dist/images/integrations/salesforce.svg +5 -0
- package/dist/images/integrations/sanity.svg +1 -0
- package/dist/images/integrations/semrush-mcp.png +0 -0
- package/dist/images/integrations/sentry-mcp.png +0 -0
- package/dist/images/integrations/shopify.svg +1 -0
- package/dist/images/integrations/slack.svg +22 -0
- package/dist/images/integrations/spotify.svg +1 -0
- package/dist/images/integrations/stripe-link.svg +1 -0
- package/dist/images/integrations/stripe-mcp.png +0 -0
- package/dist/images/integrations/telegram.svg +1 -0
- package/dist/images/integrations/todoist-mcp.png +0 -0
- package/dist/images/integrations/todoist.svg +1 -0
- package/dist/images/integrations/typeform-mcp.png +0 -0
- package/dist/images/integrations/upwork-mcp.png +0 -0
- package/dist/images/integrations/webull-mcp.png +0 -0
- package/dist/images/integrations/wix-mcp.png +0 -0
- package/dist/images/integrations/x.svg +1 -0
- package/dist/images/prior-assistants/chatgpt.svg +3 -0
- package/dist/images/prior-assistants/claude.svg +3 -0
- package/dist/images/prior-assistants/copilot.svg +3 -0
- package/dist/images/prior-assistants/gemini.svg +10 -0
- package/dist/images/prior-assistants/hermes.png +0 -0
- package/dist/images/prior-assistants/manus.svg +6 -0
- package/dist/images/prior-assistants/openclaw.png +0 -0
- package/dist/index.html +371 -0
- package/dist/login-background-characters.svg +41 -0
- package/dist/skills/amazon/assets/icon.svg +38 -0
- package/dist/skills/api-mapping/assets/icon.svg +18 -0
- package/dist/skills/cadet-github-app-setup/assets/icon.svg +1 -0
- package/dist/skills/chat-complex-documents/assets/icon.svg +26 -0
- package/dist/skills/deepgram-voice/assets/icon.svg +1 -0
- package/dist/skills/discord-app-setup/assets/icon.svg +1 -0
- package/dist/skills/doordash/assets/icon.svg +1 -0
- package/dist/skills/elevenlabs-voice/assets/icon.svg +1 -0
- package/dist/skills/frontend-design/assets/icon.svg +16 -0
- package/dist/skills/gmail/assets/icon.svg +1 -0
- package/dist/skills/google-calendar/assets/icon.svg +1 -0
- package/dist/skills/inbox-cleanup/assets/icon.svg +1 -0
- package/dist/skills/inbox-management/assets/icon.svg +1 -0
- package/dist/skills/linear-app-setup/assets/icon.svg +1 -0
- package/dist/skills/macos-automation/assets/icon.svg +12 -0
- package/dist/skills/mailgun-setup/assets/icon.svg +1 -0
- package/dist/skills/notion/assets/icon.svg +1 -0
- package/dist/skills/outlook/assets/icon.svg +2 -0
- package/dist/skills/outlook-calendar/assets/icon.svg +2 -0
- package/dist/skills/slack/assets/icon.svg +6 -0
- package/dist/skills/start-the-day/assets/icon.svg +13 -0
- package/dist/skills/stripe-app-setup/assets/icon.svg +1 -0
- package/dist/skills/stripe-link-wallet/assets/icon.svg +1 -0
- package/dist/skills/telegram-setup/assets/icon.svg +1 -0
- package/dist/skills/twilio-setup/assets/icon.svg +1 -0
- package/dist/skills/vercel-token-setup/assets/icon.svg +1 -0
- package/dist/skills/voice-setup/assets/icon.svg +20 -0
- package/dist/skills/weather/assets/icon.svg +24 -0
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -1,5 +1,224 @@
|
|
|
1
|
-
#
|
|
1
|
+
# clients/web
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Vite + [React Router v7](https://reactrouter.com/) SPA for the
|
|
4
|
+
Cadet assistant web app (chat, settings, library, docs).
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
## Stack
|
|
7
|
+
|
|
8
|
+
- [Vite](https://vite.dev/) for dev server and build.
|
|
9
|
+
- [React 19](https://react.dev/) +
|
|
10
|
+
[React Router v7](https://reactrouter.com/start/modes) in
|
|
11
|
+
**library / data-router mode** (`createBrowserRouter` +
|
|
12
|
+
`<RouterProvider>`).
|
|
13
|
+
- [Zustand](https://zustand.docs.pmnd.rs/) for shared client state
|
|
14
|
+
(messages, streaming, interactions, conversations). See
|
|
15
|
+
[`docs/STATE_MANAGEMENT.md`](./docs/STATE_MANAGEMENT.md) for store patterns.
|
|
16
|
+
- [TanStack React Query](https://tanstack.com/query/latest) for server
|
|
17
|
+
state (API calls, caching, mutations).
|
|
18
|
+
- [HeyAPI](https://heyapi.dev/) for OpenAPI client generation with
|
|
19
|
+
React Query plugin.
|
|
20
|
+
- TypeScript with `Bundler` module resolution — no `.js` extensions on
|
|
21
|
+
imports (bundler-only package; see [`clients/AGENTS.md`](../AGENTS.md)).
|
|
22
|
+
- Bun for dependency management; self-contained `bun.lock` per
|
|
23
|
+
[`clients/AGENTS.md`](../AGENTS.md).
|
|
24
|
+
|
|
25
|
+
## Local development
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
cd clients/web
|
|
29
|
+
bun install # installs the whole workspace
|
|
30
|
+
bun run openapi-ts # generate API client (required before typecheck/dev)
|
|
31
|
+
bun run dev # Vite dev server on localhost:3000
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Connecting to a backend
|
|
35
|
+
|
|
36
|
+
The Vite dev server includes a built-in
|
|
37
|
+
[reverse proxy](https://vite.dev/config/server-options#server-proxy)
|
|
38
|
+
that forwards API paths (`/v1/*`, `/_allauth/*`, `/accounts/*`) to the
|
|
39
|
+
Django backend. This keeps all requests same-origin so session cookies
|
|
40
|
+
work automatically — no CORS configuration or HTTPS setup needed.
|
|
41
|
+
|
|
42
|
+
By default the proxy targets `http://localhost:8000`. To change it,
|
|
43
|
+
set `API_PROXY_TARGET` in a `.env` file (see
|
|
44
|
+
[`.env.example`](./.env.example)):
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# .env (not committed)
|
|
48
|
+
API_PROXY_TARGET=http://localhost:8000
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Browse to **http://localhost:3000** and log in normally.
|
|
52
|
+
|
|
53
|
+
> **Note:** Some API endpoints (avatar, feed, assistant state) return
|
|
54
|
+
> 404 unless the assistant daemon is running. This is expected in
|
|
55
|
+
> frontend-only mode — the core UI and auth flow work without the
|
|
56
|
+
> daemon.
|
|
57
|
+
|
|
58
|
+
### How the proxy works
|
|
59
|
+
|
|
60
|
+
The client makes relative API requests (e.g. `fetch("/v1/feed")`).
|
|
61
|
+
In development, Vite's proxy intercepts these and forwards them to
|
|
62
|
+
the backend. In production, an infrastructure reverse proxy (nginx,
|
|
63
|
+
cloud LB, etc.) does the same routing. The client code is identical
|
|
64
|
+
in both environments — no environment-specific base URLs.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Development: Browser ─► Vite :3000 ─(proxy)─► Django :8000
|
|
68
|
+
Production: Browser ─► Reverse proxy ─► Django
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Reference: [Vite server.proxy docs](https://vite.dev/config/server-options#server-proxy)
|
|
72
|
+
|
|
73
|
+
### Other commands
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
bun run build # Production build to dist/
|
|
77
|
+
bun run preview # Serve the production build locally
|
|
78
|
+
bun run typecheck # bunx tsc --noEmit
|
|
79
|
+
bun run lint # eslint
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Storybook
|
|
83
|
+
|
|
84
|
+
[Storybook](https://storybook.js.org/) provides isolated component
|
|
85
|
+
development for `clients/web` components — the ones tied to the app
|
|
86
|
+
(routing, stores, layout) that don't belong in
|
|
87
|
+
`@mycadet/design-library`. Design-system primitives live in their own
|
|
88
|
+
Storybook (`packages/design-library`, port 6006).
|
|
89
|
+
|
|
90
|
+
Both Storybooks are published off `main` and cross-link to each other
|
|
91
|
+
from the toolbar above the canvas:
|
|
92
|
+
|
|
93
|
+
- Web: <https://storybook.mycadet.ai/web/main/>
|
|
94
|
+
- Design library: <https://storybook.mycadet.ai/design-library/main/>
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
cd clients/web
|
|
98
|
+
bun run storybook # dev server → http://localhost:6007
|
|
99
|
+
bun run build-storybook # static build → storybook-static/
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Stories are colocated next to their components (`*.stories.tsx`).
|
|
103
|
+
Autodocs generates prop tables from TypeScript types automatically.
|
|
104
|
+
|
|
105
|
+
Use the **Theme** toolbar to switch between Light, Dark, and Velvet —
|
|
106
|
+
the wiring matches the design library Storybook so components render
|
|
107
|
+
with the same `data-theme` tokens they get in the running app. A
|
|
108
|
+
`MemoryRouter` decorator wraps every story so components using
|
|
109
|
+
`react-router` work without setup.
|
|
110
|
+
|
|
111
|
+
The Storybook also runs automatically as part of `vel up` (alongside
|
|
112
|
+
the design library Storybook on `:6006`) — see the
|
|
113
|
+
[`vel` README](https://github.com/vargasjr-dev/mycadet-platform/blob/main/vel/README.md)
|
|
114
|
+
for the multi-service workflow.
|
|
115
|
+
|
|
116
|
+
## Testing
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
bun test # run all tests (single process, fast)
|
|
120
|
+
bun test src/path/to/file.test.ts # run one file
|
|
121
|
+
bun run test:ci # run each file in its own process (CI)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Tests use [Bun's built-in test runner](https://bun.sh/docs/test) with
|
|
125
|
+
[happy-dom](https://github.com/nicedoc/happy-dom) providing browser
|
|
126
|
+
globals (`window`, `document`, `localStorage`, `fetch`, etc.) so
|
|
127
|
+
component and hook tests run without a real browser.
|
|
128
|
+
|
|
129
|
+
### Why `test:ci`?
|
|
130
|
+
|
|
131
|
+
Bun's
|
|
132
|
+
[`mock.module()`](https://bun.sh/docs/test/mocking#mock-module)
|
|
133
|
+
mutates a process-global module registry — mocks set in one test file
|
|
134
|
+
leak into every subsequent file in the same process. `bun run test:ci`
|
|
135
|
+
runs each file in its own subprocess for full isolation. Use it when
|
|
136
|
+
the standard `bun test` shows cross-file contamination, or in CI where
|
|
137
|
+
deterministic results are required.
|
|
138
|
+
|
|
139
|
+
## Architecture
|
|
140
|
+
|
|
141
|
+
See [`docs/CONVENTIONS.md`](./docs/CONVENTIONS.md) for code organization
|
|
142
|
+
(domain-based architecture), component conventions, and framework strategy.
|
|
143
|
+
See [`docs/STATE_MANAGEMENT.md`](./docs/STATE_MANAGEMENT.md) for state
|
|
144
|
+
patterns (Zustand + TanStack Query).
|
|
145
|
+
|
|
146
|
+
See [`docs/STYLE_GUIDE.md`](./docs/STYLE_GUIDE.md) for naming, imports,
|
|
147
|
+
TypeScript rules, and formatting.
|
|
148
|
+
|
|
149
|
+
**Feature boundaries are enforced by lint.** Each folder under
|
|
150
|
+
`src/domains/` is meant to be a self-contained feature — its own data,
|
|
151
|
+
components, hooks, and tests. When one feature reaches into another's
|
|
152
|
+
internals, that creates a hidden coupling: changing the source can
|
|
153
|
+
break the consumer, even though they're supposed to be independent.
|
|
154
|
+
The custom ESLint rule [`local/no-cross-domain-imports`](./eslint-rules/no-cross-domain-imports.mjs)
|
|
155
|
+
fails CI on any new `@/domains/<y>/...` import from inside
|
|
156
|
+
`src/domains/<x>/...` when `x !== y`. Existing legacy imports are
|
|
157
|
+
listed in [`.cross-domain-allowlist.json`](./.cross-domain-allowlist.json)
|
|
158
|
+
while we lift the shared pieces up to the top-level shared directories
|
|
159
|
+
(`hooks/`, `stores/`, `utils/`, `types/`, `components/`). That file
|
|
160
|
+
shrinks toward zero over time — fix violations rather than adding
|
|
161
|
+
entries to it. See [docs/CONVENTIONS.md](./docs/CONVENTIONS.md#how-to-decide-where-the-domain-split-is)
|
|
162
|
+
for the full reasoning and the lift-vs-compose decision tree.
|
|
163
|
+
|
|
164
|
+
## Directory structure
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
src/
|
|
168
|
+
App.tsx # root layout component
|
|
169
|
+
main.tsx # entry point (createRoot, RouterProvider)
|
|
170
|
+
routes.tsx # route tree (createBrowserRouter)
|
|
171
|
+
assistant/ # core domain — the assistant itself
|
|
172
|
+
stores/ # app-level Zustand stores (cross-domain)
|
|
173
|
+
domains/ # feature modules
|
|
174
|
+
messages/ # message lifecycle
|
|
175
|
+
conversations/ # conversation CRUD, grouping, selection
|
|
176
|
+
streaming/ # SSE transport, event parsing
|
|
177
|
+
interactions/ # user-facing prompts
|
|
178
|
+
hooks/ # cross-domain shared hooks
|
|
179
|
+
utils/ # cross-domain shared utilities
|
|
180
|
+
types/ # cross-domain shared types
|
|
181
|
+
lib/ # configured third-party wrappers
|
|
182
|
+
runtime/ # framework adapters, platform bridges
|
|
183
|
+
components/ # cross-domain shared UI
|
|
184
|
+
pages/ # route-level page components
|
|
185
|
+
generated/ # auto-generated code (HeyAPI) — gitignored
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Path alias
|
|
189
|
+
|
|
190
|
+
Use `@/` to import from `src/`:
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
import { useMessageStore } from "@/domains/messages/message-store.js";
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Configured in both `vite.config.ts` (`resolve.alias`) and
|
|
197
|
+
`tsconfig.json` (`paths`) for editor support.
|
|
198
|
+
|
|
199
|
+
## Why library mode?
|
|
200
|
+
|
|
201
|
+
React Router v7 ships two
|
|
202
|
+
[modes](https://reactrouter.com/start/modes): _library / data-router_
|
|
203
|
+
mode (pure-client SPA built around `createBrowserRouter`) and
|
|
204
|
+
_framework_ mode (file-based routes, generated types, per-route code
|
|
205
|
+
splitting).
|
|
206
|
+
|
|
207
|
+
Library mode is the established React SPA pattern. Fewer conventions
|
|
208
|
+
to learn, fewer build-time plugins, no generated types directory — the
|
|
209
|
+
more recognizable shape for contributors. Framework mode is a
|
|
210
|
+
defensible alternative when the app grows enough that per-route code
|
|
211
|
+
splitting becomes worth its conventions; the React Router API used in
|
|
212
|
+
day-to-day code (`<Link>`, `<Outlet>`, `useParams`, `useNavigate`) is
|
|
213
|
+
the same in both modes, so switching later is a restructure rather
|
|
214
|
+
than a rewrite.
|
|
215
|
+
|
|
216
|
+
## SSR/build-safe rendering
|
|
217
|
+
|
|
218
|
+
Even though this is an SPA, route and layout components must not
|
|
219
|
+
access `window` / `localStorage` / `document` during synchronous
|
|
220
|
+
render. Client-only reads belong in `useEffect` or in a runtime
|
|
221
|
+
adapter implementation. This keeps the door open for future static
|
|
222
|
+
prerendering or hybrid runtimes. See Vite's
|
|
223
|
+
[SSR guidance](https://vite.dev/guide/ssr.html) for the underlying
|
|
224
|
+
reasoning.
|