ocean-brain 0.14.0 → 0.15.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.
Files changed (84) hide show
  1. package/package.json +2 -1
  2. package/server/client/dist/assets/ArrowClockwise.es-BwtKWcmj.js +1 -0
  3. package/server/client/dist/assets/{ArrowRight.es-nBJws3ws.js → ArrowRight.es-E09Lfefr.js} +1 -1
  4. package/server/client/dist/assets/{AuxiliaryPanelHeader-BN_2axQu.js → AuxiliaryPanelHeader-Bys98BJJ.js} +1 -1
  5. package/server/client/dist/assets/Calendar-BOhJYi8K.js +25 -0
  6. package/server/client/dist/assets/Callout-CAH1ua9B.js +1 -0
  7. package/server/client/dist/assets/{CaretUp.es-DDbqKn78.js → CaretUp.es-DSWjIa-J.js} +1 -1
  8. package/server/client/dist/assets/{CheckCircle.es-CyY9aLBF.js → CheckCircle.es-Cou6rItm.js} +1 -1
  9. package/server/client/dist/assets/{Copy.es-BwX4tEoU.js → Copy.es-ftEldGIL.js} +1 -1
  10. package/server/client/dist/assets/{File.es-DeTgvUnI.js → File.es-DlKAX1uO.js} +1 -1
  11. package/server/client/dist/assets/{FileText.es-C-bpw8dQ.js → FileText.es-D6JM_MqM.js} +1 -1
  12. package/server/client/dist/assets/{FlowArrow.es-CKcMBOmX.js → FlowArrow.es-BRWXqf9A.js} +1 -1
  13. package/server/client/dist/assets/{Graph-BNoSRJP3.js → Graph-BaqGi3M7.js} +1 -1
  14. package/server/client/dist/assets/{Graph-DYYxNAWn.js → Graph-L-d0cdMk.js} +1 -1
  15. package/server/client/dist/assets/{Image.es-d4jWnijM.js → Image.es-Bh2mTNtr.js} +1 -1
  16. package/server/client/dist/assets/{Info.es-DVzN2joA.js → Info.es-Bwz4CSvS.js} +1 -1
  17. package/server/client/dist/assets/Integration-C-rva2X9.js +1 -0
  18. package/server/client/dist/assets/{LinkSimple.es-BD4aGTc3.js → LinkSimple.es-iJvLf-MB.js} +1 -1
  19. package/server/client/dist/assets/{Note-FL31jb2U.js → Note-OO_uh2a7.js} +4 -4
  20. package/server/client/dist/assets/{NotePropertiesPanel-os22Ppnu.js → NotePropertiesPanel-BFWjxL_w.js} +1 -1
  21. package/server/client/dist/assets/{Plus.es-Cl8zOOZa.js → Plus.es-Dmb3oijD.js} +1 -1
  22. package/server/client/dist/assets/Reminders-CtpFtvu6.js +1 -0
  23. package/server/client/dist/assets/{Search-CPPTW2PO.js → Search-t48pkUg-.js} +2 -2
  24. package/server/client/dist/assets/{SurfaceCard-jL2qzrzF.js → SurfaceCard-zdJ8k1o0.js} +1 -1
  25. package/server/client/dist/assets/{Tag-3DbGmuxa.js → Tag-BL2h3ZaX.js} +1 -1
  26. package/server/client/dist/assets/TagNotes-BpRTCEBf.js +1 -0
  27. package/server/client/dist/assets/{Trash.es-fxukjAO6.js → Trash.es-DFnO8iF5.js} +1 -1
  28. package/server/client/dist/assets/{ViewChip-CVe_HNyd.js → ViewChip-BdPhSEvG.js} +1 -1
  29. package/server/client/dist/assets/Views-BoO6vgnF.js +1 -0
  30. package/server/client/dist/assets/WarningCircle.es-BAvgGuQK.js +1 -0
  31. package/server/client/dist/assets/app-OGsLwSqJ.js +151 -0
  32. package/server/client/dist/assets/app-yYMsgUrz.css +1 -0
  33. package/server/client/dist/assets/{calendar-data-BQ24n348.js → calendar-data-CwVF7Pz3.js} +1 -1
  34. package/server/client/dist/assets/{image.api-CyIIEGkG.js → image.api-CHuhmq_G.js} +1 -1
  35. package/server/client/dist/assets/index-CuCzOHJ6.js +1 -0
  36. package/server/client/dist/assets/integrations-B5SIEnG_.js +1 -0
  37. package/server/client/dist/assets/{manage-image-DXedfr7U.js → manage-image-Kd-7IGfB.js} +1 -1
  38. package/server/client/dist/assets/{manage-image-detail-DmifOPNU.js → manage-image-detail-HU0QLP-t.js} +1 -1
  39. package/server/client/dist/assets/mcp-BQ418pyx.js +5 -0
  40. package/server/client/dist/assets/{mcp-admin-adapter-CmKsg1vd.js → mcp-admin-adapter-CUakQ_Xm.js} +1 -1
  41. package/server/client/dist/assets/{note-ui-DRnAnwKv.js → note-ui-CRcP5BjO.js} +1 -1
  42. package/server/client/dist/assets/{placeholder-G6iEBbDy.js → placeholder-D7JKnpuh.js} +1 -1
  43. package/server/client/dist/assets/{properties-BPobx_Qk.js → properties-CtagYHMr.js} +1 -1
  44. package/server/client/dist/assets/route-preload.js +2 -2
  45. package/server/client/dist/assets/search-B5tCkhwj.js +1 -0
  46. package/server/client/dist/assets/{search-admin-adapter-7sTcWTmv.js → search-admin-adapter-Be9xSY88.js} +1 -1
  47. package/server/client/dist/assets/{tag.api-kKZl04yY.js → tag.api-DGfi8hWL.js} +1 -1
  48. package/server/client/dist/assets/{time-BwwQGbK-.js → time-Kh6oav5R.js} +9 -9
  49. package/server/client/dist/assets/{trash-Cepvi7G8.js → trash-Di2BWyUO.js} +1 -1
  50. package/server/client/dist/assets/{useNoteMutate-D-mZKXjl.js → useNoteMutate-BQj6jHhV.js} +1 -1
  51. package/server/client/dist/assets/{useReminderMutate-Cexk1ydX.js → useReminderMutate-jubqwSD9.js} +1 -1
  52. package/server/client/dist/index.html +5 -5
  53. package/server/dist/app.js +9 -1
  54. package/server/dist/features/app-gateway/access.js +73 -0
  55. package/server/dist/features/app-gateway/database.js +20 -0
  56. package/server/dist/features/app-gateway/gateway.js +208 -0
  57. package/server/dist/features/integration/access-events.js +17 -0
  58. package/server/dist/features/integration/manifest.js +31 -2
  59. package/server/dist/features/integration/note-sync.js +156 -0
  60. package/server/dist/features/integration/service.js +80 -7
  61. package/server/dist/features/integration/status-report.js +22 -0
  62. package/server/dist/features/note/graphql/note.mutation.resolver.js +20 -12
  63. package/server/dist/features/note/graphql/note.query.resolver.js +4 -1
  64. package/server/dist/features/note/services/change-events.js +26 -0
  65. package/server/dist/features/search/search-manager.js +4 -7
  66. package/server/dist/modules/server-events.js +3 -0
  67. package/server/dist/routes/apps.js +163 -0
  68. package/server/dist/routes/index.js +2 -0
  69. package/server/dist/routes/integrations.js +21 -1
  70. package/server/prisma/migrations/20260919090000_0022_integration_proxy_url/migration.sql +2 -0
  71. package/server/prisma/schema.prisma +2 -0
  72. package/server/client/dist/assets/Calendar-vA4Xa4Qr.js +0 -25
  73. package/server/client/dist/assets/Callout-Bo2P960P.js +0 -1
  74. package/server/client/dist/assets/Integration-gDDtIJYJ.js +0 -1
  75. package/server/client/dist/assets/Reminders-Dt2JuGci.js +0 -1
  76. package/server/client/dist/assets/TagNotes-DLwRF8pT.js +0 -1
  77. package/server/client/dist/assets/Views-8ghLRax7.js +0 -1
  78. package/server/client/dist/assets/app-Bcl0U7r9.css +0 -1
  79. package/server/client/dist/assets/app-DzChh-V0.js +0 -151
  80. package/server/client/dist/assets/index-Iy_BgP1R.js +0 -1
  81. package/server/client/dist/assets/integrations-LOdTs1T6.js +0 -1
  82. package/server/client/dist/assets/mcp-d8IzsoRz.js +0 -5
  83. package/server/client/dist/assets/search-DanMKCC8.js +0 -1
  84. package/server/dist/features/search/note-change.js +0 -16
