luckytri 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/SECURITY.md +71 -0
- package/LICENSE +21 -0
- package/README.en.md +250 -0
- package/README.md +250 -0
- package/bin/luckytri.js +107 -0
- package/docs/brand/banner.png +0 -0
- package/docs/brand/palette.png +0 -0
- package/docs/brand/portrait.png +0 -0
- package/docs/en/CHANGELOG.md +113 -0
- package/docs/en/architecture.md +152 -0
- package/docs/en/chat-style.md +62 -0
- package/docs/en/connect.md +63 -0
- package/docs/en/guide.md +216 -0
- package/docs/en/her-life.md +189 -0
- package/docs/en/npm-release.md +25 -0
- package/docs/en/plugins.md +82 -0
- package/docs/en/recovery.md +28 -0
- package/docs/en/time.md +71 -0
- package/docs/en/webui.md +73 -0
- package/docs/zh/CHANGELOG.md +113 -0
- package/docs/zh/architecture.md +152 -0
- package/docs/zh/chat-style.md +62 -0
- package/docs/zh/connect.md +63 -0
- package/docs/zh/guide.md +216 -0
- package/docs/zh/her-life.md +189 -0
- package/docs/zh/npm-release.md +33 -0
- package/docs/zh/plugins.md +82 -0
- package/docs/zh/recovery.md +28 -0
- package/docs/zh/time.md +71 -0
- package/docs/zh/webui.md +73 -0
- package/package.json +108 -0
- package/plugins/sdk/index.d.ts +155 -0
- package/plugins/sdk/testing.js +58 -0
- package/plugins/weather/index.js +82 -0
- package/plugins/weather/luckytri-plugin.json +29 -0
- package/public/app/assets/ChatsPage-C-FcRapR.js +3 -0
- package/public/app/assets/ChatsPage-DfyPCS9N.css +1 -0
- package/public/app/assets/Empty-CpP5kQHH.js +2 -0
- package/public/app/assets/Empty-DmUB2-Bk.css +1 -0
- package/public/app/assets/Field-D4gY-INU.js +1 -0
- package/public/app/assets/HeartPage-Bft9wZp5.css +1 -0
- package/public/app/assets/HeartPage-CPy_thQd.js +1 -0
- package/public/app/assets/LifePage-BUi5euBF.css +1 -0
- package/public/app/assets/LifePage-CxWvwmSf.js +1 -0
- package/public/app/assets/MemoryPage-DC4rhQ68.js +1 -0
- package/public/app/assets/MemoryPage-cZvXfkXb.css +1 -0
- package/public/app/assets/NaturePage-CTXHCE2D.css +1 -0
- package/public/app/assets/NaturePage-IvYw04Zq.js +3 -0
- package/public/app/assets/PeoplePage-BmUxkrOU.css +1 -0
- package/public/app/assets/PeoplePage-Cqefm9-q.js +1 -0
- package/public/app/assets/PluginsPage-DKSaKvXb.js +2 -0
- package/public/app/assets/PluginsPage-HyBe5D8w.css +1 -0
- package/public/app/assets/SystemPage-CAMPoYqM.css +1 -0
- package/public/app/assets/SystemPage-CJmtJkrK.js +1 -0
- package/public/app/assets/TimePage-BOms_n4I.css +1 -0
- package/public/app/assets/TimePage-Cw44inM4.js +3 -0
- package/public/app/assets/formatters-ZmW_xFHw.js +1 -0
- package/public/app/assets/index-BheRW-1t.js +4 -0
- package/public/app/assets/index-YDz1ree1.css +1 -0
- package/public/app/assets/knowledge-DG0e0uKw.js +1 -0
- package/public/app/assets/liquid-garden-IMoHBwzc.png +0 -0
- package/public/app/assets/luckytri-home-95QKeMtc.png +0 -0
- package/public/app/assets/media-BzPDBm7e.js +1 -0
- package/public/app/index.html +27 -0
- package/public/guide.en.html +1053 -0
- package/public/guide.html +893 -0
- package/public/plugin-kit/v1/bridge.js +30 -0
- package/public/plugin-kit/v1/kit.css +14 -0
- package/public/tutorial.en.md +214 -0
- package/public/tutorial.md +214 -0
- package/scripts/backup.js +311 -0
- package/scripts/browser.js +41 -0
- package/scripts/launch.js +94 -0
- package/scripts/plugin.js +150 -0
- package/scripts/proxy-config.js +167 -0
- package/scripts/recover.js +26 -0
- package/scripts/runtime.js +25 -0
- package/scripts/service.js +47 -0
- package/scripts/setup.js +50 -0
- package/scripts/start-server.js +41 -0
- package/scripts/stop.js +36 -0
- package/server/app.js +96 -0
- package/server/channels/adapters.js +27 -0
- package/server/channels/contract.js +57 -0
- package/server/channels/hub.js +165 -0
- package/server/channels/index.js +25 -0
- package/server/channels/onebot/adapter.js +288 -0
- package/server/channels/onebot/index.js +336 -0
- package/server/channels/onebot/token.js +3 -0
- package/server/channels/qqbot/adapter.js +253 -0
- package/server/channels/qqbot/api.js +199 -0
- package/server/channels/qqbot/credentials.js +11 -0
- package/server/channels/qqbot/gateway.js +274 -0
- package/server/channels/qqbot/index.js +389 -0
- package/server/channels/segments.js +40 -0
- package/server/channels/session-key.js +153 -0
- package/server/channels/state.js +42 -0
- package/server/core/api.js +564 -0
- package/server/core/capabilities.js +208 -0
- package/server/core/context-builder.js +288 -0
- package/server/core/context-compactor.js +454 -0
- package/server/core/conversation-cues.js +325 -0
- package/server/core/conversation-manager.js +87 -0
- package/server/core/events.js +60 -0
- package/server/core/feedback.js +8 -0
- package/server/core/group-style.js +72 -0
- package/server/core/image-preprocessor.js +208 -0
- package/server/core/initiative-context.js +66 -0
- package/server/core/input-budget.js +32 -0
- package/server/core/local-demo.js +98 -0
- package/server/core/message-manager.js +118 -0
- package/server/core/message-scheduler.js +78 -0
- package/server/core/model-json.js +190 -0
- package/server/core/model-manager.js +1213 -0
- package/server/core/model-presets.js +900 -0
- package/server/core/name-call.js +29 -0
- package/server/core/net-guard.js +49 -0
- package/server/core/network.js +157 -0
- package/server/core/orchestrator.js +569 -0
- package/server/core/perceivers.js +91 -0
- package/server/core/person-name.js +22 -0
- package/server/core/persona-manager.js +243 -0
- package/server/core/reply-delivery.js +393 -0
- package/server/core/reply-target-resolver.js +50 -0
- package/server/core/repository.js +293 -0
- package/server/core/response-generator.js +50 -0
- package/server/core/response-validator.js +508 -0
- package/server/core/retired-prompts.js +51 -0
- package/server/core/sessions.js +109 -0
- package/server/core/speaker-names.js +92 -0
- package/server/core/topic-tracker.js +65 -0
- package/server/core/turn-processor.js +630 -0
- package/server/core/turn.js +236 -0
- package/server/core/vision-manager.js +633 -0
- package/server/http.js +18 -0
- package/server/i18n/decisions.js +206 -0
- package/server/i18n/errors.js +497 -0
- package/server/i18n/index.js +144 -0
- package/server/i18n/labels.js +653 -0
- package/server/i18n/models.js +111 -0
- package/server/index.js +102 -0
- package/server/knowledge/api.js +342 -0
- package/server/knowledge/embedding-profile.js +114 -0
- package/server/knowledge/index.js +13 -0
- package/server/knowledge/manager.js +386 -0
- package/server/knowledge/retrieval.js +93 -0
- package/server/knowledge/schema.js +154 -0
- package/server/knowledge/vector-index.js +90 -0
- package/server/mind/affect.js +265 -0
- package/server/mind/anticipations.js +507 -0
- package/server/mind/api.js +703 -0
- package/server/mind/attention.js +200 -0
- package/server/mind/bonds.js +558 -0
- package/server/mind/budget.js +152 -0
- package/server/mind/clock.js +83 -0
- package/server/mind/context-selection.js +61 -0
- package/server/mind/continuity.js +562 -0
- package/server/mind/conversation-origin.js +175 -0
- package/server/mind/day-planner.js +324 -0
- package/server/mind/days.js +210 -0
- package/server/mind/evidence-read.js +45 -0
- package/server/mind/evidence.js +148 -0
- package/server/mind/faces.js +138 -0
- package/server/mind/guard.js +60 -0
- package/server/mind/index.js +445 -0
- package/server/mind/initiative.js +333 -0
- package/server/mind/life/activities.js +21 -0
- package/server/mind/life/context.js +309 -0
- package/server/mind/life/diary.js +786 -0
- package/server/mind/life/growth.js +252 -0
- package/server/mind/life/index.js +1049 -0
- package/server/mind/life/presence.js +305 -0
- package/server/mind/meetings.js +1069 -0
- package/server/mind/memory-policy.js +48 -0
- package/server/mind/memory.js +888 -0
- package/server/mind/nature.js +262 -0
- package/server/mind/novelty.js +19 -0
- package/server/mind/observations.js +84 -0
- package/server/mind/own-day.js +324 -0
- package/server/mind/own-voice.js +318 -0
- package/server/mind/periods.js +118 -0
- package/server/mind/reading.js +120 -0
- package/server/mind/salience.js +201 -0
- package/server/mind/schema.js +562 -0
- package/server/mind/self.js +484 -0
- package/server/mind/senses.js +53 -0
- package/server/mind/thoughts.js +274 -0
- package/server/mind/time/activity-clock.js +196 -0
- package/server/mind/time/agenda.js +242 -0
- package/server/mind/time/api.js +200 -0
- package/server/mind/time/attention.js +34 -0
- package/server/mind/time/availability.js +69 -0
- package/server/mind/time/commitment-review.js +198 -0
- package/server/mind/time/delivery-links.js +130 -0
- package/server/mind/time/executor.js +512 -0
- package/server/mind/time/experiences.js +128 -0
- package/server/mind/time/games.js +562 -0
- package/server/mind/time/index.js +739 -0
- package/server/mind/time/intent.js +166 -0
- package/server/mind/time/kinds.js +171 -0
- package/server/mind/time/model-material.js +77 -0
- package/server/mind/time/plugin-activity.js +207 -0
- package/server/mind/time/presentation.js +51 -0
- package/server/mind/time/schedule.js +83 -0
- package/server/mind/time/schema.js +84 -0
- package/server/mind/time/search.js +383 -0
- package/server/mind/time/sharing.js +472 -0
- package/server/mind/time/task-links.js +311 -0
- package/server/mind/time/tasks.js +587 -0
- package/server/mind/time/works.js +432 -0
- package/server/mind/traits.js +191 -0
- package/server/mind/util.js +110 -0
- package/server/mind/view.js +273 -0
- package/server/paths.js +102 -0
- package/server/plugins/api.js +204 -0
- package/server/plugins/host.js +967 -0
- package/server/plugins/install.js +295 -0
- package/server/plugins/manifest.js +201 -0
- package/server/plugins/permissions.js +42 -0
- package/server/plugins/runner/guard.mjs +36 -0
- package/server/plugins/runner/worker.mjs +250 -0
- package/server/plugins/schema.js +91 -0
- package/server/plugins/zip.js +112 -0
- package/server/startup-lock.js +118 -0
- package/server/storage/archive.js +241 -0
- package/server/storage/backup-cleanup-worker.js +8 -0
- package/server/storage/backup-cleanup.js +414 -0
- package/server/storage/backup-lock.js +76 -0
- package/server/storage/backup-scheduler.js +131 -0
- package/server/storage/store.js +199 -0
- package/server/studio/display-names.js +138 -0
- package/server/studio/management.js +102 -0
- package/server/studio/readiness.js +190 -0
- package/server/studio/settings.js +236 -0
- package/server/version.js +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ribbon[data-v-fef06576]{isolation:isolate;-webkit-backdrop-filter:blur(25px)saturate(1.65);background:linear-gradient(120deg,#ffffffd3,#e5f4ff85 55%,#fae9f682);border:1px solid #ffffffe8;border-radius:36px;padding:25px 28px 20px;position:relative;overflow:hidden;box-shadow:inset 0 2px #fff,0 26px 52px -39px #6889c492}.ribbon[data-v-fef06576]:before{content:"";z-index:-1;filter:blur(31px);background:conic-gradient(#b9d9ff99,#fff1d9a3,#f5ccf385,#b9d9ff99);border-radius:50%;width:420px;height:420px;animation:12s ease-in-out infinite alternate ribbon-drift-fef06576;position:absolute;top:-170px;right:-100px}.ribbon-head[data-v-fef06576]{justify-content:space-between;align-items:start;gap:24px;display:flex}.ribbon-title h2[data-v-fef06576]{letter-spacing:-.035em;margin:9px 0 6px;font-size:clamp(22px,2.5vw,32px)}.ribbon-title p[data-v-fef06576]{color:var(--ink-soft);font-size:12px}.latest-mood[data-v-fef06576]{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffff85;border:1px solid #fff;border-radius:20px;flex:0 0 225px;gap:2px;max-width:225px;padding:11px 16px;display:grid;box-shadow:inset 0 1px #fff,0 12px 26px -21px #6280b0}.latest-mood span[data-v-fef06576]{color:var(--ink-soft);font-size:10px}.latest-mood b[data-v-fef06576]{font-size:17px}.latest-mood small[data-v-fef06576]{text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft);font-size:11px;overflow:hidden}.ribbon-box[data-v-fef06576]{background:linear-gradient(#ffffff5b,#ffffff15);border:1px solid #ffffff9d;border-radius:19px;min-width:0;margin-top:18px;overflow:hidden;box-shadow:inset 0 1px #ffffffb0}.ribbon-chart[data-v-fef06576]{width:100%;height:135px;overflow:hidden}.base[data-v-fef06576]{stroke:color-mix(in srgb, var(--accent) 24%, transparent);stroke-width:1px;stroke-dasharray:3 8}.area[data-v-fef06576]{fill:url(#ribbon-fill)}.line-glow[data-v-fef06576]{fill:none;stroke:color-mix(in srgb, var(--orb-c) 46%, transparent);stroke-width:13px;filter:blur(9px)}.line[data-v-fef06576]{fill:none;stroke:url(#ribbon-stroke);stroke-width:4px;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 2px #ffffffb3)}.pt circle[data-v-fef06576]{stroke:#fff;stroke-width:2.5px;filter:drop-shadow(0 2px 4px #678fbd8a)}.pt.warm circle[data-v-fef06576]{fill:var(--cheek)}.pt.cool circle[data-v-fef06576]{fill:var(--orb-c)}.empty-line[data-v-fef06576]{padding:34px 20px;font-size:13px}.recent[data-v-fef06576]{gap:9px;margin:14px 0 0;padding:1px 1px 5px;list-style:none;display:flex;overflow-x:auto}.recent li[data-v-fef06576]{width:186px;transition:transform .42s var(--spring), box-shadow .25s;background:linear-gradient(145deg,#ffffffbd,#ffffff6e);border:1px solid #ffffffdf;border-radius:18px;flex:none;gap:3px;padding:11px 13px;display:grid;box-shadow:inset 0 1px #fff}.recent li[data-v-fef06576]:hover{transform:translateY(-4px)scale(1.025);box-shadow:0 13px 25px -18px #5884b4}.recent li[data-v-fef06576]:before{content:"";background:var(--orb-c);width:9px;height:9px;box-shadow:0 0 0 4px color-mix(in srgb, var(--orb-c) 13%, transparent);border-radius:50%}.recent li.warm[data-v-fef06576]:before{background:var(--cheek);box-shadow:0 0 0 4px color-mix(in srgb, var(--cheek) 16%, transparent)}.recent b[data-v-fef06576]{font-size:14px}.recent span[data-v-fef06576]{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.recent small[data-v-fef06576]{color:var(--ink-soft);font-size:11.5px}@keyframes ribbon-drift-fef06576{to{transform:translate(-45px,45px)rotate(30deg)}}@media (width<=680px){.ribbon[data-v-fef06576]{padding:21px 18px 16px}.ribbon-head[data-v-fef06576]{display:grid}.latest-mood[data-v-fef06576]{width:100%;max-width:none}}.starmap[data-v-f3560fca]{gap:23px;min-width:0;display:grid}.self-scene[data-v-f3560fca]{isolation:isolate;-webkit-backdrop-filter:blur(28px)saturate(1.7);background:linear-gradient(112deg,#ffffffb3,#edf8ff61 44%,#ffeef861);border:1px solid #ffffffe0;border-radius:38px;grid-template-columns:minmax(0,1.12fr) minmax(280px,.88fr);align-items:center;min-height:302px;padding:30px clamp(25px,4vw,52px);display:grid;position:relative;overflow:hidden;box-shadow:inset 0 2px #fffffff7,inset 0 -1px #ffffffb3,0 26px 60px -39px #5572b66b}.self-scene[data-v-f3560fca]:before{content:"";z-index:-1;aspect-ratio:1;filter:blur(24px);background:conic-gradient(from 35deg,#f5dbff88,#b9eaff55,#fff9eaa8,#b9eaff55,#f5dbff88);border-radius:50%;width:62%;animation:14s ease-in-out infinite alternate scene-drift-f3560fca;position:absolute;top:-82%;right:-15%}.scene-copy[data-v-f3560fca]{z-index:1;position:relative}.scene-copy h2[data-v-f3560fca]{letter-spacing:-.05em;margin:14px 0 15px;font-size:clamp(28px,3.6vw,46px);line-height:1.18}.scene-copy h2 em[data-v-f3560fca]{color:#0000;background:linear-gradient(110deg,#5787c9,#8c70c4 48%,#d591b4);-webkit-background-clip:text;background-clip:text;font-style:normal}.scene-copy p[data-v-f3560fca]{max-width:53ch;color:var(--ink-soft);font-size:13px;line-height:1.8}.scene-stats[data-v-f3560fca]{flex-wrap:wrap;gap:9px;margin-top:20px;display:flex}.scene-stats span[data-v-f3560fca]{color:var(--ink-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffff78;border:1px solid #ffffffdb;border-radius:99px;padding:7px 14px;font-size:12px;box-shadow:inset 0 1px #fff,0 6px 22px -15px #5d83c7}.scene-stats b[data-v-f3560fca]{color:var(--accent);font-size:14px}.self-lens[data-v-f3560fca]{aspect-ratio:1.2;justify-self:center;place-items:center;width:min(100%,330px);display:grid;position:relative}.lens-halo[data-v-f3560fca]{pointer-events:none;border-radius:50%;position:absolute}.halo-one[data-v-f3560fca]{aspect-ratio:1;background:radial-gradient(circle at 34% 28%,#ffffffdf 2%,#d5f4ff99 29%,#d3e6ff50 55%,#f7dffa80 75%,#0000 76%);border:1px solid #ffffffda;width:79%;animation:6s ease-in-out infinite lens-breathe-f3560fca;box-shadow:inset 9px 12px 24px #ffffffd4,inset -13px -15px 24px #aeccf050,0 22px 44px -27px #7ea8dc}.halo-two[data-v-f3560fca]{aspect-ratio:1.1;border:1px solid #ffffffad;width:98%;transform:rotate(-18deg);box-shadow:0 0 36px #d3e8ff78,inset 0 0 30px #fff8}.orb-seat[data-v-f3560fca]{z-index:2;filter:drop-shadow(0 16px 14px #799bd844);animation:5s ease-in-out infinite orb-float-f3560fca;position:relative}.lens-droplet[data-v-f3560fca]{z-index:2;aspect-ratio:1;background:radial-gradient(circle at 28% 25%,#fff 7%,#e4eaffad 23%,#9dc8ef99 75%,#ffffffc0);border:1px solid #fff;border-radius:46% 54% 61% 39%;width:34px;animation:4.8s ease-in-out infinite alternate orb-float-f3560fca;position:absolute;box-shadow:inset 3px 3px 5px #fff,0 9px 18px #7299c64a}.droplet-one[data-v-f3560fca]{top:14%;right:13%}.droplet-two[data-v-f3560fca]{width:21px;animation-delay:-2s;bottom:24%;left:5%}.droplet-three[data-v-f3560fca]{width:13px;animation-delay:-3s;bottom:13%;right:5%}.currents-head[data-v-f3560fca]{justify-content:space-between;align-items:end;gap:14px;padding:0 5px;display:flex}.currents-head h3[data-v-f3560fca]{margin-top:4px;font-size:clamp(19px,2vw,25px)}.currents-head p[data-v-f3560fca]{text-align:right;max-width:32ch;color:var(--ink-soft);font-size:12px}.current-grid[data-v-f3560fca]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.current[data-v-f3560fca]{isolation:isolate;background:linear-gradient(142deg, #ffffffb3, #ffffff40 54%, color-mix(in srgb, var(--tone) 7%, transparent));-webkit-backdrop-filter:blur(24px)saturate(1.55);animation:current-in-f3560fca .6s var(--spring) both;animation-delay:calc(var(--order) * 55ms);border:1px solid #ffffffe0;border-radius:29px;align-content:start;gap:14px;padding:18px;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 1px 1px #fff,0 18px 35px -30px #5b7cac}.current[data-v-f3560fca]:before{content:"";z-index:-1;background:color-mix(in srgb, var(--tone) 18%, #fff8);filter:blur(25px);border-radius:50%;width:160px;height:160px;position:absolute;top:-85px;right:-60px}.current-head[data-v-f3560fca]{align-items:center;gap:11px;display:flex}.current-head h4[data-v-f3560fca]{font-size:15px}.current-head small[data-v-f3560fca]{color:var(--ink-soft);font-size:11px}.current-icon[data-v-f3560fca]{background:radial-gradient(circle at 25% 20%, #fff 0%, color-mix(in srgb, var(--tone) 33%, white) 63%, color-mix(in srgb, var(--tone) 53%, white));width:40px;height:40px;box-shadow:inset 0 2px 2px #fff, 0 8px 16px -10px var(--tone);border:1px solid #fff;border-radius:15px 16px 14px 18px;flex:none;place-items:center;display:grid}.current-icon i[data-v-f3560fca]{background:#fff;border-radius:50%;width:11px;height:11px;box-shadow:0 0 0 4px #fff8}.current-number[data-v-f3560fca]{font:700 12px var(--font-mono);color:color-mix(in srgb, var(--tone) 55%, var(--ink-soft));align-self:start;margin-left:auto}.flecks[data-v-f3560fca]{gap:8px;display:grid}.fleck[data-v-f3560fca]{background:linear-gradient(120deg, #ffffffc9, #ffffff76 75%, color-mix(in srgb, var(--tone) 7%, #ffffff70));text-align:left;width:100%;min-width:0;min-height:60px;transition:transform .46s var(--spring), box-shadow .3s ease, background .3s ease;border:1px solid #ffffffd9;border-radius:19px;align-items:center;gap:11px;padding:9px 13px;display:flex;position:relative;box-shadow:inset 0 1px #fff,0 8px 20px -17px #4269a4}.fleck[data-v-f3560fca]:hover:not(:disabled),.fleck[data-v-f3560fca]:focus-visible{box-shadow:inset 0 1px 0 #fff, 0 16px 27px -18px var(--tone);background:#ffffffd9;transform:translateY(-3px)scale(1.012)}.fleck[data-v-f3560fca]:active:not(:disabled){transform:translateY(0)scale(.976)}.fleck-light[data-v-f3560fca]{background:radial-gradient(circle at 28% 23%, #fff, color-mix(in srgb, var(--tone) 62%, white));width:14px;height:14px;box-shadow:inset 0 1px 0 #fff, 0 0 0 5px color-mix(in srgb, var(--tone) 11%, transparent);transition:transform .45s var(--spring);border:1px solid #fff;border-radius:48% 52% 55% 45%;flex:none}.fleck:hover .fleck-light[data-v-f3560fca]{transform:scale(1.35)rotate(18deg)}.fleck-copy[data-v-f3560fca]{gap:1px;min-width:0;display:grid}.fleck-copy small[data-v-f3560fca]{color:var(--ink-faint);font-size:10px}.fleck-copy b[data-v-f3560fca]{overflow-wrap:anywhere;font-size:13px;font-weight:600;line-height:1.45}.fleck-arrow[data-v-f3560fca]{color:var(--accent);opacity:.5;transition:transform .4s var(--spring), opacity .2s;margin-left:auto}.fleck:hover .fleck-arrow[data-v-f3560fca]{opacity:1;transform:translate(3px,-3px)}.fleck.faded[data-v-f3560fca]{opacity:.63}.fleck.core[data-v-f3560fca]{border-color:color-mix(in srgb, var(--tone) 35%, #fff)}.fleck-more[data-v-f3560fca]{border:1px dashed color-mix(in srgb, var(--tone) 35%, #fff);background:color-mix(in srgb, var(--tone) 7%, #ffffffa6);width:100%;color:color-mix(in srgb, var(--tone) 68%, var(--ink));transition:transform .4s var(--spring), background .25s, border-color .25s;border-radius:16px;justify-content:space-between;align-items:center;gap:12px;padding:10px 13px;font-size:12px;font-weight:650;display:flex}.fleck-more[data-v-f3560fca]:hover{border-color:color-mix(in srgb, var(--tone) 52%, #fff);background:#ffffffd9;transform:translateY(-2px)}.fleck-more[data-v-f3560fca]:active{transform:scale(.98)}@keyframes scene-drift-f3560fca{to{transform:translate(-15%,12%)rotate(30deg)}}@keyframes lens-breathe-f3560fca{50%{transform:scale(1.045)}}@keyframes orb-float-f3560fca{50%{transform:translateY(-9px)}}@keyframes current-in-f3560fca{0%{opacity:0;transform:translateY(16px)scale(.975)}to{opacity:1;transform:none}}@media (width<=850px){.self-scene[data-v-f3560fca]{grid-template-columns:1fr 240px}.self-lens[data-v-f3560fca]{width:230px}}@media (width<=680px){.self-scene[data-v-f3560fca]{grid-template-columns:1fr;padding:26px}.self-lens[data-v-f3560fca]{justify-self:end;width:220px;height:170px;margin-top:-10px}.current-grid[data-v-f3560fca]{grid-template-columns:1fr}.currents-head[data-v-f3560fca]{display:block}.currents-head p[data-v-f3560fca]{text-align:left;margin-top:5px}}.wall-head[data-v-a56a9d02]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;margin-bottom:16px;display:flex}.wall-head p[data-v-a56a9d02]{flex:360px;font-size:13px}.wall-search[data-v-a56a9d02]{flex:0 280px}.wall[data-v-a56a9d02]{columns:3 280px;column-gap:var(--gap)}.note-card[data-v-a56a9d02]{margin:0 0 var(--gap);break-inside:avoid;background:color-mix(in srgb, var(--paper) 88%, var(--note,#fff3b0));box-shadow:var(--shadow-soft);transform:rotate(var(--tilt));transition:transform .35s var(--spring), box-shadow .3s;border-radius:6px 6px 18px;gap:8px;padding:20px 18px 14px;display:grid;position:relative}.note-card[data-v-a56a9d02]:hover,.note-card[data-v-a56a9d02]:focus-within{box-shadow:var(--shadow);transform:rotate(0)translateY(-3px)}[data-mood=night] .note-card[data-v-a56a9d02]{background:color-mix(in srgb, var(--paper) 80%, var(--note,#fff3b0) 20%)}.pin[data-v-a56a9d02]{background:radial-gradient(circle at 35% 30%, #fff, var(--accent) 60%);border-radius:50%;width:14px;height:14px;position:absolute;top:-7px;left:50%;transform:translate(-50%);box-shadow:0 3px 6px #0003}.note-card header[data-v-a56a9d02]{color:var(--ink-soft);justify-content:space-between;gap:10px;font-size:12px;display:flex}.note-card header b[data-v-a56a9d02]{color:var(--accent)}.note-card>p[data-v-a56a9d02]{font-size:14.5px;line-height:1.75}.stamp[data-v-a56a9d02]{border:1.5px solid var(--ok);color:var(--ok);border-radius:6px;justify-self:start;padding:2px 10px;font-weight:700;transform:rotate(-2deg);font-size:12px!important}.outreach[data-v-a56a9d02]{background:color-mix(in srgb, var(--accent) 10%, transparent);border-radius:10px;padding:8px 10px;font-size:12.5px!important}.note-card footer[data-v-a56a9d02]{border-top:1px dashed var(--paper-line);flex-wrap:wrap;align-items:center;gap:6px;padding-top:6px;display:flex}.note-card.muted[data-v-a56a9d02]{opacity:.62;border:1.5px dashed var(--line);box-shadow:none;background:0 0}.note-card.resolved>p[data-v-a56a9d02]:not(.stamp):not(.outreach){color:var(--ink-soft)}.notes-wall[data-v-a56a9d02]{gap:20px;display:grid}.wall-head[data-v-a56a9d02]{align-items:end;margin:0}.wall-head>div[data-v-a56a9d02]{flex:400px}.wall-head h2[data-v-a56a9d02]{letter-spacing:-.03em;margin:5px 0 6px;font-size:clamp(20px,2.3vw,29px)}.wall-head p[data-v-a56a9d02]{max-width:60ch}.wall-search input[data-v-a56a9d02]{background:#ffffffa9;border-color:#fff;border-radius:999px;padding:11px 17px;box-shadow:inset 0 1px #fff,0 9px 25px -19px #6388ba}.wall[data-v-a56a9d02]{column-gap:17px}.note-card[data-v-a56a9d02],[data-mood=night] .note-card[data-v-a56a9d02]{isolation:isolate;background:linear-gradient(140deg, #ffffffd4, #fff7 60%, color-mix(in srgb, var(--note,#d7e9ff) 45%, transparent));-webkit-backdrop-filter:blur(22px)saturate(1.65);transition:transform .48s var(--spring), box-shadow .3s ease;border:1px solid #ffffffe8;border-radius:27px 27px 28px 26px;margin-bottom:17px;padding:22px;transform:none;box-shadow:inset 0 2px #fff,0 18px 32px -28px #5b7faf}.note-card[data-v-a56a9d02]:before{content:"";z-index:-1;background:color-mix(in srgb, var(--note,#d7e9ff) 76%, #fff);filter:blur(18px);opacity:.65;border-radius:50%;width:118px;height:118px;position:absolute;top:-40px;right:-37px}.note-card[data-v-a56a9d02]:hover,.note-card[data-v-a56a9d02]:focus-within{transform:translateY(-5px)scale(1.012);box-shadow:inset 0 2px #fff,0 28px 40px -27px #6885b5}.note-card[data-kind=unfinished][data-v-a56a9d02]{--note:#f7cfe4}.note-card[data-kind=reflection][data-v-a56a9d02]{--note:#ffe3c4}.note-card[data-kind=revision][data-v-a56a9d02]{--note:#c8e6ff}.note-card[data-kind=reconnection][data-v-a56a9d02]{--note:#cbf1df}.note-card header[data-v-a56a9d02]{border-bottom:1px solid #ffffffb0;align-items:center;padding-bottom:9px}.note-card header b[data-v-a56a9d02]{max-width:100%;color:var(--accent);background:#ffffff95;border-radius:99px;padding:5px 10px;display:inline-flex;box-shadow:inset 0 1px #fff}.note-card>p[data-v-a56a9d02]{overflow-wrap:anywhere;line-height:1.8}.note-card footer[data-v-a56a9d02]{border-top:1px solid #ffffffb3}.note-card footer .small[data-v-a56a9d02]{background:#ffffffac;border:1px solid #fff;border-radius:99px}.stamp[data-v-a56a9d02]{border:1px solid color-mix(in srgb, var(--ok) 35%, #fff);background:#ffffff8c;border-radius:99px;transform:none}.outreach[data-v-a56a9d02]{background:#ffffffa3;border:1px solid #fff}.note-card.muted[data-v-a56a9d02]{opacity:.65;background:#ffffff73;border:1px solid #fffa;box-shadow:inset 0 1px #fff}.heart[data-v-f49fd383]{gap:var(--gap);display:grid}.heart-bar[data-v-f49fd383]{flex-wrap:wrap;align-items:center;gap:12px 20px;display:flex}.heart-bar p[data-v-f49fd383]{flex:380px;font-size:13px}.thread-groups[data-v-f49fd383]{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));align-items:start;display:grid}.thread-group[data-v-f49fd383]{align-content:start;gap:10px;display:grid}.thread-group h2[data-v-f49fd383]{align-items:center;gap:8px;font-size:15px;display:flex}.thread-group h2 i[data-v-f49fd383]{border-radius:50%;width:10px;height:10px}.thread[data-v-f49fd383]{text-align:left;border-radius:16px;justify-items:start;gap:6px;padding:12px 14px;font-weight:500;display:grid}.thread-text[data-v-f49fd383]{font-size:14px;line-height:1.6}.thread small[data-v-f49fd383]{color:var(--ink-soft);font-size:12px}.thread-more[data-v-f49fd383]{width:100%;color:var(--ink-soft);transition:transform .4s var(--spring), background .25s, border-color .25s;background:linear-gradient(120deg,#ffffff9c,#ffffff4d);border:1px dashed #ffffffd0;border-radius:16px;justify-content:space-between;align-items:center;gap:12px;padding:10px 13px;font-size:12px;font-weight:650;display:flex}.thread-more[data-v-f49fd383]:hover{background:#ffffffcf;border-color:#fff;transform:translateY(-2px)}.thread-more[data-v-f49fd383]:active{transform:scale(.98)}.fold summary[data-v-f49fd383]{gap:2px;display:grid}.fold[open] summary[data-v-f49fd383]{margin-bottom:12px}.grow[data-v-f49fd383]{flex:1;min-width:0}.thread-content[data-v-f49fd383]{font:600 18px/1.7 var(--font-display)}.sheet-title[data-v-f49fd383]{margin-bottom:10px;font-size:14px}.versions[data-v-f49fd383]{gap:8px;margin:0;padding:0;list-style:none;display:grid}.versions li[data-v-f49fd383]{background:color-mix(in srgb, var(--ink) 4%, transparent);border-radius:12px;grid-template-columns:auto auto 1fr;gap:10px;padding:8px 12px;font-size:13px;display:grid}.versions time[data-v-f49fd383]{color:var(--ink-soft)}.versions b[data-v-f49fd383]{color:var(--accent)}.thread-sheet>.danger[data-v-f49fd383]{justify-self:start}.heart-bar[data-v-f49fd383]{padding:4px 2px 2px}.heart-bar p[data-v-f49fd383]{max-width:50ch;line-height:1.65}.thread-groups[data-v-f49fd383]{grid-template-columns:repeat(auto-fill,minmax(min(100%,355px),1fr));gap:16px}.thread-group[data-v-f49fd383]{isolation:isolate;background:linear-gradient(138deg,#ffffffcb,#ffffff63 66%,#deecff4f);border-color:#ffffffe6;border-radius:28px;gap:10px;overflow:hidden;box-shadow:inset 0 2px #fff,0 20px 37px -31px #637cad}.thread-group[data-v-f49fd383]:before{content:"";z-index:-1;filter:blur(23px);background:#dceaff9c;border-radius:50%;width:140px;height:140px;position:absolute;top:-74px;right:-51px}.thread-group h2[data-v-f49fd383]{border-bottom:1px solid #ffffffc2;padding:2px 3px 8px;font-size:15px}.thread-group h2 i[data-v-f49fd383]{border:2px solid #fff;width:12px;height:12px;box-shadow:0 0 0 4px #ffffff8a,0 4px 12px #6895c966}.thread[data-v-f49fd383]{transition:transform .42s var(--spring), box-shadow .25s;background:linear-gradient(120deg,#ffffffbc,#ffffff6e);border:1px solid #ffffffd7;border-radius:18px;position:relative;box-shadow:inset 0 1px #fff}.thread[data-v-f49fd383]:hover:not(:disabled){border-color:#fff;transform:translateY(-3px)scale(1.015);box-shadow:0 14px 22px -18px #6280b5}.thread[data-v-f49fd383]:active:not(:disabled){transform:scale(.975)}.thread.core[data-v-f49fd383]{border-color:color-mix(in srgb, var(--accent) 28%, #fff);background:linear-gradient(125deg, #ffffffd0, color-mix(in srgb, var(--accent-soft) 44%, transparent))}.thread.faded[data-v-f49fd383]{opacity:.68;border-style:solid}.set-aside .fold[data-v-f49fd383]{background:linear-gradient(145deg,#fffb,#ffffff5c);border:1px solid #ffffffe6;border-radius:25px;box-shadow:inset 0 1px #fff}.set-aside .fold summary[data-v-f49fd383]{transition:transform .38s var(--spring)}.set-aside .fold summary[data-v-f49fd383]:hover{transform:translate(4px)}.versions li[data-v-f49fd383]{background:#ffffff9c;border:1px solid #ffffffd9;border-radius:17px;box-shadow:inset 0 1px #fff}@media (width<=760px){.heart-bar p[data-v-f49fd383]{flex-basis:100%}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,B as t,G as n,H as r,I as i,K as a,L as o,P as s,U as c,V as l,W as u,Y as d,_ as f,_t as p,b as m,dt as h,ft as g,gt as _,ht as v,it as y,k as b,lt as x,mt as S,n as C,o as ee,q as w,rt as T,s as E,t as D,tt as O,v as k,vt as A,y as j,yt as M}from"./Empty-CpP5kQHH.js";import{A as te,D as N,E as P,I as ne,L as F,M as I,N as L,P as R,a as re,j as z,n as ie,o as ae,r as B,u as V,w as H}from"./index-BheRW-1t.js";import{t as oe}from"./media-BzPDBm7e.js";var U={class:`ribbon`},W={class:`ribbon-head`},G={class:`ribbon-title`},K={class:`eyebrow`},q={key:0,class:`latest-mood`},J=[`viewBox`,`aria-label`],Y=[`x2`,`y1`,`y2`],X=[`d`],se=[`d`],ce=[`d`],le=[`cx`,`cy`,`r`],ue={key:1,class:`muted empty-line`},de=[`aria-label`],Z=150,fe=58,pe=C(d({__name:`MoodRibbon`,props:{moods:{},baseline:{},timeZone:{}},setup(n){let r=n,i=Z/2,a=S(),s=S(1e3),d=null;O(()=>{d=new ResizeObserver(([e])=>{s.value=Math.max(240,Math.round(e.contentRect.width))}),a.value&&d.observe(a.value)}),e(()=>d?.disconnect());let f=t(()=>{let e=[...r.moods].sort((e,t)=>e.created-t.created),t=e.length>1?(s.value-60)/(e.length-1):0;return e.map((e,n)=>({...e,x:30+n*t,y:i-Math.max(-1,Math.min(1,e.valence))*fe}))}),m=t(()=>{let e=f.value;if(e.length<2)return``;let t=`M${e[0].x.toFixed(1)},${e[0].y.toFixed(1)}`;for(let n=0;n<e.length-1;n++){let r=e[n-1]||e[n],i=e[n],a=e[n+1],o=e[n+2]||a;t+=`C${(i.x+(a.x-r.x)/6).toFixed(1)},${(i.y+(a.y-r.y)/6).toFixed(1)} ${(a.x-(o.x-i.x)/6).toFixed(1)},${(a.y-(o.y-i.y)/6).toFixed(1)} ${a.x.toFixed(1)},${a.y.toFixed(1)}`}return t}),h=t(()=>{let e=f.value;return m.value?`${m.value}L${e[e.length-1].x},${Z}L${e[0].x},${Z}Z`:``}),g=t(()=>i-(r.baseline??.15)*fe),v=t(()=>[...r.moods].slice(0,6)),x=t(()=>v.value[0]);return(e,t)=>(T(),u(`section`,U,[l(`div`,W,[l(`div`,G,[l(`span`,K,M(_(b)(`MOOD / 此刻的天气`)),1),l(`h2`,null,M(_(b)(`心情有自己的潮汐。`)),1),l(`p`,null,M(_(b)(`最近 {length} 次被经历牵动;有起伏,也会慢慢平静。`,{length:n.moods.length})),1)]),x.value?(T(),u(`div`,q,[l(`span`,null,M(_(b)(`刚刚留下的心情`)),1),l(`b`,null,M(x.value.feeling),1),l(`small`,null,M(x.value.cause||_(b)(`暂时说不清缘由`)),1)])):c(``,!0)]),l(`div`,{ref_key:`box`,ref:a,class:`ribbon-box`},[m.value?(T(),u(`svg`,{key:0,class:`ribbon-chart`,viewBox:`0 0 ${s.value} ${Z}`,role:`img`,"aria-label":_(b)(`最近的心情曲线`)},[l(`defs`,null,[l(`linearGradient`,{id:`ribbon-stroke`,x1:`0`,y1:`0`,x2:`0`,y2:Z,gradientUnits:`userSpaceOnUse`},[...t[0]||=[l(`stop`,{offset:`0%`,style:{"stop-color":`var(--cheek)`}},null,-1),l(`stop`,{offset:`50%`,style:{"stop-color":`var(--accent)`}},null,-1),l(`stop`,{offset:`100%`,style:{"stop-color":`var(--orb-c)`}},null,-1)]]),t[1]||=l(`linearGradient`,{id:`ribbon-fill`,x1:`0`,y1:`0`,x2:`0`,y2:`1`},[l(`stop`,{offset:`0%`,style:{"stop-color":`var(--accent)`,"stop-opacity":`0.22`}}),l(`stop`,{offset:`100%`,style:{"stop-color":`var(--accent)`,"stop-opacity":`0`}})],-1)]),l(`line`,{class:`base`,x1:`0`,x2:s.value,y1:g.value,y2:g.value},null,8,Y),l(`path`,{class:`area`,d:h.value},null,8,X),l(`path`,{class:`line-glow`,d:m.value},null,8,se),l(`path`,{class:`line`,d:m.value},null,8,ce),(T(!0),u(o,null,y(f.value,e=>(T(),u(`g`,{key:e.id,class:p([`pt`,e.valence>=0?`warm`:`cool`])},[l(`circle`,{cx:e.x,cy:e.y,r:4+e.intensity*6},[l(`title`,null,M(_(V)(e.created,n.timeZone))+` `+M(e.feeling)+`:`+M(e.cause||_(b)(`说不清为什么`)),1)],8,le)],2))),128))],8,J)):(T(),u(`p`,ue,M(_(b)(`心情还没有被什么事牵动过。每一次经历都可能推动 TA 的心情,随后又会慢慢回到平常。`)),1))],512),v.value.length?(T(),u(`ul`,{key:0,class:`recent`,"aria-label":_(b)(`最近的心情`)},[(T(!0),u(o,null,y(v.value,e=>(T(),u(`li`,{key:e.id,class:p(e.valence>=0?`warm`:`cool`)},[l(`b`,null,M(e.feeling),1),l(`span`,null,M(e.cause||_(b)(`说不清为什么`)),1),l(`small`,null,M(_(V)(e.created,n.timeZone))+` · `+M(_(P)[e.origin]||e.origin),1)],2))),128))],8,de)):c(``,!0)]))}}),[[`__scopeId`,`data-v-fef06576`]]),me=[`aria-label`],he={class:`self-scene`},ge={class:`scene-copy`},_e={class:`eyebrow`},ve={class:`scene-stats`},ye={class:`self-lens`,"aria-hidden":`true`},be={class:`orb-seat`},xe={class:`currents-head`},Se={class:`current-grid`},Ce={class:`current-head`},we={class:`current-number`},Te={class:`flecks`},Ee=[`data-thread`,`onClick`],De={class:`fleck-copy`},Oe=[`aria-expanded`,`onClick`],ke={"aria-hidden":`true`},Q=6,Ae=C(d({__name:`StarMap`,props:{threads:{},kinds:{},activity:{}},emits:[`open`],setup(e,{emit:r}){let i=e,s=r,d=S({}),f=t(()=>[...new Set(i.threads.map(e=>e.kind))].map(e=>({kind:e,label:i.kinds[e]||e,color:H[e]||`var(--accent)`,items:i.threads.filter(t=>t.kind===e).sort((e,t)=>(t.salience??0)-(e.salience??0))}))),m=t(()=>i.threads.filter(e=>!e.faded&&(e.salience??0)>=.5).length);function h(e){return e.faded?b(`暂时放远`):e.core?b(`慢慢笃定`):b(`还在生长`)}function g(e){return d.value[e.kind]?e.items:e.items.slice(0,Q)}function v(e){d.value={...d.value,[e]:!d.value[e]}}return(t,r)=>(T(),u(`section`,{class:`starmap`,"aria-label":_(b)(`心灵星图:TA 关于自己的线索`)},[l(`div`,he,[l(`div`,ge,[l(`span`,_e,M(_(b)(`SELF / 正在形成的自己`)),1),l(`h2`,null,[a(M(_(b)(`不是一张固定的画像,`)),1),r[0]||=l(`br`,null,null,-1),l(`em`,null,M(_(b)(`而是一直在生长。`)),1)]),l(`p`,null,M(_(b)(`一件经历可能留下一点痕迹。点开一枚光片,可以看到它从哪里来、后来又怎么改变。`)),1),l(`div`,ve,[l(`span`,null,[l(`b`,null,M(e.threads.length),1),a(` `+M(_(b)(`枚线索`)),1)]),l(`span`,null,[l(`b`,null,M(m.value),1),a(` `+M(_(b)(`枚此刻贴近`)),1)])])]),l(`div`,ye,[r[1]||=n(`<span class="lens-halo halo-one" data-v-f3560fca></span><span class="lens-halo halo-two" data-v-f3560fca></span><span class="lens-droplet droplet-one" data-v-f3560fca></span><span class="lens-droplet droplet-two" data-v-f3560fca></span><span class="lens-droplet droplet-three" data-v-f3560fca></span>`,5),l(`div`,be,[w(R,{mood:_(F),activity:e.activity||`idle`,size:106},null,8,[`mood`,`activity`])])])]),l(`div`,xe,[l(`div`,null,[r[2]||=l(`span`,{class:`eyebrow`},`INNER CURRENTS`,-1),l(`h3`,null,M(_(b)(`她留下的光片`)),1)]),l(`p`,null,M(_(b)(`越亮的线索,越贴近此刻。淡去的仍然保留在这里。`)),1)]),l(`div`,Se,[(T(!0),u(o,null,y(f.value,(e,t)=>(T(),u(`section`,{key:e.kind,class:`current`,style:A({"--tone":e.color,"--order":t})},[l(`header`,Ce,[r[3]||=l(`span`,{class:`current-icon`,"aria-hidden":`true`},[l(`i`)],-1),l(`div`,null,[l(`h4`,null,M(e.label),1),l(`small`,null,M(_(b)(`{length} 枚正在留存`,{length:e.items.length})),1)]),l(`span`,we,M(String(t+1).padStart(2,`0`)),1)]),l(`div`,Te,[(T(!0),u(o,null,y(g(e),e=>(T(),u(`button`,{key:e.thread,type:`button`,class:p([`fleck star`,{faded:e.faded,core:e.core}]),"data-thread":e.thread,onClick:t=>s(`open`,e)},[r[4]||=l(`span`,{class:`fleck-light`,"aria-hidden":`true`},null,-1),l(`span`,De,[l(`small`,null,M(h(e)),1),l(`b`,null,M(e.content),1)]),r[5]||=l(`span`,{class:`fleck-arrow`,"aria-hidden":`true`},`↗`,-1)],10,Ee))),128)),e.items.length>Q?(T(),u(`button`,{key:0,type:`button`,class:`fleck-more`,"aria-expanded":!!d.value[e.kind],onClick:t=>v(e.kind)},[a(M(d.value[e.kind]?_(b)(`收起线索`):_(b)(`再看 {v} 枚光片`,{v:e.items.length-Q}))+` `,1),l(`span`,ke,M(d.value[e.kind]?`↑`:`↓`),1)],8,Oe)):c(``,!0)])],4))),128))])],8,me))}}),[[`__scopeId`,`data-v-f3560fca`]]),je={class:`notes-wall`},Me={class:`wall-head`},Ne={class:`eyebrow`},Pe={class:`muted`},Fe=[`placeholder`,`aria-label`],Ie={key:0,class:`wall`},Le=[`data-kind`],Re={key:0,class:`stamp`},ze={key:1,class:`outreach`},Be=[`onClick`],Ve=[`onClick`],He=[`onClick`],Ue=C(d({__name:`NotesWall`,props:{thoughts:{},kinds:{},query:{}},emits:[`changed`,`search`],setup(e,{emit:t}){let n=e,d=t,f=S(n.query);async function m(e,t){try{await z.thought(e.id,t),d(`changed`)}catch(e){k(e.message,!0)}}async function h(e){if(await j(b(`删除这张便签?有后续修正的便签只能隐藏。`),{title:b(`删除便签`),confirmText:b(`删除`),danger:!0}))try{await z.removeThought(e.id),d(`changed`)}catch(e){k(e.message,!0)}}return(t,n)=>(T(),u(`section`,je,[l(`div`,Me,[l(`div`,null,[l(`span`,Ne,M(_(b)(`THOUGHTS / 留给自己的话`)),1),l(`h2`,null,M(_(b)(`有些念头,先放在心上。`)),1),l(`p`,Pe,M(_(b)(`有些是聊天之后的理解,有些是还没想好要告诉谁的念头。可以分享,也可以先留给自己。`)),1)]),l(`form`,{class:`wall-search`,role:`search`,onSubmit:n[2]||=i(e=>d(`search`,f.value),[`prevent`])},[g(l(`input`,{id:`noteSearch`,"onUpdate:modelValue":n[0]||=e=>f.value=e,placeholder:_(b)(`搜索某件事、某个人`),"aria-label":_(b)(`搜索便签`),onChange:n[1]||=e=>d(`search`,f.value)},null,40,Fe),[[s,f.value]])],32)]),e.thoughts.length?(T(),u(`div`,Ie,[(T(!0),u(o,null,y(e.thoughts,t=>(T(),u(`article`,{key:t.id,class:p([`note-card`,{muted:t.hidden,resolved:t.status===`resolved`}]),"data-kind":t.kind},[l(`header`,null,[l(`b`,null,[a(M(e.kinds[t.kind]||t.kind),1),t.parent_id?(T(),u(o,{key:0},[a(M(_(b)(`· 修正了以前的想法`)),1)],64)):c(``,!0)]),l(`time`,null,M(_(L)(t.created)),1)]),l(`p`,null,M(t.content),1),t.status===`resolved`?(T(),u(`p`,Re,M(t.resolution?_(b)(`放下了:{resolution}`,{resolution:t.resolution}):_(b)(`放下了`)),1)):c(``,!0),t.outreach?(T(),u(`p`,ze,[a(M(_(b)(`想主动说:{outreach} · {v}`,{outreach:t.outreach,v:_(N)[t.outreach_status]||t.outreach_status}))+` `,1),t.outreach_reason?(T(),u(o,{key:0},[n[3]||=l(`br`,null,null,-1),a(M(_(b)(`因为:{outreach_reason}`,{outreach_reason:t.outreach_reason})),1)],64)):c(``,!0),t.outreach_wait_reason?(T(),u(o,{key:1},[n[4]||=l(`br`,null,null,-1),a(M(_(b)(`{outreach_wait_reason};稍后重新决定。`,{outreach_wait_reason:t.outreach_wait_reason})),1)],64)):c(``,!0)])):c(``,!0),l(`footer`,null,[l(`button`,{class:`small`,onClick:e=>m(t,{status:t.status===`open`?`resolved`:`open`})},M(t.status===`open`?_(b)(`放下这件事`):_(b)(`重新关注`)),9,Be),l(`button`,{class:`small`,onClick:e=>m(t,{hidden:!t.hidden})},M(t.hidden?_(b)(`恢复`):_(b)(`不再参与 TA 的思考`)),9,Ve),l(`button`,{class:`text-button`,onClick:e=>h(t)},M(_(b)(`删除`)),9,He)])],10,Le))),128))])):(T(),r(D,{key:1,title:_(b)(`这面墙还空着`),text:_(b)(`独处时有了新的理解、放不下的事或久别想起的人,TA 会写一张便签贴在这里。`)},null,8,[`title`,`text`]))]))}}),[[`__scopeId`,`data-v-a56a9d02`]]),We={class:`page heart`},Ge={class:`heart-bar`},Ke={key:0,class:`muted`},qe={key:1,class:`thread-groups`},Je=[`data-thread-kind`],Ye=[`data-thread`,`onClick`],Xe=[`data-tone`],Ze={class:`thread-text`},Qe=[`aria-expanded`,`onClick`],$e={"aria-hidden":`true`},et={key:3,class:`grid-2 set-aside`},tt={class:`card fold`},nt={class:`eyebrow`},rt={key:0,class:`list`},it={class:`chip`,"data-tone":`quiet`},at={class:`grow`},ot={class:`faint`},st={key:1,class:`muted`},ct={class:`card fold`},lt={class:`eyebrow`},ut={key:0,class:`list`},dt={class:`chip`,"data-tone":`danger`},ft={class:`grow`},pt={key:0,class:`faint`},mt={class:`faint`},ht={key:1,class:`muted`},gt={key:0,class:`thread-sheet stack`},_t={class:`thread-content`},vt={class:`row`},yt={class:`chip`},bt={class:`chip`,"data-tone":`quiet`},xt={class:`stack tight`},St={class:`kv`},Ct={class:`sheet-title`},wt={class:`versions`},Tt={class:`faint`},$=4,Et=C(d({__name:`HeartPage`,setup(e){let n=oe(`(max-width: 760px)`),i=v(f(`/mind/self`)||null),s=v(f(`/mind/mood`)||null),d=v(f(`/mind/thoughts?q=`)||[]),g=S(``),C=S(E.sub===`notes`?`notes`:E.sub===`list`||n.value?`list`:`stars`),O=S(null),j=S([]),N=t(()=>(i.value?.threads||[]).filter(e=>e.status!==`closed`)),F=S({}),R=t(()=>(i.value?.threads||[]).filter(e=>e.status===`closed`)),V=t(()=>{let e=i.value?.kinds||{};return Object.entries(e).map(([e,t])=>({kind:e,label:t,threads:N.value.filter(t=>t.kind===e)})).filter(e=>e.threads.length)});function U(e){return e.core?b(`TA 最核心的部分`):e.faded?b(`在远方:很久没被触及`):e.fading?b(`慢慢淡出`):te[e.status]||e.status}function W(e){return F.value[e.kind]?e.threads:e.threads.slice(0,$)}function G(e){F.value={...F.value,[e]:!F.value[e]}}let K=0;async function q(){let e=++K,[t,n,r]=await Promise.all([z.self(),z.mood(),z.notes(g.value)]);e===K&&(i.value=t,s.value=n,d.value=r,O.value&&=t.threads.find(e=>e.thread===O.value.thread)||null)}async function J(e){let t=++K;g.value=e;let n=await z.notes(e);t===K&&(d.value=n)}async function Y(e){O.value=e,j.value=[],j.value=await z.thread(e.thread)}async function X(e){let t=await m(b(`撤销「{content}」?撤销后 TA 不会再这样认为,之后的独处也不会把它写回来。可以写下原因(可不填):`,{content:e.content}),{title:b(`撤销这条线索`),confirmText:b(`撤销`),danger:!0,placeholder:b(`原因`)});if(t!==null)try{await z.revoke(`self`,e.thread,t),k(b(`已撤销`)),O.value=null,await q()}catch(e){k(e.message,!0)}}return x(C,e=>{E.page===`heart`&&ee(e===`stars`?``:e)}),x(()=>[E.page,E.sub],([e,t])=>{e===`heart`&&(t===`notes`||t===`list`?C.value=t:!t&&C.value===`notes`&&(C.value=`stars`))}),re(`heart`,q),(e,t)=>(T(),u(`div`,We,[s.value?(T(),r(pe,{key:0,moods:s.value.moods,baseline:s.value.affect.baseline,"time-zone":s.value.clock.timeZone},null,8,[`moods`,`baseline`,`time-zone`])):c(``,!0),l(`div`,Ge,[w(ie,{modelValue:C.value,"onUpdate:modelValue":t[0]||=e=>C.value=e,label:_(b)(`内心的分区`),items:[{key:`stars`,label:_(b)(`心灵星图`),count:N.value.length},{key:`list`,label:_(b)(`线索清单`)},{key:`notes`,label:_(b)(`放在心上`),count:d.value.length}]},null,8,[`modelValue`,`label`,`items`]),C.value===`notes`?c(``,!0):(T(),u(`p`,Ke,M(_(b)(`她从真实经历里慢慢认识自己。点开一条线索,可以看到它如何变化。`)),1))]),i.value?(T(),u(o,{key:1},[C.value===`stars`?(T(),u(o,{key:0},[N.value.length?(T(),r(Ae,{key:0,threads:N.value,kinds:i.value.kinds,activity:_(ne).data?.activity?.kind,onOpen:Y},null,8,[`threads`,`kinds`,`activity`])):(T(),r(D,{key:1,title:_(b)(`TA 还没有长出关于自己的东西`),text:_(b)(`聊得多了、独处过、写过日记,TA 会慢慢发现自己喜欢什么、怎么看事情、想做什么。天性只是种子。`)},null,8,[`title`,`text`]))],64)):C.value===`list`?(T(),u(`section`,qe,[(T(!0),u(o,null,y(V.value,e=>(T(),u(`div`,{key:e.kind,class:`card thread-group`,"data-thread-kind":e.kind},[l(`h2`,null,[l(`i`,{style:A({background:_(H)[e.kind]})},null,4),a(M(e.label)+` · `+M(e.threads.length),1)]),(T(!0),u(o,null,y(W(e),e=>(T(),u(`button`,{key:e.thread,class:p([`thread`,{faded:e.faded,core:e.core}]),"data-thread":e.thread,onClick:t=>Y(e)},[l(`span`,{class:`chip`,"data-tone":e.faded||e.fading?`quiet`:void 0},M(U(e)),9,Xe),l(`span`,Ze,M(e.content),1),l(`small`,null,[a(M(_(b)(`强度 {v}`,{v:_(I)(e.strength)})),1),e.salience===null?c(``,!0):(T(),u(o,{key:0},[a(M(_(b)(`· 此刻的分量 {v}`,{v:_(I)(e.salience)})),1)],64))])],10,Ye))),128)),e.threads.length>$?(T(),u(`button`,{key:0,type:`button`,class:`thread-more`,"aria-expanded":!!F.value[e.kind],onClick:t=>G(e.kind)},[a(M(F.value[e.kind]?_(b)(`收起线索`):_(b)(`再看 {v} 条线索`,{v:e.threads.length-$}))+` `,1),l(`span`,$e,M(F.value[e.kind]?`↑`:`↓`),1)],8,Qe)):c(``,!0)],8,Je))),128)),V.value.length?c(``,!0):(T(),r(D,{key:0,title:_(b)(`TA 还没有长出关于自己的东西`),text:_(b)(`天性只是种子,其余的都从经历里来。`)},null,8,[`title`,`text`]))])):(T(),r(Ue,{key:2,thoughts:d.value,kinds:s.value?.kinds?.thoughts||{},query:g.value,onChanged:q,onSearch:J},null,8,[`thoughts`,`kinds`,`query`])),C.value===`notes`?c(``,!0):(T(),u(`div`,et,[l(`details`,tt,[l(`summary`,null,[l(`span`,nt,M(_(b)(`放下`)),1),l(`b`,null,M(_(b)(`TA 自己放下的 · {length}`,{length:R.value.length})),1)]),R.value.length?(T(),u(`ul`,rt,[(T(!0),u(o,null,y(R.value,e=>(T(),u(`li`,{key:e.thread,class:`list-row`},[l(`span`,it,M(_(b)(`放下`)),1),l(`span`,at,M(e.content),1),l(`time`,ot,M(_(L)(e.created)),1)]))),128))])):(T(),u(`p`,st,M(_(b)(`没有。`)),1))]),l(`details`,ct,[l(`summary`,null,[l(`span`,lt,M(_(b)(`撤销`)),1),l(`b`,null,M(_(b)(`你撤销过的 · {length}`,{length:i.value.revoked.length})),1)]),i.value.revoked.length?(T(),u(`ul`,ut,[(T(!0),u(o,null,y(i.value.revoked,e=>(T(),u(`li`,{key:e.id,class:`list-row`},[l(`span`,dt,M(_(b)(`撤销`)),1),l(`span`,ft,[a(M(e.content),1),e.reason?(T(),u(`small`,pt,` · `+M(e.reason),1)):c(``,!0)]),l(`time`,mt,M(_(L)(e.created)),1)]))),128))])):(T(),u(`p`,ht,M(_(b)(`没有。`)),1))])]))],64)):c(``,!0),w(ae,{open:!!O.value,title:O.value?i.value?.kinds?.[O.value.kind]||O.value.kind:``,eyebrow:_(b)(`一颗星`),onClose:t[2]||=e=>O.value=null},{default:h(()=>[O.value?(T(),u(`div`,gt,[l(`p`,_t,M(O.value.content),1),l(`div`,vt,[l(`span`,yt,M(U(O.value)),1),l(`span`,bt,M(_(P)[O.value.origin]||O.value.origin),1)]),l(`div`,xt,[w(B,{label:_(b)(`强度`),value:O.value.strength},null,8,[`label`,`value`]),O.value.salience===null?c(``,!0):(T(),r(B,{key:0,label:_(b)(`此刻的分量`),value:O.value.salience},null,8,[`label`,`value`]))]),l(`dl`,St,[l(`dt`,null,M(_(b)(`经历的天数`)),1),l(`dd`,null,M(_(b)(`{length} 天`,{length:O.value.days.length})),1),l(`dt`,null,M(_(b)(`来源`)),1),l(`dd`,null,M(_(b)(`{length} 处`,{length:O.value.sources.length})),1),l(`dt`,null,M(_(b)(`最近一次被触及`)),1),l(`dd`,null,M(_(L)(O.value.created)),1)]),l(`section`,null,[l(`h3`,Ct,M(_(b)(`怎么变成现在这样的 · {versions} 个版本`,{versions:O.value.versions})),1),l(`ol`,wt,[(T(!0),u(o,null,y(j.value,e=>(T(),u(`li`,{key:e.id},[l(`time`,null,M(_(L)(e.created)),1),l(`b`,null,M(_(I)(e.strength)),1),l(`span`,null,M(e.content),1)]))),128))])]),l(`button`,{class:`danger`,"data-revoke-thread":``,onClick:t[1]||=e=>X(O.value)},M(_(b)(`撤销这条线索`)),1),l(`p`,Tt,M(_(b)(`撤销后 TA 不会再这样认为;这只是拿走一段理解,不会改写发生过的事。`)),1)])):c(``,!0)]),_:1},8,[`open`,`title`,`eyebrow`])]))}}),[[`__scopeId`,`data-v-f49fd383`]]);export{Et as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.book[data-v-c7291772]{grid-template-columns:minmax(150px,205px) minmax(0,1fr);align-items:start;gap:18px;display:grid}.days[data-v-c7291772]{scrollbar-width:thin;gap:9px;max-height:660px;padding:4px 8px 10px 4px;display:grid;overflow:auto}.diary-day[data-v-c7291772]{-webkit-backdrop-filter:blur(18px)saturate(1.55);backdrop-filter:blur(18px)saturate(1.55);text-align:left;transition:transform .48s var(--spring), background .25s, box-shadow .35s;background:linear-gradient(150deg,#ffffff80,#ffffff2e);border:1px solid #ffffffb3;border-radius:20px;justify-items:start;gap:3px;padding:14px 17px;display:grid;position:relative;box-shadow:inset 0 1px #fffc}.diary-day b[data-v-c7291772]{font-size:14px}.diary-day small[data-v-c7291772]{color:var(--ink-soft);font-size:11.5px;font-weight:500}.diary-day[data-v-c7291772]:hover{transform:translate(5px)scale(1.015)}.diary-day[data-v-c7291772]:active{transform:translate(2px)scale(.97)}.diary-day.active[data-v-c7291772]{background:linear-gradient(125deg, #ffffffe6, color-mix(in srgb, var(--glow-a) 23%, transparent));box-shadow:inset 0 1px #fff,0 14px 27px -18px #3960b178}.diary-day.active[data-v-c7291772]:before{content:"";background:var(--orb-b);width:3px;box-shadow:0 0 10px var(--orb-b);border-radius:0 10px 10px 0;position:absolute;top:26%;bottom:26%;left:0}.diary-page[data-v-c7291772]{isolation:isolate;background:radial-gradient(ellipse at 92% 5%, color-mix(in srgb, var(--glow-b) 42%, transparent), transparent 36%), linear-gradient(145deg, #ffffffc4, #ffffff54);-webkit-backdrop-filter:blur(32px)saturate(1.7);backdrop-filter:blur(32px)saturate(1.7);border:1px solid #ffffffd1;border-radius:34px;gap:21px;min-width:0;min-height:445px;padding:clamp(24px,3.4vw,45px);display:grid;position:relative;overflow:hidden;box-shadow:inset 0 2px 1px #fff,0 34px 68px -46px #3960b17d}.diary-page[data-v-c7291772]:before{content:"";aspect-ratio:1;background:radial-gradient(circle at 30% 20%, white, transparent 28%), linear-gradient(150deg, var(--orb-a), var(--glow-b));opacity:.48;z-index:-1;border:1px solid #ffffffd6;border-radius:40% 60% 60% 40%/54% 42% 58% 46%;width:clamp(100px,19vw,230px);animation:8s ease-in-out infinite diary-breathe-c7291772;position:absolute;top:-28px;right:6%;box-shadow:inset 11px 13px 22px #ffffff8a,0 17px 26px -18px #3960b159}@keyframes diary-breathe-c7291772{0%,to{transform:translateY(0)rotate(-9deg)scale(1)}50%{transform:translateY(12px)rotate(8deg)scale(1.07)}}.diary-page header[data-v-c7291772]{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.diary-page h2[data-v-c7291772]{font:740 clamp(22px, 2.6vw, 31px)/1.3 var(--font-display);letter-spacing:-.03em;margin-top:7px}.diary-page h2 small[data-v-c7291772]{color:var(--ink-soft);margin-left:9px;font-size:13px;font-weight:500}.stamp[data-v-c7291772]{aspect-ratio:1;background:radial-gradient(circle at 30% 20%, white, transparent 32%), color-mix(in srgb, var(--accent-soft) 63%, white);width:78px;color:var(--accent);font:700 13px/1.2 var(--font-display);text-align:center;border:1px solid #ffffffe6;border-radius:46% 54% 58% 42%;flex:none;place-items:center;padding:9px;display:grid;transform:rotate(-8deg);box-shadow:inset 0 2px 1px #fff,0 12px 20px -12px #3960b152}.ink[data-v-c7291772]{letter-spacing:.025em;white-space:pre-wrap;overflow-wrap:anywhere;max-width:66ch;min-height:185px;font-size:16px;line-height:2.05}.diary-page blockquote[data-v-c7291772]{background:color-mix(in srgb, var(--accent-soft) 29%, transparent);border:1px solid #fffc;border-radius:21px;margin:0;padding:15px 18px;font-size:14px;line-height:1.8}.diary-page footer[data-v-c7291772]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:9px;margin-top:auto;display:flex}.diary-page footer button[data-v-c7291772]{border-radius:999px}.day-diff[data-v-c7291772]{background:#fff6;border:1px solid #ffffffc7;border-radius:22px;gap:9px;padding:20px;font-size:14px;line-height:1.7;display:grid}.day-diff h3[data-v-c7291772]{font-size:15px}.page-turn-enter-active[data-v-c7291772]{transition:opacity .32s var(--ease), transform .65s var(--spring), filter .4s}.page-turn-leave-active[data-v-c7291772]{transition:opacity .16s,transform .16s}.page-turn-enter-from[data-v-c7291772]{opacity:0;filter:blur(6px);transform:translateY(22px)scale(.96)rotate(-1deg)}.page-turn-leave-to[data-v-c7291772]{opacity:0;transform:translateY(-5px)scale(.985)}@media (width<=850px){.book[data-v-c7291772]{grid-template-columns:minmax(0,1fr)}.days[data-v-c7291772]{max-height:none;padding-bottom:12px;display:flex;overflow-x:auto}.diary-day[data-v-c7291772]{flex:none;min-width:142px}.diary-day[data-v-c7291772]:hover{transform:translateY(-3px)}.diary-page[data-v-c7291772]{border-radius:26px;min-height:390px}}@media (width<=580px){.diary-page[data-v-c7291772]{padding:22px}.stamp[data-v-c7291772]{width:59px;font-size:11px}.ink[data-v-c7291772]{min-height:120px;font-size:14px}}@media (prefers-reduced-motion:reduce){.diary-page[data-v-c7291772]:before{animation:none}.diary-day[data-v-c7291772],.page-turn-enter-active[data-v-c7291772],.page-turn-leave-active[data-v-c7291772]{transition:none}}.ahead[data-v-0abd3715]{gap:18px;display:grid}.ahead-head[data-v-0abd3715]{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:16px 24px;padding:8px 2px;display:flex}.ahead-head>div[data-v-0abd3715]{min-width:0}.ahead-head h2[data-v-0abd3715]{font:730 clamp(20px, 2.6vw, 28px)/1.3 var(--font-display);letter-spacing:-.03em;margin:7px 0 4px}.ahead-head p[data-v-0abd3715]{max-width:65ch;font-size:13px;line-height:1.7}.calendar-wrap[data-v-0abd3715]{grid-template-columns:minmax(0,1.18fr) minmax(270px,.82fr);align-items:start;gap:18px;display:grid}.calendar[data-v-0abd3715],.picked[data-v-0abd3715],.ahead-item.card[data-v-0abd3715]{-webkit-backdrop-filter:blur(27px)saturate(1.6);backdrop-filter:blur(27px)saturate(1.6);background:linear-gradient(145deg,#ffffffb8,#ffffff4d);border:1px solid #ffffffd1;box-shadow:inset 0 2px 1px #fff,0 25px 50px -38px #3d5ea366}.calendar[data-v-0abd3715],.picked[data-v-0abd3715]{border-radius:28px;padding:clamp(18px,2.4vw,28px)}.calendar header[data-v-0abd3715]{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.calendar header b[data-v-0abd3715]{font:730 clamp(18px, 2.3vw, 25px)/1.2 var(--font-display);letter-spacing:-.02em}.calendar header button[data-v-0abd3715]{background:#ffffff6b;border:1px solid #ffffffd6;border-radius:50%;box-shadow:inset 0 1px #fff}.grid[data-v-0abd3715]{grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;display:grid}.wd[data-v-0abd3715]{text-align:center;color:var(--ink-soft);padding:4px 0 7px;font-size:12px;font-weight:650}.blank[data-v-0abd3715]{aspect-ratio:1;width:100%;min-width:0;min-height:0}.cell[data-v-0abd3715]{aspect-ratio:1;width:100%;min-width:0;max-width:100%;min-height:0;transition:transform .48s var(--spring), background .25s, box-shadow .3s;background:#ffffff3b;border:1px solid #0000;border-radius:17px;place-items:center;padding:0;font-size:13px;font-weight:640;display:grid;position:relative;overflow:hidden}.cell[data-v-0abd3715]:hover{background:#ffffffa8;transform:translateY(-4px)scale(1.06);box-shadow:0 10px 18px -14px #3d5ea385}.cell[data-v-0abd3715]:active{transform:scale(.91)}.cell.has[data-v-0abd3715]{background:color-mix(in srgb, var(--glow-a) 25%, white)}.cell.today[data-v-0abd3715]{border-color:color-mix(in srgb, var(--accent) 45%, white)}.cell.picked[data-v-0abd3715]{background:linear-gradient(145deg, var(--orb-a), var(--orb-b));color:var(--orb-face);border-color:#ffffffd9;box-shadow:inset 0 1px #fff,0 10px 20px -14px #3d5ea399}.dots[data-v-0abd3715]{gap:3px;display:flex;position:absolute;bottom:5px}.dots em[data-v-0abd3715]{background:var(--cheek);border-radius:50%;width:4px;height:4px}.dots em[data-state=done][data-v-0abd3715]{background:var(--ok)}.dots em[data-state=missed][data-v-0abd3715],.dots em[data-state=lapsed][data-v-0abd3715]{background:var(--ink-faint)}.picked.card[data-v-0abd3715]{min-height:220px}.picked h3[data-v-0abd3715]{margin-bottom:15px;font-size:17px}.ahead-item[data-v-0abd3715]{transition:transform .5s var(--spring), box-shadow .3s;background:#ffffff5c;border:1px solid #ffffffbf;border-radius:20px;flex-wrap:wrap;align-items:flex-start;gap:10px 12px;padding:14px 16px;display:flex}.ahead-item+.ahead-item[data-v-0abd3715]{margin-top:9px}.ahead-item[data-v-0abd3715]:hover{transform:translateY(-3px);box-shadow:0 16px 24px -22px #3d5ea385}.ahead-item p[data-v-0abd3715]{font-size:14px;line-height:1.65}.ahead-item.closed[data-v-0abd3715]{opacity:.67}.when[data-v-0abd3715]{min-width:48px;color:var(--accent);flex:none;font-size:13px;font-weight:750}.grow[data-v-0abd3715]{flex:160px;min-width:0}.ahead-item .text-button[data-v-0abd3715]{margin-left:auto}@media (width<=900px){.calendar-wrap[data-v-0abd3715]{grid-template-columns:minmax(0,1fr)}}@media (width<=520px){.grid[data-v-0abd3715]{gap:3px}.cell[data-v-0abd3715]{border-radius:11px}.calendar[data-v-0abd3715],.picked[data-v-0abd3715]{padding:17px}}@media (prefers-reduced-motion:reduce){.cell[data-v-0abd3715],.ahead-item[data-v-0abd3715]{transition:none}}.life[data-v-e4940116]{gap:22px;display:grid}.life-intro[data-v-e4940116]{isolation:isolate;background:radial-gradient(ellipse at 79% 25%, color-mix(in srgb, var(--glow-b) 58%, transparent), transparent 36%), radial-gradient(ellipse at 10% 100%, color-mix(in srgb, var(--glow-a) 48%, transparent), transparent 54%), linear-gradient(130deg, #ffffffc4, #ffffff3d);-webkit-backdrop-filter:blur(28px)saturate(1.65);backdrop-filter:blur(28px)saturate(1.65);border:1px solid #ffffffd9;border-radius:38px;justify-content:space-between;align-items:center;min-height:180px;padding:clamp(24px,4vw,48px);display:flex;position:relative;overflow:hidden;box-shadow:inset 0 2px 1px #fffffff2,0 30px 70px -48px #3d5ea380}.life-intro[data-v-e4940116]:after{content:"";pointer-events:none;border:1px solid #fffc;border-radius:50%;height:145%;position:absolute;inset:auto -8% -140% 18%;transform:rotate(-12deg);box-shadow:0 -8px 28px #ffffff40}.life-intro h1[data-v-e4940116]{font:760 clamp(26px, 3.6vw, 43px)/1.25 var(--font-display);letter-spacing:-.045em;margin:12px 0 8px}.life-intro h1 em[data-v-e4940116]{background:linear-gradient(95deg, var(--accent), var(--orb-c), var(--cheek));color:#0000;-webkit-background-clip:text;background-clip:text;font-style:normal}.life-intro p[data-v-e4940116]{color:var(--ink-soft);letter-spacing:.015em;font-size:14px}.life-mark[data-v-e4940116]{aspect-ratio:1;background:radial-gradient(circle at 34% 25%, white, transparent 28%), linear-gradient(145deg, var(--orb-a), var(--glow-b), var(--orb-b));border:1px solid #ffffffe0;border-radius:42% 58% 52% 48%/46% 42% 58% 54%;flex:none;width:clamp(92px,14vw,150px);animation:7s ease-in-out infinite life-float-e4940116;position:relative;box-shadow:inset 10px 12px 22px #ffffffad,inset -10px -12px 24px #4568b229,0 18px 28px -14px #4c71b257}.life-mark[data-v-e4940116]:before,.life-mark[data-v-e4940116]:after,.life-mark span[data-v-e4940116]{content:"";aspect-ratio:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff59;border:1px solid #fffc;border-radius:50%;width:30%;position:absolute}.life-mark[data-v-e4940116]:before{top:6%;left:-18%}.life-mark[data-v-e4940116]:after{width:18%;bottom:4%;right:-14%}.life-mark span[data-v-e4940116]{width:12%;top:18%;right:19%}@keyframes life-float-e4940116{0%,to{border-radius:42% 58% 52% 48%/46% 42% 58% 54%;transform:translateY(0)rotate(-4deg)}50%{border-radius:55% 45% 43% 57%/55% 48% 52% 45%;transform:translateY(-10px)rotate(4deg)}}.life-bar[data-v-e4940116]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:4px 2px;display:flex}.life-bar>.chip[data-v-e4940116]{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffff6e;border:1px solid #ffffffc2;padding:9px 14px}.reviews[data-v-e4940116],.chapter[data-v-e4940116],.book-card[data-v-e4940116],.runs[data-v-e4940116]{-webkit-backdrop-filter:blur(26px)saturate(1.5);backdrop-filter:blur(26px)saturate(1.5);background:linear-gradient(145deg,#ffffffbf,#ffffff47);border:1px solid #ffffffc7;box-shadow:inset 0 1px #fff,0 26px 52px -39px #3e5a9761}.creations summary[data-v-e4940116]{cursor:pointer;font-weight:600}.creation[data-v-e4940116]{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}.creation p[data-v-e4940116]{overflow-wrap:anywhere;line-height:1.7}.reviews[data-v-e4940116]{padding:clamp(20px,3vw,36px)}.review-text[data-v-e4940116]{white-space:pre-wrap;margin-top:5px;font-size:15px;line-height:1.9}.reviews blockquote[data-v-e4940116]{background:color-mix(in srgb, var(--accent-soft) 35%, transparent);border:1px solid #ffffffc2;border-radius:20px;margin:12px 0 0;padding:14px 18px;font-size:13.5px}.story[data-v-e4940116]{gap:18px;max-width:920px;display:grid}.chapter[data-v-e4940116]{min-width:0;transition:transform .48s var(--spring), box-shadow .4s var(--ease);border-radius:30px;gap:12px;padding:clamp(23px,3.4vw,42px);display:grid;position:relative;overflow:hidden}.chapter[data-v-e4940116]:hover{transform:translateY(-4px);box-shadow:inset 0 1px #fff,0 30px 60px -36px #3e5a976b}.chapter[data-v-e4940116]:before{content:"";background:color-mix(in srgb, var(--glow-a) 36%, transparent);filter:blur(20px);pointer-events:none;border-radius:44% 56% 60% 40%;width:200px;height:200px;position:absolute;top:-80px;right:-30px}.chapter h2[data-v-e4940116]{font:730 clamp(20px, 2.2vw, 28px)/1.3 var(--font-display);letter-spacing:-.025em}.chapter p[data-v-e4940116]{white-space:pre-wrap;overflow-wrap:anywhere;max-width:72ch;font-size:15px;line-height:1.95}.chapter .text-button[data-v-e4940116]{justify-self:start}.preface[data-v-e4940116]{background:radial-gradient(circle at 92% 15%, color-mix(in srgb, var(--glow-b) 42%, transparent), transparent 38%), linear-gradient(145deg, #ffffffd1, #ffffff4d)}.versions[data-v-e4940116]{gap:8px;margin:0;padding:0;list-style:none;display:grid}.versions li[data-v-e4940116]{background:#ffffff57;border:1px solid #ffffffbf;border-radius:18px;gap:4px;padding:14px 17px;font-size:13px;display:grid}.versions time[data-v-e4940116]{color:var(--ink-soft);font-size:12px}.shelf[data-v-e4940116]{gap:16px;display:grid}.shelf-note[data-v-e4940116]{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fff6;border:1px solid #ffffffb3;border-radius:22px;padding:18px 22px;font-size:13px;line-height:1.8}.books[data-v-e4940116]{grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));gap:16px;display:grid}.book-card[data-v-e4940116]{min-width:0;transition:transform .48s var(--spring), box-shadow .4s var(--ease);border-radius:25px;gap:17px;padding:20px;display:flex}.book-card[data-v-e4940116]:hover{transform:translateY(-5px)rotate(-.3deg);box-shadow:inset 0 1px #fff,0 29px 55px -35px #3e5a976b}.spine[data-v-e4940116]{background:color-mix(in srgb, var(--accent) 13%, white);border-radius:20px;flex:none;width:12px;position:relative;overflow:hidden;box-shadow:inset 0 1px 4px #35579b33}.spine[data-v-e4940116]:after{content:"";height:calc(var(--p) * 100%);border-radius:inherit;background:linear-gradient(var(--orb-b), var(--accent));position:absolute;inset:auto 0 0}.book-card h3[data-v-e4940116]{font-size:16px}.book-card p[data-v-e4940116]{margin-top:8px;font-size:13.5px;line-height:1.7}.runs[data-v-e4940116]{border-radius:25px}.runs summary[data-v-e4940116]{cursor:pointer;flex-wrap:wrap;align-items:center;gap:5px 14px;display:flex}.runs summary[data-v-e4940116]::marker{color:var(--accent)}.runs[open] summary[data-v-e4940116]{margin-bottom:16px}.runs summary b[data-v-e4940116]{font-size:14px}.run-list[data-v-e4940116]{gap:8px;display:grid}.run-row[data-v-e4940116]{background:#ffffff61;border:1px solid #ffffffb3;border-radius:17px;flex-wrap:wrap;align-items:center;gap:8px 13px;padding:12px 15px;font-size:13px;display:flex}.grow[data-v-e4940116]{flex:220px;min-width:0}@media (width<=700px){.life-intro[data-v-e4940116]{min-height:155px;padding:24px}.life-mark[data-v-e4940116]{width:74px;margin-right:-8px}.life-intro h1[data-v-e4940116]{font-size:26px}.chapter[data-v-e4940116]{border-radius:24px}}@media (prefers-reduced-motion:reduce){.life-mark[data-v-e4940116]{animation:none}.chapter[data-v-e4940116],.book-card[data-v-e4940116]{transition:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,B as t,H as n,K as r,L as i,T as a,U as o,V as s,W as c,Y as l,_ as u,_t as d,b as f,dt as p,gt as m,ht as h,i as g,it as _,k as v,lt as y,mt as b,n as x,o as S,q as C,rt as w,s as T,t as E,v as D,vt as O,yt as k}from"./Empty-CpP5kQHH.js";import{I as A,N as j,O as M,_ as N,a as P,d as F,j as I,k as L,m as R,n as z,t as B,v as V,y as H}from"./index-BheRW-1t.js";var U={key:0,class:`book`},ee=[`aria-label`],te=[`data-day`,`aria-current`,`onClick`],W={class:`eyebrow`},G=[`aria-label`],K={class:`ink`},q={key:0,class:`row`},J=[`onClick`],Y={key:1},X=[`disabled`,`aria-label`],Z=[`disabled`],Q=[`disabled`,`aria-label`],ne={key:2,class:`day-diff`},re={key:0},ie={key:1},ae={key:2},oe={key:3},se={key:4},ce={key:1,class:`muted`},le=x(l({__name:`DiaryBook`,props:{diaries:{}},setup(a){let l=a,u=b(0),f=b(null),h=b(!1),x=0,S=t(()=>l.diaries[u.value]||null);y(()=>l.diaries,e=>{u.value>=e.length&&(u.value=0)}),y(()=>S.value?.id,()=>{x++,f.value=null,h.value=!1});async function T(){if(!S.value)return;let e=S.value.day,t=++x;if(f.value?.day===S.value.day){f.value=null;return}h.value=!0;try{let n=await I.day(e);t===x&&S.value?.day===e&&(f.value=n)}catch(e){t===x&&D(e.message,!0)}finally{t===x&&(h.value=!1)}}return(t,l)=>a.diaries.length?(w(),c(`div`,U,[s(`nav`,{class:`days`,"aria-label":m(v)(`日记的日子`)},[(w(!0),c(i,null,_(a.diaries,(e,t)=>(w(),c(`button`,{key:e.id,class:d([`diary-day`,{active:t===u.value}]),"data-day":e.day,"aria-current":t===u.value?`true`:void 0,onClick:e=>u.value=t},[s(`b`,null,k(m(F)(e.day)),1),s(`small`,null,k(m(N)(e.day))+k(e.mood?` · ${e.mood}`:``),1)],10,te))),128))],8,ee),C(e,{name:`page-turn`,mode:`out-in`},{default:p(()=>[S.value?(w(),c(`article`,{key:S.value.id,class:`diary-page`},[s(`header`,null,[s(`div`,null,[s(`span`,W,k(m(v)(`日记`)),1),s(`h2`,null,[r(k(m(F)(S.value.day))+` `,1),s(`small`,null,k(m(N)(S.value.day)),1)])]),S.value.mood?(w(),c(`span`,{key:0,class:`stamp`,"aria-label":m(v)(`那天的心情`)},k(S.value.mood),9,G)):o(``,!0)]),s(`p`,K,k(S.value.content),1),S.value.actions?.length?(w(),c(`div`,q,[(w(!0),c(i,null,_(S.value.actions,e=>(w(),c(`button`,{key:e.ref,class:`text-button`,onClick:t=>m(g)(`time`,e.work?`works/`+e.work:`tasks`)},k(e.title)+` → `,9,J))),128))])):o(``,!0),S.value.compare?(w(),c(`blockquote`,Y,k(m(v)(`和昨天的自己比:{compare}`,{compare:S.value.compare})),1)):o(``,!0),s(`footer`,null,[s(`button`,{disabled:u.value>=a.diaries.length-1,"aria-label":m(v)(`前一天`),onClick:l[0]||=e=>u.value+=1},k(m(v)(`‹ 前一天`)),9,X),s(`button`,{class:`primary`,disabled:h.value,onClick:T},k(f.value?.day===S.value.day?m(v)(`合上那天的 TA`):m(v)(`那天的 TA`)),9,Z),s(`button`,{disabled:u.value===0,"aria-label":m(v)(`后一天`),onClick:l[1]||=e=>--u.value},k(m(v)(`后一天 ›`)),9,Q)]),f.value?.day===S.value.day?(w(),c(`section`,ne,[f.value.change?(w(),c(i,{key:0},[s(`h3`,null,k(m(v)(`那天的 TA,和前一天比`)),1),f.value.change.appeared.length?(w(),c(`p`,re,[s(`b`,null,k(m(v)(`多了:`)),1),r(k(f.value.change.appeared.map(e=>e.content).join(`;`)),1)])):o(``,!0),f.value.change.changed.length?(w(),c(`p`,ie,[s(`b`,null,k(m(v)(`变了:`)),1),r(k(f.value.change.changed.map(e=>`${e.before.content} → ${e.content}`).join(`;`)),1)])):o(``,!0),f.value.change.faded.length?(w(),c(`p`,ae,[s(`b`,null,k(m(v)(`放下了:`)),1),r(k(f.value.change.faded.map(e=>e.content).join(`;`)),1)])):o(``,!0),f.value.change.livingFor?(w(),c(`p`,oe,[s(`b`,null,k(m(v)(`正在过的:`)),1),r(k(f.value.change.livingFor.from||m(v)(`还没有`))+` → `+k(f.value.change.livingFor.to||m(v)(`还没有`)),1)])):f.value.snapshot?.livingFor?.content?(w(),c(`p`,se,[s(`b`,null,k(m(v)(`正在过的:`)),1),r(k(f.value.snapshot.livingFor.content),1)])):o(``,!0),s(`p`,null,[s(`b`,null,k(m(v)(`心情:`)),1),r(k(f.value.change.mood.before||`—`)+` → `+k(f.value.change.mood.after||`—`),1)])],64)):(w(),c(`p`,ce,k(m(v)(`这是 TA 留下快照的第一天,还没有可以对照的昨天。`)),1))])):o(``,!0)])):o(``,!0)]),_:1})])):(w(),n(E,{key:1,title:m(v)(`还没有日记`),text:m(v)(`每天睡前(或凌晨),如果这一天真的有过经历,TA 会写下来,并和昨天的自己对照。`)},null,8,[`title`,`text`]))}}),[[`__scopeId`,`data-v-c7291772`]]),ue={class:`ahead`},de={class:`ahead-head`},fe={class:`eyebrow`},pe={class:`muted`},me={key:0,class:`calendar-wrap`},he={class:`calendar card`},ge=[`aria-label`],_e=[`aria-label`],ve={class:`grid`,role:`grid`},ye={key:0,class:`blank`},be=[`aria-label`,`onClick`],xe={key:0,class:`dots`},Se=[`data-state`],Ce={class:`picked card`},we={key:0,class:`list`},Te=[`data-tone`],Ee={class:`grow`},De={class:`faint`},Oe=[`onClick`],ke={key:1,class:`muted`},Ae={key:1},je={key:0,class:`list`},Me=[`data-ahead`],Ne={class:`when`},Pe=[`data-tone`],Fe={class:`grow`},Ie={class:`faint`},Le=[`onClick`],Re=x(l({__name:`AheadCalendar`,props:{items:{},timeZone:{},today:{}},emits:[`changed`],setup(e,{emit:l}){let u=e,p=l,h=b(`calendar`),[g,y]=u.today.split(`-`).map(Number),x=b(g),S=b(y),T=b(u.today),O=t(()=>[1,2,3,4,5,6,7].map(e=>new Date(Date.UTC(2024,0,e)).toLocaleDateString(a(),{weekday:`narrow`,timeZone:`UTC`}))),A=e=>new Intl.DateTimeFormat(`en-CA`,{timeZone:u.timeZone,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(e),M=t(()=>{let e=new Map;for(let t of u.items){let n=A(t.occurrence);e.set(n,[...e.get(n)||[],t])}return e}),N=t(()=>{let e=(new Date(Date.UTC(x.value,S.value-1,1)).getUTCDay()+6)%7,t=new Date(Date.UTC(x.value,S.value,0)).getUTCDate(),n=Array(e).fill(null);for(let e=1;e<=t;e++){let t=`${x.value}-${String(S.value).padStart(2,`0`)}-${String(e).padStart(2,`0`)}`;n.push({day:t,n:e,items:M.value.get(t)||[]})}return n}),P=t(()=>M.value.get(T.value)||[]),F=t(()=>{let e=u.items.filter(e=>e.state===`pending`).sort((e,t)=>e.occurrence-t.occurrence),t=u.items.filter(e=>e.state!==`pending`).sort((e,t)=>t.occurrence-e.occurrence);return[...e,...t]});function L(e){let t=S.value+e;x.value+=Math.floor((t-1)/12),S.value=(t-1+120)%12+1}async function R(e){let t=await f(v(`撤销「{content}」?TA 不再惦记这件事,之后整理记忆时也不会把它写回来。可以写下原因(可不填):`,{content:e.content}),{title:v(`撤销这个约定`),confirmText:v(`撤销`),danger:!0,placeholder:v(`原因`)});if(t!==null)try{await I.revoke(`anticipation`,e.id,t),D(v(`已撤销`)),p(`changed`)}catch(e){D(e.message,!0)}}function B(e){if([`missed`,`lapsed`,`revoked`].includes(e.state))return`danger`;if(e.state!==`pending`)return`quiet`}return(t,a)=>(w(),c(`section`,ue,[s(`div`,de,[s(`div`,null,[s(`span`,fe,k(m(v)(`AHEAD · 向前看`)),1),s(`h2`,null,k(m(v)(`让未来有值得期待的事。`)),1),s(`p`,pe,k(m(v)(`约定、想做的事与每年都会回来的日子,都安静地留在这里。`)),1)]),C(z,{modelValue:h.value,"onUpdate:modelValue":a[0]||=e=>h.value=e,label:m(v)(`约定的视图`),items:[{key:`calendar`,label:m(v)(`日历`)},{key:`list`,label:m(v)(`清单`),count:e.items.length}]},null,8,[`modelValue`,`label`,`items`])]),h.value===`calendar`?(w(),c(`div`,me,[s(`div`,he,[s(`header`,null,[s(`button`,{class:`icon-button ghost`,"aria-label":m(v)(`上个月`),onClick:a[1]||=e=>L(-1)},` ‹ `,8,ge),s(`b`,null,k(m(v)(`{year} 年 {month} 月`,{year:x.value,month:S.value})),1),s(`button`,{class:`icon-button ghost`,"aria-label":m(v)(`下个月`),onClick:a[2]||=e=>L(1)},` › `,8,_e)]),s(`div`,ve,[(w(!0),c(i,null,_(O.value,(e,t)=>(w(),c(`span`,{key:t,class:`wd`},k(e),1))),128)),(w(!0),c(i,null,_(N.value,(t,n)=>(w(),c(i,{key:n},[t?(w(),c(`button`,{key:1,class:d([`cell`,{today:t.day===e.today,picked:t.day===T.value,has:t.items.length}]),"aria-label":m(v)(`{n} 日{v}`,{n:t.n,v:t.items.length?m(v)(`,{length} 件事`,{length:t.items.length}):``}),onClick:e=>T.value=t.day},[r(k(t.n)+` `,1),t.items.length?(w(),c(`i`,xe,[(w(!0),c(i,null,_(t.items.slice(0,3),e=>(w(),c(`em`,{key:e.id,"data-state":e.state},null,8,Se))),128))])):o(``,!0)],10,be)):(w(),c(`span`,ye))],64))),128))])]),s(`div`,Ce,[s(`h3`,null,k(m(v)(`{month} 月 {date} 日`,{month:Number(T.value.slice(5,7)),date:Number(T.value.slice(8,10))})),1),P.value.length?(w(),c(`ul`,we,[(w(!0),c(i,null,_(P.value,e=>(w(),c(`li`,{key:e.id,class:d([`ahead-item`,{closed:e.state!==`pending`}])},[s(`span`,{class:`chip`,"data-tone":B(e)},k(m(H)[e.state]||e.state),9,Te),s(`div`,Ee,[s(`p`,null,k(e.name?`${e.name}:`:``)+k(e.content),1),s(`small`,De,k(m(V)[e.kind]||e.kind)+` · `+k(e.when)+k(e.recurrence===`yearly`?m(v)(` · 每年`):``),1)]),e.state===`revoked`?o(``,!0):(w(),c(`button`,{key:0,class:`text-button`,onClick:t=>R(e)},k(m(v)(`撤销`)),9,Oe))],2))),128))])):(w(),c(`p`,ke,k(m(v)(`这一天没有 TA 在等的事。`)),1))])])):(w(),c(`div`,Ae,[F.value.length?(w(),c(`ul`,je,[(w(!0),c(i,null,_(F.value,t=>(w(),c(`li`,{key:t.id,class:d([`ahead-item card flat`,{closed:t.state!==`pending`}]),"data-ahead":t.id},[s(`time`,Ne,k(m(j)(t.occurrence,e.timeZone).slice(0,5)),1),s(`span`,{class:`chip`,"data-tone":B(t)},k(m(H)[t.state]||t.state),9,Pe),s(`div`,Fe,[s(`p`,null,k(t.name?`${t.name}:`:``)+k(t.content),1),s(`small`,Ie,k(m(V)[t.kind]||t.kind)+` · `+k(t.when)+k(t.recurrence===`yearly`?m(v)(` · 每年`):``)+k(t.private?m(v)(` · 私下知道的`):``)+k(t.closed_note?` · ${t.closed_note}`:``),1)]),t.state===`revoked`?o(``,!0):(w(),c(`button`,{key:0,class:`text-button`,onClick:e=>R(t)},k(m(v)(`撤销`)),9,Le))],10,Me))),128))])):(w(),n(E,{key:1,title:m(v)(`还没有 TA 在等的事`),text:m(v)(`有人说起之后的安排、TA 答应了别人什么,整理记忆时会记下来。`)},null,8,[`title`,`text`]))]))]))}}),[[`__scopeId`,`data-v-0abd3715`]]),ze={class:`page life`},Be={class:`life-intro`},Ve={class:`eyebrow`},He={class:`life-bar`},Ue={key:0,class:`chip`,"data-tone":`quiet`},We={key:1,class:`card reviews`},Ge={class:`card-head`},Ke={class:`eyebrow`},qe={class:`faint`},Je={class:`review-text`},Ye={key:0},Xe={key:2,class:`story`},Ze={key:0,class:`chapter preface`},Qe={class:`eyebrow`},$e={key:1,class:`versions`},et={class:`eyebrow`},tt=[`onClick`],$={key:1,class:`versions`},nt={key:4,class:`shelf`},rt={class:`muted shelf-note`},it={key:0,class:`books`},at={class:`faint`},ot={class:`card creations`},st={class:`faint`},ct={style:{"white-space":`pre-wrap`}},lt={class:`card runs`},ut={class:`eyebrow`},dt={key:0,class:`list run-list`},ft={class:`faint`},pt=[`data-tone`],mt={class:`grow`},ht={class:`faint`},gt={key:1,class:`muted`},_t=x(l({__name:`LifePage`,setup(e){let a=[`diary`,`reviews`,`story`,`ahead`,`shelf`],l=h(u(`/mind/life?q=`)||null),d=b(a.includes(T.sub)?T.sub:`diary`),f=b({}),x=b(null),D=t(()=>A.data?.clock?.timeZone||`Asia/Shanghai`),N=t(()=>A.data?.clock?.local?.slice(0,10)||new Date().toISOString().slice(0,10)),F=0;async function V(){let e=++F,t=await I.life();e===F&&(l.value=t)}async function H(e){if(f.value[e]){let{[e]:t,...n}=f.value;f.value=n;return}f.value={...f.value,[e]:await I.chapter(e)}}async function U(){x.value=x.value?null:await I.story()}return y(d,e=>{T.page===`life`&&S(e===`diary`?``:e)}),y(()=>[T.page,T.sub],([e,t])=>{e===`life`&&(d.value=a.includes(t)?t:`diary`)}),P(`life`,V),(e,t)=>(w(),c(`div`,ze,[s(`header`,Be,[s(`div`,null,[s(`span`,Ve,k(m(v)(`LIFE · 一生`)),1),s(`h1`,null,[r(k(m(v)(`日子经过,`)),1),s(`em`,null,k(m(v)(`留下自己的形状。`)),1)]),s(`p`,null,k(m(v)(`写下今天,回望从前,也给明天留一点期待。`)),1)]),t[4]||=s(`div`,{class:`life-mark`,"aria-hidden":`true`},[s(`span`)],-1)]),s(`div`,He,[s(`button`,{class:`text-button`,onClick:t[0]||=e=>m(g)(`time`)},k(m(v)(`时间、任务与作品 →`)),1),C(z,{modelValue:d.value,"onUpdate:modelValue":t[1]||=e=>d.value=e,label:m(v)(`一生的分区`),items:[{key:`diary`,label:m(v)(`日记本`),count:l.value?.diaries.length??``},{key:`reviews`,label:m(v)(`回顾`),count:l.value?.reviews.length??``},{key:`story`,label:m(v)(`我的来路`),count:l.value?l.value.chapters.length:``},{key:`ahead`,label:m(v)(`约定与期待`),count:l.value?.anticipations.filter(e=>e.state===`pending`).length??``},{key:`shelf`,label:m(v)(`书架`),count:l.value?.readings.length??``}]},null,8,[`modelValue`,`label`,`items`]),l.value?(w(),c(`span`,Ue,k(m(v)(`来到这里的第 {dayOfLife} 天`,{dayOfLife:l.value.dayOfLife})),1)):o(``,!0)]),l.value?(w(),c(i,{key:0},[d.value===`diary`?(w(),n(le,{key:0,diaries:l.value.diaries},null,8,[`diaries`])):d.value===`reviews`?(w(),c(`section`,We,[s(`div`,Ge,[s(`div`,null,[s(`span`,Ke,k(m(v)(`回顾`)),1),s(`h2`,null,k(m(v)(`TA 的回顾`)),1),s(`p`,null,k(m(v)(`每隔一段时间,TA 在夜里重新看看这段日子:留下了什么、自己怎样在变。`)),1)])]),l.value.reviews.length?(w(),n(B,{key:0,items:l.value.reviews,label:m(v)(`回顾`)},{default:p(({item:e})=>[s(`time`,qe,k(m(j)(e.created,D.value)),1),s(`p`,Je,k(e.content),1),e.compare?(w(),c(`blockquote`,Ye,k(m(v)(`和上次回顾比:{compare}`,{compare:e.compare})),1)):o(``,!0)]),_:1},8,[`items`,`label`])):(w(),n(E,{key:1,title:m(v)(`还没有回顾过`),text:m(v)(`日记攒到两篇以后,TA 会在睡着的时候第一次回顾。`)},null,8,[`title`,`text`]))])):d.value===`story`?(w(),c(`section`,Xe,[l.value.story?(w(),c(`article`,Ze,[s(`span`,Qe,k(m(v)(`前言`)),1),s(`h2`,null,k(m(v)(`我的来路 · 第 {dayOfLife} 天`,{dayOfLife:l.value.dayOfLife})),1),s(`p`,null,k(l.value.story.content),1),l.value.storyVersions>1?(w(),c(`button`,{key:0,class:`text-button`,onClick:U},k(x.value?m(v)(`收起旧版本`):m(v)(`重写过 {v} 次`,{v:l.value.storyVersions-1})),1)):o(``,!0),x.value?(w(),c(`ol`,$e,[(w(!0),c(i,null,_(x.value.slice(1),e=>(w(),c(`li`,{key:e.id},[s(`time`,null,k(m(j)(e.created,D.value)),1),s(`span`,null,k(e.content),1)]))),128))])):o(``,!0)])):o(``,!0),(w(!0),c(i,null,_(l.value.chapters,e=>(w(),c(`article`,{key:e.id,class:`chapter`},[s(`span`,et,k(m(v)(`第 {chapter} 章`,{chapter:e.chapter})),1),s(`h2`,null,k(e.title),1),s(`p`,null,k(e.content),1),e.versions>1?(w(),c(`button`,{key:0,class:`text-button`,onClick:t=>H(e.chapter)},k(f.value[e.chapter]?m(v)(`收起旧版本`):m(v)(`重写过 {v} 次`,{v:e.versions-1})),9,tt)):o(``,!0),f.value[e.chapter]?(w(),c(`ol`,$,[(w(!0),c(i,null,_(f.value[e.chapter].slice(1),e=>(w(),c(`li`,{key:e.id},[s(`time`,null,k(m(j)(e.created,D.value)),1),s(`span`,null,k(e.title)+`:`+k(e.content),1)]))),128))])):o(``,!0)]))),128)),!l.value.story&&!l.value.chapters.length?(w(),n(E,{key:1,title:m(v)(`自传还没开始写`),text:m(v)(`有了两篇日记之后,TA 会在夜里第一次回顾,写下「我的来路」和第一章。旧的版本都会留着。`)},null,8,[`title`,`text`])):o(``,!0)])):d.value===`ahead`?(w(),n(Re,{key:3,items:l.value.anticipations,"time-zone":D.value,today:N.value,onChanged:V},null,8,[`items`,`time-zone`,`today`])):(w(),c(`section`,nt,[s(`p`,rt,[r(k(m(v)(`独处时,TA 会从共享资料里挑自己感兴趣的读,一段一段地读下去,读后的想法可以改变 TA。还有 {v} 段没读。`,{v:m(R)(l.value.unread)}))+` `,1),s(`button`,{class:`text-button`,onClick:t[2]||=e=>m(g)(`memory`,`shelf`)},k(m(v)(`去资料书架放点书`)),1)]),l.value.readings.length?(w(),c(`div`,it,[(w(!0),c(i,null,_(l.value.readings,e=>(w(),c(`article`,{key:e.id,class:`book-card`},[s(`div`,{class:`spine`,style:O({"--p":(e.ordinal+1)/Math.max(1,e.total)})},null,4),s(`div`,null,[s(`h3`,null,`《`+k(e.title)+`》`,1),s(`small`,at,k(m(v)(`第 {v} / {total} 段 · {v2}`,{v:e.ordinal+1,total:e.total,v2:m(j)(e.created,D.value)})),1),s(`p`,null,k(e.note||m(v)(`读完没说什么`)),1)])]))),128))])):(w(),n(E,{key:1,title:m(v)(`还没读过什么`),text:m(v)(`把文章放进「记忆 → 资料书架」的共享集合,TA 独处时会去读。`)},null,8,[`title`,`text`]))])),s(`details`,ot,[s(`summary`,null,k(m(v)(`独处时留下的东西 · {v}`,{v:l.value.creations?.length||0})),1),s(`button`,{class:`text-button`,onClick:t[3]||=e=>m(g)(`time`,`works`)},k(m(v)(`阅读草稿、篇章和旧版本 →`)),1),(w(!0),c(i,null,_(l.value.creations||[],e=>(w(),c(`article`,{key:e.id,class:`creation`},[s(`h3`,null,k(e.title),1),s(`small`,st,k(m(j)(e.created,D.value))+` · `+k(e.discretion===`open`?m(v)(`自己的作品`):m(v)(`留在私下`)),1),s(`p`,ct,k(e.content),1)]))),128)),l.value.creations?.length?o(``,!0):(w(),n(E,{key:0,title:m(v)(`还没有独处作品`),text:m(v)(`她会按自己留下的计划,阅读、写东西或整理想法。`)},null,8,[`title`,`text`]))]),s(`details`,lt,[s(`summary`,null,[s(`span`,ut,k(m(v)(`独处的时候`)),1),s(`b`,null,k(m(v)(`独处、日记与夜里的记录 · {length}`,{length:l.value.runs.length})),1)]),l.value.runs.length?(w(),c(`ul`,dt,[(w(!0),c(i,null,_(l.value.runs,e=>(w(),c(`li`,{key:e.id,class:`run-row`},[s(`time`,ft,k(m(j)(e.started,D.value)),1),s(`span`,{class:`chip`,"data-tone":e.status===`error`?`danger`:e.status===`written`?`ok`:`quiet`},k(m(M)[e.kind]||e.kind)+` · `+k(m(L)[e.status]||e.status),9,pt),s(`span`,mt,k(e.reason),1),s(`small`,ht,k(e.model||m(v)(`未调用模型`))+` · `+k(m(R)(e.tokens))+` Token`,1)]))),128))])):(w(),c(`p`,gt,k(m(v)(`安静本身不会留下记录;TA 真正独处、写日记或在夜里整理时才会记下。`)),1))])],64)):o(``,!0)]))}}),[[`__scopeId`,`data-v-e4940116`]]);export{_t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,H as t,I as n,K as r,L as i,P as a,T as o,U as s,V as c,W as l,Y as u,_t as d,b as f,dt as p,ft as m,gt as h,it as g,k as _,lt as v,m as ee,mt as y,n as b,nt as x,o as S,q as C,rt as w,s as T,t as te,tt as ne,v as E,vt as D,y as O,yt as k}from"./Empty-CpP5kQHH.js";import{C as A,T as j,c as M,f as N,g as P,h as re,j as ie,n as F,o as ae}from"./index-BheRW-1t.js";import{a as I,c as L,i as R,l as oe,n as se,o as z,r as B,s as ce,t as le,u as V}from"./knowledge-DG0e0uKw.js";var ue={class:`archive`},de={class:`archive-bar card`},fe={class:`scope`},pe={class:`scope`},me=[`placeholder`,`aria-label`],he=[`disabled`],ge={id:`memorySummary`,class:`card summary-card`},_e={class:`card-head`},ve={class:`eyebrow`},ye={class:`row`},be=[`disabled`,`aria-label`],xe=[`disabled`],Se={class:`row between faint`},Ce={class:`card list-card`},we={class:`tools row`},Te=[`disabled`],Ee=[`disabled`],De=[`disabled`],Oe={id:`memoryList`,class:`scroll-pane`},ke=[`aria-label`,`data-memory-select`,`checked`,`disabled`,`onChange`],Ae={class:`memory`},je={class:`content`},Me={class:`tags`},Ne=[`data-tone`],Pe={class:`chip`,"data-tone":`quiet`},Fe={key:0,class:`chip`,"data-tone":`warn`},Ie={class:`faint meta`},Le=[`data-content`,`aria-label`],Re={class:`row`},ze=[`onClick`],Be={class:`faint`},Ve=[`onClick`],He=[`onClick`],Ue={class:`row between faint foot`},We=[`placeholder`],Ge={id:`memoryUsers`},Ke=[`value`],qe={class:`primary`},H=b(u({__name:`MemoryArchive`,props:{sessionId:{}},emits:[`update:sessionId`],setup(u,{emit:ee}){let b=u,S=ee,D=y(``),N=y(``),F=y(!1),I=y(!1),R=y(20),z=y([]),V=y({summary:``,updated:null,source:`empty`}),H=y([]),U=y(!1),W=y(!1),G=0,K=e(()=>T.core?.sessions||[]),q=e({get:()=>b.sessionId,set:e=>S(`update:sessionId`,e)}),Je=e(()=>{let e=new Map;for(let t of z.value)t.subject&&e.set(String(t.subject),t.subjectName||String(t.subject));return[...e.entries()]}),J=e(()=>z.value.filter(e=>e.status!==`deleted`&&(!N.value||String(e.subject)===N.value)&&JSON.stringify(e).includes(D.value))),Y=e(()=>z.value.filter(X));function X(e){return e.session_id===b.sessionId&&!e.locked&&e.status!==`deleted`}async function Z(){if(!b.sessionId)return;let e=b.sessionId;sessionStorage.memorySession=e;let[t,n]=await Promise.all([ce(e),L(e)]);if(b.sessionId!==e)return;z.value=t,V.value=n;let r=new Set(t.filter(X).map(e=>e.id));H.value=H.value.filter(e=>r.has(e))}v(()=>b.sessionId,()=>{R.value=20,N.value=``,Z()}),v(D,()=>R.value=20),ne(()=>{Z(),G=window.setInterval(()=>{!document.hidden&&!T.dirty&&!F.value&&Z()},4e3)}),x(()=>clearInterval(G));async function Ye(e){let t=e.target,n=Object.fromEntries(new FormData(t)),r=(V.value.participants||[]).find(e=>e.name===String(n.subject||``).trim());r&&(n.subject=r.id);try{await le(n),t.reset(),F.value=!1,await Z(),E(_(`记忆已写入`))}catch(e){E(e.message,!0)}}async function Q(e,t){if(t===`revoke`){let t=await f(_(`撤销「{content}」?TA 之后不会再这样认为,整理记忆时也不会把它写回来。可以写下原因(可不填):`,{content:e.content}),{title:_(`撤销这条记忆`),confirmText:_(`撤销`),danger:!0,placeholder:_(`原因`)});if(t===null)return;try{await ie.revoke(`memory`,e.id,t)}catch(e){E(e.message,!0)}await Z();return}let n=document.querySelector(`[data-content="${e.id}"]`)?.value;await oe(e.id,t===`lock`?{locked:!e.locked}:t.startsWith(`discretion:`)?{discretion:t.slice(11)}:{status:`confirmed`,content:n}),await Z()}function Xe(e,t){let n=t.target.checked;H.value=n?[...new Set([...H.value,e])]:H.value.filter(t=>t!==e)}async function Ze(){if(H.value.length&&await O(_(`确定删除已选的 {length} 条记忆吗?`,{length:H.value.length}),{title:_(`删除记忆`),confirmText:_(`删除`),danger:!0}))try{let e=await B({session:b.sessionId,ids:H.value});H.value=[],await Z(),E(_(`已删除 {v} 条记忆`,{v:e.deleted||0}))}catch(e){E(e.message,!0)}}async function Qe(){let e=Y.value.length;if(e&&await O(_(`确定清空本会话的 {count} 条可删除记忆吗?`,{count:e}),{title:_(`清空本会话记忆`),confirmText:_(`清空`),danger:!0}))try{let e=await B({session:b.sessionId,all:!0});H.value=[],await Z(),E(_(`已删除 {v} 条记忆`,{v:e.deleted||0}))}catch(e){E(e.message,!0)}}async function $(){if(b.sessionId){U.value=!0;try{V.value=await L(b.sessionId)}catch(e){E(e.message,!0)}finally{U.value=!1}}}async function $e(){if(b.sessionId&&!W.value){W.value=!0;try{await se(b.sessionId),await $(),await Z(),E(_(`记忆已整理`))}catch(e){E(e.message,!0)}finally{W.value=!1}}}return(e,f)=>(w(),l(`section`,ue,[c(`div`,de,[c(`label`,fe,[c(`span`,null,k(h(_)(`在哪里知道的`)),1),C(M,{id:`memoryScope`,modelValue:q.value,"onUpdate:modelValue":f[0]||=e=>q.value=e,"aria-label":h(_)(`在哪里知道的`),options:h(P)(K.value,h(_)(`选择会话`))},null,8,[`modelValue`,`aria-label`,`options`])]),c(`label`,pe,[c(`span`,null,k(h(_)(`关于谁`)),1),C(M,{modelValue:N.value,"onUpdate:modelValue":f[1]||=e=>N.value=e,"aria-label":h(_)(`按人筛选`),options:[{value:``,label:h(_)(`所有人`)},...Je.value.map(([e,t])=>({value:e,label:t}))]},null,8,[`modelValue`,`aria-label`,`options`])]),m(c(`input`,{id:`memorySearch`,"onUpdate:modelValue":f[2]||=e=>D.value=e,type:`search`,placeholder:h(_)(`搜索记忆、人物或关键词`),"aria-label":h(_)(`搜索记忆`)},null,8,me),[[a,D.value]]),c(`button`,{class:`primary`,disabled:!u.sessionId,onClick:f[3]||=e=>F.value=!0},k(h(_)(`+ 手动记忆`)),9,he)]),c(`section`,ge,[c(`div`,_e,[c(`div`,null,[c(`span`,ve,k(h(_)(`最近发生了什么`)),1),c(`h2`,null,k(K.value.find(e=>e.id===u.sessionId)?h(re)(K.value.find(e=>e.id===u.sessionId)):h(_)(`记忆档案`)),1)]),c(`div`,ye,[c(`button`,{id:`refreshMemorySummary`,class:`icon-button`,disabled:U.value||!u.sessionId,"aria-label":h(_)(`刷新总结`),onClick:$},` ↻ `,8,be),c(`button`,{id:`consolidateMemory`,disabled:W.value||!u.sessionId,onClick:$e},k(W.value?h(_)(`整理中…`):h(_)(`立即整理`)),9,xe)])]),c(`p`,{"data-memory-summary":``,class:d({clamp:!I.value})},k(V.value.summary||h(_)(`请选择会话以查看最近的记忆总结。`)),3),c(`div`,Se,[c(`span`,null,k(V.value.updated?new Date(V.value.updated).toLocaleString(h(o)()):h(_)(`尚未整理`)),1),c(`button`,{class:`text-button`,onClick:f[4]||=e=>I.value=!I.value},k(I.value?h(_)(`收起`):h(_)(`展开`)),1)])]),c(`section`,Ce,[c(`div`,we,[c(`button`,{id:`selectAllMemories`,class:`small`,onClick:f[5]||=e=>H.value=Y.value.map(e=>e.id)},k(h(_)(`全选`)),1),c(`button`,{id:`clearMemorySelection`,class:`small`,disabled:!H.value.length,onClick:f[6]||=e=>H.value=[]},k(h(_)(`取消选择`)),9,Te),c(`button`,{id:`deleteSelectedMemories`,class:`small danger`,disabled:!H.value.length,onClick:Ze},k(h(_)(`删除已选 {v}`,{v:H.value.length||``})),9,Ee),c(`button`,{id:`deleteAllSessionMemories`,class:`small danger push`,disabled:!Y.value.length,onClick:Qe},k(h(_)(`清空本会话`)),9,De)]),c(`div`,Oe,[(w(!0),l(i,null,g(J.value.slice(0,R.value),e=>(w(),l(`article`,{key:e.id,class:d([`memory-row`,{superseded:e.status===`superseded`}])},[c(`input`,{type:`checkbox`,"aria-label":h(_)(`选择记忆:`)+e.content,"data-memory-select":e.id,checked:H.value.includes(e.id),disabled:!X(e),onChange:t=>Xe(e.id,t)},null,40,ke),c(`details`,Ae,[c(`summary`,null,[c(`span`,je,k(e.content),1),c(`span`,Me,[c(`span`,{class:`chip`,"data-tone":e.status===`confirmed`?void 0:`quiet`},k(h(j)[e.status]||e.status),9,Ne),c(`span`,Pe,k(h(A)[e.discretion]||h(_)(`公开`)),1),e.locked?(w(),l(`span`,Fe,k(h(_)(`已锁定`)),1)):s(``,!0)])]),c(`p`,Ie,k(h(_)(`关于 {v} · {v2} · 把握 {v3}%`,{v:e.subjectName||e.subject,v2:e.session_id===u.sessionId?h(_)(`在这里知道的`):h(_)(`别处知道的`),v3:Math.round((e.confidence??1)*100)})),1),c(`textarea`,{"data-content":e.id,"aria-label":h(_)(`编辑记忆:`)+(e.subjectName||e.subject)},k(e.content),9,Le),c(`div`,Re,[c(`button`,{class:`small`,onClick:t=>Q(e,`confirmed`)},k(h(_)(`保存修改`)),9,ze),c(`small`,Be,k(h(_)(`编辑后要点保存`)),1),C(M,{"aria-label":h(_)(`分寸:`)+e.content,"model-value":e.discretion||`open`,options:Object.entries(h(A)).map(([e,t])=>({value:e,label:t})),"onUpdate:modelValue":t=>Q(e,`discretion:`+t)},null,8,[`aria-label`,`model-value`,`options`,`onUpdate:modelValue`]),c(`button`,{class:`small`,onClick:t=>Q(e,`lock`)},k(e.locked?h(_)(`解锁`):h(_)(`锁定`)),9,Ve),c(`button`,{class:`small danger`,onClick:t=>Q(e,`revoke`)},k(h(_)(`撤销`)),9,He)])])],2))),128)),J.value.length>R.value?(w(),l(`button`,{key:0,class:`small more`,onClick:f[7]||=e=>R.value+=20},k(h(_)(`再显示 20 条`)),1)):s(``,!0),J.value.length?s(``,!0):(w(),t(te,{key:1,title:h(_)(`这里还有空白`),text:h(_)(`别人说「记住……」、聊天积累后的自动整理,或你手动添加的事会出现在这里。TA 对所有会话只有一份记忆:别处知道的事只在相关时想起,私下知道的不当众说,要 TA 保密的不离开原处。`)},null,8,[`title`,`text`]))]),c(`div`,Ue,[c(`span`,null,k(h(_)(`共 {length} 条记忆`,{length:J.value.length})),1),c(`span`,null,k(h(_)(`共享与锁定的记忆不会被批量选中`)),1)])]),C(ae,{open:F.value,title:h(_)(`手动记住一件事`),eyebrow:`REMEMBER`,width:`440px`,onClose:f[9]||=e=>F.value=!1},{default:p(()=>[c(`form`,{id:`addMemory`,class:`stack`,onSubmit:n(Ye,[`prevent`])},[c(`label`,null,[r(k(h(_)(`所属会话`))+` `,1),C(M,{id:`memorySession`,modelValue:q.value,"onUpdate:modelValue":f[8]||=e=>q.value=e,name:`session`,"aria-label":h(_)(`所属会话`),options:h(P)(K.value)},null,8,[`modelValue`,`aria-label`,`options`])]),c(`label`,null,[r(k(h(_)(`用户 ID`))+` `,1),c(`input`,{name:`subject`,required:``,list:`memoryUsers`,placeholder:h(_)(`选择昵称,或填写用户 ID`)},null,8,We)]),c(`datalist`,Ge,[(w(!0),l(i,null,g(V.value.participants||[],e=>(w(),l(`option`,{key:e.id,value:e.name},null,8,Ke))),128))]),c(`label`,null,[r(k(h(_)(`已确认的事实`)),1),f[10]||=c(`input`,{name:`content`,required:``},null,-1)]),c(`button`,qe,k(h(_)(`新增人工记忆`)),1)],32)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-332a6fd9`]]),U={class:`shelf`},W={class:`card shelf-head`},G={class:`eyebrow`},K={class:`muted`},q={class:`collection`},Je=[`aria-label`],J={class:`chip`,"data-tone":`quiet`},Y=[`disabled`,`onClick`],X={class:`grid-2`},Z={class:`card add-doc`},Ye={class:`save-bar`},Q=[`disabled`],Xe={class:`faint`},Ze={class:`row`},Qe=[`placeholder`],$={key:0,class:`muted`},$e=b(u({__name:`KnowledgeShelf`,props:{sessionId:{}},setup(e){let o=e,u=y([]),d=y([]),f=y(`shared-default`),p=y(``),b=y(``),x=y(``),S=y(null),T=y(!1),O=y(``);async function A(e){O.value=e;try{let t=await ee(`/core/knowledge/documents/${encodeURIComponent(e)}/reembed`,`POST`,{});E(_(`已重建 {chunks} 段向量`,{chunks:t.chunks}))}catch(e){E(e.message,!0)}finally{O.value=``}}async function j(){o.sessionId&&(u.value=await I(o.sessionId),u.value[0]&&!u.value.some(e=>e.id===f.value)&&(f.value=u.value[0].id),d.value=f.value?await z(f.value):[])}async function P(){T.value=!0;try{await R({collectionId:f.value,title:p.value,text:b.value,embed:!0}),p.value=``,b.value=``,await j(),E(_(`文档已切分入库`))}catch(e){E(e.message,!0)}finally{T.value=!1}}async function re(){try{S.value=await V(o.sessionId,x.value)}catch(e){E(e.message,!0)}}return v(()=>[o.sessionId,f.value],j),ne(j),(e,o)=>(w(),l(`section`,U,[c(`div`,W,[c(`div`,null,[c(`span`,G,k(h(_)(`资料书架`)),1),c(`h2`,null,k(h(_)(`给 TA 留一点可以读的东西`)),1),c(`p`,K,k(h(_)(`存放可供聊天参考的资料,和自动记录的会话记忆分开管理。共享集合里的文章,TA 独处时也会挑着读。`)),1)]),c(`label`,q,[r(k(h(_)(`文档集合`))+` `,1),C(M,{modelValue:f.value,"onUpdate:modelValue":o[0]||=e=>f.value=e,"aria-label":h(_)(`文档集合`),options:u.value.map(e=>({value:e.id,label:e.name}))},null,8,[`modelValue`,`aria-label`,`options`])])]),c(`div`,{class:`books`,"aria-label":h(_)(`资料书架,{length} 份资料`,{length:d.value.length})},[(w(!0),l(i,null,g(d.value,e=>(w(),l(`article`,{key:e.id,class:`book`,style:D({"--hue":h(N)(e.title||e.id)})},[o[4]||=c(`span`,{class:`spine`,"aria-hidden":`true`},null,-1),c(`b`,null,k(e.title),1),c(`small`,J,k(e.status),1),e.status===`ready`?(w(),l(`button`,{key:0,type:`button`,disabled:!!O.value,onClick:t=>A(e.id)},k(O.value===e.id?h(_)(`正在重建…`):h(_)(`重建向量`)),9,Y)):s(``,!0)],4))),128)),d.value.length?s(``,!0):(w(),t(te,{key:0,title:h(_)(`书架还空着`),text:h(_)(`在下面放一份资料,TA 就能在聊天里查到,独处时也可能去读。`)},null,8,[`title`,`text`]))],8,Je),c(`div`,X,[c(`details`,Z,[c(`summary`,null,k(h(_)(`+ 添加一份资料`)),1),c(`form`,{class:`stack tight`,onSubmit:n(P,[`prevent`])},[c(`label`,null,[r(k(h(_)(`标题`)),1),m(c(`input`,{"onUpdate:modelValue":o[1]||=e=>p.value=e,required:``},null,512),[[a,p.value]])]),c(`label`,null,[r(k(h(_)(`粘贴正文`)),1),m(c(`textarea`,{"onUpdate:modelValue":o[2]||=e=>b.value=e,rows:`8`,required:``},null,512),[[a,b.value]])]),c(`div`,Ye,[c(`button`,{class:`primary`,disabled:T.value},k(h(_)(`保存到书架`)),9,Q),c(`small`,Xe,k(h(_)(`保存之后,TA 才能在聊天和独处时读到`)),1)])],32)]),c(`form`,{class:`card probe`,onSubmit:n(re,[`prevent`])},[c(`label`,null,[r(k(h(_)(`检索测试`))+` `,1),c(`div`,Ze,[m(c(`input`,{"onUpdate:modelValue":o[3]||=e=>x.value=e,placeholder:h(_)(`试着搜索一个关键词`)},null,8,Qe),[[a,x.value]]),c(`button`,null,k(h(_)(`检索`)),1)])]),S.value&&!S.value.length?(w(),l(`p`,$,k(h(_)(`没有找到相关资料。`)),1)):s(``,!0),(w(!0),l(i,null,g(S.value||[],e=>(w(),l(`p`,{key:e.id,class:`notice`},[c(`b`,null,k(e.title),1),o[5]||=c(`br`,null,null,-1),r(k(e.text),1)]))),128))],32)])]))}}),[[`__scopeId`,`data-v-e968765b`]]),et={class:`page memory-page`},tt={class:`memory-intro`},nt={class:`eyebrow`},rt={key:0,class:`notice`},it=b(u({__name:`MemoryPage`,setup(n){let i=e(()=>T.core?.sessions||[]),a=sessionStorage.memorySession,o=y(i.value.some(e=>e.id===a)?a:i.value[0]?.id||``),u=y(T.sub===`shelf`?`shelf`:`memories`);return v(u,e=>S(e===`shelf`?`shelf`:``)),v(()=>T.sub,e=>{u.value=e===`shelf`?`shelf`:`memories`}),(e,n)=>(w(),l(`div`,et,[c(`header`,tt,[c(`div`,null,[c(`span`,nt,k(h(_)(`MEMORY · 记忆`)),1),c(`h1`,null,[r(k(h(_)(`见过的人与事,`)),1),c(`em`,null,k(h(_)(`会慢慢有了重量。`)),1)]),c(`p`,null,k(h(_)(`记住重要的,也允许改变看法。`)),1)]),n[2]||=c(`div`,{class:`memory-drop`,"aria-hidden":`true`},[c(`span`)],-1)]),C(F,{modelValue:u.value,"onUpdate:modelValue":n[0]||=e=>u.value=e,label:h(_)(`记忆的分区`),items:[{key:`memories`,label:h(_)(`TA 记得的事`)},{key:`shelf`,label:h(_)(`资料书架`)}]},null,8,[`modelValue`,`label`,`items`]),i.value.length?s(``,!0):(w(),l(`p`,rt,k(h(_)(`先在「对话」里添加一个会话,TA 才有地方认识人、记住事。`)),1)),u.value===`memories`?(w(),t(H,{key:1,"session-id":o.value,"onUpdate:sessionId":n[1]||=e=>o.value=e},null,8,[`session-id`])):(w(),t($e,{key:2,"session-id":o.value},null,8,[`session-id`]))]))}}),[[`__scopeId`,`data-v-11432402`]]);export{it as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.archive[data-v-332a6fd9]{gap:18px;display:grid}.archive-bar[data-v-332a6fd9],.summary-card[data-v-332a6fd9],.list-card[data-v-332a6fd9]{-webkit-backdrop-filter:blur(28px)saturate(1.65);backdrop-filter:blur(28px)saturate(1.65);background:linear-gradient(145deg,#ffffffc7,#ffffff4f);border:1px solid #ffffffd6;box-shadow:inset 0 2px 1px #fff,0 27px 56px -40px #3d5ea373}.archive-bar[data-v-332a6fd9]{border-radius:26px;flex-wrap:wrap;align-items:end;gap:12px 16px;padding:20px 22px;display:flex}.scope[data-v-332a6fd9]{min-width:min(100%,150px);color:var(--ink-soft);flex:0 190px;gap:6px;font-size:12px;font-weight:650;display:grid}.scope span[data-v-332a6fd9]{white-space:nowrap}.scope select[data-v-332a6fd9]{border-radius:15px;width:100%;min-width:0}#memorySearch[data-v-332a6fd9]{border-radius:16px;flex:210px;min-width:0}.archive-bar>button[data-v-332a6fd9]{border-radius:16px;align-self:end;min-height:41px}.summary-card[data-v-332a6fd9]{isolation:isolate;border-radius:30px;padding:clamp(22px,3.5vw,38px);position:relative;overflow:hidden}.summary-card[data-v-332a6fd9]:before{content:"";z-index:-1;background:radial-gradient(circle at 25% 20%, white, transparent 30%), linear-gradient(145deg, color-mix(in srgb, var(--orb-a) 52%, transparent), color-mix(in srgb, var(--glow-b) 30%, transparent));pointer-events:none;border:1px solid #ffffffa6;border-radius:59% 41% 54% 46%;width:260px;height:260px;position:absolute;top:-95px;right:-55px;transform:rotate(-18deg);box-shadow:inset 12px 10px 26px #ffffff7a}.summary-card .card-head[data-v-332a6fd9]{align-items:center}.summary-card h2[data-v-332a6fd9]{font:730 clamp(21px, 2.6vw, 29px)/1.3 var(--font-display);letter-spacing:-.025em;margin-top:6px}.summary-card .row button[data-v-332a6fd9]{border-radius:999px}.summary-card p[data-memory-summary][data-v-332a6fd9]{z-index:1;white-space:pre-wrap;overflow-wrap:anywhere;max-width:85ch;margin:18px 0;font-size:15px;line-height:1.9;position:relative}.summary-card p[data-memory-summary].clamp[data-v-332a6fd9]{white-space:pre-wrap;max-height:7.6em;display:block;overflow:hidden}.summary-card .between[data-v-332a6fd9]{z-index:1;border-top:1px solid #ffffffb3;padding-top:13px;position:relative}.list-card[data-v-332a6fd9]{border-radius:30px;gap:16px;padding:clamp(18px,2.5vw,28px);display:grid}.tools[data-v-332a6fd9]{border-bottom:1px solid #ffffffc2;flex-wrap:wrap;gap:8px;padding-bottom:15px;display:flex}.tools button[data-v-332a6fd9]{border-radius:999px}.tools .push[data-v-332a6fd9]{margin-left:auto}#memoryList[data-v-332a6fd9]{align-content:start;gap:9px;max-height:none;display:grid;overflow:visible}.memory-row[data-v-332a6fd9]{min-width:0;transition:transform .47s var(--spring), box-shadow .35s, background .35s;background:linear-gradient(140deg,#ffffff8f,#ffffff3b);border:1px solid #ffffffc7;border-radius:20px;align-items:flex-start;gap:13px;padding:16px 18px;display:flex;box-shadow:inset 0 1px #ffffffc7}.memory-row[data-v-332a6fd9]:hover{background:#ffffff9e;transform:translateY(-3px);box-shadow:inset 0 1px #fff,0 17px 30px -24px #3d5ea380}.memory-row[data-v-332a6fd9]:has(input:checked){border-color:color-mix(in srgb, var(--accent) 35%, white);background:color-mix(in srgb, var(--accent-soft) 24%, white)}.memory-row>input[data-v-332a6fd9]{flex:none;margin-top:3px}.memory-row.superseded[data-v-332a6fd9]{opacity:.64}.memory[data-v-332a6fd9]{flex:1;min-width:0}.memory summary[data-v-332a6fd9]{cursor:pointer;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 14px;display:flex}.memory summary[data-v-332a6fd9]::marker{color:var(--accent)}.memory summary .content[data-v-332a6fd9]{overflow-wrap:anywhere;flex:280px;min-width:0;font-size:14px;font-weight:640;line-height:1.65}.tags[data-v-332a6fd9]{flex-wrap:wrap;gap:5px;display:flex}.tags .chip[data-v-332a6fd9]{background:#ffffff6b;border:1px solid #ffffffbf}.memory[open] summary[data-v-332a6fd9]{margin-bottom:13px}.meta[data-v-332a6fd9]{margin-bottom:10px;font-size:12px}.memory textarea[data-v-332a6fd9]{border-radius:15px;min-height:95px;margin-bottom:10px;padding:13px 15px;line-height:1.7}.memory .row[data-v-332a6fd9]{gap:7px}.memory .row button[data-v-332a6fd9],.discretion[data-v-332a6fd9]{border-radius:999px}.discretion[data-v-332a6fd9]{width:auto;min-width:110px;padding:7px 11px;font-size:12.5px}.more[data-v-332a6fd9]{border-radius:999px;justify-self:center}.foot[data-v-332a6fd9]{font-size:12px}@media (width<=650px){.archive-bar[data-v-332a6fd9]{align-items:stretch}.scope[data-v-332a6fd9]{flex:140px}#memorySearch[data-v-332a6fd9]{flex-basis:100%}.archive-bar>button[data-v-332a6fd9]{width:100%}.tools .push[data-v-332a6fd9]{margin-left:0}.memory-row[data-v-332a6fd9]{padding:13px}}@media (prefers-reduced-motion:reduce){.memory-row[data-v-332a6fd9]{transition:none}}.shelf[data-v-e968765b]{gap:18px;display:grid}.shelf-head[data-v-e968765b],.books[data-v-e968765b],.add-doc[data-v-e968765b],.probe[data-v-e968765b]{-webkit-backdrop-filter:blur(28px)saturate(1.6);backdrop-filter:blur(28px)saturate(1.6);background:linear-gradient(145deg,#ffffffc2,#ffffff45);border:1px solid #ffffffd1;box-shadow:inset 0 2px 1px #fff,0 25px 52px -38px #3d5ea36b}.shelf-head[data-v-e968765b]{border-radius:28px;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:18px 25px;padding:clamp(22px,3vw,34px);display:flex}.shelf-head h2[data-v-e968765b]{font:730 clamp(21px, 2.7vw, 30px)/1.3 var(--font-display);letter-spacing:-.03em;margin:7px 0 5px}.shelf-head p[data-v-e968765b]{max-width:64ch;font-size:13px;line-height:1.75}.collection[data-v-e968765b]{color:var(--ink-soft);gap:6px;font-size:12px;font-weight:650;display:grid}.collection select[data-v-e968765b]{border-radius:15px;min-width:190px}.books[data-v-e968765b]{border-radius:30px;grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));gap:14px;min-height:160px;padding:22px;display:grid}.books>.empty[data-v-e968765b]{grid-column:1/-1}.book[data-v-e968765b]{isolation:isolate;background:radial-gradient(ellipse at 88% 8%, hsl(var(--hue) 80% 89% / .55), transparent 65%), linear-gradient(145deg, #ffffffbd, #ffffff4d);-webkit-backdrop-filter:blur(18px)saturate(1.6);backdrop-filter:blur(18px)saturate(1.6);min-width:0;min-height:153px;transition:transform .55s var(--spring), box-shadow .35s, border-color .35s;animation:book-arrive-e968765b .6s var(--spring) both;border:1px solid #ffffffd6;border-radius:23px;align-content:space-between;gap:14px;padding:19px;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 1px #fff,0 16px 25px -22px #3d5ea370}.book[data-v-e968765b]:nth-child(2n){animation-delay:50ms}.book[data-v-e968765b]:nth-child(3n){animation-delay:.1s}.book[data-v-e968765b]:hover{border-color:#fff;transform:translateY(-7px)rotate(-1.5deg)scale(1.02);box-shadow:inset 0 2px #fff,0 30px 38px -25px #3d5ea373}.book[data-v-e968765b]:before{content:"";z-index:-1;background:radial-gradient(circle at 26% 18%, white, transparent 35%), hsl(var(--hue) 76% 85% / .38);width:90px;height:90px;transition:transform .7s var(--spring);border:1px solid #ffffffd9;border-radius:59% 41% 54% 46%;position:absolute;top:-25px;right:-28px;transform:rotate(-18deg);box-shadow:inset 0 2px 5px #ffffffb3}.book[data-v-e968765b]:hover:before{transform:rotate(28deg)translate(-5px,9px)}.spine[data-v-e968765b]{background:hsl(var(--hue) 70% 66%);width:35px;height:4px;box-shadow:0 2px 8px hsl(var(--hue) 70% 66% / .45);border-radius:999px}.book b[data-v-e968765b]{overflow-wrap:anywhere;font-size:15px;line-height:1.45}.book .chip[data-v-e968765b]{background:#ffffff75;border:1px solid #fffc;justify-self:start}.grid-2[data-v-e968765b]{align-items:start;gap:18px}.add-doc[data-v-e968765b],.probe[data-v-e968765b]{border-radius:26px;padding:23px}.add-doc summary[data-v-e968765b]{cursor:pointer;font-size:16px;font-weight:720}.add-doc summary[data-v-e968765b]::marker{color:var(--accent)}.add-doc[open] summary[data-v-e968765b]{margin-bottom:16px}.add-doc textarea[data-v-e968765b]{resize:vertical;min-height:160px;line-height:1.7}.probe label[data-v-e968765b]{font-size:15px;font-weight:680}.probe .row[data-v-e968765b]{margin-top:11px}.probe .row input[data-v-e968765b]{flex:160px;min-width:0}.probe .notice[data-v-e968765b]{overflow-wrap:anywhere;background:#ffffff73;border:1px solid #ffffffb8;border-radius:17px;margin-top:12px;padding:14px;line-height:1.6}@keyframes book-arrive-e968765b{0%{opacity:0;transform:translateY(14px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=780px){.grid-2[data-v-e968765b]{grid-template-columns:minmax(0,1fr)}}@media (width<=560px){.books[data-v-e968765b]{padding:15px}.book[data-v-e968765b]{min-height:130px}}@media (prefers-reduced-motion:reduce){.book[data-v-e968765b]{transition:none;animation:none}.book[data-v-e968765b]:before{transition:none}}.memory-page[data-v-11432402]{gap:22px;display:grid}.memory-page>.tabs[data-v-11432402]{justify-self:start}.memory-intro[data-v-11432402]{isolation:isolate;background:radial-gradient(ellipse at 72% 24%, color-mix(in srgb, var(--glow-b) 42%, transparent), transparent 40%), radial-gradient(ellipse at 4% 100%, color-mix(in srgb, var(--glow-a) 47%, transparent), transparent 56%), linear-gradient(130deg, #ffffffc7, #ffffff40);-webkit-backdrop-filter:blur(28px)saturate(1.65);backdrop-filter:blur(28px)saturate(1.65);border:1px solid #ffffffdb;border-radius:38px;justify-content:space-between;align-items:center;min-height:180px;padding:clamp(24px,4vw,48px);display:flex;position:relative;overflow:hidden;box-shadow:inset 0 2px 1px #fff,0 30px 70px -48px #3d5ea380}.memory-intro[data-v-11432402]:after{content:"";pointer-events:none;border:1px solid #ffffffde;border-radius:50%;width:450px;height:320px;position:absolute;bottom:-240px;right:-160px}.memory-intro h1[data-v-11432402]{font:760 clamp(26px, 3.6vw, 43px)/1.25 var(--font-display);letter-spacing:-.045em;margin:12px 0 8px}.memory-intro h1 em[data-v-11432402]{background:linear-gradient(95deg, var(--accent), var(--orb-c), var(--cheek));color:#0000;-webkit-background-clip:text;background-clip:text;font-style:normal}.memory-intro p[data-v-11432402]{color:var(--ink-soft);font-size:14px}.memory-drop[data-v-11432402]{aspect-ratio:1;background:radial-gradient(circle at 31% 19%, white, transparent 27%), linear-gradient(145deg, var(--orb-a), var(--glow-b), var(--orb-b));border:1px solid #ffffffe6;border-radius:59% 41% 56% 44%/37% 47% 53% 63%;flex:none;width:clamp(88px,14vw,150px);animation:8s ease-in-out infinite memory-sway-11432402;position:relative;transform:rotate(-12deg);box-shadow:inset 10px 12px 20px #ffffffb3,inset -10px -12px 20px #4568b229,0 19px 29px -14px #4c71b257}.memory-drop[data-v-11432402]:before,.memory-drop[data-v-11432402]:after,.memory-drop span[data-v-11432402]{content:"";-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff5e;border:1px solid #ffffffd6;border-radius:50%;position:absolute}.memory-drop[data-v-11432402]:before{aspect-ratio:1;width:28%;top:15%;left:-20%}.memory-drop[data-v-11432402]:after{aspect-ratio:1;width:16%;bottom:-1%;right:-12%}.memory-drop span[data-v-11432402]{aspect-ratio:1;width:33%;top:10%;right:15%}@keyframes memory-sway-11432402{0%,to{transform:translateY(0)rotate(-12deg)}50%{transform:translateY(-10px)rotate(1deg)}}@media (width<=700px){.memory-intro[data-v-11432402]{min-height:155px;padding:24px}.memory-drop[data-v-11432402]{width:74px;margin-right:-8px}.memory-intro h1[data-v-11432402]{font-size:26px}}@media (prefers-reduced-motion:reduce){.memory-drop[data-v-11432402]{animation:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.rhythm[data-v-7b572e49]{touch-action:none;background:radial-gradient(circle at 25% 20%, #ffffffe6, transparent 37%), color-mix(in srgb, var(--glow-b) 15%, #fff6);width:220px;max-width:100%;box-shadow:inset 0 1px 0 white, 0 16px 32px -24px color-mix(in srgb, var(--accent) 50%, transparent);-webkit-backdrop-filter:blur(18px)saturate(1.5);backdrop-filter:blur(18px)saturate(1.5);transition:transform .55s var(--spring), box-shadow .35s;border:1px solid #fffc;border-radius:50%;padding:7px}.rhythm[data-v-7b572e49]:hover:not(.disabled){box-shadow:inset 0 1px 0 white, 0 18px 36px -19px color-mix(in srgb, var(--accent) 46%, transparent);transform:scale(1.035)rotate(-1deg)}.rhythm.disabled[data-v-7b572e49]{opacity:.45;pointer-events:none}svg[data-v-7b572e49]{width:100%;height:auto}.glass-center[data-v-7b572e49]{fill:url(#clock-center);stroke:#ffffffbf;stroke-width:1px}.track[data-v-7b572e49]{fill:none;stroke:#ffffffa6;stroke-width:20px}.awake[data-v-7b572e49]{fill:none;stroke:url(#clock-awake);stroke-width:16px;stroke-linecap:round;filter:drop-shadow(0 2px 3px #d9936c2e)}.asleep[data-v-7b572e49]{fill:none;stroke:url(#clock-asleep);stroke-width:16px;stroke-linecap:round;filter:drop-shadow(0 2px 3px #6471cc2b)}.ticks text[data-v-7b572e49]{fill:var(--ink-soft);font-size:11px}.center[data-v-7b572e49]{fill:var(--ink-soft);font-size:12px}.center.big[data-v-7b572e49]{fill:var(--ink);font:700 15px var(--font-display)}.handle[data-v-7b572e49]{cursor:grab;outline:none}.handle circle[data-v-7b572e49]{fill:#ffffffe0;stroke:#9baeed;stroke-width:2px;filter:drop-shadow(0 3px 4px #495ea83d);transition:r .28s var(--spring)}.handle.sun circle[data-v-7b572e49]{stroke:#efbe8a}.handle text[data-v-7b572e49]{fill:#4b54b3;pointer-events:none;font-size:15px}.handle.sun text[data-v-7b572e49]{fill:#e0892a}.handle:hover circle[data-v-7b572e49]{r:18}.handle:focus-visible circle[data-v-7b572e49]{stroke-width:5px}.nature[data-v-9b449c5e]{gap:var(--gap);display:grid}.lived-persona[data-v-9b449c5e]{-webkit-backdrop-filter:blur(24px)saturate(1.3);backdrop-filter:blur(24px)saturate(1.3);background:linear-gradient(135deg,#ffffffc9,#dcefff7d 52%,#f7e0f794);border:1px solid #eff4fb;border-radius:30px;padding:clamp(1.2rem,2.2vw,2rem);box-shadow:0 18px 48px #4d69a01f,inset 0 1px #ffffffe6}.lived-persona-head h2[data-v-9b449c5e]{color:#385783;margin:.3rem 0}.lived-persona-head p[data-v-9b449c5e]{color:#6980a0;margin:0 0 1.25rem}.lived-persona-grid[data-v-9b449c5e]{grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem;display:grid}.lived-trait[data-v-9b449c5e]{background:#fff9;border:1px solid #ffffffe6;border-radius:20px;grid-template-columns:1fr auto;align-items:baseline;gap:.25rem;padding:1rem;display:grid}.lived-trait strong[data-v-9b449c5e]{color:#597cbb;font-size:1.55rem}.lived-trait small[data-v-9b449c5e]{color:#7890aa;grid-column:1/-1}.lived-trait-track[data-v-9b449c5e]{background:#6385bb2b;border-radius:99px;grid-column:1/-1;height:5px;margin-top:.45rem;overflow:hidden}.lived-trait-track i[data-v-9b449c5e]{border-radius:inherit;background:linear-gradient(90deg,#75d6dc,#8aa9f1,#e9a6db);height:100%;transition:width .6s cubic-bezier(.2,.9,.3,1);display:block}.lived-persona-story[data-v-9b449c5e]{background:#ffffff8c;border-radius:22px;margin-top:1.1rem;padding:1.1rem 1.25rem}.lived-persona-story p[data-v-9b449c5e]{max-width:70ch;margin:.4rem 0 .7rem;line-height:1.7}.lived-persona-story details summary[data-v-9b449c5e]{color:#597cbb;cursor:pointer}.lived-persona-story ol[data-v-9b449c5e]{max-height:13rem;padding:0;list-style:none;overflow:auto}.lived-persona-story li[data-v-9b449c5e]{border-top:1px solid #6586b721;gap:1rem;padding:.6rem 0;display:flex}.lived-persona-story li span[data-v-9b449c5e]{flex:1}.lived-persona-story li time[data-v-9b449c5e]{white-space:nowrap;color:#7890aa;font-size:.85em}.lived-trait-history[data-v-9b449c5e]{margin-top:1rem}.lived-trait-history summary[data-v-9b449c5e]{cursor:pointer;color:#597cbb;font-weight:650}.lived-trait-history ol[data-v-9b449c5e]{max-height:15rem;margin:.75rem 0 0;padding:0;list-style:none;overflow:auto}.lived-trait-history li[data-v-9b449c5e]{border-top:1px solid #6586b721;align-items:baseline;gap:.7rem;padding:.55rem 0;display:flex}.lived-trait-history li span[data-v-9b449c5e]{flex:1}.lived-trait-history time[data-v-9b449c5e]{white-space:nowrap;color:#7890aa;font-size:.85em}@media (width<=900px){.lived-persona-grid[data-v-9b449c5e]{grid-template-columns:repeat(2,minmax(0,1fr))}}.nature-intro[data-v-9b449c5e]{isolation:isolate;background:radial-gradient(ellipse at 77% 37%, color-mix(in srgb, var(--orb-a) 76%, transparent), transparent 47%), radial-gradient(ellipse at 13% 96%, color-mix(in srgb, var(--glow-b) 33%, transparent), transparent 48%), linear-gradient(120deg, #ffffffd1, #ffffff57 62%, #ffffff94);min-height:256px;box-shadow:inset 0 2px 0 white, inset 0 -1px 0 #ffffff9e, 0 25px 60px -37px color-mix(in srgb, var(--accent) 44%, transparent);-webkit-backdrop-filter:blur(26px)saturate(1.85);backdrop-filter:blur(26px)saturate(1.85);border:1px solid #ffffffe0;border-radius:36px;grid-template-columns:minmax(0,1fr) minmax(260px,.7fr);align-items:center;gap:16px;padding:34px clamp(30px,5vw,72px);display:grid;position:relative;overflow:hidden}.nature-intro[data-v-9b449c5e]:before{content:"";z-index:-1;background:conic-gradient(from 45deg, #ffffff8f, color-mix(in srgb, var(--glow-b) 42%, transparent), #fff3, color-mix(in srgb, var(--orb-a) 45%, transparent), #ffffff8f);filter:blur(22px);border-radius:46% 54% 64% 36%;height:165%;animation:10s ease-in-out infinite alternate nature-drift-9b449c5e;position:absolute;inset:-45% -15% auto 43%}.nature-intro-copy[data-v-9b449c5e]{z-index:1;position:relative}.nature-intro h1[data-v-9b449c5e]{letter-spacing:-.065em;margin:12px 0 8px;font-size:clamp(29px,3.8vw,49px);line-height:1.13}.nature-intro h1 em[data-v-9b449c5e]{background:linear-gradient(100deg, var(--accent), var(--orb-c) 58%, color-mix(in srgb, var(--glow-b) 54%, var(--accent)));color:#0000;-webkit-background-clip:text;background-clip:text;font-style:normal}.nature-intro-copy>p[data-v-9b449c5e]{max-width:410px;color:var(--ink-soft);font-size:14px}.nature-preview-note[data-v-9b449c5e]{color:var(--ink-soft);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffff6b;border:1px solid #ffffffd9;border-radius:999px;align-items:center;gap:9px;margin-top:22px;padding:8px 13px;font-size:12px;display:inline-flex;box-shadow:inset 0 1px #fff}.nature-preview-note i[data-v-9b449c5e]{background:var(--orb-b);width:8px;height:8px;box-shadow:0 0 0 4px color-mix(in srgb, var(--orb-b) 22%, transparent);border-radius:50%;animation:2.8s ease-in-out infinite pulse-soft}.nature-intro-orb[data-v-9b449c5e]{background:radial-gradient(circle at 31% 25%, #ffffffad, transparent 28%), radial-gradient(circle, #ffffff42 38%, color-mix(in srgb, var(--orb-b) 20%, transparent) 56%, transparent 69%);width:225px;height:225px;box-shadow:inset 0 0 0 1px #ffffffa1, 0 18px 52px -28px color-mix(in srgb, var(--orb-c) 74%, transparent);border-radius:50%;justify-self:center;place-items:center;animation:5s ease-in-out infinite nature-breathe-9b449c5e;display:grid;position:relative}.nature-intro-orb[data-v-9b449c5e]:before,.nature-intro-orb[data-v-9b449c5e]:after{content:"";pointer-events:none;border:1px solid #ffffff8a;border-radius:50%;position:absolute;inset:-14px}.nature-intro-orb[data-v-9b449c5e]:after{border-color:color-mix(in srgb, var(--glow-b) 28%, transparent);inset:-30px}.nature-intro-orb[data-v-9b449c5e] .preview-orb{filter:drop-shadow(0 13px 16px color-mix(in srgb, var(--orb-c) 27%, transparent))}@keyframes nature-drift-9b449c5e{to{transform:translate(-5%,4%)rotate(16deg)scale(1.07)}}@keyframes nature-breathe-9b449c5e{50%{transform:translateY(-8px)scale(1.025)}}.greenhouse[data-v-9b449c5e]{gap:var(--gap);grid-template-columns:minmax(0,1.35fr) minmax(320px,1fr);align-items:start;display:grid}.greenhouse[data-v-9b449c5e]>*,.days[data-v-9b449c5e]>*,.side[data-v-9b449c5e],fieldset[data-v-9b449c5e]{min-width:0}.save-bar[data-v-9b449c5e]{max-width:100%}.editor[data-v-9b449c5e]{background:radial-gradient(circle at 100% 0, color-mix(in srgb, var(--glow-a) 24%, transparent), transparent 45%), var(--surface)}#natureForm[data-v-9b449c5e]{gap:18px;display:grid}.editor-head h2[data-v-9b449c5e]{font-size:21px}.editor-head p[data-v-9b449c5e]{margin-top:6px;font-size:13px}fieldset[data-v-9b449c5e]{background:linear-gradient(150deg, #ffffffa3, #ffffff3d), color-mix(in srgb, var(--surface) 70%, transparent);box-shadow:inset 0 1px 0 white, 0 11px 28px -24px var(--accent);-webkit-backdrop-filter:blur(20px)saturate(1.55);backdrop-filter:blur(20px)saturate(1.55);border:1px solid #ffffffc7;border-radius:24px;gap:12px;margin:0;padding:18px;display:grid}legend[data-v-9b449c5e]{padding:0 8px;font-size:13px;font-weight:700}.trait[data-v-9b449c5e]{transition:transform .32s var(--spring), background-color .25s;border-radius:15px;grid-template-columns:minmax(130px,.9fr) minmax(0,1.6fr) 64px;align-items:center;gap:12px;padding:9px 10px;display:grid}.trait[data-v-9b449c5e]:hover{background:#ffffff78;transform:translate(3px)}.trait-head[data-v-9b449c5e]{line-height:1.3;display:grid}.trait-head small[data-v-9b449c5e]{font-size:11.5px}.trait-number[data-v-9b449c5e]{text-align:center;border-radius:999px;padding:6px 8px}.trait input[type=range][data-v-9b449c5e]{appearance:none;background:linear-gradient(90deg, color-mix(in srgb, var(--glow-b) 43%, white), color-mix(in srgb, var(--orb-b) 58%, white));height:11px;box-shadow:inset 0 1px 3px color-mix(in srgb, var(--accent) 14%, transparent), 0 1px 0 white;border-radius:999px}.trait input[type=range][data-v-9b449c5e]::-webkit-slider-thumb{appearance:none;background:var(--accent);width:22px;height:22px;box-shadow:0 3px 10px -3px var(--accent);transition:transform .25s var(--spring);border:3px solid #fff;border-radius:50%}.trait input[type=range][data-v-9b449c5e]::-webkit-slider-thumb:hover{transform:scale(1.2)}.trait input[type=range][data-v-9b449c5e]::-moz-range-thumb{background:var(--accent);width:17px;height:17px;box-shadow:0 3px 10px -3px var(--accent);border:3px solid #fff;border-radius:50%}.rhythm-row[data-v-9b449c5e]{flex-wrap:wrap;align-items:center;gap:16px 24px;display:flex}.times[data-v-9b449c5e]{flex:160px}.versions summary[data-v-9b449c5e]{color:var(--accent);font-weight:600}.versions ol[data-v-9b449c5e]{gap:6px;margin:10px 0 0;padding:0;font-size:13px;list-style:none;display:grid}.versions li[data-v-9b449c5e]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.save-bar[data-v-9b449c5e]{z-index:2;background:var(--surface-strong);border:1px solid var(--line);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:14px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;display:flex;position:sticky;bottom:12px}.side[data-v-9b449c5e]{gap:var(--gap);display:grid;position:sticky;top:16px}.orb-card[data-v-9b449c5e]{background:radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--glow-a) 80%, transparent), transparent 62%), var(--surface);justify-items:start;gap:10px;display:grid}.orb-card h3[data-v-9b449c5e]{font-size:18px}.effects[data-v-9b449c5e]{gap:8px;width:100%;margin:0;padding:0;font-size:12.5px;list-style:none;display:grid}.effects li[data-v-9b449c5e]{background:#fff6;border:1px solid #ffffffbd;border-radius:14px;grid-template-columns:minmax(74px,auto) minmax(0,1fr);gap:10px;padding:9px 12px;display:grid;box-shadow:inset 0 1px #fff}.effects span[data-v-9b449c5e]{color:var(--ink-soft)}.chat-card[data-v-9b449c5e] .ta-chat{height:460px}.days[data-v-9b449c5e]{gap:var(--gap);grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;display:grid}.toggles[data-v-9b449c5e]{gap:12px;margin-bottom:16px;display:grid}.toggles .switch[data-v-9b449c5e]{transition:transform .33s var(--spring), background-color .2s;background:#ffffff6b;border:1px solid #ffffffc7;border-radius:18px;padding:13px 14px;box-shadow:inset 0 1px #fff}.toggles .switch[data-v-9b449c5e]:hover{background:#ffffffab;transform:translate(4px)}.toggles .switch[data-v-9b449c5e]{align-items:flex-start}.toggles .switch span[data-v-9b449c5e]{gap:2px;display:grid}.toggles small[data-v-9b449c5e]{color:var(--ink-soft);font-size:12px;font-weight:400}.budget-note[data-v-9b449c5e]{margin:12px 0}.prompts summary[data-v-9b449c5e]{gap:2px;display:grid}.prompts[open] summary[data-v-9b449c5e]{margin-bottom:14px}.mono[data-v-9b449c5e]{font-family:var(--font-mono);font-size:12.5px}@media (width<=1100px){.greenhouse[data-v-9b449c5e],.days[data-v-9b449c5e]{grid-template-columns:minmax(0,1fr)}.side[data-v-9b449c5e]{position:static}}@media (width<=760px){.nature-intro[data-v-9b449c5e]{text-align:center;grid-template-columns:minmax(0,1fr);justify-items:center;padding:26px}.nature-intro-orb[data-v-9b449c5e]{width:176px;height:176px}.trait[data-v-9b449c5e]{grid-template-columns:minmax(0,1fr) 64px}.trait-head[data-v-9b449c5e]{grid-column:1/-1}}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{B as e,D as t,G as n,I as r,K as i,L as a,M as o,P as s,U as c,V as l,W as u,X as d,Y as f,_t as p,a as m,ct as h,dt as g,ft as _,gt as v,it as y,k as b,mt as x,n as S,nt as C,p as w,pt as T,q as E,rt as D,s as O,tt as k,v as A,vt as ee,w as j,yt as M}from"./Empty-CpP5kQHH.js";import{L as te,N,P as ne,c as P,i as re,j as F,s as ie}from"./index-BheRW-1t.js";var I=[`d`],L=[`d`],R={class:`ticks`},z=[`x`,`y`],B=[`y`],V=[`y`],H=[`aria-label`,`aria-valuetext`],U=[`cx`,`cy`],W=[`x`,`y`],G=[`aria-label`,`aria-valuetext`],K=[`cx`,`cy`],q=[`x`,`y`],J=110,Y=84,ae=S(f({__name:`RhythmClock`,props:d({disabled:{type:Boolean}},{sleep:{required:!0},sleepModifiers:{},wake:{required:!0},wakeModifiers:{}}),emits:[`update:sleep`,`update:wake`],setup(t){let r=h(t,`sleep`),i=h(t,`wake`),o=x(),s=null,c=e=>{let[t,n]=String(e||`00:00`).split(`:`).map(Number);return(t*60+n)%1440},d=e=>{let t=(Math.round(e/15)*15%1440+1440)%1440;return`${String(Math.floor(t/60)).padStart(2,`0`)}:${String(t%60).padStart(2,`0`)}`},f=e=>e/1440*Math.PI*2-Math.PI/2,m=(e,t=Y)=>({x:J+Math.cos(f(e))*t,y:J+Math.sin(f(e))*t});function g(e,t){let n=(t-e+1440)%1440||1440,r=m(e),i=m(t);return`M${r.x.toFixed(2)},${r.y.toFixed(2)}A${Y},${Y} 0 ${+(n>720)} 1 ${i.x.toFixed(2)},${i.y.toFixed(2)}`}let _=e(()=>c(r.value)),S=e(()=>c(i.value)),C=e(()=>{let e=(S.value-_.value+1440)%1440,t=Math.floor(e/60),n=e%60;return n?b(`{h} 小时 {m} 分`,{h:t,m:n}):b(`{h} 小时`,{h:t})});function w(e){let t=o.value.getBoundingClientRect(),n=(e.clientX-t.left)/t.width*220-J,r=(e.clientY-t.top)/t.height*220-J,i=Math.atan2(r,n)+Math.PI/2;return d((i/(Math.PI*2)*1440%1440+1440)%1440)}function T(e,t){s=e,t.target.setPointerCapture?.(t.pointerId)}function E(e){if(!s)return;let t=w(e);t!==(s===`sleep`?i.value:r.value)&&(s===`sleep`?r.value=t:i.value=t)}function O(){s=null}function k(e,t){let n={ArrowRight:15,ArrowUp:15,ArrowLeft:-15,ArrowDown:-15,PageUp:60,PageDown:-60}[t.key];if(!n)return;t.preventDefault();let a=c(e===`sleep`?r.value:i.value),o=d(a+n);o!==(e===`sleep`?i.value:r.value)&&(e===`sleep`?r.value=o:i.value=o)}return(e,s)=>(D(),u(`div`,{class:p([`rhythm`,{disabled:t.disabled}])},[(D(),u(`svg`,{ref_key:`svg`,ref:o,viewBox:`0 0 220 220`,onPointermove:E,onPointerup:O,onPointercancel:O},[s[4]||=n(`<defs data-v-7b572e49><linearGradient id="clock-awake" x1="0" y1="0" x2="1" y2="1" data-v-7b572e49><stop offset="0" stop-color="#fff1b8" data-v-7b572e49></stop><stop offset=".48" stop-color="#ffd8b8" data-v-7b572e49></stop><stop offset="1" stop-color="#b8e8ff" data-v-7b572e49></stop></linearGradient><linearGradient id="clock-asleep" x1="0" y1="0" x2="1" y2="1" data-v-7b572e49><stop offset="0" stop-color="#a6bfff" data-v-7b572e49></stop><stop offset=".55" stop-color="#b9b5f1" data-v-7b572e49></stop><stop offset="1" stop-color="#d6c5ff" data-v-7b572e49></stop></linearGradient><radialGradient id="clock-center" data-v-7b572e49><stop offset="0" stop-color="white" stop-opacity=".82" data-v-7b572e49></stop><stop offset=".7" stop-color="white" stop-opacity=".35" data-v-7b572e49></stop><stop offset="1" stop-color="white" stop-opacity=".04" data-v-7b572e49></stop></radialGradient></defs>`,1),l(`circle`,{class:`glass-center`,cx:J,cy:J,r:`68`}),l(`circle`,{class:`track`,cx:J,cy:J,r:Y}),l(`path`,{class:`awake`,d:g(S.value,_.value)},null,8,I),l(`path`,{class:`asleep`,d:g(_.value,S.value)},null,8,L),l(`g`,R,[(D(),u(a,null,y([0,6,12,18],e=>l(`text`,{key:e,x:m(e*60,54).x,y:m(e*60,54).y+4,"text-anchor":`middle`},M(e),9,z)),64))]),l(`text`,{class:`center big`,x:J,y:106,"text-anchor":`middle`},M(v(b)(`睡 {hours}`,{hours:C.value})),9,B),l(`text`,{class:`center`,x:J,y:126,"text-anchor":`middle`},M(r.value)+` → `+M(i.value),9,V),l(`g`,{class:`handle moon`,role:`slider`,tabindex:`0`,"aria-label":v(b)(`几点睡`),"aria-valuetext":r.value,onPointerdown:s[0]||=e=>T(`sleep`,e),onKeydown:s[1]||=e=>k(`sleep`,e)},[l(`circle`,{cx:m(_.value).x,cy:m(_.value).y,r:`15`},null,8,U),l(`text`,{x:m(_.value).x,y:m(_.value).y+5,"text-anchor":`middle`},`☾`,8,W)],40,H),l(`g`,{class:`handle sun`,role:`slider`,tabindex:`0`,"aria-label":v(b)(`几点醒`),"aria-valuetext":i.value,onPointerdown:s[2]||=e=>T(`wake`,e),onKeydown:s[3]||=e=>k(`wake`,e)},[l(`circle`,{cx:m(S.value).x,cy:m(S.value).y,r:`15`},null,8,K),l(`text`,{x:m(S.value).x,y:m(S.value).y+5,"text-anchor":`middle`},`☀`,8,q)],40,G)],544))],2))}}),[[`__scopeId`,`data-v-7b572e49`]]),oe={key:0,class:`page nature`},se=[`aria-label`],ce={class:`nature-intro-copy`},le={class:`eyebrow`},ue={class:`nature-preview-note`},de={class:`nature-intro-orb`},fe=[`aria-label`],pe={class:`lived-persona-head`},me={class:`eyebrow`},he={class:`lived-persona-grid`},ge={class:`lived-trait-track`},_e={class:`lived-persona-story`},ve={class:`eyebrow`},ye={key:0},be={key:0,class:`lived-trait-history`},xe={key:1,class:`faint`},Se={class:`greenhouse`},Ce={class:`card editor`},we={class:`faint`,role:`status`},Te={class:`editor-head`},Ee={class:`eyebrow`},De={class:`muted`},Oe=[`disabled`],ke={class:`form-grid`},Ae=[`placeholder`],je={class:`wide`},Me=[`placeholder`],Ne={class:`traits`},Pe={class:`trait-head`},Fe={class:`muted`},Ie=[`onUpdate:modelValue`,`data-trait`,`aria-label`],Le=[`onUpdate:modelValue`,`name`,`aria-label`],Re={class:`rhythm-set`},ze={class:`switch`},Be={class:`rhythm-row`},Ve={class:`stack tight times`},He={class:`faint`},Ue={class:`stack tight`},We=[`placeholder`],Ge={class:`faint`},Ke={class:`versions`},qe={class:`chip`,"data-tone":`quiet`},Je={class:`faint`},Ye={class:`save-bar`},Xe=[`disabled`],Ze={class:`faint`,role:`status`},Qe={class:`side`},$e={class:`card orb-card`},et={class:`eyebrow`},tt={class:`effects`},nt={class:`check`},rt={class:`card`},it={class:`card-head`},at={class:`eyebrow`},ot={class:`toggles`},st={class:`switch`},ct={class:`switch`},lt={class:`switch`},ut={class:`switch`},dt={class:`switch`},ft={class:`form-grid`},pt={class:`faint wide`},mt={class:`faint wide`},ht={class:`card`},gt={class:`card-head`},_t={class:`eyebrow`},vt={class:`form-grid`},yt={class:`wide`},bt={class:`faint budget-note`},xt={class:`save-bar`},St={class:`primary`,type:`submit`},Ct={class:`faint`,role:`status`},wt={class:`card prompts`},Tt={class:`eyebrow`},Et={class:`save-bar`},Dt={class:`primary`},Ot={class:`faint`,role:`status`},X=S(f({__name:`NaturePage`,setup(n){let d=t([{key:`warmth`,label:j(`温柔`),low:j(`颜色偏冷,表情淡淡的`),high:j(`颜色更暖,嘴角上扬`)},{key:`sarcasm`,label:j(`毒舌`),low:j(`不挖苦人`),high:j(`嘴角一歪,会吐槽`)},{key:`humor`,label:j(`幽默`),low:j(`认真`),high:j(`眯眼笑,爱开玩笑`)},{key:`activity`,label:j(`活泼`),low:j(`安安静静`),high:j(`跳得更快`)},{key:`initiative`,label:j(`主动`),low:j(`更喜欢独处`),high:j(`更愿意分享`)}]),f=t({system:j(`系统指令`),turn:j(`看见与开口`),expression:j(`自己的念头`),initiative:j(`分享与发起`),generation:j(`重新措辞`),validation:j(`回复检查`),memory:j(`记忆整理`),vision:j(`图片理解`),summary:j(`上下文压缩`),summaryMerge:j(`摘要合并`),reflection:j(`独处`),daily:j(`日记`)}),p=x(null),h=x(String(O.health.settings.aliases||``)),S=x([]),I=x({}),L=x([]),R=x(``),z=x([]),B=T({life:null,budget:null}),V=T({...O.core.prompts}),H=x(`turn`),U=x(!1),W=T({nature:!1,days:!1,prompts:!1});function G(e){W[e]=!1,O.dirty=Object.values(W).some(Boolean)}let K=x(!0),q=e(()=>{let e=S.value.reduce((e,t)=>Math.max(e,Number(t.version)||0),0),t=e<=1?0:e-1;return{used:t,left:Math.max(0,2-t),locked:t>=2}}),J=e(()=>p.value?Object.fromEntries(d.map(e=>[e.key,Number(p.value[e.key])||0])):null),Y=e=>Array.isArray(e)?e.map(String):String(e||``).split(/[,,\n]/).map(e=>e.trim()).filter(Boolean);function X(){let{version:e,...t}=p.value;return{...t,gender:t.gender||`female`,interests:Y(t.interests),forbidden:Y(t.forbidden),bottomLines:Y(t.bottomLines)}}let kt=e(()=>K.value&&p.value?X():null);function Z(e){return(Number(p.value?.[e.key])||0)>=50?e.high:e.low}async function At(){let[e,t]=await Promise.all([F.nature(),F.overview()]);p.value={...e.nature,gender:e.nature.gender||`female`,interests:e.nature.interests.join(`,`),forbidden:e.nature.forbidden.join(`
|
|
2
|
+
`),bottomLines:e.nature.bottomLines.join(`
|
|
3
|
+
`)},S.value=e.versions,I.value=e.livedTraits||{},L.value=e.traitHistory||[],R.value=e.livedPersona||``,z.value=e.personaHistory||[],B.life={...t.life},B.budget={...t.budget.settings}}function Q(e=`nature`){W[e]=!0,O.dirty=!0}async function jt(){if(!U.value){U.value=!0;try{await F.saveNature(X()),h.value!==O.health.settings.aliases&&await w({aliases:h.value}),G(`nature`),await m();let e=await F.nature();S.value=e.versions,I.value=e.livedTraits||{},L.value=e.traitHistory||[],R.value=e.livedPersona||``,z.value=e.personaHistory||[],A(b(`天性已保存,下一次开口时生效`))}catch(e){A(e.message,!0)}finally{U.value=!1}}}async function Mt(){try{let e=await F.saveSettings({life:B.life,budget:{dailyTokens:Number(B.budget.dailyTokens)||0,innerShare:Number(B.budget.innerShare),upkeepShare:Number(B.budget.upkeepShare)}});B.life={...e.life},B.budget={...e.budget},G(`days`),A(b(`TA 的日子已按新设置安排`))}catch(e){A(e.message,!0)}}async function Nt(){try{await F.savePrompts({...V}),G(`prompts`),await m(),A(b(`指令已保存,下一轮生效`))}catch(e){A(e.message,!0)}}let $;return k(()=>{At(),$=setInterval(async()=>{if(!document.hidden)try{let e=await F.nature();I.value=e.livedTraits||{},L.value=e.traitHistory||[],R.value=e.livedPersona||``,z.value=e.personaHistory||[]}catch{}},3e4)}),C(()=>{$&&clearInterval($)}),(e,t)=>p.value?(D(),u(`div`,oe,[l(`section`,{class:`nature-intro`,"aria-label":v(b)(`天性预览`)},[l(`div`,ce,[l(`span`,le,M(v(b)(`THE WAY SHE GROWS · 天性`)),1),l(`h1`,null,[i(M(v(b)(`她的底色,`)),1),t[38]||=l(`br`,null,null,-1),l(`em`,null,M(v(b)(`慢慢长成她自己。`)),1)]),l(`p`,null,M(v(b)(`一些与生俱来的倾向,会在每一次相遇里长出新的模样。`)),1),l(`span`,ue,[t[39]||=l(`i`,null,null,-1),i(` `+M(v(b)(`调节刻度,看看此刻的她`)),1)])]),l(`div`,de,[E(ne,{class:`preview-orb`,mood:v(te),traits:J.value,size:170,interactive:``},null,8,[`mood`,`traits`])])],8,se),l(`section`,{class:`lived-persona`,"aria-label":v(b)(`成长中的性格`)},[l(`div`,pe,[l(`span`,me,M(v(b)(`BECOMING · 正在成为`)),1),l(`h2`,null,M(v(b)(`此刻的她`)),1),l(`p`,null,M(v(b)(`天性是起点。下方是她从真实经历里长出的刻度,下一次对话会使用这些值。`)),1)]),l(`div`,he,[(D(!0),u(a,null,y(v(d),e=>(D(),u(`div`,{key:e.key,class:`lived-trait`},[l(`span`,null,M(e.label),1),l(`strong`,null,M(I.value[e.key]??p.value[e.key]),1),l(`small`,null,M(v(b)(`起点 {v}`,{v:p.value[e.key]})),1),l(`div`,ge,[l(`i`,{style:ee({width:`${I.value[e.key]??p.value[e.key]}%`})},null,4)])]))),128))]),l(`div`,_e,[l(`span`,ve,M(v(b)(`INNER VOICE · 自己的样子`)),1),l(`p`,null,M(R.value||v(b)(`她还没有为现在的自己留下一段新的描述。底色和已有的自我线索仍会陪着她。`)),1),z.value.length?(D(),u(`details`,ye,[l(`summary`,null,M(v(b)(`看看她怎么走到这里 · {length} 版`,{length:z.value.length})),1),l(`ol`,null,[(D(!0),u(a,null,y(z.value,e=>(D(),u(`li`,{key:e.id},[l(`span`,null,M(e.content),1),l(`time`,null,M(v(N)(e.created)),1)]))),128))])])):c(``,!0)]),L.value.length?(D(),u(`details`,be,[l(`summary`,null,M(v(b)(`看看她为何改变 · {length} 次`,{length:L.value.length})),1),l(`ol`,null,[(D(!0),u(a,null,y(L.value,e=>(D(),u(`li`,{key:e.id},[l(`b`,null,M(v(d).find(t=>t.key===e.trait)?.label||e.trait)+` `+M(e.delta>0?`+`:``)+M(e.delta),1),l(`span`,null,M(e.reason),1),l(`time`,null,M(v(N)(e.created)),1)]))),128))])])):(D(),u(`p`,xe,M(v(b)(`她还没有从经历里改变这些刻度。独处或日记里形成了有来源的新选择后,会留在这里。`)),1))],8,fe),l(`div`,Se,[l(`section`,Ce,[l(`form`,{id:`natureForm`,onSubmit:r(jt,[`prevent`]),onInput:t[16]||=e=>Q()},[l(`p`,we,M(q.value.locked?v(b)(`两次更改已经用完。之后的性格、兴趣和样子,由 TA 自己从经历里生长。`):v(b)(`天性还可以改 {left} 次,包括性格刻度。用完后由她自己生长。`,{left:q.value.left})),1),l(`header`,Te,[l(`span`,Ee,M(v(b)(`塑造 TA`)),1),l(`h2`,null,M(v(b)(`TA 生来是什么样的?`)),1),l(`p`,De,M(v(b)(`天性是种子:性格、兴趣和底线。TA 的自我、在各群的样子、对每个人的感觉都会从经历里长出来——你能看到、能撤销,但不在这里改写。`)),1)]),l(`fieldset`,{class:`nature-fields`,disabled:q.value.locked},[l(`div`,ke,[l(`label`,null,[i(M(v(b)(`名字`)),1),_(l(`input`,{"onUpdate:modelValue":t[0]||=e=>p.value.name=e,name:`name`,required:``,maxlength:`40`},null,512),[[s,p.value.name]])]),l(`label`,null,[i(M(v(b)(`性别`))+` `,1),E(P,{modelValue:p.value.gender,"onUpdate:modelValue":t[1]||=e=>p.value.gender=e,name:`gender`,"aria-label":v(b)(`性别`),options:[{value:`female`,label:v(b)(`女`)},{value:`male`,label:v(b)(`男`)},{value:`unspecified`,label:v(b)(`不指定`)}]},null,8,[`modelValue`,`aria-label`,`options`]),l(`small`,null,M(v(b)(`人称会进入 TA 对自己的理解。女是「她」,男是「他」。`)),1)]),l(`label`,null,[i(M(v(b)(`别人会怎么叫 TA`))+` `,1),_(l(`input`,{"onUpdate:modelValue":t[2]||=e=>h.value=e,name:`aliases`,placeholder:v(b)(`用逗号分隔`)},null,8,Ae),[[s,h.value]]),l(`small`,null,M(v(b)(`群友叫 TA 的称呼,保存时一并写进全局设置`)),1)]),l(`label`,je,[i(M(v(b)(`天性`))+` `,1),_(l(`textarea`,{"onUpdate:modelValue":t[3]||=e=>p.value.base=e,name:`base`,rows:`6`,placeholder:v(b)(`TA 的背景、性格、兴趣和社交方式…`)},null,8,Me),[[s,p.value.base]])])]),l(`fieldset`,Ne,[l(`legend`,null,M(v(b)(`性格刻度`)),1),(D(!0),u(a,null,y(v(d),e=>(D(),u(`div`,{key:e.key,class:`trait`},[l(`div`,Pe,[l(`b`,null,M(e.label),1),l(`small`,Fe,M(Z(e)),1)]),_(l(`input`,{"onUpdate:modelValue":t=>p.value[e.key]=t,type:`range`,min:`0`,max:`100`,"data-trait":e.key,"aria-label":v(b)(`{label}刻度`,{label:e.label})},null,8,Ie),[[s,p.value[e.key],void 0,{number:!0}]]),_(l(`input`,{"onUpdate:modelValue":t=>p.value[e.key]=t,name:e.key,type:`number`,min:`0`,max:`100`,class:`trait-number`,"aria-label":e.label},null,8,Le),[[s,p.value[e.key],void 0,{number:!0}]])]))),128)),l(`label`,null,[i(M(v(b)(`说话长度`)),1),_(l(`input`,{"onUpdate:modelValue":t[4]||=e=>p.value.length=e,name:`length`},null,512),[[s,p.value.length]])])]),l(`fieldset`,Re,[l(`legend`,null,M(v(b)(`作息`)),1),l(`label`,ze,[_(l(`input`,{"onUpdate:modelValue":t[5]||=e=>p.value.rhythm.enabled=e,type:`checkbox`,name:`rhythmEnabled`},null,512),[[o,p.value.rhythm.enabled]]),l(`span`,null,M(v(b)(`TA 会睡觉:睡着时不看群,被私聊或 @ 会等醒来再看(危机消息除外)`)),1)]),l(`div`,Be,[E(ae,{sleep:p.value.rhythm.sleep,"onUpdate:sleep":[t[6]||=e=>p.value.rhythm.sleep=e,t[8]||=e=>Q()],wake:p.value.rhythm.wake,"onUpdate:wake":[t[7]||=e=>p.value.rhythm.wake=e,t[9]||=e=>Q()],disabled:!p.value.rhythm.enabled},null,8,[`sleep`,`wake`,`disabled`]),l(`div`,Ve,[l(`label`,null,[i(M(v(b)(`几点睡`)),1),_(l(`input`,{"onUpdate:modelValue":t[10]||=e=>p.value.rhythm.sleep=e,type:`time`,name:`sleep`,step:`900`},null,512),[[s,p.value.rhythm.sleep]])]),l(`label`,null,[i(M(v(b)(`几点醒`)),1),_(l(`input`,{"onUpdate:modelValue":t[11]||=e=>p.value.rhythm.wake=e,type:`time`,name:`wake`,step:`900`},null,512),[[s,p.value.rhythm.wake]])]),l(`small`,He,M(v(b)(`拖动月亮和太阳,或直接输入时间。`)),1)])])]),l(`fieldset`,null,[l(`legend`,null,M(v(b)(`兴趣、边界与底线`)),1),l(`div`,Ue,[l(`label`,null,[i(M(v(b)(`兴趣`)),1),_(l(`input`,{"onUpdate:modelValue":t[12]||=e=>p.value.interests=e,name:`interests`,placeholder:v(b)(`用逗号分隔`)},null,8,We),[[s,p.value.interests]])]),l(`label`,null,[i(M(v(b)(`社交边界`)),1),_(l(`input`,{"onUpdate:modelValue":t[13]||=e=>p.value.boundaries=e,name:`boundaries`},null,512),[[s,p.value.boundaries]])]),l(`label`,null,[i(M(v(b)(`底线(每行一条)`)),1),_(l(`textarea`,{"onUpdate:modelValue":t[14]||=e=>p.value.bottomLines=e,name:`bottomLines`,rows:`4`},null,512),[[s,p.value.bottomLines]])]),l(`label`,null,[i(M(v(b)(`不想用的说法(每行一个)`)),1),_(l(`textarea`,{"onUpdate:modelValue":t[15]||=e=>p.value.forbidden=e,name:`forbidden`,rows:`3`},null,512),[[s,p.value.forbidden]])]),l(`small`,Ge,M(v(b)(`凭据(密码、密钥、验证码)永远不会进入 TA 的心智,这一条写死在代码里。`)),1)])])],8,Oe),l(`details`,Ke,[l(`summary`,null,M(v(b)(`天性的版本 · {length}`,{length:S.value.length})),1),l(`ol`,null,[(D(!0),u(a,null,y(S.value,e=>(D(),u(`li`,{key:e.version},[l(`span`,qe,M(v(b)(`第 {version} 版`,{version:e.version})),1),l(`span`,null,M(e.note||v(b)(`修改`)),1),l(`time`,Je,M(v(N)(e.created)),1)]))),128))])]),l(`div`,Ye,[l(`button`,{class:`primary`,disabled:U.value||q.value.locked},M(q.value.locked?v(b)(`已交给 TA`):U.value?v(b)(`保存中…`):v(b)(`保存天性`)),9,Xe),l(`span`,Ze,M(q.value.locked?v(b)(`更改次数已用完`):W.nature?v(b)(`天性有未保存的修改`):v(b)(`还可以改 {left} 次`,{left:q.value.left})),1)])],32)]),l(`aside`,Qe,[l(`div`,$e,[l(`span`,et,M(v(b)(`调色盘 · 即时反馈`)),1),l(`h3`,null,M(v(b)(`微小的倾向,也会改变表达`)),1),l(`ul`,tt,[(D(!0),u(a,null,y(v(d),e=>(D(),u(`li`,{key:e.key},[l(`b`,null,M(e.label)+` `+M(p.value[e.key]),1),l(`span`,null,M(Z(e)),1)]))),128))])]),E(re,{class:`chat-card`,title:v(b)(`用草稿天性试聊`),eyebrow:`TALK TO TA`},{default:g(()=>[E(ie,{anchored:``,sessions:v(O).core.sessions,nature:kt.value,starter:v(b)(`今天真的好累啊`)},{options:g(()=>[l(`label`,nt,[_(l(`input`,{"onUpdate:modelValue":t[17]||=e=>K.value=e,type:`checkbox`},null,512),[[o,K.value]]),i(M(v(b)(`用左边还没保存的天性`)),1)])]),_:1},8,[`sessions`,`nature`,`starter`])]),_:1},8,[`title`])])]),B.life?(D(),u(`form`,{key:0,class:`days`,onSubmit:r(Mt,[`prevent`]),onInput:t[33]||=e=>Q(`days`),onChange:t[34]||=e=>Q(`days`)},[l(`section`,rt,[l(`div`,it,[l(`div`,null,[l(`span`,at,M(v(b)(`TA 的日子`)),1),l(`h2`,null,M(v(b)(`TA 怎样度过没人说话的时间`)),1)])]),l(`div`,ot,[l(`label`,st,[_(l(`input`,{"onUpdate:modelValue":t[18]||=e=>B.life.solitude=e,type:`checkbox`},null,512),[[o,B.life.solitude]]),l(`span`,null,[l(`b`,null,M(v(b)(`独处`)),1),l(`small`,null,M(v(b)(`聊天安静下来后,TA 会重新看看最近的事,改变对自己、对人的理解。`)),1)])]),l(`label`,ct,[_(l(`input`,{"onUpdate:modelValue":t[19]||=e=>B.life.reading=e,type:`checkbox`},null,512),[[o,B.life.reading]]),l(`span`,null,[l(`b`,null,M(v(b)(`独处时读资料`)),1),l(`small`,null,M(v(b)(`从共享资料里按自己的兴趣挑着读,一段一段读下去;读过的内容聊天时可以自然提起。`)),1)])]),l(`label`,lt,[_(l(`input`,{"onUpdate:modelValue":t[20]||=e=>B.life.diary=e,type:`checkbox`},null,512),[[o,B.life.diary]]),l(`span`,null,[l(`b`,null,M(v(b)(`睡前写日记`)),1),l(`small`,null,M(v(b)(`一天结束时写下这一天,和昨天的自己对照;隔一段时间在夜里回顾,改写自传、翻开新的一章。`)),1)])]),l(`label`,ut,[_(l(`input`,{"onUpdate:modelValue":t[21]||=e=>B.life.night=e,type:`checkbox`},null,512),[[o,B.life.night]]),l(`span`,null,[l(`b`,null,M(v(b)(`夜里整理`)),1),l(`small`,null,M(v(b)(`睡着以后,把白天没整理的聊天记进记忆和约定里,再按回顾间隔回顾这段日子。`)),1)])]),l(`label`,dt,[_(l(`input`,{"onUpdate:modelValue":t[22]||=e=>B.life.proactive=e,type:`checkbox`},null,512),[[o,B.life.proactive]]),l(`span`,null,[l(`b`,null,M(v(b)(`允许 TA 主动说话`)),1),l(`small`,null,M(v(b)(`安静的时候,也能从自己的兴趣、念头和对人的感觉决定要不要先开口。不必等人提问,不催同一句话;对方没回应,也不等于以后不能分享新的事。关掉后停止主动联系。`)),1),t[40]||=i(` >`,-1)])])]),l(`div`,ft,[l(`label`,null,[i(M(v(b)(`安静多久才独处(分钟)`)),1),_(l(`input`,{"onUpdate:modelValue":t[23]||=e=>B.life.idleMinutes=e,type:`number`,min:`0`},null,512),[[s,B.life.idleMinutes,void 0,{number:!0}]])]),l(`label`,null,[i(M(v(b)(`两次独处至少间隔(分钟)`)),1),_(l(`input`,{"onUpdate:modelValue":t[24]||=e=>B.life.intervalMinutes=e,type:`number`,min:`10`},null,512),[[s,B.life.intervalMinutes,void 0,{number:!0}]])]),l(`label`,null,[i(M(v(b)(`攒够多少条新消息(条)`)),1),_(l(`input`,{"onUpdate:modelValue":t[25]||=e=>B.life.minMessages=e,type:`number`,min:`0`},null,512),[[s,B.life.minMessages,void 0,{number:!0}]])]),l(`label`,null,[i(M(v(b)(`回顾间隔(天)`)),1),_(l(`input`,{"onUpdate:modelValue":t[26]||=e=>B.life.chapterDays=e,type:`number`,min:`1`},null,512),[[s,B.life.chapterDays,void 0,{number:!0}]])]),l(`label`,null,[i(M(v(b)(`安静时多久看看想不想聊(分钟)`)),1),_(l(`input`,{"onUpdate:modelValue":t[27]||=e=>B.life.initiativeIntervalMinutes=e,type:`number`,min:`1`},null,512),[[s,B.life.initiativeIntervalMinutes,void 0,{number:!0}]])]),l(`label`,null,[i(M(v(b)(`两次主动联系至少间隔(小时)`)),1),_(l(`input`,{"onUpdate:modelValue":t[28]||=e=>B.life.proactiveIntervalHours=e,type:`number`,min:`0`,step:`0.1`},null,512),[[s,B.life.proactiveIntervalHours,void 0,{number:!0}]])]),l(`p`,pt,M(v(b)(`主动联系间隔只在实际发出后计算,可设为 0;沉默不会占用发送间隔。想说的话会保留,临时忙碌后重新决定。没有新消息时也可独处,不需要攒够消息才能产生念头。`)),1),l(`p`,mt,M(v(b)(`独处、日记和夜里整理也使用模型库里的默认模型,不再单独指定。`)),1),l(`label`,null,[i(M(v(b)(`时区`)),1),_(l(`input`,{"onUpdate:modelValue":t[29]||=e=>B.life.timeZone=e,placeholder:`Asia/Shanghai`},null,512),[[s,B.life.timeZone]])])])]),l(`section`,ht,[l(`div`,gt,[l(`div`,null,[l(`span`,_t,M(v(b)(`每日注意力`)),1),l(`h2`,null,M(v(b)(`TA 一天能花多少 Token`)),1)])]),l(`div`,vt,[l(`label`,yt,[i(M(v(b)(`每日 Token 上限(0 = 不限)`))+` `,1),_(l(`input`,{"onUpdate:modelValue":t[30]||=e=>B.budget.dailyTokens=e,type:`number`,min:`0`},null,512),[[s,B.budget.dailyTokens,void 0,{number:!0}]]),l(`small`,null,M(v(b)(`滚动 24 小时计算。快用完时,TA 在群里只在被叫到时细看;用完后后台独处和整理暂停。`)),1)]),l(`label`,null,[i(M(v(b)(`独处与日记最多占`)),1),_(l(`input`,{"onUpdate:modelValue":t[31]||=e=>B.budget.innerShare=e,type:`number`,min:`0`,max:`0.9`,step:`0.05`},null,512),[[s,B.budget.innerShare,void 0,{number:!0}]])]),l(`label`,null,[i(M(v(b)(`记忆整理与压缩最多占`)),1),_(l(`input`,{"onUpdate:modelValue":t[32]||=e=>B.budget.upkeepShare=e,type:`number`,min:`0`,max:`0.9`,step:`0.05`},null,512),[[s,B.budget.upkeepShare,void 0,{number:!0}]])])]),l(`p`,bt,M(v(b)(`扫一眼群聊不花 Token;TA 细看时一次调用同时完成理解、心情和回复。私聊和 @ 永远优先。`)),1),l(`div`,xt,[l(`button`,St,M(v(b)(`保存 TA 的日子`)),1),l(`span`,Ct,M(W.days?v(b)(`日常安排有未保存的修改`):v(b)(`日常安排已保存`)),1)])])],32)):c(``,!0),l(`details`,wt,[l(`summary`,null,[l(`span`,Tt,M(v(b)(`高级`)),1),l(`b`,null,M(v(b)(`指令(Prompt)`)),1)]),l(`form`,{id:`promptsForm`,class:`stack tight`,onSubmit:r(Nt,[`prevent`]),onInput:t[37]||=e=>Q(`prompts`)},[l(`label`,null,[i(M(v(b)(`要编辑的指令`))+` `,1),E(P,{modelValue:H.value,"onUpdate:modelValue":t[35]||=e=>H.value=e,"aria-label":v(b)(`要编辑的指令`),options:Object.keys(V).map(e=>({value:e,label:v(f)[e]||e}))},null,8,[`modelValue`,`aria-label`,`options`])]),l(`label`,null,[i(M(v(b)(`指令正文`)),1),_(l(`textarea`,{"onUpdate:modelValue":t[36]||=e=>V[H.value]=e,rows:`14`,class:`mono`},null,512),[[s,V[H.value]]])]),l(`div`,Et,[l(`button`,Dt,M(v(b)(`保存指令`)),1),l(`span`,Ot,M(W.prompts?v(b)(`指令有未保存的修改`):v(b)(`指令已保存`)),1)])],32)])])):c(``,!0)}}),[[`__scopeId`,`data-v-9b449c5e`]]);export{X as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.galaxy[data-v-c60042d4]{gap:22px;min-width:0;display:grid}.encounter-hero[data-v-c60042d4]{isolation:isolate;-webkit-backdrop-filter:blur(28px)saturate(1.7);background:linear-gradient(120deg,#ffffffc2 3%,#e9f8ff85 47%,#f2e5ff6b 100%);border:1px solid #ffffffe8;border-radius:38px;grid-template-columns:minmax(0,1.1fr) minmax(230px,.9fr);align-items:center;min-height:300px;padding:30px clamp(25px,4vw,50px);display:grid;position:relative;overflow:hidden;box-shadow:inset 0 2px #fff,0 27px 55px -38px #638bc196}.encounter-hero[data-v-c60042d4]:before{content:"";z-index:-1;filter:blur(23px);background:conic-gradient(#d9c6ff91,#b0e4ff8c,#fff3d591,#d9c6ff91);border-radius:50%;width:350px;height:350px;animation:13s ease-in-out infinite alternate hue-drift-c60042d4;position:absolute;top:-160px;right:-80px}.encounter-copy[data-v-c60042d4]{z-index:1;position:relative}.encounter-copy h2[data-v-c60042d4]{letter-spacing:-.05em;margin:13px 0 15px;font-size:clamp(28px,3.5vw,46px);line-height:1.18}.encounter-copy h2 em[data-v-c60042d4]{color:#0000;background:linear-gradient(105deg,#5f91c8,#9b7fcb 55%,#cd92bf);-webkit-background-clip:text;background-clip:text;font-style:normal}.encounter-copy p[data-v-c60042d4]{max-width:54ch;color:var(--ink-soft);font-size:13px;line-height:1.8}.encounter-count[data-v-c60042d4]{color:var(--ink-soft);background:#ffffff85;border:1px solid #fff;border-radius:99px;align-items:baseline;gap:8px;margin-top:21px;padding:7px 15px;font-size:12px;display:inline-flex;box-shadow:inset 0 1px #fff}.encounter-count b[data-v-c60042d4]{color:var(--accent);font:700 20px var(--font-display)}.encounter-lens[data-v-c60042d4]{aspect-ratio:1.18;justify-self:center;place-items:center;width:min(100%,320px);display:grid;position:relative}.lens-ring[data-v-c60042d4]{border-radius:50%;position:absolute}.ring-a[data-v-c60042d4]{aspect-ratio:1;background:radial-gradient(circle at 30% 25%,#fff 3%,#e9faffbb 35%,#d1e7ffc2 70%,#f0dcff95);border:1px solid #fff;width:80%;animation:6s ease-in-out infinite lens-breathe-c60042d4;box-shadow:inset 8px 11px 20px #fff,inset -9px -11px 18px #9bbded59,0 22px 35px -25px #669bd0}.ring-b[data-v-c60042d4]{aspect-ratio:1.13;border:1px solid #ffffffc2;width:99%;transform:rotate(-15deg);box-shadow:inset 0 0 16px #fff9,0 0 30px #dcf1ff9c}.orb[data-v-c60042d4]{z-index:2;filter:drop-shadow(0 13px 12px #638fd13d);animation:5s ease-in-out infinite orb-rise-c60042d4;position:relative}.lens-dot[data-v-c60042d4]{z-index:3;background:radial-gradient(circle at 25% 20%,#fff,#bcd8f0 70%,#ebd5fd);border:1px solid #fff;border-radius:45% 55% 60% 40%;animation:4s ease-in-out infinite alternate orb-rise-c60042d4;position:absolute;box-shadow:inset 2px 2px 4px #fff,0 6px 15px #729cd564}.dot-a[data-v-c60042d4]{width:29px;height:29px;top:12%;left:10%}.dot-b[data-v-c60042d4]{width:18px;height:18px;animation-delay:-2s;bottom:21%;right:5%}.dot-c[data-v-c60042d4]{width:12px;height:12px;animation-delay:-3s;top:15%;right:10%}.people-heading[data-v-c60042d4]{justify-content:space-between;align-items:end;gap:12px;padding:0 5px;display:flex}.people-heading h3[data-v-c60042d4]{margin-top:4px;font-size:clamp(19px,2vw,25px)}.people-heading>span[data-v-c60042d4]{color:var(--ink-soft);font-size:12px}.encounter-grid[data-v-c60042d4]{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.person-node[data-v-c60042d4]{text-align:left;background:linear-gradient(128deg, #ffffffd0, #ffffff6b 69%, hsl(var(--hue) 80% 90% / .48));-webkit-backdrop-filter:blur(22px)saturate(1.6);min-width:0;min-height:110px;animation:card-in-c60042d4 .6s var(--spring) both;animation-delay:calc(var(--order) * 35ms);transition:transform .45s var(--spring), box-shadow .28s ease;border:1px solid #ffffffe5;border-radius:26px;align-items:center;gap:12px;padding:19px 16px 23px;display:flex;position:relative;box-shadow:inset 0 1px #fff,0 17px 31px -26px #5f7cb4}.person-node[data-v-c60042d4]:hover:not(:disabled),.person-node[data-v-c60042d4]:focus-visible{box-shadow:inset 0 1px 0 #fff, 0 25px 35px -23px hsl(var(--hue) 42% 60%);transform:translateY(-5px)scale(1.025)}.person-node[data-v-c60042d4]:active:not(:disabled){transform:scale(.97)}.person-node.away[data-v-c60042d4]{opacity:.68}.person-node.tense[data-v-c60042d4]{border-color:color-mix(in srgb, var(--warn) 27%, #fff)}.avatar-wrap[data-v-c60042d4]{background:radial-gradient(circle at 28% 23%, #fff, hsl(var(--hue) 72% 87% / .9) 48%, hsl(var(--hue) 65% 76% / .7));width:57px;height:57px;transition:transform .5s var(--spring);border:1px solid #fff;border-radius:50%;flex:none;place-items:center;display:grid;box-shadow:inset 2px 3px 4px #fff,inset -3px -4px 8px #a9c4dd6e,0 8px 16px -10px #5274a9}.person-node:hover .avatar-wrap[data-v-c60042d4]{transform:rotate(-9deg)scale(1.1)}.avatar[data-v-c60042d4]{color:hsl(var(--hue) 43% 31%);font:700 16px var(--font-display)}.person-copy[data-v-c60042d4]{gap:3px;min-width:0;display:grid}.person-copy b[data-v-c60042d4]{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;display:block;overflow:hidden}.person-copy small[data-v-c60042d4]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink-soft);font-size:11px;display:block;overflow:hidden}.person-arrow[data-v-c60042d4]{color:var(--accent);opacity:.47;transition:transform .45s var(--spring), opacity .2s;align-self:start;margin-left:auto}.person-node:hover .person-arrow[data-v-c60042d4]{opacity:1;transform:translate(3px,-3px)}.familiarity[data-v-c60042d4]{background:#9dc3e33b;border-radius:99px;height:3px;position:absolute;bottom:12px;left:17px;right:17px;overflow:hidden}.familiarity i[data-v-c60042d4]{width:var(--amount);border-radius:inherit;background:linear-gradient(90deg, #8bcbec, hsl(var(--hue) 70% 75%), #d1b1e9);height:100%;display:block}.more-people[data-v-c60042d4]{background:#ffffffa8;border:1px solid #fff;border-radius:999px;justify-self:center;padding:10px 20px;box-shadow:inset 0 1px #fff,0 10px 25px -20px #6d9bc7}.more-people span[data-v-c60042d4]{margin-left:8px}@keyframes hue-drift-c60042d4{to{transform:translate(-10%,16%)rotate(35deg)}}@keyframes lens-breathe-c60042d4{50%{transform:scale(1.05)}}@keyframes orb-rise-c60042d4{50%{transform:translateY(-8px)}}@keyframes card-in-c60042d4{0%{opacity:0;transform:translateY(15px)scale(.97)}to{opacity:1;transform:none}}@media (width<=1050px){.encounter-grid[data-v-c60042d4]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.encounter-hero[data-v-c60042d4]{grid-template-columns:1fr;padding:26px}.encounter-lens[data-v-c60042d4]{justify-self:end;width:215px;height:160px;margin-top:-8px}.encounter-grid[data-v-c60042d4]{grid-template-columns:1fr}.people-heading[data-v-c60042d4]{display:block}.people-heading>span[data-v-c60042d4]{margin-top:5px;display:block}}.ring[data-v-bbca6071]{text-align:center;justify-items:center;gap:6px;margin:0;display:grid}.track[data-v-bbca6071]{fill:none;stroke:color-mix(in srgb, var(--ink) 10%, transparent);stroke-width:4.5px}.arc[data-v-bbca6071]{fill:none;stroke:var(--accent);stroke-width:4.5px;stroke-linecap:round;transition:stroke-dasharray .8s var(--ease)}.arc.negative[data-v-bbca6071]{stroke:var(--danger)}text[data-v-bbca6071]{font:700 10px var(--font-display);fill:var(--ink)}figcaption[data-v-bbca6071]{font-size:12px;line-height:1.35;display:grid}figcaption small[data-v-bbca6071]{color:var(--ink-soft);font-size:11px}.who[data-v-5645edbd]{align-items:center;gap:14px;display:flex}.avatar[data-v-5645edbd]{background:radial-gradient(circle at 35% 30%, hsl(var(--hue) 90% 92%), hsl(var(--hue) 65% 72%));width:64px;height:64px;color:hsl(var(--hue) 45% 22%);font:700 19px var(--font-display);border-radius:50%;flex:none;place-items:center;display:grid}.feel[data-v-5645edbd]{font:600 17px/1.5 var(--font-display)}.rings[data-v-5645edbd]{background:color-mix(in srgb, var(--ink) 4%, transparent);border-radius:18px;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:14px 8px;display:grid}.impression[data-v-5645edbd]{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 12px 12px 0;padding:10px 14px;font-size:14px}.change[data-v-5645edbd]{background:color-mix(in srgb, var(--surface-strong) 75%, transparent);border:1px solid var(--line);border-radius:14px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.change p[data-v-5645edbd]{font-size:13.5px}.change.done[data-v-5645edbd]{opacity:.65}.grow[data-v-5645edbd]{flex:1;min-width:0}.instant[data-v-5645edbd]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.instant select[data-v-5645edbd]{width:auto;min-width:128px}.memory-item[data-v-5645edbd]{background:color-mix(in srgb, var(--surface-strong) 75%, transparent);border:1px solid var(--line);border-radius:14px;gap:6px;padding:10px 12px;display:grid}.memory-item p[data-v-5645edbd]{font-size:14px}.memory-item select[data-v-5645edbd]{width:auto;padding:5px 10px;font-size:12.5px}.memory-item.superseded[data-v-5645edbd]{opacity:.6;border-style:dashed}.memory-item.superseded p[data-v-5645edbd]{text-decoration:line-through;-webkit-text-decoration-color:var(--ink-faint);text-decoration-color:var(--ink-faint)}.person-sheet[data-v-5645edbd]{gap:17px}.who[data-v-5645edbd]{background:linear-gradient(125deg,#ffffffc9,#dfeeff85 65%,#f5e5f58c);border:1px solid #fff;border-radius:25px;padding:18px;position:relative;overflow:hidden;box-shadow:inset 0 2px #fff,0 17px 26px -24px #5473a6}.who[data-v-5645edbd]:after{content:"";filter:blur(25px);background:#d3dcff9a;border-radius:50%;width:170px;height:170px;position:absolute;top:-100px;right:-90px}.who .avatar[data-v-5645edbd]{z-index:1;border:1px solid #fff;position:relative;box-shadow:inset 3px 3px 4px #fff,inset -4px -4px 8px #acc5e77a,0 9px 17px -10px #5376ab}.who>div[data-v-5645edbd]{z-index:1;min-width:0;position:relative}.feel[data-v-5645edbd]{letter-spacing:-.02em;font-size:18px}.rings[data-v-5645edbd]{background:linear-gradient(145deg,#ffffffba,#ffffff68);border:1px solid #fff;border-radius:24px;gap:8px;padding:13px;box-shadow:inset 0 1px #fff}.impression[data-v-5645edbd]{border:1px solid #fff;border-left:3px solid var(--accent);background:#ffffff9e;border-radius:17px;padding:14px 17px;line-height:1.75;box-shadow:inset 0 1px #fff}.sheet-title[data-v-5645edbd]{margin-bottom:11px;font-size:15px}.change[data-v-5645edbd],.memory-item[data-v-5645edbd]{transition:transform .4s var(--spring), box-shadow .24s;background:linear-gradient(135deg,#ffffffc5,#ffffff76);border:1px solid #ffffffe3;border-radius:19px;box-shadow:inset 0 1px #fff}.change[data-v-5645edbd]:hover,.memory-item[data-v-5645edbd]:hover{transform:translateY(-2px);box-shadow:0 12px 21px -18px #597aad}@media (width<=510px){.rings[data-v-5645edbd]{grid-template-columns:repeat(2,minmax(0,1fr))}}.faces[data-v-c7aa703d]{gap:14px;display:grid}.faces-head h2[data-v-c7aa703d]{font-size:19px}.faces-head p[data-v-c7aa703d]{margin-top:4px;font-size:13px}.face-grid[data-v-c7aa703d]{gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));align-items:stretch;display:grid}.face-card[data-v-c7aa703d]{flex-direction:column;align-content:start;gap:12px;height:100%;display:flex}.face-card header[data-v-c7aa703d]{align-items:center;gap:12px;display:flex}.face-card h3[data-v-c7aa703d]{font-size:16px}.badge[data-v-c7aa703d]{background:hsl(var(--hue) 70% 88%);width:40px;height:40px;color:hsl(var(--hue) 45% 25%);border-radius:14px;flex:none;place-items:center;font-weight:700;display:grid}.face-card .text-button[data-v-c7aa703d]{justify-self:start;margin-top:auto}.small-text[data-v-c7aa703d]{font-size:13px}.versions[data-v-c7aa703d]{gap:6px;margin:0;padding:0;font-size:12.5px;list-style:none;display:grid}.versions li[data-v-c7aa703d]{grid-template-columns:auto 1fr auto;align-items:baseline;gap:8px;display:grid}.versions time[data-v-c7aa703d]{color:var(--ink-soft)}.versions li.revoked[data-v-c7aa703d]{opacity:.55}.face-excerpt[data-v-c7aa703d]{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.face-full[data-v-c7aa703d]{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9}.face-card .kv[data-v-c7aa703d]{align-content:start}.face-card .kv dd[data-v-c7aa703d]{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.versions li[data-v-c7aa703d]{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;padding:12px 0}.versions time[data-v-c7aa703d]{grid-column:1/-1}.faces[data-v-c7aa703d]{gap:19px}.faces-head[data-v-c7aa703d]{padding:0 4px}.faces-head h2[data-v-c7aa703d]{letter-spacing:-.025em;margin-top:5px;font-size:clamp(19px,2vw,25px)}.faces-head p[data-v-c7aa703d]{max-width:68ch;line-height:1.7}.face-grid[data-v-c7aa703d]{align-items:start;gap:15px}.face-card[data-v-c7aa703d]{isolation:isolate;background:linear-gradient(137deg, #ffffffd0, #ffffff69 65%, hsl(var(--hue) 78% 89% / .48));height:auto;min-height:230px;max-height:430px;transition:transform .45s var(--spring), box-shadow .28s;border:1px solid #ffffffe8;border-radius:27px;padding:19px;overflow:hidden;box-shadow:inset 0 2px #fff,0 18px 32px -26px #5f83b1}.face-card[data-v-c7aa703d]:before{content:"";z-index:-1;background:hsl(var(--hue) 75% 80% / .55);filter:blur(27px);border-radius:50%;width:145px;height:145px;position:absolute;top:-73px;right:-70px}.face-card[data-v-c7aa703d]:hover{transform:translateY(-5px)scale(1.012);box-shadow:inset 0 2px #fff,0 24px 39px -26px #688cb7}.face-card header[data-v-c7aa703d]{border-bottom:1px solid #ffffffc7;padding-bottom:12px}.face-card header>div[data-v-c7aa703d]{min-width:0}.face-card h3[data-v-c7aa703d]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.badge[data-v-c7aa703d]{background:radial-gradient(circle at 25% 20%, #fff, hsl(var(--hue) 72% 84%) 62%, hsl(var(--hue) 65% 75%));border:1px solid #fff;border-radius:50%;width:46px;height:46px;box-shadow:inset 2px 2px 4px #fff,0 7px 15px -10px #6587b4}.face-card .kv[data-v-c7aa703d]{gap:5px 12px;min-height:0;line-height:1.55;overflow:hidden}.face-card .kv dt[data-v-c7aa703d]{font-size:11px}.face-card .kv dd[data-v-c7aa703d]{font-size:12px}.face-card .kv dd.face-excerpt[data-v-c7aa703d]{-webkit-line-clamp:3}.face-card .text-button[data-v-c7aa703d]{transition:transform .38s var(--spring);background:#ffffffa1;border:1px solid #fff;border-radius:99px;align-self:start;margin-top:auto;padding:5px 9px;text-decoration:none}.face-card .text-button[data-v-c7aa703d]:hover:not(:disabled){transform:translate(4px)}.face-full[data-v-c7aa703d]{background:#ffffff91;border:1px solid #fff;border-radius:20px;padding:17px;box-shadow:inset 0 1px #fff}.versions li[data-v-c7aa703d]{background:#ffffff91;border:1px solid #fff;border-radius:15px;padding:10px 12px}.people[data-v-45f19e60]{gap:var(--gap);display:grid}.people-bar[data-v-45f19e60]{flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex}.people-search[data-v-45f19e60]{border-radius:999px;width:200px}.people-bar p[data-v-45f19e60]{flex:300px;font-size:13px}.people-list[data-v-45f19e60]{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.person-card[data-v-45f19e60]{text-align:left;border-radius:var(--r-l);gap:14px;font-weight:500;display:grid}.person-card header[data-v-45f19e60]{align-items:center;gap:12px;display:flex}.person-card h3[data-v-45f19e60]{font-size:16px}.avatar[data-v-45f19e60]{background:radial-gradient(circle at 35% 30%, hsl(var(--hue) 90% 92%), hsl(var(--hue) 65% 72%));width:46px;height:46px;color:hsl(var(--hue) 45% 22%);font:700 15px var(--font-display);border-radius:50%;flex:none;place-items:center;display:grid}.people-bar[data-v-45f19e60]{padding:4px 2px 2px}.people-bar p[data-v-45f19e60]{max-width:32ch}.people-search[data-v-45f19e60]{background:#ffffffad;border:1px solid #fff;border-radius:99px;width:min(235px,100%);padding:10px 15px;box-shadow:inset 0 1px #fff,0 8px 22px -19px #5c81ae}.people-list[data-v-45f19e60]{grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));gap:15px}.person-card[data-v-45f19e60]{isolation:isolate;background:linear-gradient(135deg, #ffffffcf, #ffffff69 68%, hsl(var(--hue) 80% 91% / .42));transition:transform .45s var(--spring), box-shadow .26s ease;border-color:#ffffffe8;border-radius:27px;gap:17px;padding:20px;overflow:hidden;box-shadow:inset 0 2px #fff,0 18px 30px -25px #6a88b5}.person-card[data-v-45f19e60]:before{content:"";z-index:-1;background:hsl(var(--hue) 80% 86% / .4);filter:blur(25px);border-radius:50%;width:150px;height:150px;position:absolute;top:-60px;right:-70px}.person-card[data-v-45f19e60]:hover:not(:disabled){transform:translateY(-5px)scale(1.018);box-shadow:inset 0 2px #fff,0 28px 35px -23px #6386b5}.person-card[data-v-45f19e60]:active:not(:disabled){transform:scale(.975)}.person-card header[data-v-45f19e60]{border-bottom:1px solid #ffffffc4;padding-bottom:12px}.person-card .avatar[data-v-45f19e60]{background:radial-gradient(circle at 26% 20%, #fff, hsl(var(--hue) 78% 86%) 53%, hsl(var(--hue) 69% 76%));width:54px;height:54px;transition:transform .45s var(--spring);border:1px solid #fff;border-radius:50%;place-items:center;display:grid;box-shadow:inset 3px 3px 5px #fff,0 8px 14px -9px #5b7fae}.person-card:hover .avatar[data-v-45f19e60]{transform:rotate(-8deg)scale(1.1)}.person-card .stack.tight[data-v-45f19e60]{padding:5px 0}@media (width<=760px){.people-bar p[data-v-45f19e60]{flex-basis:100%}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,G as t,H as n,K as r,L as i,P as a,U as o,V as s,W as c,Y as l,_ as u,_t as d,b as f,dt as p,ft as m,gt as h,ht as g,it as _,k as v,lt as y,mt as b,n as x,o as S,q as C,rt as w,s as T,t as E,v as D,vt as O,y as k,yt as A}from"./Empty-CpP5kQHH.js";import{C as j,E as ee,I as M,L as N,N as P,P as F,S as I,T as L,a as R,b as z,c as B,f as V,h as H,j as U,l as W,n as te,o as G,p as K,r as q,v as J,x as Y,y as X}from"./index-BheRW-1t.js";import{l as Z}from"./knowledge-DG0e0uKw.js";var Q=[`aria-label`],ne={class:`encounter-hero`},re={class:`encounter-copy`},ie={class:`eyebrow`},ae={class:`encounter-count`},oe={class:`encounter-lens`,"aria-hidden":`true`},se={class:`orb`},ce={class:`people-heading`},le={class:`encounter-grid`},ue=[`data-person`,`aria-label`,`onClick`],de={class:`avatar-wrap`},fe={class:`avatar`},pe={class:`person-copy`},me=x(l({__name:`Galaxy`,props:{people:{},activity:{}},emits:[`open`,`list`],setup(n,{emit:a}){let l=n,u=a,f=e(()=>[...l.people].sort((e,t)=>(t.familiarity??0)-(e.familiarity??0))),p=e(()=>f.value.slice(0,12)),m=e(()=>Math.max(0,f.value.length-p.value.length));return(e,a)=>(w(),c(`section`,{class:`galaxy`,"aria-label":h(v)(`相遇之间:TA 认识的人`)},[s(`div`,ne,[s(`div`,re,[s(`span`,ie,A(h(v)(`PEOPLE / 相遇之间`)),1),s(`h2`,null,[r(A(h(v)(`每一次相遇,`)),1),a[1]||=s(`br`,null,null,-1),s(`em`,null,A(h(v)(`都留下一点温度。`)),1)]),s(`p`,null,A(h(v)(`越熟悉离 TA 越近。这里先放着最近亲近的 {length} 个人,其他人也仍然在名单里。`,{length:p.value.length})),1),s(`div`,ae,[s(`b`,null,A(n.people.length),1),s(`span`,null,A(h(v)(`个相遇过的人`)),1)])]),s(`div`,oe,[a[2]||=t(`<div class="lens-ring ring-a" data-v-c60042d4></div><div class="lens-ring ring-b" data-v-c60042d4></div><span class="lens-dot dot-a" data-v-c60042d4></span><span class="lens-dot dot-b" data-v-c60042d4></span><span class="lens-dot dot-c" data-v-c60042d4></span>`,5),s(`div`,se,[C(F,{mood:h(N),activity:n.activity||`idle`,size:100},null,8,[`mood`,`activity`])])])]),s(`div`,ce,[s(`div`,null,[a[3]||=s(`span`,{class:`eyebrow`},`CLOSER TO HER`,-1),s(`h3`,null,A(h(v)(`最近靠近的人`)),1)]),s(`span`,null,A(h(v)(`点开一张光片,看看她记得什么`)),1)]),s(`div`,le,[(w(!0),c(i,null,_(p.value,(e,t)=>(w(),c(`button`,{key:e.userId,type:`button`,class:d([`person-node`,{away:(e.awayDays??0)>=14,tense:e.tension>=.3}]),"data-person":e.userId,style:O({"--hue":h(V)(e.name||e.userId),"--order":t}),"aria-label":`${e.name}:${e.feel||h(v)(`还在慢慢认识`)}`,onClick:t=>u(`open`,e.userId)},[s(`span`,de,[s(`span`,fe,A(h(K)(e.name)),1)]),s(`span`,pe,[s(`b`,null,A(e.name),1),s(`small`,null,`QQ `+A(e.userId),1),s(`small`,null,A(e.feel||h(v)(`还在慢慢认识`)),1)]),a[5]||=s(`span`,{class:`person-arrow`,"aria-hidden":`true`},`↗`,-1),s(`span`,{class:`familiarity`,style:O({"--amount":Math.round(Math.max(0,Math.min(1,e.familiarity??0))*100)+`%`}),"aria-hidden":`true`},[...a[4]||=[s(`i`,null,null,-1)]],4)],14,ue))),128))]),m.value?(w(),c(`button`,{key:0,type:`button`,class:`more-people`,onClick:a[0]||=e=>u(`list`)},[r(A(h(v)(`在名单里看看另外 {hidden} 个人`,{hidden:m.value}))+` `,1),a[6]||=s(`span`,{"aria-hidden":`true`},`↗`,-1)])):o(``,!0)],8,Q))}}),[[`__scopeId`,`data-v-c60042d4`]]),he=[`width`,`height`],ge=[`stroke-dasharray`,`transform`],_e={x:`22`,y:`25.5`,"text-anchor":`middle`},ve={key:0},ye=x(l({__name:`Ring`,props:{value:{},label:{},caption:{default:``},signed:{type:Boolean,default:!1},size:{default:64}},setup(t){let n=t,r=2*Math.PI*18,i=e(()=>{let e=Number(n.value)||0;return n.signed?Math.max(-1,Math.min(1,e)):Math.max(0,Math.min(1,e))}),a=e(()=>Math.abs(i.value)*r),l=e(()=>i.value<0);return(e,n)=>(w(),c(`figure`,{class:`ring`,style:O({width:t.size+`px`})},[(w(),c(`svg`,{width:t.size,height:t.size,viewBox:`0 0 44 44`,"aria-hidden":`true`},[n[0]||=s(`circle`,{class:`track`,cx:`22`,cy:`22`,r:`18`},null,-1),s(`circle`,{class:d([`arc`,{negative:l.value}]),cx:`22`,cy:`22`,r:`18`,"stroke-dasharray":`${a.value.toFixed(2)} ${r.toFixed(2)}`,transform:l.value?`translate(44 0) scale(-1 1) rotate(-90 22 22)`:`rotate(-90 22 22)`},null,10,ge),s(`text`,_e,A(Math.round(i.value*100)),1)],8,he)),s(`figcaption`,null,[s(`b`,null,A(t.label),1),t.caption?(w(),c(`small`,ve,A(t.caption),1)):o(``,!0)])],4))}}),[[`__scopeId`,`data-v-bbca6071`]]),be={key:0,class:`error-text`},xe={key:1,class:`person-sheet stack`},Se={class:`who`},Ce={class:`feel`},we={class:`qq`},Te={class:`muted`},Ee={class:`rings`},De={key:0,class:`impression`},Oe={key:1,class:`row`},ke={class:`faint`},Ae={class:`sheet-title`},je={key:0,class:`list`},Me=[`data-tone`],Ne={class:`grow`},Pe={class:`faint`},Fe={key:0,class:`chip`,"data-tone":`quiet`},Ie=[`onClick`],Le={key:1,class:`muted`},Re={key:2},ze={class:`sheet-title`},Be={class:`list`},Ve=[`data-tone`],He={class:`grow`},Ue={key:0,class:`faint`},We={class:`faint`},Ge=[`onClick`],Ke={class:`sheet-title`},qe={key:0,class:`list`},Je={class:`faint`},Ye={key:0,class:`instant`},Xe={class:`faint`},Ze=[`onClick`],Qe=[`onClick`],$e={key:1,class:`muted`},et={class:`sheet-title`},tt={key:0,class:`list`},nt=[`data-tone`],rt={class:`grow`},it={class:`faint`},at=[`onClick`],ot={key:1,class:`muted`},st=x(l({__name:`PersonSheet`,props:{id:{},now:{}},emits:[`close`,`changed`],setup(t,{emit:r}){let a=t,l=r,m=b(null),g=b(``),x=e(()=>m.value?.person),S=e(()=>{let e=x.value?.firstMetAt;return e?v(`认识 {v} 天`,{v:Math.max(1,Math.round(((a.now||Date.now())-e)/864e5))}):``});async function T(){if(!a.id)return;let e=a.id;m.value?.person?.userId!==e&&(m.value=u(`/mind/people/`+encodeURIComponent(e))||null),g.value=``;try{let t=await U.person(e);a.id===e&&(m.value=t)}catch(t){if(a.id!==e)return;m.value=null,g.value=t.message}}async function E(e){if(await k(v(`撤销这次「{v}」?TA 对这个人的感觉会重新计算。`,{v:z[e.change]||e.change}),{title:v(`撤销一次关系变化`),confirmText:v(`撤销`),danger:!0}))try{await U.revoke(`bond`,e.id),D(v(`已撤销`)),await T(),l(`changed`)}catch(e){D(e.message,!0)}}async function M(e){let t=await f(v(`撤销「{content}」?TA 之后不会再这样认为,整理记忆时也不会把它写回来。可以写下原因(可不填):`,{content:e.content}),{title:v(`撤销这条记忆`),confirmText:v(`撤销`),danger:!0,placeholder:v(`原因`)});if(t!==null)try{await U.revoke(`memory`,e.id,t),D(v(`已撤销`)),await T()}catch(e){D(e.message,!0)}}async function N(e,t){try{await Z(e.id,t),await T()}catch(e){D(e.message,!0)}}async function F(e){if(await k(v(`撤销这次相遇留下的意思?「{meant}」之后不会再回到 TA 心里,也不会再被当成变化的来源。`,{meant:e.meant}),{title:v(`撤销这次相遇`),confirmText:v(`撤销`),danger:!0}))try{await U.revoke(`meeting`,e.id),D(v(`已撤销`)),await T(),l(`changed`)}catch(e){D(e.message,!0)}}async function R(e){let t=await f(v(`撤销「{content}」?TA 不再惦记这件事,之后整理记忆时也不会把它写回来。可以写下原因(可不填):`,{content:e.content}),{title:v(`撤销这个约定`),confirmText:v(`撤销`),danger:!0,placeholder:v(`原因`)});if(t!==null)try{await U.revoke(`anticipation`,e.id,t),D(v(`已撤销`)),await T()}catch(e){D(e.message,!0)}}return y(()=>a.id,e=>{m.value=null,e&&T()},{immediate:!0}),(e,r)=>(w(),n(G,{open:!!t.id,title:x.value?.name||h(v)(`正在想起…`),eyebrow:h(v)(`TA 认识的人`),width:`560px`,onClose:r[0]||=e=>l(`close`)},{default:p(()=>[g.value?(w(),c(`p`,be,A(g.value),1)):x.value?(w(),c(`div`,xe,[s(`header`,Se,[s(`span`,{class:`avatar`,style:O({"--hue":h(V)(x.value.name||x.value.userId)})},A(h(K)(x.value.name)),5),s(`div`,null,[s(`p`,Ce,A(x.value.feel),1),s(`small`,we,`QQ `+A(x.value.userId),1),s(`small`,Te,A([S.value,x.value.lastTalkedAt?h(v)(`上次说上话 {v}`,{v:h(W)(x.value.lastTalkedAt,t.now)}):h(v)(`还没说上过话`),x.value.seenAt?h(v)(`上次见到 {v}`,{v:h(W)(x.value.seenAt,t.now)}):``].filter(Boolean).join(` · `)),1)])]),s(`div`,Ee,[(w(!0),c(i,null,_(h(I),([e,t])=>(w(),n(ye,{key:e,value:x.value[e],label:t},null,8,[`value`,`label`]))),128))]),x.value.impression?(w(),c(`p`,De,A(h(v)(`印象:{impression}`,{impression:x.value.impression})),1)):o(``,!0),x.value.places?.length?(w(),c(`div`,Oe,[s(`span`,ke,A(h(v)(`在这些地方见过:`)),1),(w(!0),c(i,null,_(x.value.places,e=>(w(),c(`span`,{key:e.id,class:`chip`,"data-tone":`quiet`},A(e.name),1))),128))])):o(``,!0),s(`section`,null,[s(`h3`,Ae,A(h(v)(`这份感觉是怎么来的`)),1),m.value.changes.length?(w(),c(`ul`,je,[(w(!0),c(i,null,_(m.value.changes,e=>(w(),c(`li`,{key:e.id,class:d([`change`,{done:e.revoked}])},[s(`span`,{class:`chip`,"data-tone":e.revoked?`quiet`:h(Y).has(e.change)?`danger`:void 0},A(h(z)[e.change]||e.change),9,Me),s(`div`,Ne,[s(`p`,null,A(e.note||h(v)(`没有写原因`)),1),s(`small`,Pe,A(h(v)(`{v} · {v2} · {length} 处来源`,{v:h(P)(e.created),v2:h(ee)[e.origin]||h(v)(`写日记时`),length:e.sources.length})),1)]),e.revoked?(w(),c(`span`,Fe,A(h(v)(`已撤销`)),1)):(w(),c(`button`,{key:1,class:`text-button`,"data-revoke-change":``,onClick:t=>E(e)},A(h(v)(`撤销`)),9,Ie))],2))),128))])):(w(),c(`p`,Le,A(h(v)(`只是一起聊过天,还没有特别的变化。`)),1))]),m.value.meetings?.length?(w(),c(`section`,Re,[s(`h3`,ze,A(h(v)(`和{name}的相遇留下了什么`,{name:x.value.name})),1),s(`ul`,Be,[(w(!0),c(i,null,_(m.value.meetings,e=>(w(),c(`li`,{key:e.id,class:`change`},[s(`span`,{class:`chip`,"data-tone":e.private?`quiet`:void 0},A(e.private?h(v)(`私下`):e.choice===`silent`?h(v)(`没出声`):h(v)(`出了声`)),9,Ve),s(`div`,He,[s(`p`,null,A(e.meant),1),e.why?(w(),c(`small`,Ue,A(h(v)(`当时:{why}`,{why:e.why})),1)):o(``,!0),s(`small`,We,A(e.when)+` · `+A(e.sessionName),1)]),s(`button`,{class:`text-button`,"data-revoke-meeting":``,onClick:t=>F(e)},A(h(v)(`撤销`)),9,Ge)]))),128))])])):o(``,!0),s(`section`,null,[s(`h3`,Ke,A(h(v)(`TA 记得关于{name}的事`,{name:x.value.name})),1),m.value.memories.length?(w(),c(`ul`,qe,[(w(!0),c(i,null,_(m.value.memories,e=>(w(),c(`li`,{key:e.id,class:d([`memory-item`,{superseded:e.status===`superseded`}])},[s(`p`,null,A(e.content),1),s(`small`,Je,A(h(v)(`{v} · 在「{v2}」知道的 · {when}`,{v:h(L)[e.status]||e.status,v2:h(H)({name:e.sessionName,id:e.session_id||e.sessionId}),when:e.when})),1),e.status===`confirmed`?(w(),c(`div`,Ye,[s(`span`,Xe,A(h(v)(`改完即生效`)),1),C(B,{"aria-label":h(v)(`分寸:`)+e.content,"model-value":e.discretion||`open`,options:Object.entries(h(j)).map(([e,t])=>({value:e,label:t})),"onUpdate:modelValue":t=>N(e,{discretion:t})},null,8,[`aria-label`,`model-value`,`options`,`onUpdate:modelValue`]),s(`button`,{class:`small`,onClick:t=>N(e,{locked:!e.locked})},A(e.locked?h(v)(`解锁`):h(v)(`锁定`)),9,Ze),s(`button`,{class:`small danger`,onClick:t=>M(e)},A(h(v)(`撤销`)),9,Qe)])):o(``,!0)],2))),128))])):(w(),c(`p`,$e,A(h(v)(`还没有记住关于这个人的事。`)),1))]),s(`section`,null,[s(`h3`,et,A(h(v)(`和{name}有关的约定`,{name:x.value.name})),1),m.value.anticipations.length?(w(),c(`ul`,tt,[(w(!0),c(i,null,_(m.value.anticipations,e=>(w(),c(`li`,{key:e.id,class:d([`change`,{done:e.state!==`pending`}])},[s(`span`,{class:`chip`,"data-tone":e.state===`pending`?void 0:`quiet`},A(h(X)[e.state]||e.state),9,nt),s(`div`,rt,[s(`p`,null,A(e.content),1),s(`small`,it,A(h(J)[e.kind]||e.kind)+` · `+A(e.when),1)]),e.status===`revoked`?o(``,!0):(w(),c(`button`,{key:0,class:`text-button`,onClick:t=>R(e)},A(h(v)(`撤销`)),9,at))],2))),128))])):(w(),c(`p`,ot,A(h(v)(`没有和这个人有关的约定。`)),1))])])):o(``,!0)]),_:1},8,[`open`,`title`,`eyebrow`]))}}),[[`__scopeId`,`data-v-5645edbd`]]),ct={class:`faces`},lt={class:`faces-head`},ut={class:`eyebrow`},dt={class:`muted`},ft={class:`face-grid`},pt={class:`badge`},mt={key:0,class:`qq`},ht={class:`muted`},gt={key:0,class:`kv`},_t={class:`face-excerpt`},vt={key:1,class:`muted small-text`},yt=[`onClick`],bt={key:0,class:`stack`},xt={class:`face-full`},St={key:0,class:`versions`},Ct={key:0},wt={key:1},Tt=[`onClick`],Et={key:0,class:`muted`},$=x(l({__name:`GroupFaces`,props:{groups:{}},emits:[`changed`],setup(e,{emit:t}){let n=t,a=b(null),l=b({});async function u(e){l.value[e]||(l.value={...l.value,[e]:await U.faces(e)})}async function f(e,t){if(await k(v(`撤销这一版面貌?TA 在这里会回到上一版的样子。`),{title:v(`撤销面貌`),confirmText:v(`撤销`),danger:!0}))try{await U.revoke(`face`,t),l.value={...l.value,[e]:await U.faces(e)},D(v(`已撤销`)),n(`changed`)}catch(e){D(e.message,!0)}}return(t,n)=>(w(),c(`section`,ct,[s(`div`,lt,[s(`span`,ut,A(h(v)(`群像`)),1),s(`h2`,null,A(h(v)(`在不同的地方,她有不同的相处方式。`)),1),s(`p`,dt,A(h(v)(`面貌由 TA 在独处和写日记时自己修正;每一版都有来源。这个地方的说话节奏不会写成 TA 的样子。`)),1)]),s(`div`,ft,[(w(!0),c(i,null,_(e.groups,e=>(w(),c(`article`,{key:e.session,class:`card face-card`,style:O({"--hue":h(V)(e.session)})},[s(`header`,null,[s(`span`,pt,A(e.kind===`private`?h(v)(`私`):h(v)(`群`)),1),s(`div`,null,[s(`h3`,null,A(h(H)({id:e.session,name:e.name,kind:e.kind})),1),e.kind===`private`?(w(),c(`small`,mt,`QQ `+A(String(e.session||``).split(`:`).pop()),1)):o(``,!0),s(`small`,ht,A(e.kind===`private`?h(v)(`私聊`):h(v)(`群聊`))+A(e.bond?` · ${e.bond.feel}`:``),1)])]),e.face?(w(),c(`dl`,gt,[s(`dt`,null,A(h(v)(`角色`)),1),s(`dd`,null,A(e.face.role||`—`),1),s(`dt`,null,A(h(v)(`说话`)),1),s(`dd`,null,A(e.face.tone||`—`),1),s(`dt`,null,A(h(v)(`想成为`)),1),s(`dd`,null,A(e.face.aspiration||`—`),1),e.face.content?(w(),c(i,{key:0},[s(`dt`,null,A(h(v)(`自己的话`)),1),s(`dd`,_t,A(e.face.content),1)],64)):o(``,!0)])):(w(),c(`p`,vt,A(h(v)(`还没有形成在这里的样子。`)),1)),s(`button`,{class:`text-button`,onClick:t=>{a.value=e,u(e.session)}},A(h(v)(`查看完整面貌与变化 ↗`)),9,yt)],4))),128))]),C(G,{open:!!a.value,title:a.value?.name||h(v)(`面貌`),eyebrow:h(v)(`FACES / 在这里的样子`),width:`680px`,onClose:n[0]||=e=>a.value=null},{default:p(()=>[a.value?(w(),c(`div`,bt,[s(`p`,xt,A(a.value.face?.content||h(v)(`还没有形成在这里的样子。`)),1),s(`h3`,null,A(h(v)(`变化历史`)),1),l.value[a.value.session]?(w(),c(`ol`,St,[(w(!0),c(i,null,_(l.value[a.value.session],e=>(w(),c(`li`,{key:e.id,class:d({revoked:e.revoked})},[s(`time`,null,A(h(P)(e.created)),1),s(`span`,null,[e.revoked?(w(),c(`b`,Ct,A(h(v)(`已撤销 ·`)),1)):e.origin===`migration`?(w(),c(`b`,wt,A(h(v)(`旧版 ·`)),1)):o(``,!0),r(A([e.role,e.tone,e.aspiration].filter(Boolean).join(` · `)||e.content),1)]),e.revoked?o(``,!0):(w(),c(`button`,{key:0,class:`text-button`,onClick:t=>f(a.value.session,e.id)},A(h(v)(`撤销`)),9,Tt))],2))),128)),l.value[a.value.session].length?o(``,!0):(w(),c(`li`,Et,A(h(v)(`没有记录。`)),1))])):o(``,!0)])):o(``,!0)]),_:1},8,[`open`,`title`,`eyebrow`])]))}}),[[`__scopeId`,`data-v-c7aa703d`]]),Dt={class:`page people`},Ot={class:`people-bar`},kt=[`placeholder`,`aria-label`],At={class:`muted`},jt={key:1,class:`people-list`},Mt=[`data-person`,`onClick`],Nt={class:`qq`},Pt={class:`muted`},Ft={class:`stack tight`},It={class:`faint`},Lt=x(l({__name:`PeoplePage`,setup(t){let r=g(u(`/mind/bonds`)||null),l=b(`galaxy`),d=b(``),f=b(T.sub&&T.sub!==`list`?T.sub:null);T.sub===`list`&&(l.value=`list`);let p=e(()=>{let e=d.value.trim(),t=r.value?.people||[];return e?t.filter(t=>`${t.name}${t.userId}${t.impression||``}`.includes(e)):t}),x=0;async function D(){let e=++x,t=await U.bonds();e===x&&(r.value=t)}function k(e){f.value=e,S(e)}function j(){f.value=null,S(l.value===`list`?`list`:``)}return y(l,e=>{T.page===`people`&&(f.value||S(e===`list`?`list`:``))}),y(()=>[T.page,T.sub],([e,t])=>{e===`people`&&(t===`list`&&(l.value=`list`),f.value=t&&t!==`list`?t:null)}),R(`people`,D),(e,t)=>(w(),c(`div`,Dt,[s(`div`,Ot,[C(te,{modelValue:l.value,"onUpdate:modelValue":t[0]||=e=>l.value=e,label:h(v)(`人际的视图`),items:[{key:`galaxy`,label:h(v)(`相遇之间`),count:r.value?.people.length??``},{key:`list`,label:h(v)(`列表`)}]},null,8,[`modelValue`,`label`,`items`]),m(s(`input`,{"onUpdate:modelValue":t[1]||=e=>d.value=e,class:`people-search`,type:`search`,placeholder:h(v)(`找一个人`),"aria-label":h(v)(`找一个人`)},null,8,kt),[[a,d.value]]),s(`p`,At,A(h(v)(`她记得相遇,也记得关系会随着时间改变。`)),1)]),r.value?(w(),c(i,{key:0},[p.value.length?(w(),c(i,{key:0},[l.value===`galaxy`?(w(),n(me,{key:0,people:p.value,activity:h(M).data?.activity?.kind,onOpen:k,onList:t[2]||=e=>l.value=`list`},null,8,[`people`,`activity`])):(w(),c(`div`,jt,[(w(!0),c(i,null,_(p.value,e=>(w(),c(`button`,{key:e.userId,class:`card person-card`,"data-person":e.userId,onClick:t=>k(e.userId)},[s(`header`,null,[s(`span`,{class:`avatar`,style:O({"--hue":h(V)(e.name||e.userId)})},A(h(K)(e.name)),5),s(`div`,null,[s(`h3`,null,A(e.name),1),s(`small`,Nt,`QQ `+A(e.userId),1),s(`small`,Pt,A(e.feel),1)])]),s(`div`,Ft,[(w(!0),c(i,null,_(h(I),([t,r])=>(w(),n(q,{key:t,label:r,value:e[t],warn:t===`tension`},null,8,[`label`,`value`,`warn`]))),128))]),s(`small`,It,A(h(v)(`在 {length} 个地方见过 · 上次说上话 {v}`,{length:e.sessions.length,v:e.lastTalkedAt?h(W)(e.lastTalkedAt,h(M).data?.now):h(v)(`还没有`)})),1)],8,Mt))),128))]))],64)):(w(),n(E,{key:1,title:h(v)(`TA 还没有认识谁`),text:h(v)(`有人和 TA 说话、TA 细看过群聊之后,这里会出现 TA 对每个人的感觉。`)},null,8,[`title`,`text`])),C($,{groups:r.value.groups,onChanged:D},null,8,[`groups`])],64)):o(``,!0),C(st,{id:f.value,now:h(M).data?.now,onClose:j,onChanged:D},null,8,[`id`,`now`])]))}}),[[`__scopeId`,`data-v-45f19e60`]]);export{Lt as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{B as e,H as t,I as n,K as r,L as i,M as ee,P as a,U as o,V as s,W as c,Y as l,dt as u,ft as d,gt as f,it as p,k as m,lt as h,m as g,mt as _,n as v,nt as te,o as ne,q as y,rt as b,s as x,t as S,tt as re,yt as C}from"./Empty-CpP5kQHH.js";import{i as w,n as T,o as ie}from"./index-BheRW-1t.js";import{t as E}from"./Field-D4gY-INU.js";var ae={class:`page plugins`},oe={class:`plugins-intro`},se={class:`eyebrow`},ce={key:0,class:`warn-text`,role:`alert`},le={key:1,class:`stack`},ue={class:`lead`},de={class:`grid`},fe={class:`muted`},pe={key:0},me={class:`row`},he=[`onClick`],ge=[`onClick`],_e=[`onClick`],ve={key:2,class:`grid`},ye=[`onClick`],be={key:3,class:`grid`},D={class:`row`},O=[`onClick`],k=[`onClick`],A={key:4,class:`grid`},j={key:0,class:`switch`},M=[`onUpdate:modelValue`],N=[`onUpdate:modelValue`,`placeholder`],xe=[`onUpdate:modelValue`,`placeholder`],Se=[`onUpdate:modelValue`],Ce={class:`row`},we={class:`ghost`,type:`submit`},Te=[`src`],Ee={key:1,class:`row`},P=v(l({__name:`PluginsPage`,setup(l){let v=[`installed`,`market`,`actions`,`import`],P=_(v.includes(x.sub)?x.sub:`installed`),F=_([]),I=_([]),L=_(!1),R=_(!1),z=_([]),B=_(``),V=_(``),H=_(null),U=_({}),W=_({url:``,sha256:``}),G=_(``),K=_(``),q=_(``),J=_(null),Y=e(()=>F.value.find(e=>e.id===V.value));async function X(){F.value=(await g(`/plugins`)).plugins||[];try{z.value=(await g(`/plugins/actions/pending`)).actions||[]}catch{z.value=[]}}function Z(){R.value=!0,g(`/plugins/market`).then(e=>{I.value=e.plugins||[],L.value=!!e.unavailable}).catch(()=>{I.value=[],L.value=!0}).finally(()=>{R.value=!1})}h(P,e=>{ne(e),e===`market`&&Z()}),h(()=>x.sub,e=>{v.includes(e)&&(P.value=e)}),h(V,async e=>{if(!e)return;let t=await g(`/plugins/${e}/settings`),n={};for(let e of t.fields||[]){let r=t.values?.[e.key]??e.default;e.type===`boolean`?n[e.key]=r===!0:e.type===`urls`?n[e.key]=Array.isArray(r)?r.join(`
|
|
2
|
+
`):r??``:n[e.key]=r??``}U.value=n});async function De(){Y.value&&(B.value=``,await g(`/plugins/${Y.value.id}/settings`,{method:`PUT`,body:JSON.stringify({values:U.value})}))}async function Oe(e){B.value=``;try{V.value===e.id&&await g(`/plugins/${e.id}/settings`,{method:`PUT`,body:JSON.stringify({values:U.value})}),await g(`/plugins/${e.id}/grant`,{method:`POST`,body:JSON.stringify({permissions:e.permissions})}),await g(`/plugins/${e.id}/enable`,{method:`POST`,body:`{}`}),await X()}catch(e){B.value=e.message}}async function Q(e,t){B.value=``;try{H.value=await g(e,{method:`POST`,body:JSON.stringify(t)})}catch(e){B.value=e.message}}async function ke(){if(!H.value)return;await g(`/plugins/import/commit`,{method:`POST`,body:JSON.stringify({token:H.value.token})});let e=H.value;H.value=null,await g(`/plugins/${e.manifest.id}/grant`,{method:`POST`,body:JSON.stringify({permissions:e.permissions})}),P.value=`installed`,await X()}function $(e){let t=e.data||{};if(t.luckytri!==1||!Y.value||e.source!==J.value?.contentWindow)return;let n=String(t.path||`/`);n.startsWith(`/`)&&g(`/plugins/${Y.value.id}/x${n}`,{method:t.method||`GET`,body:t.body?JSON.stringify(t.body):void 0}).then(e=>J.value?.contentWindow?.postMessage({id:t.id,ok:!0,result:e},location.origin)).catch(e=>J.value?.contentWindow?.postMessage({id:t.id,ok:!1,error:e.message},location.origin))}re(()=>{X().catch(e=>B.value=e.message),P.value===`market`&&Z(),window.addEventListener(`message`,$)}),te(()=>window.removeEventListener(`message`,$));function Ae(e){return m(e===`high`?`高风险`:e===`medium`?`中风险`:`低风险`)}function je(e){return e.running?m(`运行中`):e.state===`error`?m(`出错`):e.enabled?m(`正在启动`):e.source===`builtin`?m(`内置,未启用`):m(`已安装,未启用`)}return(e,l)=>(b(),c(`div`,ae,[s(`header`,oe,[s(`span`,se,C(f(m)(`THE WORLD SHE CAN TOUCH · 插件`)),1),s(`h1`,null,[r(C(f(m)(`核心是她。`)),1),s(`em`,null,C(f(m)(`插件是世界。`)),1)]),s(`p`,null,C(f(m)(`插件只能经她同意接触世界。它们读不到她的数据库,也不能替她开口。`)),1)]),B.value?(b(),c(`p`,ce,C(B.value),1)):o(``,!0),y(T,{"model-value":P.value,"onUpdate:modelValue":l[0]||=e=>P.value=e,label:f(m)(`插件的分区`),items:[{key:`installed`,label:f(m)(`插件列表`)},{key:`market`,label:f(m)(`插件市场`)},{key:`actions`,label:f(m)(`她想做的事`),count:z.value.length},{key:`import`,label:f(m)(`导入与开发`)}]},null,8,[`model-value`,`label`,`items`]),P.value===`installed`?(b(),c(`section`,le,[s(`p`,ue,C(f(m)(`天气随 LuckyTri 附带,默认关闭。启用前会先列出它要的权限。`)),1),s(`div`,de,[F.value.length?o(``,!0):(b(),t(S,{key:0,title:f(m)(`还没有接上插件`),text:f(m)(`内置的天气可以在这里启用,也可以从市场安装。`)},null,8,[`title`,`text`])),(b(!0),c(i,null,p(F.value,e=>(b(),t(w,{key:e.id,title:e.manifest.name||e.id},{default:u(()=>[s(`p`,null,C(e.manifest.description),1),s(`p`,fe,[r(C(e.version)+` · `+C(je(e))+` `,1),e.status?.text?(b(),c(`span`,pe,` · `+C(e.status.text),1)):o(``,!0)]),s(`div`,me,[e.enabled?(b(),c(`button`,{key:1,class:`ghost`,onClick:t=>f(g)(`/plugins/${e.id}/disable`,{method:`POST`,body:`{}`}).then(X)},C(f(m)(`停用`)),9,ge)):(b(),c(`button`,{key:0,class:`primary`,onClick:t=>V.value=e.id},C(f(m)(`查看权限并启用`)),9,he)),s(`button`,{class:`ghost`,onClick:t=>V.value=e.id},C(f(m)(`详情`)),9,_e)])]),_:2},1032,[`title`]))),128))])])):P.value===`market`?(b(),c(`section`,ve,[R.value?(b(),t(S,{key:0,title:f(m)(`正在查看市场`),text:f(m)(`连不上的话,这里会说明,不会再显示一串英文错误。`)},null,8,[`title`,`text`])):I.value.length?o(``,!0):(b(),t(S,{key:1,title:f(m)(`市场暂时没有条目`),text:L.value?f(m)(`插件市场的索引还没有发布,或现在连不上。随程序附带的插件在「插件列表」里,默认关闭。`):f(m)(`索引仓库还是空的,或者现在连不上。你仍然可以导入一个插件包。`)},null,8,[`title`,`text`])),R.value?o(``,!0):(b(!0),c(i,{key:2},p(I.value,e=>(b(),t(w,{key:e.id||e.source,title:e.name||e.id},{default:u(()=>[s(`p`,null,C(e.description),1),e.latest?(b(),c(`button`,{key:0,class:`primary`,onClick:t=>Q(`/plugins/market/stage`,{url:e.latest.url,sha256:e.latest.sha256,id:e.id})},C(f(m)(`安装`))+` `+C(e.latest.version),9,ye)):o(``,!0)]),_:2},1032,[`title`]))),128))])):P.value===`actions`?(b(),c(`section`,be,[z.value.length?o(``,!0):(b(),t(S,{key:0,title:f(m)(`没有等待同意的事`),text:f(m)(`高风险的行动会先停在这里,等你点头。过一天就不再算数。`)},null,8,[`title`,`text`])),(b(!0),c(i,null,p(z.value,e=>(b(),t(w,{key:e.id,title:e.label},{default:u(()=>[s(`p`,null,C(e.reason),1),s(`div`,D,[s(`button`,{class:`primary`,onClick:t=>f(g)(`/plugins/actions/${e.id}/approve`,{method:`POST`,body:`{}`}).then(X)},C(f(m)(`同意`)),9,O),s(`button`,{class:`ghost`,onClick:t=>f(g)(`/plugins/actions/${e.id}/reject`,{method:`POST`,body:`{}`}).then(X)},C(f(m)(`拒绝`)),9,k)])]),_:2},1032,[`title`]))),128))])):(b(),c(`section`,A,[y(w,{title:f(m)(`从链接导入`)},{default:u(()=>[y(E,{label:f(m)(`插件包地址`)},{default:u(()=>[d(s(`input`,{"onUpdate:modelValue":l[1]||=e=>W.value.url=e},null,512),[[a,W.value.url]])]),_:1},8,[`label`]),y(E,{label:f(m)(`校验值,可留空`)},{default:u(()=>[d(s(`input`,{"onUpdate:modelValue":l[2]||=e=>W.value.sha256=e},null,512),[[a,W.value.sha256]])]),_:1},8,[`label`]),s(`button`,{class:`primary`,onClick:l[3]||=e=>Q(`/plugins/import/url`,W.value)},C(f(m)(`检查这个包`)),1)]),_:1},8,[`title`]),y(w,{title:f(m)(`从 GitHub 导入`)},{default:u(()=>[y(E,{label:f(m)(`仓库地址`)},{default:u(()=>[d(s(`input`,{"onUpdate:modelValue":l[4]||=e=>G.value=e,placeholder:`https://github.com/owner/name`},null,512),[[a,G.value]])]),_:1},8,[`label`]),s(`button`,{class:`primary`,onClick:l[5]||=e=>Q(`/plugins/import/github`,{repository:G.value})},C(f(m)(`检查这个仓库`)),1)]),_:1},8,[`title`]),y(w,{title:f(m)(`本机目录(开发)`)},{default:u(()=>[y(E,{label:f(m)(`目录`)},{default:u(()=>[d(s(`input`,{"onUpdate:modelValue":l[6]||=e=>K.value=e},null,512),[[a,K.value]])]),_:1},8,[`label`]),s(`button`,{class:`ghost`,onClick:l[7]||=e=>Q(`/plugins/import/dir`,{dir:K.value})},C(f(m)(`按开发插件接上`)),1)]),_:1},8,[`title`]),y(w,{title:f(m)(`索引源`)},{default:u(()=>[y(E,{label:f(m)(`索引地址`)},{default:u(()=>[d(s(`input`,{"onUpdate:modelValue":l[8]||=e=>q.value=e},null,512),[[a,q.value]])]),_:1},8,[`label`]),s(`button`,{class:`ghost`,onClick:l[9]||=e=>f(g)(`/plugins/sources`,{method:`POST`,body:JSON.stringify({url:q.value})})},C(f(m)(`添加索引`)),1)]),_:1},8,[`title`])])),H.value?(b(),t(w,{key:5,title:f(m)(`先看清它要什么`)},{default:u(()=>[s(`p`,null,C(H.value.manifest?.name)+` `+C(H.value.manifest?.version)+` · `+C(H.value.trusted?f(m)(`校验通过`):f(m)(`未登记来源`)),1),s(`ul`,null,[(b(!0),c(i,null,p(H.value.permissions,e=>(b(),c(`li`,{key:e},C(e),1))),128))]),s(`button`,{class:`primary`,onClick:ke},C(f(m)(`同意这些权限并安装`)),1)]),_:1},8,[`title`])):o(``,!0),y(ie,{open:!!Y.value,title:Y.value?.manifest.name||``,onClose:l[13]||=e=>V.value=``},{default:u(()=>[Y.value?(b(),c(i,{key:0},[s(`p`,null,C(Y.value.manifest.description),1),s(`ul`,null,[(b(!0),c(i,null,p(Y.value.risk,e=>(b(),c(`li`,{key:e.name},C(Ae(e.risk))+` · `+C(e.label),1))),128))]),s(`form`,{class:`settings`,onSubmit:l[11]||=n(e=>De().catch(e=>B.value.value=e.message),[`prevent`])},[(b(!0),c(i,null,p(Y.value.manifest.settings||[],e=>(b(),c(i,{key:e.key},[e.type===`boolean`?(b(),c(`label`,j,[s(`span`,null,C(e.label),1),d(s(`input`,{"onUpdate:modelValue":t=>U.value[e.key]=t,type:`checkbox`},null,8,M),[[ee,U.value[e.key]]])])):(b(),t(E,{key:1,label:e.label},{default:u(()=>[e.type===`secret`?d((b(),c(`input`,{key:0,type:`password`,"onUpdate:modelValue":t=>U.value[e.key]=t,placeholder:f(m)(`已保存的不会回显`)},null,8,N)),[[a,U.value[e.key]]]):e.type===`textarea`||e.type===`urls`?d((b(),c(`textarea`,{key:1,"onUpdate:modelValue":t=>U.value[e.key]=t,rows:`4`,placeholder:e.type===`urls`?f(m)(`一行一个地址`):void 0},null,8,xe)),[[a,U.value[e.key]]]):d((b(),c(`input`,{key:2,"onUpdate:modelValue":t=>U.value[e.key]=t},null,8,Se)),[[a,U.value[e.key]]])]),_:2},1032,[`label`]))],64))),128)),s(`div`,Ce,[s(`button`,we,C(f(m)(`保存设置`)),1),Y.value.enabled?o(``,!0):(b(),c(`button`,{key:0,class:`primary`,type:`button`,onClick:l[10]||=e=>Oe(Y.value)},C(f(m)(`同意这些权限并启用`)),1))])],32),Y.value.enabled&&Y.value.manifest.contributes?.page?(b(),c(`iframe`,{key:0,ref_key:`frame`,ref:J,class:`plugin-frame`,sandbox:`allow-scripts allow-forms`,src:`/plugin-ui/${Y.value.id}/index.html`},null,8,Te)):o(``,!0),Y.value.source===`builtin`?o(``,!0):(b(),c(`div`,Ee,[s(`button`,{class:`ghost`,onClick:l[12]||=e=>{f(g)(`/plugins/${Y.value.id}`,{method:`DELETE`,body:`{}`}).then(()=>{V.value=``,X()})}},C(f(m)(`卸载`)),1)]))],64)):o(``,!0)]),_:1},8,[`open`,`title`])]))}}),[[`__scopeId`,`data-v-88f9bc22`]]);export{P as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.plugins[data-v-88f9bc22]{gap:var(--gap);display:grid}.plugins-intro[data-v-88f9bc22]{background:radial-gradient(ellipse at 90% 7%, color-mix(in srgb, var(--glow-a) 48%, transparent), transparent 51%), radial-gradient(ellipse at 62% 115%, color-mix(in srgb, var(--glow-b) 38%, transparent), transparent 55%), linear-gradient(115deg, #fffc, #ffffff4d);min-height:190px;box-shadow:inset 0 2px 0 white, 0 25px 54px -35px color-mix(in srgb, var(--accent) 43%, transparent);-webkit-backdrop-filter:blur(28px)saturate(1.8);backdrop-filter:blur(28px)saturate(1.8);border:1px solid #ffffffd9;border-radius:36px;padding:32px clamp(26px,5vw,60px);position:relative;overflow:hidden}.plugins-intro[data-v-88f9bc22]:before{content:"";width:350px;height:350px;box-shadow:0 0 0 29px #ffffff21, 0 0 0 58px color-mix(in srgb, var(--glow-b) 12%, transparent);pointer-events:none;border:1px solid #ffffffb8;border-radius:50%;position:absolute;top:-85%;right:13%}.plugins-intro h1[data-v-88f9bc22],.plugins-intro p[data-v-88f9bc22],.plugins-intro .eyebrow[data-v-88f9bc22]{position:relative}.plugins-intro h1[data-v-88f9bc22]{letter-spacing:-.055em;margin:10px 0 7px;font-size:clamp(28px,3.25vw,42px)}.plugins-intro h1 em[data-v-88f9bc22]{color:var(--accent);font-style:normal}.plugins-intro p[data-v-88f9bc22]{max-width:560px;color:var(--ink-soft);font-size:13.5px}.stack[data-v-88f9bc22]{gap:14px;display:grid}.lead[data-v-88f9bc22]{color:var(--ink-soft);margin:0;font-size:13.5px}@media (width<=760px){.plugins-intro[data-v-88f9bc22]{min-height:0;padding:27px 23px}}.grid[data-v-88f9bc22]{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(280px,420px));justify-content:start;display:grid}.muted[data-v-88f9bc22]{color:var(--ink-soft);font-size:13px}.warn-text[data-v-88f9bc22]{color:var(--warn)}.settings[data-v-88f9bc22]{gap:14px;margin-top:16px;display:grid}.settings .switch[data-v-88f9bc22]{color:var(--ink);background:#ffffff6b;border:1px solid #ffffffc7;border-radius:18px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:13.5px;font-weight:650;display:flex;box-shadow:inset 0 1px #fff}.settings .switch input[data-v-88f9bc22]{box-shadow:none;border:none;padding:0}.row[data-v-88f9bc22]{flex-wrap:wrap;gap:8px;display:flex}.plugin-frame[data-v-88f9bc22]{border:0;border-radius:16px;width:100%;min-height:280px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.connect[data-v-f0d7c649]{gap:var(--gap);grid-template-columns:minmax(0,1.25fr) minmax(290px,.9fr);align-items:start;display:grid}.connection[data-v-f0d7c649]{gap:20px;display:grid}.connection-details[data-v-f0d7c649]{gap:10px;display:grid}.detail[data-v-f0d7c649]{border:1px solid var(--line);background:color-mix(in srgb, var(--surface-strong) 70%, transparent);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:13px 16px;display:flex}.detail code[data-v-f0d7c649]{overflow-wrap:anywhere}.warn-text[data-v-f0d7c649]{color:var(--warn);overflow-wrap:anywhere}.instructions[data-v-f0d7c649]{gap:11px;margin:0;padding-left:22px;line-height:1.65;display:grid}.notes[data-v-f0d7c649]{gap:8px;margin:0;padding-left:20px;font-size:13px;line-height:1.6;display:grid}.note[data-v-f0d7c649]{margin:-8px 0 0;font-size:12px}.checks[data-v-f0d7c649]{gap:8px;margin:0;padding:0;list-style:none;display:grid}.checks li[data-v-f0d7c649]{background:color-mix(in srgb, var(--surface-strong) 70%, transparent);border:1px solid var(--line);border-radius:14px;align-items:center;gap:12px;padding:10px 12px;display:flex}.checks li>div[data-v-f0d7c649]{flex:1;min-width:0;display:grid}.checks small[data-v-f0d7c649]{font-size:12px}.mark[data-v-f0d7c649]{border:2px solid var(--line);border-radius:50%;flex:none;place-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:grid}.done .mark[data-v-f0d7c649]{border-color:var(--ok);background:var(--ok);color:var(--accent-ink)}@media (width<=1000px){.connect[data-v-f0d7c649]{grid-template-columns:minmax(0,1fr)}}.embedding-profile[data-v-6873efbb]{min-width:0}.fields[data-v-6873efbb]{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:14px;margin:16px 0;display:grid}.save-bar[data-v-6873efbb]{position:relative;bottom:auto}.library[data-v-59f18516]{gap:var(--gap);grid-template-columns:minmax(0,1fr);display:grid}.model-workspace[data-v-59f18516]{gap:var(--gap);grid-template-columns:minmax(260px,.32fr) minmax(0,1fr);align-items:start;display:grid}.shelf[data-v-59f18516]{background:radial-gradient(ellipse at 0 0, color-mix(in srgb, var(--glow-a) 23%, transparent), transparent 56%), var(--surface);gap:15px;display:grid;position:sticky;top:14px}.detail[data-v-59f18516]{background:radial-gradient(ellipse at 100% 0, color-mix(in srgb, var(--glow-b) 16%, transparent), transparent 47%), var(--surface)}.usage-panel[data-v-59f18516]{background:radial-gradient(ellipse at 100% 0, color-mix(in srgb, var(--glow-a) 25%, transparent), transparent 42%), radial-gradient(ellipse at 0 100%, color-mix(in srgb, var(--glow-b) 20%, transparent), transparent 46%), var(--surface);grid-column:1/-1;gap:18px;display:grid;overflow:hidden}.usage-intro[data-v-59f18516]{justify-content:space-between;align-items:end;gap:20px;display:flex}.usage-intro h2[data-v-59f18516]{letter-spacing:-.04em;margin:5px 0 4px;font-size:22px}.usage-intro p[data-v-59f18516],.usage-foot small[data-v-59f18516]{color:var(--ink-soft);font-size:12px}.usage-total[data-v-59f18516]{flex:none;justify-items:end;display:grid}.usage-total strong[data-v-59f18516]{color:var(--accent);font:700 clamp(28px, 4vw, 42px) var(--font-display);letter-spacing:-.055em;font-variant-numeric:tabular-nums;line-height:1.05}.usage-total span[data-v-59f18516]{color:var(--ink-soft);font-size:12px}.usage-detail[data-v-59f18516]{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.usage-stat[data-v-59f18516]{background:#ffffff5c;border:1px solid #ffffffc7;border-radius:18px;gap:5px;min-width:0;padding:14px 16px;display:grid;box-shadow:inset 0 1px #fff}.usage-stat span[data-v-59f18516]{color:var(--ink-soft);font-size:12px}.usage-stat span small[data-v-59f18516]{font-size:10px}.usage-stat b[data-v-59f18516]{font-variant-numeric:tabular-nums;text-overflow:ellipsis;font-size:19px;overflow:hidden}.usage-foot[data-v-59f18516]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.usage-error[data-v-59f18516]{color:var(--danger)!important}.usage-refresh[data-v-59f18516]{color:var(--accent);font-size:12px}.shelf-head[data-v-59f18516]{justify-content:space-between;align-items:center;gap:8px;display:flex}.shelf-head h2[data-v-59f18516]{letter-spacing:-.04em;font-size:21px}.shelf-head small[data-v-59f18516]{color:var(--ink-soft);font-size:12px}.rows[data-v-59f18516]{gap:8px;max-height:520px;display:grid;overflow:auto}.saved-vendor[data-v-59f18516]{background:#fff3;border:1px solid #ffffffad;border-radius:17px;overflow:hidden;box-shadow:inset 0 1px #ffffffb8}.saved-vendor>summary[data-v-59f18516]{color:var(--ink);cursor:pointer;justify-content:space-between;align-items:center;gap:8px;padding:11px 13px;font-size:12px;font-weight:700;list-style:none;display:flex}.saved-vendor>summary[data-v-59f18516]::-webkit-details-marker{display:none}.vendor-summary[data-v-59f18516]::-webkit-details-marker{display:none}.saved-vendor>summary[data-v-59f18516]:after{color:var(--accent);content:"⌄";transition:transform .24s var(--spring);font-size:15px}.saved-vendor[open]>summary[data-v-59f18516]{background:#ffffff40;border-bottom:1px solid #fff9}.saved-vendor[open]>summary[data-v-59f18516]:after{transform:rotate(180deg)}.saved-vendor>summary small[data-v-59f18516]{color:var(--ink-soft);margin-left:auto;font-size:10px;font-weight:500}.vendor-models[data-v-59f18516]{gap:6px;padding:7px;display:grid}.entity-row[data-v-59f18516]{text-align:left;-webkit-backdrop-filter:blur(16px)saturate(1.5);backdrop-filter:blur(16px)saturate(1.5);width:100%;transition:transform .32s var(--spring), background-color .2s, box-shadow .25s;background:#ffffff5c;border:1px solid #ffffffbf;border-radius:18px;align-items:center;gap:10px;padding:11px 12px;display:flex;box-shadow:inset 0 1px #fff}.entity-row[data-v-59f18516]:hover:not(:disabled){box-shadow:0 12px 22px -19px var(--accent);background:#ffffffa8;transform:translate(4px)scale(1.01)}.entity-row.selected[data-v-59f18516]{border-color:color-mix(in srgb, var(--accent) 22%, white);background:linear-gradient(115deg, white, color-mix(in srgb, var(--accent-soft) 60%, white));box-shadow:inset 0 1px 0 white, 0 13px 23px -20px var(--accent)}.badge[data-v-59f18516]{background:linear-gradient(145deg, white, hsl(var(--hue) 70% 88%));width:36px;height:36px;color:hsl(var(--hue) 45% 25%);box-shadow:inset 0 1px 0 white, 0 5px 13px -10px hsl(var(--hue) 45% 32%);border-radius:14px;flex:none;place-items:center;font-weight:700;display:grid}.who[data-v-59f18516]{min-width:0;line-height:1.35;display:grid}.who b[data-v-59f18516]{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;overflow:hidden}.who small[data-v-59f18516]{color:var(--ink-soft);font-size:11.5px;font-weight:500}fieldset[data-v-59f18516]{background:linear-gradient(142deg, #ffffffa1, #ffffff47), var(--surface);box-shadow:inset 0 1px 0 white, 0 14px 30px -27px var(--accent);-webkit-backdrop-filter:blur(20px)saturate(1.6);backdrop-filter:blur(20px)saturate(1.6);border:1px solid #ffffffcf;border-radius:24px;gap:10px;margin:0;padding:20px;display:grid}legend[data-v-59f18516]{padding:0 8px;font-size:13px;font-weight:700}.advanced summary[data-v-59f18516]{color:var(--accent);transition:transform .3s var(--spring), background-color .2s;background:#ffffff6b;border:1px solid #fffc;border-radius:14px;padding:12px 15px;font-weight:600;box-shadow:inset 0 1px #fff}.advanced summary[data-v-59f18516]:hover{background:#ffffffa6;transform:translate(3px)}.advanced[open] summary[data-v-59f18516]{margin-bottom:12px}.caps[data-v-59f18516]{flex-wrap:wrap;gap:8px 18px;margin-top:10px;display:flex}.actions[data-v-59f18516]{flex-wrap:wrap;gap:8px;display:flex}.actions .push[data-v-59f18516]{margin-left:auto}.model-picker[data-v-59f18516]{gap:16px;display:grid}.catalog-search[data-v-59f18516]{color:var(--ink-soft);gap:6px;font-size:12px;font-weight:600;display:grid}.catalog-search input[data-v-59f18516]{width:100%;min-height:42px;color:var(--ink);-webkit-backdrop-filter:blur(14px)saturate(1.4);backdrop-filter:blur(14px)saturate(1.4);background:#ffffff9e;border:1px solid #ffffffd9;border-radius:14px;outline:none;padding:0 13px;box-shadow:inset 0 1px #fff}.catalog-search input[data-v-59f18516]:focus{border-color:color-mix(in srgb, var(--accent) 42%, white);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 10%, transparent)}.vendor[data-v-59f18516]{background:radial-gradient(ellipse at 100% 0, color-mix(in srgb, var(--glow-a) 13%, transparent), transparent 48%), #ffffff3b;-webkit-backdrop-filter:blur(18px)saturate(1.35);backdrop-filter:blur(18px)saturate(1.35);border:1px solid #ffffffb8;border-radius:21px;overflow:hidden;box-shadow:inset 0 1px #ffffffc7}.vendor-summary[data-v-59f18516]{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:62px;padding:12px 17px;list-style:none;transition:background-color .2s;display:flex}.vendor-summary[data-v-59f18516]:hover{background:#ffffff57}.vendor-name[data-v-59f18516]{align-items:center;gap:10px;min-width:0;display:flex}.vendor-name b[data-v-59f18516]{font-size:13px}.vendor-name small[data-v-59f18516]{color:var(--ink-soft);font-size:10px}.vendor-chevron[data-v-59f18516]{color:var(--accent);transition:transform .28s var(--spring);font-size:20px;line-height:1}.vendor[open] .vendor-chevron[data-v-59f18516]{transform:rotate(180deg)}.vendor[open] .presets[data-v-59f18516]{animation:vendor-reveal-59f18516 .24s var(--spring) both}@keyframes vendor-reveal-59f18516{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.search-empty[data-v-59f18516]{margin:0}.presets[data-v-59f18516]{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;padding:0 12px 12px;display:grid}.preset-card[data-v-59f18516]{background:radial-gradient(ellipse at 100% 0, color-mix(in srgb, var(--glow-a) 22%, transparent), transparent 55%), #ffffff80;box-shadow:inset 0 1px 0 white, 0 12px 22px -20px var(--accent);text-align:left;-webkit-backdrop-filter:blur(16px)saturate(1.5);backdrop-filter:blur(16px)saturate(1.5);transition:transform .42s var(--spring), box-shadow .25s;border:1px solid #ffffffd1;border-radius:21px;justify-items:start;gap:3px;padding:17px;font-weight:500;display:grid}.preset-card[data-v-59f18516]:hover:not(:disabled){box-shadow:inset 0 1px 0 white, 0 22px 33px -22px var(--accent);transform:translateY(-6px)rotate(-.5deg)scale(1.025)}.preset-card small[data-v-59f18516]{color:var(--ink-soft);font-size:11.5px}@media (width<=900px){.model-workspace[data-v-59f18516]{grid-template-columns:minmax(0,1fr)}.usage-panel[data-v-59f18516]{grid-column:auto}.shelf[data-v-59f18516]{position:static}}@media (width<=620px){.usage-intro[data-v-59f18516]{flex-direction:column;align-items:start}.usage-total[data-v-59f18516]{justify-items:start}.usage-detail[data-v-59f18516]{grid-template-columns:repeat(2,minmax(0,1fr))}}.runtime-grid[data-v-af9bded1]{gap:var(--gap);grid-template-columns:minmax(0,1.55fr) minmax(260px,.8fr);align-items:start;display:grid}.runtime-grid>.card[data-v-af9bded1]{background:radial-gradient(ellipse at 90% 0, color-mix(in srgb, var(--glow-a) 20%, transparent), transparent 55%), var(--surface)}.runtime-grid .card-head h2[data-v-af9bded1]{letter-spacing:-.035em;margin-top:5px;font-size:23px}.switches[data-v-af9bded1]{gap:12px;margin-bottom:20px;display:grid}.switches[data-v-af9bded1] .switch{box-shadow:inset 0 1px 0 white, 0 10px 22px -23px var(--accent);-webkit-backdrop-filter:blur(18px)saturate(1.5);backdrop-filter:blur(18px)saturate(1.5);transition:transform .35s var(--spring), background-color .2s;background:#ffffff69;border:1px solid #ffffffc7;border-radius:22px;align-items:flex-start;padding:18px}.switches[data-v-af9bded1] .switch:hover{background:#ffffffa3;transform:translateY(-3px)scale(1.008)}.switches[data-v-af9bded1] .switch>span{gap:2px;display:grid}.switches small[data-v-af9bded1]{color:var(--ink-soft);font-size:12.5px;font-weight:400}.numbers[data-v-af9bded1]{gap:12px;display:grid}.numbers button[data-v-af9bded1],.numbers .stat[data-v-af9bded1]{background:radial-gradient(ellipse at 100% 0, color-mix(in srgb, var(--glow-b) 24%, transparent), transparent 63%), #ffffff70;box-shadow:inset 0 1px 0 white, 0 12px 26px -24px var(--accent);text-align:left;-webkit-backdrop-filter:blur(18px)saturate(1.55);backdrop-filter:blur(18px)saturate(1.55);transition:transform .38s var(--spring), box-shadow .23s;border:1px solid #ffffffd4;border-radius:22px;justify-items:start;gap:2px;padding:20px 21px;display:grid}.numbers button[data-v-af9bded1]:hover:not(:disabled){box-shadow:inset 0 1px 0 white, 0 18px 28px -22px var(--accent);transform:translate(5px)scale(1.018)}.numbers b[data-v-af9bded1]{font:750 29px var(--font-display);color:var(--accent)}.numbers .stat.warn b[data-v-af9bded1]{color:var(--warn)}.numbers .stat.danger b[data-v-af9bded1]{color:var(--danger)}.numbers span[data-v-af9bded1]{color:var(--ink-soft);font-size:12.5px;font-weight:500}@media (width<=900px){.runtime-grid[data-v-af9bded1]{grid-template-columns:minmax(0,1fr)}}.search-profile[data-v-e874d8b6]{gap:16px;min-width:0;display:grid}.search-profile form[data-v-e874d8b6]{gap:18px;display:grid}.search-fields[data-v-e874d8b6]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.search-fields label[data-v-e874d8b6]{gap:8px;min-width:0;display:grid}.search-fields input[data-v-e874d8b6],.search-fields .menu-select[data-v-e874d8b6]{width:100%;min-width:0}.search-usage[data-v-e874d8b6]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.search-result[data-v-e874d8b6]{border:1px solid var(--line);background:var(--surface);overflow-wrap:anywhere;border-radius:16px;padding:14px 16px}.search-result.failed[data-v-e874d8b6]{border-color:color-mix(in srgb, var(--warn) 40%, var(--line))}@media (width<=620px){.search-fields[data-v-e874d8b6]{grid-template-columns:minmax(0,1fr)}}.storage-page[data-v-6248710c]{gap:var(--gap);display:grid}.storage-page>.card[data-v-6248710c],.storage-grid>.card[data-v-6248710c]{background:radial-gradient(ellipse at 100% 0, color-mix(in srgb, var(--glow-a) 20%, transparent), transparent 60%), var(--surface)}.storage-overview h2[data-v-6248710c]{margin:8px 0;font-size:clamp(24px,3vw,36px)}.storage-overview p[data-v-6248710c],.storage-note[data-v-6248710c]{color:var(--ink-soft);font-size:13px;line-height:1.65}.storage-metrics[data-v-6248710c]{flex-wrap:wrap;gap:12px;margin-top:22px;display:flex}.storage-metrics>div[data-v-6248710c]{background:#ffffff6b;border:1px solid #fffc;border-radius:18px;gap:3px;min-width:150px;padding:15px 20px;display:grid}.storage-metrics b[data-v-6248710c]{color:var(--accent);font-size:23px}.storage-metrics span[data-v-6248710c]{color:var(--ink-soft);font-size:12px}.storage-grid[data-v-6248710c]{gap:var(--gap);grid-template-columns:minmax(270px,.8fr) minmax(0,1.5fr);align-items:start;display:grid}.storage-grid .card-head h2[data-v-6248710c]{margin:4px 0 16px;font-size:23px}.storage-check[data-v-6248710c]{align-items:center;gap:9px;margin-bottom:16px;display:flex}.storage-fields[data-v-6248710c]{gap:13px;display:grid}.storage-fields label[data-v-6248710c]{color:var(--ink-soft);gap:6px;font-size:12px;font-weight:700;display:grid}.storage-fields input[data-v-6248710c]{border:1px solid color-mix(in srgb, var(--accent) 25%, white);width:100%;min-width:0;color:var(--ink);background:#ffffffb3;border-radius:15px;padding:11px 13px}.storage-policy .primary[data-v-6248710c]{margin-top:14px}.storage-actions[data-v-6248710c]{flex-wrap:wrap;gap:8px;margin:16px 0;display:flex}.storage-actions button[data-v-6248710c]{background:#ffffffa6;border-radius:999px;padding:8px 12px}.storage-scroll[data-v-6248710c]{gap:7px;max-height:520px;padding:2px;display:grid;overflow:auto}.storage-row[data-v-6248710c]{cursor:pointer;background:#ffffff7a;border:1px solid #ffffffbf;border-radius:16px;align-items:center;gap:12px;min-width:0;padding:10px 12px;display:flex}.storage-row.protected[data-v-6248710c]{opacity:.7;cursor:default}.storage-item[data-v-6248710c]{flex:1;gap:3px;min-width:0;display:grid}.storage-item strong[data-v-6248710c]{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.storage-item small[data-v-6248710c]{color:var(--ink-soft);font-size:11px}.storage-row>b[data-v-6248710c]{white-space:nowrap;color:var(--accent);font-size:12px}.storage-footer[data-v-6248710c]{color:var(--ink-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding-top:18px;font-size:12px;display:flex}.storage-error[data-v-6248710c]{color:var(--danger);overflow-wrap:anywhere}@media (width<=900px){.storage-grid[data-v-6248710c]{grid-template-columns:minmax(0,1fr)}}@media (width<=560px){.storage-row[data-v-6248710c]{flex-wrap:wrap;align-items:flex-start}.storage-row>b[data-v-6248710c]{margin-left:26px}.storage-metrics>div[data-v-6248710c]{flex:1;min-width:130px}}.system[data-v-ed17d7d1]{gap:var(--gap);display:grid}.system-intro[data-v-ed17d7d1]{background:radial-gradient(ellipse at 90% 7%, color-mix(in srgb, var(--glow-a) 48%, transparent), transparent 51%), radial-gradient(ellipse at 62% 115%, color-mix(in srgb, var(--glow-b) 38%, transparent), transparent 55%), linear-gradient(115deg, #fffc, #ffffff4d);min-height:190px;box-shadow:inset 0 2px 0 white, 0 25px 54px -35px color-mix(in srgb, var(--accent) 43%, transparent);-webkit-backdrop-filter:blur(28px)saturate(1.8);backdrop-filter:blur(28px)saturate(1.8);border:1px solid #ffffffd9;border-radius:36px;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:20px;padding:32px clamp(26px,5vw,60px);display:flex;position:relative;overflow:hidden}.system-intro[data-v-ed17d7d1]:before{content:"";width:350px;height:350px;box-shadow:0 0 0 29px #ffffff21, 0 0 0 58px color-mix(in srgb, var(--glow-b) 12%, transparent);pointer-events:none;border:1px solid #ffffffb8;border-radius:50%;animation:10s ease-in-out infinite alternate system-bob-ed17d7d1;position:absolute;top:-85%;right:13%}.system-intro h1[data-v-ed17d7d1]{letter-spacing:-.055em;margin:10px 0 7px;font-size:clamp(28px,3.25vw,42px)}.system-intro h1 em[data-v-ed17d7d1]{color:var(--accent);font-style:normal}.system-intro p[data-v-ed17d7d1]{max-width:560px;color:var(--ink-soft);font-size:13.5px;position:relative}.system-status[data-v-ed17d7d1]{z-index:1;box-shadow:inset 0 1px 0 white, 0 7px 19px -15px var(--accent);white-space:nowrap;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffff87;border:1px solid #fff;border-radius:999px;align-items:center;gap:9px;padding:10px 16px;font-size:12.5px;font-weight:700;display:inline-flex}.system-status i[data-v-ed17d7d1]{background:var(--ok);width:9px;height:9px;box-shadow:0 0 0 4px color-mix(in srgb, var(--ok) 18%, transparent);border-radius:50%;animation:2.6s ease-in-out infinite pulse-soft}.system-status i.off[data-v-ed17d7d1]{background:var(--ink-faint);box-shadow:0 0 0 4px color-mix(in srgb, var(--ink-faint) 14%, transparent);animation:none}.system>.tabs[data-v-ed17d7d1]{box-shadow:inset 0 1px 0 white, 0 10px 30px -24px var(--accent);-webkit-backdrop-filter:blur(22px)saturate(1.7);backdrop-filter:blur(22px)saturate(1.7);border:1px solid #fffc;justify-self:start;padding:5px}.system[data-v-ed17d7d1]>.tabs button{transition:transform .35s var(--spring), background-color .2s, box-shadow .2s;border-radius:999px;padding:9px 18px}.system[data-v-ed17d7d1]>.tabs button:hover{transform:translateY(-2px)scale(1.03)}.system[data-v-ed17d7d1] .connect .step,.system[data-v-ed17d7d1] .connect .checks li{background:linear-gradient(145deg, #ffffffad, #ffffff47), var(--surface);box-shadow:inset 0 1px 0 white, 0 12px 24px -24px var(--accent);-webkit-backdrop-filter:blur(18px)saturate(1.55);backdrop-filter:blur(18px)saturate(1.55);transition:transform .35s var(--spring), box-shadow .25s;border:1px solid #ffffffd9;border-radius:22px}.system[data-v-ed17d7d1] .connect .step:hover,.system[data-v-ed17d7d1] .connect .checks li:hover{box-shadow:inset 0 1px 0 white, 0 16px 28px -21px var(--accent);transform:translateY(-3px)}.system[data-v-ed17d7d1] .connect .num{background:linear-gradient(145deg, white, color-mix(in srgb, var(--glow-a) 75%, white));box-shadow:inset 0 1px 0 white, 0 5px 14px -9px var(--accent);color:var(--accent);border:1px solid #fff}@keyframes system-bob-ed17d7d1{to{transform:translateY(22px)scale(1.08)}}@media (width<=760px){.system-intro[data-v-ed17d7d1]{min-height:0;padding:27px 23px}}
|