@vellumai/web 0.10.8-staging.1 → 0.10.8-staging.2
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/dist/assets/{AnimatePresence-C8APSgIu.js → AnimatePresence-s1Z1HHWx.js} +1 -1
- package/dist/assets/{BundleConfirmPage-M2tkzwiz.js → BundleConfirmPage-C6bP7QB3.js} +1 -1
- package/dist/assets/{about-page-C-kIVb7a.js → about-page-XGv9RAQu.js} +1 -1
- package/dist/assets/{account-page-DOSnPXjP.js → account-page-Dno1SeJN.js} +1 -1
- package/dist/assets/{account-shell-74OchOxg.js → account-shell-CdhP9l8T.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-DFoD_DVJ.js → acp-run-detail-panel-B1-zyOUe.js} +4 -4
- package/dist/assets/{activity-steps-panel-jztC4BRv.js → activity-steps-panel-BGyfMCXK.js} +1 -1
- package/dist/assets/{add-credits-modal-daNASKHJ.js → add-credits-modal-PP1PX8Qv.js} +1 -1
- package/dist/assets/{advanced-page-B8h5sAe5.js → advanced-page-vCbMVJsK.js} +1 -1
- package/dist/assets/{ai-page-BInYrZV7.js → ai-page-BIYybKux.js} +1 -1
- package/dist/assets/{animated-avatar-CrlodWQr.js → animated-avatar-Cqpzb8O4.js} +1 -1
- package/dist/assets/{api-key-screen-Cynx0r0g.js → api-key-screen-DTSP_-Da.js} +1 -1
- package/dist/assets/{archive-page-DqXRVFoF.js → archive-page-RZ2VP63A.js} +1 -1
- package/dist/assets/{assistant-feature-flag-store-CKUjJHuh.js → assistant-feature-flag-store-DA8Oj9Mf.js} +1 -1
- package/dist/assets/{assistant-status-panel-eNWJodpn.js → assistant-status-panel-BC0RTDls.js} +1 -1
- package/dist/assets/{auth-store-CD7PGb3q.js → auth-store-C09YAZEu.js} +2 -2
- package/dist/assets/{background-task-detail-panel-Bsi8IoaY.js → background-task-detail-panel-BfnsD-3B.js} +1 -1
- package/dist/assets/{billing-page-dpKYjJH3.js → billing-page-1z_L2m6q.js} +3 -3
- package/dist/assets/{bookmarks-page-BI92Y3eM.js → bookmarks-page-CjcavZv8.js} +1 -1
- package/dist/assets/{browser-BPZAXjRE.js → browser-C6a_nhhZ.js} +2 -2
- package/dist/assets/{build-state-DGsKGdpj.js → build-state-PUXrUU4W.js} +1 -1
- package/dist/assets/channels-page-route-WjNmd0sS.js +9 -0
- package/dist/assets/chat-markdown-message-BnX6bhgs.js +2 -0
- package/dist/assets/{client-feature-flag-store-C0g8zi1W.js → client-feature-flag-store-DkJl-g9A.js} +1 -1
- package/dist/assets/{command-palette-Dk6UsSlv.js → command-palette-6o4m7BM9.js} +1 -1
- package/dist/assets/{command-palette-window-page-zDow8o4K.js → command-palette-window-page-BsJlr5bh.js} +1 -1
- package/dist/assets/community-page-CJA4JfuC.js +1 -0
- package/dist/assets/{connect-page-BXTqYbdY.js → connect-page-DZgU3jCf.js} +1 -1
- package/dist/assets/{consent-controls-BZMxm0n3.js → consent-controls-Cnr1DzCr.js} +1 -1
- package/dist/assets/contacts-page-route-P0neH-PV.js +1 -0
- package/dist/assets/{credentials-page-0S5ifTFC.js → credentials-page-MkKE_19-.js} +1 -1
- package/dist/assets/debug-page-B88f4aDU.js +4 -0
- package/dist/assets/{deploy-dialogs-BBHNKgDi.js → deploy-dialogs-paL_zcvG.js} +1 -1
- package/dist/assets/{detail-card-RGTjHkZ8.js → detail-card-xKZlkbz5.js} +1 -1
- package/dist/assets/{detail-panel-stop-button-oIDUq-kJ.js → detail-panel-stop-button-y7O3HqJj.js} +1 -1
- package/dist/assets/{developer-page-Djolz4Fg.js → developer-page-BFMS6pwU.js} +1 -1
- package/dist/assets/{devices-page-XJJSA97y.js → devices-page-B3D5iLhD.js} +1 -1
- package/dist/assets/{dictation-overlay-page-cqsEjyx_.js → dictation-overlay-page-BkEBWrWm.js} +1 -1
- package/dist/assets/{document-viewer-page-jInmb33M.js → document-viewer-page-B631L6-3.js} +1 -1
- package/dist/assets/{earn-credits-modal-C_jhLLw5.js → earn-credits-modal-CFla-iKl.js} +1 -1
- package/dist/assets/edge-swipe-arbiter-store-BeOhrE7M.js +1 -0
- package/dist/assets/{emails-page-fov7ihfj.js → emails-page-7c9kVi_k.js} +1 -1
- package/dist/assets/{esm-Ddmch1KU.js → esm-Bzs_witt.js} +2 -2
- package/dist/assets/{esm-CYMQv-VS.js → esm-C5J59K0j.js} +2 -2
- package/dist/assets/{esm-CTXnt94k.js → esm-CT8NUp3h.js} +2 -2
- package/dist/assets/esm-DEu9JbAE.js +2 -0
- package/dist/assets/{esm-BciT3LGF.js → esm-DZkj1VLJ.js} +2 -2
- package/dist/assets/{esm-CvWQdH3L.js → esm-DtJz1M8R.js} +2 -2
- package/dist/assets/{feature-flag-catalog-CHuc71P8.js → feature-flag-catalog-GgSNKkqP.js} +1 -1
- package/dist/assets/{file-markdown-BXUvAQ24.js → file-markdown-Bq97tNxs.js} +1 -1
- package/dist/assets/{general-page-gojItIOd.js → general-page-D-Gr2lkW.js} +1 -1
- package/dist/assets/{haptics-DKVhthJo.js → haptics-lMERs7us.js} +2 -2
- package/dist/assets/hatching-screen-BlwicgIz.js +1 -0
- package/dist/assets/home-page-route-D24x4A0S.js +1 -0
- package/dist/assets/{hosting-screen-BTLHWS2M.js → hosting-screen-BZLZular.js} +1 -1
- package/dist/assets/identity-page-route-BwOJeenx.js +1 -0
- package/dist/assets/{index-BjtwYdrT.css → index-C9GrLGul.css} +1 -1
- package/dist/assets/{index-CSefSVJO.js → index-yu6nDHvG.js} +21 -21
- package/dist/assets/{inspect-page-CT8NspqC.js → inspect-page-1RejwSP_.js} +4 -4
- package/dist/assets/{integrations-page-DtClqS91.js → integrations-page-BV5BiHPD.js} +1 -1
- package/dist/assets/{intelligence-layout-D9ReVcK0.js → intelligence-layout-iQFO8in_.js} +1 -1
- package/dist/assets/{keyboard-shortcuts-page-CovdLPhh.js → keyboard-shortcuts-page-jt13JtxS.js} +1 -1
- package/dist/assets/{library-detail-page-MAsxHH08.js → library-detail-page-BAGWt1Lw.js} +1 -1
- package/dist/assets/{library-page-CYuSc92M.js → library-page-CqeoBhDY.js} +1 -1
- package/dist/assets/{login-flow-CHNlba5i.js → login-flow-B6q00uIW.js} +1 -1
- package/dist/assets/{login-page-CK1TxruP.js → login-page-BQVTWuQc.js} +1 -1
- package/dist/assets/{logout-page-W3gl_1Ax.js → logout-page-BV0URcAd.js} +1 -1
- package/dist/assets/{logs-layout-CR7u05YO.js → logs-layout-DO3yfZqD.js} +1 -1
- package/dist/assets/{memory-router-playground-page-eDjKwsbG.js → memory-router-playground-page-CQxX6mCn.js} +1 -1
- package/dist/assets/{metric-card-BN23geOu.js → metric-card-DvXjHVCV.js} +1 -1
- package/dist/assets/{mobile-sidebar-drawer-3LqMCZgK.js → mobile-sidebar-drawer-Epbt6p-k.js} +1 -1
- package/dist/assets/{native-file-Cn3RbQbT.js → native-file-DI99Emal.js} +2 -2
- package/dist/assets/{notifications-page-CtyUuC15.js → notifications-page-CXaZpD3s.js} +1 -1
- package/dist/assets/{oauth-complete-page-3DcY6Or3.js → oauth-complete-page-BlJm9tRJ.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-Cn-1bOwa.js → oauth-popup-complete-page-BqUopTat.js} +1 -1
- package/dist/assets/{page-shell-C2TBO8M8.js → page-shell-BUGBKCmv.js} +1 -1
- package/dist/assets/{pairing-page-Bb-_q_zP.js → pairing-page-B5GrCx4C.js} +1 -1
- package/dist/assets/{platform-loopback-page-Dfl_gjZm.js → platform-loopback-page-MZdCPXRI.js} +1 -1
- package/dist/assets/{plugin-detail-page-C_vv0F7O.js → plugin-detail-page-Byuqbr1N.js} +1 -1
- package/dist/assets/plugins-page-Ci0CoSAN.js +1 -0
- package/dist/assets/{prechat-route-CgCradwf.js → prechat-route-9JFn-w_1.js} +1 -1
- package/dist/assets/{prefs-DYaOj-dg.js → prefs-B1Y3q3c8.js} +1 -1
- package/dist/assets/{privacy-page-BqYdFos7.js → privacy-page-BTpvj9ZP.js} +1 -1
- package/dist/assets/{privacy-screen-DBMkRqiF.js → privacy-screen-CUbVcDf_.js} +1 -1
- package/dist/assets/{provider-callback-page-B-aDgII8.js → provider-callback-page-fB2tIyqL.js} +1 -1
- package/dist/assets/{provider-signup-page-CYK4VNf0.js → provider-signup-page-C4Dn-wtJ.js} +1 -1
- package/dist/assets/{quick-input-page-oif3WEFT.js → quick-input-page-Cv_CzapK.js} +1 -1
- package/dist/assets/{research-mock-page-CooZPqtv.js → research-mock-page-1T92rXz3.js} +1 -1
- package/dist/assets/{research-onboarding-route-BJqAsTdE.js → research-onboarding-route-CmWgwOFk.js} +3 -3
- package/dist/assets/{review-terms-screen-CVRYEl6e.js → review-terms-screen-DrD4vywk.js} +1 -1
- package/dist/assets/{risk-Dsj4oM8c.js → risk-Dopd25rc.js} +1 -1
- package/dist/assets/{security-page-DN5BI6Ag.js → security-page-BYI7twYM.js} +1 -1
- package/dist/assets/select-assistant-screen-Br-PNDO1.js +1 -0
- package/dist/assets/{settings-layout-BNwCqvBi.js → settings-layout-lddMUg7A.js} +1 -1
- package/dist/assets/share-feedback-modal-DSwfhMsV.js +1 -0
- package/dist/assets/{sidebar-tree-Bh-tcSsp.js → sidebar-tree-C1_LiBB9.js} +1 -1
- package/dist/assets/{signup-page-D6cMhBxv.js → signup-page-D6hAK-Us.js} +1 -1
- package/dist/assets/{signup-shell-D4Afeijm.js → signup-shell-DufHA5do.js} +1 -1
- package/dist/assets/{site-favicon-DSzk4cg0.js → site-favicon-fQHLTT6F.js} +1 -1
- package/dist/assets/{skill-detail-page-Jisds_Gs.js → skill-detail-page-BlfgTyFC.js} +1 -1
- package/dist/assets/{skill-detail-panel-BEJqfJig.js → skill-detail-panel-BGoRUWNU.js} +1 -1
- package/dist/assets/{skills-CSlvOB79.js → skills-AtSQBwXr.js} +1 -1
- package/dist/assets/{skills-page-Cs1EG4X5.js → skills-page-DeIiyhVc.js} +1 -1
- package/dist/assets/{sounds-page-ChFJ0OPm.js → sounds-page-BgLLJ-o9.js} +1 -1
- package/dist/assets/{src-B2IjVySQ.js → src-zsLiFPw3.js} +1 -1
- package/dist/assets/{subagent-detail-panel-ACj_B6Id.js → subagent-detail-panel-BGuVa8-m.js} +1 -1
- package/dist/assets/{system-events-page-JhzC5xhW.js → system-events-page-C1hXOYmg.js} +1 -1
- package/dist/assets/{tiptap-document-editor-DSny-IjF.js → tiptap-document-editor-C-eOEBR_.js} +1 -1
- package/dist/assets/tool-detail-panel-wAuQ7gi8.js +2 -0
- package/dist/assets/{upgrade-cancel-page-D_YziHQs.js → upgrade-cancel-page-BGgPmDmT.js} +1 -1
- package/dist/assets/{upgrade-success-page-Cg7IIDei.js → upgrade-success-page-TJBopZ0Z.js} +1 -1
- package/dist/assets/{usage-page-DB3LFuYw.js → usage-page-DLWFk2P0.js} +1 -1
- package/dist/assets/use-edge-swipe-back-B4XlZ1Iu.js +1 -0
- package/dist/assets/use-invite-link-dialog-BdnW1BHj.js +1 -0
- package/dist/assets/use-is-org-ready-jhEM-4rY.js +1 -0
- package/dist/assets/{use-onboarding-login-Bo_t51AV.js → use-onboarding-login-B-1jrjFL.js} +1 -1
- package/dist/assets/{use-reduced-motion-CcGT6CHV.js → use-reduced-motion-Cj0Z8KSf.js} +1 -1
- package/dist/assets/{use-skill-actions-e6TfdF23.js → use-skill-actions-BpVxiQZY.js} +1 -1
- package/dist/assets/{use-skill-categories-i_9x26zg.js → use-skill-categories-CCxtjMC_.js} +1 -1
- package/dist/assets/{use-skill-detail-files-Cu4nrHPA.js → use-skill-detail-files-Dpp521cY.js} +1 -1
- package/dist/assets/{voice-page-wTcwV9j9.js → voice-page-BoCTB8Jx.js} +1 -1
- package/dist/assets/{weather-forecast-display-C_3DSHxa.js → weather-forecast-display-Bix8rpji.js} +1 -1
- package/dist/assets/{web-DlbBHOna.js → web-C1L-cpPj.js} +1 -1
- package/dist/assets/{web-BpBQ3Cf2.js → web-RhBklijR.js} +1 -1
- package/dist/assets/{welcome-screen-BF3r_rfT.js → welcome-screen-CVI4Hjnt.js} +1 -1
- package/dist/assets/{workflow-detail-panel-DzvDXyoD.js → workflow-detail-panel-CwZH3tDl.js} +1 -1
- package/dist/assets/workspace-page-CwIsXk1j.js +1 -0
- package/dist/index.html +28 -27
- package/package.json +1 -1
- package/dist/assets/channels-page-route-6cT6U3pZ.js +0 -9
- package/dist/assets/chat-markdown-message-CItp7csw.js +0 -2
- package/dist/assets/community-page-BVJxxP10.js +0 -1
- package/dist/assets/contacts-page-route-WXG6_xo2.js +0 -1
- package/dist/assets/debug-page-C-HWHD-3.js +0 -4
- package/dist/assets/esm-DsIXwGm7.js +0 -2
- package/dist/assets/hatching-screen-C0MNyetb.js +0 -1
- package/dist/assets/home-page-route-X4KYSdMI.js +0 -1
- package/dist/assets/identity-page-route-D5xzlpim.js +0 -1
- package/dist/assets/plugins-page-Cv0FXn1j.js +0 -1
- package/dist/assets/select-assistant-screen-B63mlflD.js +0 -1
- package/dist/assets/share-feedback-modal-BloP-1QE.js +0 -1
- package/dist/assets/tool-detail-panel-z5iYNIYq.js +0 -2
- package/dist/assets/use-edge-swipe-back-AcKDuMrX.js +0 -1
- package/dist/assets/use-invite-link-dialog-CExxDwnZ.js +0 -1
- package/dist/assets/use-is-org-ready-BtwH2--_.js +0 -1
- package/dist/assets/workspace-page-DCcsRyQz.js +0 -1
- /package/dist/assets/{a2a-invite-BriFFHnO.js → a2a-invite-B9cylfIO.js} +0 -0
- /package/dist/assets/{app-info-LSjlWG3w.js → app-info-Clwt3pCt.js} +0 -0
- /package/dist/assets/{build.umd-wlq6sZjw.js → build.umd-CxdKgGWo.js} +0 -0
- /package/dist/assets/{contacts-gateway-CNqVHBQ3.js → contacts-gateway-CW5CipBv.js} +0 -0
- /package/dist/assets/{credential-entry-page-jJzKVnQk.js → credential-entry-page-9H2HOu88.js} +0 -0
- /package/dist/assets/{danger-zone-redirect-page-DL5S8CAN.js → danger-zone-redirect-page-BWg7rn8D.js} +0 -0
- /package/dist/assets/{definitions-alqf_FBK.js → definitions-CaYcW4Yq.js} +0 -0
- /package/dist/assets/{definitions-B1DK4OsQ.js → definitions-DScTW2c-.js} +0 -0
- /package/dist/assets/{emoji-catalog-data-D_xqkMQV.js → emoji-catalog-data-D8lRMt3A.js} +0 -0
- /package/dist/assets/{environment-store-fb1I8_0E.js → environment-store-C0f32873.js} +0 -0
- /package/dist/assets/{esm-DwTCNETa.js → esm-B54gzHCZ.js} +0 -0
- /package/dist/assets/{file-editor-BbrbkQCm.js → file-editor-sT7eHxsw.js} +0 -0
- /package/dist/assets/{format-date-BczUbfC1.js → format-date-CghpPTDc.js} +0 -0
- /package/dist/assets/{format-file-size-D7iZejgy.js → format-file-size-DzVEncaw.js} +0 -0
- /package/dist/assets/{llm-dimension-Bu_nHMF_.js → llm-dimension-DyYwG3mU.js} +0 -0
- /package/dist/assets/{mutation-error-CrhKyTkx.js → mutation-error-DYv0eJ_i.js} +0 -0
- /package/dist/assets/{onboarding-step-layout-zvLUIT7j.js → onboarding-step-layout-2XcmxqFN.js} +0 -0
- /package/dist/assets/{optimistic-lifecycle-DTggtDfs.js → optimistic-lifecycle-BvfDBY8o.js} +0 -0
- /package/dist/assets/{password-reset-page-DVIt7mWy.js → password-reset-page-BCk9Si73.js} +0 -0
- /package/dist/assets/{pdf-CuY9CA7Q.js → pdf-C3Qukw-J.js} +0 -0
- /package/dist/assets/{plugins-surface-C7NU-_rg.js → plugins-surface-z3RTZS4H.js} +0 -0
- /package/dist/assets/{prechat-names-b5RkG_F-.js → prechat-names-clVy5Mee.js} +0 -0
- /package/dist/assets/{provider-key-DBiHV_K5.js → provider-key-3AHnKoz9.js} +0 -0
- /package/dist/assets/{proxy-BzlH_XAe.js → proxy-o6cPThl2.js} +0 -0
- /package/dist/assets/{public-asset-Di3QykUd.js → public-asset-GKv5zCfZ.js} +0 -0
- /package/dist/assets/{schedules-Dj3YQqG5.js → schedules-BfKi12EZ.js} +0 -0
- /package/dist/assets/{setting-row-QKgqbQ4U.js → setting-row-CUka7_L9.js} +0 -0
- /package/dist/assets/{skill-icon-CEEEqpSq.js → skill-icon-cNkD2w1X.js} +0 -0
- /package/dist/assets/{status-badge-pill-BopXdkRS.js → status-badge-pill-0N6rTEBg.js} +0 -0
- /package/dist/assets/{step-indicator-dots-Cou0-IgA.js → step-indicator-dots-D03TmFKG.js} +0 -0
- /package/dist/assets/{system-events-redirect-page-D5EfWOEK.js → system-events-redirect-page-DbaFKRXH.js} +0 -0
- /package/dist/assets/{three-dot-indicator-BVtP8eei.js → three-dot-indicator-DNuHHwtA.js} +0 -0
- /package/dist/assets/{usage-window-Btqj3Jpn.js → usage-window-C6gWu5Qu.js} +0 -0
- /package/dist/assets/{use-active-assistant-id-BNRMo_Mi.js → use-active-assistant-id-BWXi63qg.js} +0 -0
- /package/dist/assets/{use-copy-to-clipboard-tXJpCn2M.js → use-copy-to-clipboard-BCTXSMa-.js} +0 -0
- /package/dist/assets/{web-CsaTwTXy.js → web-BD2N6zhd.js} +0 -0
- /package/dist/assets/{web-Xex3K4gk.js → web-BaubW4Pp.js} +0 -0
- /package/dist/assets/{web-U-rR-rZR.js → web-CJiP8Lg6.js} +0 -0
- /package/dist/assets/{web-D5_lKOWn.js → web-D8PpvYf_.js} +0 -0
- /package/dist/assets/{web-B9ZvD-Tt.js → web-Duw5A2aP.js} +0 -0
- /package/dist/assets/{web-Bi2V5gD3.js → web-O1LOb-o9.js} +0 -0
- /package/dist/assets/{xterm-D9pOJCAq.js → xterm-CBmd_y-b.js} +0 -0
- /package/dist/assets/{xterm-addon-fit-BTV6oL76.js → xterm-addon-fit-THPW0uy0.js} +0 -0
package/dist/assets/{use-skill-detail-files-Cu4nrHPA.js → use-skill-detail-files-Dpp521cY.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as r}from"./useQuery-B45lW1Kk.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{vt as a,yt as o}from"./react-query.gen-C6wVk6Rw.js";import{c as s}from"./routes-BbeIx_F9.js";import{t as c}from"./misc-BYQPh7vS.js";import{
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as r}from"./useQuery-B45lW1Kk.js";import{t as i}from"./jsx-runtime-CVSDxk6A.js";import{vt as a,yt as o}from"./react-query.gen-C6wVk6Rw.js";import{c as s}from"./routes-BbeIx_F9.js";import{t as c}from"./misc-BYQPh7vS.js";import{Aa as l}from"./index-yu6nDHvG.js";var u=i();function d({skill:e,className:t,onNavigate:r}){return e.origin!==`assistant-memory`||!e.sourceConversationId?null:(0,u.jsxs)(n,{to:s.conversation(e.sourceConversationId),onClick:r,className:c(`inline-flex w-fit items-center gap-1 text-body-small-default text-[var(--content-tertiary)] transition-colors hover:text-[var(--content-secondary)] hover:underline`,t),children:[`Learned from this conversation`,(0,u.jsx)(l,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0})]})}var f=e(t(),1);function p(e,t){return t??e.find(e=>e.name===`SKILL.md`)?.path??null}function m(e,t){let[n,i]=(0,f.useState)(null),s=r({...o({path:{assistant_id:e??``,id:t}}),select:e=>e??null,enabled:!!e}),c=(0,f.useMemo)(()=>s.data?.files??[],[s.data]),l=(0,f.useMemo)(()=>c.find(e=>e.name===`SKILL.md`),[c]),u=p(c,n),d=r({...a({path:{assistant_id:e??``,id:t},query:{path:u??``}}),select:e=>e??null,enabled:!!(e&&u)});return{fileEntries:c,skillMd:l,selectedPath:n,setSelectedPath:i,activePath:u,activeFile:c.find(e=>e.path===u),isFilesLoading:s.isLoading,isFilesPending:s.isPending,fileContent:d.data?.content??null,isBinary:!!d.data?.isBinary,isContentLoading:d.isLoading,isContentPending:d.isPending}}export{d as n,m as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,r as n,s as r}from"./local-settings-lVNyIOJ_.js";import{t as i}from"./react-DJZBPgpf.js";import{t as a}from"./button-amTXFI-2.js";import{t as o}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{r as c}from"./middleware-pbPQ0upo.js";import{t as l}from"./info-DsOyuMO9.js";import{t as u}from"./toggle-CDfguvUz.js";import{t as d}from"./dropdown-ByHOpeOU.js";import{c as f}from"./routes-BbeIx_F9.js";import{$n as p,Bn as m,Gn as h,Hn as g,Kn as _,
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{i as t,r as n,s as r}from"./local-settings-lVNyIOJ_.js";import{t as i}from"./react-DJZBPgpf.js";import{t as a}from"./button-amTXFI-2.js";import{t as o}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{r as c}from"./middleware-pbPQ0upo.js";import{t as l}from"./info-DsOyuMO9.js";import{t as u}from"./toggle-CDfguvUz.js";import{t as d}from"./dropdown-ByHOpeOU.js";import{c as f}from"./routes-BbeIx_F9.js";import{$n as p,Bn as m,Gn as h,Hn as g,Kn as _,Ln as v,O as y,Qn as b,Rn as x,Un as S,Vn as C,Wn as w,k as T,zn as E}from"./index-yu6nDHvG.js";import{t as D}from"./detail-card-xKZlkbz5.js";var O=e(i(),1),k=s(),A=`vellum:voice:conversationTimeoutSeconds`,j=[{label:`Ctrl`,activator:{kind:`modifierOnly`,modifiers:[`control`]}},{label:`Alt`,activator:{kind:`modifierOnly`,modifiers:[`option`]}},{label:`Ctrl+Shift`,activator:{kind:`modifierOnly`,modifiers:[`control`,`shift`]}}],M={label:`Fn`,activator:E},N=[{label:`5 seconds`,value:`5`},{label:`10 seconds`,value:`10`},{label:`15 seconds`,value:`15`},{label:`30 seconds`,value:`30`},{label:`60 seconds`,value:`60`}],P=`30`,F=`text-body-small-default text-[var(--content-tertiary)]`;function I(){return(0,k.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,k.jsx)(R,{}),(0,k.jsx)(B,{}),(0,k.jsx)(V,{}),(0,k.jsx)(U,{}),(0,k.jsx)(L,{})]})}function L(){return(0,k.jsx)(D,{title:`Transcription`,subtitle:`Show live text of what you and the assistant say during a voice conversation.`,children:(0,k.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,k.jsx)(y,{showDescription:!0}),(0,k.jsx)(`p`,{className:`${F} pt-1`,children:T})]})})}function R(){return(0,k.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-[var(--border-subtle)] bg-[var(--field-bg)] px-3 py-2`,children:[(0,k.jsx)(l,{className:`h-3.5 w-3.5 shrink-0 text-[var(--primary-base)]`}),(0,k.jsx)(`span`,{className:`text-body-medium-lighter text-[var(--content-tertiary)]`,children:`Looking to configure Speech-to-Text or Text-to-Speech models?`}),(0,k.jsxs)(o,{to:f.settings.ai,className:`inline-flex items-center gap-1 text-body-medium-lighter text-[var(--system-positive-strong)] underline hover:opacity-80`,children:[`Go to Models & Services`,(0,k.jsx)(c,{className:`h-3 w-3`})]})]})}var z=``;function B(){let[e,n]=(0,O.useState)([]),[i,o]=(0,O.useState)(!1),[s,c]=(0,O.useState)(()=>p()),l=(0,O.useCallback)(async()=>{if(navigator.mediaDevices?.enumerateDevices)try{let e=(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`);o(e.length>0&&e.every(e=>!e.label)),n(e.filter(e=>e.deviceId!==``&&e.deviceId!==`default`&&e.deviceId!==`communications`))}catch{n([]),o(!1)}},[]),u=(0,O.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});for(let t of e.getTracks())t.stop()}catch{}l()},[l]);(0,O.useEffect)(()=>{l();let e=navigator.mediaDevices;if(!e?.addEventListener)return;let t=()=>void l();return e.addEventListener(`devicechange`,t),()=>e.removeEventListener(`devicechange`,t)},[l]);let f=(0,O.useMemo)(()=>[{value:z,label:`System Default`},...e.map((e,t)=>({value:e.deviceId,label:e.label||`Microphone ${t+1}`}))],[e]),m=(0,O.useCallback)(e=>{c(e),e===z?t(b):r(b,e)},[]);return(0,k.jsx)(D,{title:`Microphone`,subtitle:`Which input device is used for dictation and voice conversations.`,children:(0,k.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,k.jsx)(`div`,{className:`max-w-xs`,children:(0,k.jsx)(d,{options:f,value:f.some(e=>e.value===s)?s:z,onChange:m,"aria-label":`Microphone`})}),i&&(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,k.jsx)(a,{variant:`outlined`,onClick:u,children:`Allow Microphone Access`}),(0,k.jsx)(`span`,{className:F,children:`Grant microphone access to list your available input devices.`})]})]})})}function V(){let e=v(),[t,i]=(0,O.useState)(()=>{let t=n(m,``);return t?w(t,{preserveFunction:e}):e?M.activator:{kind:`off`}}),[a,o]=(0,O.useState)(!1),[s,c]=(0,O.useState)([]),d=(0,O.useRef)(null),f=(0,O.useRef)(!1),p=(0,O.useMemo)(()=>e?[M,...j]:j,[e]),y=t.kind!==`off`,b=y&&!e,T=(0,O.useCallback)(e=>{i(e),r(m,h(e)),o(!1),c([])},[]),A=(0,O.useCallback)(()=>{o(!0),c([]),f.current=!1,requestAnimationFrame(()=>{d.current?.focus()})},[]),N=(0,O.useCallback)(()=>{o(!1),c([]),f.current=!1},[]),P=(0,O.useCallback)(t=>{let n=[];return e&&t.getModifierState(`Fn`)&&n.push(`function`),t.ctrlKey&&n.push(`control`),t.altKey&&n.push(`option`),t.shiftKey&&n.push(`shift`),t.metaKey&&n.push(`command`),n},[e]),I=(0,O.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`){N();return}let t=P(e),n=e.key;if(n===`Control`||n===`Alt`||n===`Shift`||n===`Meta`||n===`Fn`){c(t.includes(`function`)?E.modifiers:_(t));return}if(t.includes(`function`)){T(E);return}f.current=!0,T({kind:`key`,label:n.length===1?n.toUpperCase():n,modifiers:t})},[N,P,T]),L=(0,O.useCallback)(e=>{if(!a)return;e.preventDefault(),e.stopPropagation();let t=e.key;if(t===`Control`||t===`Alt`||t===`Shift`||t===`Meta`||t===`Fn`){if(f.current){f.current=!1,c([]);return}P(e).length===0&&s.length>0&&T({kind:`modifierOnly`,modifiers:s})}},[P,a,s,T]);(0,O.useEffect)(()=>{if(!a)return;let e=e=>{d.current&&!d.current.contains(e.target)&&N()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[N,a]);let R=y&&!p.some(e=>g(e.activator,t));return(0,k.jsx)(D,{title:`Push to Talk`,subtitle:`Hold the activation key to dictate text or start a voice conversation.`,children:(0,k.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,k.jsx)(u,{checked:y,onChange:n=>{n?t.kind===`off`&&T(e?M.activator:x):T({kind:`off`})},label:`Enable Push to Talk`}),y&&(0,k.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,k.jsx)(`span`,{className:F,children:`Activation Key:`}),(0,k.jsxs)(`div`,{ref:d,tabIndex:a?0:-1,onKeyDown:a?I:void 0,onKeyUp:a?L:void 0,className:`flex flex-wrap items-center gap-2 focus:outline-none`,children:[p.map(e=>{let n=g(e.activator,t);return(0,k.jsx)(H,{label:e.label,selected:n,onClick:()=>T(e.activator)},e.label)}),a?(0,k.jsx)(H,{label:s.length>0?S(s):`Press any key…`,selected:!0,recording:!0,onClick:N}):(0,k.jsx)(H,{label:R?C(t):`Custom`,selected:R,onClick:A})]}),b&&(0,k.jsxs)(`div`,{className:`flex items-start gap-1 pt-1 text-body-small-default text-[var(--content-quiet)]`,children:[(0,k.jsx)(l,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,k.jsx)(`span`,{children:`Push-to-Talk only works while this tab is focused, and browsers may intercept some shortcuts (e.g. Ctrl+T) before the page can see them. For always-on PTT, use the Vellum desktop app.`})]})]})]})})}function H({label:e,selected:t,recording:n=!1,onClick:r}){return(0,k.jsxs)(`button`,{type:`button`,onClick:r,className:[`inline-flex items-center gap-2 rounded-lg border px-3 py-1.5 text-body-medium-lighter transition-colors`,`border-[var(--border-subtle)]`,t?`bg-[var(--surface-active)]`:`bg-[var(--surface-lift)] hover:bg-[var(--surface-hover)]`,n?`animate-pulse`:``].filter(Boolean).join(` `),children:[(0,k.jsx)(`span`,{className:[`inline-block h-2.5 w-2.5 rounded-full border`,t?`border-[var(--primary-base)] bg-[var(--primary-base)]`:`border-[var(--border-element)]`].join(` `)}),(0,k.jsx)(`span`,{className:`text-[var(--content-default)]`,children:e})]})}function U(){let[e,t]=(0,O.useState)(()=>{let e=n(A,P);return N.find(t=>t.value===e)?.value??P});return(0,k.jsx)(D,{title:`Conversation Timeout`,subtitle:`How long the assistant waits for you to start speaking before ending a voice conversation turn.`,children:(0,k.jsx)(`div`,{className:`max-w-xs`,children:(0,k.jsx)(d,{options:N,value:e,onChange:(0,O.useCallback)(e=>{t(e),r(A,e)},[]),"aria-label":`Conversation timeout`})})})}export{I as VoicePage};
|
package/dist/assets/{weather-forecast-display-C_3DSHxa.js → weather-forecast-display-Bix8rpji.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{t as r}from"./moon-B8qiwjrW.js";import{t as i}from"./misc-BYQPh7vS.js";import{G as a,J as o,K as s,_a as c,ba as l,ga as u,ma as d,mi as f,q as p,va as m,wi as h,xa as g,xi as _,ya as v}from"./index-CSefSVJO.js";var y=e(t(),1),b={"sun.max.fill":{icon:_,className:`text-orange-500`},"cloud.sun.fill":{icon:c,className:`text-amber-400`},"moon.fill":{icon:r,className:`text-blue-400`},"cloud.moon.fill":{icon:v,className:`text-blue-400`},"cloud.fill":{icon:u,className:`text-stone-400`},"cloud.rain.fill":{icon:m,className:`text-blue-400`},snowflake:{icon:h,className:`text-blue-300`},"cloud.bolt.fill":{icon:l,className:`text-orange-500`},"cloud.fog.fill":{icon:g,className:`text-stone-400`}},x={sunny:{icon:_,className:`text-orange-500`},clear:{icon:_,className:`text-orange-500`},"partly cloudy":{icon:c,className:`text-amber-400`},"mostly sunny":{icon:c,className:`text-amber-400`},cloudy:{icon:u,className:`text-stone-400`},overcast:{icon:u,className:`text-stone-400`},rainy:{icon:m,className:`text-blue-400`},rain:{icon:m,className:`text-blue-400`},drizzle:{icon:m,className:`text-blue-400`},snow:{icon:h,className:`text-blue-300`},snowy:{icon:h,className:`text-blue-300`},thunderstorm:{icon:l,className:`text-orange-500`},thunder:{icon:l,className:`text-orange-500`},foggy:{icon:g,className:`text-stone-400`},fog:{icon:g,className:`text-stone-400`},mist:{icon:g,className:`text-stone-400`},hazy:{icon:g,className:`text-stone-400`},night:{icon:r,className:`text-blue-400`},"mainly clear":{icon:_,className:`text-orange-500`},"mostly cloudy":{icon:u,className:`text-stone-400`},breezy:{icon:f,className:`text-stone-400`},windy:{icon:f,className:`text-stone-400`},cool:{icon:u,className:`text-stone-400`},warm:{icon:_,className:`text-orange-500`},hot:{icon:_,className:`text-orange-500`},cold:{icon:h,className:`text-blue-300`},"cold snap":{icon:h,className:`text-blue-300`},"warm, mostly sunny":{icon:c,className:`text-amber-400`},"cooler, breezy":{icon:f,className:`text-stone-400`}},S={icon:u,className:`text-stone-400`};function C(e){let t=b[e];if(t)return t;let n=e.toLowerCase(),r=x[n];if(r)return r;for(let[e,t]of Object.entries(x))if(n.includes(e))return t;return S}function w(e){if(typeof e==`string`){let t=e.match(/^(\d+)\s*mph\s*(.*)/i);if(t)return{speed:Number(t[1]),direction:t[2]?.trim()||void 0}}return{}}function T(e){let t;if(typeof e.location==`string`)t=e.location;else{let n=p(e.location);n&&typeof n.name==`string`&&(t=n.name)}if(!t)return null;let n=p(e.current),r=s(n?.temp)??s(e.currentTemp)??s(e.temperature)??s(e.temp),i=s(n?.feelsLike)??s(n?.feels_like)??s(n?.apparentTemperature)??s(e.feelsLike)??s(e.feels_like)??s(e.apparentTemperature),c=o(n?.condition)??o(e.condition),l=s(n?.humidity)??s(e.humidity),u=w(n?.wind??e.wind),d=s(n?.windSpeed)??s(n?.wind_speed)??s(e.windSpeed)??s(e.wind_speed)??u.speed,f=o(n?.windDirection)??o(n?.wind_direction)??o(e.windDirection)??o(e.wind_direction)??u.direction,m=p(e.units),h=o(m?.temperature)??o(n?.unit)??o(e.unit)??`F`,g=o(m?.speed)??o(e.windUnit)??o(e.wind_unit),_=a(e.hourly).map((e,t)=>({id:o(e.id)??String(t),time:o(e.time)??``,icon:o(e.icon)??o(e.condition)??`cloud.fill`,temp:s(e.tempC)??s(e.temp)??s(e.temperature),tempC:s(e.tempC)})),v=a([e.forecast,e.daily,e.days].find(Array.isArray)).map((e,t)=>({id:o(e.id)??String(t),day:o(e.day)??o(e.date),dayLabel:o(e.dayLabel)??o(e.date),icon:o(e.icon)??o(e.condition)??`cloud.fill`,low:s(e.low),high:s(e.high),lowC:s(e.lowC),highC:s(e.highC),precip:s(e.precip)??s(e.precipitation)??s(e.precipitationProbability),condition:o(e.condition)}));return{location:t,currentTemp:r,feelsLike:i,condition:c,humidity:l,windSpeed:d,windDirection:f,windUnit:g,unit:h,hourly:_.length>0?_:void 0,forecast:v.length>0?v:void 0}}function E(e){return e*9/5+32}function D(e){return(e-32)*5/9}function O(e,t,n){if(e===void 0)return null;let r=e;return t&&!n&&(r=D(e)),!t&&n&&(r=E(e)),`${Math.round(r)}`}function k(e,t,n){return e.tempC===void 0?e.temp===void 0?null:O(e.temp,t,n):O(e.tempC,!1,n)}function A(e,t,n){return e.lowC===void 0?O(e.low,t,n):O(e.lowC,!1,n)}function j(e,t,n){return e.highC===void 0?O(e.high,t,n):O(e.highC,!1,n)}var M=n();function N({icon:e,size:t=20}){let{icon:n,className:r}=C(e);return(0,M.jsx)(n,{width:t,height:t,className:r})}function P({useFahrenheit:e,onToggle:t}){return(0,M.jsxs)(`div`,{className:`flex overflow-hidden rounded-md border border-[var(--border-element)]`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:()=>t(!0),className:i(`px-2 py-0.5 text-body-small-default transition-colors`,e?`bg-[var(--primary-base)] text-[var(--content-inset)]`:`bg-transparent text-[var(--content-quiet)]`),children:`°F`}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>t(!1),className:i(`px-2 py-0.5 text-body-small-default transition-colors`,e?`bg-transparent text-[var(--content-quiet)]`:`bg-[var(--primary-base)] text-[var(--content-inset)]`),children:`°C`})]})}function F({data:e,sourceIsFahrenheit:t,useFahrenheit:n,onToggle:r}){let i=e.location,a=O(e.currentTemp,t,n),o=O(e.feelsLike,t,n),s=n?`F`:`C`,c=e.forecast?.[0],l=c?j(c,t,n):null,u=c?A(c,t,n):null,p=null;return e.windSpeed!==void 0&&(p=`${Math.round(e.windSpeed)} ${e.windUnit??`mph`}`,e.windDirection&&(p=`${e.windDirection} ${p}`)),(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:i}),a!==null&&(0,M.jsxs)(`div`,{className:`mt-1 text-4xl font-light text-[var(--content-default)]`,children:[a,`°`,s]}),e.condition&&(0,M.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-quiet)]`,children:e.condition})]}),(0,M.jsx)(P,{useFahrenheit:n,onToggle:r})]}),(0,M.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3`,children:[o!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`Feels like `,o,`°`]}),l!==null&&u!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`H:`,l,`° L:`,u,`°`]}),p&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,M.jsx)(f,{width:12,height:12}),p]}),e.humidity!==void 0&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,M.jsx)(d,{width:12,height:12}),e.humidity,`%`]})]})]})}function I({hourly:e,sourceIsFahrenheit:t,useFahrenheit:n}){return(0,M.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,M.jsx)(`div`,{className:`flex gap-3 overflow-x-auto`,children:e.map((e,r)=>{let i=e.time.toLowerCase()===`now`,a=k(e,t,n);return(0,M.jsxs)(`div`,{className:`flex min-w-[3rem] shrink-0 flex-col items-center gap-1`,children:[(0,M.jsx)(`span`,{className:i?`text-body-small-emphasised text-[var(--content-default)]`:`text-label-medium-default text-[var(--content-quiet)]`,children:i?`Now`:e.time}),(0,M.jsx)(N,{icon:e.icon,size:18}),a!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-default)]`,children:[a,`°`]})]},e.id??r)})})})}function L({forecast:e,currentTemp:t,sourceIsFahrenheit:n,useFahrenheit:r}){let{globalMin:a,globalMax:o}=(0,y.useMemo)(()=>{let t=1/0,n=-1/0;for(let r of e){let e=r.lowC??r.low,i=r.highC??r.high;e!==void 0&&e<t&&(t=e),i!==void 0&&i>n&&(n=i)}return{globalMin:t===1/0?0:t,globalMax:n===-1/0?100:n}},[e]),s=o-a||1;return(0,M.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,M.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map((e,c)=>{let l=e.dayLabel??e.day??`Day ${c+1}`,u=l.toLowerCase()===`today`,d=A(e,n,r),f=j(e,n,r),p=e.precip,m=e.lowC??e.low??a,h=e.highC??e.high??o,g=(m-a)/s*100,_=(h-a)/s*100,v=Math.max(_-g,2),y=null;if(u&&t!==void 0){let r=(e.lowC!==void 0||e.highC!==void 0)&&n?(t-32)*5/9:t;y=h===m?50:(Math.max(m,Math.min(h,r))-m)/(h-m)*100}return(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`span`,{className:i(`w-12 shrink-0 truncate text-body-small-default`,u?`text-[var(--content-default)]`:`text-[var(--content-quiet)]`),children:l}),(0,M.jsxs)(`div`,{className:`flex w-10 shrink-0 items-center justify-center gap-0.5`,children:[(0,M.jsx)(N,{icon:e.icon,size:16}),p!==void 0&&p>0&&(0,M.jsxs)(`span`,{className:`text-label-small-default text-blue-400`,children:[Math.round(p),`%`]})]}),(0,M.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-faint)]`,children:d===null?`--`:`${d}°`}),(0,M.jsxs)(`div`,{className:`relative h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--border-subtle)]`,children:[(0,M.jsx)(`div`,{className:`absolute top-0 h-full rounded-full bg-[var(--primary-base)]`,style:{left:`${g}%`,width:`${v}%`}}),y!==null&&(0,M.jsx)(`div`,{className:`absolute top-1/2 h-2.5 w-2.5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-[var(--aux-white)] bg-[var(--aux-white)] shadow-sm`,style:{left:`${g+y/100*v}%`}})]}),(0,M.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-default)]`,children:f===null?`--`:`${f}°`})]},e.id??c)})})})}function R({templateData:e,fallback:t}){let n=(0,y.useMemo)(()=>T(e),[e]),r=n?.unit?.toUpperCase()===`F`||n?.unit?.toLowerCase()===`fahrenheit`,[i,a]=(0,y.useState)(null),o=i??r;return!n||n.currentTemp===void 0&&!n.forecast?.length?t??null:(0,M.jsxs)(`div`,{className:`mt-3`,children:[(0,M.jsx)(F,{data:n,sourceIsFahrenheit:r,useFahrenheit:o,onToggle:a}),n.hourly&&n.hourly.length>0&&(0,M.jsx)(I,{hourly:n.hourly,sourceIsFahrenheit:r,useFahrenheit:o}),n.forecast&&n.forecast.length>0&&(0,M.jsx)(L,{forecast:n.forecast,currentTemp:n.currentTemp,sourceIsFahrenheit:r,useFahrenheit:o})]})}export{R as WeatherForecastDisplay};
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{t as r}from"./moon-B8qiwjrW.js";import{t as i}from"./misc-BYQPh7vS.js";import{Ci as a,G as o,J as s,K as c,_a as l,ba as u,bi as d,ga as f,ha as p,pa as m,pi as h,q as g,va as _,ya as v}from"./index-yu6nDHvG.js";var y=e(t(),1),b={"sun.max.fill":{icon:d,className:`text-orange-500`},"cloud.sun.fill":{icon:f,className:`text-amber-400`},"moon.fill":{icon:r,className:`text-blue-400`},"cloud.moon.fill":{icon:_,className:`text-blue-400`},"cloud.fill":{icon:p,className:`text-stone-400`},"cloud.rain.fill":{icon:l,className:`text-blue-400`},snowflake:{icon:a,className:`text-blue-300`},"cloud.bolt.fill":{icon:v,className:`text-orange-500`},"cloud.fog.fill":{icon:u,className:`text-stone-400`}},x={sunny:{icon:d,className:`text-orange-500`},clear:{icon:d,className:`text-orange-500`},"partly cloudy":{icon:f,className:`text-amber-400`},"mostly sunny":{icon:f,className:`text-amber-400`},cloudy:{icon:p,className:`text-stone-400`},overcast:{icon:p,className:`text-stone-400`},rainy:{icon:l,className:`text-blue-400`},rain:{icon:l,className:`text-blue-400`},drizzle:{icon:l,className:`text-blue-400`},snow:{icon:a,className:`text-blue-300`},snowy:{icon:a,className:`text-blue-300`},thunderstorm:{icon:v,className:`text-orange-500`},thunder:{icon:v,className:`text-orange-500`},foggy:{icon:u,className:`text-stone-400`},fog:{icon:u,className:`text-stone-400`},mist:{icon:u,className:`text-stone-400`},hazy:{icon:u,className:`text-stone-400`},night:{icon:r,className:`text-blue-400`},"mainly clear":{icon:d,className:`text-orange-500`},"mostly cloudy":{icon:p,className:`text-stone-400`},breezy:{icon:h,className:`text-stone-400`},windy:{icon:h,className:`text-stone-400`},cool:{icon:p,className:`text-stone-400`},warm:{icon:d,className:`text-orange-500`},hot:{icon:d,className:`text-orange-500`},cold:{icon:a,className:`text-blue-300`},"cold snap":{icon:a,className:`text-blue-300`},"warm, mostly sunny":{icon:f,className:`text-amber-400`},"cooler, breezy":{icon:h,className:`text-stone-400`}},S={icon:p,className:`text-stone-400`};function C(e){let t=b[e];if(t)return t;let n=e.toLowerCase(),r=x[n];if(r)return r;for(let[e,t]of Object.entries(x))if(n.includes(e))return t;return S}function w(e){if(typeof e==`string`){let t=e.match(/^(\d+)\s*mph\s*(.*)/i);if(t)return{speed:Number(t[1]),direction:t[2]?.trim()||void 0}}return{}}function T(e){let t;if(typeof e.location==`string`)t=e.location;else{let n=g(e.location);n&&typeof n.name==`string`&&(t=n.name)}if(!t)return null;let n=g(e.current),r=c(n?.temp)??c(e.currentTemp)??c(e.temperature)??c(e.temp),i=c(n?.feelsLike)??c(n?.feels_like)??c(n?.apparentTemperature)??c(e.feelsLike)??c(e.feels_like)??c(e.apparentTemperature),a=s(n?.condition)??s(e.condition),l=c(n?.humidity)??c(e.humidity),u=w(n?.wind??e.wind),d=c(n?.windSpeed)??c(n?.wind_speed)??c(e.windSpeed)??c(e.wind_speed)??u.speed,f=s(n?.windDirection)??s(n?.wind_direction)??s(e.windDirection)??s(e.wind_direction)??u.direction,p=g(e.units),m=s(p?.temperature)??s(n?.unit)??s(e.unit)??`F`,h=s(p?.speed)??s(e.windUnit)??s(e.wind_unit),_=o(e.hourly).map((e,t)=>({id:s(e.id)??String(t),time:s(e.time)??``,icon:s(e.icon)??s(e.condition)??`cloud.fill`,temp:c(e.tempC)??c(e.temp)??c(e.temperature),tempC:c(e.tempC)})),v=o([e.forecast,e.daily,e.days].find(Array.isArray)).map((e,t)=>({id:s(e.id)??String(t),day:s(e.day)??s(e.date),dayLabel:s(e.dayLabel)??s(e.date),icon:s(e.icon)??s(e.condition)??`cloud.fill`,low:c(e.low),high:c(e.high),lowC:c(e.lowC),highC:c(e.highC),precip:c(e.precip)??c(e.precipitation)??c(e.precipitationProbability),condition:s(e.condition)}));return{location:t,currentTemp:r,feelsLike:i,condition:a,humidity:l,windSpeed:d,windDirection:f,windUnit:h,unit:m,hourly:_.length>0?_:void 0,forecast:v.length>0?v:void 0}}function E(e){return e*9/5+32}function D(e){return(e-32)*5/9}function O(e,t,n){if(e===void 0)return null;let r=e;return t&&!n&&(r=D(e)),!t&&n&&(r=E(e)),`${Math.round(r)}`}function k(e,t,n){return e.tempC===void 0?e.temp===void 0?null:O(e.temp,t,n):O(e.tempC,!1,n)}function A(e,t,n){return e.lowC===void 0?O(e.low,t,n):O(e.lowC,!1,n)}function j(e,t,n){return e.highC===void 0?O(e.high,t,n):O(e.highC,!1,n)}var M=n();function N({icon:e,size:t=20}){let{icon:n,className:r}=C(e);return(0,M.jsx)(n,{width:t,height:t,className:r})}function P({useFahrenheit:e,onToggle:t}){return(0,M.jsxs)(`div`,{className:`flex overflow-hidden rounded-md border border-[var(--border-element)]`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:()=>t(!0),className:i(`px-2 py-0.5 text-body-small-default transition-colors`,e?`bg-[var(--primary-base)] text-[var(--content-inset)]`:`bg-transparent text-[var(--content-quiet)]`),children:`°F`}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>t(!1),className:i(`px-2 py-0.5 text-body-small-default transition-colors`,e?`bg-transparent text-[var(--content-quiet)]`:`bg-[var(--primary-base)] text-[var(--content-inset)]`),children:`°C`})]})}function F({data:e,sourceIsFahrenheit:t,useFahrenheit:n,onToggle:r}){let i=e.location,a=O(e.currentTemp,t,n),o=O(e.feelsLike,t,n),s=n?`F`:`C`,c=e.forecast?.[0],l=c?j(c,t,n):null,u=c?A(c,t,n):null,d=null;return e.windSpeed!==void 0&&(d=`${Math.round(e.windSpeed)} ${e.windUnit??`mph`}`,e.windDirection&&(d=`${e.windDirection} ${d}`)),(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`text-body-medium-default text-[var(--content-tertiary)]`,children:i}),a!==null&&(0,M.jsxs)(`div`,{className:`mt-1 text-4xl font-light text-[var(--content-default)]`,children:[a,`°`,s]}),e.condition&&(0,M.jsx)(`div`,{className:`mt-0.5 text-body-small-default text-[var(--content-quiet)]`,children:e.condition})]}),(0,M.jsx)(P,{useFahrenheit:n,onToggle:r})]}),(0,M.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3`,children:[o!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`Feels like `,o,`°`]}),l!==null&&u!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-quiet)]`,children:[`H:`,l,`° L:`,u,`°`]}),d&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,M.jsx)(h,{width:12,height:12}),d]}),e.humidity!==void 0&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-[var(--tag-bg-neutral)] px-2 py-0.5 text-label-medium-default text-[var(--content-tertiary)]`,children:[(0,M.jsx)(m,{width:12,height:12}),e.humidity,`%`]})]})]})}function I({hourly:e,sourceIsFahrenheit:t,useFahrenheit:n}){return(0,M.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,M.jsx)(`div`,{className:`flex gap-3 overflow-x-auto`,children:e.map((e,r)=>{let i=e.time.toLowerCase()===`now`,a=k(e,t,n);return(0,M.jsxs)(`div`,{className:`flex min-w-[3rem] shrink-0 flex-col items-center gap-1`,children:[(0,M.jsx)(`span`,{className:i?`text-body-small-emphasised text-[var(--content-default)]`:`text-label-medium-default text-[var(--content-quiet)]`,children:i?`Now`:e.time}),(0,M.jsx)(N,{icon:e.icon,size:18}),a!==null&&(0,M.jsxs)(`span`,{className:`text-body-small-default text-[var(--content-default)]`,children:[a,`°`]})]},e.id??r)})})})}function L({forecast:e,currentTemp:t,sourceIsFahrenheit:n,useFahrenheit:r}){let{globalMin:a,globalMax:o}=(0,y.useMemo)(()=>{let t=1/0,n=-1/0;for(let r of e){let e=r.lowC??r.low,i=r.highC??r.high;e!==void 0&&e<t&&(t=e),i!==void 0&&i>n&&(n=i)}return{globalMin:t===1/0?0:t,globalMax:n===-1/0?100:n}},[e]),s=o-a||1;return(0,M.jsx)(`div`,{className:`mt-3 border-t border-[var(--border-element)] pt-3`,children:(0,M.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map((e,c)=>{let l=e.dayLabel??e.day??`Day ${c+1}`,u=l.toLowerCase()===`today`,d=A(e,n,r),f=j(e,n,r),p=e.precip,m=e.lowC??e.low??a,h=e.highC??e.high??o,g=(m-a)/s*100,_=(h-a)/s*100,v=Math.max(_-g,2),y=null;if(u&&t!==void 0){let r=(e.lowC!==void 0||e.highC!==void 0)&&n?(t-32)*5/9:t;y=h===m?50:(Math.max(m,Math.min(h,r))-m)/(h-m)*100}return(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`span`,{className:i(`w-12 shrink-0 truncate text-body-small-default`,u?`text-[var(--content-default)]`:`text-[var(--content-quiet)]`),children:l}),(0,M.jsxs)(`div`,{className:`flex w-10 shrink-0 items-center justify-center gap-0.5`,children:[(0,M.jsx)(N,{icon:e.icon,size:16}),p!==void 0&&p>0&&(0,M.jsxs)(`span`,{className:`text-label-small-default text-blue-400`,children:[Math.round(p),`%`]})]}),(0,M.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-faint)]`,children:d===null?`--`:`${d}°`}),(0,M.jsxs)(`div`,{className:`relative h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--border-subtle)]`,children:[(0,M.jsx)(`div`,{className:`absolute top-0 h-full rounded-full bg-[var(--primary-base)]`,style:{left:`${g}%`,width:`${v}%`}}),y!==null&&(0,M.jsx)(`div`,{className:`absolute top-1/2 h-2.5 w-2.5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-[var(--aux-white)] bg-[var(--aux-white)] shadow-sm`,style:{left:`${g+y/100*v}%`}})]}),(0,M.jsx)(`span`,{className:`w-7 shrink-0 text-right text-body-small-default text-[var(--content-default)]`,children:f===null?`--`:`${f}°`})]},e.id??c)})})})}function R({templateData:e,fallback:t}){let n=(0,y.useMemo)(()=>T(e),[e]),r=n?.unit?.toUpperCase()===`F`||n?.unit?.toLowerCase()===`fahrenheit`,[i,a]=(0,y.useState)(null),o=i??r;return!n||n.currentTemp===void 0&&!n.forecast?.length?t??null:(0,M.jsxs)(`div`,{className:`mt-3`,children:[(0,M.jsx)(F,{data:n,sourceIsFahrenheit:r,useFahrenheit:o,onToggle:a}),n.hourly&&n.hourly.length>0&&(0,M.jsx)(I,{hourly:n.hourly,sourceIsFahrenheit:r,useFahrenheit:o}),n.forecast&&n.forecast.length>0&&(0,M.jsx)(L,{forecast:n.forecast,currentTemp:n.currentTemp,sourceIsFahrenheit:r,useFahrenheit:o})]})}export{R as WeatherForecastDisplay};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t}from"./dist-DS5iJwBJ2.js";import{n}from"./definitions-
|
|
1
|
+
import{n as e,r as t}from"./dist-DS5iJwBJ2.js";import{n}from"./definitions-CaYcW4Yq.js";function r(e){let t=e.split(`/`).filter(e=>e!==`.`),n=[];return t.forEach(e=>{e===`..`&&n.length>0&&n[n.length-1]!==`..`?n.pop():n.push(e)}),n.join(`/`)}function i(e,t){e=r(e),t=r(t);let n=e.split(`/`),i=t.split(`/`);return e!==t&&n.every((e,t)=>e===i[t])}var a=class r extends e{constructor(){super(...arguments),this.DB_VERSION=1,this.DB_NAME=`Disc`,this._writeCmds=[`add`,`put`,`delete`],this.downloadFile=async e=>{let n=t(e,e.webFetchExtra),r=await fetch(e.url,n),i;if(!e.progress)i=await r.blob();else if(!r?.body)i=new Blob;else{let t=r.body.getReader(),n=0,a=[],o=r.headers.get(`content-type`),s=parseInt(r.headers.get(`content-length`)||`0`,10);for(;;){let{done:r,value:i}=await t.read();if(r)break;a.push(i),n+=i?.length||0;let o={url:e.url,bytes:n,contentLength:s};this.notifyListeners(`progress`,o)}let c=new Uint8Array(n),l=0;for(let e of a)e!==void 0&&(c.set(e,l),l+=e.length);i=new Blob([c.buffer],{type:o||void 0})}return{path:(await this.writeFile({path:e.path,directory:e.directory??void 0,recursive:e.recursive??!1,data:i})).uri,blob:i}}}readFileInChunks(e,t){throw this.unavailable(`Method not implemented.`)}async initDb(){if(this._db!==void 0)return this._db;if(!(`indexedDB`in window))throw this.unavailable(`This browser doesn't support IndexedDB`);return new Promise((e,t)=>{let n=indexedDB.open(this.DB_NAME,this.DB_VERSION);n.onupgradeneeded=r.doUpgrade,n.onsuccess=()=>{this._db=n.result,e(n.result)},n.onerror=()=>t(n.error),n.onblocked=()=>{console.warn(`db blocked`)}})}static doUpgrade(e){let t=e.target.result;switch(e.oldVersion){default:t.objectStoreNames.contains(`FileStorage`)&&t.deleteObjectStore(`FileStorage`),t.createObjectStore(`FileStorage`,{keyPath:`path`}).createIndex(`by_folder`,`folder`)}}async dbRequest(e,t){let n=this._writeCmds.indexOf(e)===-1?`readonly`:`readwrite`;return this.initDb().then(r=>new Promise((i,a)=>{let o=r.transaction([`FileStorage`],n).objectStore(`FileStorage`)[e](...t);o.onsuccess=()=>i(o.result),o.onerror=()=>a(o.error)}))}async dbIndexRequest(e,t,n){let r=this._writeCmds.indexOf(t)===-1?`readonly`:`readwrite`;return this.initDb().then(i=>new Promise((a,o)=>{let s=i.transaction([`FileStorage`],r).objectStore(`FileStorage`).index(e)[t](...n);s.onsuccess=()=>a(s.result),s.onerror=()=>o(s.error)}))}getPath(e,t){let n=t===void 0?``:t.replace(/^[/]+|[/]+$/g,``),r=``;return e!==void 0&&(r+=`/`+e),t!==``&&(r+=`/`+n),r}async clear(){(await this.initDb()).transaction([`FileStorage`],`readwrite`).objectStore(`FileStorage`).clear()}async readFile(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(n===void 0)throw Error(`File does not exist.`);return{data:n.content?n.content:``}}async writeFile(e){let t=this.getPath(e.directory,e.path),n=e.data,r=e.encoding,i=e.recursive,a=await this.dbRequest(`get`,[t]);if(a&&a.type===`directory`)throw Error(`The supplied path is a directory.`);let o=t.substr(0,t.lastIndexOf(`/`));if(await this.dbRequest(`get`,[o])===void 0){let t=o.indexOf(`/`,1);if(t!==-1){let n=o.substr(t);await this.mkdir({path:n,directory:e.directory,recursive:i})}}if(!r&&!(n instanceof Blob)&&(n=n.indexOf(`,`)>=0?n.split(`,`)[1]:n,!this.isBase64String(n)))throw Error(`The supplied data is not valid base64 content.`);let s=Date.now(),c={path:t,folder:o,type:`file`,size:n instanceof Blob?n.size:n.length,ctime:s,mtime:s,content:n};return await this.dbRequest(`put`,[c]),{uri:c.path}}async appendFile(e){let t=this.getPath(e.directory,e.path),n=e.data,r=e.encoding,i=t.substr(0,t.lastIndexOf(`/`)),a=Date.now(),o=a,s=await this.dbRequest(`get`,[t]);if(s&&s.type===`directory`)throw Error(`The supplied path is a directory.`);if(await this.dbRequest(`get`,[i])===void 0){let t=i.indexOf(`/`,1);if(t!==-1){let n=i.substr(t);await this.mkdir({path:n,directory:e.directory,recursive:!0})}}if(!r&&!this.isBase64String(n))throw Error(`The supplied data is not valid base64 content.`);if(s!==void 0){if(s.content instanceof Blob)throw Error(`The occupied entry contains a Blob object which cannot be appended to.`);n=s.content!==void 0&&!r?btoa(atob(s.content)+atob(n)):s.content+n,o=s.ctime}let c={path:t,folder:i,type:`file`,size:n.length,ctime:o,mtime:a,content:n};await this.dbRequest(`put`,[c])}async deleteFile(e){let t=this.getPath(e.directory,e.path);if(await this.dbRequest(`get`,[t])===void 0)throw Error(`File does not exist.`);if((await this.dbIndexRequest(`by_folder`,`getAllKeys`,[IDBKeyRange.only(t)])).length!==0)throw Error(`Folder is not empty.`);await this.dbRequest(`delete`,[t])}async mkdir(e){let t=this.getPath(e.directory,e.path),n=e.recursive,r=t.substr(0,t.lastIndexOf(`/`)),i=(t.match(/\//g)||[]).length,a=await this.dbRequest(`get`,[r]),o=await this.dbRequest(`get`,[t]);if(i===1)throw Error(`Cannot create Root directory`);if(o!==void 0)throw Error(`Current directory does already exist.`);if(!n&&i!==2&&a===void 0)throw Error(`Parent directory must exist`);if(n&&i!==2&&a===void 0){let t=r.substr(r.indexOf(`/`,1));await this.mkdir({path:t,directory:e.directory,recursive:n})}let s=Date.now(),c={path:t,folder:r,type:`directory`,size:0,ctime:s,mtime:s};await this.dbRequest(`put`,[c])}async rmdir(e){let{path:t,directory:n,recursive:r}=e,i=this.getPath(n,t),a=await this.dbRequest(`get`,[i]);if(a===void 0)throw Error(`Folder does not exist.`);if(a.type!==`directory`)throw Error(`Requested path is not a directory`);let o=await this.readdir({path:t,directory:n});if(o.files.length!==0&&!r)throw Error(`Folder is not empty`);for(let e of o.files){let i=`${t}/${e.name}`;(await this.stat({path:i,directory:n})).type===`file`?await this.deleteFile({path:i,directory:n}):await this.rmdir({path:i,directory:n,recursive:r})}await this.dbRequest(`delete`,[i])}async readdir(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(e.path!==``&&n===void 0)throw Error(`Folder does not exist.`);let r=await this.dbIndexRequest(`by_folder`,`getAllKeys`,[IDBKeyRange.only(t)]);return{files:await Promise.all(r.map(async e=>{let n=await this.dbRequest(`get`,[e]);return n===void 0&&(n=await this.dbRequest(`get`,[e+`/`])),{name:e.substring(t.length+1),type:n.type,size:n.size,ctime:n.ctime,mtime:n.mtime,uri:n.path}}))}}async getUri(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);return n===void 0&&(n=await this.dbRequest(`get`,[t+`/`])),{uri:n?.path||t}}async stat(e){let t=this.getPath(e.directory,e.path),n=await this.dbRequest(`get`,[t]);if(n===void 0&&(n=await this.dbRequest(`get`,[t+`/`])),n===void 0)throw Error(`Entry does not exist.`);return{name:n.path.substring(t.length+1),type:n.type,size:n.size,ctime:n.ctime,mtime:n.mtime,uri:n.path}}async rename(e){await this._copy(e,!0)}async copy(e){return this._copy(e,!1)}async requestPermissions(){return{publicStorage:`granted`}}async checkPermissions(){return{publicStorage:`granted`}}async _copy(e,t=!1){let{toDirectory:r}=e,{to:a,from:o,directory:s}=e;if(!a||!o)throw Error(`Both to and from must be provided`);r||=s;let c=this.getPath(s,o),l=this.getPath(r,a);if(c===l)return{uri:l};if(i(c,l))throw Error(`To path cannot contain the from path`);let u;try{u=await this.stat({path:a,directory:r})}catch{let e=a.split(`/`);e.pop();let t=e.join(`/`);if(e.length>0&&(await this.stat({path:t,directory:r})).type!==`directory`)throw Error(`Parent directory of the to path is a file`)}if(u&&u.type===`directory`)throw Error(`Cannot overwrite a directory with a file`);let d=await this.stat({path:o,directory:s}),f=async(e,t,n)=>{let i=this.getPath(r,e),a=await this.dbRequest(`get`,[i]);a.ctime=t,a.mtime=n,await this.dbRequest(`put`,[a])},p=d.ctime?d.ctime:Date.now();switch(d.type){case`file`:{let e=await this.readFile({path:o,directory:s});t&&await this.deleteFile({path:o,directory:s});let i;!(e.data instanceof Blob)&&!this.isBase64String(e.data)&&(i=n.UTF8);let c=await this.writeFile({path:a,directory:r,data:e.data,encoding:i});return t&&await f(a,p,d.mtime),c}case`directory`:{if(u)throw Error(`Cannot move a directory over an existing object`);try{await this.mkdir({path:a,directory:r,recursive:!1}),t&&await f(a,p,d.mtime)}catch{}let e=(await this.readdir({path:o,directory:s})).files;for(let n of e)await this._copy({from:`${o}/${n.name}`,to:`${a}/${n.name}`,directory:s,toDirectory:r},t);t&&await this.rmdir({path:o,directory:s})}}return{uri:l}}isBase64String(e){try{return btoa(atob(e))==e}catch{return!1}}};a._debug=!0;export{a as FilesystemWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./dist-DS5iJwBJ2.js";import{n as t,t as n}from"./definitions-
|
|
1
|
+
import{n as e}from"./dist-DS5iJwBJ2.js";import{n as t,t as n}from"./definitions-DScTW2c-.js";var r=class extends e{constructor(){super(...arguments),this.selectionStarted=!1}async impact(e){let t=this.patternForImpact(e?.style);this.vibrateWithPattern(t)}async notification(e){let t=this.patternForNotification(e?.type);this.vibrateWithPattern(t)}async vibrate(e){let t=e?.duration||300;this.vibrateWithPattern([t])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(e=n.Heavy){return e===n.Medium?[43]:e===n.Light?[20]:[61]}patternForNotification(e=t.Success){return e===t.Warning?[30,40,30,50,60]:e===t.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(e){if(navigator.vibrate)navigator.vibrate(e);else throw this.unavailable(`Browser does not support the vibrate API`)}};export{r as HapticsWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./button-amTXFI-2.js";import{d as t}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{u as r}from"./local-mode-grqHUoNh.js";import{c as i}from"./routes-BbeIx_F9.js";import{t as a}from"./use-onboarding-login-
|
|
1
|
+
import{t as e}from"./button-amTXFI-2.js";import{d as t}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{t as n}from"./jsx-runtime-CVSDxk6A.js";import{u as r}from"./local-mode-grqHUoNh.js";import{c as i}from"./routes-BbeIx_F9.js";import{t as a}from"./use-onboarding-login-B-1jrjFL.js";import{rn as o}from"./index-yu6nDHvG.js";var s=n();function c(){let n=t(),{loading:c,error:l,login:u,cancel:d}=a();return(0,s.jsx)(o,{children:(0,s.jsx)(`div`,{className:`mx-auto flex min-h-screen w-full max-w-xl flex-col items-center px-6 pb-40 text-[var(--content-default)]`,children:(0,s.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center`,children:[(0,s.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,style:{animation:`fadeInUp 0.5s ease-out 0.1s both`},children:`Welcome to Vellum`}),(0,s.jsx)(`p`,{className:`mt-3 text-body-medium-lighter text-[var(--content-tertiary)]`,style:{animation:`fadeInUp 0.5s ease-out 0.3s both`},children:`Your own personal intelligence is just a step away.`}),l&&(0,s.jsx)(`p`,{className:`mt-4 text-body-small-default text-[var(--system-negative-strong)]`,children:l}),(0,s.jsxs)(`div`,{className:`mt-10 flex w-full max-w-sm flex-col gap-3`,style:{animation:`fadeInUp 0.5s ease-out 0.5s both`},children:[(0,s.jsx)(e,{variant:`primary`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:c?d:()=>void u(),children:c?`Cancel`:`Log In`}),(0,s.jsx)(e,{variant:`ghost`,size:`regular`,fullWidth:!0,className:`h-11 text-base`,onClick:()=>{c&&d(),r()?n(i.selectAssistant):n(i.onboarding.hosting)},children:`Continue without account`})]})]})})})}export{c as WelcomeScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-D5f7kt80.js";import{t as a}from"./arrow-left-DI9551VI.js";import{n as o,r as s,t as c}from"./metric-card-
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{t as r}from"./jsx-runtime-CVSDxk6A.js";import{t as i}from"./typography-D5f7kt80.js";import{t as a}from"./arrow-left-DI9551VI.js";import{n as o,r as s,t as c}from"./metric-card-DvXjHVCV.js";import{t as l}from"./ban-CVKGuUAQ.js";import{t as u}from"./chevron-right-DqqmezXC.js";import{t as d}from"./circle-check-VSiny8yl.js";import{t as f}from"./triangle-alert-Z0Gq0IuB.js";import{t as p}from"./x-CkSVp1Ok.js";import"./src-zsLiFPw3.js";import{n as m,r as h,t as g}from"./workflow-status-ZrbiLW5D.js";import{t as _}from"./proxy-o6cPThl2.js";import{t as v}from"./AnimatePresence-s1Z1HHWx.js";import{t as y}from"./use-reduced-motion-Cj0Z8KSf.js";import{t as b}from"./three-dot-indicator-DNuHHwtA.js";import{Ma as x,Si as S,et as C,fi as w,hi as T,nt as E,rt as D}from"./index-yu6nDHvG.js";import{t as O}from"./status-badge-pill-0N6rTEBg.js";var k=e(t(),1),A=r();function j({onClick:e,ariaLabel:t}){return(0,A.jsxs)(`button`,{type:`button`,"aria-label":t,onClick:e,className:`flex h-8 shrink-0 cursor-pointer items-center gap-1.5 rounded-lg border border-[var(--system-negative-strong)] bg-transparent px-2.5 py-1.5 text-[var(--system-negative-strong)] transition-colors hover:bg-[var(--system-negative-weak)]`,children:[(0,A.jsx)(S,{className:`h-3 w-3`,fill:`currentColor`}),(0,A.jsx)(i,{variant:`label-small-default`,children:`Stop`})]})}function M({title:e,body:t,emptyText:n}){return(0,A.jsxs)(`div`,{className:`mb-5`,children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-2 text-[var(--content-emphasised)]`,children:e}),t?(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`whitespace-pre-wrap break-words leading-relaxed text-[var(--content-default)]`,children:t}):(0,A.jsx)(i,{variant:`body-medium-lighter`,as:`p`,className:`text-[var(--content-tertiary)]`,children:n})]})}function N({leaf:e}){let t=e.status===`running`?`Running…`:`No result summary`;return(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-2 gap-3`,children:[(0,A.jsx)(c,{icon:(0,A.jsx)(x,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens??0,format:e=>o(Math.round(e)),label:`Input`}),(0,A.jsx)(c,{icon:(0,A.jsx)(s,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens??0,format:e=>o(Math.round(e)),label:`Output`})]}),(0,A.jsx)(M,{title:`Prompt`,body:e.promptSummary,emptyText:`No prompt summary`}),(0,A.jsx)(M,{title:`Result`,body:e.resultSummary,emptyText:t})]})}function P({status:e}){return(0,A.jsx)(O,{color:m(e),label:h(e)})}function F(e){switch(e){case`completed`:return`var(--system-positive-strong)`;case`failed`:return`var(--system-negative-strong)`;case`cancelled`:return`var(--content-secondary)`;default:return`var(--primary-base)`}}function I(e){switch(e){case`completed`:return`Completed`;case`failed`:return`Failed`;case`cancelled`:return`Cancelled`;default:return`Running`}}function L({status:e}){return(0,A.jsx)(O,{color:F(e),label:I(e)})}function R({status:e}){let t=y(),n=`h-3.5 w-3.5 shrink-0`,r;return r=e===`running`?(0,A.jsx)(b,{className:`shrink-0`,dotSize:4,gap:2}):e===`completed`?(0,A.jsx)(d,{className:n,style:{color:`var(--system-positive-strong)`}}):e===`failed`?(0,A.jsx)(f,{className:n,style:{color:`var(--system-negative-strong)`}}):(0,A.jsx)(l,{className:n,style:{color:`var(--content-secondary)`},role:`img`,"aria-label":`Cancelled`}),(0,A.jsx)(v,{mode:`wait`,initial:!1,children:(0,A.jsx)(_.span,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:t?{duration:0}:{duration:.15,ease:[.16,1,.3,1]},className:`flex shrink-0 items-center`,children:r},e)})}function z({runId:e,leaf:t,components:n,onSelect:r}){let a=t.label??`Subagent ${t.seq}`,o=t.promptSummary,s=C(`${e}:${t.seq}`);return(0,A.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Open ${a} details`,className:`flex w-full cursor-pointer items-center justify-between gap-2 rounded-[6px] px-2 py-1.5 text-left transition-colors hover:bg-[var(--surface-overlay)]`,children:(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,A.jsx)(R,{status:t.status}),n?(0,A.jsx)(D,{components:n,bodyShapeId:s.bodyShape,eyeStyleId:s.eyeStyle,colorId:s.color,size:16}):(0,A.jsx)(`div`,{style:{width:16,height:16,flexShrink:0},"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-medium-default`,title:a,className:`max-w-[60%] shrink-0 truncate text-[var(--content-default)]`,children:a}),o&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:`shrink-0 text-[var(--content-tertiary)] opacity-10`,children:`|`}),(0,A.jsx)(i,{variant:`body-medium-lighter`,title:o,className:`min-w-0 truncate text-[var(--content-tertiary)]`,children:o})]})]})})}function B({entry:e,onClose:t,onStop:r,onRequestJournal:l}){let d=g(e.status),f=y(),m=e.label??e.runId,h=e.agentsSpawned||e.leaves.size,v=E(),b=[...e.leaves.values()].sort((e,t)=>e.seq-t.seq),[S,O]=(0,k.useState)(null),[M,F]=(0,k.useState)(e.runId);M!==e.runId&&(F(e.runId),O(null));let I=S==null?void 0:e.leaves.get(S),R=I?C(`${e.runId}:${I.seq}`):void 0,B=(0,k.useCallback)(()=>O(null),[]),V=I?I.label??`Subagent ${I.seq}`:``,H=I?V:m,U=d?`live`:`final`;return(0,k.useEffect)(()=>{l?.(e.runId)},[e.runId,U,l]),(0,A.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden rounded-xl bg-[var(--surface-lift)]`,children:[I&&(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--border-hover)] px-5 py-3`,children:[(0,A.jsx)(`button`,{type:`button`,onClick:B,title:m,className:`min-w-0 shrink cursor-pointer truncate text-left text-[var(--content-default)] hover:underline`,children:(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,children:m})}),(0,A.jsx)(u,{className:`h-2.5 w-2.5 shrink-0 text-[var(--content-tertiary)]`,"aria-hidden":!0}),(0,A.jsx)(i,{variant:`body-small-default`,as:`span`,title:V,className:`min-w-0 shrink truncate text-[var(--content-secondary)]`,children:V})]}),(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-b border-[var(--border-hover)] px-5 py-4`,children:[I&&(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(a,{}),onClick:B,"aria-label":`Back to subagents`,tooltip:`Back`,className:`shrink-0 rounded-lg`}),I?v&&R?(0,A.jsx)(D,{components:v,bodyShapeId:R.bodyShape,eyeStyleId:R.eyeStyle,colorId:R.color,size:32}):(0,A.jsx)(`div`,{style:{width:32,height:32,flexShrink:0},"aria-hidden":!0}):(0,A.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-[6px] bg-[var(--surface-overlay)]`,children:(0,A.jsx)(w,{className:`h-4 w-4`,style:{color:`var(--content-secondary)`}})}),(0,A.jsx)(i,{variant:`title-medium`,title:H,className:`min-w-0 shrink truncate text-[var(--content-default)]`,children:H}),I?(0,A.jsx)(L,{status:I.status}):(0,A.jsx)(P,{status:e.status}),(0,A.jsx)(`span`,{className:`flex-1`}),d&&r&&(0,A.jsx)(j,{onClick:()=>r(e.runId),ariaLabel:`Stop workflow`}),(0,A.jsx)(n,{variant:`outlined`,iconOnly:(0,A.jsx)(p,{}),onClick:t,"aria-label":`Close workflow detail`,tooltip:`Close`,className:`shrink-0 rounded-lg`})]}),(0,A.jsx)(`div`,{className:`flex-1 overflow-y-auto px-5 py-5`,children:(0,A.jsx)(_.div,{initial:{opacity:0},animate:{opacity:1},transition:f?{duration:0}:{duration:.18,ease:[.16,1,.3,1]},children:I?(0,A.jsx)(N,{leaf:I}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:`mb-5 grid grid-cols-3 gap-3`,children:[(0,A.jsx)(c,{icon:(0,A.jsx)(x,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.inputTokens,format:e=>o(Math.round(e)),label:`Input`}),(0,A.jsx)(c,{icon:(0,A.jsx)(s,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:e.outputTokens,format:e=>o(Math.round(e)),label:`Output`}),(0,A.jsx)(c,{icon:(0,A.jsx)(T,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-secondary)`}}),target:h,format:e=>o(Math.round(e)),label:`Agents`})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(i,{variant:`body-medium-default`,as:`h3`,className:`mb-4 text-[var(--content-emphasised)]`,children:`Subagents`}),b.length===0?(0,A.jsx)(i,{variant:`body-small-default`,className:`py-4 text-center text-[var(--content-tertiary)]`,children:`No subagents yet`}):(0,A.jsx)(`div`,{className:`flex flex-col gap-1`,children:b.map(t=>(0,A.jsx)(z,{runId:e.runId,leaf:t,components:v,onSelect:()=>O(t.seq)},t.seq))})]})]})},I?String(I.seq):`list`)})]})}export{B as WorkflowDetailPanel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{h as r}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as i}from"./QueryClientProvider-DKhXIxGb.js";import{t as a}from"./useQuery-B45lW1Kk.js";import{t as o}from"./useMutation-Lj4VunQV.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./queryOptions-BtNi-_9H.js";import{t as l}from"./createLucideIcon-IRfcSUxS.js";import{t as u}from"./chevron-down-qD-re7AW.js";import{t as d}from"./chevron-right-DqqmezXC.js";import{t as f}from"./menu-Dy5QbnTj.js";import{t as p}from"./download-CAuK-nZ6.js";import{t as m}from"./file-text-CYJz-GvF.js";import{t as h}from"./file-DsyJLS2u.js";import{t as g}from"./loader-circle-Cz7opInR.js";import{t as _}from"./pencil-CUIr0IFo.js";import{t as v}from"./plus-DItfr5ux.js";import{t as y}from"./x-CkSVp1Ok.js";import{E as b}from"./src-zsLiFPw3.js";import{t as x}from"./input-CoUmPnRU.js";import{t as S}from"./modal-D5nLWNN9.js";import{n as C,t as w}from"./panel-item-CouW2A55.js";import{t as T}from"./confirm-dialog-CSkhRFRk.js";import{n as E,t as D}from"./file-markdown-Bq97tNxs.js";import{Ar as O,Fr as k,Mr as A,Or as j,Pr as M,jr as N,kr as P}from"./sdk.gen-BwnFjFcp.js";import{n as F}from"./native-file-DI99Emal.js";import{Ai as I,_r as L,ca as R,da as ee,mi as z,ra as B,sa as V,ua as te,vi as ne}from"./index-yu6nDHvG.js";import{t as H}from"./use-active-assistant-id-BWXi63qg.js";import{n as U,t as W}from"./mobile-sidebar-drawer-Epbt6p-k.js";import{i as G,n as re,r as K,t as q}from"./file-editor-sT7eHxsw.js";import{t as J}from"./format-file-size-DzVEncaw.js";var ie=l(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),ae=l(`arrow-down-wide-narrow`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M11 4h10`,key:`1w87gc`}],[`path`,{d:`M11 8h7`,key:`djye34`}],[`path`,{d:`M11 12h4`,key:`q8tih4`}]]),oe=l(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),Y=l(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),X=e(t(),1);async function se(e){let{data:t,error:n}=await P({path:{assistant_id:e.assistantId},query:{path:e.path,...e.showHidden?{showHidden:`true`}:{}},parseAs:`blob`,throwOnError:!1});if(n||!(t instanceof Blob))throw Error(`Failed to download file`);await F(t,e.filename)}function ce(e){if(!e)return``;let t=e.indexOf(`;`);return(t===-1?e:e.slice(0,t)).trim()}function le(e,t){return ce(t)===`application/json`?!0:(e??``).toLowerCase().endsWith(`.json`)}function ue(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function de(e){return e.split(`/`).some(e=>e.startsWith(`.`))}var Z=s();function fe(e){return c({queryFn:async()=>{let{data:t,error:n}=await O({path:e.path,query:{path:e.query.path,...e.query.showHidden?{showHidden:`true`}:{}}});if(n)throw n;return t},queryKey:[`assistantsWorkspaceFileRetrieve`,e]})}function pe({mimeType:e}){let t=e.indexOf(`;`),n=(t===-1?e:e.slice(0,t)).trim(),r=m;return n.startsWith(`image/`)?r=B:n.startsWith(`video/`)?r=z:!n.startsWith(`text/`)&&n!==`application/json`&&n!==`application/octet-stream`&&(r=h),(0,Z.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 10%, transparent)`},children:(0,Z.jsx)(r,{className:`h-3.5 w-3.5`,style:{color:`var(--content-default)`}})})}function me({viewMode:e,onChange:t}){return(0,Z.jsx)(`div`,{className:`inline-flex rounded-md p-0.5`,style:{backgroundColor:`color-mix(in oklab, var(--content-default) 6%, transparent)`},children:[`preview`,`source`].map(r=>{let i=e===r;return(0,Z.jsx)(n,{variant:`ghost`,onClick:()=>t(r),className:`h-auto rounded border-0 px-2.5 py-1 text-body-small-default hover:bg-transparent`,style:{backgroundColor:i?`var(--surface-lift)`:`transparent`,color:i?`var(--content-default)`:`var(--content-tertiary)`,boxShadow:i?`0 1px 2px rgba(0,0,0,0.15)`:void 0},children:r===`preview`?`Preview`:`Source`},r)})})}function Q({name:e,mimeType:t,size:n,rightContent:r}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(pe,{mimeType:t}),(0,Z.jsx)(`span`,{className:`truncate text-body-medium-default`,style:{color:`var(--content-default)`},children:e}),n!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-body-small-default`,style:{color:`var(--content-tertiary)`},children:J(n)})]}),r]})}function he({assistantId:e,path:t,mimeType:n,showHidden:r}){let{data:i,isLoading:o}=a({queryFn:async()=>{let n=await P({path:{assistant_id:e},query:{path:t,...r?{showHidden:`true`}:{}},parseAs:`blob`});if(n.error)throw n.error;return n.data},queryKey:[`assistantsWorkspaceFileContentRetrieve`,{assistantId:e,path:t,showHidden:r}],enabled:!!t}),[s,c]=(0,X.useState)(null);return(0,X.useEffect)(()=>{if(!i)return;let e=URL.createObjectURL(i);return c(e),()=>{URL.revokeObjectURL(e),c(null)}},[i]),o?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(g,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})}):s?n.startsWith(`image/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`img`,{src:s,alt:t.split(`/`).pop()??`image`,className:`max-h-[70vh] max-w-full rounded object-contain`})}):n.startsWith(`video/`)?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-4`,children:(0,Z.jsx)(`video`,{src:s,controls:!0,className:`max-h-[70vh] max-w-full rounded`})}):null:null}function ge({assistantId:e,path:t,name:r,mimeType:i,size:a,modifiedAt:o,showHidden:s}){let[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(!1),f=(0,X.useCallback)(async()=>{d(!1),l(!0);try{await se({assistantId:e,path:t,filename:r,showHidden:s})}catch{d(!0)}finally{l(!1)}},[e,t,r,s]);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:r,mimeType:i,size:a}),(0,Z.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,Z.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border p-6 text-center`,style:{borderColor:`var(--border-base)`,backgroundColor:`var(--surface-lift)`},children:[(0,Z.jsx)(h,{className:`mx-auto h-10 w-10`,style:{color:`var(--content-tertiary)`}}),(0,Z.jsx)(`p`,{className:`mt-3 text-body-medium-default`,style:{color:`var(--content-default)`},children:r}),(0,Z.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:i}),(0,Z.jsx)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:J(a,`Unknown size`)}),o&&(0,Z.jsxs)(`p`,{className:`text-body-small-default`,style:{color:`var(--content-secondary, var(--content-tertiary))`},children:[`Modified: `,new Date(o).toLocaleString()]})]}),(0,Z.jsx)(n,{variant:`outlined`,size:`compact`,leftIcon:c?(0,Z.jsx)(g,{className:`animate-spin`,"aria-hidden":!0}):(0,Z.jsx)(p,{"aria-hidden":!0}),onClick:f,disabled:c,"aria-label":`Download ${r}`,className:`mt-4`,children:c?`Downloading…`:`Download`}),u&&(0,Z.jsx)(`p`,{className:`mt-2 text-body-small-default`,style:{color:`var(--system-error)`},children:`Download failed. Try again.`})]})})]})}function _e({assistantId:e,selectedPath:t,showHidden:r,viewMode:s,onChangeViewMode:c,onBrowse:l,pathRename:u,pathDelete:d}){let f=i(),{data:p,isLoading:m}=a({...fe({path:{assistant_id:e},query:{path:t??``,showHidden:r}}),enabled:!!t}),[h,_]=(0,X.useState)(null),[v,y]=(0,X.useState)(null);(0,X.useEffect)(()=>{if(!u)return;let{from:e,to:t}=u,n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;_(e=>e==null?e:n(e)),y(e=>e==null?e:{...e,path:n(e.path)})},[u]),(0,X.useEffect)(()=>{if(!d)return;let{path:e}=d,t=t=>t===e||t.startsWith(`${e}/`);_(e=>e!=null&&t(e)?null:e),y(e=>e!=null&&t(e.path)?null:e)},[d]);let b=h!=null&&h===t,x=p?.content??``,S=v?.path===t?v.content:x,C=()=>{_(null),y(null)},w=o({mutationFn:async({path:t,content:n})=>{let{error:r,response:i}=await k({path:{assistant_id:e},body:{path:t,content:n,encoding:`utf8`},throwOnError:!1});if(!i?.ok||r)throw Error(`Failed to save file`)},onSuccess:(e,t)=>{_(e=>e===t.path?null:e),y(e=>e?.path===t.path?null:e),f.invalidateQueries({queryKey:[`assistantsWorkspaceFileRetrieve`]})}}),T=S!==x,O=(0,X.useCallback)(()=>{t&&T&&!w.isPending&&w.mutate({path:t,content:S})},[t,T,w,S]);if(!t)return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3`,children:[(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`Select a file to view`}),l&&(0,Z.jsx)(n,{type:`button`,onClick:l,leftIcon:(0,Z.jsx)(oe,{"aria-hidden":!0}),className:`sm:hidden`,children:`Browse files`})]});if(m)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(g,{className:`h-6 w-6 animate-spin`,style:{color:`var(--content-tertiary)`}})});if(!p)return(0,Z.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,Z.jsx)(`p`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`File not found`})});let A=p.mimeType??`application/octet-stream`,j=p.name??t.split(`/`).pop()??t,M=E(j,A),N=le(j,A),P=p.content!=null&&!M&&!N,F=t?de(t):!0,I=b&&(0,Z.jsx)(re,{isDirty:T,isSaving:w.isPending,error:w.isError?`Save failed`:null,onSave:O,onDiscard:C});if(M&&p.content!=null){let e=b?S:p.content;return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:j,mimeType:A,rightContent:(0,Z.jsx)(me,{viewMode:s,onChange:e=>{b&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:e,fileName:j,mimeType:A,showEdit:!F&&s===`source`,isEditing:b,onToggleEdit:()=>b?C():_(t)}),s===`preview`?(0,Z.jsx)(`div`,{className:`h-full overflow-auto px-6 py-4`,style:{color:`var(--content-default)`},children:(0,Z.jsx)(D,{content:e})}):b?(0,Z.jsx)(K,{value:S,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(G,{content:p.content,readOnly:F,onStartEdit:()=>_(t)})]}),I]})}if(N&&p.content!=null){let e=b?S:p.content,n=ue(e);return(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:j,mimeType:A,rightContent:(0,Z.jsx)(me,{viewMode:s,onChange:e=>{b&&C(),c(e)}})}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:s===`preview`?n:e,downloadContent:e,fileName:j,mimeType:A,showEdit:!F&&s===`source`,isEditing:b,onToggleEdit:()=>b?C():_(t)}),s===`preview`?(0,Z.jsx)(G,{content:n,readOnly:!0,whiteSpace:`pre`}):b?(0,Z.jsx)(K,{value:S,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(G,{content:p.content,readOnly:F,onStartEdit:()=>_(t)})]}),I]})}return P?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:j,mimeType:A,size:p.size}),(0,Z.jsxs)(`div`,{className:`relative flex-1 overflow-hidden`,children:[(0,Z.jsx)(q,{content:b?S:p.content??``,fileName:j,mimeType:A,showEdit:!F,isEditing:b,onToggleEdit:()=>b?C():_(t)}),b?(0,Z.jsx)(K,{value:S,onChange:e=>y({path:t,content:e}),onSave:O}):(0,Z.jsx)(G,{content:p.content??``,readOnly:F,onStartEdit:()=>_(t)})]}),I]}):A.startsWith(`image/`)||A.startsWith(`video/`)?(0,Z.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Z.jsx)(Q,{name:j,mimeType:A,size:p.size}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,Z.jsx)(he,{assistantId:e,path:t,mimeType:A,showHidden:r})})]}):(0,Z.jsx)(ge,{assistantId:e,path:t,name:j,mimeType:A,size:p.size,modifiedAt:p.modifiedAt,showHidden:r})}function ve(e,t){if(t===`name`)return e;let n=e.slice();return n.sort((e,t)=>{let n=e.size??null,r=t.size??null;return n===null&&r===null?(e.name??``).localeCompare(t.name??``):n===null?1:r===null?-1:n===r?(e.name??``).localeCompare(t.name??``):r-n}),n}function ye(e){return c({queryFn:async()=>{let t={};e.query?.path&&(t.path=e.query.path),e.query?.showHidden&&(t.showHidden=`true`),e.query?.includeDirSizes&&(t.includeDirSizes=`true`);let{data:n,error:r}=await M({path:e.path,query:t});if(r)throw r;if(!n)throw Error(`Failed to load workspace tree`);return n},queryKey:[`assistantsWorkspaceTreeRetrieve`,e]})}async function be(e,t,n,r){let i=n.toLowerCase(),a=r?.toLowerCase(),{data:o}=await M({path:{assistant_id:e},query:t?{path:t}:{}});if(o?.entries?.some(e=>{let t=(e.name??``).toLowerCase();return t===i&&t!==a}))throw Error(`"${n}" already exists here.`)}function xe({entry:e}){return e.type===`directory`?(0,Z.jsx)(V,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`image/`)?(0,Z.jsx)(B,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):e.mimeType?.startsWith(`video/`)?(0,Z.jsx)(z,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(m,{className:`h-4 w-4 shrink-0`,style:{color:`var(--content-tertiary)`}})}function Se({entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h}){let g=e.path??``,v=e.name??``,y=e.type===`directory`,x=n.has(g),S=r===g,C=v.startsWith(`.`),w=!de(g),T=y&&(x||s.length>0),{data:E}=a({...ye({path:{assistant_id:t},query:{path:g,showHidden:i,includeDirSizes:o===`size`}}),enabled:y&&T}),D=(0,X.useMemo)(()=>ve(E?.entries??[],o),[E?.entries,o]),O=s===``||v.toLowerCase().includes(s);if(s!==``&&!y&&!O)return null;let k=(0,Z.jsxs)(`button`,{onClick:()=>{y?c(g):l(g)},className:`flex w-full items-center gap-1.5 px-2 py-1 text-left text-body-medium-lighter transition-colors hover:bg-[var(--surface-hover)]`,style:{paddingLeft:`${h*14+8}px`,paddingRight:`8px`,color:S?`var(--content-default)`:C?`var(--content-tertiary)`:`var(--content-default)`,backgroundColor:S?`color-mix(in oklab, var(--primary-base) 12%, transparent)`:void 0,opacity:C&&!S?.7:1},children:[y?T?(0,Z.jsx)(u,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(d,{className:`h-3 w-3 shrink-0`,style:{color:`var(--content-tertiary)`}}):(0,Z.jsx)(`span`,{className:`h-3 w-3 shrink-0`}),(0,Z.jsx)(xe,{entry:e}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:v}),e.size!=null&&(0,Z.jsx)(`span`,{className:`shrink-0 text-label-medium-default tabular-nums`,style:{color:`var(--content-tertiary)`},children:J(e.size)})]});return(0,Z.jsxs)(`div`,{children:[w?(0,Z.jsxs)(b.Root,{children:[(0,Z.jsx)(b.Trigger,{children:k}),(0,Z.jsxs)(b.Content,{children:[y&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(b.Item,{leftIcon:(0,Z.jsx)(R,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`file`,parentPath:g}),children:`New File`}),(0,Z.jsx)(b.Item,{leftIcon:(0,Z.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>m({kind:`folder`,parentPath:g}),children:`New Folder`}),(0,Z.jsx)(b.Separator,{})]}),(0,Z.jsx)(b.Item,{leftIcon:(0,Z.jsx)(ne,{className:`h-3.5 w-3.5`}),onSelect:()=>f({path:g,name:v,isDirectory:y}),children:`Delete`}),(0,Z.jsx)(b.Item,{leftIcon:(0,Z.jsx)(_,{className:`h-3.5 w-3.5`}),onSelect:()=>p({path:g,name:v,isDirectory:y}),children:`Rename`})]})]}):k,y&&T&&D.length>0&&(0,Z.jsx)(`div`,{children:D.map(e=>(0,Z.jsx)(Se,{entry:e,assistantId:t,expandedPaths:n,selectedPath:r,showHidden:i,sortMode:o,searchLower:s,onToggleExpand:c,onSelectPath:l,onRequestDelete:f,onRequestRename:p,onRequestCreate:m,depth:h+1},e.path))})]})}function Ce({title:e,placeholder:t,confirmLabel:r,pendingLabel:i,initialName:a,onCancel:o,onConfirm:s,pending:c,error:l}){let u=(0,X.useRef)(null),[d,f]=(0,X.useState)(a??``),p=d.trim(),m=p.length>0&&(/[/\\]/.test(p)||p===`.`||p===`..`),h=p.length>0&&!m&&!c;return(0,Z.jsx)(S.Root,{open:!0,onOpenChange:e=>{!e&&!c&&o()},children:(0,Z.jsx)(S.Content,{size:`sm`,hideCloseButton:!0,"aria-describedby":void 0,onOpenAutoFocus:e=>{e.preventDefault();let t=u.current;t&&(t.focus(),requestAnimationFrame(()=>{t.setSelectionRange(0,t.value.length)}))},onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation(),c||o()},children:(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),h&&s(p)},children:[(0,Z.jsx)(S.Header,{children:(0,Z.jsx)(S.Title,{children:e})}),(0,Z.jsx)(S.Body,{children:(0,Z.jsx)(x,{ref:u,label:`Name`,value:d,onChange:e=>f(e.target.value),placeholder:t,errorText:l??(m?`Enter a single file or folder name without slashes.`:void 0),autoComplete:`off`,spellCheck:!1,fullWidth:!0})}),(0,Z.jsxs)(S.Footer,{children:[(0,Z.jsx)(n,{type:`button`,variant:`outlined`,onClick:o,disabled:c,children:`Cancel`}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,disabled:!h,children:c?i:r})]})]})})})}function $({assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,onToggleExpand:l,onExpandPath:u,onSelectPath:d,onToggleShowHidden:f,onChangeSortMode:p,onPathDeleted:m,onPathRenamed:h}){let g=i(),[_,v]=(0,X.useState)(``),b=_.trim().toLowerCase(),[S,C]=(0,X.useState)(!1),[w,E]=(0,X.useState)(null),[D,O]=(0,X.useState)(null),M=(0,X.useCallback)(()=>{E(null),O(null)},[]),{data:P,isLoading:F}=a(ye({path:{assistant_id:e},query:{showHidden:s,includeDirSizes:c===`size`}})),L=(0,X.useMemo)(()=>ve(P?.entries??[],c),[P?.entries,c]),R=(0,X.useCallback)(()=>{for(let e of[`assistantsWorkspaceTreeRetrieve`,`assistantsWorkspaceFileRetrieve`,`assistantsWorkspaceFileContentRetrieve`])g.invalidateQueries({queryKey:[e]})},[g]),z=o({mutationFn:async t=>{let n=t.parentPath?`${t.parentPath}/${t.name}`:t.name;await be(e,t.parentPath,t.name);let{error:r,response:i}=t.kind===`file`?await k({path:{assistant_id:e},body:{path:n,content:``,encoding:`utf8`},throwOnError:!1}):await N({path:{assistant_id:e},body:{path:n},throwOnError:!1});if(r||!i?.ok)throw Error(typeof r==`string`?r:`Failed to create — check the name and try again.`);return{...t,path:n}},onSuccess:e=>{M(),R(),e.parentPath&&u(e.parentPath),e.kind===`file`?d(e.path):u(e.path)},onError:e=>{O(e instanceof Error?e.message:`Failed to create.`)}}),B=o({mutationFn:async t=>{let n=t.oldPath.lastIndexOf(`/`),r=n===-1?``:t.oldPath.slice(0,n),i=t.oldPath.slice(n+1),a=r?`${r}/${t.newName}`:t.newName;await be(e,r,t.newName,i);let{error:o,response:s}=await A({path:{assistant_id:e},body:{oldPath:t.oldPath,newPath:a},throwOnError:!1});if(o||!s?.ok)throw Error(typeof o==`string`?o:`Failed to rename — check the name and try again.`);return{oldPath:t.oldPath,newPath:a}},onSuccess:({oldPath:e,newPath:t})=>{M(),R(),h(e,t)},onError:e=>{O(e instanceof Error?e.message:`Failed to rename.`)}}),V=(0,X.useCallback)(e=>{O(null),E({type:`create`,...e})},[]),ne=(0,X.useCallback)(e=>{O(null),E({type:`rename`,path:e.path,name:e.name})},[]),[H,U]=(0,X.useState)(null),W=o({mutationFn:async t=>{let{error:n,response:r}=await j({path:{assistant_id:e},body:{path:t.path},throwOnError:!1});if(n||!r?.ok)throw Error(typeof n==`string`?n:`Failed to delete — try again.`);return t},onSuccess:e=>{U(null),R(),m(e.path)}}),G=(0,X.useCallback)(e=>{W.reset(),U(e)},[W]);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b px-3 py-2.5`,style:{borderColor:`var(--border-element)`},children:[(0,Z.jsx)(`span`,{className:`text-body-medium-default`,style:{color:`var(--content-secondary)`},children:`Files`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:c===`size`?(0,Z.jsx)(ae,{"aria-hidden":!0}):(0,Z.jsx)(ie,{"aria-hidden":!0}),onClick:()=>p(c===`size`?`name`:`size`),"aria-label":c===`size`?`Sort by name`:`Sort by size`,title:c===`size`?`Sorted by size — switch to name`:`Sorted by name — switch to size`,tintColor:c===`size`?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:s?(0,Z.jsx)(te,{"aria-hidden":!0}):(0,Z.jsx)(ee,{"aria-hidden":!0}),onClick:f,"aria-label":s?`Hide hidden files`:`Show hidden files`,title:s?`Hide hidden files`:`Show hidden files`,tintColor:s?`var(--content-default)`:`var(--content-tertiary)`}),(0,Z.jsx)(we,{open:S,onOpenChange:C,onSelectKind:e=>{C(!1),V({kind:e,parentPath:``})}})]})]}),(0,Z.jsx)(`div`,{className:`px-3 py-2`,children:(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(x,{type:`text`,value:_,onChange:e=>v(e.target.value),placeholder:`Search files`,leftIcon:(0,Z.jsx)(I,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),fullWidth:!0,spellCheck:!1,autoComplete:`off`}),_&&(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(y,{"aria-hidden":!0}),onClick:()=>v(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2`,tintColor:`var(--content-tertiary)`})]})}),(0,Z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto py-1`,children:F?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(`div`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent`,style:{color:`var(--content-tertiary)`}})}):L.length?L.map(n=>(0,Z.jsx)(Se,{entry:n,assistantId:e,expandedPaths:t,selectedPath:r,showHidden:s,sortMode:c,searchLower:b,onToggleExpand:l,onSelectPath:d,onRequestDelete:G,onRequestRename:ne,onRequestCreate:V,depth:0},n.path)):(0,Z.jsx)(`p`,{className:`px-3 py-4 text-center text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:`No files found`})}),w?.type===`create`&&(0,Z.jsx)(Ce,{title:w.kind===`file`?`New File`:`New Folder`,placeholder:w.kind===`file`?`filename.md`:`folder-name`,confirmLabel:`Create`,pendingLabel:`Creating…`,onCancel:M,onConfirm:e=>{O(null),z.mutate({kind:w.kind,parentPath:w.parentPath,name:e})},pending:z.isPending,error:D},`create-${w.kind}-${w.parentPath}`),w?.type===`rename`&&(0,Z.jsx)(Ce,{title:`Rename`,placeholder:w.name,confirmLabel:`Rename`,pendingLabel:`Renaming…`,initialName:w.name,onCancel:M,onConfirm:e=>{if(e===w.name){M();return}O(null),B.mutate({oldPath:w.path,newName:e})},pending:B.isPending,error:D},`rename-${w.path}`),(0,Z.jsx)(T,{open:H!==null,title:H?.isDirectory?`Delete Folder`:`Delete File`,message:(0,Z.jsxs)(Z.Fragment,{children:[`Are you sure you want to delete`,` `,(0,Z.jsx)(`span`,{style:{color:`var(--content-default)`},children:H?.name}),H?.isDirectory?` and all of its contents`:``,`? This cannot be undone.`,W.error&&(0,Z.jsx)(`span`,{className:`mt-2 block`,style:{color:`var(--system-negative-strong)`},children:W.error.message})]}),confirmLabel:W.isPending?`Deleting…`:`Delete`,destructive:!0,isPending:W.isPending,onConfirm:()=>{H&&W.mutate(H)},onCancel:()=>U(null)})]})}function we({open:e,onOpenChange:t,onSelectKind:r}){return L()?(0,Z.jsxs)(C.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(C.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(v,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(C.Content,{children:[(0,Z.jsx)(C.Header,{className:`sr-only`,children:(0,Z.jsx)(C.Title,{children:`Create new`})}),(0,Z.jsxs)(C.Body,{className:`pt-0`,children:[(0,Z.jsx)(w,{icon:R,label:`New File`,onSelect:()=>r(`file`)}),(0,Z.jsx)(w,{icon:Y,label:`New Folder`,onSelect:()=>r(`folder`)})]})]})]}):(0,Z.jsxs)(f.Root,{open:e,onOpenChange:t,children:[(0,Z.jsx)(f.Trigger,{asChild:!0,children:(0,Z.jsx)(n,{type:`button`,variant:`ghost`,size:`compact`,iconOnly:(0,Z.jsx)(v,{"aria-hidden":!0}),"aria-label":`Create new file or folder`,title:`New file or folder`,tintColor:`var(--content-tertiary)`})}),(0,Z.jsxs)(f.Content,{align:`end`,sideOffset:4,children:[(0,Z.jsx)(f.Item,{leftIcon:(0,Z.jsx)(R,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`file`),children:`New File`}),(0,Z.jsx)(f.Item,{leftIcon:(0,Z.jsx)(Y,{className:`h-3.5 w-3.5`}),onSelect:()=>r(`folder`),children:`New Folder`})]})]})}function Te(e){let t=e.split(`/`),n=new Set;for(let e=1;e<t.length;e++)n.add(t.slice(0,e).join(`/`));return n}function Ee({assistantId:e}){let[t,n]=r(),[i,a]=(0,X.useState)(()=>{let e=t.get(`file`);return e?Te(e):new Set}),[o,s]=(0,X.useState)(()=>t.get(`file`)),[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(()=>t.get(`sort`)===`size`?`size`:`name`),[f,p]=(0,X.useState)(`preview`);(0,X.useEffect)(()=>{t.get(`file`)&&n(e=>{let t=new URLSearchParams(e);return t.delete(`file`),t},{replace:!0})},[]);let m=(0,X.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=(0,X.useCallback)(e=>{a(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),n})},[]),[g,_]=(0,X.useState)(!1),v=(0,X.useCallback)(e=>{s(e),_(!1)},[]),[y,b]=(0,X.useState)(null),x=(0,X.useCallback)(e=>{let t=t=>t===e||t.startsWith(`${e}/`);s(e=>e!==null&&t(e)?null:e),a(e=>{let n=new Set([...e].filter(e=>!t(e)));return n.size===e.size?e:n}),b({path:e})},[]),[S,C]=(0,X.useState)(null),w={assistantId:e,expandedPaths:i,selectedPath:o,showHidden:c,sortMode:u,onToggleExpand:m,onExpandPath:h,onSelectPath:v,onToggleShowHidden:()=>l(e=>!e),onChangeSortMode:d,onPathDeleted:x,onPathRenamed:(0,X.useCallback)((e,t)=>{let n=n=>n===e?t:n.startsWith(`${e}/`)?t+n.slice(e.length):n;s(e=>e===null?e:n(e)),a(e=>{let t=!1,r=new Set;for(let i of e){let e=n(i);e!==i&&(t=!0),r.add(e)}return t?r:e}),C({from:e,to:t})},[])};return(0,Z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4`,children:[(0,Z.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,Z.jsx)(U,{onClick:()=>_(!0)})}),(0,Z.jsx)(W,{open:g,onClose:()=>_(!1),title:`Files`,children:(0,Z.jsx)($,{...w})}),(0,Z.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-4 sm:grid-cols-[320px_1fr]`,children:[(0,Z.jsx)(`div`,{className:`hidden min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border sm:flex`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)($,{...w})}),(0,Z.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-col overflow-hidden rounded-xl border`,style:{backgroundColor:`var(--surface-overlay)`,borderColor:`var(--border-base)`},children:(0,Z.jsx)(_e,{assistantId:e,selectedPath:o,showHidden:c,viewMode:f,onChangeViewMode:p,onBrowse:()=>_(!0),pathRename:S,pathDelete:y})})]})]})}function De(){return(0,Z.jsx)(Ee,{assistantId:H()})}export{De as WorkspacePage};
|
package/dist/index.html
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<link rel="apple-touch-icon" href="/assistant/favicon.svg" />
|
|
11
11
|
<title>Vellum Assistant</title>
|
|
12
12
|
<script src="/assistant/theme-init.js"></script>
|
|
13
|
-
<script type="module" crossorigin src="/assistant/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assistant/assets/index-yu6nDHvG.js"></script>
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assistant/assets/chunk-jRWAZmH_.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assistant/assets/preload-helper-BewR0kVT.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assistant/assets/is-electron-y5bNUVyG.js">
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assistant/assets/api-_7pKLlYA.js">
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assistant/assets/avatar-svg-compositor-CnDf9Ibf.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assistant/assets/jsx-runtime-CVSDxk6A.js">
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/proxy-
|
|
30
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/use-reduced-motion-
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/proxy-o6cPThl2.js">
|
|
30
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/use-reduced-motion-Cj0Z8KSf.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assistant/assets/createLucideIcon-IRfcSUxS.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/animated-avatar-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/animated-avatar-Cqpzb8O4.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assistant/assets/domains-D3QF404Q.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assistant/assets/return-to-BwxkOGDI.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assistant/assets/routes-BbeIx_F9.js">
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
<link rel="modulepreload" crossorigin href="/assistant/assets/typed-storage-5IU6qVWg.js">
|
|
43
43
|
<link rel="modulepreload" crossorigin href="/assistant/assets/QueryClientProvider-DKhXIxGb.js">
|
|
44
44
|
<link rel="modulepreload" crossorigin href="/assistant/assets/useQuery-B45lW1Kk.js">
|
|
45
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/auth-store-
|
|
45
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/auth-store-C09YAZEu.js">
|
|
46
46
|
<link rel="modulepreload" crossorigin href="/assistant/assets/prechat-P1y7ZM6C.js">
|
|
47
47
|
<link rel="modulepreload" crossorigin href="/assistant/assets/platform-detection-BrxvFUiR.js">
|
|
48
48
|
<link rel="modulepreload" crossorigin href="/assistant/assets/impersonate-version-flag-BhxfH6iZ.js">
|
|
@@ -87,20 +87,22 @@
|
|
|
87
87
|
<link rel="modulepreload" crossorigin href="/assistant/assets/shortcut-keys-B2EE-634.js">
|
|
88
88
|
<link rel="modulepreload" crossorigin href="/assistant/assets/tag-CV4v7fRF.js">
|
|
89
89
|
<link rel="modulepreload" crossorigin href="/assistant/assets/toggle-CDfguvUz.js">
|
|
90
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/src-
|
|
91
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/file-markdown-
|
|
92
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/browser-
|
|
90
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/src-zsLiFPw3.js">
|
|
91
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/file-markdown-Bq97tNxs.js">
|
|
92
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/browser-C6a_nhhZ.js">
|
|
93
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/edge-swipe-arbiter-store-BeOhrE7M.js">
|
|
94
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/haptics-lMERs7us.js">
|
|
93
95
|
<link rel="modulepreload" crossorigin href="/assistant/assets/chevron-left-BMF1xNfR.js">
|
|
94
96
|
<link rel="modulepreload" crossorigin href="/assistant/assets/download-CAuK-nZ6.js">
|
|
95
97
|
<link rel="modulepreload" crossorigin href="/assistant/assets/file-DsyJLS2u.js">
|
|
96
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/chat-markdown-message-
|
|
98
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/chat-markdown-message-BnX6bhgs.js">
|
|
97
99
|
<link rel="modulepreload" crossorigin href="/assistant/assets/chat-B8mgARYR.js">
|
|
98
100
|
<link rel="modulepreload" crossorigin href="/assistant/assets/diagnostics-COsnZMe5.js">
|
|
99
101
|
<link rel="modulepreload" crossorigin href="/assistant/assets/conversation-store-BljZWolF.js">
|
|
100
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/risk-
|
|
101
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/three-dot-indicator-
|
|
102
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/risk-Dopd25rc.js">
|
|
103
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/three-dot-indicator-DNuHHwtA.js">
|
|
102
104
|
<link rel="modulepreload" crossorigin href="/assistant/assets/misc-BYQPh7vS.js">
|
|
103
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/AnimatePresence-
|
|
105
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/AnimatePresence-s1Z1HHWx.js">
|
|
104
106
|
<link rel="modulepreload" crossorigin href="/assistant/assets/brain-BLDXGaUy.js">
|
|
105
107
|
<link rel="modulepreload" crossorigin href="/assistant/assets/code-Czx7d7SK.js">
|
|
106
108
|
<link rel="modulepreload" crossorigin href="/assistant/assets/file-text-CYJz-GvF.js">
|
|
@@ -108,15 +110,15 @@
|
|
|
108
110
|
<link rel="modulepreload" crossorigin href="/assistant/assets/monitor-DfbL8_59.js">
|
|
109
111
|
<link rel="modulepreload" crossorigin href="/assistant/assets/sparkles-PGiR5v1g.js">
|
|
110
112
|
<link rel="modulepreload" crossorigin href="/assistant/assets/user-plus-DMh4_UTz.js">
|
|
111
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/site-favicon-
|
|
113
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/site-favicon-fQHLTT6F.js">
|
|
112
114
|
<link rel="modulepreload" crossorigin href="/assistant/assets/composer-focus-BZr63Cvs.js">
|
|
113
115
|
<link rel="modulepreload" crossorigin href="/assistant/assets/by-tool-use-id-index-BokzI3ZP.js">
|
|
114
116
|
<link rel="modulepreload" crossorigin href="/assistant/assets/subagent-store-Bz4irJre.js">
|
|
115
117
|
<link rel="modulepreload" crossorigin href="/assistant/assets/workflow-status-ZrbiLW5D.js">
|
|
116
118
|
<link rel="modulepreload" crossorigin href="/assistant/assets/workflow-store-B7ofewCi.js">
|
|
117
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/optimistic-lifecycle-
|
|
119
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/optimistic-lifecycle-BvfDBY8o.js">
|
|
118
120
|
<link rel="modulepreload" crossorigin href="/assistant/assets/conversation-selection-BBHkzcfy.js">
|
|
119
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/prefs-
|
|
121
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/prefs-B1Y3q3c8.js">
|
|
120
122
|
<link rel="modulepreload" crossorigin href="/assistant/assets/research-onboarding-persistence-DnuHyFyB.js">
|
|
121
123
|
<link rel="modulepreload" crossorigin href="/assistant/assets/useMutation-Lj4VunQV.js">
|
|
122
124
|
<link rel="modulepreload" crossorigin href="/assistant/assets/infiniteQueryOptions-C6p49ZmI.js">
|
|
@@ -125,26 +127,25 @@
|
|
|
125
127
|
<link rel="modulepreload" crossorigin href="/assistant/assets/react-query.gen-C6wVk6Rw.js">
|
|
126
128
|
<link rel="modulepreload" crossorigin href="/assistant/assets/sdk.gen-BhtkuoSl.js">
|
|
127
129
|
<link rel="modulepreload" crossorigin href="/assistant/assets/use-bus-subscription-C3H3CmM_.js">
|
|
128
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/use-copy-to-clipboard-
|
|
129
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/use-is-org-ready-
|
|
130
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/build-state-
|
|
131
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/login-flow-
|
|
130
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/use-copy-to-clipboard-BCTXSMa-.js">
|
|
131
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/use-is-org-ready-jhEM-4rY.js">
|
|
132
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/build-state-PUXrUU4W.js">
|
|
133
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/login-flow-B6q00uIW.js">
|
|
132
134
|
<link rel="modulepreload" crossorigin href="/assistant/assets/chunk-5KNZJZUH-DdS6bb-3.js">
|
|
133
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/use-onboarding-login-
|
|
135
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/use-onboarding-login-B-1jrjFL.js">
|
|
134
136
|
<link rel="modulepreload" crossorigin href="/assistant/assets/utils-xg2dl_KJ.js">
|
|
135
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/feature-flag-catalog-
|
|
137
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/feature-flag-catalog-GgSNKkqP.js">
|
|
136
138
|
<link rel="modulepreload" crossorigin href="/assistant/assets/sound-manager-6UbdgQrj.js">
|
|
137
139
|
<link rel="modulepreload" crossorigin href="/assistant/assets/client-identity-CadrtY_b.js">
|
|
138
140
|
<link rel="modulepreload" crossorigin href="/assistant/assets/native-deep-link-CJGNy9bj.js">
|
|
139
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/native-file-
|
|
140
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/assistant-feature-flag-store-
|
|
141
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/client-feature-flag-store-
|
|
141
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/native-file-DI99Emal.js">
|
|
142
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/assistant-feature-flag-store-DA8Oj9Mf.js">
|
|
143
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/client-feature-flag-store-DkJl-g9A.js">
|
|
142
144
|
<link rel="modulepreload" crossorigin href="/assistant/assets/viewer-store-B8-Qnbx9.js">
|
|
143
145
|
<link rel="modulepreload" crossorigin href="/assistant/assets/avatar-bundled-components--1Wyhs4r.js">
|
|
144
146
|
<link rel="modulepreload" crossorigin href="/assistant/assets/conversation-list-fetchers-DS9vmqfD.js">
|
|
145
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/haptics-DKVhthJo.js">
|
|
146
147
|
<link rel="modulepreload" crossorigin href="/assistant/assets/pointer-Cdz7NGHe.js">
|
|
147
|
-
<link rel="modulepreload" crossorigin href="/assistant/assets/public-asset-
|
|
148
|
+
<link rel="modulepreload" crossorigin href="/assistant/assets/public-asset-GKv5zCfZ.js">
|
|
148
149
|
<link rel="modulepreload" crossorigin href="/assistant/assets/archive-0aqysuyd.js">
|
|
149
150
|
<link rel="modulepreload" crossorigin href="/assistant/assets/arrow-left-DI9551VI.js">
|
|
150
151
|
<link rel="modulepreload" crossorigin href="/assistant/assets/middleware-pbPQ0upo.js">
|
|
@@ -168,7 +169,7 @@
|
|
|
168
169
|
<link rel="modulepreload" crossorigin href="/assistant/assets/plus-DItfr5ux.js">
|
|
169
170
|
<link rel="modulepreload" crossorigin href="/assistant/assets/refresh-cw-DevIHL7J.js">
|
|
170
171
|
<link rel="stylesheet" crossorigin href="/assistant/assets/src-CfUWwwYf.css">
|
|
171
|
-
<link rel="stylesheet" crossorigin href="/assistant/assets/index-
|
|
172
|
+
<link rel="stylesheet" crossorigin href="/assistant/assets/index-C9GrLGul.css">
|
|
172
173
|
<script>window.__VELLUM_CONFIG__={"webUrl":"https://www.vellum.ai","platformUrl":"https://platform.vellum.ai"}</script></head>
|
|
173
174
|
<body>
|
|
174
175
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./react-DJZBPgpf.js";import{t as n}from"./button-amTXFI-2.js";import{d as r,h as i,t as a}from"./chunk-5KNZJZUH-DdS6bb-3.js";import{n as o}from"./QueryClientProvider-DKhXIxGb.js";import{t as s}from"./useQuery-B45lW1Kk.js";import{t as c}from"./useMutation-Lj4VunQV.js";import{t as l}from"./jsx-runtime-CVSDxk6A.js";import{t as u}from"./cn-C36Yvcac.js";import{t as d}from"./typography-D5f7kt80.js";import{t as f}from"./card-Bv5O5juh.js";import{t as p}from"./chevron-down-qD-re7AW.js";import{t as m}from"./notice-DkcNAP8O.js";import{A as h,k as g,n as _,r as v}from"./src-B2IjVySQ.js";import{t as y}from"./tag-CV4v7fRF.js";import{t as b}from"./input-CoUmPnRU.js";import{t as x}from"./list-row-D5MFdbkH.js";import{n as S}from"./stat-square-CTHnQ1jc.js";import{t as C}from"./panel-item-CouW2A55.js";import{t as w}from"./confirm-dialog-CSkhRFRk.js";import{t as T}from"./dropdown-ByHOpeOU.js";import{n as E,t as D}from"./create-selectors-8NePGNlX.js";import{t as O}from"./assistant-identity-store-CX03CK8q.js";import{n as k}from"./utils-xg2dl_KJ.js";import{c as A}from"./routes-BbeIx_F9.js";import{i as j,o as M,r as N}from"./sdk.gen-BhtkuoSl.js";import{t as P}from"./assistant-feature-flag-store-CKUjJHuh.js";import{t as F}from"./public-asset-Di3QykUd.js";import{Ea as I,Nt as ee,Xi as te,ar as ne,b as L,d as re,ir as ie,ji as ae,l as oe,ln as R,oa as z,un as B,x as se,y as ce,yr as le}from"./index-CSefSVJO.js";import{t as ue}from"./use-active-assistant-id-BNRMo_Mi.js";import{a as de,c as fe,i as pe,l as me,n as he,s as ge,t as _e,u as V}from"./use-invite-link-dialog-CExxDwnZ.js";import{t as ve}from"./detail-card-RGTjHkZ8.js";import{n as ye,t as be}from"./mobile-sidebar-drawer-3LqMCZgK.js";import{t as H}from"./mutation-error-CrhKyTkx.js";var U=e(t(),1),W=l();function G({icon:e,title:t,description:n,action:r,className:i}){return(0,W.jsxs)(`div`,{className:u(`flex flex-col items-center justify-center gap-3 px-4 py-12 text-center`,i),children:[e?(0,W.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-xl bg-[var(--surface-sunken)] text-[var(--content-tertiary)]`,children:e}):null,(0,W.jsx)(`h3`,{className:`text-title-small text-[var(--content-default)]`,children:t}),n?(0,W.jsx)(`p`,{className:`max-w-md text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:n}):null,r?(0,W.jsx)(`div`,{className:`mt-1`,children:r}):null]})}var K=D(E()(e=>({selectedAdapter:`slack`,selectAdapter:t=>e({selectedAdapter:t})})));function q({channels:e,selectedKey:t,onSelect:n}){return(0,W.jsx)(f.Root,{className:`flex h-full flex-col overflow-hidden`,children:(0,W.jsxs)(f.Body,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-4`,children:[(0,W.jsx)(`h2`,{className:`text-title-medium`,style:{color:`var(--content-default)`},children:`Channels`}),(0,W.jsx)(`div`,{className:`flex flex-col gap-1`,children:e.map(e=>(0,W.jsx)(xe,{channel:e,selected:e.key===t,onClick:()=>n(e.key)},e.key))})]})})}function xe({channel:e,selected:t,onClick:n}){let r=e.status===`ready`,i=B(e.key),a=r?`Connected`:`Not connected`;return(0,W.jsx)(C,{asChild:!0,active:t,label:`${i}, ${a}`,children:(0,W.jsxs)(`button`,{type:`button`,onClick:n,className:`flex h-auto w-full items-center gap-2 rounded-[6px] px-[8px] py-2 text-left`,children:[(0,W.jsx)(R,{channelId:e.key,className:`h-4 w-4 shrink-0 text-[color:var(--content-secondary)]`}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-body-medium-default`,children:i}),(0,W.jsx)(`span`,{className:`flex shrink-0 items-center`,children:(0,W.jsx)(y,{tone:r?`positive`:`neutral`,children:a})})]})})}function Se({children:e}){return(0,W.jsxs)(f.Root,{children:[(0,W.jsx)(f.Header,{children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`img`,{src:F(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),(0,W.jsx)(d,{as:`span`,variant:`body-medium-default`,children:`Slack setup`})]})}),(0,W.jsx)(f.Body,{children:e})]})}var J=ce.map(e=>e.riskThreshold),Y={none:{label:L(`none`).label,sublabel:`ask before every action`,tone:`negative`},low:{label:L(`low`).label,sublabel:`low-risk actions, ask for the rest`,tone:`warning`},medium:{label:L(`medium`).label,sublabel:`beyond its workspace too`,tone:`info`},high:{label:L(`high`).label,sublabel:`acts freely`,tone:`positive`}},X=[`trusted_contact`,`unverified_contact`,`unknown`];function Ce(e,t){let n={};for(let r of e){if(r.selector.scope!==`channel`||r.selector.adapter!==t)continue;let e=r.selector.channelExternalId;e&&(r.contactType===`trusted_contact`||!(e in n))&&(n[e]=r.threshold)}return n}function we(e){return{tier:e??null,overridden:e!==void 0}}function Te({channelName:e,settings:t,defaultTier:r,loading:i=!1,error:a=!1,onTierChange:o,onReset:s}){let c=i||a,l=J.map(e=>({value:e,label:Y[e].label,sublabel:Y[e].sublabel,disabled:c}));return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3 px-2 pt-1 pb-4`,children:[t.overridden?(0,W.jsx)(m,{tone:`warning`,title:`Custom access.`,className:`border-dashed`,actions:(0,W.jsx)(n,{type:`button`,variant:`outlined`,onClick:s,disabled:c,children:`Reset to default`}),children:`This channel isn’t following your global Assistant Access setting.`}):null,(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(d,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:`Assistant Access`}),i?(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:`Loading…`}):a?(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-negative)]`,children:`Couldn’t load — try reopening this page`}):t.overridden?(0,W.jsx)(y,{tone:`warning`,children:`overridden`}):(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:`default`})]}),(0,W.jsx)(S,{items:l,value:t.tier??r,onChange:o,ariaLabel:`Assistant Access in ${e}`})]})}var Ee={positive:`var(--system-positive-strong)`,negative:`var(--system-negative-strong)`,warning:`var(--system-mid-strong)`,info:`var(--system-info-strong)`,neutral:`var(--content-secondary)`};function De(e,t){switch(e){case`none`:return(0,W.jsxs)(W.Fragment,{children:[t,` replies in this channel, but asks you before taking any action.`]});case`low`:return(0,W.jsxs)(W.Fragment,{children:[t,` replies and runs safe, read-only actions on its own, like web searches and reading files in its workspace. Anything that writes, sends, or spends asks you first.`]});case`medium`:return(0,W.jsxs)(W.Fragment,{children:[t,` also handles medium-risk requests on its own, like network requests that use your connected accounts. Anything that writes, sends, or spends still asks you first.`]});case`high`:return(0,W.jsxs)(W.Fragment,{children:[t,` answers any request on its own without asking. Tools that take action — writing, sending, spending — still come to you first.`]})}}function Oe({assistantName:e}){return(0,W.jsxs)(f.Root,{children:[(0,W.jsx)(f.Header,{children:`Assistant Access levels`}),(0,W.jsx)(f.Body,{className:`grid gap-4 sm:grid-cols-2`,children:J.map(t=>{let n=Y[t];return(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`h-1.5 w-1.5 rounded-full`,style:{backgroundColor:Ee[n.tone]}}),(0,W.jsx)(d,{as:`span`,variant:`body-small-emphasised`,children:n.label})]}),(0,W.jsx)(d,{as:`p`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:De(t,e)})]},t)})}),(0,W.jsx)(f.Footer,{children:(0,W.jsxs)(d,{as:`p`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:[`Your`,` `,(0,W.jsx)(a,{to:A.settings.privacy,className:`text-[var(--content-link)] underline hover:text-[var(--content-link-hover)]`,children:`Trust Rules`}),` `,`fine-tune these levels: a rule raises or lowers how risky a specific action is treated, which changes when it asks first.`]})})]})}function Z(e){return e.type===`dm`?`dm`:e.isPrivate?`private`:`public`}function ke(e){return e.filter(e=>Z(e)!==`dm`)}function Ae(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===null||Z(e)===n)&&(r===``||e.name.toLowerCase().includes(r))).sort((e,t)=>e.name.localeCompare(t.name))}function je(e){let t={public:0,private:0,dm:0};for(let n of e)t[Z(n)]+=1;return t}function Me(e){return e.memberCount==null?null:e.memberCount===1?`1 member`:`${e.memberCount} members`}var Ne=[{value:null,label:`All`},{value:`public`,label:`Public`},{value:`private`,label:`Private`}],Pe={public:z,private:te},Fe=100,Ie=new Set;function Le({assistantDisplayName:e,slackHandle:t,channels:r,loading:i=!1,error:a=!1,tierOverrides:o,defaultTier:s=null,accessControlsSupported:c=!0,tierOverridesLoading:l=!1,tierOverridesError:p=!1,pendingChannelIds:m=Ie,onTierChange:h,onTierReset:g}){let[y,x]=(0,U.useState)(``),[S,C]=(0,U.useState)(null),[w,T]=(0,U.useState)(new Set),[E,D]=(0,U.useState)(!1),O=e=>{T(t=>{if(E){let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}return t.has(e)?new Set:new Set([e])})},k=()=>{E?(D(!1),T(new Set)):(D(!0),T(new Set(A.map(e=>e.id))))},A=(0,U.useMemo)(()=>ke(r??[]),[r]),j=(0,U.useMemo)(()=>Ae(A,y,S),[A,y,S]),M=(0,U.useMemo)(()=>je(A),[A]),N=t??`@${e}`,P=(0,W.jsxs)(W.Fragment,{children:[`To add `,e,` to a channel, type`,` `,(0,W.jsxs)(`code`,{className:`text-[color:var(--content-secondary)]`,children:[`/invite `,N]}),` `,`inside that Slack channel.`]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(f.Root,{children:[(0,W.jsx)(f.Header,{children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[`Where `,e,` is present`,(0,W.jsx)(d,{as:`p`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:P})]})}),(0,W.jsx)(f.Body,{className:`flex flex-col gap-3`,children:i?(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:`Loading…`}):a?(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-negative)]`,children:`Couldn’t load channels. Try reopening this page.`}):A.length===0?(0,W.jsx)(G,{icon:(0,W.jsx)(z,{className:`h-6 w-6`}),title:`No channels yet`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`min-w-56 flex-1`,children:(0,W.jsx)(b,{type:`search`,value:y,onChange:e=>x(e.target.value),placeholder:`Search channels`,"aria-label":`Search channels`,leftIcon:(0,W.jsx)(ae,{className:`h-4 w-4`}),fullWidth:!0})}),(0,W.jsx)(`div`,{className:`flex items-center gap-2`,role:`group`,"aria-label":`Filter channels by type`,children:Ne.map(({value:e,label:t})=>{let n=S===e,r=e===null?A.length:M[e];return(0,W.jsxs)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>C(e),className:u(`inline-flex h-6 items-center rounded-full px-2.5 text-body-small-emphasised leading-none transition-colors`,n?`bg-[var(--content-default)] text-[var(--surface-base)]`:`bg-[var(--tag-bg-neutral)] text-[color:var(--content-secondary)] hover:text-[color:var(--content-default)]`),children:[t,` `,r]},e??`all`)})}),(0,W.jsx)(n,{type:`button`,variant:`outlined`,onClick:k,children:E?`Collapse all`:`Expand all`})]}),j.length===0?(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`py-4 text-center text-[color:var(--content-tertiary)]`,children:`No channels match.`}):(0,W.jsx)(_.Root,{type:`multiple`,value:[...w],children:j.length>Fe?(0,W.jsx)(`div`,{className:`h-96`,children:(0,W.jsx)(v,{items:j,computeItemKey:(e,t)=>t.id,itemContent:(e,t)=>(0,W.jsx)(Q,{channel:t,open:w.has(t.id),onToggle:()=>O(t.id),pending:m.has(t.id),overridesLoading:l,overridesError:p,defaultTier:s,accessControls:c,tierOverride:o?.[t.id],onTierChange:e=>h?.(t.id,e),onReset:()=>g?.(t.id)}),className:`h-full`})}):j.map(e=>(0,W.jsx)(Q,{channel:e,open:w.has(e.id),onToggle:()=>O(e.id),pending:m.has(e.id),overridesLoading:l,overridesError:p,defaultTier:s,accessControls:c,tierOverride:o?.[e.id],onTierChange:t=>h?.(e.id,t),onReset:()=>g?.(e.id)},e.id))})]})}),!i&&!a&&A.length>0?(0,W.jsx)(f.Footer,{children:(0,W.jsxs)(d,{as:`p`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:[`Only showing channels `,e,` is in. To remove`,` `,e,` from a channel, use`,` `,(0,W.jsxs)(`code`,{className:`text-[color:var(--content-secondary)]`,children:[`/remove `,N]}),` `,`in that Slack channel.`]})}):null]}),c&&!i&&!a&&A.length>0?(0,W.jsx)(Oe,{assistantName:e}):null]})}function Q({channel:e,open:t,pending:n,overridesLoading:r,overridesError:i,defaultTier:a,accessControls:o,tierOverride:s,onToggle:c,onTierChange:l,onReset:d}){let f=Z(e);if(f===`dm`)return null;let m=Pe[f],h=Me(e),g=we(s),v=g.tier===null?null:Y[g.tier],b=a===null?null:Y[a];return o?(0,W.jsxs)(_.Item,{value:e.id,className:`[&+&]:border-t [&+&]:border-[var(--border-base)]`,children:[(0,W.jsx)(x,{leading:(0,W.jsx)(m,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,onClick:c,contentAriaLabel:`${e.name} — ${t?`collapse`:`expand`} channel settings`,showChevron:!1,selected:t,trailing:(0,W.jsxs)(W.Fragment,{children:[n?(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:`Saving…`}):h==null?null:(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:h}),v===null?(0,W.jsx)(y,{children:b===null?`Default`:`${b.label} • default`}):(0,W.jsxs)(y,{tone:v.tone,children:[v.label,` • custom`]}),(0,W.jsx)(p,{"aria-hidden":`true`,className:u(`h-4 w-4 text-[var(--content-tertiary)] transition-transform`,t&&`rotate-180`)})]})}),(0,W.jsx)(_.Content,{children:(0,W.jsx)(Te,{channelName:e.name,settings:g,defaultTier:a,loading:r,error:i,onTierChange:l,onReset:d})})]}):(0,W.jsx)(x,{leading:(0,W.jsx)(m,{className:`h-4 w-4 text-[var(--content-tertiary)]`}),title:e.name,trailing:h==null?void 0:(0,W.jsx)(`span`,{className:`text-body-small-default text-[color:var(--content-tertiary)]`,children:h})})}var Re=`0.10.7`;function ze(){return k(Re)}function $(e,t,n){return X.map(r=>({selector:{scope:`channel`,adapter:e,channelExternalId:t},contactType:r,threshold:n}))}function Be(e,t,n){return e.selector.scope===`channel`&&e.selector.adapter===t&&e.selector.channelExternalId===n}function Ve({assistantId:e,adapter:t}){let n=o(),r=P.use.channelTrustFloors(),i=ze(),a=r&&i&&!!e,l=(0,U.useMemo)(()=>({path:{assistant_id:e}}),[e]),u=(0,U.useMemo)(()=>ne(l),[l]),d=s({...ie(l),enabled:a,select:e=>Ce(e.cells,t)}),f=s({queryKey:[`channel-permission-resolve`,e,t],queryFn:async()=>{let{data:e}=await M({...l,body:{adapter:t,contactType:`trusted_contact`},throwOnError:!0});return e.resolved?.threshold??null},enabled:a,retry:!1,staleTime:3e4}),p=(e,r)=>{let i=n.getQueryData(u),a=Date.now();return n.setQueryData(u,n=>({cells:[...(n?.cells??[]).filter(n=>!Be(n,t,e)),...r.map(e=>({...e,updatedAt:a}))]})),{previous:i}},m=c({mutationFn:async({channelExternalId:e,tier:n})=>{await Promise.all($(t,e,n).map(e=>j({...l,body:e,throwOnError:!0})))},onMutate:({channelExternalId:e,tier:n})=>p(e,$(t,e,n)),onError:(e,t,r)=>{n.setQueryData(u,r?.previous),H(`Failed to save channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:u})}),h=c({mutationFn:async({channelExternalId:e})=>{await Promise.all(X.map(n=>N({...l,body:{selector:{scope:`channel`,adapter:t,channelExternalId:e},contactType:n},throwOnError:!0})))},onMutate:({channelExternalId:e})=>p(e,[]),onError:(e,t,r)=>{n.setQueryData(u,r?.previous),H(`Failed to reset channel settings`)(e)},onSettled:()=>n.invalidateQueries({queryKey:u})}),g=(0,U.useMemo)(()=>{let e=new Set;return m.isPending&&m.variables&&e.add(m.variables.channelExternalId),h.isPending&&h.variables&&e.add(h.variables.channelExternalId),e},[m.isPending,m.variables,h.isPending,h.variables]);return a?{supported:!0,tierOverrides:d.data,defaultCellTier:f.data,pendingChannelIds:g,isLoading:d.isPending,isError:d.isError,onTierChange:(e,t)=>m.mutate({channelExternalId:e,tier:t}),onTierReset:e=>{d.data?.[e]!==void 0&&h.mutate({channelExternalId:e})}}:{supported:!1,tierOverrides:void 0,defaultCellTier:void 0,pendingChannelIds:new Set,isLoading:!1,isError:!1,onTierChange:void 0,onTierReset:void 0}}function He({assistantId:e,assistantDisplayName:t,slackHandle:n}){let r=s({...oe(e),enabled:!!e,select:e=>e.channels}),i=Ve({assistantId:e,adapter:`slack`}),a=s({queryKey:[`thresholds`,e],queryFn:()=>se(e),enabled:i.supported&&!!e,staleTime:3e4}).data?.interactive??null,o=i.defaultCellTier===void 0?null:i.defaultCellTier??a;return(0,W.jsx)(Le,{assistantDisplayName:t,slackHandle:n,accessControlsSupported:i.supported,defaultTier:o,channels:r.data,loading:r.isPending,error:r.isError,tierOverrides:i.tierOverrides,tierOverridesLoading:i.isLoading,tierOverridesError:i.isError,pendingChannelIds:i.pendingChannelIds,onTierChange:i.onTierChange,onTierReset:i.onTierReset})}function Ue({slackHandle:e,disconnectPending:t=!1,onDisconnect:r,children:i}){return(0,W.jsxs)(f.Root,{children:[(0,W.jsx)(f.Header,{children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`img`,{src:F(`/images/integrations/slack.svg`),alt:``,className:`size-8 rounded-lg bg-[var(--surface-sunken)] p-1`}),e?(0,W.jsx)(d,{as:`span`,variant:`body-medium-default`,children:e}):null,(0,W.jsx)(y,{tone:`positive`,leftIcon:(0,W.jsx)(I,{}),children:`Connected`}),(0,W.jsx)(`div`,{className:`ml-auto`,children:(0,W.jsx)(n,{type:`button`,variant:`ghost`,onClick:r,disabled:!r||t,children:t?`Disconnecting…`:`Disconnect`})})]})}),(0,W.jsx)(f.Body,{children:i})]})}function We({threadMode:e,threadModePending:t=!1,onThreadModeChange:n}){return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(d,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:`Thread Behavior`}),(0,W.jsxs)(h,{value:e??`mention_then_thread`,onValueChange:e=>n?.(e),disabled:t||!n,"aria-label":`Slack thread behavior`,children:[(0,W.jsx)(g,{value:`mention_only`,label:`Mentions only`,helperText:`Bot only responds when @mentioned.`}),(0,W.jsx)(g,{value:`mention_then_thread`,label:`Follow threads after first mention`,helperText:`After an @mention in a thread, bot listens to all subsequent replies.`})]})]})}var Ge={no_one:{title:`Block all messages?`,message:`Setting this channel to “No one” hard-denies every inbound message — including messages from you.
|
|
2
|
-
|
|
3
|
-
You can reverse this at any time.`,confirmLabel:`Block all`,destructive:!0},any_contact:{title:`Allow any contact?`,message:`“Any contact” admits every matched contact in this channel — including pending, unverified ones — not just your verified contacts.
|
|
4
|
-
|
|
5
|
-
Best for channels consisting of only people you already trust.`,confirmLabel:`Allow any contact`},strangers:{title:`Allow strangers?`,message:`Are you sure you want to allow strangers to contact your assistant through this channel?
|
|
6
|
-
|
|
7
|
-
Doing so could cost you money and open you up to security and privacy vulnerabilities.
|
|
8
|
-
|
|
9
|
-
Enable with extreme caution.`,confirmLabel:`Allow strangers`,destructive:!0}},Ke={slack:{label:`Slack`,disconnectMessage:`This clears the stored Slack bot and app tokens for this assistant. You can reconnect later.`,hasTrustFloorControl:!1},telegram:{label:`Telegram`,disconnectMessage:`This clears the stored Telegram bot token for this assistant. You can reconnect later.`,hasTrustFloorControl:!0,disconnectedPitch:e=>`Connect a Telegram bot so ${e} can send and receive messages on Telegram.`},phone:{label:`Phone Calling`,disconnectMessage:`This clears the stored Twilio credentials for this assistant. You can reconnect later.`,hasTrustFloorControl:!0,disconnectedPitch:e=>`Connect your Twilio account so ${e} can make and answer phone calls.`}};function qe({assistantId:e,assistantName:t,channels:n,pendingChannelKey:r=null,slackThreadMode:i,slackThreadModePending:a=!1,channelPolicies:o,policySavingKey:s=null,policiesLoading:c=!1,policiesError:l=!1,onChannelPolicyChange:u,onSetup:d,onDisconnect:f,onSaveTelegramToken:p,onSaveSlackConfig:m,slackSaveStatus:h,slackSaveError:g,onSlackThreadModeChange:_,onSaveTwilioCredentials:v,initialChannel:y=null}){let b=K.use.selectedAdapter(),x=K.use.selectAdapter(),[S,C]=(0,U.useState)(null),[T,E]=(0,U.useState)(null),[D,O]=(0,U.useState)(!1),[k]=(0,U.useState)(y);(0,U.useEffect)(()=>{k&&x(k)},[k,x]);let A=V(t),j=S?Ke[S]:null,M=T?Ge[T.policy]:null,N=(e,t)=>{if(Ge[t]){E({channelKey:e,policy:t});return}u?.(e,t)},P=e=>{x(e),O(!1)},F=n.find(e=>e.key===b)??n[0];if(!F)return null;let I=(0,W.jsx)(Je,{channel:F,assistantId:e,assistantName:t,assistantDisplayName:A,pending:r===F.key,initialManualEntry:k===F.key,onSetup:d?()=>d(F.key):void 0,onDisconnect:f?()=>C(F.key):void 0,onSaveTelegramToken:p,onSaveSlackConfig:m,slackSaveStatus:h,slackSaveError:g,slackThreadMode:i,slackThreadModePending:a,onSlackThreadModeChange:_,onSaveTwilioCredentials:v,policy:o?.[F.key],policySaving:s===F.key,policyLoading:c,policyError:l,onPolicyChange:u?e=>N(F.key,e):void 0},F.key);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 overflow-hidden sm:flex-row sm:gap-6`,children:[(0,W.jsx)(`div`,{className:`flex items-center sm:hidden`,children:(0,W.jsx)(ye,{onClick:()=>O(!0)})}),(0,W.jsx)(be,{open:D,onClose:()=>O(!1),title:`Channels`,children:(0,W.jsx)(q,{channels:n,selectedKey:F.key,onSelect:P})}),(0,W.jsx)(`aside`,{className:`hidden min-h-0 w-[320px] shrink-0 overflow-y-auto self-stretch sm:block`,children:(0,W.jsx)(q,{channels:n,selectedKey:F.key,onSelect:P})}),(0,W.jsx)(`section`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto`,children:F.key===`slack`?I:(0,W.jsx)(ve,{children:I})})]}),(0,W.jsx)(w,{open:S!==null,title:`Disconnect ${j?.label??``}?`,message:j?.disconnectMessage??``,confirmLabel:`Disconnect`,destructive:!0,onConfirm:()=>{S&&f&&f(S),C(null)},onCancel:()=>C(null)}),(0,W.jsx)(w,{open:T!==null,title:M?.title??``,message:M?.message??``,confirmLabel:M?.confirmLabel??`Confirm`,destructive:M?.destructive??!1,onConfirm:()=>{T&&u?.(T.channelKey,T.policy),E(null)},onCancel:()=>E(null)})]})}function Je({channel:e,assistantId:t,assistantName:r,assistantDisplayName:i,pending:a,initialManualEntry:o=!1,onSetup:s,onDisconnect:c,onSaveTelegramToken:l,onSaveSlackConfig:u,slackSaveStatus:d,slackSaveError:f,slackThreadMode:p,slackThreadModePending:m=!1,onSlackThreadModeChange:h,onSaveTwilioCredentials:g,policy:_,policySaving:v=!1,policyLoading:b=!1,policyError:x=!1,onPolicyChange:S}){let C=Ke[e.key],w=e.status===`ready`,[T,E]=(0,U.useState)(o),D=w||T;return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[e.key!==`slack`&&w?(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(y,{tone:`positive`,leftIcon:(0,W.jsx)(I,{}),children:`Connected`}),e.address?(0,W.jsx)(`span`,{className:`text-body-medium-lighter`,style:{color:`var(--content-tertiary)`},children:e.address}):null,(0,W.jsx)(`div`,{className:`ml-auto`,children:(0,W.jsx)(n,{type:`button`,variant:`danger`,onClick:c,disabled:!c||a,children:a?`Disconnecting…`:`Disconnect`})})]}):e.key!==`slack`&&!T?(0,W.jsx)(G,{icon:(0,W.jsx)(R,{channelId:e.key,className:`h-6 w-6`}),title:`${B(e.key)} isn't connected`,description:C.disconnectedPitch?.(i),action:(0,W.jsxs)(`div`,{className:`flex flex-col items-center gap-1`,children:[(0,W.jsx)(n,{type:`button`,variant:`outlined`,onClick:s,disabled:!s||a,children:a?`Opening…`:`Set up`}),(0,W.jsx)(n,{type:`button`,variant:`link`,onClick:()=>E(!0),children:`or connect manually`})]})}):null,w&&C.hasTrustFloorControl&&S?(0,W.jsx)(Ye,{assistantDisplayName:i,policy:_,saving:v,loading:b,error:x,onChange:S}):null,e.key===`telegram`&&D?(0,W.jsx)(Xe,{onSave:l}):null,e.key===`slack`?w?(0,W.jsx)(Ue,{slackHandle:e.address,disconnectPending:a,onDisconnect:c,children:(0,W.jsx)(We,{threadMode:p,threadModePending:m,onThreadModeChange:h})}):(0,W.jsx)(Se,{children:(0,W.jsx)(re,{assistantName:r,onSave:u,saveStatus:d,saveError:f})}):null,e.key===`slack`&&w?(0,W.jsx)(He,{assistantId:t,assistantDisplayName:i,slackHandle:e.address}):null,e.key===`phone`&&D?(0,W.jsx)(Ze,{onSave:g}):null]})}function Ye({assistantDisplayName:e,policy:t,saving:n=!1,loading:r=!1,error:i=!1,onChange:a}){let o=t??`trusted_contacts`,s=me(e),c=ge.map(e=>({value:e,label:fe[e],tooltip:s[e]}));return(0,W.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,W.jsxs)(d,{as:`span`,variant:`body-small-emphasised`,className:`text-[color:var(--content-secondary)]`,children:[`Who can message `,e]}),r?(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:`Loading…`}):i?(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-negative)]`,children:`Couldn’t load this setting. Try reopening this page.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{style:{maxWidth:280},children:(0,W.jsx)(T,{value:o,onChange:a,options:c,disabled:n,"aria-label":`Who can message ${e}`})}),(0,W.jsx)(d,{as:`span`,variant:`body-small-default`,className:`text-[color:var(--content-tertiary)]`,children:s[o]}),o===`trusted_contacts`?(0,W.jsxs)(m,{tone:`info`,className:`max-w-lg`,children:[`People you haven’t verified yet — even teammates in the same channel — can’t get through: `,e,` lets them know they need to be verified and notifies you. You can verify people ahead of time in Contacts.`]}):null]})]})}function Xe({onSave:e}){let[t,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(null),c=t.trim().length>0&&!i;return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(b,{label:`Bot Token`,type:`password`,value:t,onChange:e=>r(e.target.value),placeholder:`Paste your Telegram bot token`,disabled:i,fullWidth:!0}),o?(0,W.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:o}):null,(0,W.jsx)(`div`,{children:(0,W.jsx)(n,{type:`button`,onClick:async()=>{if(!(!e||!c)){a(!0),s(null);try{await e(t.trim()),r(``)}catch(e){s(e instanceof Error?e.message:`Failed to save`)}finally{a(!1)}}},disabled:!c,children:i?`Saving…`:`Save`})})]})}function Ze({onSave:e}){let[t,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(null),u=t.trim().length>0&&i.trim().length>0&&!o;return(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(b,{label:`Account SID`,type:`text`,value:t,onChange:e=>r(e.target.value),placeholder:`ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,disabled:o,fullWidth:!0}),(0,W.jsx)(b,{label:`Auth Token`,type:`password`,value:i,onChange:e=>a(e.target.value),placeholder:`Twilio auth token`,disabled:o,fullWidth:!0}),c?(0,W.jsx)(`p`,{className:`text-label-small`,style:{color:`var(--content-negative)`},children:c}):null,(0,W.jsx)(`div`,{children:(0,W.jsx)(n,{type:`button`,onClick:async()=>{if(!(!e||!u)){s(!0),l(null);try{await e(t.trim(),i.trim()),r(``),a(``)}catch(e){l(e instanceof Error?e.message:`Failed to save`)}finally{s(!1)}}},disabled:!u,children:o?`Saving…`:`Save`})})]})}function Qe(){let[e,t]=i(),n=e.get(`setup`),r=n&&ee(n)?n:null;return(0,U.useEffect)(()=>{r&&t(e=>(e.delete(`setup`),e),{replace:!0})},[r,t]),r}function $e({assistantId:e,onStartSetupConversation:t}){let n=P.use.a2aChannel(),r=O.use.name(),i=Qe(),a=_e(e);return(0,W.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-6 overflow-hidden`,children:[(0,W.jsx)(qe,{assistantId:e,assistantName:V(r),initialChannel:i,...he({assistantId:e,onStartSetupConversation:t})}),n?(0,W.jsx)(pe,{onClick:a.open}):null,(0,W.jsx)(de,{open:a.isOpen,assistantId:e,onClose:a.close})]})}function et(){let e=r(),t=ue();return(0,W.jsx)($e,{assistantId:t,onStartSetupConversation:t=>{le(e,{prompt:t})}},t)}export{et as ChannelsPageRoute};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/native-file-Cn3RbQbT.js","assets/chunk-jRWAZmH_.js","assets/preload-helper-BewR0kVT.js","assets/dist-DS5iJwBJ2.js","assets/pdf-CuY9CA7Q.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./chunk-jRWAZmH_.js";import{t}from"./capture-error-Dhiismgm.js";import{t as n}from"./react-DJZBPgpf.js";import{F as r,t as i}from"./button-amTXFI-2.js";import{t as a}from"./preload-helper-BewR0kVT.js";import{t as o}from"./useQuery-B45lW1Kk.js";import{t as s}from"./jsx-runtime-CVSDxk6A.js";import{t as c}from"./typography-D5f7kt80.js";import{t as l}from"./chevron-left-BMF1xNfR.js";import{t as u}from"./chevron-right-DqqmezXC.js";import{t as d}from"./download-CAuK-nZ6.js";import{t as f}from"./file-DsyJLS2u.js";import{t as p}from"./loader-circle-Cz7opInR.js";import{t as m}from"./x-CkSVp1Ok.js";import{a as h,m as g}from"./src-B2IjVySQ.js";import{n as _,t as v}from"./file-markdown-BXUvAQ24.js";import{l as y}from"./sdk.gen-BwnFjFcp.js";import{t as b}from"./dist-DS5iJwBJ2.js";import{t as x}from"./browser-BPZAXjRE.js";var S=e(n(),1),ee=e(r(),1),C=s(),w=`width=500,height=600`;function T(e){if(!e)return null;let t;try{let n=typeof window>`u`?`http://localhost`:window.location.origin;t=new URL(e,n)}catch{return null}return t.protocol!==`https:`&&t.protocol!==`http:`?null:t}function E(e){let t=T(e);if(!t)return!1;let n=t.pathname.toLowerCase();return t.searchParams.get(`response_type`)===`code`&&t.searchParams.has(`client_id`)&&t.searchParams.has(`redirect_uri`)||t.searchParams.has(`client_id`)&&t.searchParams.has(`redirect_uri`)&&/oauth|authorize|auth/.test(n)}function D(e){if(typeof window>`u`)return null;let t=T(e);return!t||t.origin!==window.location.origin?null:`${t.pathname}${t.search}${t.hash}`}function O(e){return T(e)?.href??null}function k(e){if(!E(e))return!1;if(b.isNativePlatform()){let t=O(e);return t?(x(t),!0):!1}let t=window.open(e,`_blank`,w);return t===null?!1:(t.focus(),!0)}function A(e){return k(e)}function j(e){if(k(e))return!0;let t=window.open(e,`_blank`);return t===null?!1:(t.focus(),!0)}function M(e,t){let n=D(e);if(n)return t.push(n),{kind:`routed`};let r=O(e);return r?t.isNative?(x(r),{kind:`opened`}):j(r)?{kind:`opened`}:{kind:`blocked`,url:r}:{kind:`invalid`}}async function N(e,t){if(!t||t.startsWith(`rehydrated:`))return null;try{let{data:n,error:r}=await y({path:{assistant_id:e,id:t},parseAs:`blob`,throwOnError:!1});return!r&&n instanceof Blob?n:null}catch{return null}}async function P(e,t){let{saveFile:n}=await a(async()=>{let{saveFile:e}=await import(`./native-file-Cn3RbQbT.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3]));if(t){let r=await N(t,e.id);if(r){await n(r,e.filename);return}}e.previewUrl&&await n(e.previewUrl,e.filename)}function F(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n>=10||r===0?Math.round(n).toString():n.toFixed(1)} ${t[r]}`}function I(e,t){let n=(e||``).toLowerCase(),r=t.split(`.`).pop()?.toLowerCase()??``;return n.startsWith(`image/`)?`image`:n.startsWith(`video/`)?`video`:n.startsWith(`audio/`)?`audio`:n===`application/pdf`||r===`pdf`?`pdf`:n===`application/zip`||n===`application/x-tar`||n===`application/gzip`||[`zip`,`tar`,`gz`,`tgz`,`rar`,`7z`].includes(r)?`archive`:n===`text/csv`||n===`application/vnd.ms-excel`||n===`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`||[`csv`,`xlsx`,`xls`,`numbers`].includes(r)?`spreadsheet`:`ts.tsx.js.jsx.py.rb.go.rs.java.kt.swift.c.cc.cpp.h.hpp.sh.bash.zsh.html.css.scss.json.yaml.yml.toml.xml`.split(`.`).includes(r)?`code`:n===`application/msword`||n===`application/vnd.openxmlformats-officedocument.wordprocessingml.document`||[`doc`,`docx`,`pages`].includes(r)?`document`:n.startsWith(`text/`)||[`txt`,`md`,`rtf`].includes(r)?`text`:`file`}function L(e){let t=e.replace(/\s/g,``),n=t.endsWith(`==`)?2:+!!t.endsWith(`=`);return Math.max(0,Math.floor(t.length*3/4)-n)}function R(e){let t=e.match(/;base64,(.*)$/);if(!t?.[1])return null;let n=atob(t[1]),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function z(e,t=28){if(e.length<=t)return e;let n=Math.max(4,Math.floor((t-1)/2));return`${e.slice(0,n)}…${e.slice(e.length-n)}`}var B=1.5,V=20,H=!1;async function U(){let e=await a(()=>import(`./pdf-CuY9CA7Q.js`),__vite__mapDeps([4,2]));return H||=(e.GlobalWorkerOptions.workerSrc=`https://cdn.jsdelivr.net/npm/pdfjs-dist@${e.version}/legacy/build/pdf.worker.min.mjs`,!0),e}function te({url:e,className:t}){let n=(0,S.useRef)(null),[r,i]=(0,S.useState)(null),[a,o]=(0,S.useState)(0),[s,c]=(0,S.useState)(!0),[l,u]=(0,S.useState)(null),d=(0,S.useRef)(new Map),f=(0,S.useRef)(new Set);(0,S.useEffect)(()=>{let t=!1;async function n(){c(!0),u(null),i(null),o(0),f.current.clear();try{let n=await U(),r;if(e.startsWith(`data:`)){let t=R(e);r=t?{data:t}:e}else r=e;let a=await n.getDocument(r).promise;if(t){a.destroy();return}i(a),o(Math.min(a.numPages,V))}catch{t||u(`Failed to load PDF.`)}finally{t||c(!1)}}return n(),()=>{t=!0}},[e]),(0,S.useEffect)(()=>()=>{r&&r.destroy()},[r]);let m=(0,S.useCallback)(async e=>{if(!r||f.current.has(e))return;let t=d.current.get(e);if(t){f.current.add(e);try{let n=await r.getPage(e),i=n.getViewport({scale:B});t.width=i.width,t.height=i.height,await n.render({canvas:t,viewport:i}).promise}catch{f.current.delete(e)}}},[r]);(0,S.useEffect)(()=>{if(!r||a===0)return;let e=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=Number(t.target.dataset.page);e&&m(e)}},{root:n.current,rootMargin:`200px`});return d.current.forEach(t=>e.observe(t)),()=>e.disconnect()},[r,a,m]);let h=(0,S.useCallback)(e=>t=>{t?d.current.set(e,t):d.current.delete(e)},[]);return s?(0,C.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,C.jsx)(p,{className:`h-8 w-8 animate-spin text-white/70`})}):l?(0,C.jsx)(`div`,{className:`w-full max-w-sm rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:(0,C.jsx)(`p`,{className:`text-body-medium-lighter text-white/80`,children:l})}):(0,C.jsx)(`div`,{ref:n,className:`flex max-h-[80vh] flex-col items-center gap-2 overflow-y-auto rounded ${t??``}`,children:Array.from({length:a},(e,t)=>(0,C.jsx)(`canvas`,{ref:h(t+1),"data-page":t+1,className:`w-[90vw] max-w-[800px]`,style:{height:`auto`}},t+1))})}function W({message:e,filename:t,onDownload:n,downloadDisabled:r=!1}){return(0,C.jsxs)(`div`,{className:`w-full max-w-sm rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:[(0,C.jsx)(`p`,{className:`text-body-medium-lighter text-white/80`,children:e}),(0,C.jsx)(i,{variant:`ghost`,leftIcon:(0,C.jsx)(d,{}),onClick:n,disabled:r,"aria-label":`Download ${t}`,className:`mt-4 text-white/70 hover:bg-white/10 hover:text-white max-md:bg-transparent`,tintColor:`currentColor`,children:`Download`})]})}var G=class extends Error{};async function K(e,t,n){if(t>204800)throw new G;if(e.startsWith(`data:`)){let t=R(e);if(!t)throw Error(`Malformed data URI`);return new TextDecoder().decode(t)}let r=await fetch(e,{signal:n});if(!r.ok)throw Error(`Failed to load file: ${r.status}`);let i=await r.blob();if(i.size>204800)throw new G;return i.text()}function ne({url:e,filename:n,mimeType:r,sizeBytes:i}){let[o,s]=(0,S.useState)({status:`loading`});return(0,S.useEffect)(()=>{let n=new AbortController;return s({status:`loading`}),K(e,i,n.signal).then(e=>{n.signal.aborted||s({status:`ready`,text:e})}).catch(e=>{if(n.signal.aborted)return;let r=e instanceof G;r||t(e,{context:`attachment-text-preview`,bestEffort:!0}),s({status:`error`,tooLarge:r})}),()=>n.abort()},[e,i]),o.status===`loading`?(0,C.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,C.jsx)(p,{className:`h-8 w-8 animate-spin text-white/70`})}):o.status===`error`?(0,C.jsx)(W,{message:o.tooLarge?`File too large to preview inline.`:`Failed to load preview.`,filename:n,onDownload:async()=>{let{saveFile:t}=await a(async()=>{let{saveFile:e}=await import(`./native-file-Cn3RbQbT.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3]));await t(e,n)}}):(0,C.jsx)(`div`,{className:`max-h-[80vh] w-[min(90vw,800px)] overflow-auto rounded-lg p-6`,style:{backgroundColor:`var(--surface-overlay)`,color:`var(--content-default)`},children:(0,C.jsx)(re,{text:o.text,filename:n,mimeType:r})})}function re({text:e,filename:t,mimeType:n}){return _(t,n)?(0,C.jsx)(v,{content:e}):(0,C.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-body-small-default`,children:e})}var ie=new Set([`ts`,`tsx`,`js`,`jsx`,`py`,`json`,`md`,`sh`,`bash`,`html`,`css`,`yaml`,`yml`,`txt`]),ae=new Set([`application/json`,`application/javascript`,`application/xml`]),q=e=>{let t=e.lastIndexOf(`.`);return t===-1||t===e.length-1?``:e.slice(t+1).toLowerCase()},J=({open:e,onClose:t,attachment:n,assistantId:r,siblingAttachments:s,onNavigate:h})=>{let g=(0,S.useRef)(null),_=(0,S.useRef)(null);(0,S.useEffect)(()=>{e&&_.current?.focus()},[e]);let v=!n.previewUrl&&n.id.startsWith(`rehydrated:`),y=e&&!n.previewUrl&&!!r&&!!n.id&&!v,{data:b,isError:x}=o({queryKey:[`attachmentContent`,r,n.id],queryFn:async()=>{let e=await N(r,n.id);if(!e)throw Error(`Failed to load file`);return e},enabled:y,staleTime:1/0,retry:!1}),[w,T]=(0,S.useState)(null);(0,S.useEffect)(()=>{if(!b){T(null);return}let e=URL.createObjectURL(b);return T(e),()=>{URL.revokeObjectURL(e),T(null)}},[b]);let E=n.previewUrl??w,[D,O]=(0,S.useState)(null),k=y&&!w&&!x,A=v?`Preview unavailable — file content was not preserved in chat history.`:x?`Failed to load preview.`:null,j=(0,S.useMemo)(()=>!s||s.length<=1?-1:s.findIndex(e=>e.id===n.id),[s,n.id]),M=j!==-1&&s!=null&&s.length>1,P=(0,S.useCallback)(()=>{!M||!s||!h||h(s[(j-1+s.length)%s.length])},[M,s,j,h]),I=(0,S.useCallback)(()=>{!M||!s||!h||h(s[(j+1)%s.length])},[M,s,j,h]),L=(0,S.useCallback)(e=>{e.key===`Escape`?(e.preventDefault(),t()):e.key===`ArrowLeft`&&M?(e.preventDefault(),P()):e.key===`ArrowRight`&&M&&(e.preventDefault(),I())},[t,P,I,M]),R=(0,S.useCallback)(e=>{e.target===g.current&&t()},[t]),z=(0,S.useCallback)(async()=>{if(!E)return;let{saveFile:e}=await a(async()=>{let{saveFile:e}=await import(`./native-file-Cn3RbQbT.js`).then(e=>e.t);return{saveFile:e}},__vite__mapDeps([0,1,2,3]));await e(E,n.filename)},[E,n.filename]);if(!e)return null;let B=n.mimeType.toLowerCase(),V=B.startsWith(`image/`),H=B.startsWith(`video/`),U=B===`application/pdf`||B===`application/octet-stream`&&n.filename.toLowerCase().endsWith(`.pdf`),G=q(n.filename),K=B.startsWith(`text/`)||ae.has(B)||ie.has(G);return(0,ee.createPortal)((0,C.jsxs)(`div`,{ref:g,role:`dialog`,"aria-modal":`true`,"aria-label":`Preview of ${n.filename}`,className:`fixed inset-0 z-50 flex flex-col items-center justify-center bg-black/80 [-webkit-app-region:no-drag]`,style:{paddingTop:`var(--safe-area-inset-top, env(safe-area-inset-top, 0px))`,paddingBottom:`var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px))`,paddingLeft:`var(--safe-area-inset-left, env(safe-area-inset-left, 0px))`,paddingRight:`var(--safe-area-inset-right, env(safe-area-inset-right, 0px))`},onKeyDown:L,onClick:R,children:[(0,C.jsxs)(`div`,{className:`absolute inset-x-0 top-0 z-10 flex items-center gap-3 px-4`,style:{paddingTop:`calc(var(--safe-area-inset-top, env(safe-area-inset-top, 0px)) + 1rem)`},children:[(0,C.jsx)(c,{variant:`body-small-default`,className:`w-11 shrink-0 truncate text-white/50`,children:F(n.sizeBytes)}),(0,C.jsx)(c,{as:`div`,variant:`body-medium-lighter`,className:`min-w-0 flex-1 truncate text-center text-white/90`,children:n.filename}),(0,C.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,C.jsx)(i,{variant:`ghost`,iconOnly:(0,C.jsx)(d,{}),expandOnMobile:!1,onClick:z,disabled:!E,"aria-label":`Download ${n.filename}`,className:`h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`}),(0,C.jsx)(i,{ref:_,variant:`ghost`,iconOnly:(0,C.jsx)(m,{}),expandOnMobile:!1,onClick:t,"aria-label":`Close preview`,className:`h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`})]})]}),M&&(0,C.jsxs)(`div`,{className:`pointer-events-none absolute inset-x-0 top-1/2 z-10 flex -translate-y-1/2 items-center justify-between px-4`,children:[(0,C.jsx)(i,{variant:`ghost`,iconOnly:(0,C.jsx)(l,{}),expandOnMobile:!1,onClick:P,"aria-label":`Previous attachment`,className:`pointer-events-auto h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`}),(0,C.jsx)(i,{variant:`ghost`,iconOnly:(0,C.jsx)(u,{}),expandOnMobile:!1,onClick:I,"aria-label":`Next attachment`,className:`pointer-events-auto h-11 w-11 rounded-full bg-white/10 text-white/70 hover:bg-white/20 hover:text-white`,tintColor:`currentColor`})]}),(0,C.jsx)(`div`,{className:`flex items-center justify-center`,onClick:e=>e.stopPropagation(),children:k?(0,C.jsx)(`div`,{className:`flex items-center justify-center py-24`,children:(0,C.jsx)(p,{className:`h-8 w-8 animate-spin text-white/70`})}):A?(0,C.jsx)(W,{message:A,filename:n.filename,onDownload:z,downloadDisabled:!E}):U&&E?(0,C.jsx)(te,{url:E}):V&&E&&D!==E?(0,C.jsx)(`img`,{src:E,alt:n.filename,onError:()=>O(E),className:`max-h-[80vh] max-w-[90vw] rounded object-contain`}):H&&E?(0,C.jsx)(`video`,{"data-testid":`video-preview`,src:E,poster:n.thumbnailUrl??void 0,controls:!0,className:`max-h-[80vh] max-w-[90vw] rounded`}):K&&E?(0,C.jsx)(ne,{url:E,filename:n.filename,mimeType:n.mimeType,sizeBytes:n.sizeBytes}):(0,C.jsxs)(`div`,{className:`flex w-full max-w-sm flex-col items-center rounded-lg border border-white/15 bg-white/[0.08] p-8 text-center`,children:[(0,C.jsx)(f,{className:`h-16 w-16 text-white/60`}),(0,C.jsx)(`p`,{className:`mt-4 text-body-medium-default text-white/90`,children:n.filename}),(0,C.jsx)(`p`,{className:`mt-1 text-body-small-default text-white/60`,children:F(n.sizeBytes)}),(0,C.jsx)(i,{variant:`ghost`,leftIcon:(0,C.jsx)(d,{}),onClick:z,disabled:!E,"aria-label":`Download ${n.filename}`,className:`mt-4 text-white/70 hover:bg-white/10 hover:text-white max-md:bg-transparent`,tintColor:`currentColor`,children:`Download`})]})}),M&&(0,C.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 z-10 flex justify-center`,style:{paddingBottom:`calc(var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)) + 2rem)`},onClick:e=>e.stopPropagation(),children:(0,C.jsxs)(c,{variant:`body-small-default`,className:`text-white/50`,children:[j+1,` / `,s.length]})})]}),document.body)};function Y(e,t){let[n,r]=(0,S.useState)(null),i=(0,S.useCallback)(e=>r(e),[]),a=(0,S.useCallback)(()=>r(null),[]),o=(0,S.useCallback)(e=>r(e),[]);return{openPreview:i,previewModal:n?(0,C.jsx)(J,{open:!0,onClose:a,attachment:n,assistantId:e,siblingAttachments:t,onNavigate:o}):null}}function X(e){return e!=null&&(e.startsWith(`vellum://workspace/`)||e.startsWith(`vellum://host/`))}function Z(e){return e.startsWith(`vellum://workspace/`)||e.startsWith(`vellum://host/`)?e:g(e)}function oe({href:e,children:t}){return(0,C.jsx)(`a`,{href:e,target:`_blank`,rel:E(e)?void 0:`noopener noreferrer`,onClick:t=>{A(e)&&t.preventDefault()},className:`text-[var(--system-positive-strong)] underline hover:opacity-80`,children:t})}var Q=`my-2 max-w-full max-h-[400px] rounded-lg border border-[var(--border-default)] object-contain`;function $({alt:e}){return(0,C.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-[var(--surface-sunken)] px-1.5 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Image failed to load`,e?` (${e})`:``]})}function se({src:e,alt:t}){let[n,r]=(0,S.useState)(!1);return n?(0,C.jsx)($,{alt:t}):(0,C.jsx)(`img`,{src:e,alt:t,onError:()=>r(!0),className:Q})}function ce(e){try{return decodeURIComponent(e)}catch{return e}}function le({src:e,alt:n,attachments:r,assistantId:i,onOpenPreview:a}){let[o,s]=(0,S.useState)(null),[c,l]=(0,S.useState)(!1),u=ce(e.split(`/`).pop()??``),d=r?.find(e=>e.filename===u);if((0,S.useEffect)(()=>{if(!d||!i||d.id.startsWith(`rehydrated:`))return;let e=!1;return(async()=>{try{let{data:t,error:n}=await y({path:{assistant_id:i,id:d.id},parseAs:`blob`,throwOnError:!1});if(e)return;if(n||!(t instanceof Blob)){l(!0);return}s(URL.createObjectURL(t))}catch(n){e||(l(!0),t(n,{context:`WorkspaceInlineImage`,bestEffort:!0}))}})(),()=>{e=!0,s(e=>(e&&URL.revokeObjectURL(e),null))}},[d,i]),c||!d&&!o)return(0,C.jsx)($,{alt:n||u});if(!o)return(0,C.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded bg-[var(--surface-sunken)] px-1.5 py-0.5 text-body-small-default text-[var(--content-tertiary)]`,children:[`Loading image…`,n?` (${n})`:``]});let f=(0,C.jsx)(`img`,{src:o,alt:n,className:Q});return!d||!a?f:(0,C.jsx)(`button`,{type:`button`,onClick:()=>a(d),className:`cursor-zoom-in appearance-none border-0 bg-transparent p-0`,"aria-label":n?`Expand image: ${n}`:`Expand image`,children:f})}var ue=(0,S.memo)(function({content:e,className:t,hardLineBreaks:n,onVellumLinkClick:r,attachments:i,assistantId:a}){let{openPreview:o,previewModal:s}=Y(a,i);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(h,{content:e,className:t,hardLineBreaks:n,linkComponent:(0,S.useCallback)(({href:e,children:t})=>r&&X(e)?(0,C.jsx)(`a`,{href:e,onClick:t=>{t.preventDefault(),e&&r(e,t.currentTarget.textContent??``)},className:`text-[var(--system-positive-strong)] underline hover:opacity-80 cursor-pointer`,children:t}):(0,C.jsx)(oe,{href:e,children:t}),[r]),imageComponent:(0,S.useMemo)(()=>({src:e,alt:t})=>X(e)?(0,C.jsx)(le,{src:e,alt:t,attachments:i,assistantId:a,onOpenPreview:o}):(0,C.jsx)(se,{src:e,alt:t}),[i,a,o]),urlTransform:Z}),s]})});export{L as a,P as c,j as d,I as i,N as l,Y as n,F as o,J as r,z as s,ue as t,M as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./button-amTXFI-2.js";import{t}from"./jsx-runtime-CVSDxk6A.js";import{t as n}from"./card-Bv5O5juh.js";import{t as r}from"./createLucideIcon-IRfcSUxS.js";import{r as i}from"./middleware-pbPQ0upo.js";import{t as a}from"./bug-BsuQ5ciQ.js";import{t as o}from"./external-link-Dqpx9nRm.js";import{t as s}from"./globe-4qSOWE2N.js";import{t as c}from"./sparkles-PGiR5v1g.js";import{t as l}from"./tag-CV4v7fRF.js";import{Li as u,Si as d,aa as f,f as p,gi as m,m as h,n as g,p as _,ut as v}from"./index-CSefSVJO.js";var y=r(`git-pull-request`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`line`,{x1:`6`,x2:`6`,y1:`9`,y2:`21`,key:`rroup`}]]),b=t();function x({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12`})})}function S({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`})})}function C({size:e=24,className:t,style:n}){return(0,b.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,width:e,height:e,fill:`currentColor`,className:t,style:n,"aria-hidden":!0,children:(0,b.jsx)(`path`,{d:`M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814ZM9.545 15.568V8.432L15.818 12l-6.273 3.568Z`})})}function w(){return(0,b.jsx)(n,{padding:`lg`,className:`bg-[var(--surface-lift)]`,children:(0,b.jsxs)(`div`,{className:`relative`,children:[(0,b.jsx)(`div`,{className:`pointer-events-none absolute -right-16 -top-16 h-64 w-64 rounded-full opacity-30 blur-3xl`,style:{background:`radial-gradient(circle, var(--system-mid-weak) 0%, transparent 70%)`},"aria-hidden":!0}),(0,b.jsxs)(`div`,{className:`relative flex flex-col items-start gap-3`,children:[(0,b.jsxs)(l,{tone:`neutral`,children:[(0,b.jsx)(u,{className:`h-3.5 w-3.5`}),`Community`]}),(0,b.jsx)(`h1`,{className:`text-[28px] font-semibold leading-tight tracking-tight text-[var(--content-emphasised)]`,children:`Build with us, in the open.`}),(0,b.jsx)(`p`,{className:`max-w-xl text-body-medium-default text-[color:var(--content-tertiary)]`,children:`Vellum is built in the open with a growing community of developers, designers, and tinkerers. Here's how to get involved.`})]})]})})}function T({icon:e,text:t}){return(0,b.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,b.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md bg-[var(--surface-base)]`,children:(0,b.jsx)(e,{size:14,className:`text-[var(--content-secondary)]`,"aria-hidden":!0})}),(0,b.jsx)(`span`,{className:`text-body-medium-lighter text-[color:var(--content-secondary)]`,children:t})]})}function E({accentColor:t,iconColor:r=`var(--aux-white)`,label:a,icon:o,title:s,subtitle:c,benefits:l,primaryAction:u,secondaryAction:d}){return(0,b.jsx)(n,{padding:`lg`,className:`flex-1`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,b.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:t,color:r},children:o}),(0,b.jsx)(`span`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:a})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,b.jsx)(`h2`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:s}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:c})]}),(0,b.jsx)(`ul`,{className:`flex flex-col gap-3`,children:l.map(({icon:e,text:t})=>(0,b.jsx)(T,{icon:e,text:t},t))}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsxs)(e,{onClick:u.onClick,children:[u.icon,u.label]}),d&&(0,b.jsxs)(e,{variant:`ghost`,onClick:()=>window.open(d.href,`_blank`,`noopener,noreferrer`),children:[d.label,(0,b.jsx)(i,{className:`h-3.5 w-3.5`})]})]})]})})}function D({icon:e,iconBg:t,iconColor:r=`white`,title:i,description:a,href:s}){return(0,b.jsx)(`a`,{href:s,target:`_blank`,rel:`noopener noreferrer`,className:`flex flex-1 cursor-pointer`,children:(0,b.jsx)(n,{className:`flex-1 transition-shadow hover:shadow-md`,padding:`lg`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,b.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg`,style:{backgroundColor:t,color:r},children:e}),(0,b.jsx)(o,{size:14,className:`text-[var(--content-tertiary)]`,"aria-hidden":!0})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,b.jsx)(`span`,{className:`text-title-medium text-[var(--content-emphasised)]`,children:i}),(0,b.jsx)(`p`,{className:`text-body-medium-lighter text-[color:var(--content-tertiary)]`,children:a})]})]})})})}function O(){let{handleStar:e}=h();return(0,b.jsxs)(`div`,{className:`space-y-6`,children:[(0,b.jsx)(w,{}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-2`,children:[(0,b.jsx)(E,{accentColor:`var(--content-emphasised)`,iconColor:`var(--surface-base)`,label:`Open Source`,icon:(0,b.jsx)(x,{size:20}),title:`Vellum is open source`,subtitle:`Read the source, star the repo, and contribute fixes and features on GitHub.`,benefits:[{icon:d,text:`Star the repo to follow updates`},{icon:a,text:`Open issues and report bugs`},{icon:y,text:`Contribute fixes and new features`}],primaryAction:{label:`Star on GitHub`,icon:(0,b.jsx)(d,{size:16}),onClick:e},secondaryAction:{label:`View source`,href:_}}),(0,b.jsx)(E,{accentColor:`#5865F2`,label:`Discord`,icon:(0,b.jsx)(v,{size:20}),title:`Join our community`,subtitle:`Talk to the team, share feedback, request features, and get answers faster.`,benefits:[{icon:f,text:`Talk directly with the team`},{icon:c,text:`Share feedback and request features`},{icon:m,text:`Get answers faster from the community`}],primaryAction:{label:`Join Discord`,icon:(0,b.jsx)(v,{size:16,style:{color:`currentColor`}}),onClick:p}})]}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,b.jsx)(`h2`,{className:`text-label-medium-default uppercase tracking-wider text-[color:var(--content-tertiary)]`,children:`More from Vellum`}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-3`,children:[(0,b.jsx)(D,{icon:(0,b.jsx)(s,{size:20}),iconBg:`#22c55e`,title:`Community Hub`,description:`Showcases, guides, and projects shared by the community.`,href:g}),(0,b.jsx)(D,{icon:(0,b.jsx)(S,{size:20}),iconBg:`var(--content-default)`,iconColor:`var(--surface-base)`,title:`Follow on X`,description:`Product updates, releases, and behind-the-scenes.`,href:`https://x.com/vellum_ai`}),(0,b.jsx)(D,{icon:(0,b.jsx)(C,{size:20}),iconBg:`#ef4444`,title:`YouTube channel`,description:`Walkthroughs, tutorials, and product deep-dives.`,href:`https://www.youtube.com/@Vellum_AI`})]})]})]})}export{O as CommunityPage};
|