ocean-brain 0.3.4 → 0.4.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 (253) hide show
  1. package/package.json +5 -5
  2. package/scripts/postinstall-prisma.mjs +3 -2
  3. package/server/client/dist/assets/Calendar-CSXEuWmQ.js +25 -0
  4. package/server/client/dist/assets/Callout-Ap1OcxWN.js +1 -0
  5. package/server/client/dist/assets/Graph-C0Ax9qjI.js +1 -0
  6. package/server/client/dist/assets/{Image-ZxF459sC.js → Image-CSbcG-5a.js} +1 -1
  7. package/server/client/dist/assets/{Image.es-BQfyKc2-.js → Image.es-Fbe7aDDo.js} +1 -1
  8. package/server/client/dist/assets/{ModalActionRow-DyOb58KJ.js → ModalActionRow-DjI5b4bl.js} +1 -1
  9. package/server/client/dist/assets/Note-BY6WgYLq.js +1 -0
  10. package/server/client/dist/assets/Note-W4f6H9K0.css +1 -0
  11. package/server/client/dist/assets/Reminders-vRksvSQE.js +1 -0
  12. package/server/client/dist/assets/Search-Cq4tuiJO.js +1 -0
  13. package/server/client/dist/assets/{SurfaceCard-nZNf9lyE.js → SurfaceCard-Br6TjX5W.js} +1 -1
  14. package/server/client/dist/assets/Tag-ARDLA-Pb.js +1 -0
  15. package/server/client/dist/assets/TagNotes-CDGVrCJU.js +1 -0
  16. package/server/client/dist/assets/{Trash.es-BGoN5q9L.js → Trash.es-BfCEiL3-.js} +1 -1
  17. package/server/client/dist/assets/ViewNotes-ZBOQ1adH.js +1 -0
  18. package/server/client/dist/assets/Views-DQHPfdwM.js +1 -0
  19. package/server/client/dist/assets/{image.api-0mMkElZk.js → image.api-DGXlQ_Ca.js} +1 -1
  20. package/server/client/dist/assets/index-B28TO4FC.js +1 -0
  21. package/server/client/dist/assets/{index-DL7pUwq2.css → index-Bm9l_L20.css} +1 -1
  22. package/server/client/dist/assets/index-Bsx4P7EA.js +210 -0
  23. package/server/client/dist/assets/manage-image-Dg297A_h.js +1 -0
  24. package/server/client/dist/assets/manage-image-detail-hk6jWyiB.js +1 -0
  25. package/server/client/dist/assets/mcp-CSjmBjFR.js +1 -0
  26. package/server/client/dist/assets/{note-core-BCgMq5QA.js → note-core-GgFcksAF.js} +1 -1
  27. package/server/client/dist/assets/{note-vendor-BofYbzmZ.js → note-vendor-5N5mRkIT.js} +3 -3
  28. package/server/client/dist/assets/{placeholder-i-uNe71U.js → placeholder-Bmiowo28.js} +4 -4
  29. package/server/client/dist/assets/trash-CM7SbVtW.js +1 -0
  30. package/server/client/dist/assets/{useReminderMutate-tNMwwRnx.js → useReminderMutate-DsIvVpCQ.js} +2 -2
  31. package/server/client/dist/assets/view-dashboard-CP8nhfxQ.js +90 -0
  32. package/server/client/dist/index.html +4 -4
  33. package/server/dist/app.js +8 -84
  34. package/server/dist/app.js.map +1 -1
  35. package/server/dist/features/auth/http/api.js +43 -0
  36. package/server/dist/features/auth/http/api.js.map +1 -0
  37. package/server/dist/features/auth/http/login-page.js +28 -0
  38. package/server/dist/features/auth/http/login-page.js.map +1 -0
  39. package/server/dist/features/auth/http/pages.js +50 -0
  40. package/server/dist/features/auth/http/pages.js.map +1 -0
  41. package/server/dist/features/auth/service.js +94 -0
  42. package/server/dist/features/auth/service.js.map +1 -0
  43. package/server/dist/features/cache/graphql/cache.field.resolver.js +5 -0
  44. package/server/dist/features/cache/graphql/cache.field.resolver.js.map +1 -0
  45. package/server/dist/features/cache/graphql/cache.mutation.resolver.js +49 -0
  46. package/server/dist/features/cache/graphql/cache.mutation.resolver.js.map +1 -0
  47. package/server/dist/features/cache/graphql/cache.query.resolver.js +21 -0
  48. package/server/dist/features/cache/graphql/cache.query.resolver.js.map +1 -0
  49. package/server/dist/features/cache/graphql/cache.resolver.js +12 -0
  50. package/server/dist/features/cache/graphql/cache.resolver.js.map +1 -0
  51. package/server/dist/features/cache/graphql/cache.type-defs.js +32 -0
  52. package/server/dist/features/cache/graphql/cache.type-defs.js.map +1 -0
  53. package/server/dist/features/cache/graphql/index.js +21 -0
  54. package/server/dist/features/cache/graphql/index.js.map +1 -0
  55. package/server/dist/features/image/graphql/image.field.resolver.js +14 -0
  56. package/server/dist/features/image/graphql/image.field.resolver.js.map +1 -0
  57. package/server/dist/features/image/graphql/image.mutation.resolver.js +21 -0
  58. package/server/dist/features/image/graphql/image.mutation.resolver.js.map +1 -0
  59. package/server/dist/features/image/graphql/image.query.resolver.js +40 -0
  60. package/server/dist/features/image/graphql/image.query.resolver.js.map +1 -0
  61. package/server/dist/features/image/graphql/image.resolver.js +12 -0
  62. package/server/dist/features/image/graphql/image.resolver.js.map +1 -0
  63. package/server/dist/features/image/graphql/image.type-defs.js +31 -0
  64. package/server/dist/features/image/graphql/image.type-defs.js.map +1 -0
  65. package/server/dist/features/image/graphql/index.js +16 -0
  66. package/server/dist/features/image/graphql/index.js.map +1 -0
  67. package/server/dist/features/image/http/upload.js +48 -0
  68. package/server/dist/features/image/http/upload.js.map +1 -0
  69. package/server/dist/features/image/services/delete.js +52 -0
  70. package/server/dist/features/image/services/delete.js.map +1 -0
  71. package/server/dist/{modules/remote-image.js → features/image/services/remote-fetch.js} +1 -1
  72. package/server/dist/features/image/services/remote-fetch.js.map +1 -0
  73. package/server/dist/{modules/image-upload.js → features/image/services/upload.js} +4 -8
  74. package/server/dist/features/image/services/upload.js.map +1 -0
  75. package/server/dist/{views/mcp-admin.js → features/mcp-admin/http/handlers.js} +3 -3
  76. package/server/dist/features/mcp-admin/http/handlers.js.map +1 -0
  77. package/server/dist/{modules/mcp-admin.js → features/mcp-admin/service.js} +3 -3
  78. package/server/dist/features/mcp-admin/service.js.map +1 -0
  79. package/server/dist/features/note/graphql/index.js +8 -0
  80. package/server/dist/features/note/graphql/index.js.map +1 -0
  81. package/server/dist/features/note/graphql/note.field.resolver.js +12 -0
  82. package/server/dist/features/note/graphql/note.field.resolver.js.map +1 -0
  83. package/server/dist/features/note/graphql/note.graphql.shared.js +23 -0
  84. package/server/dist/features/note/graphql/note.graphql.shared.js.map +1 -0
  85. package/server/dist/features/note/graphql/note.mutation.resolver.js +140 -0
  86. package/server/dist/features/note/graphql/note.mutation.resolver.js.map +1 -0
  87. package/server/dist/features/note/graphql/note.query.resolver.js +382 -0
  88. package/server/dist/features/note/graphql/note.query.resolver.js.map +1 -0
  89. package/server/dist/features/note/graphql/note.resolver.js +14 -0
  90. package/server/dist/features/note/graphql/note.resolver.js.map +1 -0
  91. package/server/dist/features/note/graphql/note.type-defs.js +184 -0
  92. package/server/dist/features/note/graphql/note.type-defs.js.map +1 -0
  93. package/server/dist/{views/note.js → features/note/http/mcp.js} +27 -15
  94. package/server/dist/features/note/http/mcp.js.map +1 -0
  95. package/server/dist/{modules/note-authoring.js → features/note/services/authoring.js} +25 -7
  96. package/server/dist/features/note/services/authoring.js.map +1 -0
  97. package/server/dist/{modules/note-cleanup.js → features/note/services/cleanup.js} +14 -23
  98. package/server/dist/features/note/services/cleanup.js.map +1 -0
  99. package/server/dist/features/note/services/search-backfill.js +84 -0
  100. package/server/dist/features/note/services/search-backfill.js.map +1 -0
  101. package/server/dist/features/note/services/search.js +197 -0
  102. package/server/dist/features/note/services/search.js.map +1 -0
  103. package/server/dist/{modules/note-snapshot.js → features/note/services/snapshot.js} +51 -49
  104. package/server/dist/features/note/services/snapshot.js.map +1 -0
  105. package/server/dist/{modules/note-tag-filter.js → features/note/services/tag-filter.js} +2 -6
  106. package/server/dist/features/note/services/tag-filter.js.map +1 -0
  107. package/server/dist/{modules/note-trash.js → features/note/services/trash.js} +28 -23
  108. package/server/dist/features/note/services/trash.js.map +1 -0
  109. package/server/dist/features/placeholder/graphql/index.js +27 -0
  110. package/server/dist/features/placeholder/graphql/index.js.map +1 -0
  111. package/server/dist/features/placeholder/graphql/placeholder.field.resolver.js +5 -0
  112. package/server/dist/features/placeholder/graphql/placeholder.field.resolver.js.map +1 -0
  113. package/server/dist/features/placeholder/graphql/placeholder.mutation.resolver.js +72 -0
  114. package/server/dist/features/placeholder/graphql/placeholder.mutation.resolver.js.map +1 -0
  115. package/server/dist/features/placeholder/graphql/placeholder.query.resolver.js +36 -0
  116. package/server/dist/features/placeholder/graphql/placeholder.query.resolver.js.map +1 -0
  117. package/server/dist/features/placeholder/graphql/placeholder.resolver.js +12 -0
  118. package/server/dist/features/placeholder/graphql/placeholder.resolver.js.map +1 -0
  119. package/server/dist/features/placeholder/graphql/placeholder.type-defs.js +50 -0
  120. package/server/dist/features/placeholder/graphql/placeholder.type-defs.js.map +1 -0
  121. package/server/dist/features/reminder/graphql/index.js +27 -0
  122. package/server/dist/features/reminder/graphql/index.js.map +1 -0
  123. package/server/dist/features/reminder/graphql/reminder.field.resolver.js +10 -0
  124. package/server/dist/features/reminder/graphql/reminder.field.resolver.js.map +1 -0
  125. package/server/dist/features/reminder/graphql/reminder.mutation.resolver.js +59 -0
  126. package/server/dist/features/reminder/graphql/reminder.mutation.resolver.js.map +1 -0
  127. package/server/dist/features/reminder/graphql/reminder.query.resolver.js +79 -0
  128. package/server/dist/features/reminder/graphql/reminder.query.resolver.js.map +1 -0
  129. package/server/dist/features/reminder/graphql/reminder.resolver.js +12 -0
  130. package/server/dist/features/reminder/graphql/reminder.resolver.js.map +1 -0
  131. package/server/dist/features/reminder/graphql/reminder.type-defs.js +51 -0
  132. package/server/dist/features/reminder/graphql/reminder.type-defs.js.map +1 -0
  133. package/server/dist/features/tag/graphql/index.js +14 -0
  134. package/server/dist/features/tag/graphql/index.js.map +1 -0
  135. package/server/dist/features/tag/graphql/tag.field.resolver.js +10 -0
  136. package/server/dist/features/tag/graphql/tag.field.resolver.js.map +1 -0
  137. package/server/dist/features/tag/graphql/tag.mutation.resolver.js +15 -0
  138. package/server/dist/features/tag/graphql/tag.mutation.resolver.js.map +1 -0
  139. package/server/dist/features/tag/graphql/tag.query.resolver.js +26 -0
  140. package/server/dist/features/tag/graphql/tag.query.resolver.js.map +1 -0
  141. package/server/dist/features/tag/graphql/tag.resolver.js +12 -0
  142. package/server/dist/features/tag/graphql/tag.resolver.js.map +1 -0
  143. package/server/dist/features/tag/graphql/tag.type-defs.js +46 -0
  144. package/server/dist/features/tag/graphql/tag.type-defs.js.map +1 -0
  145. package/server/dist/{views/tag.js → features/tag/http/mcp.js} +3 -3
  146. package/server/dist/features/tag/http/mcp.js.map +1 -0
  147. package/server/dist/{modules/tag-organization.js → features/tag/services/organization.js} +38 -8
  148. package/server/dist/features/tag/services/organization.js.map +1 -0
  149. package/server/dist/features/view/graphql/index.js +11 -0
  150. package/server/dist/features/view/graphql/index.js.map +1 -0
  151. package/server/dist/features/view/graphql/view.mutation.resolver.js +53 -0
  152. package/server/dist/features/view/graphql/view.mutation.resolver.js.map +1 -0
  153. package/server/dist/features/view/graphql/view.query.resolver.js +29 -0
  154. package/server/dist/features/view/graphql/view.query.resolver.js.map +1 -0
  155. package/server/dist/features/view/graphql/view.resolver.js +10 -0
  156. package/server/dist/features/view/graphql/view.resolver.js.map +1 -0
  157. package/server/dist/features/view/graphql/view.type-defs.js +63 -0
  158. package/server/dist/features/view/graphql/view.type-defs.js.map +1 -0
  159. package/server/dist/features/view/services/workspace.js +432 -0
  160. package/server/dist/features/view/services/workspace.js.map +1 -0
  161. package/server/dist/main.js +14 -0
  162. package/server/dist/main.js.map +1 -1
  163. package/server/dist/modules/auth-guard.js +10 -9
  164. package/server/dist/modules/auth-guard.js.map +1 -1
  165. package/server/dist/modules/auth-mode.js +1 -3
  166. package/server/dist/modules/auth-mode.js.map +1 -1
  167. package/server/dist/modules/blocknote.js +8 -17
  168. package/server/dist/modules/blocknote.js.map +1 -1
  169. package/server/dist/modules/data-maintenance.js +75 -0
  170. package/server/dist/modules/data-maintenance.js.map +1 -0
  171. package/server/dist/modules/error-handler.js.map +1 -1
  172. package/server/dist/modules/logger.js +5 -23
  173. package/server/dist/modules/logger.js.map +1 -1
  174. package/server/dist/modules/mcp-auth.js +4 -5
  175. package/server/dist/modules/mcp-auth.js.map +1 -1
  176. package/server/dist/modules/mcp-token.js.map +1 -1
  177. package/server/dist/modules/prisma-runtime.js +2 -7
  178. package/server/dist/modules/prisma-runtime.js.map +1 -1
  179. package/server/dist/modules/recovery-retention.js +1 -1
  180. package/server/dist/modules/recovery-retention.js.map +1 -1
  181. package/server/dist/modules/server-events-handler.js +34 -0
  182. package/server/dist/modules/server-events-handler.js.map +1 -0
  183. package/server/dist/modules/server-events.js +32 -0
  184. package/server/dist/modules/server-events.js.map +1 -0
  185. package/server/dist/modules/use-async.js.map +1 -1
  186. package/server/dist/paths.js.map +1 -1
  187. package/server/dist/routes/api.js +34 -0
  188. package/server/dist/routes/api.js.map +1 -0
  189. package/server/dist/routes/auth-pages.js +11 -0
  190. package/server/dist/routes/auth-pages.js.map +1 -0
  191. package/server/dist/routes/client.js +27 -0
  192. package/server/dist/routes/client.js.map +1 -0
  193. package/server/dist/routes/graphql.js +33 -0
  194. package/server/dist/routes/graphql.js.map +1 -0
  195. package/server/dist/routes/index.js +11 -0
  196. package/server/dist/routes/index.js.map +1 -0
  197. package/server/dist/routes/mcp.js +30 -0
  198. package/server/dist/routes/mcp.js.map +1 -0
  199. package/server/dist/schema/index.js +11 -8
  200. package/server/dist/schema/index.js.map +1 -1
  201. package/server/dist/types/index.js.map +1 -1
  202. package/server/prisma/migrations/20260413143000_0014_tag_name_unique/migration.sql +32 -0
  203. package/server/prisma/migrations/20260414143000_0015_note_searchable_text/migration.sql +5 -0
  204. package/server/prisma/migrations/20260416090000_0016_view_workspace/migration.sql +50 -0
  205. package/server/prisma/schema.prisma +66 -12
  206. package/server/client/dist/assets/Calendar-Kjy1PX6L.js +0 -25
  207. package/server/client/dist/assets/Graph-Bl5K2qUw.js +0 -1
  208. package/server/client/dist/assets/Note-BfGma2Qc.css +0 -1
  209. package/server/client/dist/assets/Note-DN_ko2M3.js +0 -1
  210. package/server/client/dist/assets/Reminders-BK-Uv9Ps.js +0 -1
  211. package/server/client/dist/assets/Search-ClHeWvmI.js +0 -1
  212. package/server/client/dist/assets/Tag-Dph4V_kl.js +0 -1
  213. package/server/client/dist/assets/TagNotes-CxP5qHZj.js +0 -1
  214. package/server/client/dist/assets/index-6lIw6jYW.js +0 -1
  215. package/server/client/dist/assets/index-Ba2XPRI8.js +0 -205
  216. package/server/client/dist/assets/manage-image-Br_kKxbb.js +0 -1
  217. package/server/client/dist/assets/manage-image-detail-9DzqbiqI.js +0 -1
  218. package/server/client/dist/assets/mcp-C_So91eX.js +0 -1
  219. package/server/client/dist/assets/trash-Cg3nJ1m5.js +0 -1
  220. package/server/dist/modules/auth.js +0 -25
  221. package/server/dist/modules/auth.js.map +0 -1
  222. package/server/dist/modules/image-upload.js.map +0 -1
  223. package/server/dist/modules/mcp-admin.js.map +0 -1
  224. package/server/dist/modules/note-authoring.js.map +0 -1
  225. package/server/dist/modules/note-cleanup.js.map +0 -1
  226. package/server/dist/modules/note-snapshot.js.map +0 -1
  227. package/server/dist/modules/note-tag-filter.js.map +0 -1
  228. package/server/dist/modules/note-trash.js.map +0 -1
  229. package/server/dist/modules/remote-image.js.map +0 -1
  230. package/server/dist/modules/tag-organization.js.map +0 -1
  231. package/server/dist/schema/cache/index.js +0 -58
  232. package/server/dist/schema/cache/index.js.map +0 -1
  233. package/server/dist/schema/image/index.js +0 -88
  234. package/server/dist/schema/image/index.js.map +0 -1
  235. package/server/dist/schema/note/index.js +0 -582
  236. package/server/dist/schema/note/index.js.map +0 -1
  237. package/server/dist/schema/placeholder/index.js +0 -105
  238. package/server/dist/schema/placeholder/index.js.map +0 -1
  239. package/server/dist/schema/reminder/index.js +0 -161
  240. package/server/dist/schema/reminder/index.js.map +0 -1
  241. package/server/dist/schema/tag/index.js +0 -81
  242. package/server/dist/schema/tag/index.js.map +0 -1
  243. package/server/dist/urls.js +0 -9
  244. package/server/dist/urls.js.map +0 -1
  245. package/server/dist/views/auth.js +0 -305
  246. package/server/dist/views/auth.js.map +0 -1
  247. package/server/dist/views/image.js +0 -44
  248. package/server/dist/views/image.js.map +0 -1
  249. package/server/dist/views/index.js +0 -6
  250. package/server/dist/views/index.js.map +0 -1
  251. package/server/dist/views/mcp-admin.js.map +0 -1
  252. package/server/dist/views/note.js.map +0 -1
  253. package/server/dist/views/tag.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ import { Router } from "express";