@@ -0,0 +1 @@
1
+ .ProseMirror a{color:var(--fg-muted);cursor:pointer;text-decoration:underline;text-decoration-color:var(--border-secondary);text-underline-offset:2px;transition:color .15s ease,text-decoration-color .15s ease}.ProseMirror a:hover{color:var(--fg-default);text-decoration-color:var(--fg-muted)}@keyframes external-change-gradient-flow{0%{background-position-x:0%}to{background-position-x:-200%}}.bn-editor{--external-change-gradient: linear-gradient( 90deg, rgb(139 92 246 / 60%) 0%, rgb(236 72 153 / 60%) 24%, rgb(192 132 252 / 60%) 50%, rgb(244 114 182 / 60%) 74%, rgb(139 92 246 / 60%) 100% );background:transparent!important;padding-inline:54px 0!important;overflow-wrap:anywhere!important}html.dark .bn-editor{--external-change-gradient: linear-gradient( 90deg, rgb(167 139 250 / 60%) 0%, rgb(244 114 182 / 60%) 24%, rgb(216 180 254 / 60%) 50%, rgb(249 168 212 / 60%) 74%, rgb(167 139 250 / 60%) 100% )}.bn-editor .note-change-text{background-image:var(--external-change-gradient);background-position:0 calc(100% - 2px);background-repeat:repeat-x;background-size:200% 3px;box-decoration-break:clone;-webkit-box-decoration-break:clone;animation:external-change-gradient-flow 3.2s linear infinite}.note-change-status{color:#7c3aed;--external-change-label-gradient: linear-gradient(90deg, #7c3aed, #be185d 24%, #9333ea 50%, #be185d 74%, #7c3aed)}html.dark .note-change-status{color:#a78bfa;--external-change-label-gradient: linear-gradient(90deg, #a78bfa, #f472b6 24%, #d8b4fe 50%, #f9a8d4 74%, #a78bfa)}.note-change-status__label{background-image:var(--external-change-label-gradient);background-size:200% 100%;background-repeat:repeat-x;background-clip:text;-webkit-background-clip:text;color:transparent;animation:external-change-gradient-flow 3.2s linear infinite}.note-change-review{display:flex;align-items:center;gap:12px;padding-block:8px 12px;font-size:.75rem;font-weight:500;line-height:1.5}.note-change-review__done{padding:4px 0;color:var(--fg-secondary);background:transparent;border:0;outline:none;cursor:pointer}.note-change-review__done:hover{color:var(--fg-default)}@media(prefers-reduced-motion:reduce){.bn-editor .note-change-text,.note-change-status__label{background-position-x:50%;animation:none}}.bn-container{--bn-font-family: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;font-family:var(--bn-font-family)!important}.bn-mantine .bn-suggestion-menu{width:min(368px,100vw - 32px);max-height:min(424px,100vh - 96px);padding:6px;background:var(--elevated);border:1px solid var(--border-subtle);border-radius:14px;box-shadow:0 18px 36px -28px #171d2657,0 1px 2px #171d260f;color:var(--fg-default);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border-secondary) transparent}html.dark .bn-mantine .bn-suggestion-menu{box-shadow:0 20px 42px -30px #000000b8,0 1px 2px #00000052}.bn-mantine .mantine-Menu-dropdown,.bn-mantine .bn-menu-dropdown{min-width:148px;padding:5px;background:var(--elevated);border:1px solid var(--border-subtle);border-radius:12px;box-shadow:0 14px 28px -24px #171d264d,0 1px 2px #171d260f;color:var(--fg-default)}html.dark .bn-mantine .mantine-Menu-dropdown,html.dark .bn-mantine .bn-menu-dropdown{box-shadow:0 18px 34px -28px #000000ad,0 1px 2px #00000052}.bn-mantine .mantine-Menu-item{min-height:32px;height:auto;padding:7px 10px;background:transparent;border:1px solid transparent;border-radius:8px;color:var(--fg-secondary);font-size:.8125rem;font-weight:600;line-height:1.35;transition:background .15s ease,border-color .15s ease,color .15s ease}.bn-mantine .mantine-Menu-item[aria-selected=true],.bn-mantine .mantine-Menu-item:hover,.bn-mantine .mantine-Menu-item:focus-visible{background:var(--hover-subtle);border-color:var(--border-subtle);color:var(--fg-default)}.bn-mantine .mantine-Menu-itemLabel{color:inherit}.bn-mantine .bn-suggestion-menu-label{padding:8px 10px 5px;color:var(--fg-tertiary);font-size:.75rem;font-weight:700;line-height:1.2}.bn-mantine .bn-suggestion-menu-label:not(:first-child){margin-top:4px;padding-top:10px;border-top:1px solid var(--border-subtle)}.bn-mantine .bn-suggestion-menu-item{min-height:52px;height:auto;padding:8px 10px;background:transparent;border:1px solid transparent;border-radius:10px;color:var(--fg-default);cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.bn-mantine .bn-suggestion-menu-item:hover,.bn-mantine .bn-suggestion-menu-item[aria-selected=true]{background:var(--hover-subtle);border-color:var(--border-subtle)}.bn-mantine .bn-suggestion-menu-item-small{min-height:34px;padding:7px 10px}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-body{min-width:0;padding-right:10px}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-section[data-position=left]{flex:0 0 32px;width:32px;height:32px;margin-inline-end:10px;padding:0;background:var(--muted);border:1px solid var(--border-subtle);border-radius:8px;color:var(--fg-secondary)}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-section[data-position=left] svg{width:16px;height:16px}.bn-mantine .bn-suggestion-menu-item:hover .bn-mt-suggestion-menu-item-section[data-position=left],.bn-mantine .bn-suggestion-menu-item[aria-selected=true] .bn-mt-suggestion-menu-item-section[data-position=left]{background:var(--surface);border-color:var(--border-secondary);color:var(--fg-default)}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-section[data-position=right]{flex:0 0 auto;margin-inline-start:8px;color:var(--fg-tertiary)}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-section[data-position=right] .mantine-Badge-root{height:20px;padding:0 6px;background:var(--muted);border:1px solid var(--border-subtle);border-radius:7px;color:var(--fg-tertiary);font-size:.6875rem;font-weight:600;line-height:18px;letter-spacing:0;text-transform:none;white-space:nowrap}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-title,.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-subtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-title{color:var(--fg-default);font-size:.875rem;font-weight:600;line-height:1.35}.bn-mantine .bn-suggestion-menu-item-small .bn-mt-suggestion-menu-item-title{font-size:.8125rem}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-subtitle{color:var(--fg-tertiary);font-size:.75rem;line-height:1.35}@media(max-width:640px){.bn-mantine .bn-suggestion-menu{width:calc(100vw - 24px);max-height:min(360px,100vh - 80px)}.bn-mantine .bn-suggestion-menu .bn-mt-suggestion-menu-item-section[data-position=right] .mantine-Badge-root{max-width:84px;overflow:hidden;text-overflow:ellipsis}}.bn-default-styles,.bn-default-styles p,.bn-default-styles li,.bn-default-styles h1,.bn-default-styles h2,.bn-default-styles h3,.bn-default-styles h4,.bn-default-styles h5,.bn-default-styles h6,.bn-container button,.bn-container input,.bn-container select,.bn-container textarea{font-family:var(--bn-font-family)!important}.bn-inline-content code{color:var(--fg-muted);background:color-mix(in srgb,var(--highlight) 72%,transparent);border:1px solid color-mix(in srgb,var(--border-subtle) 72%,transparent);border-radius:6px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.9em;letter-spacing:0;padding:.08em .34em;box-decoration-break:clone;-webkit-box-decoration-break:clone}.bn-file-block-content-wrapper{max-width:100%}.bn-block-content[data-content-type=codeBlock]{background-color:#181b20;border:1px solid rgba(255,255,255,.08);border-radius:10px}.bn-block-content[data-content-type=codeBlock]:has(>[data-rich-code-toolbar]){flex-direction:column;overflow:hidden;background-color:var(--elevated);border-color:var(--border-subtle);color:var(--fg-default)}.bn-block-content[data-content-type=codeBlock]:has(>[data-rich-code-toolbar])>div>select{display:none}[data-rich-code-preview] svg foreignObject p{font-family:inherit!important;line-height:inherit}.bn-block-content[data-content-type=codeBlock]>pre{color:#ffffffd6;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:1rem;line-height:1.65}.bn-block-content[data-content-type=codeBlock]>div>select{border-radius:6px;color:#ffffffb8}.bn-editor [data-content-type=table] .tableWrapper{--default-cell-min-width: 112px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--border-secondary) transparent}.bn-editor [data-content-type=table] table{overflow:hidden;background:var(--elevated);border:1px solid var(--border-subtle);border-radius:10px;border-collapse:separate;border-spacing:0}.bn-editor [data-content-type=table] th,.bn-editor [data-content-type=table] td{min-width:112px;padding:8px 10px;background:var(--elevated);border:0;border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);color:var(--fg-default);vertical-align:top}.bn-editor [data-content-type=table] th{background:var(--muted);color:var(--fg-muted);font-weight:600}.bn-editor [data-content-type=table] tr>:last-child{border-right:0}.bn-editor [data-content-type=table] tr:last-child>*{border-bottom:0}.bn-editor [data-content-type=table] th:hover,.bn-editor [data-content-type=table] td:hover{background:var(--hover-subtle)}.ProseMirror .selectedCell:after{background:color-mix(in srgb,var(--accent-soft-primary) 58%,transparent);box-shadow:inset 0 0 0 1px var(--border-focus);pointer-events:none}.ProseMirror .column-resize-handle,.bn-table-drop-cursor{background:var(--accent-primary)}.bn-mantine .bn-table-handle,.bn-mantine .bn-extend-button,.bn-mantine .bn-table-cell-handle{background:var(--elevated);border:1px solid var(--border-subtle);border-radius:7px;box-shadow:0 8px 18px -16px #171d2638;color:var(--fg-tertiary);transition:background .15s ease,border-color .15s ease,color .15s ease}.bn-mantine .bn-table-handle:hover,.bn-mantine .bn-table-handle-dragging,.bn-mantine .bn-extend-button:hover,.bn-mantine .bn-extend-button-editing,.bn-mantine .bn-table-cell-handle:hover{background:var(--hover-subtle);border-color:var(--border-secondary);color:var(--fg-default)}.bn-default-styles [data-content-type=heading]{--level: 1.375rem;--ob-heading-color: var(--fg-default);--ob-heading-letter-spacing: -.01em;--ob-heading-line-height: 1.35;--ob-heading-weight: 700}.bn-default-styles [data-content-type=heading][data-level="2"]{--level: 1.1875rem;--ob-heading-letter-spacing: -.005em;--ob-heading-line-height: 1.4;--ob-heading-weight: 650}.bn-default-styles [data-content-type=heading][data-level="3"]{--level: 1.0625rem;--ob-heading-letter-spacing: 0;--ob-heading-line-height: 1.45;--ob-heading-weight: 620}.bn-default-styles [data-content-type=heading][data-level="4"]{--level: 1rem;--ob-heading-letter-spacing: 0;--ob-heading-line-height: 1.5;--ob-heading-weight: 600}.bn-default-styles [data-content-type=heading][data-level="5"]{--level: 1rem;--ob-heading-color: var(--fg-muted);--ob-heading-letter-spacing: 0;--ob-heading-line-height: 1.5;--ob-heading-weight: 560}.bn-default-styles [data-content-type=heading][data-level="6"]{--level: 1rem;--ob-heading-color: var(--fg-secondary);--ob-heading-letter-spacing: .01em;--ob-heading-line-height: 1.5;--ob-heading-weight: 520}.bn-default-styles [data-prev-level="1"]{--prev-level: 1.375rem;--ob-prev-heading-letter-spacing: -.01em;--ob-prev-heading-line-height: 1.35;--ob-prev-heading-weight: 700}.bn-default-styles [data-prev-level="2"]{--prev-level: 1.1875rem;--ob-prev-heading-letter-spacing: -.005em;--ob-prev-heading-line-height: 1.4;--ob-prev-heading-weight: 650}.bn-default-styles [data-prev-level="3"]{--prev-level: 1.0625rem;--ob-prev-heading-letter-spacing: 0;--ob-prev-heading-line-height: 1.45;--ob-prev-heading-weight: 620}.bn-default-styles [data-prev-level="4"]{--prev-level: 1rem;--ob-prev-heading-letter-spacing: 0;--ob-prev-heading-line-height: 1.5;--ob-prev-heading-weight: 600}.bn-default-styles [data-prev-level="5"]{--prev-level: 1rem;--ob-prev-heading-letter-spacing: 0;--ob-prev-heading-line-height: 1.5;--ob-prev-heading-weight: 560}.bn-default-styles [data-prev-level="6"]{--prev-level: 1rem;--ob-prev-heading-letter-spacing: .01em;--ob-prev-heading-line-height: 1.5;--ob-prev-heading-weight: 520}.bn-default-styles .bn-block-outer:not([data-prev-type])>.bn-block>.bn-block-content[data-content-type=heading],.bn-default-styles .bn-block-outer:not([data-prev-type])>.bn-block>div[data-type=modification]>div[data-type=modification]>.bn-block-content[data-content-type=heading]{color:var(--ob-heading-color, var(--fg-default));font-size:var(--level);font-weight:var(--ob-heading-weight, 600);letter-spacing:var(--ob-heading-letter-spacing, 0);line-height:var(--ob-heading-line-height, 1.5)}.bn-default-styles .bn-block-outer[data-prev-type=heading]>.bn-block>.bn-block-content{font-size:var(--prev-level);font-weight:var(--ob-prev-heading-weight, 600);letter-spacing:var(--ob-prev-heading-letter-spacing, 0);line-height:var(--ob-prev-heading-line-height, 1.5)}.bn-default-styles p{line-height:1.7}.bn-default-styles li{line-height:1.65}.bn-block-outer:not([data-prev-type])>.bn-block>.bn-block-content[data-content-type=numberedListItem]:before{content:var(--index) ".";white-space:nowrap}.bn-mantine .bn-side-menu[data-block-type=heading][data-level="1"]{height:36px}.bn-mantine .bn-side-menu[data-block-type=heading][data-level="2"]{height:33px}.bn-mantine .bn-side-menu[data-block-type=heading][data-level="3"]{height:31px}.bn-mantine .bn-side-menu[data-block-type=heading][data-level="4"],.bn-mantine .bn-side-menu[data-block-type=heading][data-level="5"],.bn-mantine .bn-side-menu[data-block-type=heading][data-level="6"]{height:30px}@font-face{font-family:Pretendard;font-weight:700;font-display:swap;src:local("Pretendard Bold"),url(/fonts/Pretendard-Bold.woff2) format("woff2")}@font-face{font-family:Pretendard;font-weight:400;font-display:swap;src:local("Pretendard Regular"),url(/fonts/Pretendard-Regular.woff2) format("woff2")}html,body,#root{width:100%;height:100%;margin:0;padding:0;overflow:hidden}html{background:var(--page-bg);color:var(--fg-default)}html.dark{background-color:var(--page-bg);color:var(--fg-default)}body{font-family:Pretendard,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--page-bg);color:var(--fg-default);word-wrap:break-word;word-break:keep-all;overflow-wrap:anywhere}div:focus:not(:focus-visible){outline:none}.window-modal__container{z-index:1002}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-700:oklch(50.5% .213 27.518);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-700:oklch(50% .134 242.749);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-normal:1.5;--leading-relaxed:1.625;--radius-lg:14px;--radius-xl:18px;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-2xl:40px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-pastel-yellow-200:#d8c4a8;--color-pastel-green-200:#9fb39d;--color-pastel-pink-200:#d6a3a0;--color-pastel-orange-200:#cfa88d;--color-pastel-blue-200:#9cafb9;--color-pastel-lavender-200:#c0b7c6;--color-priority-high:#e4a29f;--color-priority-medium:#deb07e;--color-priority-low:#dec988;--color-surface:var(--surface);--color-muted:var(--muted);--color-subtle:var(--subtle);--color-elevated:var(--elevated);--color-emphasis:var(--emphasis);--color-hover:var(--hover);--color-hover-subtle:var(--hover-subtle);--color-active:var(--active);--color-fg-default:var(--fg-default);--color-fg-muted:var(--fg-muted);--color-fg-secondary:var(--fg-secondary);--color-fg-tertiary:var(--fg-tertiary);--color-fg-disabled:var(--fg-disabled);--color-fg-placeholder:var(--fg-placeholder);--color-fg-error:var(--fg-error);--color-fg-on-filled:var(--fg-on-filled);--color-fg-weekend:var(--fg-weekend);--color-border:var(--border);--color-border-secondary:var(--border-secondary);--color-border-subtle:var(--border-subtle);--color-border-focus:var(--border-focus);--color-border-error:var(--border-error);--color-accent-primary:var(--accent-primary);--color-accent-secondary:var(--accent-secondary);--color-accent-secondary-hover:var(--accent-secondary-hover);--color-accent-danger:var(--accent-danger);--color-accent-danger-hover:var(--accent-danger-hover);--color-accent-success:var(--accent-success);--color-accent-soft-primary:var(--accent-soft-primary);--color-accent-soft-danger:var(--accent-soft-danger);--color-accent-soft-danger-hover:var(--accent-soft-danger-hover);--color-accent-soft-success:var(--accent-soft-success);--color-accent-soft-success-hover:var(--accent-soft-success-hover);--color-cta:var(--cta);--color-cta-hover:var(--cta-hover);--color-overlay:var(--overlay);--color-divider:var(--divider);--radius-full:9999px;--animate-fade-in:fade-in .2s ease-out;--animate-zoom-in:zoom-in .2s ease-out;--animate-shimmer:shimmer 1.5s infinite}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-10{top:calc(var(--spacing) * -10)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-20{top:calc(var(--spacing) * 20)}.-right-10{right:calc(var(--spacing) * -10)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-\[-14px\]{right:-14px}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-\[-4px\]{bottom:-4px}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.left-5{left:calc(var(--spacing) * 5)}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[1001\]{z-index:1001}.z-\[1002\]{z-index:1002}.z-\[1003\]{z-index:1003}.z-\[1090\]{z-index:1090}.z-\[1100\]{z-index:1100}.z-\[1200\]{z-index:1200}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-m-1{margin:calc(var(--spacing) * -1)}.m-4{margin:calc(var(--spacing) * 4)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.\!mt-0{margin-top:calc(var(--spacing) * 0)!important}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-\[2px\]{margin-top:2px}.mt-\[6px\]{margin-top:6px}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.ml-0{margin-left:calc(var(--spacing) * 0)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-12{margin-left:calc(var(--spacing) * 12)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-28{height:calc(var(--spacing) * 28)}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[24px\]{height:24px}.h-\[34px\]{height:34px}.h-\[72px\]{height:72px}.h-\[98px\]{height:98px}.h-\[248px\]{height:248px}.h-\[300px\]{height:300px}.h-\[320px\]{height:320px}.h-\[400px\]{height:400px}.h-\[clamp\(36rem\,calc\(100dvh-8rem\)\,72rem\)\]{height:clamp(36rem,100dvh - 8rem,72rem)}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-52{max-height:calc(var(--spacing) * 52)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[calc\(100dvh-0\.75rem\)\]{max-height:calc(100dvh - .75rem)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-20{min-height:calc(var(--spacing) * 20)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-\[38px\]{min-height:38px}.min-h-\[60px\]{min-height:60px}.min-h-\[72px\]{min-height:72px}.min-h-\[80px\]{min-height:80px}.min-h-\[84px\]{min-height:84px}.min-h-\[100px\]{min-height:100px}.min-h-\[112px\]{min-height:112px}.min-h-\[248px\]{min-height:248px}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-28{width:calc(var(--spacing) * 28)}.w-\[17rem\]{width:17rem}.w-\[18px\]{width:18px}.w-\[18rem\]{width:18rem}.w-\[34px\]{width:34px}.w-\[148px\]{width:148px}.w-\[220px\]{width:220px}.w-\[min\(22rem\,calc\(100vw-2rem\)\)\]{width:min(22rem,100vw - 2rem)}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-5xl{max-width:var(--container-5xl)}.max-w-52{max-width:calc(var(--spacing) * 52)}.max-w-\[12rem\]{max-width:12rem}.max-w-\[34rem\]{max-width:34rem}.max-w-\[44rem\]{max-width:44rem}.max-w-\[72\%\]{max-width:72%}.max-w-\[72px\]{max-width:72px}.max-w-\[72vw\]{max-width:72vw}.max-w-\[116px\]{max-width:116px}.max-w-\[132px\]{max-width:132px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[400px\]{max-width:400px}.max-w-\[640px\]{max-width:640px}.max-w-\[896px\]{max-width:896px}.max-w-\[min\(420px\,calc\(100vw-32px\)\)\]{max-width:min(420px,100vw - 32px)}.max-w-full{max-width:100%}.max-w-none{max-width:none}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-6{min-width:calc(var(--spacing) * 6)}.min-w-11{min-width:calc(var(--spacing) * 11)}.min-w-26{min-width:calc(var(--spacing) * 26)}.min-w-28{min-width:calc(var(--spacing) * 28)}.min-w-\[1\.5rem\]{min-width:1.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[10rem\]{min-width:10rem}.min-w-\[19rem\]{min-width:19rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-\[0_0_300px\]{flex:0 0 300px}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.basis-\[28rem\]{flex-basis:28rem}.basis-full{flex-basis:100%}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-\[38\%\]{--tw-translate-y: -38% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-fade-in{animation:var(--animate-fade-in)}.animate-pulse{animation:var(--animate-pulse)}.animate-shimmer{animation:var(--animate-shimmer)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pan-x{--tw-pan-x:pan-x;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.list-decimal{list-style-type:decimal}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,5\.5rem\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,5.5rem) minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px * var(--tw-space-y-reverse));margin-block-end:calc(1px * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border-subtle>:not(:last-child)),:where(.divide-border-subtle\/70>:not(:last-child)){border-color:var(--color-border-subtle)}@supports (color:color-mix(in lab,red,red)){:where(.divide-border-subtle\/70>:not(:last-child)){border-color:color-mix(in oklab,var(--color-border-subtle) 70%,transparent)}}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.overscroll-x-contain{overscroll-behavior-x:contain}.overscroll-y-contain{overscroll-behavior-y:contain}.rounded-\[6px\]{border-radius:6px}.rounded-\[7px\]{border-radius:7px}.rounded-\[8px\]{border-radius:8px}.rounded-\[9px\]{border-radius:9px}.rounded-\[10px\]{border-radius:10px}.rounded-\[11px\]{border-radius:11px}.rounded-\[12px\]{border-radius:12px}.rounded-\[13px\]{border-radius:13px}.rounded-\[14px\]{border-radius:14px}.rounded-\[15px\]{border-radius:15px}.rounded-\[16px\]{border-radius:16px}.rounded-\[18px\]{border-radius:18px}.rounded-\[20px\]{border-radius:20px}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-\[18px\]{border-top-left-radius:18px;border-top-right-radius:18px}.rounded-t-\[20px\]{border-top-left-radius:20px;border-top-right-radius:20px}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-accent-primary\/45{border-color:var(--color-accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-primary\/45{border-color:color-mix(in oklab,var(--color-accent-primary) 45%,transparent)}}.border-accent-primary\/50{border-color:var(--color-accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-primary\/50{border-color:color-mix(in oklab,var(--color-accent-primary) 50%,transparent)}}.border-amber-200\/70{border-color:#fee685b3}@supports (color:color-mix(in lab,red,red)){.border-amber-200\/70{border-color:color-mix(in oklab,var(--color-amber-200) 70%,transparent)}}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.border-black\/5{border-color:color-mix(in oklab,var(--color-black) 5%,transparent)}}.border-border{border-color:var(--color-border)}.border-border-error,.border-border-error\/70{border-color:var(--color-border-error)}@supports (color:color-mix(in lab,red,red)){.border-border-error\/70{border-color:color-mix(in oklab,var(--color-border-error) 70%,transparent)}}.border-border-secondary,.border-border-secondary\/70{border-color:var(--color-border-secondary)}@supports (color:color-mix(in lab,red,red)){.border-border-secondary\/70{border-color:color-mix(in oklab,var(--color-border-secondary) 70%,transparent)}}.border-border-secondary\/80{border-color:var(--color-border-secondary)}@supports (color:color-mix(in lab,red,red)){.border-border-secondary\/80{border-color:color-mix(in oklab,var(--color-border-secondary) 80%,transparent)}}.border-border-subtle,.border-border-subtle\/60{border-color:var(--color-border-subtle)}@supports (color:color-mix(in lab,red,red)){.border-border-subtle\/60{border-color:color-mix(in oklab,var(--color-border-subtle) 60%,transparent)}}.border-border-subtle\/65{border-color:var(--color-border-subtle)}@supports (color:color-mix(in lab,red,red)){.border-border-subtle\/65{border-color:color-mix(in oklab,var(--color-border-subtle) 65%,transparent)}}.border-border-subtle\/70{border-color:var(--color-border-subtle)}@supports (color:color-mix(in lab,red,red)){.border-border-subtle\/70{border-color:color-mix(in oklab,var(--color-border-subtle) 70%,transparent)}}.border-border-subtle\/75{border-color:var(--color-border-subtle)}@supports (color:color-mix(in lab,red,red)){.border-border-subtle\/75{border-color:color-mix(in oklab,var(--color-border-subtle) 75%,transparent)}}.border-border-subtle\/80{border-color:var(--color-border-subtle)}@supports (color:color-mix(in lab,red,red)){.border-border-subtle\/80{border-color:color-mix(in oklab,var(--color-border-subtle) 80%,transparent)}}.border-cta{border-color:var(--color-cta)}.border-fg-muted{border-color:var(--color-fg-muted)}.border-sky-200\/75{border-color:#b8e6febf}@supports (color:color-mix(in lab,red,red)){.border-sky-200\/75{border-color:color-mix(in oklab,var(--color-sky-200) 75%,transparent)}}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.border-white\/14{border-color:#ffffff24}@supports (color:color-mix(in lab,red,red)){.border-white\/14{border-color:color-mix(in oklab,var(--color-white) 14%,transparent)}}.bg-\[\#181b20\]{background-color:#181b20}.bg-\[color-mix\(in_srgb\,var\(--elevated\)_72\%\,var\(--hover-subtle\)\)\]{background-color:var(--elevated)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--elevated\)_72\%\,var\(--hover-subtle\)\)\]{background-color:color-mix(in srgb,var(--elevated) 72%,var(--hover-subtle))}}.bg-\[var\(--page-bg\)\]{background-color:var(--page-bg)}.bg-accent-danger{background-color:var(--color-accent-danger)}.bg-accent-primary\/6{background-color:var(--color-accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/6{background-color:color-mix(in oklab,var(--color-accent-primary) 6%,transparent)}}.bg-accent-secondary{background-color:var(--color-accent-secondary)}.bg-accent-soft-danger,.bg-accent-soft-danger\/40{background-color:var(--color-accent-soft-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-soft-danger\/40{background-color:color-mix(in oklab,var(--color-accent-soft-danger) 40%,transparent)}}.bg-accent-soft-danger\/60{background-color:var(--color-accent-soft-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-soft-danger\/60{background-color:color-mix(in oklab,var(--color-accent-soft-danger) 60%,transparent)}}.bg-accent-soft-danger\/70{background-color:var(--color-accent-soft-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-soft-danger\/70{background-color:color-mix(in oklab,var(--color-accent-soft-danger) 70%,transparent)}}.bg-accent-soft-primary{background-color:var(--color-accent-soft-primary)}.bg-accent-soft-success{background-color:var(--color-accent-soft-success)}.bg-black\/5{background-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.bg-black\/5{background-color:color-mix(in oklab,var(--color-black) 5%,transparent)}}.bg-black\/24{background-color:#0000003d}@supports (color:color-mix(in lab,red,red)){.bg-black\/24{background-color:color-mix(in oklab,var(--color-black) 24%,transparent)}}.bg-border-secondary{background-color:var(--color-border-secondary)}.bg-border-subtle,.bg-border-subtle\/70{background-color:var(--color-border-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-border-subtle\/70{background-color:color-mix(in oklab,var(--color-border-subtle) 70%,transparent)}}.bg-cta{background-color:var(--color-cta)}.bg-divider{background-color:var(--color-divider)}.bg-elevated,.bg-elevated\/60{background-color:var(--color-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-elevated\/60{background-color:color-mix(in oklab,var(--color-elevated) 60%,transparent)}}.bg-emerald-500\/12{background-color:#00bb7f1f}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/12{background-color:color-mix(in oklab,var(--color-emerald-500) 12%,transparent)}}.bg-emphasis{background-color:var(--color-emphasis)}.bg-fg-on-filled{background-color:var(--color-fg-on-filled)}.bg-fg-placeholder{background-color:var(--color-fg-placeholder)}.bg-fg-secondary{background-color:var(--color-fg-secondary)}.bg-hover-subtle,.bg-hover-subtle\/40{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-hover-subtle\/40{background-color:color-mix(in oklab,var(--color-hover-subtle) 40%,transparent)}}.bg-hover-subtle\/50{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-hover-subtle\/50{background-color:color-mix(in oklab,var(--color-hover-subtle) 50%,transparent)}}.bg-hover-subtle\/55{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-hover-subtle\/55{background-color:color-mix(in oklab,var(--color-hover-subtle) 55%,transparent)}}.bg-hover-subtle\/60{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-hover-subtle\/60{background-color:color-mix(in oklab,var(--color-hover-subtle) 60%,transparent)}}.bg-hover-subtle\/70{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-hover-subtle\/70{background-color:color-mix(in oklab,var(--color-hover-subtle) 70%,transparent)}}.bg-hover-subtle\/75{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-hover-subtle\/75{background-color:color-mix(in oklab,var(--color-hover-subtle) 75%,transparent)}}.bg-muted,.bg-muted\/25{background-color:var(--color-muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/25{background-color:color-mix(in oklab,var(--color-muted) 25%,transparent)}}.bg-muted\/30{background-color:var(--color-muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted) 30%,transparent)}}.bg-muted\/40{background-color:var(--color-muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--color-muted) 40%,transparent)}}.bg-muted\/70{background-color:var(--color-muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/70{background-color:color-mix(in oklab,var(--color-muted) 70%,transparent)}}.bg-overlay{background-color:var(--color-overlay)}.bg-pastel-blue-200{background-color:var(--color-pastel-blue-200)}.bg-pastel-green-200{background-color:var(--color-pastel-green-200)}.bg-pastel-orange-200{background-color:var(--color-pastel-orange-200)}.bg-pastel-pink-200{background-color:var(--color-pastel-pink-200)}.bg-priority-high{background-color:var(--color-priority-high)}.bg-priority-low{background-color:var(--color-priority-low)}.bg-priority-medium{background-color:var(--color-priority-medium)}.bg-red-200{background-color:var(--color-red-200)}.bg-rose-500\/12{background-color:#ff23571f}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/12{background-color:color-mix(in oklab,var(--color-rose-500) 12%,transparent)}}.bg-sky-500\/12{background-color:#00a5ef1f}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/12{background-color:color-mix(in oklab,var(--color-sky-500) 12%,transparent)}}.bg-subtle,.bg-subtle\/30{background-color:var(--color-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-subtle\/30{background-color:color-mix(in oklab,var(--color-subtle) 30%,transparent)}}.bg-subtle\/35{background-color:var(--color-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-subtle\/35{background-color:color-mix(in oklab,var(--color-subtle) 35%,transparent)}}.bg-subtle\/40{background-color:var(--color-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-subtle\/40{background-color:color-mix(in oklab,var(--color-subtle) 40%,transparent)}}.bg-subtle\/45{background-color:var(--color-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-subtle\/45{background-color:color-mix(in oklab,var(--color-subtle) 45%,transparent)}}.bg-subtle\/50{background-color:var(--color-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-subtle\/50{background-color:color-mix(in oklab,var(--color-subtle) 50%,transparent)}}.bg-subtle\/55{background-color:var(--color-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-subtle\/55{background-color:color-mix(in oklab,var(--color-subtle) 55%,transparent)}}.bg-subtle\/65{background-color:var(--color-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-subtle\/65{background-color:color-mix(in oklab,var(--color-subtle) 65%,transparent)}}.bg-subtle\/70{background-color:var(--color-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-subtle\/70{background-color:color-mix(in oklab,var(--color-subtle) 70%,transparent)}}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/55{background-color:#ffffff8c}@supports (color:color-mix(in lab,red,red)){.bg-white\/55{background-color:color-mix(in oklab,var(--color-white) 55%,transparent)}}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(135deg\,\#f8fbff_0\%\,\#f1efff_54\%\,\#eafaf4_100\%\)\]{background-image:linear-gradient(135deg,#f8fbff,#f1efff 54%,#eafaf4)}.bg-\[linear-gradient\(135deg\,\#fffaf0_0\%\,\#eef7ff_58\%\,\#e7f6fb_100\%\)\]{background-image:linear-gradient(135deg,#fffaf0,#eef7ff 58%,#e7f6fb)}.from-pastel-lavender-200\/30{--tw-gradient-from:#c0b7c64d}@supports (color:color-mix(in lab,red,red)){.from-pastel-lavender-200\/30{--tw-gradient-from:color-mix(in oklab, var(--color-pastel-lavender-200) 30%, transparent)}}.from-pastel-lavender-200\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-pastel-yellow-200\/20{--tw-gradient-via:#d8c4a833}@supports (color:color-mix(in lab,red,red)){.via-pastel-yellow-200\/20{--tw-gradient-via:color-mix(in oklab, var(--color-pastel-yellow-200) 20%, transparent)}}.via-pastel-yellow-200\/20{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-pastel-lavender-200\/30{--tw-gradient-to:#c0b7c64d}@supports (color:color-mix(in lab,red,red)){.to-pastel-lavender-200\/30{--tw-gradient-to:color-mix(in oklab, var(--color-pastel-lavender-200) 30%, transparent)}}.to-pastel-lavender-200\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-\[length\:200\%_100\%\]{background-size:200% 100%}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-right-bottom{object-position:right bottom}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-44{padding-right:calc(var(--spacing) * 44)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-3\.5{padding-bottom:calc(var(--spacing) * 3.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-\[26px\]{padding-left:26px}.pl-\[40px\]{padding-left:40px}.pl-\[54px\]{padding-left:54px}.pl-\[68px\]{padding-left:68px}.pl-\[82px\]{padding-left:82px}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\!text-\[10px\]{font-size:10px!important}.\!text-\[11px\]{font-size:11px!important}.text-\[10px\]{font-size:10px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.\!leading-3{--tw-leading:calc(var(--spacing) * 3)!important;line-height:calc(var(--spacing) * 3)!important}.\!leading-4{--tw-leading:calc(var(--spacing) * 4)!important;line-height:calc(var(--spacing) * 4)!important}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[1\.2\]{--tw-leading:1.2;line-height:1.2}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[1\.25\]{--tw-leading:1.25;line-height:1.25}.leading-\[1\.45\]{--tw-leading:1.45;line-height:1.45}.leading-\[1\.65\]{--tw-leading:1.65;line-height:1.65}.leading-\[16px\]{--tw-leading:16px;line-height:16px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[-0\.02em\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-success{color:var(--color-accent-success)}.text-black{color:var(--color-black)}.text-black\/55{color:#0000008c}@supports (color:color-mix(in lab,red,red)){.text-black\/55{color:color-mix(in oklab,var(--color-black) 55%,transparent)}}.text-current,.text-current\/70{color:currentColor}@supports (color:color-mix(in lab,red,red)){.text-current\/70{color:color-mix(in oklab,currentcolor 70%,transparent)}}.text-emerald-700{color:var(--color-emerald-700)}.text-fg-default,.text-fg-default\/70{color:var(--color-fg-default)}@supports (color:color-mix(in lab,red,red)){.text-fg-default\/70{color:color-mix(in oklab,var(--color-fg-default) 70%,transparent)}}.text-fg-disabled{color:var(--color-fg-disabled)}.text-fg-error{color:var(--color-fg-error)}.text-fg-muted{color:var(--color-fg-muted)}.text-fg-on-filled{color:var(--color-fg-on-filled)}.text-fg-placeholder{color:var(--color-fg-placeholder)}.text-fg-secondary{color:var(--color-fg-secondary)}.text-fg-tertiary,.text-fg-tertiary\/85{color:var(--color-fg-tertiary)}@supports (color:color-mix(in lab,red,red)){.text-fg-tertiary\/85{color:color-mix(in oklab,var(--color-fg-tertiary) 85%,transparent)}}.text-fg-weekend{color:var(--color-fg-weekend)}.text-red-700{color:var(--color-red-700)}.text-rose-700{color:var(--color-rose-700)}.text-sky-700{color:var(--color-sky-700)}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.text-white\/85{color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.text-white\/85{color:color-mix(in oklab,var(--color-white) 85%,transparent)}}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-border-secondary{-webkit-text-decoration-color:var(--color-border-secondary);text-decoration-color:var(--color-border-secondary)}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-cta{accent-color:var(--color-cta)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-95{opacity:.95}.shadow-\[0_8px_18px_-14px_rgba\(0\,0\,0\,0\.45\)\]{--tw-shadow:0 8px 18px -14px var(--tw-shadow-color,#00000073);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_18px_-14px_rgba\(23\,29\,38\,0\.32\)\]{--tw-shadow:0 8px 18px -14px var(--tw-shadow-color,#171d2652);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_18px_-16px_rgba\(15\,18\,24\,0\.28\)\]{--tw-shadow:0 8px 18px -16px var(--tw-shadow-color,#0f121847);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_18px_-18px_rgba\(15\,18\,24\,0\.28\)\]{--tw-shadow:0 8px 18px -18px var(--tw-shadow-color,#0f121847);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_24px_-18px_rgba\(0\,0\,0\,0\.35\)\]{--tw-shadow:0 12px 24px -18px var(--tw-shadow-color,#00000059);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_16px_36px_-24px_rgba\(15\,18\,24\,0\.24\)\]{--tw-shadow:0 16px 36px -24px var(--tw-shadow-color,#0f12183d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_18px_44px_-28px_rgba\(15\,18\,24\,0\.28\)\]{--tw-shadow:0 18px 44px -28px var(--tw-shadow-color,#0f121847);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_22px_56px_-30px_rgba\(15\,18\,24\,0\.32\)\]{--tw-shadow:0 22px 56px -30px var(--tw-shadow-color,#0f121852);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_24px_64px_-30px_rgba\(15\,18\,24\,0\.34\)\]{--tw-shadow:0 24px 64px -30px var(--tw-shadow-color,#0f121857);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_24px_64px_-32px_rgba\(15\,18\,24\,0\.36\)\]{--tw-shadow:0 24px 64px -32px var(--tw-shadow-color,#0f12185c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_var\(--border-secondary\)\]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--border-secondary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_var\(--border-subtle\)\]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--border-subtle));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-accent-primary\/10{--tw-ring-color:var(--color-accent-primary)}@supports (color:color-mix(in lab,red,red)){.ring-accent-primary\/10{--tw-ring-color:color-mix(in oklab, var(--color-accent-primary) 10%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur-2xl{--tw-blur:blur(var(--blur-2xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,border-color\,color\,box-shadow\]{transition-property:background-color,border-color,color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,background-color\]{transition-property:border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,background-color\,border-color\]{transition-property:opacity,background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[scrollbar-color\:var\(--border-secondary\)_transparent\]{scrollbar-color:var(--border-secondary) transparent}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[scrollbar-width\:thin\]{scrollbar-width:thin}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}@media(hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:scale-\[1\.01\]:is(:where(.group):hover *){scale:1.01}.group-hover\:scale-\[1\.025\]:is(:where(.group):hover *){scale:1.025}.group-hover\:border-border-secondary\/70:is(:where(.group):hover *){border-color:var(--color-border-secondary)}@supports (color:color-mix(in lab,red,red)){.group-hover\:border-border-secondary\/70:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-border-secondary) 70%,transparent)}}.group-hover\:bg-hover-subtle:is(:where(.group):hover *){background-color:var(--color-hover-subtle)}.group-hover\:bg-muted:is(:where(.group):hover *){background-color:var(--color-muted)}.group-hover\:text-fg-default:is(:where(.group):hover *){color:var(--color-fg-default)}.group-hover\:text-fg-secondary:is(:where(.group):hover *){color:var(--color-fg-secondary)}.group-hover\:opacity-90:is(:where(.group):hover *){opacity:.9}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.peer-checked\:border-cta:is(:where(.peer):checked~*){border-color:var(--color-cta)}.peer-checked\:bg-cta:is(:where(.peer):checked~*){background-color:var(--color-cta)}.peer-focus-visible\:border-border-focus:is(:where(.peer):focus-visible~*){border-color:var(--color-border-focus)}.peer-focus-visible\:shadow-\[0_0_0_4px_color-mix\(in_srgb\,var\(--accent-soft-primary\)_90\%\,transparent\)\]:is(:where(.peer):focus-visible~*){--tw-shadow:0 0 0 4px var(--tw-shadow-color,var(--accent-soft-primary))}@supports (color:color-mix(in lab,red,red)){.peer-focus-visible\:shadow-\[0_0_0_4px_color-mix\(in_srgb\,var\(--accent-soft-primary\)_90\%\,transparent\)\]:is(:where(.peer):focus-visible~*){--tw-shadow:0 0 0 4px var(--tw-shadow-color,color-mix(in srgb,var(--accent-soft-primary) 90%,transparent))}}.peer-focus-visible\:shadow-\[0_0_0_4px_color-mix\(in_srgb\,var\(--accent-soft-primary\)_90\%\,transparent\)\]:is(:where(.peer):focus-visible~*){box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.marker\:hidden ::marker{display:none}.marker\:hidden::marker{display:none}.marker\:hidden ::-webkit-details-marker{display:none}.marker\:hidden::-webkit-details-marker{display:none}.placeholder\:text-xs::placeholder{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.placeholder\:font-medium::placeholder{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.placeholder\:text-fg-placeholder::placeholder{color:var(--color-fg-placeholder)}.before\:mr-1:before{content:var(--tw-content);margin-right:calc(var(--spacing) * 1)}.before\:content-\[\"·\"\]:before{--tw-content:"·";content:var(--tw-content)}.after\:block:after{content:var(--tw-content);display:block}.after\:h-4:after{content:var(--tw-content);height:calc(var(--spacing) * 4)}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.first\:start:first-child{inset-inline-start:var(--spacing)}.first\:end:first-child{inset-inline-end:var(--spacing)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing) * 0)}.focus-within\:border-border-focus:focus-within{border-color:var(--color-border-focus)}.focus-within\:shadow-\[0_0_0_4px_color-mix\(in_srgb\,var\(--accent-soft-primary\)_90\%\,transparent\)\]:focus-within{--tw-shadow:0 0 0 4px var(--tw-shadow-color,var(--accent-soft-primary))}@supports (color:color-mix(in lab,red,red)){.focus-within\:shadow-\[0_0_0_4px_color-mix\(in_srgb\,var\(--accent-soft-primary\)_90\%\,transparent\)\]:focus-within{--tw-shadow:0 0 0 4px var(--tw-shadow-color,color-mix(in srgb,var(--accent-soft-primary) 90%,transparent))}}.focus-within\:shadow-\[0_0_0_4px_color-mix\(in_srgb\,var\(--accent-soft-primary\)_90\%\,transparent\)\]:focus-within{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:border-amber-300\/80:hover{border-color:#ffd236cc}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-300\/80:hover{border-color:color-mix(in oklab,var(--color-amber-300) 80%,transparent)}}.hover\:border-border-secondary:hover,.hover\:border-border-secondary\/70:hover{border-color:var(--color-border-secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-border-secondary\/70:hover{border-color:color-mix(in oklab,var(--color-border-secondary) 70%,transparent)}}.hover\:border-border-secondary\/80:hover{border-color:var(--color-border-secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-border-secondary\/80:hover{border-color:color-mix(in oklab,var(--color-border-secondary) 80%,transparent)}}.hover\:border-border-subtle:hover,.hover\:border-border-subtle\/80:hover{border-color:var(--color-border-subtle)}@supports (color:color-mix(in lab,red,red)){.hover\:border-border-subtle\/80:hover{border-color:color-mix(in oklab,var(--color-border-subtle) 80%,transparent)}}.hover\:border-sky-300\/80:hover{border-color:#77d4ffcc}@supports (color:color-mix(in lab,red,red)){.hover\:border-sky-300\/80:hover{border-color:color-mix(in oklab,var(--color-sky-300) 80%,transparent)}}.hover\:bg-accent-danger-hover:hover{background-color:var(--color-accent-danger-hover)}.hover\:bg-accent-secondary-hover:hover{background-color:var(--color-accent-secondary-hover)}.hover\:bg-accent-soft-danger-hover:hover{background-color:var(--color-accent-soft-danger-hover)}.hover\:bg-accent-soft-success-hover:hover{background-color:var(--color-accent-soft-success-hover)}.hover\:bg-black\/34:hover{background-color:#00000057}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/34:hover{background-color:color-mix(in oklab,var(--color-black) 34%,transparent)}}.hover\:bg-cta-hover:hover{background-color:var(--color-cta-hover)}.hover\:bg-elevated:hover{background-color:var(--color-elevated)}.hover\:bg-hover:hover{background-color:var(--color-hover)}.hover\:bg-hover-subtle:hover,.hover\:bg-hover-subtle\/25:hover{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-hover-subtle\/25:hover{background-color:color-mix(in oklab,var(--color-hover-subtle) 25%,transparent)}}.hover\:bg-hover-subtle\/35:hover{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-hover-subtle\/35:hover{background-color:color-mix(in oklab,var(--color-hover-subtle) 35%,transparent)}}.hover\:bg-hover-subtle\/70:hover{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-hover-subtle\/70:hover{background-color:color-mix(in oklab,var(--color-hover-subtle) 70%,transparent)}}.hover\:bg-hover-subtle\/80:hover{background-color:var(--color-hover-subtle)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-hover-subtle\/80:hover{background-color:color-mix(in oklab,var(--color-hover-subtle) 80%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\:text-accent-primary:hover{color:var(--color-accent-primary)}.hover\:text-accent-success:hover{color:var(--color-accent-success)}.hover\:text-fg-default:hover,.hover\:text-fg-default\/80:hover{color:var(--color-fg-default)}@supports (color:color-mix(in lab,red,red)){.hover\:text-fg-default\/80:hover{color:color-mix(in oklab,var(--color-fg-default) 80%,transparent)}}.hover\:text-fg-default\/85:hover{color:var(--color-fg-default)}@supports (color:color-mix(in lab,red,red)){.hover\:text-fg-default\/85:hover{color:color-mix(in oklab,var(--color-fg-default) 85%,transparent)}}.hover\:text-fg-error:hover{color:var(--color-fg-error)}.hover\:text-fg-secondary:hover{color:var(--color-fg-secondary)}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-white\/90:hover{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.hover\:text-white\/90:hover{color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_18px_42px_-34px_rgba\(15\,23\,42\,0\.42\)\]:hover{--tw-shadow:0 18px 42px -34px var(--tw-shadow-color,#0f172a6b);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:bg-hover-subtle:focus{background-color:var(--color-hover-subtle)}.focus\:text-accent-success:focus{color:var(--color-accent-success)}.focus\:text-fg-default:focus{color:var(--color-fg-default)}.focus\:text-fg-error:focus{color:var(--color-fg-error)}.focus\:text-white\/90:focus{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.focus\:text-white\/90:focus{color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.focus\:opacity-100:focus{opacity:1}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:opacity-100:focus-visible{opacity:1}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-accent-danger-hover:active{background-color:var(--color-accent-danger-hover)}.active\:bg-accent-secondary-hover:active{background-color:var(--color-accent-secondary-hover)}.active\:bg-accent-soft-danger-hover:active{background-color:var(--color-accent-soft-danger-hover)}.active\:bg-accent-soft-success-hover:active{background-color:var(--color-accent-soft-success-hover)}.active\:bg-active:active{background-color:var(--color-active)}.active\:bg-cta-hover:active{background-color:var(--color-cta-hover)}.active\:bg-hover:active{background-color:var(--color-hover)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:cursor-wait:disabled{cursor:wait}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.aria-expanded\:bg-hover-subtle[aria-expanded=true]{background-color:var(--color-hover-subtle)}.aria-expanded\:text-fg-default[aria-expanded=true]{color:var(--color-fg-default)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-hover-subtle[data-highlighted]{background-color:var(--color-hover-subtle)}.data-\[highlighted\]\:text-fg-default[data-highlighted]{color:var(--color-fg-default)}.data-\[state\=on\]\:border-border-secondary[data-state=on],.data-\[state\=on\]\:border-border-secondary\/70[data-state=on]{border-color:var(--color-border-secondary)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=on\]\:border-border-secondary\/70[data-state=on]{border-color:color-mix(in oklab,var(--color-border-secondary) 70%,transparent)}}.data-\[state\=on\]\:bg-cta[data-state=on]{background-color:var(--color-cta)}.data-\[state\=on\]\:bg-elevated[data-state=on]{background-color:var(--color-elevated)}.data-\[state\=on\]\:text-fg-default[data-state=on]{color:var(--color-fg-default)}.data-\[state\=on\]\:text-fg-on-filled[data-state=on]{color:var(--color-fg-on-filled)}.data-\[state\=on\]\:shadow-\[0_8px_18px_-16px_rgba\(15\,18\,24\,0\.28\)\][data-state=on]{--tw-shadow:0 8px 18px -16px var(--tw-shadow-color,#0f121847);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:var(--animate-fade-in)}.data-\[state\=open\]\:animate-zoom-in[data-state=open]{animation:var(--animate-zoom-in)}.data-\[state\=open\]\:bg-hover-subtle[data-state=open]{background-color:var(--color-hover-subtle)}.data-\[state\=open\]\:text-fg-default[data-state=open]{color:var(--color-fg-default)}@media not all and (min-width:999px){.max-\[999px\]\:after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.max-\[999px\]\:after\:absolute:after{content:var(--tw-content);position:absolute}.max-\[999px\]\:after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.max-\[999px\]\:after\:right-0:after{content:var(--tw-content);right:calc(var(--spacing) * 0)}.max-\[999px\]\:after\:h-24:after{content:var(--tw-content);height:calc(var(--spacing) * 24)}.max-\[999px\]\:after\:w-12:after{content:var(--tw-content);width:calc(var(--spacing) * 12)}.max-\[999px\]\:after\:bg-\[linear-gradient\(to_right\,transparent\,var\(--page-bg\)\)\]:after{content:var(--tw-content);background-image:linear-gradient(to right,transparent,var(--page-bg))}.max-\[999px\]\:after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}}@media not all and (min-width:40rem){.max-sm\:disabled\:opacity-100:disabled{opacity:1}}@media(min-width:1000px){.min-\[1000px\]\:pointer-events-auto{pointer-events:auto}.min-\[1000px\]\:static{position:static}.min-\[1000px\]\:hidden{display:none}.min-\[1000px\]\:w-auto{width:auto}.min-\[1000px\]\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.min-\[1000px\]\:pb-0{padding-bottom:calc(var(--spacing) * 0)}}@media(min-width:1200px){.min-\[1200px\]\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,3fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}}@media(min-width:40rem){.sm\:not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-1{grid-column-start:1}.sm\:col-start-2{grid-column-start:2}.sm\:col-start-auto{grid-column-start:auto}.sm\:row-start-1{grid-row-start:1}.sm\:row-start-2{grid-row-start:2}.sm\:row-start-auto{grid-row-start:auto}.sm\:mx-0{margin-inline:calc(var(--spacing) * 0)}.sm\:mt-2{margin-top:calc(var(--spacing) * 2)}.sm\:-mr-4{margin-right:calc(var(--spacing) * -4)}.sm\:ml-10{margin-left:calc(var(--spacing) * 10)}.sm\:block{display:block}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:h-7{height:calc(var(--spacing) * 7)}.sm\:h-11{height:calc(var(--spacing) * 11)}.sm\:h-\[352px\]{height:352px}.sm\:max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.sm\:min-h-8{min-height:calc(var(--spacing) * 8)}.sm\:min-h-9{min-height:calc(var(--spacing) * 9)}.sm\:min-h-20{min-height:calc(var(--spacing) * 20)}.sm\:min-h-24{min-height:calc(var(--spacing) * 24)}.sm\:w-\[18rem\]{width:18rem}.sm\:w-\[300px\]{width:300px}.sm\:w-auto{width:auto}.sm\:max-w-\[176px\]{max-width:176px}.sm\:max-w-\[336px\]{max-width:336px}.sm\:max-w-\[480px\]{max-width:480px}.sm\:max-w-\[560px\]{max-width:560px}.sm\:max-w-\[640px\]{max-width:640px}.sm\:max-w-\[720px\]{max-width:720px}.sm\:min-w-7{min-width:calc(var(--spacing) * 7)}.sm\:min-w-9{min-width:calc(var(--spacing) * 9)}.sm\:flex-1{flex:1}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[1fr_1fr_auto\]{grid-template-columns:1fr 1fr auto}.sm\:grid-cols-\[auto_minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:auto minmax(0,1fr) auto auto}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:grid-cols-\[minmax\(0\,180px\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,180px) minmax(0,1fr) auto}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:justify-start{justify-content:flex-start}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-x-4{column-gap:calc(var(--spacing) * 4)}.sm\:gap-y-0{row-gap:calc(var(--spacing) * 0)}.sm\:self-auto{align-self:auto}.sm\:self-center{align-self:center}.sm\:justify-self-end{justify-self:flex-end}.sm\:rounded-\[16px\]{border-radius:16px}.sm\:rounded-\[18px\]{border-radius:18px}.sm\:rounded-\[20px\]{border-radius:20px}.sm\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.sm\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.sm\:p-2{padding:calc(var(--spacing) * 2)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:py-5{padding-block:calc(var(--spacing) * 5)}.sm\:py-6{padding-block:calc(var(--spacing) * 6)}.sm\:py-10{padding-block:calc(var(--spacing) * 10)}.sm\:pt-5{padding-top:calc(var(--spacing) * 5)}.sm\:pr-48{padding-right:calc(var(--spacing) * 48)}.sm\:pb-5{padding-bottom:calc(var(--spacing) * 5)}.sm\:pl-3{padding-left:calc(var(--spacing) * 3)}.sm\:text-\[2\.15rem\]{font-size:2.15rem}.sm\:opacity-0{opacity:0}@media(hover:hover){.sm\:group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.sm\:focus-visible\:opacity-100:focus-visible{opacity:1}}@media(min-width:48rem){.md\:block{display:block}.md\:hidden{display:none}.md\:h-10{height:calc(var(--spacing) * 10)}.md\:w-10{width:calc(var(--spacing) * 10)}.md\:w-auto{width:auto}.md\:basis-auto{flex-basis:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_120px_120px_auto\]{grid-template-columns:minmax(0,1fr) 120px 120px auto}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(10\.5rem\,12rem\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(10.5rem,12rem) minmax(0,1fr) auto}.md\:items-center{align-items:center}.md\:justify-self-end{justify-self:flex-end}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:pb-0{padding-bottom:calc(var(--spacing) * 0)}}@media(min-width:64rem){.lg\:sticky{position:sticky}.lg\:left-0{left:calc(var(--spacing) * 0)}.lg\:z-10{z-index:10}.lg\:z-20{z-index:20}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:min-h-\[142px\]{min-height:142px}.lg\:w-72{width:calc(var(--spacing) * 72)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:justify-end{justify-content:flex-end}.lg\:gap-8{gap:calc(var(--spacing) * 8)}.lg\:p-2\.5{padding:calc(var(--spacing) * 2.5)}.lg\:\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}}@media(min-width:80rem){.xl\:block{display:block}.xl\:grid{display:grid}.xl\:hidden{display:none}.xl\:grid-cols-\[minmax\(0\,1fr\)_20rem\]{grid-template-columns:minmax(0,1fr) 20rem}.xl\:pr-5{padding-right:calc(var(--spacing) * 5)}}@media(min-width:96rem){.\32xl\:grid-cols-\[minmax\(0\,1fr\)_22rem\]{grid-template-columns:minmax(0,1fr) 22rem}}.dark\:border-amber-200\/20:where(html.dark *){border-color:#fee68533}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-200\/20:where(html.dark *){border-color:color-mix(in oklab,var(--color-amber-200) 20%,transparent)}}.dark\:border-sky-200\/20:where(html.dark *){border-color:#b8e6fe33}@supports (color:color-mix(in lab,red,red)){.dark\:border-sky-200\/20:where(html.dark *){border-color:color-mix(in oklab,var(--color-sky-200) 20%,transparent)}}.dark\:bg-\[color-mix\(in_srgb\,var\(--elevated\)_82\%\,var\(--hover-subtle\)\)\]:where(html.dark *){background-color:var(--elevated)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-\[color-mix\(in_srgb\,var\(--elevated\)_82\%\,var\(--hover-subtle\)\)\]:where(html.dark *){background-color:color-mix(in srgb,var(--elevated) 82%,var(--hover-subtle))}}.dark\:bg-emphasis:where(html.dark *),.dark\:bg-emphasis\/70:where(html.dark *){background-color:var(--color-emphasis)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emphasis\/70:where(html.dark *){background-color:color-mix(in oklab,var(--color-emphasis) 70%,transparent)}}.dark\:bg-white\/8:where(html.dark *){background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.dark\:bg-white\/8:where(html.dark *){background-color:color-mix(in oklab,var(--color-white) 8%,transparent)}}.dark\:bg-\[linear-gradient\(135deg\,rgba\(23\,35\,52\,0\.72\)_0\%\,rgba\(35\,31\,62\,0\.62\)_54\%\,rgba\(20\,50\,39\,0\.58\)_100\%\)\]:where(html.dark *){background-image:linear-gradient(135deg,#172334b8,#231f3e9e 54%,#14322794)}.dark\:bg-\[linear-gradient\(135deg\,rgba\(44\,34\,18\,0\.58\)_0\%\,rgba\(20\,34\,48\,0\.72\)_58\%\,rgba\(19\,50\,62\,0\.62\)_100\%\)\]:where(html.dark *){background-image:linear-gradient(135deg,#2c221294,#142230b8 58%,#13323e9e)}.dark\:text-emerald-200:where(html.dark *){color:var(--color-emerald-200)}.dark\:text-rose-200:where(html.dark *){color:var(--color-rose-200)}.dark\:text-sky-200:where(html.dark *){color:var(--color-sky-200)}.dark\:brightness-\[0\.85\]:where(html.dark *){--tw-brightness:brightness(.85);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.dark\:saturate-\[0\.9\]:where(html.dark *){--tw-saturate:saturate(.9);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\[\&_\.katex-display\]\:m-0 .katex-display{margin:calc(var(--spacing) * 0)}.\[\&_svg\]\:mx-auto svg{margin-inline:auto}.\[\&_svg\]\:block svg{display:block}.\[\&_svg\]\:h-auto svg{height:auto}.\[\&_svg\]\:max-h-\[min\(68vh\,640px\)\] svg{max-height:min(68vh,640px)}.\[\&_svg\]\:max-w-full svg{max-width:100%}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\:\:-webkit-scrollbar\]\:w-1\.5::-webkit-scrollbar{width:calc(var(--spacing) * 1.5)}.\[\&\:\:-webkit-scrollbar-thumb\]\:rounded-full::-webkit-scrollbar-thumb{border-radius:var(--radius-full)}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-border-secondary::-webkit-scrollbar-thumb{background-color:var(--color-border-secondary)}.\[\&\:\:-webkit-scrollbar-track\]\:bg-transparent::-webkit-scrollbar-track{background-color:#0000}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\:first-child\]\:-translate-x-\[3px\]>svg:first-child{--tw-translate-x: -3px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\:last-child\]\:translate-x-\[3px\]>svg:last-child{--tw-translate-x:3px;translate:var(--tw-translate-x) var(--tw-translate-y)}}@keyframes save-ring-spin{to{transform:rotate(360deg)}}:root{color-scheme:light;--surface:#f7f8fa;--muted:#f1f3f6;--subtle:#f8fafceb;--elevated:#fbfcfd;--emphasis:#e7ebf0;--hover:#1b1f250f;--hover-subtle:#1b1f2509;--active:#1b1f251a;--ghost:#1b1f250f;--fg:#151922;--fg-default:#202631;--fg-muted:#485160;--fg-secondary:#626d7c;--fg-tertiary:#8993a2;--fg-disabled:#bcc5d0;--fg-placeholder:#98a2b0;--fg-error:#a24545;--fg-on-accent:#f6f8fb;--fg-on-filled:#f6f8fb;--fg-weekend:#c24b62;--border:#a4acb8;--border-secondary:#c9d0d8;--border-subtle:#e5e9ee;--border-focus:#757f8d;--border-error:#d47777;--accent-primary:#5d6672;--accent-primary-hover:#4f5762;--accent-secondary:#5d6672;--accent-secondary-hover:#4f5762;--accent-danger:#b94a4a;--accent-danger-hover:#a53e3e;--accent-success:#7f9c94;--accent-success-hover:#6e8a82;--accent-soft-primary:#5d66721f;--accent-soft-primary-hover:#5d66722e;--accent-soft-danger:#d68d872e;--accent-soft-danger-hover:#d68d8742;--accent-soft-success:#7f9b862e;--accent-soft-success-hover:#7f9b8642;--cta:#23272d;--cta-hover:#171a1f;--overlay:#13181f5c;--highlight:#5d66721a;--highlight-fg:#202631;--divider:#d9e1e8;--page-bg:#f2f5f8}html.dark{color-scheme:dark;--surface:#16191e;--muted:#1b2026;--subtle:#20252db3;--elevated:#1d2229;--emphasis:#262c34;--hover:#eff3f712;--hover-subtle:#eff3f70a;--active:#eff3f71a;--ghost:#eff3f712;--fg:#eef2f7;--fg-default:#e6ebf2;--fg-muted:#c7cfdb;--fg-secondary:#a9b3c2;--fg-tertiary:#7f8998;--fg-disabled:#545d69;--fg-placeholder:#717b88;--fg-error:#efaaaa;--fg-on-accent:#12161c;--fg-on-filled:#12161c;--fg-weekend:#f19aa9;--border:#48515d;--border-secondary:#5a6471;--border-subtle:#29303a;--border-focus:#b4c0cf;--border-error:#efaaaa;--accent-primary:#b8c0ca;--accent-primary-hover:#c9d0d8;--accent-secondary:#b8c0ca;--accent-secondary-hover:#c9d0d8;--accent-danger:#d36f6f;--accent-danger-hover:#e08383;--accent-success:#90aea4;--accent-success-hover:#a4c0b7;--accent-soft-primary:#b8c0ca1f;--accent-soft-primary-hover:#b8c0ca2e;--accent-soft-danger:#d7928b24;--accent-soft-danger-hover:#d7928b38;--accent-soft-success:#88a99524;--accent-soft-success-hover:#88a99538;--cta:#edf1f5;--cta-hover:#f8fafc;--overlay:#080c108f;--highlight:#b8c0ca1f;--highlight-fg:#eef2f7;--divider:#2b3440;--page-bg:#101318}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes zoom-in{0%{transform:scale(.95)}to{transform:scale(1)}}@keyframes zoom-out{0%{transform:scale(1)}to{transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-8px)}to{transform:translateY(0)}}@keyframes slide-in-from-bottom{0%{transform:translateY(8px)}to{transform:translateY(0)}}@keyframes slide-in-from-left{0%{transform:translate(-8px)}to{transform:translate(0)}}@keyframes slide-in-from-right{0%{transform:translate(8px)}to{transform:translate(0)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.rounded-sketchy-xs{border-radius:6px}.rounded-sketchy-sm{border-radius:10px}.rounded-sketchy-md{border-radius:14px}.rounded-sketchy-lg{border-radius:18px}.rounded-sketchy-xl{border-radius:28px}.sketchy{border:1px solid var(--border);border-radius:18px}.sketchy-sm{border:1px solid var(--border);border-radius:12px}.sketchy-hover:hover{border-radius:18px}.text-display{font-size:1.375rem;line-height:1.3}.text-heading{font-size:1.125rem;line-height:1.4}.text-subheading{font-size:1rem;line-height:1.5}.text-body{font-size:1rem;line-height:1.6}.text-meta{font-size:.875rem;line-height:1.5}.text-label{font-size:.75rem;line-height:1.4}.text-micro{font-size:.625rem;line-height:1.4}.surface-base{background:var(--surface);border:1px solid var(--border-subtle);border-radius:16px;box-shadow:inset 0 1px #ffffff1a,0 1px 4px -2px #171d260a}.surface-elevated,.surface-floating{background:var(--elevated)}@supports (color:color-mix(in lab,red,red)){.surface-floating{background:color-mix(in srgb,var(--elevated) 90%,transparent)}}.surface-floating{border:1px solid var(--border-secondary)}@supports (color:color-mix(in lab,red,red)){.surface-floating{border:1px solid color-mix(in srgb,var(--border-secondary) 45%,transparent)}}.surface-floating{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;box-shadow:0 12px 24px -22px #171d2624}.focus-ring-soft:focus-visible{box-shadow:0 0 0 4px var(--accent-soft-primary);outline:none}@supports (color:color-mix(in lab,red,red)){.focus-ring-soft:focus-visible{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent-soft-primary) 90%,transparent)}}.focus-ring-soft:focus-visible{border-color:var(--border-focus)}html.dark .surface-base{box-shadow:inset 0 1px #ffffff08,0 1px 4px -2px #0000002e}.grid-auto-cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.grid-search-bar{grid-template-columns:32px 1fr 24px}.progress-fill{width:var(--progress-width)}.save-progress-ring{--save-progress:100%;--save-ring-color:var(--border-secondary);background:conic-gradient(from -90deg,var(--save-ring-color) var(--save-progress),var(--hover-subtle) 0)}.save-progress-ring-active{--save-progress:28%;--save-ring-color:var(--accent-primary);animation:.8s linear infinite save-ring-spin}.save-progress-ring-complete{--save-progress:100%;--save-ring-color:var(--accent-success)}.save-progress-ring-error{--save-progress:100%;--save-ring-color:var(--accent-danger)}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.save-progress-ring-active{--save-progress:100%;animation:none}}.skeleton-sized{width:var(--skeleton-width,auto);height:var(--skeleton-height,30px);opacity:var(--skeleton-opacity,1)}.graph-canvas{background:var(--graph-bg);-webkit-user-select:none;user-select:none}.legend-dot{background:var(--legend-color)}html.dark .surface-floating{box-shadow:0 18px 36px -28px #0000006b}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
@@ -1 +1 @@
1
- import{j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{T as c,c as h,D as _,B as j,J as C,K as O}from"./time-BwwQGbK-.js";import{s as D}from"./FileText.es-C-bpw8dQ.js";import{s as $,d as k}from"./useNoteMutate-D-mZKXjl.js";import{N as S}from"./url-Bp8sXMb4.js";const M="bg-surface shadow-[inset_0_0_0_1px_var(--border-subtle)]",R="bg-emphasis",y=(a,s)=>`${a} ${a===1?s:`${s}s`}`,P=({day:a,dateLabel:s,cellClassName:i,dayNumberClassName:r,isCurrentMonth:n,isToday:o,isSelected:f,noteCount:l,reminderCount:d,previewItems:x,overflowCount:p,density:g="comfortable",showReminderSummary:u=!0,onSelect:N})=>{const w=l+d,b=u?`${s}, ${y(l,"note")}, ${y(d,"reminder")}`:`${s}, ${y(l,"note")}`,t=g==="compact"?"min-h-16 p-1 sm:min-h-20 sm:p-2 lg:min-h-[142px] lg:p-2.5":"min-h-20 p-1 sm:min-h-24 sm:p-2 lg:min-h-[142px] lg:p-2.5";return e.jsxs("button",{type:"button",disabled:!n,"aria-label":b,"aria-pressed":n?f:void 0,"aria-current":n&&o?"date":void 0,onClick:N,className:h("focus-ring-soft relative flex min-w-0 flex-col text-left outline-none focus-visible:z-10",t,i),children:[e.jsx(c,{as:"span",variant:"label",className:h("flex h-6 min-w-6 items-center justify-center self-end whitespace-nowrap rounded-[9px] px-1.5 sm:h-7 sm:min-w-7 lg:!text-sm",r),children:a}),n&&w>0?e.jsxs("div",{"aria-hidden":"true",className:"mt-1.5 w-full sm:mt-2",children:[e.jsxs("div",{className:"flex flex-col items-start gap-0 text-fg-tertiary lg:hidden",children:[l>0?e.jsxs("span",{className:"inline-flex h-4 items-center gap-1 leading-none",children:[e.jsx(D,{className:"shrink-0",size:10}),e.jsx(c,{as:"span",variant:"micro",weight:"semibold",tone:"secondary",className:"whitespace-nowrap !text-[10px] !leading-3 tabular-nums",children:l})]}):null,u&&d>0?e.jsxs("span",{className:"inline-flex h-4 items-center gap-1 leading-none",children:[e.jsx($,{className:"shrink-0",size:10}),e.jsx(c,{as:"span",variant:"micro",weight:"semibold",tone:"secondary",className:"whitespace-nowrap !text-[10px] !leading-3 tabular-nums",children:d})]}):null]}),e.jsxs("div",{className:"mt-1.5 hidden flex-col gap-1 lg:flex",children:[x.map(m=>e.jsxs("span",{className:h("flex min-h-7 min-w-0 items-center gap-1 rounded-[7px] px-1.5 py-1",m.type==="reminder"?R:M),children:[m.type==="reminder"?e.jsx($,{className:"shrink-0 text-fg-tertiary",size:11}):e.jsx(D,{className:"shrink-0 text-fg-tertiary",size:11}),e.jsx(c,{as:"span",variant:"micro",weight:"medium",tone:"secondary",className:h("truncate !text-[11px] !leading-4",m.isCompleted&&"line-through"),children:m.title})]},m.key)),p>0?e.jsxs(c,{as:"span",variant:"micro",weight:"medium",tone:"secondary",className:"flex min-h-4 items-center px-2 !text-[11px] !leading-4",children:["+",p," more"]}):null]})]}):null]})},V=({params:a,toneClassName:s="",header:i,title:r,meta:n,titleClassName:o=""})=>e.jsx(_,{to:S,params:a,className:"focus-ring-soft group block rounded-[8px] outline-none",children:e.jsxs("div",{className:h("flex items-start gap-1.5 rounded-[8px] px-1.5 py-1 transition-colors group-hover:bg-muted",s),children:[i?e.jsx("span",{className:"mt-[2px] flex h-4 w-4 shrink-0 items-center justify-center text-fg-tertiary",children:i}):e.jsx("span",{"aria-hidden":"true",className:"mt-[6px] h-1.5 w-1.5 shrink-0 rounded-full bg-fg-placeholder"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx(c,{as:"div",variant:"label",weight:"medium",tone:"secondary",className:h("line-clamp-1",o),children:r}),n?e.jsx(c,{as:"div",variant:"micro",weight:"medium",tone:"secondary",className:"mt-0.5 !text-[11px] !leading-4",children:n}):null]})]})}),I=["SUN","MON","TUE","WED","THU","FRI","SAT"],Y=({children:a,isLoading:s,className:i="",ariaLabel:r="Month overview"})=>e.jsx("section",{"aria-label":r,"aria-busy":s,className:`min-w-0 ${i}`,children:e.jsx("div",{className:"overflow-x-auto overscroll-x-contain [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:e.jsxs("div",{className:"min-w-[19rem]",children:[e.jsx("div",{className:"mb-2 grid grid-cols-7 gap-px",children:I.map((n,o)=>e.jsxs(c,{as:"div",variant:"label",weight:"semibold",tracking:"wider",transform:"uppercase",className:`py-1.5 text-center ${o===0?"text-fg-weekend":"text-fg-secondary"}`,children:[e.jsx("span",{"aria-hidden":"true",className:"sm:hidden",children:n.slice(0,1)}),e.jsx("span",{className:"hidden sm:inline",children:n})]},n))}),e.jsx("div",{className:"grid grid-cols-7 gap-px overflow-hidden rounded-[12px] border border-border-subtle/80 bg-border-subtle/70",children:a})]})})}),B=({onPrevMonth:a,onNextMonth:s,onToday:i})=>e.jsxs("div",{className:"flex w-full items-center justify-between gap-2 sm:w-auto sm:justify-start",children:[e.jsx(j,{type:"button",variant:"ghost",size:"sm",className:"min-h-11 px-4 sm:min-h-8 sm:px-3",onClick:i,children:"Today"}),e.jsxs("div",{className:"flex items-center gap-1.5",role:"group","aria-label":"Month navigation",children:[e.jsx(j,{type:"button",variant:"ghost",size:"icon",className:"min-h-11 min-w-11 sm:min-h-9 sm:min-w-9","aria-label":"Previous month",onClick:a,children:e.jsx(C,{width:18,height:18})}),e.jsx(j,{type:"button",variant:"ghost",size:"icon",className:"min-h-11 min-w-11 sm:min-h-9 sm:min-w-9","aria-label":"Next month",onClick:s,children:e.jsx(O,{width:18,height:18})})]})]}),z=42,G=(a,s)=>({start:new Date(a,s-1,1).toISOString(),end:new Date(a,s,1).toISOString()}),K=(a,s)=>({start:new Date(Date.UTC(a,s-1,1)).toISOString(),end:new Date(Date.UTC(a,s,1)).toISOString()}),E=a=>{const s=Number(a);return Number.isFinite(s)?s:Date.parse(a)},H=(a,s)=>{const i=s==="create"?"createdAt":"updatedAt";return[...a].sort((r,n)=>E(r[i])-E(n[i]))},J=(a,s,i=new Date)=>{const r=k(i),n=`${r.year()}-${r.month()+1}-${r.date()}`,o=new Date(a,s-1,1),f=new Date(a,s,0),l=o.getDay(),d=f.getDate(),x=[],p=s===1?12:s-1,g=s===1?a-1:a,u=new Date(g,p,0).getDate();for(let t=l-1;t>=0;t--)x.push({day:u-t,isCurrentMonth:!1,year:g,month:p});for(let t=1;t<=d;t++)x.push({day:t,isCurrentMonth:!0,year:a,month:s});const N=z-(l+d),w=s===12?1:s+1,b=s===12?a+1:a;for(let t=1;t<=N;t++)x.push({day:t,isCurrentMonth:!1,year:b,month:w});return x.map((t,m)=>{const v=`${t.year}-${t.month}-${t.day}`,T=k(new Date(t.year,t.month-1,t.day));return{...t,key:v,isSunday:m%7===0,isToday:v===n,isPast:T.isBefore(r,"day")}})};export{P as C,V as a,B as b,Y as c,J as d,K as e,G as g,H as s,E as t};
1
+ import{j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{T as c,c as h,F as _,B as j,H as C,J as O}from"./time-Kh6oav5R.js";import{s as D}from"./FileText.es-D6JM_MqM.js";import{s as $,d as k}from"./useNoteMutate-BQj6jHhV.js";import{N as S}from"./url-Bp8sXMb4.js";const M="bg-surface shadow-[inset_0_0_0_1px_var(--border-subtle)]",R="bg-emphasis",y=(a,s)=>`${a} ${a===1?s:`${s}s`}`,P=({day:a,dateLabel:s,cellClassName:i,dayNumberClassName:r,isCurrentMonth:n,isToday:o,isSelected:f,noteCount:l,reminderCount:d,previewItems:x,overflowCount:p,density:g="comfortable",showReminderSummary:u=!0,onSelect:N})=>{const w=l+d,b=u?`${s}, ${y(l,"note")}, ${y(d,"reminder")}`:`${s}, ${y(l,"note")}`,t=g==="compact"?"min-h-16 p-1 sm:min-h-20 sm:p-2 lg:min-h-[142px] lg:p-2.5":"min-h-20 p-1 sm:min-h-24 sm:p-2 lg:min-h-[142px] lg:p-2.5";return e.jsxs("button",{type:"button",disabled:!n,"aria-label":b,"aria-pressed":n?f:void 0,"aria-current":n&&o?"date":void 0,onClick:N,className:h("focus-ring-soft relative flex min-w-0 flex-col text-left outline-none focus-visible:z-10",t,i),children:[e.jsx(c,{as:"span",variant:"label",className:h("flex h-6 min-w-6 items-center justify-center self-end whitespace-nowrap rounded-[9px] px-1.5 sm:h-7 sm:min-w-7 lg:!text-sm",r),children:a}),n&&w>0?e.jsxs("div",{"aria-hidden":"true",className:"mt-1.5 w-full sm:mt-2",children:[e.jsxs("div",{className:"flex flex-col items-start gap-0 text-fg-tertiary lg:hidden",children:[l>0?e.jsxs("span",{className:"inline-flex h-4 items-center gap-1 leading-none",children:[e.jsx(D,{className:"shrink-0",size:10}),e.jsx(c,{as:"span",variant:"micro",weight:"semibold",tone:"secondary",className:"whitespace-nowrap !text-[10px] !leading-3 tabular-nums",children:l})]}):null,u&&d>0?e.jsxs("span",{className:"inline-flex h-4 items-center gap-1 leading-none",children:[e.jsx($,{className:"shrink-0",size:10}),e.jsx(c,{as:"span",variant:"micro",weight:"semibold",tone:"secondary",className:"whitespace-nowrap !text-[10px] !leading-3 tabular-nums",children:d})]}):null]}),e.jsxs("div",{className:"mt-1.5 hidden flex-col gap-1 lg:flex",children:[x.map(m=>e.jsxs("span",{className:h("flex min-h-7 min-w-0 items-center gap-1 rounded-[7px] px-1.5 py-1",m.type==="reminder"?R:M),children:[m.type==="reminder"?e.jsx($,{className:"shrink-0 text-fg-tertiary",size:11}):e.jsx(D,{className:"shrink-0 text-fg-tertiary",size:11}),e.jsx(c,{as:"span",variant:"micro",weight:"medium",tone:"secondary",className:h("truncate !text-[11px] !leading-4",m.isCompleted&&"line-through"),children:m.title})]},m.key)),p>0?e.jsxs(c,{as:"span",variant:"micro",weight:"medium",tone:"secondary",className:"flex min-h-4 items-center px-2 !text-[11px] !leading-4",children:["+",p," more"]}):null]})]}):null]})},V=({params:a,toneClassName:s="",header:i,title:r,meta:n,titleClassName:o=""})=>e.jsx(_,{to:S,params:a,className:"focus-ring-soft group block rounded-[8px] outline-none",children:e.jsxs("div",{className:h("flex items-start gap-1.5 rounded-[8px] px-1.5 py-1 transition-colors group-hover:bg-muted",s),children:[i?e.jsx("span",{className:"mt-[2px] flex h-4 w-4 shrink-0 items-center justify-center text-fg-tertiary",children:i}):e.jsx("span",{"aria-hidden":"true",className:"mt-[6px] h-1.5 w-1.5 shrink-0 rounded-full bg-fg-placeholder"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx(c,{as:"div",variant:"label",weight:"medium",tone:"secondary",className:h("line-clamp-1",o),children:r}),n?e.jsx(c,{as:"div",variant:"micro",weight:"medium",tone:"secondary",className:"mt-0.5 !text-[11px] !leading-4",children:n}):null]})]})}),I=["SUN","MON","TUE","WED","THU","FRI","SAT"],Y=({children:a,isLoading:s,className:i="",ariaLabel:r="Month overview"})=>e.jsx("section",{"aria-label":r,"aria-busy":s,className:`min-w-0 ${i}`,children:e.jsx("div",{className:"overflow-x-auto overscroll-x-contain [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:e.jsxs("div",{className:"min-w-[19rem]",children:[e.jsx("div",{className:"mb-2 grid grid-cols-7 gap-px",children:I.map((n,o)=>e.jsxs(c,{as:"div",variant:"label",weight:"semibold",tracking:"wider",transform:"uppercase",className:`py-1.5 text-center ${o===0?"text-fg-weekend":"text-fg-secondary"}`,children:[e.jsx("span",{"aria-hidden":"true",className:"sm:hidden",children:n.slice(0,1)}),e.jsx("span",{className:"hidden sm:inline",children:n})]},n))}),e.jsx("div",{className:"grid grid-cols-7 gap-px overflow-hidden rounded-[12px] border border-border-subtle/80 bg-border-subtle/70",children:a})]})})}),B=({onPrevMonth:a,onNextMonth:s,onToday:i})=>e.jsxs("div",{className:"flex w-full items-center justify-between gap-2 sm:w-auto sm:justify-start",children:[e.jsx(j,{type:"button",variant:"ghost",size:"sm",className:"min-h-11 px-4 sm:min-h-8 sm:px-3",onClick:i,children:"Today"}),e.jsxs("div",{className:"flex items-center gap-1.5",role:"group","aria-label":"Month navigation",children:[e.jsx(j,{type:"button",variant:"ghost",size:"icon",className:"min-h-11 min-w-11 sm:min-h-9 sm:min-w-9","aria-label":"Previous month",onClick:a,children:e.jsx(C,{width:18,height:18})}),e.jsx(j,{type:"button",variant:"ghost",size:"icon",className:"min-h-11 min-w-11 sm:min-h-9 sm:min-w-9","aria-label":"Next month",onClick:s,children:e.jsx(O,{width:18,height:18})})]})]}),z=42,G=(a,s)=>({start:new Date(a,s-1,1).toISOString(),end:new Date(a,s,1).toISOString()}),H=(a,s)=>({start:new Date(Date.UTC(a,s-1,1)).toISOString(),end:new Date(Date.UTC(a,s,1)).toISOString()}),E=a=>{const s=Number(a);return Number.isFinite(s)?s:Date.parse(a)},K=(a,s)=>{const i=s==="create"?"createdAt":"updatedAt";return[...a].sort((r,n)=>E(r[i])-E(n[i]))},J=(a,s,i=new Date)=>{const r=k(i),n=`${r.year()}-${r.month()+1}-${r.date()}`,o=new Date(a,s-1,1),f=new Date(a,s,0),l=o.getDay(),d=f.getDate(),x=[],p=s===1?12:s-1,g=s===1?a-1:a,u=new Date(g,p,0).getDate();for(let t=l-1;t>=0;t--)x.push({day:u-t,isCurrentMonth:!1,year:g,month:p});for(let t=1;t<=d;t++)x.push({day:t,isCurrentMonth:!0,year:a,month:s});const N=z-(l+d),w=s===12?1:s+1,b=s===12?a+1:a;for(let t=1;t<=N;t++)x.push({day:t,isCurrentMonth:!1,year:b,month:w});return x.map((t,m)=>{const v=`${t.year}-${t.month}-${t.day}`,T=k(new Date(t.year,t.month-1,t.day));return{...t,key:v,isSunday:m%7===0,isToday:v===n,isPast:T.isBefore(r,"day")}})};export{P as C,V as a,B as b,Y as c,J as d,H as e,G as g,K as s,E as t};
@@ -1,4 +1,4 @@
1
- import{f as i,g as t}from"./time-BwwQGbK-.js";async function n({base64:a}){if(a){const{data:e}=await i.post("/api/image",{image:a});return e.url}throw new Error("No file provided")}function r({limit:a=50,offset:e=0}={}){return t(`query FetchImages($pagination: PaginationInput) {
1
+ import{f as i,g as t}from"./time-Kh6oav5R.js";async function n({base64:a}){if(a){const{data:e}=await i.post("/api/image",{image:a});return e.url}throw new Error("No file provided")}function r({limit:a=50,offset:e=0}={}){return t(`query FetchImages($pagination: PaginationInput) {
2
2
  allImages(pagination: $pagination) {
3
3
  totalCount
4
4
  images {
@@ -0,0 +1 @@
1
+ import{r as e,j as a}from"./floating-ui.react-dom-BWTnA00G.js";import{a as N,j as E}from"./useNoteMutate-BQj6jHhV.js";import{C as A,a4 as M,P as y,T as t,F as c,J as o,q as w}from"./time-Kh6oav5R.js";import{f as b}from"./mcp-admin-adapter-CUakQ_Xm.js";import{b as H,e as T,d as S,a as R,h as F,S as k}from"./url-Bp8sXMb4.js";import{g as I,c as V}from"./app-OGsLwSqJ.js";import{I as C}from"./Image.es-Bh2mTNtr.js";import{n as _}from"./Trash.es-DFnO8iF5.js";import{f as L}from"./Graph-BaqGi3M7.js";import"./preload-helper-BXl3LOEh.js";const O=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M236.37,139.4a12,12,0,0,0-12-3A84.07,84.07,0,0,1,119.6,31.59a12,12,0,0,0-15-15A108.86,108.86,0,0,0,49.69,55.07,108,108,0,0,0,136,228a107.09,107.09,0,0,0,64.93-21.69,108.86,108.86,0,0,0,38.44-54.94A12,12,0,0,0,236.37,139.4Zm-49.88,47.74A84,84,0,0,1,68.86,69.51,84.93,84.93,0,0,1,92.27,48.29Q92,52.13,92,56A108.12,108.12,0,0,0,200,164q3.87,0,7.71-.27A84.79,84.79,0,0,1,186.49,187.14Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M227.89,147.89A96,96,0,1,1,108.11,28.11,96.09,96.09,0,0,0,227.89,147.89Z",opacity:"0.2"}),e.createElement("path",{d:"M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M235.54,150.21a104.84,104.84,0,0,1-37,52.91A104,104,0,0,1,32,120,103.09,103.09,0,0,1,52.88,57.48a104.84,104.84,0,0,1,52.91-37,8,8,0,0,1,10,10,88.08,88.08,0,0,0,109.8,109.8,8,8,0,0,1,10,10Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M232.13,143.64a6,6,0,0,0-6-1.49A90.07,90.07,0,0,1,113.86,29.85a6,6,0,0,0-7.49-7.48A102.88,102.88,0,0,0,54.48,58.68,102,102,0,0,0,197.32,201.52a102.88,102.88,0,0,0,36.31-51.89A6,6,0,0,0,232.13,143.64Zm-42,48.29a90,90,0,0,1-126-126A90.9,90.9,0,0,1,99.65,37.66,102.06,102.06,0,0,0,218.34,156.35,90.9,90.9,0,0,1,190.1,191.93Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M230.72,145.06a4,4,0,0,0-4-1A92.08,92.08,0,0,1,111.94,29.27a4,4,0,0,0-5-5A100.78,100.78,0,0,0,56.08,59.88a100,100,0,0,0,140,140,100.78,100.78,0,0,0,35.59-50.87A4,4,0,0,0,230.72,145.06ZM191.3,193.53A92,92,0,0,1,62.47,64.7a93,93,0,0,1,39.88-30.35,100.09,100.09,0,0,0,119.3,119.3A93,93,0,0,1,191.3,193.53Z"}))]]),P=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M203.57,51A107.9,107.9,0,0,0,20,128c0,44.72,27.6,82.25,72,97.94A36,36,0,0,0,140,192a12,12,0,0,1,12-12h46.21a35.79,35.79,0,0,0,35.1-28A108.6,108.6,0,0,0,236,127.09,107.23,107.23,0,0,0,203.57,51Zm6.34,95.67a11.91,11.91,0,0,1-11.7,9.3H152a36,36,0,0,0-36,36,12,12,0,0,1-16,11.3c-16.65-5.88-30.65-15.76-40.48-28.56A76,76,0,0,1,44,128a84,84,0,0,1,83.13-84H128a84.35,84.35,0,0,1,84,83.29A84.72,84.72,0,0,1,209.91,146.71ZM144,76a16,16,0,1,1-16-16A16,16,0,0,1,144,76Zm-44,24A16,16,0,1,1,84,84,16,16,0,0,1,100,100Zm0,56a16,16,0,1,1-16-16A16,16,0,0,1,100,156Zm88-56a16,16,0,1,1-16-16A16,16,0,0,1,188,100Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,127.17a96.48,96.48,0,0,1-2.39,22.18A24,24,0,0,1,198.21,168H152a24,24,0,0,0-24,24,24,24,0,0,1-32,22.61C58.73,201.44,32,169.81,32,128a96,96,0,0,1,95-96C179.84,31.47,223.55,74.35,224,127.17Z",opacity:"0.2"}),e.createElement("path",{d:"M200.77,53.89A103.27,103.27,0,0,0,128,24h-1.07A104,104,0,0,0,24,128c0,43,26.58,79.06,69.36,94.17A32,32,0,0,0,136,192a16,16,0,0,1,16-16h46.21a31.81,31.81,0,0,0,31.2-24.88,104.43,104.43,0,0,0,2.59-24A103.28,103.28,0,0,0,200.77,53.89Zm13,93.71A15.89,15.89,0,0,1,198.21,160H152a32,32,0,0,0-32,32,16,16,0,0,1-21.31,15.07C62.49,194.3,40,164,40,128a88,88,0,0,1,87.09-88h.9a88.35,88.35,0,0,1,88,87.25A88.86,88.86,0,0,1,213.81,147.6ZM140,76a12,12,0,1,1-12-12A12,12,0,0,1,140,76ZM96,100A12,12,0,1,1,84,88,12,12,0,0,1,96,100Zm0,56a12,12,0,1,1-12-12A12,12,0,0,1,96,156Zm88-56a12,12,0,1,1-12-12A12,12,0,0,1,184,100Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M200.77,53.89A103.27,103.27,0,0,0,128,24h-1.07A104,104,0,0,0,24,128c0,43,26.58,79.06,69.36,94.17A32,32,0,0,0,136,192a16,16,0,0,1,16-16h46.21a31.81,31.81,0,0,0,31.2-24.88,104.43,104.43,0,0,0,2.59-24A103.28,103.28,0,0,0,200.77,53.89ZM84,168a12,12,0,1,1,12-12A12,12,0,0,1,84,168Zm0-56a12,12,0,1,1,12-12A12,12,0,0,1,84,112Zm44-24a12,12,0,1,1,12-12A12,12,0,0,1,128,88Zm44,24a12,12,0,1,1,12-12A12,12,0,0,1,172,112Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M199.37,55.31A101.32,101.32,0,0,0,128,26h-1A102,102,0,0,0,26,128c0,42.09,26.07,77.44,68,92.26A30.21,30.21,0,0,0,104.11,222,30.06,30.06,0,0,0,134,192a18,18,0,0,1,18-18h46.21a29.82,29.82,0,0,0,29.25-23.31A102.71,102.71,0,0,0,230,127.11,101.25,101.25,0,0,0,199.37,55.31ZM215.76,148a17.89,17.89,0,0,1-17.55,14H152a30,30,0,0,0-30,30,18,18,0,0,1-24,17C61,195.86,38,164.85,38,128a90,90,0,0,1,89.07-90H128a90.34,90.34,0,0,1,90,89.22A90.46,90.46,0,0,1,215.76,148ZM138,76a10,10,0,1,1-10-10A10,10,0,0,1,138,76ZM94,100A10,10,0,1,1,84,90,10,10,0,0,1,94,100Zm0,56a10,10,0,1,1-10-10A10,10,0,0,1,94,156Zm88-56a10,10,0,1,1-10-10A10,10,0,0,1,182,100Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M200.77,53.89A103.27,103.27,0,0,0,128,24h-1.07A104,104,0,0,0,24,128c0,43,26.58,79.06,69.36,94.17A32,32,0,0,0,136,192a16,16,0,0,1,16-16h46.21a31.81,31.81,0,0,0,31.2-24.88,104.43,104.43,0,0,0,2.59-24A103.28,103.28,0,0,0,200.77,53.89Zm13,93.71A15.89,15.89,0,0,1,198.21,160H152a32,32,0,0,0-32,32,16,16,0,0,1-21.31,15.07C62.49,194.3,40,164,40,128a88,88,0,0,1,87.09-88h.9a88.35,88.35,0,0,1,88,87.25A88.86,88.86,0,0,1,213.81,147.6ZM140,76a12,12,0,1,1-12-12A12,12,0,0,1,140,76ZM96,100A12,12,0,1,1,84,88,12,12,0,0,1,96,100Zm0,56a12,12,0,1,1-12-12A12,12,0,0,1,96,156Zm88-56a12,12,0,1,1-12-12A12,12,0,0,1,184,100Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M198,56.74A99.31,99.31,0,0,0,128,28h-1A100,100,0,0,0,28,128c0,41.22,25.55,75.85,66.69,90.38a28.34,28.34,0,0,0,9.42,1.63A28,28,0,0,0,132,192a20,20,0,0,1,20-20h46.21a27.84,27.84,0,0,0,27.3-21.76,100.37,100.37,0,0,0,2.49-23.1A99.26,99.26,0,0,0,198,56.74Zm19.74,91.72A19.89,19.89,0,0,1,198.21,164H152a28,28,0,0,0-28,28,20,20,0,0,1-26.64,18.83C59.51,197.46,36,165.72,36,128a92,92,0,0,1,91.05-92H128a92,92,0,0,1,89.72,112.46ZM136,76a8,8,0,1,1-8-8A8,8,0,0,1,136,76ZM92,100a8,8,0,1,1-8-8A8,8,0,0,1,92,100Zm0,56a8,8,0,1,1-8-8A8,8,0,0,1,92,156Zm88-56a8,8,0,1,1-8-8A8,8,0,0,1,180,100Z"}))]]),G=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M116,36V20a12,12,0,0,1,24,0V36a12,12,0,0,1-24,0Zm80,92a68,68,0,1,1-68-68A68.07,68.07,0,0,1,196,128Zm-24,0a44,44,0,1,0-44,44A44.05,44.05,0,0,0,172,128ZM51.51,68.49a12,12,0,1,0,17-17l-12-12a12,12,0,0,0-17,17Zm0,119-12,12a12,12,0,0,0,17,17l12-12a12,12,0,1,0-17-17ZM196,72a12,12,0,0,0,8.49-3.51l12-12a12,12,0,0,0-17-17l-12,12A12,12,0,0,0,196,72Zm8.49,115.51a12,12,0,0,0-17,17l12,12a12,12,0,0,0,17-17ZM48,128a12,12,0,0,0-12-12H20a12,12,0,0,0,0,24H36A12,12,0,0,0,48,128Zm80,80a12,12,0,0,0-12,12v16a12,12,0,0,0,24,0V220A12,12,0,0,0,128,208Zm108-92H220a12,12,0,0,0,0,24h16a12,12,0,0,0,0-24Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M184,128a56,56,0,1,1-56-56A56,56,0,0,1,184,128Z",opacity:"0.2"}),e.createElement("path",{d:"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm8,24a64,64,0,1,0,64,64A64.07,64.07,0,0,0,128,64ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M122,40V16a6,6,0,0,1,12,0V40a6,6,0,0,1-12,0Zm68,88a62,62,0,1,1-62-62A62.07,62.07,0,0,1,190,128Zm-12,0a50,50,0,1,0-50,50A50.06,50.06,0,0,0,178,128ZM59.76,68.24a6,6,0,1,0,8.48-8.48l-16-16a6,6,0,0,0-8.48,8.48Zm0,119.52-16,16a6,6,0,1,0,8.48,8.48l16-16a6,6,0,1,0-8.48-8.48ZM192,70a6,6,0,0,0,4.24-1.76l16-16a6,6,0,0,0-8.48-8.48l-16,16A6,6,0,0,0,192,70Zm4.24,117.76a6,6,0,0,0-8.48,8.48l16,16a6,6,0,0,0,8.48-8.48ZM46,128a6,6,0,0,0-6-6H16a6,6,0,0,0,0,12H40A6,6,0,0,0,46,128Zm82,82a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V216A6,6,0,0,0,128,210Zm112-88H216a6,6,0,0,0,0,12h24a6,6,0,0,0,0-12Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M124,40V16a4,4,0,0,1,8,0V40a4,4,0,0,1-8,0Zm64,88a60,60,0,1,1-60-60A60.07,60.07,0,0,1,188,128Zm-8,0a52,52,0,1,0-52,52A52.06,52.06,0,0,0,180,128ZM61.17,66.83a4,4,0,0,0,5.66-5.66l-16-16a4,4,0,0,0-5.66,5.66Zm0,122.34-16,16a4,4,0,0,0,5.66,5.66l16-16a4,4,0,0,0-5.66-5.66ZM192,68a4,4,0,0,0,2.83-1.17l16-16a4,4,0,1,0-5.66-5.66l-16,16A4,4,0,0,0,192,68Zm2.83,121.17a4,4,0,0,0-5.66,5.66l16,16a4,4,0,0,0,5.66-5.66ZM40,124H16a4,4,0,0,0,0,8H40a4,4,0,0,0,0-8Zm88,88a4,4,0,0,0-4,4v24a4,4,0,0,0,8,0V216A4,4,0,0,0,128,212Zm112-88H216a4,4,0,0,0,0,8h24a4,4,0,0,0,0-8Z"}))]]),x=e.forwardRef((s,r)=>e.createElement(A,{ref:r,...s,weights:O}));x.displayName="MoonIcon";const U=x,g=e.forwardRef((s,r)=>e.createElement(A,{ref:r,...s,weights:P}));g.displayName="PaletteIcon";const $=g,p=e.forwardRef((s,r)=>e.createElement(A,{ref:r,...s,weights:G}));p.displayName="SunIcon";const q=p,K="https://github.com/baealex/ocean-brain/releases",Q=s=>/^\d+\.\d+\.\d+/.test(s)?`v${s}`:s,B=w.mcp.status(),r0=()=>{const{theme:s,toggleTheme:r}=M(j=>j),{data:Z,isLoading:u}=N({queryKey:B,queryFn:b}),d=Z?.server,n="focus-ring-soft surface-base group flex items-start justify-between gap-3.5 px-4 py-3.5 text-left text-fg-default outline-none transition-colors hover:bg-hover-subtle",l="inline-flex h-12 w-12 shrink-0 items-center justify-center rounded-[15px] border border-border-subtle bg-muted text-fg-secondary transition-colors group-hover:border-border-secondary/70 group-hover:text-fg-default",m="h-6 w-6",h="text-fg-tertiary",i="min-w-0 flex flex-col gap-0.5 pt-0.5",f=d?Q(d.version):u?"checking…":"unknown",v=d?.releaseUrl??K;return a.jsx(y,{title:"Settings",description:"Manage display, workspace tools, and advanced connections",children:a.jsxs("div",{className:"flex flex-col gap-6",children:[a.jsxs("section",{className:"flex flex-col gap-3",children:[a.jsx(t,{as:"p",variant:"label",weight:"medium",className:h,children:"Appearance"}),a.jsxs("button",{type:"button",className:n,onClick:r,children:[a.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[a.jsx("span",{className:l,children:a.jsx($,{className:m})}),a.jsxs("div",{className:i,children:[a.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Theme"}),a.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Switch between light and dark mode."})]})]}),a.jsxs("div",{className:"mt-0.5 flex shrink-0 items-center gap-2 text-fg-tertiary",children:[a.jsx(t,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:s==="dark"?"Dark":"Light"}),s==="dark"?a.jsx(U,{className:"h-4 w-4",weight:"fill"}):a.jsx(q,{className:"h-4 w-4",weight:"fill"})]})]})]}),a.jsxs("section",{className:"flex flex-col gap-3",children:[a.jsx(t,{as:"p",variant:"label",weight:"medium",className:h,children:"Workspace"}),a.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[a.jsxs(c,{to:H,search:{page:1},className:n,children:[a.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[a.jsx("span",{className:l,children:a.jsx(E,{className:m})}),a.jsxs("div",{className:i,children:[a.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Properties"}),a.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Manage fields used across notes."})]})]}),a.jsx(o,{className:"mt-0.5 h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-hover:translate-x-0.5 group-hover:text-fg-secondary"})]}),a.jsxs(c,{to:T,search:{page:1},className:n,children:[a.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[a.jsx("span",{className:l,children:a.jsx(I,{className:m})}),a.jsxs("div",{className:i,children:[a.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Placeholders"}),a.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Manage reusable template variables."})]})]}),a.jsx(o,{className:"mt-0.5 h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-hover:translate-x-0.5 group-hover:text-fg-secondary"})]}),a.jsxs(c,{to:S,search:{page:1},className:n,children:[a.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[a.jsx("span",{className:l,children:a.jsx(C,{className:m})}),a.jsxs("div",{className:i,children:[a.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Images"}),a.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Review uploaded note images."})]})]}),a.jsx(o,{className:"mt-0.5 h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-hover:translate-x-0.5 group-hover:text-fg-secondary"})]}),a.jsxs(c,{to:R,search:{page:1},className:n,children:[a.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[a.jsx("span",{className:l,children:a.jsx(_,{className:m})}),a.jsxs("div",{className:i,children:[a.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Trash"}),a.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Restore or permanently delete notes."})]})]}),a.jsx(o,{className:"mt-0.5 h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-hover:translate-x-0.5 group-hover:text-fg-secondary"})]})]})]}),a.jsxs("section",{className:"flex flex-col gap-3",children:[a.jsx(t,{as:"p",variant:"label",weight:"medium",className:h,children:"Advanced"}),a.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[a.jsxs(c,{to:F,className:n,children:[a.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[a.jsx("span",{className:l,children:a.jsx(L,{className:m})}),a.jsxs("div",{className:i,children:[a.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Search"}),a.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Add meaning-based recall with an embedding API."})]})]}),a.jsx(o,{className:"mt-0.5 h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-hover:translate-x-0.5 group-hover:text-fg-secondary"})]}),a.jsxs(c,{to:k,className:n,children:[a.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[a.jsx("span",{className:l,children:a.jsx(V,{className:m})}),a.jsxs("div",{className:i,children:[a.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Integrations"}),a.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Connect MCP clients and external apps."})]})]}),a.jsx(o,{className:"mt-0.5 h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-hover:translate-x-0.5 group-hover:text-fg-secondary"})]})]})]}),a.jsxs(t,{as:"p",variant:"meta",tone:"tertiary",className:"border-t border-border-subtle pt-4",children:["Ocean Brain ",f," ·"," ",a.jsx("a",{href:v,target:"_blank",rel:"noreferrer",className:"font-medium text-fg-secondary underline-offset-4 hover:underline",children:"Releases"})]})]})})};export{r0 as default};
@@ -0,0 +1 @@
1
+ import{r as s,j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{u as ae,b as z,n as se,a as te}from"./useNoteMutate-BQj6jHhV.js";import{C as H,f as ne,T as o,L as y,I as E,d as P,B as x,e as _,h as re,i as Z,J as L,K as le,u as J,F as R,S as U,q as T,a5 as ie,P as oe,a6 as ce,a7 as de,a8 as me,a9 as ue,aa as pe,c as he,ab as xe,ac as fe,k as ge}from"./time-Kh6oav5R.js";import{I as ve,i as V,S as je}from"./url-Bp8sXMb4.js";import{c as ye,u as I,h as be,j as we,k as Ne,f as ke,l as Ae}from"./app-OGsLwSqJ.js";import{m as Ce}from"./WarningCircle.es-BAvgGuQK.js";import{c as Ee}from"./Info.es-Bwz4CSvS.js";import{s as $}from"./ArrowRight.es-E09Lfefr.js";import{s as Se}from"./Copy.es-ftEldGIL.js";import{m as Me}from"./ArrowClockwise.es-BwtKWcmj.js";import{n as Ze}from"./Plus.es-Dmb3oijD.js";import"./preload-helper-BXl3LOEh.js";import"./Graph-BaqGi3M7.js";const Ie=new Map([["bold",s.createElement(s.Fragment,null,s.createElement("path",{d:"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm68-84a12,12,0,0,1-12,12H128a12,12,0,0,1-12-12V72a12,12,0,0,1,24,0v44h44A12,12,0,0,1,196,128Z"}))],["duotone",s.createElement(s.Fragment,null,s.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),s.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z"}))],["fill",s.createElement(s.Fragment,null,s.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z"}))],["light",s.createElement(s.Fragment,null,s.createElement("path",{d:"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm62-90a6,6,0,0,1-6,6H128a6,6,0,0,1-6-6V72a6,6,0,0,1,12,0v50h50A6,6,0,0,1,190,128Z"}))],["regular",s.createElement(s.Fragment,null,s.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z"}))],["thin",s.createElement(s.Fragment,null,s.createElement("path",{d:"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm60-92a4,4,0,0,1-4,4H128a4,4,0,0,1-4-4V72a4,4,0,0,1,8,0v52h52A4,4,0,0,1,188,128Z"}))]]),$e=new Map([["bold",s.createElement(s.Fragment,null,s.createElement("path",{d:"M71.68,97.22,34.74,128l36.94,30.78a12,12,0,1,1-15.36,18.44l-48-40a12,12,0,0,1,0-18.44l48-40A12,12,0,0,1,71.68,97.22Zm176,21.56-48-40a12,12,0,1,0-15.36,18.44L221.26,128l-36.94,30.78a12,12,0,1,0,15.36,18.44l48-40a12,12,0,0,0,0-18.44ZM164.1,28.72a12,12,0,0,0-15.38,7.18l-64,176a12,12,0,0,0,7.18,15.37A11.79,11.79,0,0,0,96,228a12,12,0,0,0,11.28-7.9l64-176A12,12,0,0,0,164.1,28.72Z"}))],["duotone",s.createElement(s.Fragment,null,s.createElement("path",{d:"M240,128l-48,40H64L16,128,64,88H192Z",opacity:"0.2"}),s.createElement("path",{d:"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.29l-48-40a8,8,0,0,1,0-12.29l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,1,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.29l48-40a8,8,0,0,0,0-12.29ZM162.73,32.48a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z"}))],["fill",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM92.8,145.6a8,8,0,1,1-9.6,12.8l-32-24a8,8,0,0,1,0-12.8l32-24a8,8,0,0,1,9.6,12.8L69.33,128Zm58.89-71.4-32,112a8,8,0,1,1-15.38-4.4l32-112a8,8,0,0,1,15.38,4.4Zm53.11,60.2-32,24a8,8,0,0,1-9.6-12.8L186.67,128,163.2,110.4a8,8,0,1,1,9.6-12.8l32,24a8,8,0,0,1,0,12.8Z"}))],["light",s.createElement(s.Fragment,null,s.createElement("path",{d:"M67.84,92.61,25.37,128l42.47,35.39a6,6,0,1,1-7.68,9.22l-48-40a6,6,0,0,1,0-9.22l48-40a6,6,0,0,1,7.68,9.22Zm176,30.78-48-40a6,6,0,1,0-7.68,9.22L230.63,128l-42.47,35.39a6,6,0,1,0,7.68,9.22l48-40a6,6,0,0,0,0-9.22Zm-81.79-89A6,6,0,0,0,154.36,38l-64,176A6,6,0,0,0,94,221.64a6.15,6.15,0,0,0,2,.36,6,6,0,0,0,5.64-3.95l64-176A6,6,0,0,0,162.05,34.36Z"}))],["regular",s.createElement(s.Fragment,null,s.createElement("path",{d:"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.29l-48-40a8,8,0,0,1,0-12.29l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,1,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.29l48-40a8,8,0,0,0,0-12.29ZM162.73,32.48a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z"}))],["thin",s.createElement(s.Fragment,null,s.createElement("path",{d:"M66.56,91.07,22.25,128l44.31,36.93A4,4,0,0,1,64,172a3.94,3.94,0,0,1-2.56-.93l-48-40a4,4,0,0,1,0-6.14l48-40a4,4,0,0,1,5.12,6.14Zm176,33.86-48-40a4,4,0,1,0-5.12,6.14L233.75,128l-44.31,36.93a4,4,0,1,0,5.12,6.14l48-40a4,4,0,0,0,0-6.14ZM161.37,36.24a4,4,0,0,0-5.13,2.39l-64,176a4,4,0,0,0,2.39,5.13A4.12,4.12,0,0,0,96,220a4,4,0,0,0,3.76-2.63l64-176A4,4,0,0,0,161.37,36.24Z"}))]]),Pe=new Map([["bold",s.createElement(s.Fragment,null,s.createElement("path",{d:"M188,184a16,16,0,1,1,16-16A16,16,0,0,1,188,184Zm36-68H180a12,12,0,0,0,0,24h40v56H36V140H76a12,12,0,0,0,0-24H32a20,20,0,0,0-20,20v64a20,20,0,0,0,20,20H224a20,20,0,0,0,20-20V136A20,20,0,0,0,224,116ZM88.49,80.49,116,53v75a12,12,0,0,0,24,0V53l27.51,27.52a12,12,0,1,0,17-17l-48-48a12,12,0,0,0-17,0l-48,48a12,12,0,1,0,17,17Z"}))],["duotone",s.createElement(s.Fragment,null,s.createElement("path",{d:"M232,136v64a8,8,0,0,1-8,8H32a8,8,0,0,1-8-8V136a8,8,0,0,1,8-8H224A8,8,0,0,1,232,136Z",opacity:"0.2"}),s.createElement("path",{d:"M240,136v64a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V136a16,16,0,0,1,16-16H80a8,8,0,0,1,0,16H32v64H224V136H176a8,8,0,0,1,0-16h48A16,16,0,0,1,240,136ZM85.66,77.66,120,43.31V128a8,8,0,0,0,16,0V43.31l34.34,34.35a8,8,0,0,0,11.32-11.32l-48-48a8,8,0,0,0-11.32,0l-48,48A8,8,0,0,0,85.66,77.66ZM200,168a12,12,0,1,0-12,12A12,12,0,0,0,200,168Z"}))],["fill",s.createElement(s.Fragment,null,s.createElement("path",{d:"M74.34,77.66a8,8,0,0,1,0-11.32l48-48a8,8,0,0,1,11.32,0l48,48a8,8,0,0,1-11.32,11.32L136,43.31V128a8,8,0,0,1-16,0V43.31L85.66,77.66A8,8,0,0,1,74.34,77.66ZM240,136v64a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V136a16,16,0,0,1,16-16h68a4,4,0,0,1,4,4v3.46c0,13.45,11,24.79,24.46,24.54A24,24,0,0,0,152,128v-4a4,4,0,0,1,4-4h68A16,16,0,0,1,240,136Zm-40,32a12,12,0,1,0-12,12A12,12,0,0,0,200,168Z"}))],["light",s.createElement(s.Fragment,null,s.createElement("path",{d:"M238,136v64a14,14,0,0,1-14,14H32a14,14,0,0,1-14-14V136a14,14,0,0,1,14-14H80a6,6,0,0,1,0,12H32a2,2,0,0,0-2,2v64a2,2,0,0,0,2,2H224a2,2,0,0,0,2-2V136a2,2,0,0,0-2-2H176a6,6,0,0,1,0-12h48A14,14,0,0,1,238,136ZM84.24,76.24,122,38.49V128a6,6,0,0,0,12,0V38.49l37.76,37.75a6,6,0,0,0,8.48-8.48l-48-48a6,6,0,0,0-8.48,0l-48,48a6,6,0,0,0,8.48,8.48ZM198,168a10,10,0,1,0-10,10A10,10,0,0,0,198,168Z"}))],["regular",s.createElement(s.Fragment,null,s.createElement("path",{d:"M240,136v64a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V136a16,16,0,0,1,16-16H80a8,8,0,0,1,0,16H32v64H224V136H176a8,8,0,0,1,0-16h48A16,16,0,0,1,240,136ZM85.66,77.66,120,43.31V128a8,8,0,0,0,16,0V43.31l34.34,34.35a8,8,0,0,0,11.32-11.32l-48-48a8,8,0,0,0-11.32,0l-48,48A8,8,0,0,0,85.66,77.66ZM200,168a12,12,0,1,0-12,12A12,12,0,0,0,200,168Z"}))],["thin",s.createElement(s.Fragment,null,s.createElement("path",{d:"M236,136v64a12,12,0,0,1-12,12H32a12,12,0,0,1-12-12V136a12,12,0,0,1,12-12H80a4,4,0,0,1,0,8H32a4,4,0,0,0-4,4v64a4,4,0,0,0,4,4H224a4,4,0,0,0,4-4V136a4,4,0,0,0-4-4H176a4,4,0,0,1,0-8h48A12,12,0,0,1,236,136ZM82.83,74.83,124,33.66V128a4,4,0,0,0,8,0V33.66l41.17,41.17a4,4,0,1,0,5.66-5.66l-48-48a4,4,0,0,0-5.66,0l-48,48a4,4,0,0,0,5.66,5.66ZM196,168a8,8,0,1,0-8,8A8,8,0,0,0,196,168Z"}))]]),K=s.forwardRef((a,t)=>s.createElement(H,{ref:t,...a,weights:Ie}));K.displayName="ClockIcon";const Te=K,G=s.forwardRef((a,t)=>s.createElement(H,{ref:t,...a,weights:$e}));G.displayName="CodeIcon";const Re=G,Q=s.forwardRef((a,t)=>s.createElement(H,{ref:t,...a,weights:Pe}));Q.displayName="UploadIcon";const Fe=Q,He=["notes:read","notes:create","notes:update","notes:delete"],W=a=>ne.isAxiosError(a)&&a.response?.data?.message?a.response.data.message:a instanceof Error?a.message:"The integration request failed.";function Le(a,t=Date.now()){if(a.manifest.launch?.mode==="proxied"&&!a.proxyConfigured)return{kind:"address",label:"App address needed",detail:"Add an address in App settings."};if(a.manifest.launch&&a.manifest.permissions.length===0)return{kind:a.enabled?"page":"paused",label:a.enabled?"App enabled":"Access paused",detail:null};if(!a.token)return{kind:"setup",label:"Setup needed",detail:null};if(a.manifest.permissions.length>0&&!a.grantedPermissions.includes("notes:read"))return{kind:"permissions",label:"No note access",detail:null};if(!a.enabled)return{kind:"paused",label:"Access paused",detail:null};const c=a.statusReport;if(c){if(c.state==="running"&&t-new Date(c.reportedAt).getTime()>5*6e4)return{kind:"overdue",label:"Progress update overdue",detail:"Check the app before retrying."};const d={running:"Working",succeeded:"Completed",failed:"Needs attention"};return{kind:c.state,label:d[c.state],detail:c.message}}return a.token.lastUsedAt?{kind:"recorded",label:"Connection recorded",detail:null}:{kind:"waiting",label:"Waiting for first access",detail:null}}function Oe({canCreate:a}){const t=s.useId(),c=_(),[d,j]=s.useState(""),f=`Use Ocean Brain to research ${d.trim()||"[your topic]"}. Search my notes and read the relevant sources. Summarize what they support, distinguish your inferences, and identify unanswered questions. Include links to the original notes using [[title]](note:id). Do not invent sources.${a?" Create one new note containing the summary and source links, without changing existing notes, and give me the link to the new note.":" Show the summary and source links in this conversation without changing any notes."}`;return e.jsxs("section",{"aria-labelledby":`${t}-heading`,className:"mb-5 space-y-3 border-y border-border-subtle py-4",children:[e.jsx(o,{id:`${t}-heading`,as:"h3",variant:"label",weight:"medium",children:"Try it with your notes"}),e.jsxs(o,{as:"p",variant:"meta",tone:"secondary",children:[a?"Create a summary note with source links.":"Summarize your notes without changing them."," ","Copy the request to your AI client."]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:`${t}-topic`,children:"What would you like to research?"}),e.jsx(E,{id:`${t}-topic`,value:d,onChange:g=>j(g.target.value),placeholder:"A project, decision, or question"})]}),e.jsxs("details",{children:[e.jsx("summary",{className:"focus-ring-soft cursor-pointer rounded-lg py-2 text-sm text-fg-secondary",children:"Preview request"}),e.jsx(P,{"aria-label":"Research request",readOnly:!0,value:f,rows:5,className:"mt-2"})]}),e.jsx(x,{variant:"subtle",size:"sm",disabled:!d.trim(),onClick:async()=>{try{await navigator.clipboard.writeText(f),c("Copied request. Paste it into your connected AI client.")}catch{c("Could not copy. Open Preview request and copy it manually.")}},children:"Copy research request"})]})}const Ue=new Set(["proxied","iframe","external"]),D=a=>JSON.stringify(a,null,2),Ve=a=>{try{const t=JSON.parse(a);return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:null}catch{return null}},X=a=>{const t=a?.launch;return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:null},De=a=>{const t=X(a)?.mode;return typeof t=="string"&&Ue.has(t)?t:"none"},F=(a,t)=>{const c=a?.[t];return typeof c=="string"?c:""},q={proxied:"Ocean Brain requests the private app URL and serves it from the connection’s /apps path.",iframe:"Ocean Brain embeds this URL. The user’s browser must be able to reach it.",external:"Ocean Brain opens this URL outside the app.",none:"This integration provides API access without an app page."};function qe({connectionId:a,manifest:t,proxyConfigured:c,disabled:d,onSave:j}){const i=s.useId(),f=D(t),[g,v]=s.useState(f),[b,p]=s.useState("");s.useEffect(()=>{v(f),p("")},[f]);const l=Ve(g),w=X(l),m=De(l),k=typeof w?.url=="string"?w.url:"",A=!!(l&&(JSON.stringify(l)!==JSON.stringify(t)||b.trim())),N=g!==f||!!b,h=(m==="iframe"||m==="external")&&!k.trim(),u=m==="proxied"&&!c&&!b.trim(),S=r=>{l&&v(D(r(l)))},C=(r,M)=>S(O=>({...O,[r]:M})),n=r=>{r!=="proxied"&&p(""),S(M=>{if(r==="none"){const{launch:O,...ee}=M;return ee}return r==="proxied"?{...M,launch:{mode:r}}:{...M,launch:{mode:r,url:k}}})};return e.jsxs("div",{className:"mt-3 flex flex-col gap-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col gap-2 sm:col-span-2",children:[e.jsx(y,{htmlFor:`${i}-name`,children:"App name"}),e.jsx(E,{id:`${i}-name`,value:F(l,"name"),maxLength:80,disabled:d||!l,onChange:r=>C("name",r.target.value)})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:col-span-2",children:[e.jsx(y,{htmlFor:`${i}-description`,children:"Description"}),e.jsx(P,{id:`${i}-description`,value:F(l,"description"),maxLength:500,rows:3,disabled:d||!l,onChange:r=>C("description",r.target.value)})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(y,{htmlFor:`${i}-version`,children:"Version"}),e.jsx(E,{id:`${i}-version`,value:F(l,"version"),maxLength:40,disabled:d||!l,onChange:r=>C("version",r.target.value)})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(y,{htmlFor:`${i}-launch`,children:"App page"}),e.jsxs(re,{id:`${i}-launch`,value:m,disabled:d||!l,onValueChange:r=>n(r),children:[e.jsx(Z,{value:"proxied",children:"Proxied through Ocean Brain"}),e.jsx(Z,{value:"iframe",children:"Embedded iframe"}),e.jsx(Z,{value:"external",children:"External link"}),e.jsx(Z,{value:"none",children:"No app page"})]})]}),(m==="iframe"||m==="external")&&e.jsxs("div",{className:"flex flex-col gap-2 sm:col-span-2",children:[e.jsx(y,{htmlFor:`${i}-url`,children:"App URL"}),e.jsx(E,{id:`${i}-url`,type:"url",value:k,placeholder:"https://app.example.com",disabled:d||!l,onChange:r=>S(M=>({...M,launch:{mode:m,url:r.target.value}}))})]}),m==="proxied"&&e.jsxs("div",{className:"flex flex-col gap-2 sm:col-span-2",children:[e.jsx(y,{htmlFor:`${i}-proxy-url`,children:"Private app URL"}),e.jsx(E,{id:`${i}-proxy-url`,type:"url",value:b,placeholder:c?"Configured — enter a URL to replace it":"http://127.0.0.1:7778",disabled:d||!l,onChange:r=>p(r.target.value)}),e.jsx(o,{as:"p",variant:"meta",tone:"secondary",children:"Stored only on the Ocean Brain server and never included in the manifest or API response."})]})]}),e.jsx(o,{as:"p",variant:"meta",tone:"secondary",children:m==="proxied"?`${q.proxied} Public path: /apps/${a}/`:q[m]}),e.jsxs("details",{className:"group rounded-[14px] border border-border-subtle px-3 py-2",children:[e.jsxs("summary",{className:"focus-ring-soft flex cursor-pointer list-none items-center gap-2 rounded-lg py-1 text-sm text-fg-secondary marker:hidden",children:[e.jsx(L,{className:"h-3.5 w-3.5 transition-transform group-open:rotate-90"}),"Advanced manifest JSON"]}),e.jsx(P,{"aria-label":`Updated manifest for ${t.name}`,value:g,onChange:r=>v(r.target.value),rows:12,className:"mt-2 font-mono text-xs",disabled:d}),!l&&e.jsx(o,{as:"p",role:"alert",variant:"meta",tone:"error",className:"mt-2",children:"Enter a valid JSON object to continue editing."}),e.jsx(o,{as:"p",variant:"meta",tone:"secondary",className:"mt-2",children:"The app ID cannot change. New requested permissions stay unapproved until you enable them above."})]}),(h||u)&&e.jsx(o,{as:"p",role:"alert",variant:"meta",tone:"error",children:u?"Enter the private app URL for this connection.":"Enter an app URL for this launch mode."}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(x,{variant:"subtle",size:"sm",disabled:d||!l||!A||h||u,onClick:()=>l&&j({manifest:l,...m==="proxied"&&b.trim()?{proxyUrl:b.trim()}:{}}),children:"Update manifest"}),e.jsx(x,{variant:"ghost",size:"sm",disabled:d||!N,onClick:()=>{v(f),p("")},children:"Reset"})]})]})}const Be={"notes:read":"Read notes","notes:create":"Create notes","notes:update":"Edit notes","notes:delete":"Delete notes"};function Y({requested:a,granted:t,disabled:c,onChange:d}){const j=s.useId();return e.jsxs("fieldset",{disabled:c,className:"min-w-0",children:[e.jsx("legend",{className:"mb-3 text-label font-medium text-fg-secondary",children:"Allowed access"}),e.jsx("div",{className:"grid grid-cols-1 gap-x-4 sm:grid-cols-2",children:a.map(i=>e.jsxs("div",{className:"flex min-h-11 items-center gap-2",children:[e.jsx(le,{id:`${j}-${i}`,checked:t.includes(i),disabled:c,onChange:f=>{const g=f.target.checked?[...new Set([...t,"notes:read",i])]:i==="notes:read"?[]:t.filter(v=>v!==i);d(g)}}),e.jsx(y,{htmlFor:`${j}-${i}`,className:"flex min-h-11 flex-1 cursor-pointer items-center font-normal text-fg-default",children:Be[i]})]},i))}),e.jsx(o,{as:"p",variant:"meta",tone:"secondary",className:"mt-3",children:"Read access covers all notes, tags, properties, and views. Writing also requires reading."})]})}function ze({integration:a,expanded:t,onExpandedChange:c}){const d=J(),j=ae(),i=_(),f=s.useId(),[g,v]=s.useState(""),p=z({mutationFn:async n=>n(),onSuccess:async()=>{await Promise.all([d.invalidateQueries({queryKey:T.integrations.all(),exact:!1}),d.invalidateQueries({queryKey:T.mcp.status(),exact:!0})])}}),l=n=>p.mutate(n),w=a.manifest.launch,m=Le(a),k=a.grantedPermissions.includes("notes:read"),A=["address","setup","permissions","paused"].includes(m.kind),N=w&&a.enabled&&!A&&(w.mode!=="proxied"||a.proxyConfigured),h=a.native&&a.enabled&&a.token&&k,u=m.kind==="failed"||m.kind==="overdue",S=u?Ce:m.kind==="running"?Te:Ee,C=()=>{t||c()};return e.jsxs("section",{"aria-label":a.manifest.name,className:"surface-base min-w-0",children:[e.jsxs("div",{className:"flex items-start gap-3 px-4 pt-4 sm:px-5 sm:pt-5",children:[e.jsx("span",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-muted text-fg-secondary",children:a.native?e.jsx(Re,{"aria-hidden":"true",className:"h-5 w-5"}):e.jsx(ye,{"aria-hidden":"true",className:"h-5 w-5"})}),e.jsxs("div",{className:"min-w-0 flex-1 space-y-1",children:[e.jsx(o,{as:"h3",weight:"medium",className:"break-words",children:a.manifest.name}),e.jsx(o,{as:"p",variant:"meta",tone:"secondary",className:t?"break-words":"line-clamp-1",children:a.manifest.description})]}),e.jsx(x,{variant:"ghost",size:"icon","aria-label":`Configure ${a.manifest.name}`,"aria-expanded":t,"aria-controls":f,onClick:c,className:"min-h-11 min-w-11 shrink-0",children:e.jsx(se,{"aria-hidden":"true",className:"h-4 w-4"})})]}),e.jsx("div",{className:"px-4 pb-4 pt-4 sm:px-5 sm:pb-5",children:e.jsxs("div",{className:"flex flex-col gap-4 border-t border-border-subtle pt-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-2.5",children:[e.jsx(S,{"aria-hidden":"true",className:`mt-0.5 h-4 w-4 shrink-0 ${u?"text-fg-error":"text-fg-secondary"}`}),e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx(o,{as:"p",variant:"meta",weight:"medium",tone:u?"error":"default",children:m.label}),m.detail&&e.jsx(o,{as:"p",variant:"meta",tone:"secondary",className:"break-words",children:m.detail}),a.statusReport?e.jsxs(o,{as:"p",variant:"micro",tone:"tertiary",children:["Reported by app · ",new Date(a.statusReport.reportedAt).toLocaleString()]}):a.token?.lastUsedAt?e.jsxs(o,{as:"p",variant:"micro",tone:"tertiary",children:["Last connection · ",new Date(a.token.lastUsedAt).toLocaleString()]}):null]})]}),e.jsx("div",{className:"flex shrink-0 flex-wrap gap-2 sm:pl-3",children:N?e.jsx(x,{asChild:!0,variant:"subtle",className:"min-h-11 w-full sm:w-auto",children:e.jsxs(R,{to:ve,params:{connectionId:a.id},children:["Open app ",e.jsx($,{"aria-hidden":"true",className:"h-4 w-4"})]})}):a.native&&m.kind!=="permissions"&&!h?e.jsx(x,{asChild:!0,variant:"subtle",className:"min-h-11 w-full sm:w-auto",children:e.jsxs(R,{to:V,children:["Set up MCP ",e.jsx($,{"aria-hidden":"true",className:"h-4 w-4"})]})}):t?null:e.jsxs(x,{variant:"subtle",onClick:C,className:"min-h-11 w-full sm:w-auto",children:[h?"Try with your notes":A?"Continue setup":"View settings",e.jsx($,{"aria-hidden":"true",className:"h-4 w-4"})]})})]})}),e.jsxs("div",{id:f,hidden:!t,className:"border-t border-border-subtle px-4 py-5 sm:px-5",children:[a.native&&a.enabled&&a.token&&k&&e.jsx(Oe,{canCreate:a.grantedPermissions.includes("notes:create")}),e.jsxs("div",{className:"mb-5 flex items-center justify-between gap-4 border-b border-border-subtle pb-4",children:[e.jsx("div",{className:"space-y-1",children:e.jsx(y,{htmlFor:`access-${a.id}`,children:"Integration access"})}),e.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[e.jsx(o,{as:"span",variant:"meta",weight:"medium",children:a.enabled?"On":"Off"}),e.jsx(U,{id:`access-${a.id}`,"aria-label":`Enable ${a.manifest.name}`,checked:a.enabled,disabled:p.isPending||!a.enabled&&w?.mode==="proxied"&&!a.proxyConfigured,onCheckedChange:n=>l(()=>I({id:a.id,enabled:n}))})]})]}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-2 lg:gap-8",children:[e.jsx(Y,{requested:a.manifest.permissions,granted:a.grantedPermissions,disabled:p.isPending,onChange:n=>l(()=>I({id:a.id,grantedPermissions:n}))}),e.jsxs("div",{className:"flex min-w-0 flex-col items-start gap-3",children:[e.jsx(o,{as:"h3",variant:"label",weight:"medium",tone:"secondary",children:"Connection details"}),a.native&&e.jsx(x,{asChild:!0,variant:"subtle",size:"sm",children:e.jsxs(R,{to:V,children:["MCP connection setup ",e.jsx($,{"aria-hidden":"true",className:"h-4 w-4"})]})}),w&&e.jsxs("div",{className:"flex w-full flex-col gap-3",children:[e.jsx(o,{as:"p",variant:"meta",tone:"secondary",className:"break-all",children:w.mode==="proxied"?a.proxyConfigured?"Private app address saved":"Private app address needed":w.url}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx(U,{id:`pin-${a.id}`,checked:a.pinned,disabled:p.isPending,onCheckedChange:n=>l(()=>I({id:a.id,pinned:n}))}),e.jsx(y,{htmlFor:`pin-${a.id}`,children:"Show in top bar"})]})]}),!a.native&&a.manifest.permissions.length>0&&(!a.token?.lastUsedAt||!a.enabled)&&e.jsxs("div",{className:"w-full space-y-3",children:[e.jsxs("ol",{className:"list-decimal space-y-2 pl-5 text-sm text-fg-secondary",children:[e.jsx("li",{children:"Save a token in your app."}),e.jsx("li",{children:"Set the server URL below and turn access on."}),e.jsx("li",{children:"Run a task to check the connection."})]}),e.jsx(y,{htmlFor:`server-url-${a.id}`,children:"Ocean Brain URL"}),e.jsx(E,{id:`server-url-${a.id}`,readOnly:!0,value:window.location.origin})]}),e.jsx(o,{as:"p",variant:"meta",tone:"secondary",children:a.token?`Last API access: ${a.token.lastUsedAt?new Date(a.token.lastUsedAt).toLocaleString():"Not used yet"}`:"No active token"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(x,{variant:"subtle",size:"sm",disabled:p.isPending,onClick:async()=>{a.token&&!await j("Replace this integration token? Existing connections using it will stop working.")||l(async()=>{const n=await be(a.id);v(n.token)})},children:a.token?"Replace token":"Generate token"}),a.token&&e.jsx(x,{variant:"ghost",size:"sm",disabled:p.isPending,onClick:async()=>{await j("Revoke this integration token? Its connections will lose access.")&&l(async()=>{await we(a.id),v("")})},children:"Revoke token"})]}),g&&e.jsxs("div",{className:"flex w-full min-w-0 flex-col gap-2",children:[e.jsx(y,{htmlFor:`token-${a.id}`,children:"Save this token now. It is shown only once."}),e.jsx(E,{id:`token-${a.id}`,value:g,readOnly:!0,autoComplete:"off",className:"font-mono text-xs"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(x,{variant:"subtle",size:"sm",onClick:async()=>{try{await navigator.clipboard.writeText(g),i("Copied token.")}catch{i("Could not copy. Select the token and copy it manually.")}},children:[e.jsx(Se,{className:"h-4 w-4"}),"Copy token"]}),e.jsx(x,{variant:"ghost",size:"sm",onClick:()=>v(""),children:"Hide token"})]})]})]})]}),!a.native&&e.jsxs("details",{className:"group mt-5 border-t border-border-subtle pt-3",children:[e.jsxs("summary",{className:"focus-ring-soft flex cursor-pointer list-none items-center gap-2 rounded-lg py-2 text-sm text-fg-secondary marker:hidden",children:[e.jsx(L,{className:"h-3.5 w-3.5 transition-transform group-open:rotate-90"}),"App settings"]}),e.jsx(qe,{connectionId:a.id,manifest:a.manifest,proxyConfigured:a.proxyConfigured,disabled:p.isPending,onSave:n=>l(()=>I({id:a.id,...n}))})]}),e.jsxs("div",{className:"mt-5 flex flex-wrap items-center justify-between gap-3 border-t border-border-subtle pt-3",children:[e.jsxs(o,{as:"p",variant:"meta",tone:"tertiary",className:"min-w-0 break-all",children:[a.manifest.id," · v",a.manifest.version]}),!a.native&&e.jsx(x,{variant:"ghost",size:"sm",disabled:p.isPending,onClick:async()=>{await j(`Disconnect ${a.manifest.name}? Its token will be revoked. Notes will remain in Ocean Brain.`)&&l(()=>Ne(a.id))},children:"Disconnect"})]})]}),p.error&&e.jsx("p",{role:"alert",className:"px-4 pb-4 text-sm text-fg-error",children:W(p.error)})]})}const B=ge(je),_e=a=>{try{const t=JSON.parse(a);if(typeof t!="object"||t===null||!("name"in t)||typeof t.name!="string"||!("permissions"in t)||!Array.isArray(t.permissions))return null;const c=t.permissions.filter(j=>He.some(i=>j===i));if(c.length!==t.permissions.length)return null;const d="launch"in t&&typeof t.launch=="object"&&t.launch!==null?t.launch:null;return{name:t.name,permissions:[...new Set(c)],proxied:!!(d&&"mode"in d&&d.mode==="proxied")}}catch{return null}};function la(){const a=J(),t=B.useNavigate(),{connection:c}=B.useSearch(),d=n=>t({search:{connection:n},replace:!0,resetScroll:!1}),[j,i]=s.useState(!1),[f,g]=s.useState(""),[v,b]=s.useState(""),[p,l]=s.useState(""),[w,m]=s.useState([]),[k,A]=s.useState(""),N=_e(v),h=te({queryKey:T.integrations.list(),queryFn:ke,refetchInterval:1e4}),u=z({mutationFn:()=>Ae({manifest:JSON.parse(v),grantedPermissions:w,...N?.proxied?{proxyUrl:p.trim()}:{}}),onSuccess:async n=>{b(""),l(""),m([]),g(""),i(!1),d(n.id),await a.invalidateQueries({queryKey:T.integrations.all(),exact:!1})}}),S=[{title:"Built-in integrations",integrations:h.data?.filter(n=>n.native)??[]},{title:"External apps",integrations:h.data?.filter(n=>!n.native)??[]}],C=()=>{u.isPending||i(!1)};return e.jsxs(ie,{open:j,onOpenChange:n=>!u.isPending&&i(n),children:[e.jsx("div",{className:"w-full max-w-5xl",children:e.jsx(oe,{title:"Integrations",headerRight:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{variant:"ghost",size:"icon",className:"min-h-11 min-w-11","aria-label":"Refresh status",title:"Refresh status",disabled:h.isFetching,onClick:()=>h.refetch(),children:e.jsx(Me,{"aria-hidden":"true",className:"h-4 w-4"})}),e.jsx(ce,{asChild:!0,children:e.jsxs(x,{children:[e.jsx(Ze,{className:"h-4 w-4"}),"Connect app"]})})]}),children:e.jsxs("div",{className:"flex flex-col gap-6",children:[h.isPending&&e.jsx(o,{as:"p",children:"Loading integrations…"}),h.error&&e.jsxs("div",{role:"alert",children:[e.jsx(o,{as:"p",children:h.data?"Status could not be refreshed. Displayed activity may be out of date.":"Could not load integrations."}),e.jsx(x,{variant:"subtle",onClick:()=>h.refetch(),children:"Retry"})]}),h.data&&S.map(n=>e.jsxs("section",{"aria-label":n.title,className:"flex flex-col gap-3",children:[e.jsx(o,{as:"h2",variant:"label",weight:"medium",tone:"tertiary",children:n.title}),n.integrations.map(r=>e.jsx(ze,{integration:r,expanded:c===r.id,onExpandedChange:()=>d(c===r.id?void 0:r.id)},r.id)),n.integrations.length===0&&e.jsx(o,{as:"p",variant:"meta",tone:"secondary",className:"py-3",children:n.title==="External apps"?"No external apps connected.":"No built-in integrations available."})]},n.title)),h.dataUpdatedAt>0&&!h.isError&&e.jsxs(o,{as:"p",variant:"micro",tone:"tertiary",children:["Updated ",new Date(h.dataUpdatedAt).toLocaleTimeString()]})]})})}),e.jsxs(de,{variant:"form",children:[e.jsx(me,{title:"Connect an external app",onClose:C}),e.jsxs(ue,{className:"space-y-5",children:[e.jsx(pe,{children:"Choose your app’s connection file. The app must be running separately."}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("label",{className:he(xe({variant:"subtle"}),"relative cursor-pointer focus-within:border-border-focus focus-within:shadow-[0_0_0_4px_color-mix(in_srgb,var(--accent-soft-primary)_90%,transparent)]",u.isPending&&"pointer-events-none opacity-50"),children:[e.jsx(Fe,{className:"h-4 w-4"}),"Choose file",e.jsx("input",{"aria-label":"App manifest file",className:"absolute inset-0 h-full w-full cursor-pointer opacity-0 outline-none",type:"file",accept:"application/json,.json",disabled:u.isPending,onClick:n=>{n.currentTarget.value=""},onChange:async n=>{const r=n.target.files?.[0];if(r){if(b(""),l(""),m([]),g(r.name),u.reset(),r.size>65536){A("Choose a manifest smaller than 64 KB.");return}A("");try{b(await r.text())}catch{A("Could not read this file. Choose it again.")}}}})]}),e.jsx(o,{as:"span",variant:"meta",tone:"secondary",className:"min-w-0 truncate",children:f||"JSON manifest · up to 64 KB"})]}),e.jsxs("details",{className:"group",children:[e.jsxs("summary",{className:"focus-ring-soft flex cursor-pointer list-none items-center gap-2 rounded-lg py-2 text-sm text-fg-secondary marker:hidden",children:[e.jsx(L,{className:"h-3.5 w-3.5 transition-transform group-open:rotate-90"}),"Paste manifest JSON"]}),e.jsx(P,{"aria-label":"App manifest JSON",rows:8,className:"mt-2 font-mono text-xs",value:v,disabled:u.isPending,onChange:n=>{b(n.target.value),l(""),m([]),g(""),A(""),u.reset()}})]}),N&&e.jsxs("div",{className:"space-y-4 border-t border-border-subtle pt-4",children:[e.jsx(o,{as:"p",weight:"medium",children:N.name}),e.jsx(Y,{requested:N.permissions,granted:w,onChange:m,disabled:u.isPending}),N.proxied&&e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(y,{htmlFor:"new-integration-proxy-url",children:"Private app URL"}),e.jsx(E,{id:"new-integration-proxy-url",type:"url",value:p,placeholder:"http://127.0.0.1:7778",disabled:u.isPending,onChange:n=>l(n.target.value)}),e.jsx(o,{as:"p",variant:"meta",tone:"secondary",children:"Must be reachable from your Ocean Brain server."})]}),e.jsx(o,{as:"p",variant:"meta",tone:"secondary",children:"Access starts off."})]}),v&&!N&&e.jsx(o,{as:"p",role:"alert",variant:"meta",tone:"error",children:"The manifest must include a name and supported permissions."}),k&&e.jsx(o,{as:"p",role:"alert",variant:"meta",tone:"error",children:k}),u.error&&e.jsx(o,{as:"p",role:"alert",variant:"meta",tone:"error",children:W(u.error)})]}),e.jsxs(fe,{className:"gap-2",children:[e.jsx(x,{variant:"ghost",disabled:u.isPending,onClick:C,children:"Cancel"}),e.jsx(x,{disabled:!N||N.proxied&&!p.trim(),isLoading:u.isPending,onClick:()=>u.mutate(),children:"Connect app"})]})]})]})}export{la as default};
@@ -1 +1 @@
1
- import{j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{i as N,q as p,u as v,Q as E,P as c,E as b,D as T,T as A,B as _,k as M,l as n,h as G,e as P}from"./time-BwwQGbK-.js";import{u as S,b as R}from"./useNoteMutate-D-mZKXjl.js";import{f as k,d as q}from"./image.api-CyIIEGkG.js";import{I as C,g as D}from"./image-delete-confirmation-D7xrODQV.js";import{S as g}from"./SurfaceCard-jL2qzrzF.js";import{c as F,d as Q}from"./url-Bp8sXMb4.js";import{c as K}from"./app-DzChh-V0.js";import{n as L}from"./Trash.es-fxukjAO6.js";import"./preload-helper-BXl3LOEh.js";import"./Graph-BNoSRJP3.js";const U=r=>{const{data:l}=N({queryKey:p.images.list(r.searchParams),async queryFn(){const i=await k({offset:r.searchParams.offset,limit:r.searchParams.limit});if(i.type==="error")throw i;return i.allImages}});return r.render(l)},d=28,m=192,x=G(Q),ee=()=>{const r=S(),l=P(),i=v(),j=x.useNavigate(),{page:o}=x.useSearch(),u=R({mutationFn:async s=>{const a=await q(s);if(a.type==="error")throw new Error(a.errors[0]?.message??"Failed to delete image");if(!a.deleteImage)throw new Error("Failed to delete image")},onSuccess:async()=>{await i.invalidateQueries({queryKey:p.images.listAll(),exact:!1}),l("Image deleted")},onError:s=>{l(s instanceof Error?s.message:"Failed to delete image")}}),y=async(s,a)=>{await r(D(a))&&u.mutate(s)},I=s=>s===0?"Unused":s===1?"1 reference":`${s} references`;return e.jsx("div",{className:"w-full",children:e.jsx(E,{fallback:e.jsx(c,{title:"Images",variant:"default",heading:e.jsx(n,{width:136,height:24,className:"rounded-full"}),description:e.jsx(n,{width:232,height:16,className:"rounded-full"}),children:e.jsx("div",{className:"flex flex-col gap-4",children:e.jsx("div",{className:"grid-auto-cards grid gap-4",children:Array.from({length:3},(s,a)=>e.jsxs(g,{flush:!0,children:[e.jsx("div",{className:"flex items-center justify-center bg-muted/25 p-3",style:{height:m},children:e.jsx(n,{width:"100%",height:m-24,className:"rounded-[12px]"})}),e.jsxs("div",{className:"flex items-center justify-between gap-3 border-t border-border-subtle px-3 py-2.5",children:[e.jsx(n,{width:92,height:14,className:"rounded-full"}),e.jsx(n,{width:32,height:32,className:"rounded-[12px]"})]})]},a))})})}),errorTitle:"Failed to load images",errorDescription:"Retry loading uploaded image metadata",resetKeys:[o],children:e.jsx(U,{searchParams:{offset:(o-1)*d,limit:d},render:({images:s,totalCount:a})=>{const h=a>0?`Images (${a})`:void 0,f="Review and manage the images you uploaded inside notes";return s.length===0?e.jsx(c,{title:"Images",variant:"default",heading:h,description:f,children:e.jsx(b,{title:"There are no images",description:"Upload an image in any note and it will appear here"})}):e.jsx(c,{title:"Images",variant:"default",heading:h,description:f,children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("div",{className:"grid-auto-cards grid gap-4",children:s.map(t=>e.jsxs(g,{flush:!0,children:[e.jsx(T,{to:F,params:{id:t.id},search:{page:o},className:"focus-ring-soft block overflow-hidden rounded-t-[18px] outline-none",children:e.jsx("div",{className:"flex items-center justify-center bg-muted/25 p-3",style:{height:m},children:e.jsx(C,{className:"h-full w-full rounded-[12px] object-contain transition-transform duration-200 hover:scale-[1.02]",src:t.url,alt:t.id})})}),e.jsxs("div",{className:"flex items-center justify-between gap-3 border-t border-border-subtle px-3 py-2.5",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2 text-fg-secondary",children:[e.jsx(K,{className:"h-3.5 w-3.5 shrink-0 text-fg-tertiary"}),e.jsx(A,{as:"span",variant:"meta",weight:"medium",tone:"secondary",className:"truncate",children:I(t.referenceCount)})]}),e.jsx(_,{variant:"ghost",size:"icon-sm",disabled:u.isPending,"aria-label":`Delete image ${t.id}`,onClick:()=>y(t.id,t.referenceCount),children:e.jsx(L,{className:"h-4 w-4"})})]})]},t.id))}),a>d&&e.jsx(M,{page:o,last:Math.ceil(a/d),onChange:t=>{j({search:w=>({...w,page:t})})}})]})})}})})})};export{ee as default};
1
+ import{j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{l as N,q as p,u as v,Q as E,P as c,E as b,F as T,T as A,B as _,n as M,o as n,k as G,e as P}from"./time-Kh6oav5R.js";import{u as S,b as R}from"./useNoteMutate-BQj6jHhV.js";import{f as k,d as F}from"./image.api-CHuhmq_G.js";import{I as q,g as C}from"./image-delete-confirmation-D7xrODQV.js";import{S as g}from"./SurfaceCard-zdJ8k1o0.js";import{c as D,d as Q}from"./url-Bp8sXMb4.js";import{c as K}from"./app-OGsLwSqJ.js";import{n as L}from"./Trash.es-DFnO8iF5.js";import"./preload-helper-BXl3LOEh.js";import"./Graph-BaqGi3M7.js";const U=r=>{const{data:l}=N({queryKey:p.images.list(r.searchParams),async queryFn(){const i=await k({offset:r.searchParams.offset,limit:r.searchParams.limit});if(i.type==="error")throw i;return i.allImages}});return r.render(l)},d=28,m=192,x=G(Q),ee=()=>{const r=S(),l=P(),i=v(),j=x.useNavigate(),{page:o}=x.useSearch(),u=R({mutationFn:async s=>{const a=await F(s);if(a.type==="error")throw new Error(a.errors[0]?.message??"Failed to delete image");if(!a.deleteImage)throw new Error("Failed to delete image")},onSuccess:async()=>{await i.invalidateQueries({queryKey:p.images.listAll(),exact:!1}),l("Image deleted")},onError:s=>{l(s instanceof Error?s.message:"Failed to delete image")}}),y=async(s,a)=>{await r(C(a))&&u.mutate(s)},I=s=>s===0?"Unused":s===1?"1 reference":`${s} references`;return e.jsx("div",{className:"w-full",children:e.jsx(E,{fallback:e.jsx(c,{title:"Images",variant:"default",heading:e.jsx(n,{width:136,height:24,className:"rounded-full"}),description:e.jsx(n,{width:232,height:16,className:"rounded-full"}),children:e.jsx("div",{className:"flex flex-col gap-4",children:e.jsx("div",{className:"grid-auto-cards grid gap-4",children:Array.from({length:3},(s,a)=>e.jsxs(g,{flush:!0,children:[e.jsx("div",{className:"flex items-center justify-center bg-muted/25 p-3",style:{height:m},children:e.jsx(n,{width:"100%",height:m-24,className:"rounded-[12px]"})}),e.jsxs("div",{className:"flex items-center justify-between gap-3 border-t border-border-subtle px-3 py-2.5",children:[e.jsx(n,{width:92,height:14,className:"rounded-full"}),e.jsx(n,{width:32,height:32,className:"rounded-[12px]"})]})]},a))})})}),errorTitle:"Failed to load images",errorDescription:"Retry loading uploaded image metadata",resetKeys:[o],children:e.jsx(U,{searchParams:{offset:(o-1)*d,limit:d},render:({images:s,totalCount:a})=>{const h=a>0?`Images (${a})`:void 0,f="Review and manage the images you uploaded inside notes";return s.length===0?e.jsx(c,{title:"Images",variant:"default",heading:h,description:f,children:e.jsx(b,{title:"There are no images",description:"Upload an image in any note and it will appear here"})}):e.jsx(c,{title:"Images",variant:"default",heading:h,description:f,children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("div",{className:"grid-auto-cards grid gap-4",children:s.map(t=>e.jsxs(g,{flush:!0,children:[e.jsx(T,{to:D,params:{id:t.id},search:{page:o},className:"focus-ring-soft block overflow-hidden rounded-t-[18px] outline-none",children:e.jsx("div",{className:"flex items-center justify-center bg-muted/25 p-3",style:{height:m},children:e.jsx(q,{className:"h-full w-full rounded-[12px] object-contain transition-transform duration-200 hover:scale-[1.02]",src:t.url,alt:t.id})})}),e.jsxs("div",{className:"flex items-center justify-between gap-3 border-t border-border-subtle px-3 py-2.5",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2 text-fg-secondary",children:[e.jsx(K,{className:"h-3.5 w-3.5 shrink-0 text-fg-tertiary"}),e.jsx(A,{as:"span",variant:"meta",weight:"medium",tone:"secondary",className:"truncate",children:I(t.referenceCount)})]}),e.jsx(_,{variant:"ghost",size:"icon-sm",disabled:u.isPending,"aria-label":`Delete image ${t.id}`,onClick:()=>y(t.id,t.referenceCount),children:e.jsx(L,{className:"h-4 w-4"})})]})]},t.id))}),a>d&&e.jsx(M,{page:o,last:Math.ceil(a/d),onChange:t=>{j({search:w=>({...w,page:t})})}})]})})}})})})};export{ee as default};
@@ -1 +1 @@
1
- import{r as t,j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{A as k,T as r,R as D,D as p,U as F,J as _,Q as R,h as Z,u as q,i as y,q as h,V as B,W as O,B as b,l as c,e as z}from"./time-BwwQGbK-.js";import{u as G,b as v}from"./useNoteMutate-D-mZKXjl.js";import{a as L,d as U}from"./image.api-CyIIEGkG.js";import{d as K,c as Q}from"./app-DzChh-V0.js";import{I as H,g as P}from"./image-delete-confirmation-D7xrODQV.js";import{S as x}from"./SurfaceCard-jL2qzrzF.js";import{N as $,T as J,d as C,c as V}from"./url-Bp8sXMb4.js";import"./NotePropertiesPanel-os22Ppnu.js";import{n as W}from"./Trash.es-fxukjAO6.js";import{I as X}from"./Image.es-d4jWnijM.js";import"./preload-helper-BXl3LOEh.js";import"./Graph-BNoSRJP3.js";import"./AuxiliaryPanelHeader-BN_2axQu.js";import"./LinkSimple.es-BD4aGTc3.js";import"./Plus.es-Cl8zOOZa.js";const Y=new Map([["bold",t.createElement(t.Fragment,null,t.createElement("path",{d:"M178,36c-20.09,0-37.92,7.93-50,21.56C115.92,43.93,98.09,36,78,36a66.08,66.08,0,0,0-66,66c0,72.34,105.81,130.14,110.31,132.57a12,12,0,0,0,11.38,0C138.19,232.14,244,174.34,244,102A66.08,66.08,0,0,0,178,36Zm-5.49,142.36A328.69,328.69,0,0,1,128,210.16a328.69,328.69,0,0,1-44.51-31.8C61.82,159.77,36,131.42,36,102A42,42,0,0,1,78,60c17.8,0,32.7,9.4,38.89,24.54a12,12,0,0,0,22.22,0C145.3,69.4,160.2,60,178,60a42,42,0,0,1,42,42C220,131.42,194.18,159.77,172.51,178.36Z"}))],["duotone",t.createElement(t.Fragment,null,t.createElement("path",{d:"M232,102c0,66-104,122-104,122S24,168,24,102A54,54,0,0,1,78,48c22.59,0,41.94,12.31,50,32,8.06-19.69,27.41-32,50-32A54,54,0,0,1,232,102Z",opacity:"0.2"}),t.createElement("path",{d:"M178,40c-20.65,0-38.73,8.88-50,23.89C116.73,48.88,98.65,40,78,40a62.07,62.07,0,0,0-62,62c0,70,103.79,126.66,108.21,129a8,8,0,0,0,7.58,0C136.21,228.66,240,172,240,102A62.07,62.07,0,0,0,178,40ZM128,214.8C109.74,204.16,32,155.69,32,102A46.06,46.06,0,0,1,78,56c19.45,0,35.78,10.36,42.6,27a8,8,0,0,0,14.8,0c6.82-16.67,23.15-27,42.6-27a46.06,46.06,0,0,1,46,46C224,155.61,146.24,204.15,128,214.8Z"}))],["fill",t.createElement(t.Fragment,null,t.createElement("path",{d:"M240,102c0,70-103.79,126.66-108.21,129a8,8,0,0,1-7.58,0C119.79,228.66,16,172,16,102A62.07,62.07,0,0,1,78,40c20.65,0,38.73,8.88,50,23.89C139.27,48.88,157.35,40,178,40A62.07,62.07,0,0,1,240,102Z"}))],["light",t.createElement(t.Fragment,null,t.createElement("path",{d:"M178,42c-21,0-39.26,9.47-50,25.34C117.26,51.47,99,42,78,42a60.07,60.07,0,0,0-60,60c0,29.2,18.2,59.59,54.1,90.31a334.68,334.68,0,0,0,53.06,37,6,6,0,0,0,5.68,0,334.68,334.68,0,0,0,53.06-37C219.8,161.59,238,131.2,238,102A60.07,60.07,0,0,0,178,42ZM128,217.11C111.59,207.64,30,157.72,30,102A48.05,48.05,0,0,1,78,54c20.28,0,37.31,10.83,44.45,28.27a6,6,0,0,0,11.1,0C140.69,64.83,157.72,54,178,54a48.05,48.05,0,0,1,48,48C226,157.72,144.41,207.64,128,217.11Z"}))],["regular",t.createElement(t.Fragment,null,t.createElement("path",{d:"M178,40c-20.65,0-38.73,8.88-50,23.89C116.73,48.88,98.65,40,78,40a62.07,62.07,0,0,0-62,62c0,70,103.79,126.66,108.21,129a8,8,0,0,0,7.58,0C136.21,228.66,240,172,240,102A62.07,62.07,0,0,0,178,40ZM128,214.8C109.74,204.16,32,155.69,32,102A46.06,46.06,0,0,1,78,56c19.45,0,35.78,10.36,42.6,27a8,8,0,0,0,14.8,0c6.82-16.67,23.15-27,42.6-27a46.06,46.06,0,0,1,46,46C224,155.61,146.24,204.15,128,214.8Z"}))],["thin",t.createElement(t.Fragment,null,t.createElement("path",{d:"M178,44c-21.44,0-39.92,10.19-50,27.07C117.92,54.19,99.44,44,78,44a58.07,58.07,0,0,0-58,58c0,28.59,18,58.47,53.4,88.79a333.81,333.81,0,0,0,52.7,36.73,4,4,0,0,0,3.8,0,333.81,333.81,0,0,0,52.7-36.73C218,160.47,236,130.59,236,102A58.07,58.07,0,0,0,178,44ZM128,219.42c-14-8-100-59.35-100-117.42A50.06,50.06,0,0,1,78,52c21.11,0,38.85,11.31,46.3,29.51a4,4,0,0,0,7.4,0C139.15,63.31,156.89,52,178,52a50.06,50.06,0,0,1,50,50C228,160,142,211.46,128,219.42Z"}))]]),E=t.forwardRef((a,n)=>t.createElement(k,{ref:n,...a,weights:Y}));E.displayName="HeartIcon";const ee=E;function ae({name:a}){return e.jsx(r,{as:"div",variant:"label",weight:"medium",tone:"secondary",className:"inline-flex items-center rounded-full border border-border-subtle bg-hover-subtle px-2.5 py-1",children:a})}function se({id:a,title:n,tags:i,createdAt:u,updatedAt:d}){const o=new Date(Number(u)),m=D(Number(d));return e.jsx("div",{className:"border-b-2 border-dashed border-border-subtle last:border-b-0",children:e.jsxs("div",{className:"py-4 flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r,{variant:"label",weight:"medium",tone:"tertiary",children:m}),e.jsxs(r,{variant:"label",tone:"placeholder",children:["(",o.toDateString(),")"]})]}),e.jsx(r,{as:"div",variant:"body",weight:"bold",tracking:"tight",children:e.jsx(p,{className:"transition-colors hover:text-accent-primary",to:$,params:{id:a},children:n||"Untitled"})}),i&&i.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1.5",children:i.map(l=>e.jsx(p,{to:J,params:{id:l.id},search:{page:1},children:e.jsx(ae,{name:l.name})},l.id))})]})})}const f=Z(V),te="mb-4 inline-flex items-center gap-1 text-fg-secondary transition-colors hover:text-fg-default",A="flex h-[248px] items-center justify-center bg-muted/25 p-3 sm:h-[352px]",re="h-full w-full rounded-[12px] object-contain",I="mb-3 flex flex-wrap items-start justify-between gap-3 border-b border-border-subtle pb-3",T="space-y-1",M="grid gap-6 min-[1200px]:grid-cols-[minmax(0,2fr)_minmax(0,3fr)]",ne=a=>a===0?"Unused":a===1?"1 reference":`${a} references`,w=(a,n)=>typeof a=="object"&&a!==null&&"errors"in a&&Array.isArray(a.errors)&&typeof a.errors[0]?.message=="string"?a.errors[0].message:a instanceof Error&&a.message?a.message:n,ie=()=>e.jsxs("div",{className:M,children:[e.jsx("div",{className:"min-w-0",children:e.jsxs(x,{flush:!0,children:[e.jsx("div",{className:A,children:e.jsx(c,{width:"100%",height:"100%",className:"rounded-[12px]"})}),e.jsxs("div",{className:"flex flex-col gap-4 border-t border-border-subtle p-4",children:[e.jsx(c,{width:96,height:14,className:"rounded-full"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(c,{height:32,className:"flex-1 rounded-[12px]"}),e.jsx(c,{height:32,className:"flex-1 rounded-[12px]"})]})]})]})}),e.jsx("div",{className:"min-w-0",children:e.jsxs(x,{children:[e.jsxs("div",{className:I,children:[e.jsxs("div",{className:T,children:[e.jsx(c,{width:140,height:18}),e.jsx(c,{width:220,height:14,className:"rounded-full"})]}),e.jsx(c,{width:84,height:14,className:"rounded-full"})]}),e.jsx("div",{className:"flex flex-col gap-3",children:Array.from({length:3},(a,n)=>e.jsx(c,{height:72,className:"rounded-[16px]"},n))})]})})]}),le=({id:a})=>{const n=G(),i=z(),u=f.useNavigate(),d=q(),{data:o}=y({queryKey:h.images.detail(a),queryFn:async()=>{const s=await L(a);if(s.type==="error")throw s;return s.image}}),{data:m}=y({queryKey:h.images.notes(a),queryFn:async()=>{const s=await B(o.url);if(s.type==="error")throw s;return s.imageNotes}}),l=m.length,j=ne(l),g=v({mutationFn:async()=>{const s=await U(a);if(s.type==="error")throw s;if(!s.deleteImage)throw new Error("Failed to delete image");return s.deleteImage},onSuccess:async()=>{await d.invalidateQueries({queryKey:h.images.listAll(),exact:!1}),i("Image deleted"),u({to:C,search:{page:1}})},onError:s=>{i(w(s,"Failed to delete image"))}}),N=v({mutationFn:async()=>{const s=await K("heroBanner",o.url);if(s.type==="error")throw s},onSuccess:async()=>{await d.invalidateQueries({queryKey:h.ui.heroBanner(),exact:!0}),i("Hero banner updated")},onError:s=>{i(w(s,"Failed to update hero banner"))}}),S=async()=>{g.isPending||await n(P(l))&&g.mutate()};return e.jsxs("div",{className:M,children:[e.jsx("div",{className:"min-w-0",children:e.jsxs(x,{flush:!0,children:[e.jsx("a",{href:o.url,target:"_blank",rel:"noreferrer","aria-label":"Open original image",className:"focus-ring-soft block overflow-hidden rounded-t-[18px] outline-none",children:e.jsx("div",{className:A,children:e.jsx(H,{className:`${re} transition-transform duration-200 hover:scale-[1.02]`,src:o.url,alt:`Image ${o.id}`})})}),e.jsxs("div",{className:"flex flex-col gap-4 border-t border-border-subtle p-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Q,{size:14,className:"text-fg-tertiary"}),e.jsx(r,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:j})]}),e.jsx(r,{as:"p",variant:"meta",tone:"tertiary",children:l>0?"Deleting this image will break it in the referenced notes":"No notes currently reference this image"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(O,{content:"Delete this image",side:"bottom",children:e.jsxs(b,{variant:"soft-danger",size:"sm",className:"flex-1",isLoading:g.isPending,onClick:S,children:[e.jsx(W,{size:16}),"Delete"]})}),e.jsxs(b,{variant:"primary",size:"sm",className:"flex-1",isLoading:N.isPending,onClick:()=>N.mutate(),children:[e.jsx(ee,{size:16}),"Set hero banner"]})]})]})]})}),e.jsx("div",{className:"min-w-0",children:e.jsxs(x,{children:[e.jsxs("div",{className:I,children:[e.jsxs("div",{className:T,children:[e.jsx(r,{as:"h2",variant:"subheading",weight:"medium",tracking:"tight",children:"Referenced Notes"}),e.jsx(r,{as:"p",variant:"meta",tone:"secondary",children:"Notes currently using this image"})]}),e.jsx(r,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:j})]}),l>0?e.jsx("ul",{className:"flex flex-col",children:m.map(s=>e.jsx("li",{children:e.jsx(se,{...s})},s.id))}):e.jsxs("div",{className:"flex items-start gap-3 py-1",children:[e.jsx("div",{className:"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-[10px] bg-muted/25 text-fg-disabled",children:e.jsx(X,{size:18})}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{as:"p",variant:"body",weight:"medium",tone:"secondary",children:"No notes reference this image"}),e.jsx(r,{as:"p",variant:"meta",tone:"secondary",children:"This image can be deleted or reused in another note"})]})]})]})})]})},Ce=()=>{const{id:a}=f.useParams(),{page:n}=f.useSearch();return e.jsxs("div",{className:"w-full",children:[e.jsx(F,{children:e.jsx("title",{children:"Image Detail | Ocean Brain"})}),e.jsxs(p,{to:C,search:{page:n},className:te,children:[e.jsx(_,{size:16}),e.jsx(r,{as:"span",variant:"meta",weight:"medium",className:"text-current",children:"Back to Images"})]}),e.jsx(r,{as:"h1",variant:"heading",weight:"bold",tracking:"tighter",className:"sr-only",children:"Image Detail"}),e.jsx(R,{fallback:e.jsx(ie,{}),errorTitle:"Failed to load image detail",errorDescription:"Retry loading the image preview and its referenced notes",resetKeys:[a],children:e.jsx(le,{id:a})})]})};export{Ce as default};
1
+ import{r as t,j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{C as k,T as r,O as F,F as p,R as D,H as _,Q as R,k as Z,u as q,l as y,q as h,U as B,V as O,B as b,o as c,e as z}from"./time-Kh6oav5R.js";import{u as G,b as v}from"./useNoteMutate-BQj6jHhV.js";import{a as L,d as U}from"./image.api-CHuhmq_G.js";import{d as H,c as K}from"./app-OGsLwSqJ.js";import{I as Q,g as P}from"./image-delete-confirmation-D7xrODQV.js";import{S as x}from"./SurfaceCard-zdJ8k1o0.js";import{N as $,T as V,d as C,c as J}from"./url-Bp8sXMb4.js";import"./NotePropertiesPanel-BFWjxL_w.js";import{n as W}from"./Trash.es-DFnO8iF5.js";import{I as X}from"./Image.es-Bh2mTNtr.js";import"./preload-helper-BXl3LOEh.js";import"./Graph-BaqGi3M7.js";import"./AuxiliaryPanelHeader-Bys98BJJ.js";import"./LinkSimple.es-iJvLf-MB.js";import"./Plus.es-Dmb3oijD.js";const Y=new Map([["bold",t.createElement(t.Fragment,null,t.createElement("path",{d:"M178,36c-20.09,0-37.92,7.93-50,21.56C115.92,43.93,98.09,36,78,36a66.08,66.08,0,0,0-66,66c0,72.34,105.81,130.14,110.31,132.57a12,12,0,0,0,11.38,0C138.19,232.14,244,174.34,244,102A66.08,66.08,0,0,0,178,36Zm-5.49,142.36A328.69,328.69,0,0,1,128,210.16a328.69,328.69,0,0,1-44.51-31.8C61.82,159.77,36,131.42,36,102A42,42,0,0,1,78,60c17.8,0,32.7,9.4,38.89,24.54a12,12,0,0,0,22.22,0C145.3,69.4,160.2,60,178,60a42,42,0,0,1,42,42C220,131.42,194.18,159.77,172.51,178.36Z"}))],["duotone",t.createElement(t.Fragment,null,t.createElement("path",{d:"M232,102c0,66-104,122-104,122S24,168,24,102A54,54,0,0,1,78,48c22.59,0,41.94,12.31,50,32,8.06-19.69,27.41-32,50-32A54,54,0,0,1,232,102Z",opacity:"0.2"}),t.createElement("path",{d:"M178,40c-20.65,0-38.73,8.88-50,23.89C116.73,48.88,98.65,40,78,40a62.07,62.07,0,0,0-62,62c0,70,103.79,126.66,108.21,129a8,8,0,0,0,7.58,0C136.21,228.66,240,172,240,102A62.07,62.07,0,0,0,178,40ZM128,214.8C109.74,204.16,32,155.69,32,102A46.06,46.06,0,0,1,78,56c19.45,0,35.78,10.36,42.6,27a8,8,0,0,0,14.8,0c6.82-16.67,23.15-27,42.6-27a46.06,46.06,0,0,1,46,46C224,155.61,146.24,204.15,128,214.8Z"}))],["fill",t.createElement(t.Fragment,null,t.createElement("path",{d:"M240,102c0,70-103.79,126.66-108.21,129a8,8,0,0,1-7.58,0C119.79,228.66,16,172,16,102A62.07,62.07,0,0,1,78,40c20.65,0,38.73,8.88,50,23.89C139.27,48.88,157.35,40,178,40A62.07,62.07,0,0,1,240,102Z"}))],["light",t.createElement(t.Fragment,null,t.createElement("path",{d:"M178,42c-21,0-39.26,9.47-50,25.34C117.26,51.47,99,42,78,42a60.07,60.07,0,0,0-60,60c0,29.2,18.2,59.59,54.1,90.31a334.68,334.68,0,0,0,53.06,37,6,6,0,0,0,5.68,0,334.68,334.68,0,0,0,53.06-37C219.8,161.59,238,131.2,238,102A60.07,60.07,0,0,0,178,42ZM128,217.11C111.59,207.64,30,157.72,30,102A48.05,48.05,0,0,1,78,54c20.28,0,37.31,10.83,44.45,28.27a6,6,0,0,0,11.1,0C140.69,64.83,157.72,54,178,54a48.05,48.05,0,0,1,48,48C226,157.72,144.41,207.64,128,217.11Z"}))],["regular",t.createElement(t.Fragment,null,t.createElement("path",{d:"M178,40c-20.65,0-38.73,8.88-50,23.89C116.73,48.88,98.65,40,78,40a62.07,62.07,0,0,0-62,62c0,70,103.79,126.66,108.21,129a8,8,0,0,0,7.58,0C136.21,228.66,240,172,240,102A62.07,62.07,0,0,0,178,40ZM128,214.8C109.74,204.16,32,155.69,32,102A46.06,46.06,0,0,1,78,56c19.45,0,35.78,10.36,42.6,27a8,8,0,0,0,14.8,0c6.82-16.67,23.15-27,42.6-27a46.06,46.06,0,0,1,46,46C224,155.61,146.24,204.15,128,214.8Z"}))],["thin",t.createElement(t.Fragment,null,t.createElement("path",{d:"M178,44c-21.44,0-39.92,10.19-50,27.07C117.92,54.19,99.44,44,78,44a58.07,58.07,0,0,0-58,58c0,28.59,18,58.47,53.4,88.79a333.81,333.81,0,0,0,52.7,36.73,4,4,0,0,0,3.8,0,333.81,333.81,0,0,0,52.7-36.73C218,160.47,236,130.59,236,102A58.07,58.07,0,0,0,178,44ZM128,219.42c-14-8-100-59.35-100-117.42A50.06,50.06,0,0,1,78,52c21.11,0,38.85,11.31,46.3,29.51a4,4,0,0,0,7.4,0C139.15,63.31,156.89,52,178,52a50.06,50.06,0,0,1,50,50C228,160,142,211.46,128,219.42Z"}))]]),E=t.forwardRef((a,n)=>t.createElement(k,{ref:n,...a,weights:Y}));E.displayName="HeartIcon";const ee=E;function ae({name:a}){return e.jsx(r,{as:"div",variant:"label",weight:"medium",tone:"secondary",className:"inline-flex items-center rounded-full border border-border-subtle bg-hover-subtle px-2.5 py-1",children:a})}function se({id:a,title:n,tags:i,createdAt:u,updatedAt:d}){const o=new Date(Number(u)),m=F(Number(d));return e.jsx("div",{className:"border-b-2 border-dashed border-border-subtle last:border-b-0",children:e.jsxs("div",{className:"py-4 flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(r,{variant:"label",weight:"medium",tone:"tertiary",children:m}),e.jsxs(r,{variant:"label",tone:"placeholder",children:["(",o.toDateString(),")"]})]}),e.jsx(r,{as:"div",variant:"body",weight:"bold",tracking:"tight",children:e.jsx(p,{className:"transition-colors hover:text-accent-primary",to:$,params:{id:a},children:n||"Untitled"})}),i&&i.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1.5",children:i.map(l=>e.jsx(p,{to:V,params:{id:l.id},search:{page:1},children:e.jsx(ae,{name:l.name})},l.id))})]})})}const f=Z(J),te="mb-4 inline-flex items-center gap-1 text-fg-secondary transition-colors hover:text-fg-default",A="flex h-[248px] items-center justify-center bg-muted/25 p-3 sm:h-[352px]",re="h-full w-full rounded-[12px] object-contain",I="mb-3 flex flex-wrap items-start justify-between gap-3 border-b border-border-subtle pb-3",T="space-y-1",M="grid gap-6 min-[1200px]:grid-cols-[minmax(0,2fr)_minmax(0,3fr)]",ne=a=>a===0?"Unused":a===1?"1 reference":`${a} references`,w=(a,n)=>typeof a=="object"&&a!==null&&"errors"in a&&Array.isArray(a.errors)&&typeof a.errors[0]?.message=="string"?a.errors[0].message:a instanceof Error&&a.message?a.message:n,ie=()=>e.jsxs("div",{className:M,children:[e.jsx("div",{className:"min-w-0",children:e.jsxs(x,{flush:!0,children:[e.jsx("div",{className:A,children:e.jsx(c,{width:"100%",height:"100%",className:"rounded-[12px]"})}),e.jsxs("div",{className:"flex flex-col gap-4 border-t border-border-subtle p-4",children:[e.jsx(c,{width:96,height:14,className:"rounded-full"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(c,{height:32,className:"flex-1 rounded-[12px]"}),e.jsx(c,{height:32,className:"flex-1 rounded-[12px]"})]})]})]})}),e.jsx("div",{className:"min-w-0",children:e.jsxs(x,{children:[e.jsxs("div",{className:I,children:[e.jsxs("div",{className:T,children:[e.jsx(c,{width:140,height:18}),e.jsx(c,{width:220,height:14,className:"rounded-full"})]}),e.jsx(c,{width:84,height:14,className:"rounded-full"})]}),e.jsx("div",{className:"flex flex-col gap-3",children:Array.from({length:3},(a,n)=>e.jsx(c,{height:72,className:"rounded-[16px]"},n))})]})})]}),le=({id:a})=>{const n=G(),i=z(),u=f.useNavigate(),d=q(),{data:o}=y({queryKey:h.images.detail(a),queryFn:async()=>{const s=await L(a);if(s.type==="error")throw s;return s.image}}),{data:m}=y({queryKey:h.images.notes(a),queryFn:async()=>{const s=await B(o.url);if(s.type==="error")throw s;return s.imageNotes}}),l=m.length,j=ne(l),g=v({mutationFn:async()=>{const s=await U(a);if(s.type==="error")throw s;if(!s.deleteImage)throw new Error("Failed to delete image");return s.deleteImage},onSuccess:async()=>{await d.invalidateQueries({queryKey:h.images.listAll(),exact:!1}),i("Image deleted"),u({to:C,search:{page:1}})},onError:s=>{i(w(s,"Failed to delete image"))}}),N=v({mutationFn:async()=>{const s=await H("heroBanner",o.url);if(s.type==="error")throw s},onSuccess:async()=>{await d.invalidateQueries({queryKey:h.ui.heroBanner(),exact:!0}),i("Hero banner updated")},onError:s=>{i(w(s,"Failed to update hero banner"))}}),S=async()=>{g.isPending||await n(P(l))&&g.mutate()};return e.jsxs("div",{className:M,children:[e.jsx("div",{className:"min-w-0",children:e.jsxs(x,{flush:!0,children:[e.jsx("a",{href:o.url,target:"_blank",rel:"noreferrer","aria-label":"Open original image",className:"focus-ring-soft block overflow-hidden rounded-t-[18px] outline-none",children:e.jsx("div",{className:A,children:e.jsx(Q,{className:`${re} transition-transform duration-200 hover:scale-[1.02]`,src:o.url,alt:`Image ${o.id}`})})}),e.jsxs("div",{className:"flex flex-col gap-4 border-t border-border-subtle p-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(K,{size:14,className:"text-fg-tertiary"}),e.jsx(r,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:j})]}),e.jsx(r,{as:"p",variant:"meta",tone:"tertiary",children:l>0?"Deleting this image will break it in the referenced notes":"No notes currently reference this image"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(O,{content:"Delete this image",side:"bottom",children:e.jsxs(b,{variant:"soft-danger",size:"sm",className:"flex-1",isLoading:g.isPending,onClick:S,children:[e.jsx(W,{size:16}),"Delete"]})}),e.jsxs(b,{variant:"primary",size:"sm",className:"flex-1",isLoading:N.isPending,onClick:()=>N.mutate(),children:[e.jsx(ee,{size:16}),"Set hero banner"]})]})]})]})}),e.jsx("div",{className:"min-w-0",children:e.jsxs(x,{children:[e.jsxs("div",{className:I,children:[e.jsxs("div",{className:T,children:[e.jsx(r,{as:"h2",variant:"subheading",weight:"medium",tracking:"tight",children:"Referenced Notes"}),e.jsx(r,{as:"p",variant:"meta",tone:"secondary",children:"Notes currently using this image"})]}),e.jsx(r,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:j})]}),l>0?e.jsx("ul",{className:"flex flex-col",children:m.map(s=>e.jsx("li",{children:e.jsx(se,{...s})},s.id))}):e.jsxs("div",{className:"flex items-start gap-3 py-1",children:[e.jsx("div",{className:"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-[10px] bg-muted/25 text-fg-disabled",children:e.jsx(X,{size:18})}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(r,{as:"p",variant:"body",weight:"medium",tone:"secondary",children:"No notes reference this image"}),e.jsx(r,{as:"p",variant:"meta",tone:"secondary",children:"This image can be deleted or reused in another note"})]})]})]})})]})},Ce=()=>{const{id:a}=f.useParams(),{page:n}=f.useSearch();return e.jsxs("div",{className:"w-full",children:[e.jsx(D,{children:e.jsx("title",{children:"Image Detail | Ocean Brain"})}),e.jsxs(p,{to:C,search:{page:n},className:te,children:[e.jsx(_,{size:16}),e.jsx(r,{as:"span",variant:"meta",weight:"medium",className:"text-current",children:"Back to Images"})]}),e.jsx(r,{as:"h1",variant:"heading",weight:"bold",tracking:"tighter",className:"sr-only",children:"Image Detail"}),e.jsx(R,{fallback:e.jsx(ie,{}),errorTitle:"Failed to load image detail",errorDescription:"Retry loading the image preview and its referenced notes",resetKeys:[a],children:e.jsx(le,{id:a})})]})};export{Ce as default};
@@ -0,0 +1,5 @@
1
+ import{r as m,j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{u as ae,a as se,b as N}from"./useNoteMutate-BQj6jHhV.js";import{u as oe,q as b,P as ie,T as i,a as q,b as p,L as h,B as f,d as Q,s as re,I,S as ce,e as le}from"./time-Kh6oav5R.js";import{f as de,s as ue,r as me,a as pe}from"./mcp-admin-adapter-CUakQ_Xm.js";import{S as he}from"./url-Bp8sXMb4.js";import{s as F}from"./Copy.es-ftEldGIL.js";const y=b.mcp.status(),T=t=>/^[A-Za-z0-9_./:@$-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`,j=t=>`'${t.replace(/'/g,"''")}'`,g={posix:"$HOME/.config/ocean-brain/mcp-token",powershell:"$HOME\\.config\\ocean-brain\\mcp-token"},J=()=>typeof navigator<"u"&&/Windows/i.test(navigator.userAgent)?"powershell":"posix",xe=t=>{const n=t.match(/^\$HOME[\\/](.+)$/i)?.[1];return n?`Join-Path $HOME ${j(n)}`:j(t)},K=(t,n,a)=>{if(t==="powershell")return[`$tokenPath = ${xe(n)}`,"New-Item -ItemType Directory -Force -Path (Split-Path -Parent $tokenPath) | Out-Null",`Set-Content -Path $tokenPath -Value ${j(a)} -NoNewline -Encoding utf8`].join(`
2
+ `);const o=T(n);return[`mkdir -p "$(dirname ${o})"`,`printf '%s' ${T(a)} > ${o}`,`chmod 600 ${o}`].join(`
3
+ `)},z=(t,n,a)=>{const o=t==="powershell"?j:T;return`${t==="powershell"?"cmd.exe /d /c ":""}npx -y ocean-brain mcp --server ${o(n)} --token-file ${o(a)}`},fe=(t,n,a)=>`codex mcp add ocean-brain -- ${z(t,n,a)}`,ye=(t,n,a)=>`claude mcp add --transport stdio ocean-brain -- ${z(t,n,a)}`,ge=(t,n,a)=>{const o=t==="powershell"?"cmd.exe":"npx",c=[...t==="powershell"?["/d","/c","npx"]:[],"-y","ocean-brain","mcp","--server",n,"--token-file",a];return JSON.stringify({mcpServers:{"ocean-brain":{command:o,args:c}}},null,2)},be=(t,n,a,o,c)=>{const r=t==="codex"?fe(n,a,o):t==="claude"?ye(n,a,o):ge(n,a,o);return t==="json"?["# 1. Create the token file",K(n,o,c),"","# 2. Add this MCP JSON",r].join(`
4
+ `):["# 1. Create the token file",K(n,o,c),"",`# 2. Add Ocean Brain to ${t}`,r].join(`
5
+ `)},je=t=>!t||t==="unknown"?"MCP compatibility":`MCP compatibility ${t}`,ve={codex:"Codex",claude:"Claude",json:"JSON"},Me=()=>{const t=ae(),n=le(),a=oe(),[o,c]=m.useState(()=>window.location.origin),[r,P]=m.useState(""),[x,H]=m.useState(J),[S,M]=m.useState(()=>g[J()]),[l,_]=m.useState("codex"),{data:v,isLoading:B}=se({queryKey:y,queryFn:de}),$=N({mutationFn:ue,onSuccess:s=>{a.setQueryData(y,s),a.invalidateQueries({queryKey:b.integrations.all(),exact:!1}),n(s.enabled?"MCP access enabled.":"MCP access disabled.")}}),O=N({mutationFn:me,onSuccess:async({token:s})=>{P(s),n("New MCP token issued. Previous token is no longer valid."),await a.invalidateQueries({queryKey:y,exact:!0}),await a.invalidateQueries({queryKey:b.integrations.all(),exact:!1})}}),E=N({mutationFn:pe,onSuccess:s=>{P(""),a.setQueryData(y,s),a.invalidateQueries({queryKey:b.integrations.all(),exact:!1}),n("MCP token revoked. Existing client configs will stop working.")}}),k=v?.enabled??!1,d=v?.hasActiveToken??!1,V=!B&&!$.isPending,G=S.trim()||g[x],D=je(v?.server.mcpVersionRequirement),U=d?"1 active token":"No active token",W=l==="json"?"Token file and MCP JSON":`${ve[l]} setup`,R=be(l,x,o,G,r||"PASTE_TOKEN_HERE"),Z="Copy setup",L="text-fg-tertiary",u="font-medium text-fg-tertiary",w="surface-base px-4 py-3.5",C="space-y-2",X="max-w-full overflow-x-auto whitespace-pre font-mono text-xs leading-5 text-fg-secondary",Y=async()=>{try{await navigator.clipboard.writeText(r),n("Copied token.")}catch{n("Failed to copy token.")}},ee=async()=>{try{await navigator.clipboard.writeText(R),n(l==="json"?"Copied MCP JSON.":"Copied MCP command.")}catch{n(`Could not copy. Select the ${l==="json"?"JSON":"command"} and copy it manually.`)}},te=async()=>{d&&!await t("Rotate the MCP token? Existing MCP clients will stop working until they use the new token.")||O.mutate(void 0)},ne=async()=>{await t("Revoke the MCP token? Existing MCP clients will stop working immediately.")&&E.mutate()};return e.jsx(ie,{title:"MCP",variant:"default",description:"Connect this Ocean Brain instance to MCP clients.",headerRight:e.jsxs("div",{className:"inline-flex items-center gap-3 rounded-[14px] border border-border-subtle bg-muted px-3 py-2",children:[e.jsxs(i,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:["MCP access · ",k?"On":"Off"]}),e.jsx(ce,{"aria-label":"MCP access",checked:k,disabled:!V,onCheckedChange:()=>{$.mutate(!k)}})]}),children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("a",{href:he,className:"text-sm underline",children:"Manage integration permissions"}),e.jsxs("section",{className:"flex flex-col gap-3","aria-labelledby":"mcp-connect-heading",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(i,{id:"mcp-connect-heading",as:"h2",variant:"label",weight:"medium",className:L,children:"Connect a client"}),e.jsx(i,{as:"p",variant:"meta",tone:"secondary",children:"Save your token in a local file, then copy the command for your client."})]}),e.jsx(i,{as:"span",variant:"meta",weight:"medium",tone:"tertiary",className:"rounded-full border border-border-subtle bg-hover-subtle px-2.5 py-1",children:D})]}),e.jsxs("div",{className:`${w} flex flex-col gap-3`,children:[e.jsx("div",{className:"flex flex-wrap items-center gap-3",children:e.jsxs(q,{type:"single",variant:"quiet",size:"sm",value:l,onValueChange:s=>{(s==="codex"||s==="claude"||s==="json")&&_(s)},children:[e.jsx(p,{value:"codex",children:"Codex"}),e.jsx(p,{value:"claude",children:"Claude"}),e.jsx(p,{value:"json",children:"JSON"})]})}),e.jsxs("div",{className:"min-w-0 space-y-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsx(h,{htmlFor:"mcp-connection-output",className:u,children:W}),e.jsxs(f,{type:"button",variant:"subtle",size:"sm",onClick:ee,children:[e.jsx(F,{className:"h-4 w-4"}),Z]})]}),e.jsx(Q,{id:"mcp-connection-output",readOnly:!0,rows:l==="json"?13:9,wrap:"off",value:R,className:X}),e.jsx(i,{as:"p",variant:"meta",tone:"tertiary",children:r?"The new token is already included in the token file step.":"Replace PASTE_TOKEN_HERE before running. The MCP client reads the token from that file."})]}),e.jsxs("details",{className:"group rounded-[12px] border border-border-subtle bg-muted",children:[e.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-2.5 marker:hidden",children:[e.jsx(i,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:"Connection options"}),e.jsx(re,{className:"h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-open:rotate-180","aria-hidden":"true"})]}),e.jsxs("div",{className:"space-y-3 border-t border-border-subtle px-3 py-3",children:[e.jsxs("div",{className:C,children:[e.jsx(h,{className:u,children:"Setup shell"}),e.jsxs(q,{type:"single",variant:"quiet",size:"sm",value:x,onValueChange:s=>{s!=="posix"&&s!=="powershell"||(M(A=>A===g[x]?g[s]:A),H(s))},"aria-label":"Setup shell",children:[e.jsx(p,{value:"posix",children:"macOS / Linux"}),e.jsx(p,{value:"powershell",children:"Windows PowerShell"})]})]}),e.jsxs("div",{className:C,children:[e.jsx(h,{htmlFor:"mcp-server-url",className:u,children:"Ocean Brain URL"}),e.jsx(I,{id:"mcp-server-url",value:o,onChange:s=>c(s.target.value)})]}),e.jsxs("div",{className:C,children:[e.jsx(h,{htmlFor:"mcp-token-file-path",className:u,children:"Token file path"}),e.jsx(I,{id:"mcp-token-file-path",placeholder:"/absolute/path/to/ocean-brain/mcp-token",value:S,onChange:s=>M(s.target.value)})]})]})]})]})]}),e.jsxs("section",{className:"flex flex-col gap-3","aria-labelledby":"mcp-token-heading",children:[e.jsxs("div",{className:`${w} flex flex-wrap items-center justify-between gap-3`,children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx(i,{id:"mcp-token-heading",as:"h2",variant:"label",weight:"medium",className:L,children:"Token"}),e.jsxs(i,{as:"p",variant:"meta",tone:"tertiary",children:[U,". New tokens are shown once."]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(f,{type:"button",size:"sm",variant:d?"subtle":"primary",onClick:te,isLoading:O.isPending,children:d?"Rotate token":"Issue token"}),e.jsx(f,{type:"button",size:"sm",variant:"soft-danger",onClick:ne,isLoading:E.isPending,disabled:!d,children:"Revoke token"})]})]}),r&&e.jsxs("div",{className:`${w} border-dashed`,children:[e.jsxs("div",{className:"mb-3 flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(h,{htmlFor:"issued-mcp-token",className:u,children:"New token"}),e.jsx(i,{as:"p",variant:"meta",tone:"secondary",children:"Copy this token now and save it in your token file."})]}),e.jsxs(f,{type:"button",variant:"subtle",size:"sm",onClick:Y,children:[e.jsx(F,{className:"h-4 w-4"}),"Copy token"]})]}),e.jsx(Q,{id:"issued-mcp-token",rows:3,readOnly:!0,value:r})]})]})]})})};export{Me as default};
@@ -1 +1 @@
1
- import{f as t}from"./time-BwwQGbK-.js";const o=async()=>{const{data:a}=await t.get("/api/mcp-admin/status");return a},c=async a=>{const{data:n}=await t.post("/api/mcp-admin/enabled",{enabled:a});return n},e=async()=>{const{data:a}=await t.post("/api/mcp-admin/token/rotate");return a},p=async()=>{const{data:a}=await t.post("/api/mcp-admin/token/revoke");return a};export{p as a,o as f,e as r,c as s};
1
+ import{f as t}from"./time-Kh6oav5R.js";const o=async()=>{const{data:a}=await t.get("/api/mcp-admin/status");return a},c=async a=>{const{data:n}=await t.post("/api/mcp-admin/enabled",{enabled:a});return n},e=async()=>{const{data:a}=await t.post("/api/mcp-admin/token/rotate");return a},p=async()=>{const{data:a}=await t.post("/api/mcp-admin/token/revoke");return a};export{p as a,o as f,e as r,c as s};