forge-openclaw-plugin 0.3.15 → 0.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/assets/{action-bar-B9MYlps2.js → action-bar-D3CEYlj4.js} +1 -1
- package/dist/assets/{activity-page-DbzbChcE.js → activity-page-Ce1pHIu5.js} +1 -1
- package/dist/assets/{ai-surface-workspace-CF0257Hs.js → ai-surface-workspace-DEliwOjF.js} +1 -1
- package/dist/assets/artifacts-page-BgyFVIVM.js +2 -0
- package/dist/assets/{atlas-panel-CO3RYAKn.js → atlas-panel-VZOnJa1c.js} +1 -1
- package/dist/assets/{board-CuxQRKPJ.js → board-DprRipIG.js} +1 -1
- package/dist/assets/{calendar-page-BuuHKEHC.js → calendar-page-Zstsn4uG.js} +1 -1
- package/dist/assets/{calendar-rules-DKftgNx5.js → calendar-rules-BGIBuEDk.js} +1 -1
- package/dist/assets/{calendar-week-toolbar-ChIpkT-G.js → calendar-week-toolbar-DXFkMkbq.js} +1 -1
- package/dist/assets/{charts-BzT4pUPg.js → charts-C5S0-BL7.js} +1 -1
- package/dist/assets/{companion-sync-lab-page-BZRX4Btw.js → companion-sync-lab-page-DIPPLFKt.js} +1 -1
- package/dist/assets/{daily-metrics-dashboard-CXDsaAQd.js → daily-metrics-dashboard-CG-OOCJz.js} +1 -1
- package/dist/assets/{define-workbench-box-CpG0Zb1L.js → define-workbench-box-BEEdtBkQ.js} +1 -1
- package/dist/assets/{entity-link-multiselect-Dl4rZqdg.js → entity-link-multiselect-BfDAROHB.js} +1 -1
- package/dist/assets/{entity-note-count-link-Bs1aKYyD.js → entity-note-count-link-BGOiaash.js} +1 -1
- package/dist/assets/{entity-notes-surface-B56XSw7M.js → entity-notes-surface-DPsJwqQa.js} +1 -1
- package/dist/assets/execution-board-Dg-2GSKv.js +1 -0
- package/dist/assets/{faceted-token-search-Dg2rjknH.js → faceted-token-search-DV7MSVYb.js} +1 -1
- package/dist/assets/{flagship-signal-deck-C6KVPhmM.js → flagship-signal-deck-D3wVL3bC.js} +1 -1
- package/dist/assets/{floating-action-menu-DAFAEBcA.js → floating-action-menu-BUs382px.js} +1 -1
- package/dist/assets/{forms-D1qJ3oOP.js → forms-ByKjodjN.js} +1 -1
- package/dist/assets/{generic-node-view-C6DK5hJ6.js → generic-node-view-BY5dbPXJ.js} +1 -1
- package/dist/assets/{goal-detail-page-CC4VXud6.js → goal-detail-page-MYr6j2B4.js} +1 -1
- package/dist/assets/{goal-dialog-15hD8EBp.js → goal-dialog-nkdME5Uy.js} +1 -1
- package/dist/assets/goals-page-BsFeBzU1.js +1 -0
- package/dist/assets/{graph-BF4IsheG.js → graph-CHVj0Z7n.js} +1 -1
- package/dist/assets/habits-page-wO461EVU.js +1 -0
- package/dist/assets/{health-boxes-DqgvIYoL.js → health-boxes-BphMeSJj.js} +1 -1
- package/dist/assets/index-CSd8ylsy.css +1 -0
- package/dist/assets/index-gmPaoLN-.js +2 -0
- package/dist/assets/{inline-note-fields-COgzxr_7.js → inline-note-fields-BvQwmMAv.js} +1 -1
- package/dist/assets/{insight-flow-dialog-Dmb6NSGp.js → insight-flow-dialog-H_eaOmst.js} +1 -1
- package/dist/assets/{insights-page-OnqR4cYI.js → insights-page-DINYe3cB.js} +3 -3
- package/dist/assets/{kanban-boxes-BWUzntCV.js → kanban-boxes-oACOTDYG.js} +1 -1
- package/dist/assets/{kanban-page-BI16Gzp_.js → kanban-page-BGLXH91f.js} +1 -1
- package/dist/assets/knowledge-graph-page-VfMvw5jL.js +1 -0
- package/dist/assets/{life-force-page-CDEXEQai.js → life-force-page-DQPb6UL-.js} +1 -1
- package/dist/assets/{life-force-workspace-C7UOnJEf.js → life-force-workspace-BJ1aI3JE.js} +1 -1
- package/dist/assets/{maps-BTVHALP8.js → maps-CvEHVkBk.js} +1 -1
- package/dist/assets/{metric-tile-boeHB1R1.js → metric-tile-CbEe19Gd.js} +1 -1
- package/dist/assets/{motion-DcgUnXhY.js → motion-BibSzp57.js} +1 -1
- package/dist/assets/{movement-boxes-BUSqaTL2.js → movement-boxes-dtDYhw5c.js} +1 -1
- package/dist/assets/{movement-page-DcbO0497.js → movement-page-BhmwCHjs.js} +1 -1
- package/dist/assets/{note-markdown-DXXI3W3V.js → note-markdown-CG8u2d6p.js} +1 -1
- package/dist/assets/{note-tags-input-CYh3TVW2.js → note-tags-input-D_conqDO.js} +1 -1
- package/dist/assets/{notes-boxes-CMJXX2K0.js → notes-boxes-BLKucFqW.js} +1 -1
- package/dist/assets/notes-page-CafVxWjb.js +1 -0
- package/dist/assets/{open-in-graph-button-4UYrp1XP.js → open-in-graph-button-DFQ4r6SN.js} +1 -1
- package/dist/assets/{orbit-map-BwK7sDaC.js → orbit-map-DsEl3ori.js} +1 -1
- package/dist/assets/overview-page-BffcX-pM.js +1 -0
- package/dist/assets/page-hero-U603l9rQ.js +1 -0
- package/dist/assets/pill-cluster-BYVFNppV.js +1 -0
- package/dist/assets/{preference-entity-handoff-button-C2ATjvws.js → preference-entity-handoff-button-cPrTpHsV.js} +1 -1
- package/dist/assets/{preferences-page-BAexXHye.js → preferences-page-DQjFIOmt.js} +1 -1
- package/dist/assets/{project-collections-B9nr-Ts-.js → project-collections-B9OGHGqm.js} +1 -1
- package/dist/assets/project-detail-page-r1Sw2kcO.js +1 -0
- package/dist/assets/{project-dialog-CBA-D65n.js → project-dialog-B2_PcXAf.js} +1 -1
- package/dist/assets/project-management-hierarchy-page-qLNG8hsh.js +1 -0
- package/dist/assets/{project-management-section-nav-DJ3QKCtr.js → project-management-section-nav-DFUlmMEB.js} +1 -1
- package/dist/assets/{projects-boxes-iBu_PRqe.js → projects-boxes-BA7_XaqX.js} +1 -1
- package/dist/assets/projects-page-B6ggXWFw.js +1 -0
- package/dist/assets/psyche-behaviors-page-ByWpXlLq.js +5 -0
- package/dist/assets/{psyche-flashcards-page-DQaw_vUQ.js → psyche-flashcards-page-B9nSc0mk.js} +1 -1
- package/dist/assets/{psyche-goal-map-page-C-ZTVOEP.js → psyche-goal-map-page-BQU7qI88.js} +1 -1
- package/dist/assets/{psyche-graph-DYzeClxn.js → psyche-graph-DCeP7r2b.js} +1 -1
- package/dist/assets/{psyche-metrics-page-C9hKn10A.js → psyche-metrics-page-DD2lOP-J.js} +1 -1
- package/dist/assets/psyche-mode-guide-page-DbtZgnjr.js +1 -0
- package/dist/assets/psyche-modes-page-3zFJWFQf.js +1 -0
- package/dist/assets/psyche-page-D5vXYkfB.js +1 -0
- package/dist/assets/psyche-patterns-page-BneAAeKS.js +5 -0
- package/dist/assets/{psyche-questionnaire-builder-page-gRwdGXde.js → psyche-questionnaire-builder-page-BH1la5C9.js} +1 -1
- package/dist/assets/{psyche-questionnaire-detail-page-CIP9b2UI.js → psyche-questionnaire-detail-page-DYav634P.js} +1 -1
- package/dist/assets/psyche-questionnaire-run-detail-page-9VaijhJm.js +1 -0
- package/dist/assets/{psyche-questionnaire-run-page-CXiJyd5i.js → psyche-questionnaire-run-page-e1T6k_dS.js} +1 -1
- package/dist/assets/{psyche-questionnaires-page-CFPKwA3O.js → psyche-questionnaires-page-Dyv367z9.js} +1 -1
- package/dist/assets/{psyche-report-detail-page-dU30a2WE.js → psyche-report-detail-page-hqxHIXw2.js} +3 -3
- package/dist/assets/psyche-reports-page-DhIfcGbt.js +1 -0
- package/dist/assets/{psyche-schemas-DDol0j-g.js → psyche-schemas-Cg51Ztxz.js} +1 -1
- package/dist/assets/psyche-schemas-beliefs-page-Dgb5o9vx.js +9 -0
- package/dist/assets/{psyche-screen-time-page-lIe6GQxJ.js → psyche-screen-time-page-D6MnJGNa.js} +1 -1
- package/dist/assets/{psyche-self-observation-page-BTE3KfIl.js → psyche-self-observation-page-C1Vyezbv.js} +1 -1
- package/dist/assets/{psyche-values-page-DclBZ9xw.js → psyche-values-page-B_JWVw1Q.js} +2 -2
- package/dist/assets/{question-flow-dialog-Ded2E85L.js → question-flow-dialog-yMYVk998.js} +2 -2
- package/dist/assets/{report-chain-fields-DY640iqL.js → report-chain-fields-D4NM9a6I.js} +1 -1
- package/dist/assets/rewards-page-B5-bcL4R.js +1 -0
- package/dist/assets/{scheduling-rules-editor-jakFfxqF.js → scheduling-rules-editor-De72IUax.js} +1 -1
- package/dist/assets/{schema-badge-30B5syHA.js → schema-badge-jX28kUa6.js} +1 -1
- package/dist/assets/{schemas-Db29G8NU.js → schemas-BlFy-uPR.js} +1 -1
- package/dist/assets/{select-menu-BF2zI3RW.js → select-menu-BXv1rsVc.js} +1 -1
- package/dist/assets/{settings-agents-page-Bh-Bv6FQ.js → settings-agents-page-DN_np10S.js} +1 -1
- package/dist/assets/settings-bin-page-BM5BpK_i.js +1 -0
- package/dist/assets/{settings-calendar-page-BA4_Qqiu.js → settings-calendar-page-Cg0gSSFs.js} +3 -3
- package/dist/assets/{settings-data-page-K4kpmQJY.js → settings-data-page-Dwmp2rLy.js} +1 -1
- package/dist/assets/{settings-logs-page-DkuNPAZo.js → settings-logs-page-DQNM21Re.js} +1 -1
- package/dist/assets/{settings-mobile-page-4pCNwD91.js → settings-mobile-page-DQdiRa-a.js} +1 -1
- package/dist/assets/settings-models-page-CAEPpuHF.js +1 -0
- package/dist/assets/{settings-page-B_Be0vOY.js → settings-page-Cl2KiCFg.js} +1 -1
- package/dist/assets/{settings-rewards-page-C6nFTWJu.js → settings-rewards-page-DoIUumhe.js} +1 -1
- package/dist/assets/{settings-section-nav-Lo-VKCfZ.js → settings-section-nav-D_N87IG0.js} +1 -1
- package/dist/assets/{settings-users-page-CVzNp4-m.js → settings-users-page-CPesR62N.js} +1 -1
- package/dist/assets/{settings-wiki-page-DXM--7BB.js → settings-wiki-page-BxMQM5Vi.js} +1 -1
- package/dist/assets/{sleep-page-DvPdZMKx.js → sleep-page-DUYmQKrg.js} +1 -1
- package/dist/assets/{sports-page-DjuZlOur.js → sports-page-Bzi5TF9T.js} +1 -1
- package/dist/assets/{state-Bpe5dF3T.js → state-BFyKSULP.js} +1 -1
- package/dist/assets/{strategies-page-PE1IlatS.js → strategies-page-C-T2MZx4.js} +1 -1
- package/dist/assets/{strategy-detail-page-C4KiEGCI.js → strategy-detail-page-3tYuSZu-.js} +1 -1
- package/dist/assets/{strategy-dialog-Cwf7Y3P5.js → strategy-dialog-BWm4slo4.js} +1 -1
- package/dist/assets/{surface-ubuOfukq.js → surface-BJObZeRw.js} +1 -1
- package/dist/assets/{table-U7otr5go.js → table-CTLroJKN.js} +1 -1
- package/dist/assets/task-detail-page-ZZOXSpSF.js +1 -0
- package/dist/assets/{task-dialog-CI_Fy_FW.js → task-dialog-2wy0xI7f.js} +5 -5
- package/dist/assets/timebox-planning-dialog-C6h0Hp71.js +1 -0
- package/dist/assets/{today-boxes-CYuxSkZf.js → today-boxes-B_TdgSDz.js} +1 -1
- package/dist/assets/today-page-Dipns9tl.js +1 -0
- package/dist/assets/training-load-page-B78e1-o-.js +1 -0
- package/dist/assets/{ui-B9TWEtCx.js → ui-uo_bNP7c.js} +1 -1
- package/dist/assets/{use-anchored-overlay-position-BY4kNzPj.js → use-anchored-overlay-position-BSxFX6Hi.js} +1 -1
- package/dist/assets/{use-psyche-focus-target-BhNedCZB.js → use-psyche-focus-target-1GLkhYiv.js} +1 -1
- package/dist/assets/{user-badge-ByhC6bMU.js → user-badge-C4eZu1e_.js} +1 -1
- package/dist/assets/{user-select-field-fx129Uh6.js → user-select-field-CmKwcbZt.js} +1 -1
- package/dist/assets/{utility-widgets-ilORjDmg.js → utility-widgets-B06wQFrd.js} +2 -2
- package/dist/assets/{vendor-BwL6m4SE.js → vendor-B7FKSwHK.js} +222 -212
- package/dist/assets/{vitals-page-mdEqIm_9.js → vitals-page-BC7QFsm2.js} +1 -1
- package/dist/assets/{weekly-review-page-C8W-yg5r.js → weekly-review-page-BjNsNoWj.js} +1 -1
- package/dist/assets/{weight-loss-page-BApTknCn.js → weight-loss-page-BOahGY9r.js} +1 -1
- package/dist/assets/{wiki-article-markdown-DBccllQg.js → wiki-article-markdown-DO47HnZf.js} +2 -2
- package/dist/assets/{wiki-editor-page-BfRfH1O3.js → wiki-editor-page-OWRUHl4O.js} +5 -5
- package/dist/assets/{wiki-ingest-history-page-C-6H3MU6.js → wiki-ingest-history-page-CuHpg2lZ.js} +1 -1
- package/dist/assets/{wiki-ingest-modal-DnlhByD_.js → wiki-ingest-modal-EZ3kX-vA.js} +1 -1
- package/dist/assets/wiki-page-BPV3HIgu.js +1 -0
- package/dist/assets/{workbench-flow-page-_-NKIx5R.js → workbench-flow-page-C53KueEz.js} +3 -3
- package/dist/assets/{workbench-page-NIAzggwX.js → workbench-page-DJ7nT2JQ.js} +1 -1
- package/dist/assets/workout-detail-page-Dhyu0q7o.js +2 -0
- package/dist/index.html +8 -8
- package/dist/openclaw/api-client.js +28 -2
- package/dist/openclaw/local-runtime.js +31 -14
- package/dist/openclaw/parity.d.ts +1 -1
- package/dist/openclaw/parity.js +10 -0
- package/dist/openclaw/routes.js +78 -0
- package/dist/openclaw/tools.js +42 -0
- package/dist/server/apps/api/migrations/072_artifact_store.sql +106 -0
- package/dist/server/{server → apps/api}/src/app.js +365 -4
- package/dist/server/{server → apps/api}/src/connectors/box-registry.js +3 -3
- package/dist/server/{server → apps/api}/src/db.js +23 -4
- package/dist/server/{server → apps/api}/src/health-weight-loss.js +1 -1
- package/dist/server/{server → apps/api}/src/openapi.js +570 -1
- package/dist/server/{server → apps/api}/src/questionnaire-seeds.js +1 -1
- package/dist/server/{server → apps/api}/src/repositories/ai-connectors.js +1 -1
- package/dist/server/apps/api/src/repositories/entity-links.js +66 -0
- package/dist/server/{server → apps/api}/src/repositories/habits.js +1 -1
- package/dist/server/apps/api/src/services/artifacts.js +1059 -0
- package/dist/server/{server → apps/api}/src/services/companion-iroh.js +4 -1
- package/dist/server/{server → apps/api}/src/services/doctor.js +3 -3
- package/dist/server/{server → apps/api}/src/services/entity-crud.js +22 -0
- package/dist/server/{server → apps/api}/src/services/gamification-assets.js +1 -1
- package/dist/server/{server → apps/api}/src/services/gamification.js +1 -1
- package/dist/server/{server → apps/api}/src/services/knowledge-graph.js +48 -3
- package/dist/server/{server → apps/api}/src/services/psyche-observation-calendar.js +1 -0
- package/dist/server/{server → apps/api}/src/types.js +4 -2
- package/dist/server/{server → apps/api}/src/watch-mobile.js +1 -1
- package/dist/server/{src → apps/web/src}/lib/api.js +69 -0
- package/dist/server/{src → apps/web/src}/lib/entity-visuals.js +10 -1
- package/dist/server/{src → apps/web/src}/lib/knowledge-graph-types.js +9 -0
- package/openclaw.plugin.json +2 -1
- package/package.json +3 -3
- package/server/index.js +3 -3
- package/server/migrations/072_artifact_store.sql +106 -0
- package/skills/forge-openclaw/SKILL.md +60 -7
- package/skills/forge-openclaw/entity_conversation_playbooks.md +212 -14
- package/skills/forge-openclaw/psyche_entity_playbooks.md +20 -0
- package/dist/assets/execution-board-D66C_ikW.js +0 -1
- package/dist/assets/goals-page-CQ2lJMzI.js +0 -1
- package/dist/assets/habits-page-a7KVPaQp.js +0 -1
- package/dist/assets/index-ClJbJhca.css +0 -1
- package/dist/assets/index-FpGANF9S.js +0 -2
- package/dist/assets/knowledge-graph-page-DxEBaEke.js +0 -1
- package/dist/assets/notes-page-DvHMcQey.js +0 -1
- package/dist/assets/overview-page-Z5vaUTm3.js +0 -1
- package/dist/assets/page-hero-DvrM83_C.js +0 -1
- package/dist/assets/pill-cluster-DYI3Ibj8.js +0 -1
- package/dist/assets/project-detail-page-B9PqyPu9.js +0 -1
- package/dist/assets/project-management-hierarchy-page-DXK14jn0.js +0 -1
- package/dist/assets/projects-page-CdAk-ByT.js +0 -1
- package/dist/assets/psyche-behaviors-page-CbhhTfU2.js +0 -5
- package/dist/assets/psyche-mode-guide-page-CR8e984W.js +0 -1
- package/dist/assets/psyche-modes-page-lQdpAcY3.js +0 -1
- package/dist/assets/psyche-page-CTdIDkw9.js +0 -1
- package/dist/assets/psyche-patterns-page-Drgm-f7I.js +0 -5
- package/dist/assets/psyche-questionnaire-run-detail-page-SYndwtF3.js +0 -1
- package/dist/assets/psyche-reports-page-Cn0EBndy.js +0 -1
- package/dist/assets/psyche-schemas-beliefs-page-Bab4xSWv.js +0 -9
- package/dist/assets/rewards-page-FxUXB76B.js +0 -1
- package/dist/assets/settings-bin-page-DT8JJero.js +0 -1
- package/dist/assets/settings-models-page-CZHG3t7W.js +0 -1
- package/dist/assets/task-detail-page-B3SMFZQ3.js +0 -1
- package/dist/assets/timebox-planning-dialog-BtFuVoA1.js +0 -1
- package/dist/assets/today-page-CHGpLEZ3.js +0 -1
- package/dist/assets/training-load-page-GZJF-Yy5.js +0 -1
- package/dist/assets/wiki-page-DPZ55e3x.js +0 -1
- package/dist/assets/workout-detail-page-3fxr6HL4.js +0 -2
- /package/dist/server/{server → apps/api}/migrations/001_core.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/002_psyche.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/003_habits.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/004_habit_links.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/005_habit_psyche_links.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/006_work_adjustments.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/007_weekly_review_closures.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/008_calendar_execution.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/009_true_calendar_events.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/010_calendar_selection_state.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/011_calendar_timezone_backfill.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/012_work_block_ranges.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/013_microsoft_local_auth_settings.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/014_note_tags_and_ephemeral.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/015_multi_user_and_strategies.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/016_health_companion.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/016_strategy_contracts_and_user_graph.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/017_preferences.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/018_preference_catalogs.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/019_wiki_memory.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/020_wiki_page_hierarchy.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/021_hide_evidence_from_wiki_index.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/022_wiki_ingest_background.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/023_diagnostic_logs.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/024_questionnaires.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/025_ai_model_connections.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/026_custom_theme_settings.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/027_ai_processors.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/028_movement_domain.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/029_watch_micro_capture.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/030_surface_layouts.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/031_ai_processor_runtime_upgrades.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/032_ai_connectors.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/033_movement_trip_point_sync.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/034_movement_segment_sync.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/035_google_local_auth_settings.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/036_google_local_auth_client_secret.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/037_workbench_public_inputs_and_run_inputs.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/038_data_management_settings.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/039_life_force_and_action_points.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/040_screen_time_domain.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/041_companion_source_states.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/042_movement_boxes.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/043_movement_box_overlap_overrides.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/044_macos_local_calendar_provider.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/045_sleep_nights_and_raw_segments.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/046_work_item_hierarchy.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/047_sleep_source_records.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/048_task_run_git_context.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/049_agent_runtime_sessions.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/050_agent_token_bootstrap_policy.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/051_agent_token_scope_policy.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/052_agent_identity_tightening.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/053_agent_runtime_session_canonical_labels.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/054_sqlite_backed_wiki_memory.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/055_gamification_progression.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/056_gamification_equipment.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/057_gamification_catalog_cleanup.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/058_gamification_theme_preference.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/059_data_backup_retention.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/060_psyche_devrage_metrics.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/061_health_workout_raw_evidence.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/062_health_mobile_sync_sessions.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/063_psyche_flashcards.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/064_health_workout_time_series_identity.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/065_weight_loss_nutrition_insights.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/066_watch_action_receipts.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/067_weight_loss_daily_active_overrides.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/068_remove_generated_movement_wiki_logs.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/069_psyche_devrage_cumulative_rage.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/070_health_mobile_sync_completion_index.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/071_agent_runtime_claude_identity.sql +0 -0
- /package/dist/server/{server → apps/api}/src/data-management-types.js +0 -0
- /package/dist/server/{server → apps/api}/src/debug.js +0 -0
- /package/dist/server/{server → apps/api}/src/demo-data.js +0 -0
- /package/dist/server/{server → apps/api}/src/discovery-advertiser.js +0 -0
- /package/dist/server/{server → apps/api}/src/e2e-server.js +0 -0
- /package/dist/server/{server → apps/api}/src/errors.js +0 -0
- /package/dist/server/{server → apps/api}/src/health-workout-adapters.js +0 -0
- /package/dist/server/{server → apps/api}/src/health-workout-analytics.js +0 -0
- /package/dist/server/{server → apps/api}/src/health.js +0 -0
- /package/dist/server/{server → apps/api}/src/index.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/base.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/contracts.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/api-gateway-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/audit-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/authentication-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/authorization-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/background-job-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/configuration-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/database-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/event-bus-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/external-service-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/health-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/llm-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/migration-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/mock-workbench-provider.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/openai-responses-provider.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/search-index-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/secrets-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/session-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/storage-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/token-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/transaction-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/trusted-network.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/runtime.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/type-guards.js +0 -0
- /package/dist/server/{server → apps/api}/src/movement.js +0 -0
- /package/dist/server/{server → apps/api}/src/preferences-seeds.js +0 -0
- /package/dist/server/{server → apps/api}/src/preferences-types.js +0 -0
- /package/dist/server/{server → apps/api}/src/psyche-types.js +0 -0
- /package/dist/server/{server → apps/api}/src/questionnaire-flow.js +0 -0
- /package/dist/server/{server → apps/api}/src/questionnaire-types.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/activity-events.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/agent-runtime-sessions.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/ai-processors.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/calendar.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/collaboration.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/deleted-entities.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/diagnostic-logs.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/domains.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/entity-ownership.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/event-log.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/gamification.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/goals.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/model-settings.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/notes.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/preferences.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/projects.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/psyche.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/questionnaires.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/rewards.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/settings.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/strategies.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/surface-layouts.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/tags.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/task-runs.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/tasks.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/users.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/weekly-reviews.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/wiki-memory.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/work-adjustments.js +0 -0
- /package/dist/server/{server → apps/api}/src/runtime-data-root.js +0 -0
- /package/dist/server/{server → apps/api}/src/screen-time.js +0 -0
- /package/dist/server/{server → apps/api}/src/seed-demo.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/calendar-runtime.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/context.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/dashboard.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/data-management.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/devrage-scanner.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/devrage.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/git-helper.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/google-calendar-oauth-config.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/insights.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/legacy-wiki-markdown-import.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/life-force-model.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/life-force.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/macos-calendar-helper.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/openai-codex-oauth.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/projects.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/psyche.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/relations.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/reviews.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/run-recovery.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/tagging.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/task-run-watchdog.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/work-time.js +0 -0
- /package/dist/server/{server → apps/api}/src/web.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/customization/utility-widgets.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/ui/info-tooltip.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/calendar/calendar-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/goals/goals-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/habits/habits-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/health/health-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/insights/insights-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/kanban/kanban-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/movement/movement-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/notes/notes-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/overview/overview-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/preferences/preferences-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/projects/projects-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/psyche/psyche-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/questionnaires/questionnaires-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/review/review-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/shared/define-workbench-box.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/shared/generic-node-view.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/strategies/strategies-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/tasks/tasks-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/today/today-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/wiki/wiki-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/api-error.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/calendar-name-deduper.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/data-management-types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/date-keys.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/diagnostics.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/gamification-catalog.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/knowledge-graph.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/psyche-schemas.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/psyche-types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/questionnaire-types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/runtime-paths.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/schemas.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/snapshot-normalizer.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/theme-system.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/utils.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/weight-loss-energy-model.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/weight-loss-types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/contracts.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/nodes.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/registry.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/runtime.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/tool-catalog.js +0 -0
package/README.md
CHANGED
|
@@ -69,11 +69,11 @@ The Forge web app also exposes these controls in `Settings -> Data`. Use it to s
|
|
|
69
69
|
|
|
70
70
|
Overview dashboard:
|
|
71
71
|
|
|
72
|
-