2
+ import { createHandler } from "graphql-http/lib/use/express";
3
+ import { isAuthenticatedRequest, requireSessionForGraphql } from "../modules/auth-guard.js";
4
+ import { createMcpAuthMiddleware, createReadOnlyMcpValidationRule } from "../modules/mcp-auth.js";
5
+ import schema from "../schema/index.js";
6
+ const createGraphqlContext = (authConfig) => (req) => ({
7
+ authMode: authConfig.mode,
8
+ isAuthenticated: isAuthenticatedRequest(req.raw),
9
+ req: req.raw,
10
+ res: req.context.res
11
+ });
12
+ const createGraphqlRouter = (authConfig, mcpAdminService) => Router().use(
13
+ "/mcp",
14
+ createMcpAuthMiddleware(authConfig, mcpAdminService),
15
+ createHandler({
16
+ schema,
17
+ context: createGraphqlContext(authConfig),
18
+ validationRules: (_req, _args, specifiedRules) => {
19
+ return [...specifiedRules, createReadOnlyMcpValidationRule()];
20
+ }
21
+ })
22
+ ).use(
23
+ "/",
24
+ requireSessionForGraphql(authConfig),
25
+ createHandler({
26
+ schema,
27
+ context: createGraphqlContext(authConfig)
28
+ })
29
+ );
30
+ export {
31
+ createGraphqlRouter
32
+ };
33
+ //# sourceMappingURL=graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/routes/graphql.ts"],"sourcesContent":["import { type Request, type Response, Router } from 'express';\nimport { createHandler } from 'graphql-http/lib/use/express';\nimport type { McpAdminService } from '../features/mcp-admin/service.js';\nimport { isAuthenticatedRequest, requireSessionForGraphql } from '../modules/auth-guard.js';\nimport type { AuthConfig } from '../modules/auth-mode.js';\nimport { createMcpAuthMiddleware, createReadOnlyMcpValidationRule } from '../modules/mcp-auth.js';\nimport schema from '../schema/index.js';\n\ntype McpGraphqlService = Pick<McpAdminService, 'getStatus' | 'validatePresentedToken'>;\ntype GraphqlRequestContext = { raw: Request; context: { res: Response } };\n\nconst createGraphqlContext = (authConfig: AuthConfig) => (req: GraphqlRequestContext) => ({\n authMode: authConfig.mode,\n isAuthenticated: isAuthenticatedRequest(req.raw),\n req: req.raw,\n res: req.context.res,\n});\n\nexport const createGraphqlRouter = (authConfig: AuthConfig, mcpAdminService: McpGraphqlService) =>\n Router()\n .use(\n '/mcp',\n createMcpAuthMiddleware(authConfig, mcpAdminService),\n createHandler({\n schema,\n context: createGraphqlContext(authConfig),\n validationRules: (_req, _args, specifiedRules) => {\n return [...specifiedRules, createReadOnlyMcpValidationRule()];\n },\n }),\n )\n .use(\n '/',\n requireSessionForGraphql(authConfig),\n createHandler({\n schema,\n context: createGraphqlContext(authConfig),\n }),\n );\n"],"mappings":"AAAA,SAAsC,cAAc;AACpD,SAAS,qBAAqB;AAE9B,SAAS,wBAAwB,gCAAgC;AAEjE,SAAS,yBAAyB,uCAAuC;AACzE,OAAO,YAAY;AAKnB,MAAM,uBAAuB,CAAC,eAA2B,CAAC,SAAgC;AAAA,EACtF,UAAU,WAAW;AAAA,EACrB,iBAAiB,uBAAuB,IAAI,GAAG;AAAA,EAC/C,KAAK,IAAI;AAAA,EACT,KAAK,IAAI,QAAQ;AACrB;AAEO,MAAM,sBAAsB,CAAC,YAAwB,oBACxD,OAAO,EACF;AAAA,EACG;AAAA,EACA,wBAAwB,YAAY,eAAe;AAAA,EACnD,cAAc;AAAA,IACV;AAAA,IACA,SAAS,qBAAqB,UAAU;AAAA,IACxC,iBAAiB,CAAC,MAAM,OAAO,mBAAmB;AAC9C,aAAO,CAAC,GAAG,gBAAgB,gCAAgC,CAAC;AAAA,IAChE;AAAA,EACJ,CAAC;AACL,EACC;AAAA,EACG;AAAA,EACA,yBAAyB,UAAU;AAAA,EACnC,cAAc;AAAA,IACV;AAAA,IACA,SAAS,qBAAqB,UAAU;AAAA,EAC5C,CAAC;AACL;","names":[]}
@@ -0,0 +1,11 @@
1
+ import { createApiRouter } from "./api.js";
2
+ import { createAuthPagesRouter } from "./auth-pages.js";
3
+ import { createClientRouter } from "./client.js";
4
+ import { createGraphqlRouter } from "./graphql.js";
5
+ export {
6
+ createApiRouter,
7
+ createAuthPagesRouter,
8
+ createClientRouter,
9
+ createGraphqlRouter
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/routes/index.ts"],"sourcesContent":["export { createApiRouter } from './api.js';\nexport { createAuthPagesRouter } from './auth-pages.js';\nexport { createClientRouter } from './client.js';\nexport { createGraphqlRouter } from './graphql.js';\n"],"mappings":"AAAA,SAAS,uBAAuB;AAChC,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,2BAA2B;","names":[]}
@@ -0,0 +1,30 @@
1
+ import { Router } from "express";
2
+ import {
3
+ createMcpCreateNoteHandler,
4
+ createMcpDeleteNoteHandler,
5
+ createMcpUpdateNoteHandler
6
+ } from "../features/note/http/mcp.js";
7
+ import { createMcpCreateTagHandler } from "../features/tag/http/mcp.js";
8
+ import { createMcpAuthMiddleware } from "../modules/mcp-auth.js";
9
+ import useAsync from "../modules/use-async.js";
10
+ const createMcpRouter = (authConfig, mcpAdminService) => Router().post(
11
+ "/notes/create",
12
+ createMcpAuthMiddleware(authConfig, mcpAdminService),
13
+ useAsync(createMcpCreateNoteHandler())
14
+ ).post(
15
+ "/notes/update",
16
+ createMcpAuthMiddleware(authConfig, mcpAdminService),
17
+ useAsync(createMcpUpdateNoteHandler())
18
+ ).post(
19
+ "/notes/delete",
20
+ createMcpAuthMiddleware(authConfig, mcpAdminService),
21
+ useAsync(createMcpDeleteNoteHandler())
22
+ ).post(
23
+ "/tags/create",
24
+ createMcpAuthMiddleware(authConfig, mcpAdminService),
25
+ useAsync(createMcpCreateTagHandler())
26
+ );
27
+ export {
28
+ createMcpRouter
29
+ };
30
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/routes/mcp.ts"],"sourcesContent":["import { Router } from 'express';\nimport type { McpAdminService } from '../features/mcp-admin/service.js';\nimport {\n createMcpCreateNoteHandler,\n createMcpDeleteNoteHandler,\n createMcpUpdateNoteHandler,\n} from '../features/note/http/mcp.js';\nimport { createMcpCreateTagHandler } from '../features/tag/http/mcp.js';\nimport type { AuthConfig } from '../modules/auth-mode.js';\nimport { createMcpAuthMiddleware } from '../modules/mcp-auth.js';\nimport useAsync from '../modules/use-async.js';\n\ntype McpRouteService = Pick<McpAdminService, 'getStatus' | 'validatePresentedToken'>;\n\nexport const createMcpRouter = (authConfig: AuthConfig, mcpAdminService: McpRouteService) =>\n Router()\n .post(\n '/notes/create',\n createMcpAuthMiddleware(authConfig, mcpAdminService),\n useAsync(createMcpCreateNoteHandler()),\n )\n .post(\n '/notes/update',\n createMcpAuthMiddleware(authConfig, mcpAdminService),\n useAsync(createMcpUpdateNoteHandler()),\n )\n .post(\n '/notes/delete',\n createMcpAuthMiddleware(authConfig, mcpAdminService),\n useAsync(createMcpDeleteNoteHandler()),\n )\n .post(\n '/tags/create',\n createMcpAuthMiddleware(authConfig, mcpAdminService),\n useAsync(createMcpCreateTagHandler()),\n );\n"],"mappings":"AAAA,SAAS,cAAc;AAEvB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,iCAAiC;AAE1C,SAAS,+BAA+B;AACxC,OAAO,cAAc;AAId,MAAM,kBAAkB,CAAC,YAAwB,oBACpD,OAAO,EACF;AAAA,EACG;AAAA,EACA,wBAAwB,YAAY,eAAe;AAAA,EACnD,SAAS,2BAA2B,CAAC;AACzC,EACC;AAAA,EACG;AAAA,EACA,wBAAwB,YAAY,eAAe;AAAA,EACnD,SAAS,2BAA2B,CAAC;AACzC,EACC;AAAA,EACG;AAAA,EACA,wBAAwB,YAAY,eAAe;AAAA,EACnD,SAAS,2BAA2B,CAAC;AACzC,EACC;AAAA,EACG;AAAA,EACA,wBAAwB,YAAY,eAAe;AAAA,EACnD,SAAS,0BAA0B,CAAC;AACxC;","names":[]}
@@ -1,10 +1,11 @@
1
1
  import { makeExecutableSchema } from "@graphql-tools/schema";
2
- import { noteResolvers, noteTypeDefs } from "./note/index.js";
3
- import { imageResolvers, imageTypeDefs } from "./image/index.js";
4
- import { tagResolvers, tagTypeDefs } from "./tag/index.js";
5
- import { placeholderResolvers, placeholderTypeDefs } from "./placeholder/index.js";
6
- import { cacheResolvers, cacheTypeDefs } from "./cache/index.js";
7
- import { reminderResolvers, reminderTypeDefs } from "./reminder/index.js";
2
+ import { cacheResolvers, cacheTypeDefs } from "../features/cache/graphql/index.js";
3
+ import { imageResolvers, imageTypeDefs } from "../features/image/graphql/index.js";
4
+ import { noteResolvers, noteTypeDefs } from "../features/note/graphql/index.js";
5
+ import { placeholderResolvers, placeholderTypeDefs } from "../features/placeholder/graphql/index.js";
6
+ import { reminderResolvers, reminderTypeDefs } from "../features/reminder/graphql/index.js";
7
+ import { tagResolvers, tagTypeDefs } from "../features/tag/graphql/index.js";
8
+ import { viewResolvers, viewTypeDefs } from "../features/view/graphql/index.js";
8
9
  const schema = makeExecutableSchema({
9
10
  typeDefs: [
10
11
  cacheTypeDefs,
@@ -12,7 +13,8 @@ const schema = makeExecutableSchema({
12
13
  imageTypeDefs,
13
14
  tagTypeDefs,
14
15
  placeholderTypeDefs,
15
- reminderTypeDefs
16
+ reminderTypeDefs,
17
+ viewTypeDefs
16
18
  ],
17
19
  resolvers: [
18
20
  cacheResolvers,
@@ -20,7 +22,8 @@ const schema = makeExecutableSchema({
20
22
  imageResolvers,
21
23
  tagResolvers,
22
24
  placeholderResolvers,
23
- reminderResolvers
25
+ reminderResolvers,
26
+ viewResolvers
24
27
  ]
25
28
  });
26
29
  var schema_default = schema;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/index.ts"],"sourcesContent":["import { makeExecutableSchema } from '@graphql-tools/schema';\nimport { noteResolvers, noteTypeDefs } from './note/index.js';\nimport { imageResolvers, imageTypeDefs } from './image/index.js';\nimport { tagResolvers, tagTypeDefs } from './tag/index.js';\nimport { placeholderResolvers, placeholderTypeDefs } from './placeholder/index.js';\nimport { cacheResolvers, cacheTypeDefs } from './cache/index.js';\nimport { reminderResolvers, reminderTypeDefs } from './reminder/index.js';\n\nconst schema = makeExecutableSchema({\n typeDefs: [\n cacheTypeDefs,\n noteTypeDefs,\n imageTypeDefs,\n tagTypeDefs,\n placeholderTypeDefs,\n reminderTypeDefs\n ],\n resolvers: [\n cacheResolvers,\n noteResolvers,\n imageResolvers,\n tagResolvers,\n placeholderResolvers,\n reminderResolvers\n ]\n});\n\nexport default schema;\n"],"mappings":"AAAA,SAAS,4BAA4B;AACrC,SAAS,eAAe,oBAAoB;AAC5C,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,cAAc,mBAAmB;AAC1C,SAAS,sBAAsB,2BAA2B;AAC1D,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,mBAAmB,wBAAwB;AAEpD,MAAM,SAAS,qBAAqB;AAAA,EAChC,UAAU;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,WAAW;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ,CAAC;AAED,IAAO,iBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/schema/index.ts"],"sourcesContent":["import { makeExecutableSchema } from '@graphql-tools/schema';\nimport { cacheResolvers, cacheTypeDefs } from '../features/cache/graphql/index.js';\nimport { imageResolvers, imageTypeDefs } from '../features/image/graphql/index.js';\nimport { noteResolvers, noteTypeDefs } from '../features/note/graphql/index.js';\nimport { placeholderResolvers, placeholderTypeDefs } from '../features/placeholder/graphql/index.js';\nimport { reminderResolvers, reminderTypeDefs } from '../features/reminder/graphql/index.js';\nimport { tagResolvers, tagTypeDefs } from '../features/tag/graphql/index.js';\nimport { viewResolvers, viewTypeDefs } from '../features/view/graphql/index.js';\n\nconst schema = makeExecutableSchema({\n typeDefs: [\n cacheTypeDefs,\n noteTypeDefs,\n imageTypeDefs,\n tagTypeDefs,\n placeholderTypeDefs,\n reminderTypeDefs,\n viewTypeDefs,\n ],\n resolvers: [\n cacheResolvers,\n noteResolvers,\n imageResolvers,\n tagResolvers,\n placeholderResolvers,\n reminderResolvers,\n viewResolvers,\n ],\n});\n\nexport default schema;\n"],"mappings":"AAAA,SAAS,4BAA4B;AACrC,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,eAAe,oBAAoB;AAC5C,SAAS,sBAAsB,2BAA2B;AAC1D,SAAS,mBAAmB,wBAAwB;AACpD,SAAS,cAAc,mBAAmB;AAC1C,SAAS,eAAe,oBAAoB;AAE5C,MAAM,SAAS,qBAAqB;AAAA,EAChC,UAAU;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,WAAW;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ,CAAC;AAED,IAAO,iBAAQ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["import type { Request, Response, NextFunction } from 'express';\n\ndeclare module 'express-session' {\n interface SessionData {\n authenticated?: boolean;\n }\n}\n\nexport type Controller = (req: Request, res: Response, next?: NextFunction) => Promise<void>;\n\nexport * from './input.js';\n"],"mappings":"AAUA,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["import type { NextFunction, Request, Response } from 'express';\n\ndeclare module 'express-session' {\n interface SessionData {\n authenticated?: boolean;\n }\n}\n\nexport type Controller = (req: Request, res: Response, next?: NextFunction) => Promise<void>;\n\nexport * from './input.js';\n"],"mappings":"AAUA,cAAc;","names":[]}
@@ -0,0 +1,32 @@
1
+ CREATE TEMP TABLE "_TagDuplicateMap" AS
2
+ SELECT
3
+ duplicate."id" AS "duplicateId",
4
+ grouped."canonicalId" AS "canonicalId"
5
+ FROM "Tag" AS duplicate
6
+ JOIN (
7
+ SELECT
8
+ "name",
9
+ MIN("id") AS "canonicalId"
10
+ FROM "Tag"
11
+ GROUP BY "name"
12
+ ) AS grouped
13
+ ON grouped."name" = duplicate."name"
14
+ WHERE duplicate."id" <> grouped."canonicalId";
15
+
16
+ INSERT OR IGNORE INTO "_NoteToTag" ("A", "B")
17
+ SELECT
18
+ relation."A",
19
+ duplicateMap."canonicalId"
20
+ FROM "_NoteToTag" AS relation
21
+ JOIN "_TagDuplicateMap" AS duplicateMap
22
+ ON duplicateMap."duplicateId" = relation."B";
23
+
24
+ DELETE FROM "Tag"
25
+ WHERE "id" IN (
26
+ SELECT "duplicateId"
27
+ FROM "_TagDuplicateMap"
28
+ );
29
+
30
+ CREATE UNIQUE INDEX "Tag_name_key" ON "Tag"("name");
31
+
32
+ DROP TABLE "_TagDuplicateMap";
@@ -0,0 +1,5 @@
1
+ ALTER TABLE "Note"
2
+ ADD COLUMN "searchableText" TEXT NOT NULL DEFAULT '';
3
+
4
+ ALTER TABLE "Note"
5
+ ADD COLUMN "searchableTextVersion" INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1,50 @@
1
+ -- CreateTable
2
+ CREATE TABLE "ViewTab" (
3
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
4
+ "title" TEXT NOT NULL,
5
+ "order" INTEGER NOT NULL DEFAULT 0,
6
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
7
+ "updatedAt" DATETIME NOT NULL
8
+ );
9
+
10
+ -- CreateTable
11
+ CREATE TABLE "ViewWorkspace" (
12
+ "id" INTEGER NOT NULL PRIMARY KEY,
13
+ "activeTabId" INTEGER,
14
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
15
+ "updatedAt" DATETIME NOT NULL,
16
+ CONSTRAINT "ViewWorkspace_activeTabId_fkey" FOREIGN KEY ("activeTabId") REFERENCES "ViewTab" ("id") ON DELETE SET NULL ON UPDATE CASCADE
17
+ );
18
+
19
+ -- CreateTable
20
+ CREATE TABLE "ViewSection" (
21
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
22
+ "tabId" INTEGER NOT NULL,
23
+ "title" TEXT NOT NULL,
24
+ "mode" TEXT NOT NULL DEFAULT 'and',
25
+ "limit" INTEGER NOT NULL DEFAULT 5,
26
+ "order" INTEGER NOT NULL DEFAULT 0,
27
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
28
+ "updatedAt" DATETIME NOT NULL,
29
+ CONSTRAINT "ViewSection_tabId_fkey" FOREIGN KEY ("tabId") REFERENCES "ViewTab" ("id") ON DELETE CASCADE ON UPDATE CASCADE
30
+ );
31
+
32
+ -- CreateTable
33
+ CREATE TABLE "ViewSectionTag" (
34
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
35
+ "sectionId" INTEGER NOT NULL,
36
+ "name" TEXT NOT NULL,
37
+ "order" INTEGER NOT NULL DEFAULT 0,
38
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
39
+ "updatedAt" DATETIME NOT NULL,
40
+ CONSTRAINT "ViewSectionTag_sectionId_fkey" FOREIGN KEY ("sectionId") REFERENCES "ViewSection" ("id") ON DELETE CASCADE ON UPDATE CASCADE
41
+ );
42
+
43
+ -- CreateIndex
44
+ CREATE INDEX "ViewTab_order_createdAt_idx" ON "ViewTab"("order", "createdAt");
45
+
46
+ -- CreateIndex
47
+ CREATE INDEX "ViewSection_tabId_order_createdAt_idx" ON "ViewSection"("tabId", "order", "createdAt");
48
+
49
+ -- CreateIndex
50
+ CREATE INDEX "ViewSectionTag_sectionId_order_createdAt_idx" ON "ViewSectionTag"("sectionId", "order", "createdAt");
@@ -26,17 +26,19 @@ model McpToken {
26
26
  }
27
27
 
28
28
  model Note {
29
- id Int @id @default(autoincrement())
30
- title String
31
- content String
32
- createdAt DateTime @default(now())
33
- updatedAt DateTime @updatedAt
34
- pinned Boolean @default(false)
35
- order Int @default(0)
36
- layout NoteLayout @default(wide)
37
- tags Tag[] @relation("NoteToTag")
38
- reminders Reminder[] @relation("NoteToReminder")
39
- snapshots NoteSnapshot[]
29
+ id Int @id @default(autoincrement())
30
+ title String
31
+ content String
32
+ searchableText String @default("")
33
+ searchableTextVersion Int @default(0)
34
+ createdAt DateTime @default(now())
35
+ updatedAt DateTime @updatedAt
36
+ pinned Boolean @default(false)
37
+ order Int @default(0)
38
+ layout NoteLayout @default(wide)
39
+ tags Tag[] @relation("NoteToTag")
40
+ reminders Reminder[] @relation("NoteToReminder")
41
+ snapshots NoteSnapshot[]
40
42
  }
41
43
 
42
44
  model NoteSnapshot {
@@ -103,7 +105,7 @@ model Image {
103
105
 
104
106
  model Tag {
105
107
  id Int @id @default(autoincrement())
106
- name String
108
+ name String @unique
107
109
  createdAt DateTime @default(now())
108
110
  updatedAt DateTime @updatedAt
109
111
  notes Note[] @relation("NoteToTag")
@@ -141,3 +143,55 @@ model Placeholder {
141
143
  createdAt DateTime @default(now())
142
144
  updatedAt DateTime @updatedAt
143
145
  }
146
+
147
+ model ViewWorkspace {
148
+ id Int @id
149
+ activeTabId Int?
150
+ activeTab ViewTab? @relation("ActiveViewTab", fields: [activeTabId], references: [id], onDelete: SetNull)
151
+ createdAt DateTime @default(now())
152
+ updatedAt DateTime @updatedAt
153
+ }
154
+
155
+ model ViewTab {
156
+ id Int @id @default(autoincrement())
157
+ title String
158
+ order Int @default(0)
159
+ createdAt DateTime @default(now())
160
+ updatedAt DateTime @updatedAt
161
+ sections ViewSection[]
162
+ activeWorkspaces ViewWorkspace[] @relation("ActiveViewTab")
163
+
164
+ @@index([order, createdAt])
165
+ }
166
+
167
+ model ViewSection {
168
+ id Int @id @default(autoincrement())
169
+ tabId Int
170
+ tab ViewTab @relation(fields: [tabId], references: [id], onDelete: Cascade)
171
+ title String
172
+ mode ViewTagMatchMode @default(and)
173
+ limit Int @default(5)
174
+ order Int @default(0)
175
+ createdAt DateTime @default(now())
176
+ updatedAt DateTime @updatedAt
177
+ tags ViewSectionTag[]
178
+
179
+ @@index([tabId, order, createdAt])
180
+ }
181
+
182
+ model ViewSectionTag {
183
+ id Int @id @default(autoincrement())
184
+ sectionId Int
185
+ section ViewSection @relation(fields: [sectionId], references: [id], onDelete: Cascade)
186
+ name String
187
+ order Int @default(0)
188
+ createdAt DateTime @default(now())
189
+ updatedAt DateTime @updatedAt
190
+
191
+ @@index([sectionId, order, createdAt])
192
+ }
193
+
194
+ enum ViewTagMatchMode {
195
+ and
196
+ or
197
+ }
@@ -1,25 +0,0 @@
1
- import{j as e}from"./note-vendor-BofYbzmZ.js";import{p as ae,T as b,L as se,N as re,c as Y,d as f,s as ne,a as oe,M as R,b as ie,S as le,e as U,B as Z,f as ce,g as de,u as P,q,h as Q,P as me,i as ue,j as he,C as ge}from"./index-Ba2XPRI8.js";import{a as n}from"./graph-vendor-CUxe67Lr.js";import"./note-core-BCgMq5QA.js";const pe=new Map([["bold",n.createElement(n.Fragment,null,n.createElement("path",{d:"M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z"}))],["duotone",n.createElement(n.Fragment,null,n.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),n.createElement("path",{d:"M144,176a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176Zm88-48A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128ZM124,96a12,12,0,1,0-12-12A12,12,0,0,0,124,96Z"}))],["fill",n.createElement(n.Fragment,null,n.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z"}))],["light",n.createElement(n.Fragment,null,n.createElement("path",{d:"M142,176a6,6,0,0,1-6,6,14,14,0,0,1-14-14V128a2,2,0,0,0-2-2,6,6,0,0,1,0-12,14,14,0,0,1,14,14v40a2,2,0,0,0,2,2A6,6,0,0,1,142,176ZM124,94a10,10,0,1,0-10-10A10,10,0,0,0,124,94Zm106,34A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z"}))],["regular",n.createElement(n.Fragment,null,n.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,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"}))],["thin",n.createElement(n.Fragment,null,n.createElement("path",{d:"M140,176a4,4,0,0,1-4,4,12,12,0,0,1-12-12V128a4,4,0,0,0-4-4,4,4,0,0,1,0-8,12,12,0,0,1,12,12v40a4,4,0,0,0,4,4A4,4,0,0,1,140,176ZM124,92a8,8,0,1,0-8-8A8,8,0,0,0,124,92Zm104,36A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z"}))]]),B=n.forwardRef((a,t)=>n.createElement(ae,{ref:t,...a,weights:pe}));B.displayName="InfoIcon";const xe=B,ye=({children:a,className:t=""})=>e.jsxs("div",{className:`flex items-start gap-2.5 rounded-[12px] border border-border-subtle bg-hover-subtle/50 px-4 py-3 ${t}`,children:[e.jsx(xe,{className:"mt-0.5 h-4 w-4 shrink-0 text-fg-tertiary"}),e.jsx(b,{as:"div",variant:"meta",weight:"medium",tone:"secondary",children:a})]}),fe=({day:a,cellClassName:t,dayNumberClassName:s,isCurrentMonth:l,items:i,overflowCount:c,onOpenOverflow:u})=>e.jsxs("div",{className:`min-h-[196px] rounded-[16px] border p-2.5 ${t}`.trim(),children:[e.jsx("div",{className:"mb-2.5 flex justify-end",children:e.jsx(b,{as:"span",variant:"label",className:`flex h-7 w-7 items-center justify-center rounded-[10px] ${s}`.trim(),children:a})}),l&&i.length>0?e.jsxs("div",{className:"flex flex-col gap-1.5",children:[i,c>0?e.jsxs("button",{type:"button",onClick:u,className:"focus-ring-soft w-full rounded-[10px] border border-dashed border-border-subtle/70 bg-subtle/70 py-1 text-center text-micro font-semibold text-fg-tertiary outline-none transition-colors hover:border-border-secondary/70 hover:bg-hover-subtle hover:text-fg-secondary",children:["+",c," more"]}):null]}):null]}),K=({params:a,toneClassName:t="",header:s,title:l,meta:i,titleClassName:c=""})=>e.jsx(se,{to:re,params:a,className:"focus-ring-soft group block rounded-[8px] outline-none",children:e.jsxs("div",{className:Y("flex items-start gap-1.5 rounded-[8px] px-1.5 py-1 transition-colors group-hover:bg-hover-subtle",t),children:[s?e.jsx("span",{className:"mt-[2px] flex h-4 w-4 shrink-0 items-center justify-center text-fg-tertiary",children:s}):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(b,{as:"div",variant:"label",weight:"medium",tone:"secondary",className:Y("line-clamp-1",c),children:l}),i?e.jsx(b,{as:"div",variant:"micro",weight:"medium",tone:"tertiary",className:"mt-0.5",children:i}):null]})]})}),be=({note:a,type:t})=>e.jsx(K,{params:{id:a.id},header:e.jsx(ne,{size:12}),title:a.title,meta:f(Number(t==="create"?a.createdAt:a.updatedAt)).format("HH:mm")}),je=({reminder:a})=>e.jsx(K,{params:{id:String(a.note?.id??a.noteId)},header:e.jsx(oe,{size:12}),title:a.content||a.note?.title||"No title",titleClassName:a.completed?"line-through":"",meta:f(Number(a.reminderDate)).format("HH:mm")}),T=3,H=(a,t)=>a.map(s=>s.type==="note"?e.jsx(be,{note:s.item,type:t},`note-${s.item.id}`):e.jsx(je,{reminder:s.item},`reminder-${s.item.id}`)),ve=({year:a,month:t,day:s,isCurrentMonth:l,isSunday:i,isToday:c,isPast:u,notes:h,reminders:g,type:v})=>{const[M,N]=n.useState(!1),x=n.useMemo(()=>{const r=h.map(m=>({type:"note",item:m})),d=g.map(m=>({type:"reminder",item:m}));return u?[...r,...d]:[...d,...r]},[u,h,g]),D=x.length>T,C=n.useMemo(()=>H(x.slice(0,T),v),[x,v]),S=n.useMemo(()=>H(x,v),[x,v]),A=n.useCallback(()=>N(!0),[]),w=n.useCallback(()=>N(!1),[]),$=()=>l?c?"border-border-secondary/70 bg-[color:color-mix(in_srgb,var(--surface)_88%,var(--accent-soft-primary)_12%)]":"bg-surface border-border-subtle":"bg-muted/18 border-border-subtle/70",k=()=>c?"bg-cta text-fg-on-filled font-semibold":l?i?"text-fg-weekend font-bold":"text-fg-secondary font-bold":"text-fg-disabled opacity-55";return e.jsxs(e.Fragment,{children:[e.jsx(fe,{day:s,cellClassName:$(),dayNumberClassName:k(),isCurrentMonth:l,items:C,overflowCount:D?x.length-T:0,onOpenOverflow:A}),D&&e.jsxs(R,{isOpen:M,onClose:w,variant:"inspect",children:[e.jsx(R.Header,{title:`${a}/${String(t).padStart(2,"0")}/${String(s).padStart(2,"0")}`,onClose:w}),e.jsxs(R.Body,{children:[e.jsxs(R.Description,{className:"sr-only",children:["View all notes and reminders scheduled for day ",s,"."]}),e.jsx("div",{className:"flex max-h-[60vh] flex-col gap-2 overflow-y-auto",children:S})]})]})]})},Ne=n.memo(ve),Me=["January","February","March","April","May","June","July","August","September","October","November","December"],De=({month:a,year:t,type:s,onPrevMonth:l,onNextMonth:i,onToday:c,onTypeChange:u})=>e.jsxs("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex flex-wrap items-end gap-x-2.5 gap-y-1",children:[e.jsx(b,{as:"h1",variant:"display",weight:"bold",tracking:"tighter",className:"text-2xl leading-none sm:text-[2.15rem]",children:Me[a-1]}),e.jsx(b,{as:"span",variant:"subheading",weight:"medium",tone:"secondary",tracking:"tight",className:"pb-0.5",children:t})]}),e.jsx(b,{as:"p",variant:"meta",weight:"medium",tone:"secondary",children:"Track note activity and reminders across the month"})]}),e.jsx("div",{className:"flex lg:justify-end",children:e.jsxs("div",{className:"surface-base inline-flex flex-wrap items-center gap-3 rounded-[16px] px-3.5 py-2.5",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ie,{className:"h-4 w-4 shrink-0 text-fg-tertiary"}),e.jsx(b,{as:"span",variant:"label",weight:"medium",tone:"tertiary",children:"Note date"}),e.jsxs(le,{value:s,onValueChange:g=>u(g),variant:"ghost",size:"sm",children:[e.jsx(U,{value:"create",children:"Created"}),e.jsx(U,{value:"update",children:"Updated"})]})]}),e.jsx("div",{className:"h-5 w-px bg-divider"}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(Z,{variant:"ghost",size:"sm",onClick:c,children:"Today"}),e.jsx(Z,{variant:"ghost",size:"icon-sm",onClick:l,children:e.jsx(ce,{width:18,height:18})}),e.jsx(Z,{variant:"ghost",size:"icon-sm",onClick:i,children:e.jsx(de,{width:18,height:18})})]})]})})]}),we=`
2
- query NotesInDateRange($dateRange: DateRangeInput) {
3
- notesInDateRange(dateRange: $dateRange) {
4
- id
5
- title
6
- createdAt
7
- updatedAt
8
- }
9
- }
10
- `,Ee=`
11
- query RemindersInDateRange($dateRange: DateRangeInput) {
12
- remindersInDateRange(dateRange: $dateRange) {
13
- id
14
- noteId
15
- reminderDate
16
- completed
17
- priority
18
- content
19
- note {
20
- id
21
- title
22
- }
23
- }
24
- }
25
- `,Re=async a=>{const t=await Q(we,{dateRange:a});if(t.type==="error")throw t;return t.notesInDateRange},Ce=async a=>{const t=await Q(Ee,{dateRange:a});if(t.type==="error")throw t;return t.remindersInDateRange},Se=({year:a,month:t})=>{const s=`${a}-${String(t).padStart(2,"0")}-01`,l=t===12?1:t+1,c=`${t===12?a+1:a}-${String(l).padStart(2,"0")}-01`,u={start:s,end:c},h=P({queryKey:q.calendar.notesInDateRange(a,t),queryFn:()=>Re(u)}),g=P({queryKey:q.reminders.inDateRange(a,t),queryFn:()=>Ce(u)});return{notes:h.data??[],reminders:g.data??[],isLoading:h.isLoading||g.isLoading,isError:h.isError||g.isError}},Ae=["SUN","MON","TUE","WED","THU","FRI","SAT"],$e=[],ke=[],z=he(ge);function Le(){const a=z.useNavigate(),{year:t,month:s,type:l}=z.useSearch(),i=n.useRef(null),c=n.useRef(!1),u=n.useRef(0),h=n.useRef(0),g=n.useCallback(r=>{c.current=!0,u.current=r.pageX-(i.current?.offsetLeft??0),h.current=i.current?.scrollLeft??0,i.current&&(i.current.style.cursor="grabbing",i.current.style.userSelect="none")},[]),v=n.useCallback(r=>{if(!c.current||!i.current)return;r.preventDefault();const m=(r.pageX-i.current.offsetLeft-u.current)*1.2;i.current.scrollLeft=h.current-m},[]),M=n.useCallback(()=>{c.current=!1,i.current&&(i.current.style.cursor="grab",i.current.style.userSelect="")},[]),{notes:N,reminders:x,isLoading:D,isError:C}=Se({year:t,month:s}),S=n.useMemo(()=>{const r=f(),d=`${r.year()}-${r.month()+1}-${r.date()}`,m=new Map;for(const o of N){const y=l==="create"?f(Number(o.createdAt)):f(Number(o.updatedAt)),p=`${y.year()}-${y.month()+1}-${y.date()}`,j=m.get(p)||[];j.push(o),m.set(p,j)}const I=new Map;for(const o of x){const y=f(Number(o.reminderDate)),p=`${y.year()}-${y.month()+1}-${y.date()}`,j=I.get(p)||[];j.push(o),I.set(p,j)}const W=new Date(t,s-1,1),X=new Date(t,s,0),O=W.getDay(),L=X.getDate(),E=[],F=s===1?12:s-1,_=s===1?t-1:t,J=new Date(_,F,0).getDate();for(let o=O-1;o>=0;o--)E.push({day:J-o,isCurrentMonth:!1,year:_,month:F});for(let o=1;o<=L;o++)E.push({day:o,isCurrentMonth:!0,year:t,month:s});const V=(O+L)%7,G=V===0?0:7-V,ee=s===12?1:s+1,te=s===12?t+1:t;for(let o=1;o<=G;o++)E.push({day:o,isCurrentMonth:!1,year:te,month:ee});return E.map((o,y)=>{const p=`${o.year}-${o.month}-${o.day}`,j=f(`${o.year}-${String(o.month).padStart(2,"0")}-${String(o.day).padStart(2,"0")}`);return{key:p,year:o.year,month:o.month,day:o.day,isCurrentMonth:o.isCurrentMonth,isSunday:y%7===0,isToday:p===d,isPast:j.isBefore(r,"day"),notes:m.get(p)||$e,reminders:I.get(p)||ke}})},[t,s,N,x,l]),A=()=>{const r=s===1?12:s-1,d=s===1?t-1:t;a({search:m=>({...m,month:r,year:d})})},w=()=>{const r=s===12?1:s+1,d=s===12?t+1:t;a({search:m=>({...m,month:r,year:d})})},$=()=>{a({search:r=>({...r,month:f().month()+1,year:f().year()})})},k=r=>{r&&a({search:d=>({...d,type:r})})};return e.jsx(me,{title:"Calendar",variant:"none",children:C?e.jsx(ye,{children:"Failed to load calendar data. Please try again later."}):e.jsxs("div",{className:"surface-base",children:[e.jsx("div",{className:"border-b border-border-subtle/80 px-4 py-4 sm:px-5",children:e.jsx(De,{month:s,year:t,type:l,onPrevMonth:A,onNextMonth:w,onToday:$,onTypeChange:k})}),e.jsx("div",{ref:i,className:"cursor-grab overflow-x-auto px-4 pb-4 pt-3 sm:px-5",onMouseDown:g,onMouseMove:v,onMouseUp:M,onMouseLeave:M,children:e.jsxs("div",{className:"min-w-[1260px]",children:[e.jsx("div",{className:"mb-2.5 grid grid-cols-7 gap-1.5",children:Ae.map((r,d)=>e.jsx(b,{as:"div",variant:"label",weight:"semibold",tracking:"wider",transform:"uppercase",className:`py-2 text-center ${d===0?"text-fg-weekend":"text-fg-tertiary"}`,children:r},r))}),D?e.jsx("div",{className:"grid grid-cols-7 gap-1.5",children:Array.from({length:35}).map((r,d)=>e.jsx(ue,{height:180},d))}):e.jsx("div",{className:"grid grid-cols-7 gap-1.5",children:S.map(r=>e.jsx(Ne,{year:r.year,month:r.month,day:r.day,isCurrentMonth:r.isCurrentMonth,isSunday:r.isSunday,isToday:r.isToday,isPast:r.isPast,notes:r.notes,reminders:r.reminders,type:l},r.key))})]})})]})})}export{Le as default};
@@ -1 +0,0 @@
1
- import{j as t}from"./note-vendor-BofYbzmZ.js";import{a as i,F as _}from"./graph-vendor-CUxe67Lr.js";import{Q as U,P as C,n as Y,i as G,o as J,r as X,t as ee,v as ne,q as te,N as re,E as oe,T as N,w as se}from"./index-Ba2XPRI8.js";import"./note-core-BCgMq5QA.js";const ae=s=>{let a=0;for(let r=0;r<s.length;r++)a+=s.charCodeAt(r);return a},ie={background:"#f4f6f8",nodeHub:"#2c2f36",nodeSelected:"#111318",nodeConnected:"#636b76",nodeDefault:["#d6dbe1","#c8ced6","#b7bec7","#a7afb9"],nodeDimmed:["rgba(214,219,225,0.28)","rgba(200,206,214,0.24)","rgba(183,190,199,0.24)","rgba(167,175,185,0.2)"],nodeHubDimmed:"rgba(44,47,54,0.16)",nodeStroke:"#eef1f4",nodeSelectedStroke:"#a6b0bc",labelBackground:"rgba(246,248,250,0.92)",labelText:"#222831",labelFontFamily:"Pretendard Variable, Pretendard, system-ui, sans-serif",linkIdle:"rgba(99, 107, 117, 0.34)",linkConnected:"#68717c",linkDimmed:"rgba(127, 136, 146, 0.12)",legendHub:"#2c2f36"},le={background:"#121316",nodeHub:"#d6dce3",nodeSelected:"#eef1f5",nodeConnected:"#9099a4",nodeDefault:["#343a43","#2d333c","#262c35","#20262f"],nodeDimmed:["rgba(52,58,67,0.28)","rgba(45,51,60,0.24)","rgba(38,44,53,0.22)","rgba(32,38,47,0.2)"],nodeHubDimmed:"rgba(214,220,227,0.16)",nodeStroke:"#171c23",nodeSelectedStroke:"#7f8a97",labelBackground:"rgba(16,18,22,0.9)",labelText:"#eef2f6",labelFontFamily:"Pretendard Variable, Pretendard, system-ui, sans-serif",linkIdle:"rgba(118, 127, 138, 0.42)",linkConnected:"#a2abb6",linkDimmed:"rgba(118, 127, 138, 0.1)",legendHub:"#d6dce3"};function D(s){return s==="dark"?le:ie}function de(s,a){const r=D(s),{connections:g,colorIndex:y,selectedNodeId:d,nodeId:b,isConnected:c}=a,h=d===b;return d!==null&&!h&&!c?g>3?r.nodeHubDimmed:r.nodeDimmed[y%r.nodeDimmed.length]:h?r.nodeSelected:c?r.nodeConnected:g>3?r.nodeHub:r.nodeDefault[y%r.nodeDefault.length]}function ce(s,a){const r=D(s);return a.selectedNodeId!==null&&!a.isConnected?r.linkDimmed:a.isConnected?r.linkConnected:r.linkIdle}function ue(s,a){const r=D(s);return`${a.emphasize?"700":"400"} ${a.fontSize}px ${r.labelFontFamily}`}function z(s){return s<=1?3.5:s<=3?4.5:s<=6?5.5:Math.min(7,5.5+Math.sqrt(s)*.5)}const fe=t.jsx(C,{title:"Knowledge Graph",description:t.jsx(G,{width:184,height:16,className:"rounded-full"}),children:t.jsx("div",{className:"flex h-[600px] items-center justify-center",children:t.jsx(G,{width:"100%",height:"100%"})})});function he(){const s=J(),a=i.useRef(null),r=i.useRef(null),[g,y]=i.useState({width:800,height:600}),[d,b]=i.useState(null),{theme:c}=X(e=>e),h=D(c),v=i.useRef(h);v.current=h;const{data:w}=ee({queryKey:te.notes.graph(),queryFn:async()=>{const e=await ne();if(e.type==="error")throw e;return e.noteGraph}}),l=i.useMemo(()=>{if(w.nodes.length===0)return null;const e=w.nodes.filter(o=>o.connections>0);if(e.length===0)return null;const n=new Set(e.map(o=>o.id));return{nodes:e,links:w.links.filter(o=>n.has(o.source)&&n.has(o.target))}},[w]);i.useEffect(()=>{if(!l)return;const e=()=>{if(!a.current)return;const n=a.current.getBoundingClientRect();y({width:n.width,height:Math.max(600,window.innerHeight-150)})};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[l]),i.useEffect(()=>{if(!l||!r.current)return;const e=window.setTimeout(()=>{r.current?.zoomToFit(400,50)},500);return()=>window.clearTimeout(e)},[l]);const R=i.useRef(d);R.current=d;const B=i.useCallback(e=>{if(R.current===e.id){s({to:re,params:{id:e.id}});return}b(e.id)},[s]),L=i.useCallback(()=>{b(null)},[]),K=i.useCallback(e=>{a.current&&(a.current.style.cursor=e?"pointer":"default")},[]),I=i.useRef(!1),q=i.useCallback(()=>{I.current||(I.current=!0,r.current?.enableZoomInteraction(!1))},[]),A=i.useCallback(()=>{I.current=!1,r.current?.enableZoomInteraction(!0)},[]),E=i.useRef(new Map),O=i.useMemo(()=>{const e=new Map;if(l)for(const n of l.links)e.has(n.source)||e.set(n.source,new Set),e.has(n.target)||e.set(n.target,new Set),e.get(n.source)?.add(n.target),e.get(n.target)?.add(n.source);return e},[l]);E.current=O;const Z=i.useCallback((e,n,o)=>{const u=v.current,f=d,p=E.current,m=z(e.connections),x=e.x||0,S=e.y||0,k=f===e.id,T=f?p.get(f)?.has(e.id)??!1:!1,Q=f!==null&&!k&&!T,V=ae(e.id);if(n.beginPath(),n.arc(x,S,m,0,Math.PI*2),n.fillStyle=de(c,{connections:e.connections,colorIndex:V,selectedNodeId:f,nodeId:e.id,isConnected:T}),n.fill(),Q)return;n.strokeStyle=u.nodeStroke,n.lineWidth=(k?2:1)/o,n.stroke(),k&&(n.beginPath(),n.arc(x,S,m+2/o,0,Math.PI*2),n.strokeStyle=u.nodeSelectedStroke,n.lineWidth=1.5/o,n.stroke());const W=T&&e.connections>=4;if(k||W||o>2.5){const H=e.title||"Untitled",P=Math.max(10/o,2.5);n.font=ue(c,{fontSize:P,emphasize:k}),n.textAlign="center",n.textBaseline="top";const M=n.measureText(H).width,j=2/o,F=S+m+3/o;n.fillStyle=u.labelBackground,n.fillRect(x-M/2-j,F,M+j*2,P+j*2),n.fillStyle=u.labelText,n.fillText(H,x,F+j)}},[d,c]),$=i.useCallback((e,n,o)=>{const u=d,f=e.source,p=e.target,m=u?f.id===u||p.id===u:!1;n.beginPath(),n.moveTo(f.x||0,f.y||0),n.lineTo(p.x||0,p.y||0),n.strokeStyle=ce(c,{selectedNodeId:u,isConnected:m}),n.lineWidth=m?2/o:.5/o,n.stroke()},[d,c]);return l?t.jsx(C,{title:"Knowledge Graph",description:`${l.nodes.length} linked notes, ${l.links.length} connections`,children:t.jsxs("div",{ref:a,className:"surface-base graph-canvas relative overflow-hidden",style:{"--graph-bg":h.background},children:[d&&(()=>{const e=l.nodes.find(n=>n.id===d);return e?t.jsxs("div",{className:"surface-floating absolute top-3 left-3 z-10 flex items-center gap-2 px-3 py-2",children:[t.jsx(N,{as:"span",variant:"meta",weight:"semibold",truncate:!0,className:"max-w-48",children:e.title}),t.jsxs(N,{as:"span",variant:"label",tone:"tertiary",children:[e.connections," links"]}),t.jsx("button",{type:"button",onClick:()=>b(null),className:"focus-ring-soft ml-1 flex h-6 w-6 cursor-pointer items-center justify-center rounded-[8px] text-fg-tertiary transition-colors hover:bg-hover-subtle hover:text-fg-default","aria-label":"Deselect node",children:t.jsx(se,{className:"h-3.5 w-3.5"})})]}):null})(),t.jsxs("div",{className:"surface-floating absolute top-3 right-3 z-10 flex flex-col gap-1.5 px-3 py-2.5",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"legend-dot h-2.5 w-2.5 shrink-0 rounded-full",style:{"--legend-color":h.legendHub}}),t.jsx(N,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:"Hub notes (4+ connections)"})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"legend-dot h-2.5 w-2.5 shrink-0 rounded-full",style:{"--legend-color":h.nodeConnected}}),t.jsx(N,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:"Connected notes"})]})]}),t.jsx(_,{ref:r,graphData:l,width:g.width,height:g.height,nodeId:"id",nodeLabel:"",nodeCanvasObject:Z,nodePointerAreaPaint:(e,n,o)=>{o.beginPath(),o.arc(e.x||0,e.y||0,Math.max(z(e.connections)+4,10),0,2*Math.PI),o.fillStyle=n,o.fill()},linkCanvasObject:$,linkCanvasObjectMode:()=>"replace",linkDirectionalParticles:0,onNodeClick:B,onNodeHover:K,onBackgroundClick:L,onNodeDrag:q,onNodeDragEnd:A,warmupTicks:30,cooldownTicks:80,d3AlphaDecay:.05,d3VelocityDecay:.3,enableZoomInteraction:!0,enablePanInteraction:!0,minZoom:.3,maxZoom:5})]})}):t.jsx(C,{title:"Knowledge Graph",description:"0 linked notes, 0 connections",children:t.jsx(oe,{title:"No constellations yet",description:"Link your notes together and watch your own starry sky unfold"})})}function ke(){return t.jsx(U,{fallback:fe,errorTitle:"Failed to load graph",errorDescription:"Retry loading your linked note constellation",renderError:({error:s,retry:a})=>t.jsx(C,{title:"Knowledge Graph",children:t.jsx(Y,{title:"Failed to load graph",description:"Retry loading your linked note constellation",error:s,onRetry:a})}),children:t.jsx(he,{})})}export{ke as default};
@@ -1 +0,0 @@
1
- ._Reference_bpj91_1{display:inline-flex;align-items:center;cursor:pointer;font-size:.75rem;font-weight:600;padding:2px 10px;border-radius:9999px;background:color-mix(in srgb,var(--elevated) 72%,var(--hover-subtle));border:1px solid var(--border-subtle);color:var(--fg-secondary);transition:background-color .15s ease,border-color .15s ease,color .15s ease}._Reference_bpj91_1:hover{background:var(--elevated);border-color:var(--border-secondary);color:var(--fg-default)}._Reference_bpj91_1:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}html.dark ._Reference_bpj91_1{background:color-mix(in srgb,var(--elevated) 82%,var(--hover-subtle))}._Tag_8xu23_1{display:inline-flex;align-items:center;cursor:pointer;font-size:.75rem;font-weight:600;padding:2px 10px;border-radius:9999px;background:var(--emphasis);border:1px solid var(--border-secondary);color:var(--fg-secondary);transition:background-color .15s ease,border-color .15s ease,color .15s ease}._Tag_8xu23_1:hover{background:var(--hover-subtle);border-color:var(--border-secondary);color:var(--fg-default)}._Tag_8xu23_1:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}html.dark ._Tag_8xu23_1{background:var(--emphasis)}
@@ -1 +0,0 @@
1
- import{j as e,U as Q,y as me,v as ue,i as $,k as he,X as pe,F as fe}from"./note-vendor-BofYbzmZ.js";import{p as G,T as u,c as R,t as W,I as xe,q as M,M as j,B as E,J,K as ge,u as ye,O as be,U as ve,V as je,d as w,W as X,o as ee,N as Y,G as Ne,X as te,Y as we,z as Ce,Z as Me,r as ke,_ as Z,$ as Re,a0 as Ae,a1 as Ee,a2 as I,g as Se,a3 as Te,k as He,D as ae,m as se,Q as O,P as z,n as P,j as De,i as H,a4 as Le,a5 as Ve,a6 as Ze,a7 as Ie,a8 as Fe,L as Oe,a9 as _}from"./index-Ba2XPRI8.js";import{a}from"./graph-vendor-CUxe67Lr.js";import{u as Pe}from"./image.api-0mMkElZk.js";import{V as $e,a2 as Ye,a3 as ze,A as Ue}from"./note-core-BCgMq5QA.js";import{M as ne,n as Be}from"./ModalActionRow-DyOb58KJ.js";import{u as _e,R as qe}from"./useReminderMutate-tNMwwRnx.js";const Ke=new Map([["bold",a.createElement(a.Fragment,null,a.createElement("path",{d:"M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Z"}))],["duotone",a.createElement(a.Fragment,null,a.createElement("path",{d:"M208,88H152V32Z",opacity:"0.2"}),a.createElement("path",{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z"}))],["fill",a.createElement(a.Fragment,null,a.createElement("path",{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM152,88V44l44,44Z"}))],["light",a.createElement(a.Fragment,null,a.createElement("path",{d:"M212.24,83.76l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V88A6,6,0,0,0,212.24,83.76ZM158,46.48,193.52,82H158ZM200,218H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50V216A2,2,0,0,1,200,218Z"}))],["regular",a.createElement(a.Fragment,null,a.createElement("path",{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z"}))],["thin",a.createElement(a.Fragment,null,a.createElement("path",{d:"M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM200,220H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52V216A4,4,0,0,1,200,220Z"}))]]),Qe=new Map([["bold",a.createElement(a.Fragment,null,a.createElement("path",{d:"M87.5,151.52l64-64a12,12,0,0,1,17,17l-64,64a12,12,0,0,1-17-17Zm131-114a60.08,60.08,0,0,0-84.87,0L103.51,67.61a12,12,0,0,0,17,17l30.07-30.06a36,36,0,0,1,50.93,50.92L171.4,135.52a12,12,0,1,0,17,17l30.08-30.06A60.09,60.09,0,0,0,218.45,37.55ZM135.52,171.4l-30.07,30.08a36,36,0,0,1-50.92-50.93l30.06-30.07a12,12,0,0,0-17-17L37.55,133.58a60,60,0,0,0,84.88,84.87l30.06-30.07a12,12,0,0,0-17-17Z"}))],["duotone",a.createElement(a.Fragment,null,a.createElement("path",{d:"M209.94,113.94l-96,96a48,48,0,0,1-67.88-67.88l96-96a48,48,0,0,1,67.88,67.88Z",opacity:"0.2"}),a.createElement("path",{d:"M165.66,90.34a8,8,0,0,1,0,11.32l-64,64a8,8,0,0,1-11.32-11.32l64-64A8,8,0,0,1,165.66,90.34ZM215.6,40.4a56,56,0,0,0-79.2,0L106.34,70.45a8,8,0,0,0,11.32,11.32l30.06-30a40,40,0,0,1,56.57,56.56l-30.07,30.06a8,8,0,0,0,11.31,11.32L215.6,119.6a56,56,0,0,0,0-79.2ZM138.34,174.22l-30.06,30.06a40,40,0,1,1-56.56-56.57l30.05-30.05a8,8,0,0,0-11.32-11.32L40.4,136.4a56,56,0,0,0,79.2,79.2l30.06-30.07a8,8,0,0,0-11.32-11.31Z"}))],["fill",a.createElement(a.Fragment,null,a.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM144.56,173.66l-21.45,21.45a44,44,0,0,1-62.22-62.22l21.45-21.46a8,8,0,0,1,11.32,11.31L72.2,144.2a28,28,0,0,0,39.6,39.6l21.45-21.46a8,8,0,0,1,11.31,11.32Zm-34.9-16a8,8,0,0,1-11.32-11.32l48-48a8,8,0,0,1,11.32,11.32Zm85.45-34.55-21.45,21.45a8,8,0,0,1-11.32-11.31L183.8,111.8a28,28,0,0,0-39.6-39.6L122.74,93.66a8,8,0,0,1-11.31-11.32l21.46-21.45a44,44,0,0,1,62.22,62.22Z"}))],["light",a.createElement(a.Fragment,null,a.createElement("path",{d:"M164.25,91.75a6,6,0,0,1,0,8.49l-64,64a6,6,0,0,1-8.49-8.48l64-64A6,6,0,0,1,164.25,91.75ZM214.2,41.8a54.07,54.07,0,0,0-76.38,0L107.75,71.85a6,6,0,0,0,8.49,8.49l30.07-30.06a42,42,0,0,1,59.41,59.41l-30.08,30.07a6,6,0,1,0,8.49,8.49l30.07-30.07A54,54,0,0,0,214.2,41.8ZM139.76,175.64l-30.07,30.08a42,42,0,0,1-59.41-59.41l30.06-30.07a6,6,0,0,0-8.49-8.49l-30,30.07a54,54,0,0,0,76.38,76.39l30.07-30.08a6,6,0,0,0-8.49-8.49Z"}))],["regular",a.createElement(a.Fragment,null,a.createElement("path",{d:"M165.66,90.34a8,8,0,0,1,0,11.32l-64,64a8,8,0,0,1-11.32-11.32l64-64A8,8,0,0,1,165.66,90.34ZM215.6,40.4a56,56,0,0,0-79.2,0L106.34,70.45a8,8,0,0,0,11.32,11.32l30.06-30a40,40,0,0,1,56.57,56.56l-30.07,30.06a8,8,0,0,0,11.31,11.32L215.6,119.6a56,56,0,0,0,0-79.2ZM138.34,174.22l-30.06,30.06a40,40,0,1,1-56.56-56.57l30.05-30.05a8,8,0,0,0-11.32-11.32L40.4,136.4a56,56,0,0,0,79.2,79.2l30.06-30.07a8,8,0,0,0-11.32-11.31Z"}))],["thin",a.createElement(a.Fragment,null,a.createElement("path",{d:"M162.84,93.16a4,4,0,0,1,0,5.66l-64,64a4,4,0,0,1-5.66-5.66l64-64A4,4,0,0,1,162.84,93.16Zm49.95-49.95a52.07,52.07,0,0,0-73.56,0L109.17,73.27a4,4,0,0,0,5.65,5.66l30.07-30.06a44,44,0,0,1,62.24,62.24l-30.07,30.06a4,4,0,0,0,5.66,5.66l30.07-30.06A52.07,52.07,0,0,0,212.79,43.21ZM141.17,177.06l-30.06,30.07a44,44,0,0,1-62.24-62.24l30.06-30.06a4,4,0,0,0-5.66-5.66L43.21,139.23a52,52,0,0,0,73.56,73.56l30.06-30.07a4,4,0,1,0-5.66-5.66Z"}))]]),re=a.forwardRef((t,n)=>a.createElement(G,{ref:n,...t,weights:Ke}));re.displayName="FileIcon";const Ge=re,oe=a.forwardRef((t,n)=>a.createElement(G,{ref:n,...t,weights:Qe}));oe.displayName="LinkSimpleIcon";const We=oe;function U({icon:t,title:n,className:o}){return e.jsxs("div",{className:R("flex items-center gap-2",o),children:[e.jsx("div",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center text-current",children:t}),e.jsx(u,{as:"span",variant:"label",weight:"semibold",className:"text-current",children:n})]})}function Je({title:t,description:n,selected:o=!1,onClick:i,children:r}){return e.jsxs("button",{type:"button","aria-pressed":o,className:`focus-ring-soft flex w-full items-start justify-between gap-3 p-3 text-left transition-colors sm:p-4 ${o?"surface-floating bg-elevated":"rounded-[14px] border border-border-subtle bg-transparent hover:border-border-secondary hover:bg-hover-subtle"}`,onClick:i,children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx(u,{as:"div",variant:"body",weight:"semibold",tone:o?"default":"secondary",children:t}),e.jsx(u,{as:"div",variant:"meta",weight:"medium",tone:o?"secondary":"tertiary",className:"mt-1",children:n})]}),r?e.jsx("div",{className:"shrink-0",children:r}):null]})}const Xe=t=>{const{data:n}=W({queryKey:M.notes.backReferences(t.noteId),async queryFn(){const o=await xe(t.noteId);if(o.type==="error")throw o;return o.backReferences}});return t.render(n)},et=[{value:"narrow",label:"Narrow",description:"Optimized for reading long-form content"},{value:"wide",label:"Wide",description:"Balanced width suitable for most content"},{value:"full",label:"Full Width",description:"Maximize screen space utilization"}];function tt({isOpen:t,onClose:n,onSave:o,currentLayout:i="wide"}){const[r,l]=a.useState(i);a.useEffect(()=>{t&&l(i)},[t,i]);const s=()=>{o(r),n()};return e.jsxs(j,{isOpen:t,onClose:n,variant:"compact",children:[e.jsx(j.Header,{title:"Layout Settings",onClose:n}),e.jsx(j.Body,{children:e.jsx("div",{className:"flex flex-col gap-3 sm:gap-4",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(u,{as:"div",variant:"body",weight:"semibold",tone:"secondary",children:"Note layout"}),e.jsx("div",{className:"flex flex-col gap-2",children:et.map(c=>e.jsx(Je,{title:c.label,description:c.description,selected:r===c.value,onClick:()=>l(c.value)},c.value))})]})})}),e.jsx(j.Footer,{children:e.jsxs(ne,{children:[e.jsx(E,{variant:"ghost",size:"sm",onClick:n,children:"Cancel"}),e.jsx(E,{variant:"primary",size:"sm",onClick:s,children:"Apply"})]})})]})}const at=(t,n)=>t||(n==="mobile"?"Mobile browser":n==="mcp"?"MCP":"Web browser");function st({isOpen:t,noteId:n,onClose:o,onRestored:i}){const r=J(),l=ge(),s=ye({queryKey:M.notes.snapshots(n),queryFn:async()=>{const m=await be(n);if(m.type==="error")throw m;return m.noteSnapshots},enabled:t}),c=ve({mutationFn:je,onSuccess:async m=>{if(m.type==="error"){r(m.errors[0].message);return}await Promise.all([l.invalidateQueries({queryKey:M.notes.detail(n),exact:!0}),l.invalidateQueries({queryKey:M.notes.listAll(),exact:!1}),l.invalidateQueries({queryKey:M.notes.tagListAll(),exact:!1}),l.invalidateQueries({queryKey:M.notes.pinned(),exact:!0}),l.invalidateQueries({queryKey:M.notes.backReferences(n),exact:!0}),l.invalidateQueries({queryKey:M.notes.snapshots(n),exact:!1})]),r("Previous version restored."),i?.(m.restoreNoteSnapshot),o()}});return e.jsxs(j,{isOpen:t,onClose:o,variant:"inspect",children:[e.jsx(j.Header,{title:"Restore Previous Version",onClose:o}),e.jsx(j.Body,{children:e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx(u,{as:"p",variant:"meta",tone:"secondary",children:"Choose a previous snapshot to restore this note back to that state."}),s.isLoading&&e.jsx(u,{as:"div",variant:"meta",tone:"secondary",children:"Loading previous versions..."}),!s.isLoading&&s.data?.length===0&&e.jsx(u,{as:"div",variant:"meta",tone:"secondary",className:"rounded-[14px] border border-border-subtle bg-hover-subtle/50 px-4 py-3",children:"A recovery snapshot will appear after the first edit in a session and older ones are cleaned up automatically."}),!s.isLoading&&s.data&&s.data.length>0&&e.jsx("div",{className:"flex flex-col gap-2",children:s.data.map(m=>e.jsx("div",{className:"surface-base p-3",children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs(u,{as:"p",variant:"body",weight:"semibold",children:["Before ",at(m.meta.label,m.meta.entrypoint)," edit"]}),e.jsx(u,{as:"p",variant:"meta",truncate:!0,tone:"secondary",children:m.title}),e.jsx(u,{as:"p",variant:"label",tone:"tertiary",children:w(m.createdAt).format("YYYY-MM-DD HH:mm:ss")})]}),e.jsx(E,{size:"sm",isLoading:c.isPending,onClick:()=>c.mutate(m.id),children:"Restore"})]})},m.id))})]})})]})}const nt="_Reference_bpj91_1",rt={Reference:nt},ot=X.bind(rt),it={type:"reference",propSchema:{id:{default:""},title:{default:"Unknown"}},content:"none"};function lt(t){const n=ee(),o=()=>{t.editor.blur(),n({to:Y,params:{id:t.inlineContent.props.id}})},i=r=>{r.preventDefault(),r.stopPropagation()};return e.jsx("span",{role:"link",tabIndex:0,contentEditable:!1,className:ot("Reference"),onMouseDown:i,onClick:r=>{i(r),o()},onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(i(r),o())},children:e.jsxs("span",{children:["[",t.inlineContent.props.title,"]"]})})}const ct=Q(it,{render:t=>e.jsx(lt,{...t})}),dt="_Tag_8xu23_1",mt={Tag:dt},ut=X.bind(mt),ht={type:"tag",propSchema:{id:{default:""},tag:{default:"@Unknown"}},content:"none"};function pt(t){const n=ee(),o=()=>{t.editor.blur(),n({to:Ne,params:{id:t.inlineContent.props.id},search:{page:1}})},i=r=>{r.preventDefault(),r.stopPropagation()};return e.jsx("span",{role:"link",tabIndex:0,contentEditable:!1,className:ut("Tag"),onMouseDown:i,onClick:r=>{i(r),o()},onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(i(r),o())},children:e.jsx("span",{children:t.inlineContent.props.tag})})}const ft=Q(ht,{render:t=>e.jsx(pt,{...t})}),xt=()=>{const t=ue(),[n,o]=a.useState([]),i={1:"pl-3",2:"pl-[26px]",3:"pl-[40px]",4:"pl-[54px]",5:"pl-[68px]",6:"pl-[82px]"};a.useEffect(()=>{const s=()=>{const m=t.document,C=[],y=N=>{for(const g of N){if(g.type==="heading"){const p=g,S=p.props.level||1,T=p.content?.map(A=>A.text||"").join("")||"";T.trim()&&C.push({id:g.id,level:S,text:T})}g.children&&Array.isArray(g.children)&&y(g.children)}};y(m),o(C)};s();const c=t.onChange?.(s);return()=>{c&&c()}},[t]);const r=s=>{t.setTextCursorPosition(s);const c=document.querySelector(`[data-id="${s}"]`);c&&c.scrollIntoView({behavior:"smooth",block:"center"})},l=e.jsx(U,{icon:e.jsx(te,{className:"h-3.5 w-3.5"}),title:"Table of Contents",className:"text-fg-tertiary"});return n.length===0?e.jsxs("div",{className:"surface-base w-full p-4",children:[l,e.jsx(u,{as:"p",variant:"meta",tone:"secondary",className:"mt-2",children:"Add headings to your document to generate a table of contents"})]}):e.jsxs("div",{className:"surface-base w-full p-4",children:[e.jsx("div",{className:"mb-2",children:l}),e.jsx("nav",{className:"space-y-0.5",children:n.map(s=>{const c=s.level===1;return e.jsxs("button",{type:"button",onClick:()=>r(s.id),className:R("focus-ring-soft","flex","w-full","items-center","gap-2","rounded-[10px]","px-2.5","py-1.5",i[s.level]??"pl-2.5","text-left","transition-colors","hover:bg-hover-subtle",c?"text-fg-default":"text-fg-secondary"),children:[e.jsxs(u,{as:"span",variant:"label",weight:"medium",tone:"tertiary",className:"min-w-[1.5rem]",children:["H",s.level]}),e.jsx(u,{as:"span",variant:"body",weight:c?"semibold":"medium",className:"line-clamp-2 text-current",children:s.text})]},s.id)})})]})},gt=me({type:"tableOfContents",propSchema:{},content:"none"},{render:()=>e.jsx(xt,{})})(),yt=$e.create({inlineContentSpecs:{...ze,tag:ft,reference:ct},blockSpecs:{...Ye,tableOfContents:gt}}),bt=({editor:t})=>e.jsx($,{triggerCharacter:"/",getItems:async n=>Ue([...he(t).filter(o=>o.title!=="Audio"&&o.title!=="Video"&&o.title!=="File"),{title:"Table of Contents",subtext:"Insert a table of contents based on headings",onItemClick:()=>{t.insertBlocks([{type:"tableOfContents"}],t.getTextCursorPosition().block,"after")},aliases:["toc","table of contents","contents","outline","index"],group:"Other",icon:e.jsx(te,{})}],n)}),vt=({onClick:t})=>e.jsx($,{triggerCharacter:"[",getItems:async n=>{const o=await we({query:n,limit:5});if(o.type==="error")return[];const{notes:i}=o.allNotes;return i.map(r=>({title:r.title,onItemClick:()=>t({type:"reference",props:{id:r.id,title:r.title}})}))}}),jt=({onClick:t})=>e.jsx($,{triggerCharacter:"@",getItems:async n=>{const o=await Ce({query:n,limit:5});if(o.type==="error")return[];const{tags:i}=o.allTags,r=i.some(s=>s.name!==`@${n}`),l=[{title:"Add a new tag",onItemClick:async()=>{const s=await Me({name:"@"+n});if(s.type==="error")return;const{id:c,name:m}=s.createTag;t({type:"tag",props:{id:c,tag:m}})}}];return i.length===0?l:i.map(s=>({title:s.name,onItemClick:()=>t({type:"tag",props:{id:s.id,tag:s.name}})})).concat(n&&r?l:[])}});async function Nt(t){return new Promise((n,o)=>{const i=new FileReader;i.readAsDataURL(t),i.onload=()=>n(i.result),i.onerror=r=>o(r)})}const wt=a.forwardRef(({content:t,editable:n,onChange:o},i)=>{const{theme:r}=ke(s=>s),l=pe({schema:yt,initialContent:t&&JSON.parse(t)||void 0,uploadFile:async s=>Pe({base64:await Nt(s)})},[]);return a.useImperativeHandle(i,()=>({getContent:()=>JSON.stringify(l.document)})),e.jsxs(fe,{slashMenu:!1,theme:r,editor:l,editable:n,onChange:o,children:[e.jsx(bt,{editor:l}),e.jsx(vt,{onClick:s=>{l.insertInlineContent([s," "])}}),e.jsx(jt,{onClick:s=>{l.insertInlineContent([s," "])}})]})}),q={low:{active:"border-border-secondary bg-elevated text-fg-default",inactive:"border-transparent bg-transparent text-fg-muted hover:bg-hover-subtle"},medium:{active:"border-border-secondary bg-elevated text-fg-default",inactive:"border-transparent bg-transparent text-fg-muted hover:bg-hover-subtle"},high:{active:"border-border-secondary bg-elevated text-fg-default",inactive:"border-transparent bg-transparent text-fg-muted hover:bg-hover-subtle"}};function Ct({isOpen:t,onClose:n,onSave:o,reminder:i,mode:r}){const[l,s]=a.useState(new Date),[c,m]=a.useState("medium"),[C,y]=a.useState("");a.useEffect(()=>{t&&r==="edit"&&i?(s(new Date(Number(i.reminderDate))),m(i.priority||"medium"),y(i.content||"")):t&&r==="create"&&(s(new Date),m("medium"),y(""))},[t,r,i]);const N=()=>{o(l,c,C||void 0),n()},g=p=>c===p?q[p].active:q[p].inactive;return e.jsxs(j,{isOpen:t,onClose:n,variant:"form",children:[e.jsx(j.Header,{title:r==="create"?"Create Reminder":"Edit Reminder",onClose:n}),e.jsx(j.Body,{children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(Z,{children:"Date & Time"}),e.jsx(Re,{type:"datetime-local",size:"sm",value:w(l).format("YYYY-MM-DDTHH:mm"),onChange:p=>s(new Date(p.target.value))})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(Z,{children:"Content"}),e.jsx(Ae,{size:"sm",placeholder:"Enter reminder content (optional)",value:C,onChange:p=>y(p.target.value)})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(Z,{children:"Priority"}),e.jsxs(Ee,{type:"single",value:c,onValueChange:p=>p&&m(p),className:"gap-1.5 border-none rounded-[14px] bg-muted/70 p-1 sm:gap-2",children:[e.jsx(I,{value:"low",className:`flex-1 rounded-[10px] border ${g("low")}`,children:e.jsx(u,{as:"span",weight:"medium",className:"text-current",children:"Low"})}),e.jsx(I,{value:"medium",className:`flex-1 rounded-[10px] border ${g("medium")}`,children:e.jsx(u,{as:"span",weight:"medium",className:"text-current",children:"Medium"})}),e.jsx(I,{value:"high",className:`flex-1 rounded-[10px] border ${g("high")}`,children:e.jsx(u,{as:"span",weight:"medium",className:"text-current",children:"High"})})]})]})]})}),e.jsx(j.Footer,{children:e.jsxs(ne,{children:[e.jsx(E,{variant:"ghost",size:"sm",onClick:n,children:"Cancel"}),e.jsx(E,{variant:"primary",size:"sm",onClick:N,children:r==="create"?"Create":"Save"})]})})]})}function Mt({noteId:t}){const[n,o]=a.useState(!1),[i,r]=a.useState(!1),[l,s]=a.useState("create"),[c,m]=a.useState(void 0),{onCreate:C,onUpdate:y,onDelete:N}=_e(),g=()=>{s("create"),m(void 0),r(!0)},p=f=>{s("edit"),m(f),r(!0)},S=(f,x,d)=>{l==="create"?C(t,f,x,()=>{r(!1)},d):l==="edit"&&c&&y(c.id,t,{reminderDate:f,priority:x,content:d},()=>{r(!1)})},T=f=>{y(f.id,t,{completed:!f.completed})},A=f=>{const x=w(Number(f)),d=w();return x.isSame(d,"day")?`Today at ${x.format("HH:mm")}`:x.isSame(d.add(1,"day"),"day")?`Tomorrow at ${x.format("HH:mm")}`:x.format("YYYY-MM-DD HH:mm")},L=f=>{const x=w(Number(f)),d=w(),v=x.diff(d,"hour");return v<=6?"high":v<=24?"medium":"low"},D=f=>{const x=w(Number(f)),d=w(),v=x.diff(d,"hour"),k=x.diff(d,"minute")%60;return v<0||k<0?"Overdue":v===0?`${k}m remaining`:`${v}h ${k}m remaining`};return e.jsxs("div",{className:"surface-base mb-5 p-4",children:[e.jsxs("div",{className:R("flex items-center justify-between",!n&&"mb-3"),children:[e.jsx("button",{type:"button",onClick:()=>o(!n),className:"focus-ring-soft flex items-center gap-2 rounded-[10px] px-2 py-1.5 text-fg-tertiary transition-colors hover:bg-hover-subtle hover:text-fg-default",children:e.jsx(U,{icon:n?e.jsx(Se,{size:12}):e.jsx(Te,{size:12}),title:"Reminders"})}),!n&&e.jsxs(E,{size:"sm",variant:"ghost",onClick:g,children:[e.jsx(Be,{className:"w-3 h-3"}),e.jsx(u,{as:"span",variant:"label",className:"hidden sm:inline",children:"Add"})]})]}),!n&&e.jsx(qe,{noteId:t,searchParams:{offset:0,limit:9999},render:({reminders:f,totalCount:x})=>e.jsx("div",{className:"flex flex-col gap-2",children:f.length===0?e.jsx(u,{as:"p",variant:"meta",tone:"secondary",className:"py-3 text-center",children:x===0?"No reminders yet":"All reminders complete"}):e.jsx("div",{className:"flex flex-col",children:f.map(d=>{const v=d.priority||L(d.reminderDate),k=D(d.reminderDate),V=k==="Overdue";return e.jsxs("div",{className:R("flex items-center gap-2.5 px-2 py-1.5"),children:[e.jsx(He,{checked:d.completed,onChange:()=>T(d),size:"sm"}),e.jsx(u,{as:"div",variant:"body",weight:"medium",className:R("truncate flex-1 min-w-0",d.completed&&"line-through opacity-40"),children:d.content||A(d.reminderDate)}),e.jsxs("div",{className:R("shrink-0 flex items-center gap-1",d.completed&&"opacity-40"),children:[d.content&&e.jsx(u,{as:"span",variant:"meta",tone:"secondary",children:A(d.reminderDate)}),!d.completed&&e.jsx(u,{as:"span",variant:"label",weight:"medium",tone:V||v==="high"?"error":"tertiary",className:R(d.content&&'before:content-["·"] before:mr-1'),children:k})]}),e.jsx(ae,{button:e.jsxs("button",{type:"button",className:"focus-ring-soft inline-flex h-8 w-8 items-center justify-center rounded-[10px] text-fg-secondary outline-none transition-colors hover:bg-hover-subtle hover:text-fg-default",children:[e.jsx(se,{size:16,className:"text-current"}),e.jsx("span",{className:"sr-only",children:"Reminder actions"})]}),items:[{name:"Edit",onClick:()=>p(d)},{name:"Delete",onClick:()=>N(d.id,t)}]})]},d.id)})})})}),e.jsx(Ct,{isOpen:i,onClose:()=>r(!1),onSave:S,reminder:c,mode:l})]})}const ie=De(Y),K=t=>w(Number(t)).format("YYYY-MM-DD HH:mm:ss"),F=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`,kt={narrow:"max-w-[640px]",wide:"max-w-[896px]",full:"max-w-full px-4"},Rt=e.jsx(z,{title:"Loading note",variant:"none",children:e.jsxs("main",{className:"mx-auto max-w-[896px]",children:[e.jsx(H,{className:"mb-8",height:"66px"}),e.jsx(H,{className:"ml-12 mb-8",height:"150px"}),e.jsx(H,{className:"mb-5",height:"80px"}),e.jsx(H,{height:"80px"})]})});function At({id:t}){const n=J(),o=ie.useNavigate(),i=a.useRef(null),r=a.useRef(null),l=a.useRef(F()),{data:s}=W({queryKey:M.notes.detail(t),queryFn:async()=>{const h=await Le(t);if(h.type==="error")throw h;return h.note},gcTime:0}),[c,m]=a.useState(s.title),[C,y]=a.useState(()=>K(s.updatedAt)),[N,g]=a.useState(s.pinned),[p,S]=a.useState(s.layout||"wide"),[T,A]=a.useState(!1),[L,D]=a.useState(!1),[f,x]=Ve(1e3);a.useEffect(()=>{m(s.title),g(s.pinned),S(s.layout||"wide"),y(K(s.updatedAt))},[s.layout,s.pinned,s.title,s.updatedAt]),a.useEffect(()=>{l.current=F()},[t]);const d=async({title:h="",content:b=""})=>{x(async()=>{const B=await _({id:t,title:h,content:b,editSessionId:l.current});if(B.type==="error"){n(B.errors[0].message);return}m(h),y(w().format("YYYY-MM-DD HH:mm:ss"))})},v=()=>{d({title:c,content:i.current?.getContent()})},k=h=>{m(h),d({title:h,content:i.current?.getContent()})},V=async h=>{const b=await _({id:t,layout:h,editSessionId:l.current});if(b.type==="error"){n(b.errors[0].message);return}S(h),n("Layout has been updated.")},{onCreate:le,onDelete:ce,onPinned:de}=Ze();return e.jsx(z,{title:c,variant:"none",children:e.jsxs("main",{className:R("mx-auto",kt[p]),children:[e.jsx("div",{className:"surface-floating sticky top-20 z-[1001] mb-7 px-5 pt-4 pb-3.5",children:e.jsxs("div",{className:"flex flex-col gap-3.5",children:[e.jsxs("div",{className:"flex items-start justify-between gap-5",children:[e.jsxs("div",{className:"min-w-0 flex-1 pt-0.5",children:[e.jsx(u,{as:"div",variant:"micro",weight:"semibold",tracking:"widest",transform:"uppercase",tone:"tertiary",className:"mb-1.5",children:"Thought in progress"}),e.jsx("input",{ref:r,placeholder:"Title",className:"text-heading sm:text-display w-full bg-transparent font-semibold leading-[1.25] tracking-[-0.02em] outline-none",type:"text",value:c,onChange:h=>k(h.target.value)})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[e.jsx(ae,{button:e.jsxs("button",{type:"button",className:"focus-ring-soft inline-flex h-9 w-9 items-center justify-center rounded-[12px] border border-transparent bg-transparent text-fg-tertiary outline-none transition-colors hover:border-border-subtle hover:bg-hover-subtle hover:text-fg-default",children:[e.jsx(se,{className:"h-5 w-5"}),e.jsx("span",{className:"sr-only",children:"Note actions"})]}),items:[{name:N?"Unpin":"Pin",onClick:()=>de(t,N,()=>{g(h=>!h)})},{name:"Change layout",onClick:()=>A(!0)},{type:"separator"},{name:"Clone this note",onClick:()=>le(r.current?.value||"untitled",i.current?.getContent()||"",p)},{name:"Restore previous version",onClick:()=>D(!0)},{type:"separator"},{name:"Delete",onClick:()=>ce(t,()=>{o({to:Ie,search:{page:1}})})}]}),e.jsx(E,{size:"sm",variant:"subtle",isLoading:f,onClick:v,children:"Save"})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1.5 border-t border-border-subtle/80 pt-3",children:[N&&e.jsxs(u,{as:"span",variant:"label",weight:"medium",tone:"secondary",className:"inline-flex items-center gap-1.5",children:[e.jsx(Fe,{className:"h-3 w-3",weight:"fill"}),"Pinned"]}),N&&e.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),e.jsxs(u,{as:"span",variant:"label",weight:"medium",tone:"secondary",children:["Last saved ",C]})]})]})}),e.jsx(wt,{ref:i,content:s.content,onChange:v},`${t}:${s.updatedAt}`),e.jsx(O,{fallback:e.jsx(H,{className:"mb-5",height:"80px"}),errorTitle:"Failed to load reminders",errorDescription:"Retry loading reminder details for this note.",renderError:({error:h,retry:b})=>e.jsx(P,{title:"Failed to load reminders",description:"Retry loading reminder details for this note.",error:h,onRetry:b,showBackAction:!1,showHomeAction:!1}),children:e.jsx(Mt,{noteId:t})}),e.jsx(O,{fallback:e.jsx(H,{height:"80px"}),errorTitle:"Failed to load back references",errorDescription:"Retry loading notes that link back here.",renderError:({error:h,retry:b})=>e.jsx(P,{title:"Failed to load back references",description:"Retry loading notes that link back here.",error:h,onRetry:b,showBackAction:!1,showHomeAction:!1}),children:e.jsx(Xe,{noteId:t,render:h=>h&&h.length>0&&e.jsxs("div",{className:"surface-base p-4",children:[e.jsx(U,{icon:e.jsx(We,{className:"h-3.5 w-3.5"}),title:"Back References",className:"mb-3 text-fg-tertiary"}),e.jsx("ul",{className:"flex flex-col",children:h.map(b=>e.jsx("li",{children:e.jsxs(Oe,{to:Y,params:{id:b.id},className:"flex items-center gap-2 rounded-[10px] px-2.5 py-1.5 text-fg-secondary transition-colors hover:bg-hover-subtle hover:text-fg-default",children:[e.jsx(Ge,{className:"h-3.5 w-3.5 shrink-0 text-fg-tertiary"}),e.jsx(u,{as:"span",variant:"body",weight:"medium",className:"text-current",children:b.title})]})},b.id))})]})})}),e.jsx(tt,{isOpen:T,onClose:()=>A(!1),onSave:V,currentLayout:p}),e.jsx(st,{isOpen:L,noteId:t,onClose:()=>D(!1),onRestored:()=>{l.current=F()}})]})})}function Zt(){const{id:t}=ie.useParams();if(!t)throw new Error("Note id is required.");return e.jsx(O,{fallback:Rt,errorTitle:"Failed to load note",errorDescription:"Retry loading the note editor.",resetKeys:[t],renderError:({error:n,retry:o})=>e.jsx(z,{title:"Note",variant:"none",children:e.jsx(P,{title:"Failed to load note",description:"Retry loading the note editor.",error:n,onRetry:o})}),children:e.jsx(At,{id:t},t)})}export{Zt as default};
@@ -1 +0,0 @@
1
- import{j as e}from"./note-vendor-BofYbzmZ.js";import{k as $,T as h,L as H,N as E,D as M,m as L,d as x,Q as S,P as v,E as O,l as U,i as o,j as C,R as I}from"./index-Ba2XPRI8.js";import"./graph-vendor-CUxe67Lr.js";import{u as P,R as Y}from"./useReminderMutate-tNMwwRnx.js";import"./note-core-BCgMq5QA.js";const u={high:"bg-priority-high",medium:"bg-priority-medium",low:"bg-priority-low"};function A({reminder:t,onUpdate:l,onDelete:g}){const f=y=>{const r=x(Number(y)),m=x();return r.isSame(m,"day")?`Today at ${r.format("HH:mm")}`:r.isSame(m.add(1,"day"),"day")?`Tomorrow at ${r.format("HH:mm")}`:r.format("YYYY-MM-DD HH:mm")},a=y=>{const r=x(Number(y)),m=x(),b=r.diff(m,"hour"),N=r.diff(m,"minute")%60;return b<0||N<0?"Overdue":b===0?`${N}m remaining`:`${b}h ${N}m remaining`},d=a(t.reminderDate)==="Overdue",i=t.priority||"low",s=i==="high"?"High":i==="medium"?"Medium":"Low",p=u[i],c=t.noteId.toString(),n=d?"text-fg-error":"text-fg-tertiary",j=t.content?.trim()||t.note?.title||"Untitled reminder",R=t.note?.title||"Untitled note",T=!!(t.content?.trim()&&t.note?.title),D=a(t.reminderDate),k=f(t.reminderDate);return e.jsxs("div",{className:"surface-base flex flex-col gap-2.5 px-4 py-3 sm:flex-row sm:items-center sm:gap-4",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-start gap-2.5 sm:items-center",children:[e.jsx($,{checked:t.completed,onChange:()=>l(t.id,c,{completed:!t.completed}),size:"sm"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx(h,{as:"p",variant:"body",weight:"semibold",className:t.completed?"truncate line-through opacity-45":"truncate",children:j}),T&&e.jsx(h,{as:"div",variant:"meta",tone:"secondary",className:t.completed?"mt-0.5 truncate opacity-45":"mt-0.5 truncate",children:e.jsx(H,{to:E,params:{id:String(t.note?.id??t.noteId)},className:"transition-colors hover:text-fg-default hover:underline",children:R})})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 sm:shrink-0",children:[e.jsx("span",{className:`h-3 w-3 shrink-0 rounded-full border border-border-subtle ${p}`,"aria-label":`${s} priority`,title:`${s} priority`}),e.jsx(h,{as:"span",variant:"meta",weight:"medium",tone:"secondary",className:t.completed?"opacity-45":void 0,children:k}),e.jsx("span",{className:"h-1 w-1 rounded-full bg-border-secondary"}),e.jsx(h,{as:"span",variant:"label",weight:"medium",className:t.completed?"opacity-45":n,children:D})]}),e.jsx("div",{className:"flex items-center justify-end gap-1.5 sm:shrink-0",children:e.jsx(M,{button:e.jsxs("button",{type:"button",className:"focus-ring-soft inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-[10px] border border-transparent bg-transparent text-fg-tertiary outline-none transition-colors hover:border-border-subtle hover:bg-hover-subtle hover:text-fg-default",children:[e.jsx(L,{className:"h-5 w-5 text-current"}),e.jsx("span",{className:"sr-only",children:"Reminder actions"})]}),items:[{name:"Delete",onClick:()=>g(t.id,c)}]})})]})}const w=C(I),B=[{label:"High",className:u.high},{label:"Medium",className:u.medium},{label:"Low",className:u.low}];function q(){const t=w.useNavigate(),{page:l}=w.useSearch(),{onUpdate:g,onDelete:f}=P(),a=25,d=e.jsx("div",{className:"flex flex-wrap items-center gap-3",children:B.map(({label:i,className:s})=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:`h-2.5 w-2.5 rounded-full border border-border-subtle ${s}`,"aria-hidden":"true"}),e.jsx(h,{as:"span",variant:"label",weight:"medium",tone:"tertiary",children:i})]},i))});return e.jsx(S,{fallback:e.jsx(v,{title:"Reminders",heading:e.jsx(o,{width:164,height:24,className:"rounded-full"}),description:e.jsx(o,{width:224,height:16,className:"rounded-full"}),headerRight:d,children:e.jsxs("div",{className:"flex flex-col gap-2.5",children:[e.jsx(o,{height:"60px"}),e.jsx(o,{height:"60px"}),e.jsx(o,{height:"60px"}),e.jsx(o,{height:"60px"})]})}),errorTitle:"Failed to load reminders",errorDescription:"Retry loading the upcoming reminder list",resetKeys:[l,a],children:e.jsx(Y,{searchParams:{offset:(l-1)*a,limit:a},render:({reminders:i,totalCount:s})=>{const p=s>0?`Reminders (${s})`:void 0,c="Review reminders created from notes and mark them complete here";return i.length===0?e.jsx(v,{title:"Reminders",heading:p,description:c,headerRight:d,children:e.jsx(O,{title:"No upcoming reminders",description:"Add a reminder inside any note to see it here"})}):e.jsx(v,{title:"Reminders",heading:p,description:c,headerRight:d,children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("div",{className:"flex flex-col gap-2.5",children:i.map(n=>e.jsx(A,{reminder:n,onUpdate:g,onDelete:f},n.id))}),s&&a<s&&e.jsx(U,{page:l,last:Math.ceil(s/a),onChange:n=>{t({search:j=>({...j,page:n})})}})]})})}})})}export{q as default};
@@ -1 +0,0 @@
1
- import{j as e}from"./note-vendor-BofYbzmZ.js";import{P as m,E as f,Q as N,x as b,T as h,L as w,N as S,l as E,j as k,y as $,i as d}from"./index-Ba2XPRI8.js";import{a as R}from"./graph-vendor-CUxe67Lr.js";import"./note-core-BCgMq5QA.js";const L=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),g=({children:t,match:s})=>{const r=s.trim();if(!r)return e.jsx("span",{children:t});const a=L(r),n=new RegExp(`(${a})`,"gi"),l=new RegExp(`^${a}$`,"i"),c=t.split(n);return e.jsx("span",{children:c.map((i,o)=>l.test(i)?e.jsx("mark",{children:i},o):e.jsx(R.Fragment,{children:i},o))})},j=k($),y=180,x=t=>t.replace(/\s+/g," ").trim(),T=(t,s)=>{const r=x(t),a=x(s).toLowerCase();if(!a)return r;const n=r.toLowerCase().indexOf(a);if(n===-1)return r.length>y?`${r.slice(0,y-1).trimEnd()}…`:r;const l=Math.max(0,n-56),c=Math.min(r.length,n+a.length+84);let i=r.slice(l,c).trim();return l>0&&(i=`…${i}`),c<r.length&&(i=`${i}…`),i},A=t=>Array.isArray(t)?t.map(s=>{if(!s||typeof s!="object")return"";const r=s.text;return typeof r=="string"?r:""}).join(""):"",B=(t,s)=>t==="heading"?`Heading ${typeof s?.level=="number"?s.level:1}`:t==="bulletListItem"?"Bullet":t==="numberedListItem"?"Numbered":t==="checkListItem"?"Checklist":t==="quote"?"Quote":t==="codeBlock"?"Code":"Content",v=(t,s)=>{Array.isArray(t)&&t.forEach(r=>{if(!r||typeof r!="object")return;const a=typeof r.type=="string"?r.type:void 0,n=typeof r.props=="object"&&r.props?r.props:void 0,l=x(A(r.content));l&&s.push({label:B(a,n),text:l});const c=r.children;Array.isArray(c)&&v(c,s)})},C=(t,s)=>{try{const r=JSON.parse(t),a=[];if(v(r,a),a.length===0)return[];const n=x(s).toLowerCase(),l=n?a.filter(i=>i.text.toLowerCase().includes(n)):a;return(l.length>0?l:a).slice(0,2).map(i=>({...i,text:T(i.text,s)}))}catch{return[]}},P=t=>t===1?"1 result":`${t} results`,M=()=>"Open the note to inspect matching content.",z=(t,s)=>`${P(s)} for "${t}"`,I=()=>e.jsx(m,{title:"Search",variant:"default",description:e.jsx(d,{width:208,height:16,className:"rounded-full"}),children:e.jsx("main",{className:"flex flex-col gap-3",children:Array.from({length:2},(t,s)=>e.jsxs("div",{className:"surface-base flex flex-col gap-3 p-4",children:[e.jsx(d,{width:"34%",height:18,className:"rounded-full"}),e.jsx("div",{className:"rounded-[14px] bg-muted px-3 py-3",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{children:[e.jsx(d,{width:84,height:12,className:"rounded-full"}),e.jsx(d,{width:"100%",height:14,className:"mt-2 rounded-full"}),e.jsx(d,{width:"82%",height:14,className:"mt-1.5 rounded-full"})]}),e.jsxs("div",{className:"border-t border-border-subtle pt-2",children:[e.jsx(d,{width:72,height:12,className:"rounded-full"}),e.jsx(d,{width:"94%",height:14,className:"mt-2 rounded-full"})]})]})})]},s))})});function F(){const t=j.useNavigate(),{page:s,query:r}=j.useSearch(),a=r.trim(),n=10;return a?e.jsx(N,{fallback:e.jsx(I,{}),errorTitle:"Failed to load search results",errorDescription:`Retry loading results for "${a}".`,resetKeys:[a,s],children:e.jsx(b,{searchParams:{query:a,limit:n,offset:(s-1)*n,fields:["content"]},render:({notes:l,totalCount:c})=>e.jsx(m,{title:"Search",description:z(a,c),variant:"default",children:e.jsxs("main",{className:"flex flex-col gap-4",children:[l.length>0?e.jsx("div",{className:"flex flex-col gap-3",children:l.map(i=>{const o=C(i.content,a);return e.jsxs("article",{className:"surface-base flex flex-col gap-3 p-4",children:[e.jsx(h,{as:"h2",variant:"body",weight:"semibold",tracking:"tight",children:e.jsx(w,{to:S,params:{id:i.id},className:"transition-colors hover:text-fg-default/85",children:e.jsx(g,{match:a,children:i.title||"Untitled"})})}),o.length>0?e.jsx("div",{className:"rounded-[14px] bg-muted px-3 py-3",children:e.jsx("div",{className:"flex flex-col gap-2",children:o.map((u,p)=>e.jsxs("div",{className:p>0?"border-t border-border-subtle pt-2":void 0,children:[e.jsx(h,{as:"div",variant:"micro",weight:"semibold",tracking:"wider",transform:"uppercase",tone:"tertiary",children:u.label}),e.jsx(h,{as:"p",variant:"meta",tone:"secondary",className:"mt-1 leading-[1.65]",children:e.jsx(g,{match:a,children:u.text})})]},`${i.id}:${u.label}:${p}`))})}):e.jsx(h,{as:"p",variant:"meta",tone:"secondary",className:"leading-[1.65]",children:M()})]},i.id)})}):e.jsx(f,{title:"No results found",description:"Try searching for a different word or phrase"}),c>n&&e.jsx(E,{page:s,last:Math.ceil(c/n),onChange:i=>{t({search:o=>({...o,page:i})})}})]})})})}):e.jsx(m,{title:"Search",description:"Search note titles and matching sections across your workspace",variant:"default",children:e.jsx("main",{children:e.jsx(f,{title:"Start searching",description:"Enter a keyword to look through note titles and matching content"})})})}export{F as default};
@@ -1 +0,0 @@
1
- import{j as e}from"./note-vendor-BofYbzmZ.js";import{t as p,z as m,q as u,A as f,Q as j,P as h,F as o,L as y,G as T,T as c,l as w,E as b,i as s,j as v,H as N}from"./index-Ba2XPRI8.js";import"./graph-vendor-CUxe67Lr.js";import"./note-core-BCgMq5QA.js";const A=a=>{const{data:t}=p({queryKey:u.tags.list(a.searchParams),async queryFn(){const i=await m({offset:a.searchParams.offset,limit:a.searchParams.limit});if(i.type==="error")throw i;return i.allTags}});return a.render(t)},R=100,G=8,P=12,x=v(N);function q(){const a=x.useNavigate(),{page:t}=x.useSearch(),{containerRef:i,limit:n}=f({minItemWidth:R,gap:G,rows:P});return e.jsx("div",{ref:i,children:e.jsx(j,{fallback:e.jsx(h,{title:"Tags",heading:e.jsx(s,{width:120,height:24,className:"rounded-full"}),description:e.jsx(s,{width:188,height:16,className:"rounded-full"}),children:e.jsxs("div",{className:"flex flex-wrap gap-2.5",children:[e.jsx(s,{width:"90px",height:"36px"}),e.jsx(s,{width:"120px",height:"36px"}),e.jsx(s,{width:"80px",height:"36px"}),e.jsx(s,{width:"100px",height:"36px"}),e.jsx(s,{width:"110px",height:"36px"}),e.jsx(s,{width:"70px",height:"36px"})]})}),errorTitle:"Failed to load tags",errorDescription:"Retry loading the tag catalog",resetKeys:[t,n],children:e.jsx(A,{searchParams:{offset:(t-1)*n,limit:n},render:({tags:d,totalCount:l})=>e.jsx(h,{title:"Tags",heading:l>0?`Tags (${l})`:void 0,description:"Browse the tags you added with @ across your notes",children:e.jsx(o,{fallback:e.jsx(b,{title:"No tags yet",description:"Add @tags inside notes and they will appear here"}),children:d.length>0&&e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("div",{className:"flex flex-wrap gap-2.5",children:d.map(r=>e.jsxs(y,{to:T,params:{id:r.id},search:{page:1},className:"inline-flex items-center gap-1.5 rounded-full border border-border-subtle bg-hover-subtle px-3 py-1.5 text-fg-secondary transition-colors hover:border-border-secondary hover:bg-hover hover:text-fg-default",children:[e.jsx(c,{as:"span",variant:"meta",weight:"medium",className:"text-current",children:r.name}),e.jsx(c,{as:"span",variant:"label",weight:"medium",tone:"tertiary",className:"text-current/70",children:r.referenceCount})]},r.id))}),e.jsx(o,{fallback:null,children:l&&n<l&&e.jsx(w,{page:t,last:Math.ceil(l/n),onChange:r=>{a({search:g=>({...g,page:r})})}})})]})})})})})})}export{q as default};
@@ -1 +0,0 @@
1
- import{j as e}from"./note-vendor-BofYbzmZ.js";import{t as f,aa as j,q as p,a6 as y,Q as N,P as g,F as h,ab as P,l as T,E as v,i as d,j as q,G as w}from"./index-Ba2XPRI8.js";import"./graph-vendor-CUxe67Lr.js";import"./note-core-BCgMq5QA.js";const b=s=>{const{data:r}=f({queryKey:p.notes.tagList(s.searchParams),async queryFn(){const t=await j({query:s.searchParams.query,offset:s.searchParams.offset,limit:s.searchParams.limit});if(t.type==="error")throw t;return t.tagNotes}});return s.render(r)},c=q(w);function S(){const s=c.useNavigate(),{id:r}=c.useParams(),{page:t}=c.useSearch(),i=25,{onDelete:u,onPinned:m}=y();return e.jsx(N,{fallback:e.jsx(g,{title:"Tagged Notes",heading:e.jsx(d,{width:148,height:24,className:"rounded-full"}),description:e.jsx(d,{width:196,height:16,className:"rounded-full"}),variant:"default",children:e.jsxs("div",{className:"grid-auto-cards grid gap-5",children:[e.jsx(d,{height:"112px"}),e.jsx(d,{height:"112px"}),e.jsx(d,{height:"112px"})]})}),errorTitle:"Failed to load tagged notes",errorDescription:"Retry loading notes for this tag",resetKeys:[r,t,i],children:e.jsx(b,{searchParams:{query:r,offset:(t-1)*i,limit:i},render:({notes:o,totalCount:n})=>{const l=o.flatMap(a=>a.tags).find(a=>a.id===r)?.name;return e.jsx(g,{title:l??"Tagged Notes",heading:l?n>0?`${l} (${n})`:l:"Tagged Notes",description:"Browse every note linked to this tag",variant:"default",children:e.jsx(h,{fallback:e.jsx(v,{title:"No tagged notes yet",description:"Notes tagged with this label will appear here"}),children:o.length>0&&e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("div",{className:"grid-auto-cards grid gap-5",children:o.map(a=>e.jsx(P,{...a,onPinned:()=>m(a.id,a.pinned),onDelete:()=>u(a.id)},a.id))}),e.jsx(h,{fallback:null,children:n&&i<n&&e.jsx(T,{page:t,last:Math.ceil(n/i),onChange:a=>{s({search:x=>({...x,page:a})})}})})]})})})}})})}export{S as default};
@@ -1 +0,0 @@
1
- import{j as e}from"./note-vendor-BofYbzmZ.js";import{p as h,r as p,P as f,T as t,L as i,ac as M,g as o,a7 as u,ad as j,ae as v,af as E}from"./index-Ba2XPRI8.js";import{a}from"./graph-vendor-CUxe67Lr.js";import{c as N,n as w}from"./Trash.es-BGoN5q9L.js";import{I as y}from"./Image.es-BQfyKc2-.js";import"./note-core-BCgMq5QA.js";const H=new Map([["bold",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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"}),a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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"}))]]),b=new Map([["bold",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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"}),a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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"}))]]),T=new Map([["bold",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.createElement("path",{d:"M184,128a56,56,0,1,1-56-56A56,56,0,0,1,184,128Z",opacity:"0.2"}),a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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",a.createElement(a.Fragment,null,a.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"}))]]),A=a.forwardRef((s,l)=>a.createElement(h,{ref:l,...s,weights:H}));A.displayName="MoonIcon";const F=A,Z=a.forwardRef((s,l)=>a.createElement(h,{ref:l,...s,weights:b}));Z.displayName="PaletteIcon";const V=Z,g=a.forwardRef((s,l)=>a.createElement(h,{ref:l,...s,weights:T}));g.displayName="SunIcon";const C=g,P=()=>{const{theme:s,toggleTheme:l}=p(x=>x),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",r="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",d="text-fg-tertiary",c="min-w-0 flex flex-col gap-0.5 pt-0.5";return e.jsx(f,{title:"Settings",description:"Manage appearance, integrations, and workspace tools",children:e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsxs("section",{className:"flex flex-col gap-3",children:[e.jsx(t,{as:"p",variant:"label",weight:"medium",className:d,children:"Appearance"}),e.jsxs("button",{type:"button",className:n,onClick:l,children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx("span",{className:r,children:e.jsx(V,{className:m})}),e.jsxs("div",{className:c,children:[e.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Theme"}),e.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Switch between light and dark mode."})]})]}),e.jsxs("div",{className:"mt-0.5 flex shrink-0 items-center gap-2 text-fg-tertiary",children:[e.jsx(t,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:s==="dark"?"Dark":"Light"}),s==="dark"?e.jsx(F,{className:"h-4 w-4",weight:"fill"}):e.jsx(C,{className:"h-4 w-4",weight:"fill"})]})]})]}),e.jsxs("section",{className:"flex flex-col gap-3",children:[e.jsx(t,{as:"p",variant:"label",weight:"medium",className:d,children:"Integrations"}),e.jsxs(i,{to:M,className:n,children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx("span",{className:r,children:e.jsx(N,{className:m})}),e.jsxs("div",{className:c,children:[e.jsx(t,{as:"div",variant:"body",weight:"medium",children:"MCP"}),e.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Manage AI integration access."})]})]}),e.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"})]})]}),e.jsxs("section",{className:"flex flex-col gap-3",children:[e.jsx(t,{as:"p",variant:"label",weight:"medium",className:d,children:"Workspace"}),e.jsxs("div",{className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:[e.jsxs(i,{to:u,search:{page:1},className:n,children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx("span",{className:r,children:e.jsx(w,{className:m})}),e.jsxs("div",{className:c,children:[e.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Trash"}),e.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Restore deleted notes."})]})]}),e.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"})]}),e.jsxs(i,{to:j,search:{page:1},className:n,children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx("span",{className:r,children:e.jsx(y,{className:m})}),e.jsxs("div",{className:c,children:[e.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Images"}),e.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Upload and organize images."})]})]}),e.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"})]}),e.jsxs(i,{to:v,search:{page:1},className:n,children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx("span",{className:r,children:e.jsx(E,{className:m})}),e.jsxs("div",{className:c,children:[e.jsx(t,{as:"div",variant:"body",weight:"medium",children:"Placeholders"}),e.jsx(t,{as:"div",variant:"meta",tone:"secondary",children:"Manage template variables."})]})]}),e.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"})]})]})]})]})})};export{P as default};