|
|
73
73
|
|
|
74
74
|
Psyche graph:
|
|
75
75
|
|
|
76
|
-

|
|
77
77
|
|
|
78
78
|
## What this plugin is
|
|
79
79
|
|
|
@@ -269,7 +269,7 @@ openclaw forge health
|
|
|
269
269
|
Use this path when you are editing Forge and want OpenClaw to load this checkout directly:
|
|
270
270
|
|
|
271
271
|
```bash
|
|
272
|
-
openclaw plugins install --link --dangerously-force-unsafe-install ./openclaw
|
|
272
|
+
openclaw plugins install --link --dangerously-force-unsafe-install ./plugins/openclaw
|
|
273
273
|
openclaw plugins enable forge-openclaw-plugin
|
|
274
274
|
openclaw gateway restart
|
|
275
275
|
openclaw plugins inspect forge-openclaw-plugin --runtime
|
|
@@ -281,7 +281,7 @@ Use `--link` for active local development. Omit `--link` when you want to test t
|
|
|
281
281
|
If you are running the command from the monorepo root instead of the Forge repo root, use:
|
|
282
282
|
|
|
283
283
|
```bash
|
|
284
|
-
openclaw plugins install --link --dangerously-force-unsafe-install ./projects/forge/openclaw
|
|
284
|
+
openclaw plugins install --link --dangerously-force-unsafe-install ./projects/forge/plugins/openclaw
|
|
285
285
|
```
|
|
286
286
|
|
|
287
287
|
### Manual Fallback For Older OpenClaw Builds
|
|
@@ -547,13 +547,13 @@ FORGE_RELEASE_MODE=prepare ./scripts/release/release-forge-openclaw-plugin.sh pa
|
|
|
547
547
|
|
|
548
548
|
That command bumps the aligned plugin versions, runs the verification suite, commits
|
|
549
549
|
the release, and pushes `main` plus a matching tag like `v0.2.27`. The
|
|
550
|
-
`.github/workflows/release-openclaw
|
|
550
|
+
`.github/workflows/release-plugins/openclaw.yml` workflow then publishes the package
|
|
551
551
|
from that tag.
|
|
552
552
|
|
|
553
553
|
One-time npm setup for CI:
|
|
554
554
|
|
|
555
555
|
- configure npm Trusted Publishing for this GitHub repository and the
|
|
556
|
-
`release-openclaw
|
|
556
|
+
`release-plugins/openclaw.yml` workflow
|
|
557
557
|
- keep using GitHub-hosted runners for the publish job, because npm Trusted Publishing
|
|
558
558
|
does not support self-hosted runners yet
|
|
559
559
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b6 as be,r as p,j as o,bU as ge,b7 as ee,bV as ye,bW as xe,aV as te,bw as ve,aS as re,bv as ae,bX as oe,bm as ke,bu as we,aH as Te,ba as je,aL as Ne,aY as Pe,bo as _e,aP as Ce,bj as Re,aU as Be,aE as Le}from"./vendor-BwL6m4SE.js";import{R as Se,P as Ae,O as Ie,C as $e,T as Ee,D as Me}from"./ui-B9TWEtCx.js";import{i as Fe}from"./state-Bpe5dF3T.js";import{E as qe}from"./entity-link-multiselect-Dl4rZqdg.js";import{g as Z,u as Ue,I as We,E as De,c as R,a as Ke,b as ze,s as He}from"./index-FpGANF9S.js";import{f as k}from"./user-ownership-DJGl4rAj.js";import"./use-anchored-overlay-position-BY4kNzPj.js";import"./motion-DcgUnXhY.js";import"./board-CuxQRKPJ.js";import"./forms-D1qJ3oOP.js";const Ge=["goal","project","task","strategy","habit","note","insight","calendar_event","work_block_template","task_timebox","psyche_value","behavior_pattern","behavior","belief_entry","mode_profile","flashcard","trigger_report"];function q(r){return r.map(t=>(t==null?void 0:t.trim())??"").filter(Boolean)}function d(r){return typeof r=="string"&&r.trim().length>0?r.trim():null}function Ve(r){if(!r||typeof r!="object")return null;const t=r,i=d(t.id),n=d(t.kind),c=d(t.displayName);return!i||!c||n!=="human"&&n!=="bot"?null:{id:i,kind:n,displayName:c,handle:d(t.handle)??"",description:d(t.description)??"",accentColor:d(t.accentColor)??"",createdAt:d(t.createdAt)??"",updatedAt:d(t.updatedAt)??""}}function Oe(r){return r==="create"||r==="new"||r.startsWith("create ")||r.startsWith("new ")}function Ye(r){return r==="create"||r==="new"?"":r.startsWith("create ")?r.slice(7).trim():r.startsWith("new ")?r.slice(4).trim():null}function A(r){return r.trim().toLowerCase()}function Qe(r,t){return r==="note"?Z(r,{noteKind:d(t==null?void 0:t.kind)==="wiki"?"wiki":"evidence"}):Z(r)}function M(r,t){switch(r){case"goal":return"Goal";case"project":return"Project";case"task":return"Task";case"strategy":return"Strategy";case"habit":return"Habit";case"note":return d(t==null?void 0:t.kind)==="wiki"?"Wiki page":"Note";case"insight":return"Insight";case"calendar_event":return"Calendar event";case"work_block_template":return"Work block";case"task_timebox":return"Timebox";case"psyche_value":return"Value";case"behavior_pattern":return"Pattern";case"behavior":return"Behavior";case"belief_entry":return"Belief";case"mode_profile":return"Mode";case"flashcard":return"Flashcard";case"trigger_report":return"Report";default:return r.replaceAll("_"," ")}}const J=[{id:"goal",family:"entity-type",label:"Goal",kind:"goal",searchText:"goal life goal direction",entityTypes:["goal"]},{id:"project",family:"entity-type",label:"Project",kind:"project",searchText:"project initiative",entityTypes:["project"]},{id:"task",family:"entity-type",label:"Task",kind:"task",searchText:"task action work item",entityTypes:["task"]},{id:"strategy",family:"entity-type",label:"Strategy",kind:"strategy",searchText:"strategy plan sequence roadmap",entityTypes:["strategy"]},{id:"habit",family:"entity-type",label:"Habit",kind:"habit",searchText:"habit recurring routine",entityTypes:["habit"]},{id:"note",family:"entity-type",label:"Note",kind:"note",searchText:"note evidence scratch note",entityTypes:["note"]},{id:"wiki_page",family:"entity-type",label:"Wiki page",kind:"wiki_page",searchText:"wiki page karpawiki article knowledge page",entityTypes:["note"]},{id:"calendar_event",family:"entity-type",label:"Calendar event",kind:"calendar_event",searchText:"calendar event meeting block schedule",entityTypes:["calendar_event"]},{id:"psyche_value",family:"entity-type",label:"Value",kind:"value",searchText:"value psyche value",entityTypes:["psyche_value"]},{id:"behavior_pattern",family:"entity-type",label:"Pattern",kind:"pattern",searchText:"pattern loop psyche pattern",entityTypes:["behavior_pattern"]},{id:"behavior",family:"entity-type",label:"Behavior",kind:"behavior",searchText:"behavior psyche behavior",entityTypes:["behavior"]},{id:"belief_entry",family:"entity-type",label:"Belief",kind:"belief",searchText:"belief schema belief entry",entityTypes:["belief_entry"]},{id:"mode_profile",family:"entity-type",label:"Mode",kind:"mode",searchText:"mode profile psyche mode",entityTypes:["mode_profile"]},{id:"flashcard",family:"entity-type",label:"Flashcard",kind:"flashcard",searchText:"flashcard card urge trigger reminder psyche",entityTypes:["flashcard"]},{id:"trigger_report",family:"entity-type",label:"Report",kind:"report",searchText:"report trigger report psyche report",entityTypes:["trigger_report"]}];function se(r,t){return(r==="belief_entry"?[t.statement,t.title,t.name]:r==="flashcard"?[t.title,t.message,t.triggerSentence]:r==="note"?[t.title,t.slug]:[t.title,t.displayName,t.statement,t.name,t.label,t.slug]).map(d).find(Boolean)??`${M(r,t)} ${String(t.id??"")}`}function ne(r,t){const i=[t.summary,t.description,t.overview,t.flexibleAlternative,t.originNote,t.endState,t.whyItMatters,t.valuedDirection,t.triggerSentence,t.triggerSituation,t.contentPlain].map(d).find(Boolean),n=[t.goalTitle,t.projectTitle,t.status,t.kind].map(d).find(Boolean),c=k(Ve(t.user)),u=q([r==="note"?M(r,t):null,c||null]).join(" · ");return q([i,n,c||null]).join(" · ")||u}function Xe(r,t){return q([se(r,t),ne(r,t),M(r,t),d(t.slug),d(t.handle)]).join(" ").toLowerCase()}function Ze(r,t,i){switch(r){case"goal":return`/goals/${encodeURIComponent(t)}`;case"project":return`/projects/${encodeURIComponent(t)}`;case"task":return`/tasks/${encodeURIComponent(t)}`;case"strategy":return`/strategies/${encodeURIComponent(t)}`;case"habit":return`/habits?focus=${encodeURIComponent(t)}`;case"note":{const n=d(i.kind),c=d(i.slug),u=d(i.spaceId);if(n==="wiki"&&c){const e=u?`?spaceId=${encodeURIComponent(u)}`:"";return`/wiki/page/${encodeURIComponent(c)}${e}`}return"/notes"}case"insight":return"/insights";case"calendar_event":case"work_block_template":case"task_timebox":return"/calendar";case"psyche_value":return`/psyche/values?focus=${encodeURIComponent(t)}`;case"behavior_pattern":return`/psyche/patterns?focus=${encodeURIComponent(t)}`;case"behavior":return`/psyche/behaviors?focus=${encodeURIComponent(t)}`;case"belief_entry":return`/psyche/schemas-beliefs?focus=${encodeURIComponent(t)}`;case"mode_profile":return`/psyche/modes?focus=${encodeURIComponent(t)}`;case"flashcard":return`/psyche/flashcards?focus=${encodeURIComponent(t)}`;case"trigger_report":return`/psyche/reports/${encodeURIComponent(t)}`;default:return null}}function U(r,t,i){const n=A(r);if(!n)return 0;const c=A(t),u=A(i),e=n.split(/\s+/).filter(Boolean);let h=0;c===n&&(h+=400),c.startsWith(n)&&(h+=240),c.includes(n)&&(h+=180),u.startsWith(n)&&(h+=32),u.includes(n)&&(h+=20);for(const N of e)c.startsWith(N)?h+=36:c.includes(N)&&(h+=24),u.includes(N)&&(h+=12);return h}function ie(r){if(r.length===0)return Ge;const t=new Set;return r.forEach(i=>{i.entityTypes.forEach(n=>t.add(n))}),Array.from(t)}function Je(r,t,i){if(!r.entityTypes.includes(t))return!1;if(t!=="note")return!0;const n=d(i.kind);return r.id==="wiki_page"?n==="wiki":r.id==="note"?n!=="wiki":!0}function et(r,t,i){if(i.length===0)return!0;const n=new Map;i.forEach(c=>{const u=n.get(c.family)??[];u.push(c),n.set(c.family,u)});for(const c of n.values())if(!c.some(e=>Je(e,r,t)))return!1;return!0}function tt(r,t){if(t.length===0)return!0;const i=new Set(t.filter(n=>n.family==="entity-type").map(n=>n.id));return i.size===0?!0:r.filterIds.some(n=>i.has(n))}function rt(r,t){const i=A(r);if(!Oe(i))return[];const n=Ye(i);return n===null?[]:t.map(c=>{const u=[c.title,c.quickActionTitle,c.description,...c.aliases].join(" ").toLowerCase(),e=n.length===0?1:U(n,c.quickActionTitle,u);return{...c,score:e}}).filter(c=>c.score>0).sort((c,u)=>u.score-c.score||c.quickActionTitle.localeCompare(u.quickActionTitle))}const at=new Set(ie([]));function ot(r){return typeof r=="string"&&at.has(r)}function l(r,t){const i=t??ee;switch(r){case"action":return{icon:oe,tileClassName:"border-emerald-300/18 bg-emerald-300/12 text-emerald-100 shadow-[0_18px_36px_rgba(52,211,153,0.12)]",badgeClassName:"border-emerald-300/18 bg-emerald-300/10 text-emerald-100"};case"wiki":return{icon:ae,tileClassName:"border-blue-300/18 bg-blue-300/12 text-blue-100 shadow-[0_18px_36px_rgba(96,165,250,0.12)]",badgeClassName:"border-blue-300/18 bg-blue-300/10 text-blue-100"};case"note":return{icon:re,tileClassName:"border-amber-300/18 bg-amber-300/12 text-amber-100 shadow-[0_18px_36px_rgba(251,191,36,0.12)]",badgeClassName:"border-amber-300/18 bg-amber-300/10 text-amber-100"};case"insight":return{icon:ve,tileClassName:"border-emerald-300/18 bg-emerald-300/12 text-emerald-100 shadow-[0_18px_36px_rgba(52,211,153,0.12)]",badgeClassName:"border-emerald-300/18 bg-emerald-300/10 text-emerald-100"};case"calendar":return{icon:te,tileClassName:"border-cyan-300/18 bg-cyan-300/12 text-cyan-100 shadow-[0_18px_36px_rgba(34,211,238,0.12)]",badgeClassName:"border-cyan-300/18 bg-cyan-300/10 text-cyan-100"};case"route":return{icon:i,tileClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-medium)] shadow-[var(--ui-shadow-soft)]",badgeClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-soft)]"};default:return{icon:i,tileClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-medium)] shadow-[var(--ui-shadow-soft)]",badgeClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-soft)]"}}}function st({item:r}){if(r.kind){const n=Ke(r.kind),c=n.icon;return o.jsx("span",{className:R("mt-0.5 inline-flex size-11 shrink-0 items-center justify-center rounded-[17px] border",n.subtleBadgeClassName),children:o.jsx(c,{className:R("size-5",n.iconClassName)})})}const t=l("search",r.icon),i=r.icon??t.icon;return o.jsx("span",{className:R("mt-0.5 inline-flex size-11 shrink-0 items-center justify-center rounded-[17px] border",r.tileClassName??t.tileClassName),children:o.jsx(i,{className:"size-5"})})}function nt({item:r}){if(r.kind&&r.section==="results")return o.jsx(ze,{kind:r.kind,label:r.category,compact:!0,gradient:!1});const t=l(r.section==="quick-actions"?"action":"search",r.icon),i=r.icon??t.icon;return o.jsxs("span",{className:R("inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[11px] font-medium",r.badgeClassName??t.badgeClassName),children:[o.jsx(i,{className:"size-3.5"}),r.category]})}function f(r,t,i){return`${r} ${t} ${i}`.trim().toLowerCase()}function gt({open:r,onOpenChange:t,snapshot:i,selectedUserIds:n,createActions:c}){var O;const u=be(),{t:e}=Ue(),h=p.useRef([]),[N,W]=p.useState(""),[B,P]=p.useState(0),[L,D]=p.useState([]),j=p.useDeferredValue(N),y=A(j),b=p.useMemo(()=>J.filter(a=>L.includes(a.id)),[L]);p.useEffect(()=>{r||(W(""),P(0),D([]))},[r]);const ce=p.useMemo(()=>J.map(a=>({value:a.id,label:a.label,description:a.id==="wiki_page"?"Search only KarpaWiki pages.":a.id==="note"?"Search notes and evidence that are not wiki pages.":`Search ${a.label.toLowerCase()} records.`,searchText:a.searchText,kind:a.kind})),[]),le=p.useMemo(()=>({routes:e("common.actionBar.sections.routes"),recent:e("common.actionBar.sections.recent"),"quick-actions":e("common.actionBar.sections.quickActions"),results:e("common.actionBar.sections.results")}),[e]),I=p.useMemo(()=>[{id:"route-overview",title:e("common.routeLabels.overview"),detail:e("common.commandPalette.routeOverview"),href:"/overview",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.overview"),e("common.commandPalette.routeOverview"),e("common.commandPalette.categoryRoute")),score:0,...l("route",ke)},{id:"route-today",title:e("common.routeLabels.today"),detail:e("common.commandPalette.routeToday"),href:"/today",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.today"),e("common.commandPalette.routeToday"),e("common.commandPalette.categoryRoute")),score:0,...l("route",we)},{id:"route-kanban",title:e("common.routeLabels.kanban"),detail:e("common.commandPalette.routeKanban"),href:"/kanban",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.kanban"),e("common.commandPalette.routeKanban"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Te)},{id:"route-psyche",title:e("common.routeLabels.psyche"),detail:e("common.commandPalette.routePsyche"),href:"/psyche",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.psyche"),e("common.commandPalette.routePsyche"),e("common.commandPalette.categoryRoute")),score:0,...l("route",je)},{id:"route-notes",title:e("common.routeLabels.notes"),detail:e("common.commandPalette.routeNotes"),href:"/notes",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.notes"),e("common.commandPalette.routeNotes"),e("common.commandPalette.categoryRoute")),score:0,...l("route",re)},{id:"route-wiki",title:e("common.routeLabels.wiki"),detail:e("common.commandPalette.routeWiki"),href:"/wiki",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.wiki"),e("common.commandPalette.routeWiki"),e("common.commandPalette.categoryRoute")),score:0,...l("route",ae)},{id:"route-goals",title:e("common.routeLabels.goals"),detail:e("common.commandPalette.routeGoals"),href:"/goals",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.goals"),e("common.commandPalette.routeGoals"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Ne)},{id:"route-habits",title:e("common.routeLabels.habits"),detail:e("common.commandPalette.routeHabits"),href:"/habits",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.habits"),e("common.commandPalette.routeHabits"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Pe)},{id:"route-projects",title:e("common.routeLabels.projects"),detail:e("common.commandPalette.routeProjects"),href:"/projects",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.projects"),e("common.commandPalette.routeProjects"),e("common.commandPalette.categoryRoute")),score:0,...l("route",_e)},{id:"route-strategies",title:e("common.routeLabels.strategies"),detail:e("common.commandPalette.routeStrategies"),href:"/strategies",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.strategies"),e("common.commandPalette.routeStrategies"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Ce)},{id:"route-preferences",title:e("common.routeLabels.preferences"),detail:e("common.commandPalette.routePreferences"),href:"/preferences",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.preferences"),e("common.commandPalette.routePreferences"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Re)},{id:"route-calendar",title:e("common.routeLabels.calendar"),detail:e("common.commandPalette.routeCalendar"),href:"/calendar",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.calendar"),e("common.commandPalette.routeCalendar"),e("common.commandPalette.categoryRoute")),score:0,...l("route",te)},{id:"route-knowledge-graph",title:"Knowledge Graph",detail:"Open the world model and graph views for Forge.",href:"/knowledge-graph",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f("Knowledge Graph","Open the world model and graph views for Forge.",e("common.commandPalette.categoryRoute")),score:0,...l("route",Be)},{id:"route-settings",title:e("common.routeLabels.settings"),detail:e("common.commandPalette.routeSettings"),href:"/settings",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.settings"),e("common.commandPalette.routeSettings"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Le)}],[e]),K=p.useMemo(()=>{const a=[...i.overview.topTasks.slice(0,4).map(s=>({id:`task-${s.id}`,title:s.title,detail:k(s.user)||e("common.commandPalette.openFocusTask"),href:`/tasks/${s.id}`,category:e("common.commandPalette.categoryTask"),section:"recent",searchText:`${s.title} ${k(s.user)}`.toLowerCase(),score:0,kind:"task"})),...i.dashboard.projects.slice(0,3).map(s=>({id:`project-${s.id}`,title:s.title,detail:[s.goalTitle,k(s.user)].filter(Boolean).join(" · "),href:`/projects/${s.id}`,category:e("common.commandPalette.categoryProject"),section:"recent",searchText:`${s.title} ${s.goalTitle??""} ${k(s.user)}`.toLowerCase(),score:0,kind:"project"})),...i.overview.activeGoals.slice(0,2).map(s=>({id:`goal-${s.id}`,title:s.title,detail:k(s.user)||e("common.commandPalette.openLifeGoal"),href:`/goals/${s.id}`,category:e("common.commandPalette.categoryGoal"),section:"recent",searchText:`${s.title} ${k(s.user)}`.toLowerCase(),score:0,kind:"goal"})),...i.dashboard.habits.slice(0,2).map(s=>({id:`habit-${s.id}`,title:s.title,detail:[s.frequency==="daily"?"Daily habit":"Weekly habit",k(s.user)].filter(Boolean).join(" · "),href:`/habits?focus=${s.id}`,category:e("common.routeLabels.habits"),section:"recent",searchText:`${s.title} ${s.frequency} ${k(s.user)}`.toLowerCase(),score:0,kind:"habit"}))].slice(0,8);return[...I.slice(0,6),...a]},[I,i,e]),$=Fe({queryKey:["forge-action-bar-search",y,[...L].sort().join("|"),[...n].sort().join("|")],enabled:r&&(y.length>0||b.length>0),queryFn:async()=>{const a=ie(b),s=await He({searches:a.map(g=>({entityTypes:[g],query:j.trim()||void 0,userIds:n.length>0?n:void 0,limit:g==="note"?6:4,clientRef:g}))}),x=new Map;for(const g of s.results){const w=Array.isArray(g.matches)?g.matches??[]:[];for(const S of w){if(!S||typeof S!="object")continue;const m=S;if(!ot(m.entityType)||typeof m.id!="string"||!m.entity||typeof m.entity!="object")continue;const T=m.entity;if(!et(m.entityType,T,b))continue;const Y=Ze(m.entityType,m.id,T);if(!Y)continue;const Q=se(m.entityType,T),de=ne(m.entityType,T),pe=M(m.entityType,T),X=Xe(m.entityType,T),fe=Qe(m.entityType,T)??void 0,he=y.length>0?U(j,Q,X):0;let _=l("search");m.entityType==="note"?_=l(T.kind==="wiki"?"wiki":"note"):m.entityType==="insight"?_=l("insight"):(m.entityType==="calendar_event"||m.entityType==="task_timebox"||m.entityType==="work_block_template")&&(_=l("calendar"));const C={id:`${m.entityType}-${m.id}`,title:Q,detail:de,href:Y,category:pe,section:"results",searchText:X,score:he,kind:fe,icon:_.icon,tileClassName:_.tileClassName,badgeClassName:_.badgeClassName},E=x.get(C.id);(!E||C.score>E.score||C.score===E.score&&C.title<E.title)&&x.set(C.id,C)}}return Array.from(x.values()).sort((g,w)=>w.score!==g.score?w.score-g.score:g.title.localeCompare(w.title)).slice(0,12)}}),z=p.useMemo(()=>y?I.map(a=>({...a,score:U(j,a.title,a.searchText)})).filter(a=>a.score>0).sort((a,s)=>s.score-a.score||a.title.localeCompare(s.title)).slice(0,4):[],[j,y,I]),H=p.useMemo(()=>rt(j,c).filter(a=>tt(a,b)).slice(0,6).map(a=>({id:`quick-${a.id}`,title:a.quickActionTitle,detail:a.description,category:"Quick action",section:"quick-actions",searchText:`${a.quickActionTitle} ${a.description} ${a.aliases.join(" ")}`.toLowerCase(),score:a.score,onSelect:a.onSelect,...l("action",oe)})),[c,j,b]),v=p.useMemo(()=>{if(!y&&b.length===0)return K;const a=[...H,...z],s=new Set(a.map(x=>x.id));for(const x of $.data??[])s.has(x.id)||(s.add(x.id),a.push(x));return a.slice(0,16)},[K,$.data,y,H,z,b.length]);p.useEffect(()=>{P(0)},[y,r,L.join("|")]),p.useEffect(()=>{v.length!==0&&P(a=>Math.min(Math.max(a,0),v.length-1))},[v]),p.useEffect(()=>{const a=h.current[B];a==null||a.scrollIntoView({block:"nearest"})},[B]);const G=v[B]??null,F=i.users.filter(a=>n.includes(a.id)),me=n.length===0?"All humans and bots":F.length===1?((O=F[0])==null?void 0:O.displayName)??"1 selected owner":`${F.length||n.length} selected owners`,ue=(y.length>0||b.length>0)&&$.isFetching,V=a=>{if(t(!1),a.onSelect){a.onSelect();return}a.href&&u(a.href)};return o.jsx(Se,{open:r,onOpenChange:t,children:o.jsxs(Ae,{children:[o.jsx(Ie,{className:"surface-overlay fixed inset-0 z-40 backdrop-blur-xl"}),o.jsxs($e,{className:"surface-modal-panel fixed inset-x-3 bottom-3 top-3 z-50 flex flex-col overflow-hidden rounded-[30px] border sm:inset-x-6 sm:bottom-6 sm:top-6 md:left-1/2 md:right-auto md:top-[9vh] md:h-[min(82vh,48rem)] md:w-[min(64rem,calc(100vw-2rem))] md:-translate-x-1/2 md:bottom-auto",children:[o.jsx(Ee,{className:"sr-only",children:e("common.actionBar.title")}),o.jsx(Me,{className:"sr-only",children:e("common.actionBar.description")}),o.jsxs("div",{className:"border-b border-[var(--ui-border-subtle)] px-4 py-4 sm:px-5",children:[o.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-1.5 text-[12px] text-[var(--ui-ink-medium)]",children:[o.jsx("span",{className:"rounded-full bg-[var(--ui-surface-2)] px-2 py-0.5 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Scope"}),o.jsx("span",{children:me})]}),b.length>0?o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-1.5 text-[12px] text-[var(--ui-ink-medium)]",children:[o.jsx(ge,{className:"size-3.5 text-[var(--ui-ink-faint)]"}),o.jsxs("span",{children:[b.length," filter",b.length===1?"":"s"]})]}):null]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:[o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Shift Shift"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Cmd/Ctrl K"})]})]}),o.jsxs("div",{className:"mt-4 rounded-[24px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)] px-4 py-4 shadow-[inset_0_1px_0_var(--ui-border-subtle)]",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(ee,{className:"size-5 text-[var(--ui-ink-faint)]"}),o.jsx(We,{autoFocus:!0,value:N,onChange:a=>W(a.target.value),onKeyDown:a=>{if(a.key==="ArrowDown"){a.preventDefault(),P(s=>v.length===0?0:Math.min(s+1,v.length-1));return}if(a.key==="ArrowUp"){a.preventDefault(),P(s=>Math.max(s-1,0));return}if(a.key==="Enter"&&G){a.preventDefault(),V(G);return}a.key==="Escape"&&(a.preventDefault(),t(!1))},placeholder:e("common.actionBar.searchPlaceholder"),className:"border-0 bg-transparent px-0 py-0 text-[1rem] focus:border-0"}),ue?o.jsx(ye,{className:"size-4 shrink-0 animate-spin text-[var(--ui-ink-faint)]"}):null]}),o.jsx("div",{className:"mt-2 pl-8 text-[13px] leading-6 text-[var(--ui-ink-soft)]",children:e(y?"common.actionBar.activeHint":"common.actionBar.idleHint")}),o.jsxs("div",{className:"mt-4 border-t border-[var(--ui-border-subtle)] pt-4",children:[o.jsx("div",{className:"mb-2 pl-1 text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:e("common.actionBar.filtersLabel")}),o.jsx(qe,{options:ce,selectedValues:L,onChange:D,placeholder:e("common.actionBar.filtersPlaceholder"),emptyMessage:e("common.actionBar.filtersEmpty"),variant:"action-bar"})]})]})]}),o.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3 sm:px-4",children:v.length===0?o.jsx("div",{className:"rounded-[24px] border border-dashed border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-4 py-8 text-center text-sm text-[var(--ui-ink-soft)]",children:$.isFetching?e("common.actionBar.searching"):b.length>0?e("common.actionBar.noResultsWithFilters"):e("common.actionBar.noResults")}):o.jsx("div",{className:"grid gap-2",children:v.map((a,s)=>{var w;const g=(((w=v[s-1])==null?void 0:w.section)??null)!==a.section;return o.jsxs("div",{children:[g?o.jsx("div",{className:"px-2 pb-1 pt-2 text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)] first:pt-0",children:le[a.section]}):null,o.jsxs("button",{ref:S=>{h.current[s]=S},type:"button",className:R("group flex w-full items-start gap-3 rounded-[24px] border px-4 py-3.5 text-left transition",s===B?"border-[var(--ui-border-strong)] bg-[var(--ui-surface-3)] shadow-[var(--ui-shadow-soft)]":"border-transparent bg-[var(--ui-surface-1)] hover:border-[var(--ui-border-subtle)] hover:bg-[var(--ui-surface-hover)]"),onMouseEnter:()=>P(s),onClick:()=>V(a),children:[o.jsx(st,{item:a}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("div",{className:"flex flex-wrap items-center gap-2",children:o.jsx(nt,{item:a})}),o.jsx("div",{className:"mt-2 text-[15px] font-medium text-[var(--ui-ink-strong)]",children:a.kind&&a.section==="results"?o.jsx(De,{kind:a.kind,label:a.title,showIcon:!1,labelClassName:"text-[var(--ui-ink-strong)]"}):a.title}),o.jsx("div",{className:"mt-1 text-sm leading-6 text-[var(--ui-ink-soft)]",children:a.detail})]}),o.jsx(xe,{className:R("mt-1 size-4 shrink-0 transition",s===B?"text-[var(--ui-ink-medium)]":"text-[var(--ui-ink-faint)] group-hover:text-[var(--ui-ink-soft)]")})]})]},a.id)})})}),o.jsx("div",{className:"border-t border-[var(--ui-border-subtle)] px-4 py-3 sm:px-5",children:o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[12px] text-[var(--ui-ink-faint)]",children:[o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Up/Down navigate"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Enter open"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Esc close"})]})})]})]})})}export{gt as ActionBar};
|
|
1
|
+
import{b7 as be,r as p,j as o,bV as ge,b8 as ee,bW as ye,bX as xe,aV as te,bx as ve,aS as re,bw as ae,bY as oe,bn as ke,bv as we,aH as Te,bb as Ne,aL as je,aZ as Pe,bp as _e,aP as Ce,bk as Re,aU as Be,aE as Le}from"./vendor-B7FKSwHK.js";import{R as Se,P as Ae,O as Ie,C as $e,T as Ee,D as Me}from"./ui-uo_bNP7c.js";import{i as Fe}from"./state-BFyKSULP.js";import{E as qe}from"./entity-link-multiselect-BfDAROHB.js";import{g as X,u as We,I as De,E as Ue,c as R,a as Ke,b as ze,s as He}from"./index-gmPaoLN-.js";import{f as k}from"./user-ownership-DJGl4rAj.js";import"./use-anchored-overlay-position-BSxFX6Hi.js";import"./motion-BibSzp57.js";import"./board-DprRipIG.js";import"./forms-ByKjodjN.js";const Ge=["goal","project","task","strategy","habit","note","insight","calendar_event","work_block_template","task_timebox","psyche_value","behavior_pattern","behavior","belief_entry","mode_profile","flashcard","trigger_report"];function q(r){return r.map(t=>(t==null?void 0:t.trim())??"").filter(Boolean)}function d(r){return typeof r=="string"&&r.trim().length>0?r.trim():null}function Ve(r){if(!r||typeof r!="object")return null;const t=r,i=d(t.id),n=d(t.kind),c=d(t.displayName);return!i||!c||n!=="human"&&n!=="bot"?null:{id:i,kind:n,displayName:c,handle:d(t.handle)??"",description:d(t.description)??"",accentColor:d(t.accentColor)??"",createdAt:d(t.createdAt)??"",updatedAt:d(t.updatedAt)??""}}function Oe(r){return r==="create"||r==="new"||r.startsWith("create ")||r.startsWith("new ")}function Ye(r){return r==="create"||r==="new"?"":r.startsWith("create ")?r.slice(7).trim():r.startsWith("new ")?r.slice(4).trim():null}function A(r){return r.trim().toLowerCase()}function Qe(r,t){return r==="note"?X(r,{noteKind:d(t==null?void 0:t.kind)==="wiki"?"wiki":"evidence"}):X(r)}function M(r,t){switch(r){case"goal":return"Goal";case"project":return"Project";case"task":return"Task";case"strategy":return"Strategy";case"habit":return"Habit";case"note":return d(t==null?void 0:t.kind)==="wiki"?"Wiki page":"Note";case"insight":return"Insight";case"calendar_event":return"Calendar event";case"work_block_template":return"Work block";case"task_timebox":return"Timebox";case"psyche_value":return"Value";case"behavior_pattern":return"Pattern";case"behavior":return"Behavior";case"belief_entry":return"Belief";case"mode_profile":return"Mode";case"flashcard":return"Flashcard";case"trigger_report":return"Report";default:return r.replaceAll("_"," ")}}const J=[{id:"goal",family:"entity-type",label:"Goal",kind:"goal",searchText:"goal life goal direction",entityTypes:["goal"]},{id:"project",family:"entity-type",label:"Project",kind:"project",searchText:"project initiative",entityTypes:["project"]},{id:"task",family:"entity-type",label:"Task",kind:"task",searchText:"task action work item",entityTypes:["task"]},{id:"strategy",family:"entity-type",label:"Strategy",kind:"strategy",searchText:"strategy plan sequence roadmap",entityTypes:["strategy"]},{id:"habit",family:"entity-type",label:"Habit",kind:"habit",searchText:"habit recurring routine",entityTypes:["habit"]},{id:"note",family:"entity-type",label:"Note",kind:"note",searchText:"note evidence scratch note",entityTypes:["note"]},{id:"wiki_page",family:"entity-type",label:"Wiki page",kind:"wiki_page",searchText:"wiki page karpawiki article knowledge page",entityTypes:["note"]},{id:"calendar_event",family:"entity-type",label:"Calendar event",kind:"calendar_event",searchText:"calendar event meeting block schedule",entityTypes:["calendar_event"]},{id:"psyche_value",family:"entity-type",label:"Value",kind:"value",searchText:"value psyche value",entityTypes:["psyche_value"]},{id:"behavior_pattern",family:"entity-type",label:"Pattern",kind:"pattern",searchText:"pattern loop psyche pattern",entityTypes:["behavior_pattern"]},{id:"behavior",family:"entity-type",label:"Behavior",kind:"behavior",searchText:"behavior psyche behavior",entityTypes:["behavior"]},{id:"belief_entry",family:"entity-type",label:"Belief",kind:"belief",searchText:"belief schema belief entry",entityTypes:["belief_entry"]},{id:"mode_profile",family:"entity-type",label:"Mode",kind:"mode",searchText:"mode profile psyche mode",entityTypes:["mode_profile"]},{id:"flashcard",family:"entity-type",label:"Flashcard",kind:"flashcard",searchText:"flashcard card urge trigger reminder psyche",entityTypes:["flashcard"]},{id:"trigger_report",family:"entity-type",label:"Report",kind:"report",searchText:"report trigger report psyche report",entityTypes:["trigger_report"]}];function se(r,t){return(r==="belief_entry"?[t.statement,t.title,t.name]:r==="flashcard"?[t.title,t.message,t.triggerSentence]:r==="note"?[t.title,t.slug]:[t.title,t.displayName,t.statement,t.name,t.label,t.slug]).map(d).find(Boolean)??`${M(r,t)} ${String(t.id??"")}`}function ne(r,t){const i=[t.summary,t.description,t.overview,t.flexibleAlternative,t.originNote,t.endState,t.whyItMatters,t.valuedDirection,t.triggerSentence,t.triggerSituation,t.contentPlain].map(d).find(Boolean),n=[t.goalTitle,t.projectTitle,t.status,t.kind].map(d).find(Boolean),c=k(Ve(t.user)),u=q([r==="note"?M(r,t):null,c||null]).join(" · ");return q([i,n,c||null]).join(" · ")||u}function Ze(r,t){return q([se(r,t),ne(r,t),M(r,t),d(t.slug),d(t.handle)]).join(" ").toLowerCase()}function Xe(r,t,i){switch(r){case"goal":return`/goals/${encodeURIComponent(t)}`;case"project":return`/projects/${encodeURIComponent(t)}`;case"task":return`/tasks/${encodeURIComponent(t)}`;case"strategy":return`/strategies/${encodeURIComponent(t)}`;case"habit":return`/habits?focus=${encodeURIComponent(t)}`;case"note":{const n=d(i.kind),c=d(i.slug),u=d(i.spaceId);if(n==="wiki"&&c){const e=u?`?spaceId=${encodeURIComponent(u)}`:"";return`/wiki/page/${encodeURIComponent(c)}${e}`}return"/notes"}case"insight":return"/insights";case"calendar_event":case"work_block_template":case"task_timebox":return"/calendar";case"psyche_value":return`/psyche/values?focus=${encodeURIComponent(t)}`;case"behavior_pattern":return`/psyche/patterns?focus=${encodeURIComponent(t)}`;case"behavior":return`/psyche/behaviors?focus=${encodeURIComponent(t)}`;case"belief_entry":return`/psyche/schemas-beliefs?focus=${encodeURIComponent(t)}`;case"mode_profile":return`/psyche/modes?focus=${encodeURIComponent(t)}`;case"flashcard":return`/psyche/flashcards?focus=${encodeURIComponent(t)}`;case"trigger_report":return`/psyche/reports/${encodeURIComponent(t)}`;default:return null}}function W(r,t,i){const n=A(r);if(!n)return 0;const c=A(t),u=A(i),e=n.split(/\s+/).filter(Boolean);let h=0;c===n&&(h+=400),c.startsWith(n)&&(h+=240),c.includes(n)&&(h+=180),u.startsWith(n)&&(h+=32),u.includes(n)&&(h+=20);for(const j of e)c.startsWith(j)?h+=36:c.includes(j)&&(h+=24),u.includes(j)&&(h+=12);return h}function ie(r){if(r.length===0)return Ge;const t=new Set;return r.forEach(i=>{i.entityTypes.forEach(n=>t.add(n))}),Array.from(t)}function Je(r,t,i){if(!r.entityTypes.includes(t))return!1;if(t!=="note")return!0;const n=d(i.kind);return r.id==="wiki_page"?n==="wiki":r.id==="note"?n!=="wiki":!0}function et(r,t,i){if(i.length===0)return!0;const n=new Map;i.forEach(c=>{const u=n.get(c.family)??[];u.push(c),n.set(c.family,u)});for(const c of n.values())if(!c.some(e=>Je(e,r,t)))return!1;return!0}function tt(r,t){if(t.length===0)return!0;const i=new Set(t.filter(n=>n.family==="entity-type").map(n=>n.id));return i.size===0?!0:r.filterIds.some(n=>i.has(n))}function rt(r,t){const i=A(r);if(!Oe(i))return[];const n=Ye(i);return n===null?[]:t.map(c=>{const u=[c.title,c.quickActionTitle,c.description,...c.aliases].join(" ").toLowerCase(),e=n.length===0?1:W(n,c.quickActionTitle,u);return{...c,score:e}}).filter(c=>c.score>0).sort((c,u)=>u.score-c.score||c.quickActionTitle.localeCompare(u.quickActionTitle))}const at=new Set(ie([]));function ot(r){return typeof r=="string"&&at.has(r)}function l(r,t){const i=t??ee;switch(r){case"action":return{icon:oe,tileClassName:"border-emerald-300/18 bg-emerald-300/12 text-emerald-100 shadow-[0_18px_36px_rgba(52,211,153,0.12)]",badgeClassName:"border-emerald-300/18 bg-emerald-300/10 text-emerald-100"};case"wiki":return{icon:ae,tileClassName:"border-blue-300/18 bg-blue-300/12 text-blue-100 shadow-[0_18px_36px_rgba(96,165,250,0.12)]",badgeClassName:"border-blue-300/18 bg-blue-300/10 text-blue-100"};case"note":return{icon:re,tileClassName:"border-amber-300/18 bg-amber-300/12 text-amber-100 shadow-[0_18px_36px_rgba(251,191,36,0.12)]",badgeClassName:"border-amber-300/18 bg-amber-300/10 text-amber-100"};case"insight":return{icon:ve,tileClassName:"border-emerald-300/18 bg-emerald-300/12 text-emerald-100 shadow-[0_18px_36px_rgba(52,211,153,0.12)]",badgeClassName:"border-emerald-300/18 bg-emerald-300/10 text-emerald-100"};case"calendar":return{icon:te,tileClassName:"border-cyan-300/18 bg-cyan-300/12 text-cyan-100 shadow-[0_18px_36px_rgba(34,211,238,0.12)]",badgeClassName:"border-cyan-300/18 bg-cyan-300/10 text-cyan-100"};case"route":return{icon:i,tileClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-medium)] shadow-[var(--ui-shadow-soft)]",badgeClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-soft)]"};default:return{icon:i,tileClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-medium)] shadow-[var(--ui-shadow-soft)]",badgeClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-soft)]"}}}function st({item:r}){if(r.kind){const n=Ke(r.kind),c=n.icon;return o.jsx("span",{className:R("mt-0.5 inline-flex size-11 shrink-0 items-center justify-center rounded-[17px] border",n.subtleBadgeClassName),children:o.jsx(c,{className:R("size-5",n.iconClassName)})})}const t=l("search",r.icon),i=r.icon??t.icon;return o.jsx("span",{className:R("mt-0.5 inline-flex size-11 shrink-0 items-center justify-center rounded-[17px] border",r.tileClassName??t.tileClassName),children:o.jsx(i,{className:"size-5"})})}function nt({item:r}){if(r.kind&&r.section==="results")return o.jsx(ze,{kind:r.kind,label:r.category,compact:!0,gradient:!1});const t=l(r.section==="quick-actions"?"action":"search",r.icon),i=r.icon??t.icon;return o.jsxs("span",{className:R("inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[11px] font-medium",r.badgeClassName??t.badgeClassName),children:[o.jsx(i,{className:"size-3.5"}),r.category]})}function f(r,t,i){return`${r} ${t} ${i}`.trim().toLowerCase()}function gt({open:r,onOpenChange:t,snapshot:i,selectedUserIds:n,createActions:c}){var O;const u=be(),{t:e}=We(),h=p.useRef([]),[j,D]=p.useState(""),[B,P]=p.useState(0),[L,U]=p.useState([]),N=p.useDeferredValue(j),y=A(N),b=p.useMemo(()=>J.filter(a=>L.includes(a.id)),[L]);p.useEffect(()=>{r||(D(""),P(0),U([]))},[r]);const ce=p.useMemo(()=>J.map(a=>({value:a.id,label:a.label,description:a.id==="wiki_page"?"Search only KarpaWiki pages.":a.id==="note"?"Search notes and evidence that are not wiki pages.":`Search ${a.label.toLowerCase()} records.`,searchText:a.searchText,kind:a.kind})),[]),le=p.useMemo(()=>({routes:e("common.actionBar.sections.routes"),recent:e("common.actionBar.sections.recent"),"quick-actions":e("common.actionBar.sections.quickActions"),results:e("common.actionBar.sections.results")}),[e]),I=p.useMemo(()=>[{id:"route-overview",title:e("common.routeLabels.overview"),detail:e("common.commandPalette.routeOverview"),href:"/overview",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.overview"),e("common.commandPalette.routeOverview"),e("common.commandPalette.categoryRoute")),score:0,...l("route",ke)},{id:"route-today",title:e("common.routeLabels.today"),detail:e("common.commandPalette.routeToday"),href:"/today",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.today"),e("common.commandPalette.routeToday"),e("common.commandPalette.categoryRoute")),score:0,...l("route",we)},{id:"route-kanban",title:e("common.routeLabels.kanban"),detail:e("common.commandPalette.routeKanban"),href:"/kanban",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.kanban"),e("common.commandPalette.routeKanban"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Te)},{id:"route-psyche",title:e("common.routeLabels.psyche"),detail:e("common.commandPalette.routePsyche"),href:"/psyche",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.psyche"),e("common.commandPalette.routePsyche"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Ne)},{id:"route-notes",title:e("common.routeLabels.notes"),detail:e("common.commandPalette.routeNotes"),href:"/notes",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.notes"),e("common.commandPalette.routeNotes"),e("common.commandPalette.categoryRoute")),score:0,...l("route",re)},{id:"route-wiki",title:e("common.routeLabels.wiki"),detail:e("common.commandPalette.routeWiki"),href:"/wiki",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.wiki"),e("common.commandPalette.routeWiki"),e("common.commandPalette.categoryRoute")),score:0,...l("route",ae)},{id:"route-goals",title:e("common.routeLabels.goals"),detail:e("common.commandPalette.routeGoals"),href:"/goals",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.goals"),e("common.commandPalette.routeGoals"),e("common.commandPalette.categoryRoute")),score:0,...l("route",je)},{id:"route-habits",title:e("common.routeLabels.habits"),detail:e("common.commandPalette.routeHabits"),href:"/habits",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.habits"),e("common.commandPalette.routeHabits"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Pe)},{id:"route-projects",title:e("common.routeLabels.projects"),detail:e("common.commandPalette.routeProjects"),href:"/projects",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.projects"),e("common.commandPalette.routeProjects"),e("common.commandPalette.categoryRoute")),score:0,...l("route",_e)},{id:"route-strategies",title:e("common.routeLabels.strategies"),detail:e("common.commandPalette.routeStrategies"),href:"/strategies",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.strategies"),e("common.commandPalette.routeStrategies"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Ce)},{id:"route-preferences",title:e("common.routeLabels.preferences"),detail:e("common.commandPalette.routePreferences"),href:"/preferences",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.preferences"),e("common.commandPalette.routePreferences"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Re)},{id:"route-calendar",title:e("common.routeLabels.calendar"),detail:e("common.commandPalette.routeCalendar"),href:"/calendar",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.calendar"),e("common.commandPalette.routeCalendar"),e("common.commandPalette.categoryRoute")),score:0,...l("route",te)},{id:"route-knowledge-graph",title:"Knowledge Graph",detail:"Open the world model and graph views for Forge.",href:"/knowledge-graph",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f("Knowledge Graph","Open the world model and graph views for Forge.",e("common.commandPalette.categoryRoute")),score:0,...l("route",Be)},{id:"route-settings",title:e("common.routeLabels.settings"),detail:e("common.commandPalette.routeSettings"),href:"/settings",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.settings"),e("common.commandPalette.routeSettings"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Le)}],[e]),K=p.useMemo(()=>{const a=[...i.overview.topTasks.slice(0,4).map(s=>({id:`task-${s.id}`,title:s.title,detail:k(s.user)||e("common.commandPalette.openFocusTask"),href:`/tasks/${s.id}`,category:e("common.commandPalette.categoryTask"),section:"recent",searchText:`${s.title} ${k(s.user)}`.toLowerCase(),score:0,kind:"task"})),...i.dashboard.projects.slice(0,3).map(s=>({id:`project-${s.id}`,title:s.title,detail:[s.goalTitle,k(s.user)].filter(Boolean).join(" · "),href:`/projects/${s.id}`,category:e("common.commandPalette.categoryProject"),section:"recent",searchText:`${s.title} ${s.goalTitle??""} ${k(s.user)}`.toLowerCase(),score:0,kind:"project"})),...i.overview.activeGoals.slice(0,2).map(s=>({id:`goal-${s.id}`,title:s.title,detail:k(s.user)||e("common.commandPalette.openLifeGoal"),href:`/goals/${s.id}`,category:e("common.commandPalette.categoryGoal"),section:"recent",searchText:`${s.title} ${k(s.user)}`.toLowerCase(),score:0,kind:"goal"})),...i.dashboard.habits.slice(0,2).map(s=>({id:`habit-${s.id}`,title:s.title,detail:[s.frequency==="daily"?"Daily habit":"Weekly habit",k(s.user)].filter(Boolean).join(" · "),href:`/habits?focus=${s.id}`,category:e("common.routeLabels.habits"),section:"recent",searchText:`${s.title} ${s.frequency} ${k(s.user)}`.toLowerCase(),score:0,kind:"habit"}))].slice(0,8);return[...I.slice(0,6),...a]},[I,i,e]),$=Fe({queryKey:["forge-action-bar-search",y,[...L].sort().join("|"),[...n].sort().join("|")],enabled:r&&(y.length>0||b.length>0),queryFn:async()=>{const a=ie(b),s=await He({searches:a.map(g=>({entityTypes:[g],query:N.trim()||void 0,userIds:n.length>0?n:void 0,limit:g==="note"?6:4,clientRef:g}))}),x=new Map;for(const g of s.results){const w=Array.isArray(g.matches)?g.matches??[]:[];for(const S of w){if(!S||typeof S!="object")continue;const m=S;if(!ot(m.entityType)||typeof m.id!="string"||!m.entity||typeof m.entity!="object")continue;const T=m.entity;if(!et(m.entityType,T,b))continue;const Y=Xe(m.entityType,m.id,T);if(!Y)continue;const Q=se(m.entityType,T),de=ne(m.entityType,T),pe=M(m.entityType,T),Z=Ze(m.entityType,T),fe=Qe(m.entityType,T)??void 0,he=y.length>0?W(N,Q,Z):0;let _=l("search");m.entityType==="note"?_=l(T.kind==="wiki"?"wiki":"note"):m.entityType==="insight"?_=l("insight"):(m.entityType==="calendar_event"||m.entityType==="task_timebox"||m.entityType==="work_block_template")&&(_=l("calendar"));const C={id:`${m.entityType}-${m.id}`,title:Q,detail:de,href:Y,category:pe,section:"results",searchText:Z,score:he,kind:fe,icon:_.icon,tileClassName:_.tileClassName,badgeClassName:_.badgeClassName},E=x.get(C.id);(!E||C.score>E.score||C.score===E.score&&C.title<E.title)&&x.set(C.id,C)}}return Array.from(x.values()).sort((g,w)=>w.score!==g.score?w.score-g.score:g.title.localeCompare(w.title)).slice(0,12)}}),z=p.useMemo(()=>y?I.map(a=>({...a,score:W(N,a.title,a.searchText)})).filter(a=>a.score>0).sort((a,s)=>s.score-a.score||a.title.localeCompare(s.title)).slice(0,4):[],[N,y,I]),H=p.useMemo(()=>rt(N,c).filter(a=>tt(a,b)).slice(0,6).map(a=>({id:`quick-${a.id}`,title:a.quickActionTitle,detail:a.description,category:"Quick action",section:"quick-actions",searchText:`${a.quickActionTitle} ${a.description} ${a.aliases.join(" ")}`.toLowerCase(),score:a.score,onSelect:a.onSelect,...l("action",oe)})),[c,N,b]),v=p.useMemo(()=>{if(!y&&b.length===0)return K;const a=[...H,...z],s=new Set(a.map(x=>x.id));for(const x of $.data??[])s.has(x.id)||(s.add(x.id),a.push(x));return a.slice(0,16)},[K,$.data,y,H,z,b.length]);p.useEffect(()=>{P(0)},[y,r,L.join("|")]),p.useEffect(()=>{v.length!==0&&P(a=>Math.min(Math.max(a,0),v.length-1))},[v]),p.useEffect(()=>{const a=h.current[B];a==null||a.scrollIntoView({block:"nearest"})},[B]);const G=v[B]??null,F=i.users.filter(a=>n.includes(a.id)),me=n.length===0?"All humans and bots":F.length===1?((O=F[0])==null?void 0:O.displayName)??"1 selected owner":`${F.length||n.length} selected owners`,ue=(y.length>0||b.length>0)&&$.isFetching,V=a=>{if(t(!1),a.onSelect){a.onSelect();return}a.href&&u(a.href)};return o.jsx(Se,{open:r,onOpenChange:t,children:o.jsxs(Ae,{children:[o.jsx(Ie,{className:"surface-overlay fixed inset-0 z-40 backdrop-blur-xl"}),o.jsxs($e,{className:"surface-modal-panel fixed inset-x-3 bottom-3 top-3 z-50 flex flex-col overflow-hidden rounded-[30px] border sm:inset-x-6 sm:bottom-6 sm:top-6 md:left-1/2 md:right-auto md:top-[9vh] md:h-[min(82vh,48rem)] md:w-[min(64rem,calc(100vw-2rem))] md:-translate-x-1/2 md:bottom-auto",children:[o.jsx(Ee,{className:"sr-only",children:e("common.actionBar.title")}),o.jsx(Me,{className:"sr-only",children:e("common.actionBar.description")}),o.jsxs("div",{className:"border-b border-[var(--ui-border-subtle)] px-4 py-4 sm:px-5",children:[o.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-1.5 text-[12px] text-[var(--ui-ink-medium)]",children:[o.jsx("span",{className:"rounded-full bg-[var(--ui-surface-2)] px-2 py-0.5 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Scope"}),o.jsx("span",{children:me})]}),b.length>0?o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-1.5 text-[12px] text-[var(--ui-ink-medium)]",children:[o.jsx(ge,{className:"size-3.5 text-[var(--ui-ink-faint)]"}),o.jsxs("span",{children:[b.length," filter",b.length===1?"":"s"]})]}):null]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:[o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Shift Shift"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Cmd/Ctrl K"})]})]}),o.jsxs("div",{className:"mt-4 rounded-[24px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)] px-4 py-4 shadow-[inset_0_1px_0_var(--ui-border-subtle)]",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(ee,{className:"size-5 text-[var(--ui-ink-faint)]"}),o.jsx(De,{autoFocus:!0,value:j,onChange:a=>D(a.target.value),onKeyDown:a=>{if(a.key==="ArrowDown"){a.preventDefault(),P(s=>v.length===0?0:Math.min(s+1,v.length-1));return}if(a.key==="ArrowUp"){a.preventDefault(),P(s=>Math.max(s-1,0));return}if(a.key==="Enter"&&G){a.preventDefault(),V(G);return}a.key==="Escape"&&(a.preventDefault(),t(!1))},placeholder:e("common.actionBar.searchPlaceholder"),className:"border-0 bg-transparent px-0 py-0 text-[1rem] focus:border-0"}),ue?o.jsx(ye,{className:"size-4 shrink-0 animate-spin text-[var(--ui-ink-faint)]"}):null]}),o.jsx("div",{className:"mt-2 pl-8 text-[13px] leading-6 text-[var(--ui-ink-soft)]",children:e(y?"common.actionBar.activeHint":"common.actionBar.idleHint")}),o.jsxs("div",{className:"mt-4 border-t border-[var(--ui-border-subtle)] pt-4",children:[o.jsx("div",{className:"mb-2 pl-1 text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:e("common.actionBar.filtersLabel")}),o.jsx(qe,{options:ce,selectedValues:L,onChange:U,placeholder:e("common.actionBar.filtersPlaceholder"),emptyMessage:e("common.actionBar.filtersEmpty"),variant:"action-bar"})]})]})]}),o.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3 sm:px-4",children:v.length===0?o.jsx("div",{className:"rounded-[24px] border border-dashed border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-4 py-8 text-center text-sm text-[var(--ui-ink-soft)]",children:$.isFetching?e("common.actionBar.searching"):b.length>0?e("common.actionBar.noResultsWithFilters"):e("common.actionBar.noResults")}):o.jsx("div",{className:"grid gap-2",children:v.map((a,s)=>{var w;const g=(((w=v[s-1])==null?void 0:w.section)??null)!==a.section;return o.jsxs("div",{children:[g?o.jsx("div",{className:"px-2 pb-1 pt-2 text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)] first:pt-0",children:le[a.section]}):null,o.jsxs("button",{ref:S=>{h.current[s]=S},type:"button",className:R("group flex w-full items-start gap-3 rounded-[24px] border px-4 py-3.5 text-left transition",s===B?"border-[var(--ui-border-strong)] bg-[var(--ui-surface-3)] shadow-[var(--ui-shadow-soft)]":"border-transparent bg-[var(--ui-surface-1)] hover:border-[var(--ui-border-subtle)] hover:bg-[var(--ui-surface-hover)]"),onMouseEnter:()=>P(s),onClick:()=>V(a),children:[o.jsx(st,{item:a}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("div",{className:"flex flex-wrap items-center gap-2",children:o.jsx(nt,{item:a})}),o.jsx("div",{className:"mt-2 text-[15px] font-medium text-[var(--ui-ink-strong)]",children:a.kind&&a.section==="results"?o.jsx(Ue,{kind:a.kind,label:a.title,showIcon:!1,labelClassName:"text-[var(--ui-ink-strong)]"}):a.title}),o.jsx("div",{className:"mt-1 text-sm leading-6 text-[var(--ui-ink-soft)]",children:a.detail})]}),o.jsx(xe,{className:R("mt-1 size-4 shrink-0 transition",s===B?"text-[var(--ui-ink-medium)]":"text-[var(--ui-ink-faint)] group-hover:text-[var(--ui-ink-soft)]")})]})]},a.id)})})}),o.jsx("div",{className:"border-t border-[var(--ui-border-subtle)] px-4 py-3 sm:px-5",children:o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[12px] text-[var(--ui-ink-faint)]",children:[o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Up/Down navigate"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Enter open"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Esc close"})]})})]})]})})}export{gt as ActionBar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,aC as p,
|
|
1
|
+
import{j as e,aC as p,bZ as C}from"./vendor-B7FKSwHK.js";import{j as E,i as _,k as I}from"./state-BFyKSULP.js";import{C as b,f as v,B as g,d as P,L as S,e as L,h as R,i as T,r as U,l as q}from"./index-gmPaoLN-.js";import{P as Q}from"./page-hero-U603l9rQ.js";import{u as F,f as y,g as H,c as M}from"./table-CTLroJKN.js";import{U as k}from"./user-badge-C4eZu1e_.js";import{g as m,a as f}from"./entity-links-DwpxhW2H.js";import"./motion-BibSzp57.js";import"./ui-uo_bNP7c.js";import"./board-DprRipIG.js";import"./forms-ByKjodjN.js";const o=M(),j=[o.accessor("title",{header:"Event",cell:r=>{const a=m(r.row.original);return a?e.jsx(p,{to:a,className:"font-medium text-[var(--ui-ink-strong)] transition hover:text-[var(--primary)]",children:r.getValue()}):e.jsx("div",{className:"font-medium text-[var(--ui-ink-strong)]",children:r.getValue()})}}),o.accessor("source",{header:"Source",cell:r=>e.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:r.getValue()})}),o.display({id:"owner",header:"Owner",cell:r=>r.row.original.user?e.jsx(k,{user:r.row.original.user,compact:!0}):e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Unowned"})}),o.accessor("createdAt",{header:"When",cell:r=>e.jsx("div",{className:"text-sm text-[var(--ui-ink-soft)]",children:v(r.getValue())})}),o.display({id:"actions",header:"Open",cell:r=>{const a=m(r.row.original);return a?e.jsx(p,{to:a,className:"inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:"Open"}):e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Archive only"})}})];function O({rows:r,onRemove:a}){const l=a?[...j,o.display({id:"remove",header:"Correct",cell:t=>e.jsx(g,{variant:"ghost",className:"h-auto px-0 py-0 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-soft)]",onClick:()=>{a(t.row.original.id)},children:"Remove log"})})]:j,c=F({columns:l,data:r,getCoreRowModel:H()});return e.jsxs(b,{className:"min-w-0 overflow-hidden p-0",children:[e.jsxs("table",{className:"hidden w-full border-collapse md:table",children:[e.jsx("thead",{children:c.getHeaderGroups().map(t=>e.jsx("tr",{className:"bg-[var(--ui-surface-2)]",children:t.headers.map(i=>e.jsx("th",{className:"px-5 py-4 text-left font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:i.isPlaceholder?null:y(i.column.columnDef.header,i.getContext())},i.id))},t.id))}),e.jsx("tbody",{children:c.getRowModel().rows.map(t=>e.jsx("tr",{className:"border-t border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] transition hover:bg-[var(--ui-surface-hover)]",children:t.getVisibleCells().map(i=>e.jsx("td",{className:"px-5 py-4 align-top",children:y(i.column.columnDef.cell,i.getContext())},i.id))},t.id))})]}),e.jsx("div",{className:"grid gap-3 p-3 md:hidden",children:r.map(t=>{const i=m(t);return e.jsxs("article",{className:"min-w-0 rounded-[22px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-4",children:[e.jsxs("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:t.source}),e.jsx("div",{className:"mt-2 break-words text-sm font-semibold text-[var(--ui-ink-strong)]",children:t.title})]}),t.user?e.jsx(k,{user:t.user,compact:!0}):null]}),e.jsx("div",{className:"mt-2 text-sm leading-6 text-[var(--ui-ink-soft)]",children:t.description}),e.jsx("div",{className:"mt-3 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:v(t.createdAt)}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-3",children:[i?e.jsx(p,{to:i,className:"inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:"Open"}):null,a?e.jsx(g,{variant:"ghost",className:"h-auto px-0 py-0 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-soft)]",onClick:()=>{a(t.id)},children:"Remove log"}):null]})]},t.id)})})]})}function Y(){var h;const r=P(),a=Array.isArray(r.selectedUserIds)?r.selectedUserIds:[],[l]=C(),c=E(),t=l.get("entityId")??void 0,i=l.get("entityType")??void 0,N=l.get("eventId"),d=_({queryKey:["activity-archive",i,t,...a],queryFn:()=>q({limit:100,entityType:i,entityId:t,userIds:a})}),w=I({mutationFn:n=>U(n),onSuccess:async()=>{await Promise.all([c.invalidateQueries({queryKey:["activity-archive"]}),T(c),c.invalidateQueries({queryKey:["task-context"]}),c.invalidateQueries({queryKey:["project-board"]})])}}),u=((h=d.data)==null?void 0:h.activity)??[];if(d.isLoading)return e.jsx(S,{eyebrow:"Evidence archive",title:"Loading activity",description:"Pulling the visible audit trail, grouped evidence, and correction history."});if(d.isError)return e.jsx(L,{eyebrow:"Evidence archive",error:d.error,onRetry:()=>void d.refetch()});if(u.length===0)return e.jsx(R,{eyebrow:"Evidence archive",title:t?"No evidence matched this filter":"No activity recorded yet",description:t?"Forge could not find visible events for this specific entity yet. Try a broader archive view or create some work first.":"As you complete work, log runs, or make corrections, the audit trail will appear here."});const A=u.reduce((n,x)=>{const s=x.createdAt.slice(0,10);return n[s]=[...n[s]??[],x],n},{});return e.jsxs("div",{className:"grid gap-5",children:[e.jsx(Q,{title:"Activity",description:t?"This filtered archive shows the evidence connected to the item you opened, so you can confirm what changed and when.":"Activity is your visible audit trail. Use it to inspect progress, confirm corrections, and trace work back to the goal, project, or task it came from.",badge:`${u.length} recent events`}),e.jsxs("section",{className:"grid gap-5 xl:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]",children:[e.jsx(O,{rows:u,onRemove:async n=>{await w.mutateAsync(n)}}),e.jsx("div",{className:"grid gap-4",children:Object.entries(A).slice(0,6).map(([n,x])=>e.jsxs(b,{className:"min-w-0",children:[e.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:n}),e.jsx("div",{className:"mt-4 grid gap-3",children:x.slice(0,3).map(s=>e.jsxs("div",{className:`min-w-0 rounded-[18px] border p-4 ${N===s.id?"border-[color-mix(in_srgb,var(--primary)_30%,transparent)] bg-[var(--ui-accent-soft)] shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--primary)_16%,transparent)]":"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)]"}`,children:[e.jsx("div",{className:"break-words font-medium text-[var(--ui-ink-strong)]",children:s.title}),e.jsx("div",{className:"mt-2 text-sm text-[var(--ui-ink-soft)]",children:s.description}),e.jsx("div",{className:"mt-3 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:v(s.createdAt)}),m(s)&&f(s)?e.jsx(p,{to:m(s),className:"mt-3 inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:f(s)}):null]},s.id))})]},n))})]})]})}export{Y as ActivityPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as r,r as x,cF as Z,cQ as ee,by as te,cR as re,cS as ie,cT as ne,cU as se,cV as ae,aC as le,b1 as oe}from"./vendor-BwL6m4SE.js";import{u as ue,a as ce,P as de,D as fe,c as me,S as xe,v as he,d as ve,b as be,C as pe}from"./board-CuxQRKPJ.js";import{i as ge,k as U}from"./state-Bpe5dF3T.js";import{ci as je,cj as Ne,B as H,c as W,C as ye,ck as Se}from"./index-FpGANF9S.js";function ke({children:e}){return r.jsx(r.Fragment,{children:e})}const k={lg:1280,md:996,sm:768,xs:480},A={lg:12,md:10,sm:6,xs:4,xxs:2},We="forge.surface-layout.v3";function I(e){return`${We}.${e}`}function F(e,i,n){return Math.min(Math.max(e,i),n)}function Ce(e){return e>=k.lg?"lg":e>=k.md?"md":e>=k.sm?"sm":e>=k.xs?"xs":"xxs"}function Ee(e,i){const n=A[i];if(i==="lg")return F(e.defaultWidth,e.minWidth??1,Math.min(e.maxWidth??n,n));const s=Math.round(e.defaultWidth/A.lg*n);return F(Math.max(e.minWidth??1,s||(e.minWidth??1)),e.minWidth??1,Math.min(e.maxWidth??n,n))}function Me(e){return{hidden:e.defaultHidden??!1,fullWidth:e.defaultFullWidth??!1,titleVisible:e.defaultTitleVisible??!0,descriptionVisible:e.defaultDescriptionVisible??!0}}function P(e,i){const n=[...i.filter(s=>s.defaultPlacement==="top"),...i.filter(s=>s.defaultPlacement!=="top")];return{surfaceId:e,order:n.map(s=>s.id),widgets:Object.fromEntries(i.map(s=>[s.id,Me(s)])),updatedAt:new Date(0).toISOString()}}function V(e,i,n){const s=P(e,i),l=new Set(i.map(o=>o.id)),c=((n==null?void 0:n.order)??[]).filter(o=>l.has(o)),h=s.order.filter(o=>!c.includes(o)),d=Object.fromEntries(i.map(o=>{var N,g,m,b,p;const f=(N=n==null?void 0:n.widgets)==null?void 0:N[o.id];return[o.id,{...s.widgets[o.id],hidden:(f==null?void 0:f.hidden)??((g=s.widgets[o.id])==null?void 0:g.hidden)??!1,fullWidth:(f==null?void 0:f.fullWidth)??((m=s.widgets[o.id])==null?void 0:m.fullWidth)??!1,titleVisible:(f==null?void 0:f.titleVisible)??((b=s.widgets[o.id])==null?void 0:b.titleVisible)??!0,descriptionVisible:(f==null?void 0:f.descriptionVisible)??((p=s.widgets[o.id])==null?void 0:p.descriptionVisible)??!0}]}));return{surfaceId:e,order:[...c,...h],widgets:d,updatedAt:typeof(n==null?void 0:n.updatedAt)=="string"?n.updatedAt:s.updatedAt}}function Ve(e,i){const n=new Map(i.order.map((s,l)=>[s,l]));return[...e].sort((s,l)=>{const c=n.get(s.id)??Number.MAX_SAFE_INTEGER,h=n.get(l.id)??Number.MAX_SAFE_INTEGER;return c!==h?c-h:s.id.localeCompare(l.id)})}function Re(e,i,n){const s=e.indexOf(i);if(s===-1)return e;const l=F(n,0,e.length-1);if(s===l)return e;const c=[...e];return c.splice(s,1),c.splice(l,0,i),c}function R(e){if(typeof window>"u")return null;try{const i=window.localStorage.getItem(I(e));return i?JSON.parse(i):null}catch{return null}}function O(e){if(!(typeof window>"u"))try{window.localStorage.setItem(I(e.surfaceId),JSON.stringify(e))}catch{}}const Oe=500;function G(e,i){return e.surfaceId===i.surfaceId&&JSON.stringify(e.order)===JSON.stringify(i.order)&&JSON.stringify(e.widgets)===JSON.stringify(i.widgets)}function Ae({definition:e,preferences:i,editing:n,width:s,children:l}){const c=s<=4;return e.surfaceChrome==="none"?r.jsx("div",{"data-surface-card":"true",className:W("min-w-0",n&&"rounded-[28px] ring-1 ring-[var(--ui-border-subtle)] ring-inset"),children:l}):r.jsxs(ye,{"data-surface-card":"true",className:W("surface-grid-card flex min-w-0 flex-col gap-3 overflow-visible p-4 md:p-5",n&&"ring-1 ring-[var(--ui-border-subtle)]"),children:[i.titleVisible||i.descriptionVisible&&e.description?r.jsxs("div",{className:"min-w-0",children:[i.titleVisible?r.jsx("div",{className:"truncate text-[0.72rem] font-semibold uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:e.title}):null,i.descriptionVisible&&e.description&&!c?r.jsx("div",{className:"mt-1 text-[12px] leading-5 text-[var(--ui-ink-soft)]",children:e.description}):null]}):null,r.jsx("div",{className:"min-h-0 flex-1",children:l})]})}function Fe({widget:e,preferences:i,index:n,total:s,onMove:l,onToggleHidden:c,onToggleFullWidth:h}){const d=be({id:e.id});return r.jsxs("div",{ref:d.setNodeRef,style:{transform:pe.Transform.toString(d.transform),transition:d.transition},className:"flex min-w-0 items-center gap-2 rounded-[18px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-2.5",children:[r.jsx("button",{type:"button",className:"inline-flex size-8 shrink-0 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]","aria-label":`Drag ${e.title}`,...d.attributes,...d.listeners,children:r.jsx(te,{className:"size-4"})}),r.jsxs("div",{className:"min-w-0 flex-1",children:[r.jsx("div",{className:"truncate text-sm font-medium text-[var(--ui-ink-strong)]",children:e.title}),e.description?r.jsx("div",{className:"truncate text-[12px] text-[var(--ui-ink-faint)]",children:e.description}):null]}),r.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[r.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)] disabled:opacity-40",onClick:()=>l(n-1),disabled:n===0,"aria-label":`Move ${e.title} up`,children:r.jsx(re,{className:"size-3.5"})}),r.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)] disabled:opacity-40",onClick:()=>l(n+1),disabled:n===s-1,"aria-label":`Move ${e.title} down`,children:r.jsx(ie,{className:"size-3.5"})}),r.jsxs("button",{type:"button",className:W("inline-flex h-8 items-center gap-2 rounded-full px-3 text-[12px] transition",i.fullWidth?"bg-[var(--primary)] text-[var(--ui-ink-on-accent)]":"bg-[var(--ui-surface-2)] text-[var(--ui-ink-medium)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]"),onClick:h,children:[i.fullWidth?r.jsx(ne,{className:"size-3.5"}):r.jsx(se,{className:"size-3.5"}),i.fullWidth?"Normal width":"Full width"]}),e.removable!==!1?r.jsxs("button",{type:"button",className:"inline-flex h-8 items-center gap-2 rounded-full bg-[var(--ui-surface-2)] px-3 text-[12px] text-[var(--ui-ink-medium)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:c,children:[r.jsx(ae,{className:"size-3.5"}),"Hide"]}):null]})]})}function Pe({surfaceId:e,widgets:i,defaultEditing:n=!1,actions:s,normalizeLayout:l}){var B;const c=x.useMemo(()=>JSON.stringify(i.map(t=>({id:t.id,defaultWidth:t.defaultWidth,defaultHidden:t.defaultHidden,defaultPlacement:t.defaultPlacement,defaultFullWidth:t.defaultFullWidth,defaultTitleVisible:t.defaultTitleVisible,defaultDescriptionVisible:t.defaultDescriptionVisible}))),[i]),h=x.useMemo(()=>{const t=P(e,i);return l?l(t):t},[l,e,c]),d=t=>l?l(t):t,[o,f]=x.useState(n),[N,g]=x.useState(1280),[m,b]=x.useState(()=>d(V(e,i,R(e)??h))),p=x.useRef(null),T=x.useRef(!1),y=x.useRef(d(V(e,i,R(e)??h))),z=x.useRef(null),q=ue(ce(de,{activationConstraint:{distance:6}})),C=ge({queryKey:["forge-surface-layout",e],queryFn:()=>Se(e)}),D=(B=C==null?void 0:C.data)==null?void 0:B.layout,L=U({mutationFn:t=>je(e,{order:t.order,widgets:t.widgets})}),K=U({mutationFn:()=>Ne(e)});x.useEffect(()=>{const t=d(V(e,i,D??R(e)??h));b(a=>G(a,t)?a:t),O(t),y.current=t,T.current=!0},[h,D,l,e,c,i]),x.useEffect(()=>{const t=z.current;if(!t||typeof ResizeObserver>"u")return;const a=new ResizeObserver(u=>{var j;const v=((j=u[0])==null?void 0:j.contentRect.width)??t.clientWidth;g(Math.max(320,Math.round(v)))});return a.observe(t),g(Math.max(320,Math.round(t.clientWidth||1280))),()=>a.disconnect()},[]),x.useEffect(()=>{if(T.current&&!G(m,y.current))return O(m),p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{const t=m;L.mutateAsync(t).then(()=>{y.current=t})},Oe),()=>{p.current!==null&&window.clearTimeout(p.current)}},[m,L,e]);const $=Ce(N),E=A[$],_=x.useMemo(()=>Ve(i,m),[m,i]),S=_.filter(t=>{var a;return!((a=m.widgets[t.id])!=null&&a.hidden)}),w=_.filter(t=>{var a;return(a=m.widgets[t.id])==null?void 0:a.hidden});function M(t,a){b(u=>d({...u,widgets:{...u.widgets,[t]:{...u.widgets[t],...a}}}))}function X(t,a){b(u=>d({...u,order:Re(u.order,t,a)}))}function Q(t){const{active:a,over:u}=t;!u||a.id===u.id||b(v=>{const j=v.order.indexOf(String(a.id)),J=v.order.indexOf(String(u.id));return j===-1||J===-1?v:d({...v,order:ve(v.order,j,J)})})}function Y(){const t=d(P(e,i));b(t),O(t),y.current=t,K.mutateAsync()}return r.jsxs("div",{className:"grid gap-4",children:[o?r.jsx(fe,{sensors:q,collisionDetection:me,onDragEnd:Q,children:r.jsxs("div",{className:"grid gap-3 rounded-[24px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-4",children:[r.jsx("div",{className:"text-[12px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Visible boxes"}),r.jsx(xe,{items:S.map(t=>t.id),strategy:he,children:r.jsx("div",{className:"grid gap-2",children:S.map((t,a)=>{const u=m.widgets[t.id]??{hidden:!1,fullWidth:!1,titleVisible:!0,descriptionVisible:!0};return r.jsx(Fe,{widget:t,preferences:u,index:a,total:S.length,onMove:v=>X(t.id,v),onToggleHidden:()=>M(t.id,{hidden:!0}),onToggleFullWidth:()=>M(t.id,{fullWidth:!u.fullWidth})},t.id)})})}),w.length>0?r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"pt-2 text-[12px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Hidden boxes"}),r.jsx("div",{className:"flex flex-wrap gap-2",children:w.map(t=>r.jsx("button",{type:"button",className:"rounded-full bg-[var(--ui-surface-2)] px-3 py-2 text-sm text-[var(--ui-ink-medium)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:()=>M(t.id,{hidden:!1}),children:t.title},t.id))})]}):null]})}):null,r.jsxs("div",{ref:z,className:"relative",children:[r.jsx("div",{className:"pointer-events-none absolute top-3 right-3 z-20 flex max-w-[calc(100%-1.5rem)] flex-wrap items-center justify-end gap-1.5",children:r.jsxs("div",{className:"pointer-events-auto flex flex-wrap items-center justify-end gap-1.5",children:[s,o?r.jsxs(H,{type:"button",size:"sm",variant:"secondary",className:"h-8 rounded-full border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] px-2.5 text-[12px] text-[var(--ui-ink-medium)] backdrop-blur-xl hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:Y,children:[r.jsx(Z,{className:"size-3.5"}),r.jsx("span",{className:"hidden sm:inline",children:"Reset"})]}):null,r.jsxs(H,{type:"button",size:"sm",variant:o?"primary":"secondary",className:W("h-8 rounded-full px-2 text-[12px] backdrop-blur-xl [&>span]:gap-1.5",o?"bg-[var(--primary)] text-[var(--ui-ink-on-accent)] hover:opacity-95":"border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] text-[var(--ui-ink-medium)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]"),onClick:()=>f(t=>!t),children:[r.jsx(ee,{className:"size-3.5"}),r.jsx("span",{className:"hidden xl:inline",children:o?"Done":"Layout"})]})]})}),r.jsx("div",{className:"surface-flow-grid",style:{display:"grid",gap:"16px",gridTemplateColumns:`repeat(${E}, minmax(0, 1fr))`,alignItems:"start"},children:S.map(t=>{const a=m.widgets[t.id]??{hidden:!1,fullWidth:!1,titleVisible:!0,descriptionVisible:!0},u=a.fullWidth?E:Math.min(Ee(t,$),E);return r.jsx("div",{style:{gridColumn:`span ${u} / span ${u}`},children:r.jsx(Ae,{definition:t,preferences:a,editing:o,width:u,children:r.jsx(ke,{boxId:t.workbenchBoxId??`surface:${e}:${t.id}`,surfaceId:e,children:t.render({compact:u<=4,width:u,editing:o,preferences:a})})})},t.id)})})]})]})}function $e({surfaceId:e,baseWidgets:i,actions:n,normalizeLayout:s}){return r.jsx(Pe,{surfaceId:e,widgets:i,normalizeLayout:s,actions:r.jsxs(r.Fragment,{children:[n,r.jsxs(le,{to:`/workbench?surface=${encodeURIComponent(e)}`,className:"inline-flex h-8 items-center gap-1.5 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] px-2.5 text-[12px] font-medium text-[var(--ui-ink-medium)] backdrop-blur-xl transition hover:border-[var(--ui-border-strong)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",children:[r.jsx(oe,{className:"size-3.5"}),r.jsx("span",{className:"hidden sm:inline",children:"Workbench"})]})]})})}export{$e as A};
|
|
1
|
+
import{j as r,r as x,cJ as Z,cT as ee,bz as te,cU as re,cV as ie,cW as ne,cX as se,cY as ae,aC as le,b2 as oe}from"./vendor-B7FKSwHK.js";import{u as ue,a as ce,P as de,D as fe,c as me,S as xe,v as he,d as ve,b as be,C as pe}from"./board-DprRipIG.js";import{i as ge,k as U}from"./state-BFyKSULP.js";import{cr as je,cs as Ne,B as H,c as W,C as ye,ct as Se}from"./index-gmPaoLN-.js";function ke({children:e}){return r.jsx(r.Fragment,{children:e})}const k={lg:1280,md:996,sm:768,xs:480},A={lg:12,md:10,sm:6,xs:4,xxs:2},We="forge.surface-layout.v3";function I(e){return`${We}.${e}`}function F(e,i,n){return Math.min(Math.max(e,i),n)}function Ce(e){return e>=k.lg?"lg":e>=k.md?"md":e>=k.sm?"sm":e>=k.xs?"xs":"xxs"}function Ee(e,i){const n=A[i];if(i==="lg")return F(e.defaultWidth,e.minWidth??1,Math.min(e.maxWidth??n,n));const s=Math.round(e.defaultWidth/A.lg*n);return F(Math.max(e.minWidth??1,s||(e.minWidth??1)),e.minWidth??1,Math.min(e.maxWidth??n,n))}function Me(e){return{hidden:e.defaultHidden??!1,fullWidth:e.defaultFullWidth??!1,titleVisible:e.defaultTitleVisible??!0,descriptionVisible:e.defaultDescriptionVisible??!0}}function P(e,i){const n=[...i.filter(s=>s.defaultPlacement==="top"),...i.filter(s=>s.defaultPlacement!=="top")];return{surfaceId:e,order:n.map(s=>s.id),widgets:Object.fromEntries(i.map(s=>[s.id,Me(s)])),updatedAt:new Date(0).toISOString()}}function V(e,i,n){const s=P(e,i),l=new Set(i.map(o=>o.id)),c=((n==null?void 0:n.order)??[]).filter(o=>l.has(o)),h=s.order.filter(o=>!c.includes(o)),d=Object.fromEntries(i.map(o=>{var N,g,m,b,p;const f=(N=n==null?void 0:n.widgets)==null?void 0:N[o.id];return[o.id,{...s.widgets[o.id],hidden:(f==null?void 0:f.hidden)??((g=s.widgets[o.id])==null?void 0:g.hidden)??!1,fullWidth:(f==null?void 0:f.fullWidth)??((m=s.widgets[o.id])==null?void 0:m.fullWidth)??!1,titleVisible:(f==null?void 0:f.titleVisible)??((b=s.widgets[o.id])==null?void 0:b.titleVisible)??!0,descriptionVisible:(f==null?void 0:f.descriptionVisible)??((p=s.widgets[o.id])==null?void 0:p.descriptionVisible)??!0}]}));return{surfaceId:e,order:[...c,...h],widgets:d,updatedAt:typeof(n==null?void 0:n.updatedAt)=="string"?n.updatedAt:s.updatedAt}}function Ve(e,i){const n=new Map(i.order.map((s,l)=>[s,l]));return[...e].sort((s,l)=>{const c=n.get(s.id)??Number.MAX_SAFE_INTEGER,h=n.get(l.id)??Number.MAX_SAFE_INTEGER;return c!==h?c-h:s.id.localeCompare(l.id)})}function Oe(e,i,n){const s=e.indexOf(i);if(s===-1)return e;const l=F(n,0,e.length-1);if(s===l)return e;const c=[...e];return c.splice(s,1),c.splice(l,0,i),c}function O(e){if(typeof window>"u")return null;try{const i=window.localStorage.getItem(I(e));return i?JSON.parse(i):null}catch{return null}}function R(e){if(!(typeof window>"u"))try{window.localStorage.setItem(I(e.surfaceId),JSON.stringify(e))}catch{}}const Re=500;function G(e,i){return e.surfaceId===i.surfaceId&&JSON.stringify(e.order)===JSON.stringify(i.order)&&JSON.stringify(e.widgets)===JSON.stringify(i.widgets)}function Ae({definition:e,preferences:i,editing:n,width:s,children:l}){const c=s<=4;return e.surfaceChrome==="none"?r.jsx("div",{"data-surface-card":"true",className:W("min-w-0",n&&"rounded-[28px] ring-1 ring-[var(--ui-border-subtle)] ring-inset"),children:l}):r.jsxs(ye,{"data-surface-card":"true",className:W("surface-grid-card flex min-w-0 flex-col gap-3 overflow-visible p-4 md:p-5",n&&"ring-1 ring-[var(--ui-border-subtle)]"),children:[i.titleVisible||i.descriptionVisible&&e.description?r.jsxs("div",{className:"min-w-0",children:[i.titleVisible?r.jsx("div",{className:"truncate text-[0.72rem] font-semibold uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:e.title}):null,i.descriptionVisible&&e.description&&!c?r.jsx("div",{className:"mt-1 text-[12px] leading-5 text-[var(--ui-ink-soft)]",children:e.description}):null]}):null,r.jsx("div",{className:"min-h-0 flex-1",children:l})]})}function Fe({widget:e,preferences:i,index:n,total:s,onMove:l,onToggleHidden:c,onToggleFullWidth:h}){const d=be({id:e.id});return r.jsxs("div",{ref:d.setNodeRef,style:{transform:pe.Transform.toString(d.transform),transition:d.transition},className:"flex min-w-0 items-center gap-2 rounded-[18px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-2.5",children:[r.jsx("button",{type:"button",className:"inline-flex size-8 shrink-0 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]","aria-label":`Drag ${e.title}`,...d.attributes,...d.listeners,children:r.jsx(te,{className:"size-4"})}),r.jsxs("div",{className:"min-w-0 flex-1",children:[r.jsx("div",{className:"truncate text-sm font-medium text-[var(--ui-ink-strong)]",children:e.title}),e.description?r.jsx("div",{className:"truncate text-[12px] text-[var(--ui-ink-faint)]",children:e.description}):null]}),r.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[r.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)] disabled:opacity-40",onClick:()=>l(n-1),disabled:n===0,"aria-label":`Move ${e.title} up`,children:r.jsx(re,{className:"size-3.5"})}),r.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)] disabled:opacity-40",onClick:()=>l(n+1),disabled:n===s-1,"aria-label":`Move ${e.title} down`,children:r.jsx(ie,{className:"size-3.5"})}),r.jsxs("button",{type:"button",className:W("inline-flex h-8 items-center gap-2 rounded-full px-3 text-[12px] transition",i.fullWidth?"bg-[var(--primary)] text-[var(--ui-ink-on-accent)]":"bg-[var(--ui-surface-2)] text-[var(--ui-ink-medium)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]"),onClick:h,children:[i.fullWidth?r.jsx(ne,{className:"size-3.5"}):r.jsx(se,{className:"size-3.5"}),i.fullWidth?"Normal width":"Full width"]}),e.removable!==!1?r.jsxs("button",{type:"button",className:"inline-flex h-8 items-center gap-2 rounded-full bg-[var(--ui-surface-2)] px-3 text-[12px] text-[var(--ui-ink-medium)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:c,children:[r.jsx(ae,{className:"size-3.5"}),"Hide"]}):null]})]})}function Pe({surfaceId:e,widgets:i,defaultEditing:n=!1,actions:s,normalizeLayout:l}){var w;const c=x.useMemo(()=>JSON.stringify(i.map(t=>({id:t.id,defaultWidth:t.defaultWidth,defaultHidden:t.defaultHidden,defaultPlacement:t.defaultPlacement,defaultFullWidth:t.defaultFullWidth,defaultTitleVisible:t.defaultTitleVisible,defaultDescriptionVisible:t.defaultDescriptionVisible}))),[i]),h=x.useMemo(()=>{const t=P(e,i);return l?l(t):t},[l,e,c]),d=t=>l?l(t):t,[o,f]=x.useState(n),[N,g]=x.useState(1280),[m,b]=x.useState(()=>d(V(e,i,O(e)??h))),p=x.useRef(null),T=x.useRef(!1),y=x.useRef(d(V(e,i,O(e)??h))),z=x.useRef(null),X=ue(ce(de,{activationConstraint:{distance:6}})),C=ge({queryKey:["forge-surface-layout",e],queryFn:()=>Se(e)}),D=(w=C==null?void 0:C.data)==null?void 0:w.layout,L=U({mutationFn:t=>je(e,{order:t.order,widgets:t.widgets})}),q=U({mutationFn:()=>Ne(e)});x.useEffect(()=>{const t=d(V(e,i,D??O(e)??h));b(a=>G(a,t)?a:t),R(t),y.current=t,T.current=!0},[h,D,l,e,c,i]),x.useEffect(()=>{const t=z.current;if(!t||typeof ResizeObserver>"u")return;const a=new ResizeObserver(u=>{var j;const v=((j=u[0])==null?void 0:j.contentRect.width)??t.clientWidth;g(Math.max(320,Math.round(v)))});return a.observe(t),g(Math.max(320,Math.round(t.clientWidth||1280))),()=>a.disconnect()},[]),x.useEffect(()=>{if(T.current&&!G(m,y.current))return R(m),p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{const t=m;L.mutateAsync(t).then(()=>{y.current=t})},Re),()=>{p.current!==null&&window.clearTimeout(p.current)}},[m,L,e]);const $=Ce(N),E=A[$],_=x.useMemo(()=>Ve(i,m),[m,i]),S=_.filter(t=>{var a;return!((a=m.widgets[t.id])!=null&&a.hidden)}),J=_.filter(t=>{var a;return(a=m.widgets[t.id])==null?void 0:a.hidden});function M(t,a){b(u=>d({...u,widgets:{...u.widgets,[t]:{...u.widgets[t],...a}}}))}function K(t,a){b(u=>d({...u,order:Oe(u.order,t,a)}))}function Y(t){const{active:a,over:u}=t;!u||a.id===u.id||b(v=>{const j=v.order.indexOf(String(a.id)),B=v.order.indexOf(String(u.id));return j===-1||B===-1?v:d({...v,order:ve(v.order,j,B)})})}function Q(){const t=d(P(e,i));b(t),R(t),y.current=t,q.mutateAsync()}return r.jsxs("div",{className:"grid gap-4",children:[o?r.jsx(fe,{sensors:X,collisionDetection:me,onDragEnd:Y,children:r.jsxs("div",{className:"grid gap-3 rounded-[24px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-4",children:[r.jsx("div",{className:"text-[12px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Visible boxes"}),r.jsx(xe,{items:S.map(t=>t.id),strategy:he,children:r.jsx("div",{className:"grid gap-2",children:S.map((t,a)=>{const u=m.widgets[t.id]??{hidden:!1,fullWidth:!1,titleVisible:!0,descriptionVisible:!0};return r.jsx(Fe,{widget:t,preferences:u,index:a,total:S.length,onMove:v=>K(t.id,v),onToggleHidden:()=>M(t.id,{hidden:!0}),onToggleFullWidth:()=>M(t.id,{fullWidth:!u.fullWidth})},t.id)})})}),J.length>0?r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"pt-2 text-[12px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Hidden boxes"}),r.jsx("div",{className:"flex flex-wrap gap-2",children:J.map(t=>r.jsx("button",{type:"button",className:"rounded-full bg-[var(--ui-surface-2)] px-3 py-2 text-sm text-[var(--ui-ink-medium)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:()=>M(t.id,{hidden:!1}),children:t.title},t.id))})]}):null]})}):null,r.jsxs("div",{ref:z,className:"relative",children:[r.jsx("div",{className:"pointer-events-none absolute top-3 right-3 z-20 flex max-w-[calc(100%-1.5rem)] flex-wrap items-center justify-end gap-1.5",children:r.jsxs("div",{className:"pointer-events-auto flex flex-wrap items-center justify-end gap-1.5",children:[s,o?r.jsxs(H,{type:"button",size:"sm",variant:"secondary",className:"h-8 rounded-full border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] px-2.5 text-[12px] text-[var(--ui-ink-medium)] backdrop-blur-xl hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:Q,children:[r.jsx(Z,{className:"size-3.5"}),r.jsx("span",{className:"hidden sm:inline",children:"Reset"})]}):null,r.jsxs(H,{type:"button",size:"sm",variant:o?"primary":"secondary",className:W("h-8 rounded-full px-2 text-[12px] backdrop-blur-xl [&>span]:gap-1.5",o?"bg-[var(--primary)] text-[var(--ui-ink-on-accent)] hover:opacity-95":"border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] text-[var(--ui-ink-medium)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]"),onClick:()=>f(t=>!t),children:[r.jsx(ee,{className:"size-3.5"}),r.jsx("span",{className:"hidden xl:inline",children:o?"Done":"Layout"})]})]})}),r.jsx("div",{className:"surface-flow-grid",style:{display:"grid",gap:"16px",gridTemplateColumns:`repeat(${E}, minmax(0, 1fr))`,alignItems:"start"},children:S.map(t=>{const a=m.widgets[t.id]??{hidden:!1,fullWidth:!1,titleVisible:!0,descriptionVisible:!0},u=a.fullWidth?E:Math.min(Ee(t,$),E);return r.jsx("div",{style:{gridColumn:`span ${u} / span ${u}`},children:r.jsx(Ae,{definition:t,preferences:a,editing:o,width:u,children:r.jsx(ke,{boxId:t.workbenchBoxId??`surface:${e}:${t.id}`,surfaceId:e,children:t.render({compact:u<=4,width:u,editing:o,preferences:a})})})},t.id)})})]})]})}function $e({surfaceId:e,baseWidgets:i,actions:n,normalizeLayout:s}){return r.jsx(Pe,{surfaceId:e,widgets:i,normalizeLayout:s,actions:r.jsxs(r.Fragment,{children:[n,r.jsxs(le,{to:`/workbench?surface=${encodeURIComponent(e)}`,className:"inline-flex h-8 items-center gap-1.5 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] px-2.5 text-[12px] font-medium text-[var(--ui-ink-medium)] backdrop-blur-xl transition hover:border-[var(--ui-border-strong)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",children:[r.jsx(oe,{className:"size-3.5"}),r.jsx("span",{className:"hidden sm:inline",children:"Workbench"})]})]})})}export{$e as A};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b_ as se,b7 as ae,r as o,j as e,b$ as O,aX as ie,aQ as re,aG as ne,aD as le,c0 as ce,c1 as H,c2 as X}from"./vendor-B7FKSwHK.js";import{j as oe,i as C,k as f}from"./state-BFyKSULP.js";import{P as de}from"./page-hero-U603l9rQ.js";import{B as k,C as m,I as g,T as w,e as ue,h as J,j as d,c as T,k as me,m as xe,n as pe,o as he,p as ge,q as ve,t as fe,v as ye,w as je}from"./index-gmPaoLN-.js";import"./motion-BibSzp57.js";import"./ui-uo_bNP7c.js";import"./board-DprRipIG.js";import"./forms-ByKjodjN.js";const be=["low","moderate","high","blocked"],Ne=["spreadsheet","document","presentation","pdf","text","structured_text","image"];function z(a){if(!Number.isFinite(a)||a<=0)return"0 B";const r=["B","KB","MB","GB"];let l=a,n=0;for(;l>=1024&&n<r.length-1;)l/=1024,n+=1;return`${l.toFixed(l>=10||n===0?0:1)} ${r[n]}`}function x(a){return a.replaceAll("_"," ").replace(/\b\w/g,r=>r.toUpperCase())}function D(a){return a==="blocked"?"border-red-400/40 bg-red-500/12 text-red-100":a==="high"?"border-orange-400/40 bg-orange-500/12 text-orange-100":a==="moderate"?"border-yellow-300/35 bg-yellow-300/10 text-yellow-100":"border-emerald-300/35 bg-emerald-400/10 text-emerald-100"}function ke(a){return typeof a=="object"&&a!==null&&Array.isArray(a.findings)}function Le(a){return!a||!ke(a.scanResults)?[]:a.scanResults.findings}function we(a){return new Promise((r,l)=>{const n=new FileReader;n.onload=()=>{const u=typeof n.result=="string"?n.result:"",p=u.includes(",")?u.slice(u.indexOf(",")+1):u;r(p)},n.onerror=()=>l(n.error??new Error("Unable to read file.")),n.readAsDataURL(a)})}function W(a){return a.split(/\n+/).map(r=>r.trim()).filter(Boolean).map(r=>{const[l="",n="",u="related",p=""]=r.split(":").map(S=>S.trim());return{entityType:l,entityId:n,relationship:u,anchorKey:p}}).filter(r=>r.entityType.length>0&&r.entityId.length>0)}function Se(a){return a.map(r=>[r.targetEntityType,r.targetEntityId,r.relationship||"related",r.anchorKey??""].filter((l,n)=>n<3||l.length>0).join(":")).join(`
|
|
2
|
+
`)}function Ee({artifact:a,selected:r,onSelect:l}){return e.jsxs("button",{type:"button",onClick:l,className:T("w-full rounded-[var(--radius-card)] border p-3 text-left transition",r?"border-[color-mix(in_srgb,var(--primary)_45%,var(--ui-border-subtle)_55%)] bg-[var(--ui-accent-soft)]":"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] hover:bg-[var(--ui-surface-hover)]"),children:[e.jsxs("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"truncate text-sm font-medium text-[var(--ui-ink-strong)]",children:a.title}),e.jsx("div",{className:"mt-1 truncate text-xs text-[var(--ui-ink-muted)]",children:a.originalFileName})]}),e.jsxs(d,{size:"xs",className:T("shrink-0",D(a.dangerLevel)),children:[a.dangerScore,"/100"]})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsx(d,{size:"xs",tone:"meta",children:a.detectedExtension.toUpperCase()}),e.jsx(d,{size:"xs",tone:"meta",children:z(a.byteSize)}),e.jsx(d,{size:"xs",tone:"meta",children:x(a.artifactState)})]})]})}function Ue(){var $,Q,_,G;const{artifactId:a}=se(),r=ae(),l=oe(),[n,u]=o.useState(""),[p,S]=o.useState(""),[E,Y]=o.useState(""),[y,A]=o.useState(null),[c,h]=o.useState({title:"",shortDescription:"",description:"",sourceLabel:"",useLlmEnrichment:!1,genericLinksText:""}),[B,K]=o.useState(""),L=C({queryKey:["artifacts",n,p,E],queryFn:()=>fe({query:n||void 0,dangerLevel:p||void 0,formatFamily:E||void 0,limit:200})}),v=(($=L.data)==null?void 0:$.artifacts)??[],s=o.useMemo(()=>v.find(t=>t.id===a)??v[0]??null,[a,v]),U=C({queryKey:["artifact-versions",s==null?void 0:s.id],enabled:!!(s!=null&&s.id),queryFn:()=>ye(s.id)}),Z=C({queryKey:["artifact-audit",s==null?void 0:s.id],enabled:!!(s!=null&&s.id),queryFn:()=>je(s.id)});o.useEffect(()=>{!a&&s&&r(`/artifacts/${s.id}`,{replace:!0})},[a,r,s]);const j=async()=>{await Promise.all([l.invalidateQueries({queryKey:["artifacts"]}),l.invalidateQueries({queryKey:["artifact-versions"]}),l.invalidateQueries({queryKey:["artifact-audit"]}),l.invalidateQueries({queryKey:["knowledge-graph"]})])},b=f({mutationFn:async()=>{if(!y)throw new Error("Choose a file first.");const t={title:c.title||void 0,shortDescription:c.shortDescription,description:c.description,originalFileName:y.name,declaredMimeType:y.type,contentBase64:await we(y),sourceLabel:c.sourceLabel,links:W(c.genericLinksText),useLlmEnrichment:c.useLlmEnrichment};return me(t)},onSuccess:async({artifact:t})=>{A(null),h({title:"",shortDescription:"",description:"",sourceLabel:"",useLlmEnrichment:!1,genericLinksText:""}),await j(),r(`/artifacts/${t.id}`)}}),F=f({mutationFn:t=>ge(s.id,t),onSuccess:j}),q=f({mutationFn:()=>xe(s.id),onSuccess:j}),I=f({mutationFn:()=>pe(s.id,{fillMissingOnly:!0}),onSuccess:j}),M=f({mutationFn:t=>ve(s.id,t),onSuccess:j}),P=f({mutationFn:async()=>{const t=s,i=await he(t.id),V=URL.createObjectURL(i.blob),N=document.createElement("a");N.href=V,N.download=i.fileName??t.originalFileName,document.body.append(N),N.click(),N.remove(),URL.revokeObjectURL(V)}}),R=Le(s),ee=((Q=U.data)==null?void 0:Q.versions.length)??0,te=((_=Z.data)==null?void 0:_.events)??[];return o.useEffect(()=>{K(s?Se(s.links):"")},[s==null?void 0:s.id,s==null?void 0:s.links.length,s==null?void 0:s.updatedAt]),e.jsxs("div",{className:"min-h-full bg-[var(--ui-bg)] text-[var(--ui-ink-strong)]",children:[e.jsx(de,{entityKind:"artifact",title:"Artifacts",description:"Trusted file storage for precise metadata, safety scans, provenance, generic entity links, and human-only downloads.",badge:`${v.length} stored`,actions:e.jsxs(k,{type:"button",onClick:()=>b.mutate(),pending:b.isPending,disabled:!y,children:[e.jsx(O,{className:"size-4"}),"Upload"]})}),e.jsxs("main",{className:"grid gap-5 px-5 py-5 lg:grid-cols-[minmax(280px,380px)_minmax(0,1fr)] lg:px-7",children:[e.jsxs("section",{className:"space-y-4",children:[e.jsxs(m,{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(ie,{className:"size-4 text-[var(--primary)]"}),"Store"]}),e.jsx(g,{value:n,onChange:t=>u(t.target.value),placeholder:"Search title, file, description, provenance"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("select",{value:p,onChange:t=>S(t.target.value),className:"interactive-tap min-h-10 rounded-[22px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)] px-3 text-sm text-[var(--ui-ink-strong)]",children:[e.jsx("option",{value:"",children:"Any danger"}),be.map(t=>e.jsx("option",{value:t,children:x(t)},t))]}),e.jsxs("select",{value:E,onChange:t=>Y(t.target.value),className:"interactive-tap min-h-10 rounded-[22px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)] px-3 text-sm text-[var(--ui-ink-strong)]",children:[e.jsx("option",{value:"",children:"Any format"}),Ne.map(t=>e.jsx("option",{value:t,children:x(t)},t))]})]})]}),e.jsxs(m,{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(O,{className:"size-4 text-[var(--primary)]"}),"Add File"]}),e.jsx(g,{type:"file",onChange:t=>{var i;return A(((i=t.target.files)==null?void 0:i[0])??null)}}),e.jsx(g,{value:c.title,onChange:t=>h(i=>({...i,title:t.target.value})),placeholder:"Title"}),e.jsx(g,{value:c.shortDescription,onChange:t=>h(i=>({...i,shortDescription:t.target.value})),placeholder:"Short description"}),e.jsx(g,{value:c.sourceLabel,onChange:t=>h(i=>({...i,sourceLabel:t.target.value})),placeholder:"Provenance or source label"}),e.jsx(w,{value:c.description,onChange:t=>h(i=>({...i,description:t.target.value})),placeholder:"Description"}),e.jsx(w,{value:c.genericLinksText,onChange:t=>h(i=>({...i,genericLinksText:t.target.value})),placeholder:"Optional generic entity links, one per line: entityType:entityId:relationship:anchorKey"}),e.jsxs("label",{className:"flex items-center gap-2 text-sm text-[var(--ui-ink-medium)]",children:[e.jsx("input",{type:"checkbox",checked:c.useLlmEnrichment,onChange:t=>h(i=>({...i,useLlmEnrichment:t.target.checked}))}),"Use configured LLM to fill missing metadata"]}),b.error?e.jsx("p",{className:"text-sm text-red-200",children:b.error instanceof Error?b.error.message:"Upload failed."}):null]}),e.jsx("div",{className:"space-y-2",children:L.isLoading?e.jsx(m,{className:"text-sm text-[var(--ui-ink-muted)]",children:"Loading artifacts..."}):L.error?e.jsx(ue,{error:L.error}):v.length===0?e.jsx(J,{title:"No artifacts found",description:"Upload a trusted file to create the first artifact record."}):v.map(t=>e.jsx(Ee,{artifact:t,selected:t.id===(s==null?void 0:s.id),onSelect:()=>r(`/artifacts/${t.id}`)},t.id))})]}),e.jsx("section",{className:"min-w-0 space-y-4",children:s?e.jsxs(e.Fragment,{children:[e.jsxs(m,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(d,{className:T(D(s.dangerLevel)),children:[x(s.dangerLevel)," danger"]}),e.jsx(d,{tone:"meta",children:x(s.artifactState)}),e.jsx(d,{tone:"meta",children:s.detectedExtension.toUpperCase()})]}),e.jsx("h2",{className:"mt-3 break-words text-2xl font-semibold",children:s.title}),e.jsx("p",{className:"mt-2 max-w-3xl text-sm text-[var(--ui-ink-muted)]",children:s.shortDescription||s.description})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(k,{variant:"secondary",type:"button",onClick:()=>q.mutate(),pending:q.isPending,children:[e.jsx(re,{className:"size-4"}),"Scan"]}),e.jsxs(k,{variant:"secondary",type:"button",onClick:()=>I.mutate(),pending:I.isPending,children:[e.jsx(ne,{className:"size-4"}),"Enrich"]}),e.jsxs(k,{type:"button",onClick:()=>P.mutate(),pending:P.isPending,disabled:s.downloadPolicy!=="human_only"||s.artifactState==="blocked",children:[e.jsx(le,{className:"size-4"}),"Download"]})]})]}),e.jsx("div",{className:"grid gap-3 md:grid-cols-4",children:[["File",s.originalFileName],["Size",z(s.byteSize)],["Versions",ee],["Links",s.links.length]].map(([t,i])=>e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-3",children:[e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:t}),e.jsx("div",{className:"mt-1 truncate text-sm font-medium",children:i})]},t))}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsx(g,{defaultValue:s.title,onBlur:t=>{const i=t.target.value.trim();i&&i!==s.title&&F.mutate({title:i})},"aria-label":"Artifact title"}),e.jsx(g,{defaultValue:s.shortDescription,onBlur:t=>{const i=t.target.value.trim();i!==s.shortDescription&&F.mutate({shortDescription:i})},"aria-label":"Artifact short description"})]}),e.jsx(w,{defaultValue:s.description,onBlur:t=>{const i=t.target.value.trim();i!==s.description&&F.mutate({description:i})},"aria-label":"Artifact description"})]}),e.jsxs("div",{className:"grid gap-4 xl:grid-cols-[minmax(0,1fr)_minmax(280px,360px)]",children:[e.jsxs(m,{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(ce,{className:"size-4 text-[var(--primary)]"}),"Safety Findings"]}),R.length===0?e.jsx("p",{className:"text-sm text-[var(--ui-ink-muted)]",children:"No findings recorded."}):e.jsx("div",{className:"space-y-2",children:R.map(t=>e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(d,{size:"xs",className:D(t.severity),children:x(t.severity)}),e.jsx("span",{className:"text-xs font-medium text-[var(--ui-ink-medium)]",children:t.code})]}),e.jsx("p",{className:"mt-2 text-sm text-[var(--ui-ink-muted)]",children:t.message})]},`${t.code}:${t.message}`))})]}),e.jsxs(m,{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(H,{className:"size-4 text-[var(--primary)]"}),"Entity Links"]}),s.links.length===0?e.jsx("p",{className:"text-sm text-[var(--ui-ink-muted)]",children:"No linked entities."}):e.jsx("div",{className:"space-y-2",children:s.links.map(t=>e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-3 text-sm",children:[e.jsx("div",{className:"font-medium",children:x(t.targetEntityType)}),e.jsx("div",{className:"mt-1 break-all text-xs text-[var(--ui-ink-muted)]",children:t.targetEntityId}),e.jsx(d,{className:"mt-2",size:"xs",tone:"meta",children:x(t.relationship)}),t.anchorKey?e.jsxs("div",{className:"mt-2 text-xs text-[var(--ui-ink-muted)]",children:["Anchor: ",t.anchorKey]}):null]},`${t.targetEntityType}:${t.targetEntityId}:${t.relationship}`))}),e.jsx(w,{value:B,onChange:t=>K(t.target.value),placeholder:"Generic entity links, one per line: entityType:entityId:relationship:anchorKey","aria-label":"Generic entity links"}),e.jsxs(k,{type:"button",variant:"secondary",onClick:()=>M.mutate(W(B)),pending:M.isPending,children:[e.jsx(H,{className:"size-4"}),"Save Links"]})]})]}),e.jsxs("div",{className:"grid gap-4 xl:grid-cols-2",children:[e.jsxs(m,{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(X,{className:"size-4 text-[var(--primary)]"}),"Versions"]}),(((G=U.data)==null?void 0:G.versions)??[]).map(t=>e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-3 text-sm",children:[e.jsxs("div",{className:"font-medium",children:["Version ",t.versionNumber]}),e.jsxs("div",{className:"mt-1 text-xs text-[var(--ui-ink-muted)]",children:[z(t.byteSize)," · ",t.originalFileName]})]},t.id))]}),e.jsxs(m,{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(X,{className:"size-4 text-[var(--primary)]"}),"Audit"]}),te.slice(0,10).map(t=>e.jsxs("div",{className:"rounded-[var(--radius-card)] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-3 text-sm",children:[e.jsx("div",{className:"font-medium",children:t.eventType}),e.jsxs("div",{className:"mt-1 text-xs text-[var(--ui-ink-muted)]",children:[new Date(t.createdAt).toLocaleString()," · ",t.source]})]},t.id))]})]})]}):e.jsx(J,{title:"Select an artifact",description:"Choose an artifact from the list to inspect metadata, scans, links, versions, and audit history."})})]})]})}export{Ue as ArtifactsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as a}from"./vendor-
|
|
1
|
+
import{j as a}from"./vendor-B7FKSwHK.js";import{ad as c,c as d}from"./index-gmPaoLN-.js";function x({eyebrow:s,title:r,description:e,titleHelp:t,tone:n="default",children:i,className:l}){const o={default:"bg-[var(--ui-surface-section)]",mint:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--success)_12%,transparent),transparent_42%),var(--ui-surface-section)]",sky:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--info)_12%,transparent),transparent_42%),var(--ui-surface-section)]",violet:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--primary)_12%,transparent),transparent_42%),var(--ui-surface-section)]",rose:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--danger)_12%,transparent),transparent_42%),var(--ui-surface-section)]",amber:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--warning)_12%,transparent),transparent_42%),var(--ui-surface-section)]"};return a.jsxs("section",{className:d("min-w-0 overflow-hidden rounded-[30px] border border-[var(--ui-border-subtle)] px-4 py-5 shadow-[var(--card-shadow)] sm:px-5 lg:px-6",o[n],l),children:[a.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:s}),a.jsxs("div",{className:"mt-3 flex min-w-0 items-start gap-2",children:[a.jsx("h2",{className:"min-w-0 break-words font-display text-[clamp(1.8rem,3.2vw,3rem)] leading-none text-[var(--ui-ink-strong)]",children:r}),t?a.jsx(c,{content:t,label:`Explain ${r.toLowerCase()}`,className:"mt-1 shrink-0"}):null]}),e?a.jsx("p",{className:"mt-3 max-w-3xl break-words text-sm leading-7 text-[var(--ui-ink-soft)]",children:e}):null,a.jsx("div",{className:"mt-5 min-w-0",children:i})]})}export{x as A};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as c,R as I,F as Ne}from"./vendor-
|
|
1
|
+
import{r as c,R as I,F as Ne}from"./vendor-B7FKSwHK.js";function Mn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c.useMemo(()=>r=>{t.forEach(o=>o(r))},t)}const nt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function we(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function mt(e){return"nodeType"in e}function z(e){var t,n;return e?we(e)?e:mt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function yt(e){const{Document:t}=z(e);return e instanceof t}function Be(e){return we(e)?!1:e instanceof z(e).HTMLElement}function Vt(e){return e instanceof z(e).SVGElement}function xe(e){return e?we(e)?e.document:mt(e)?yt(e)?e:Be(e)||Vt(e)?e.ownerDocument:document:document:document}const V=nt?c.useLayoutEffect:c.useEffect;function rt(e){const t=c.useRef(e);return V(()=>{t.current=e}),c.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return t.current==null?void 0:t.current(...r)},[])}function On(){const e=c.useRef(null),t=c.useCallback((r,o)=>{e.current=setInterval(r,o)},[]),n=c.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Pe(e,t){t===void 0&&(t=[e]);const n=c.useRef(e);return V(()=>{n.current!==e&&(n.current=e)},t),n}function Fe(e,t){const n=c.useRef();return c.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Je(e){const t=rt(e),n=c.useRef(null),r=c.useCallback(o=>{o!==n.current&&(t==null||t(o,n.current)),n.current=o},[]);return[n,r]}function _e(e){const t=c.useRef();return c.useEffect(()=>{t.current=e},[e]),t.current}let ut={};function $e(e,t){return c.useMemo(()=>{if(t)return t;const n=ut[e]==null?0:ut[e]+1;return ut[e]=n,e+"-"+n},[e,t])}function qt(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((i,s)=>{const a=Object.entries(s);for(const[l,u]of a){const d=i[l];d!=null&&(i[l]=d+e*u)}return i},{...t})}}const ye=qt(1),Qe=qt(-1);function In(e){return"clientX"in e&&"clientY"in e}function ot(e){if(!e)return!1;const{KeyboardEvent:t}=z(e.target);return t&&e instanceof t}function Nn(e){if(!e)return!1;const{TouchEvent:t}=z(e.target);return t&&e instanceof t}function Ze(e){if(Nn(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return In(e)?{x:e.clientX,y:e.clientY}:null}const fe=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[fe.Translate.toString(e),fe.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),kt="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Tn(e){return e.matches(kt)?e:e.querySelector(kt)}const Ln={display:"none"};function kn(e){let{id:t,value:n}=e;return I.createElement("div",{id:t,style:Ln},n)}function Pn(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return I.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function zn(){const[e,t]=c.useState("");return{announce:c.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const Gt=c.createContext(null);function Bn(e){const t=c.useContext(Gt);c.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function Fn(){const[e]=c.useState(()=>new Set),t=c.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[c.useCallback(r=>{let{type:o,event:i}=r;e.forEach(s=>{var a;return(a=s[o])==null?void 0:a.call(s,i)})},[e]),t]}const $n={draggable:`
|
|
2
2
|
To pick up a draggable item, press the space bar.
|
|
3
3
|
While dragging, use the arrow keys to move the item.
|
|
4
4
|
Press space again to drop the item in its new position, or press escape to cancel.
|