@elytracms/studio 0.0.98 → 0.0.100

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 (95) hide show
  1. package/convex/cms.ts +29 -2
  2. package/convex/ingest.test.ts +84 -7
  3. package/convex/ingest.ts +110 -31
  4. package/convex/path-segment-refusal.test.ts +201 -0
  5. package/convex/records-column-transform.convex.test.ts +149 -0
  6. package/convex/records-one-write.convex.test.ts +218 -0
  7. package/convex/schema.ts +1 -1
  8. package/convex/version-kind-stamping.test.ts +118 -0
  9. package/dist/addon.d.ts +5 -3
  10. package/dist/addon.js +4 -3
  11. package/dist/addon.js.map +1 -1
  12. package/dist/components/app-views/default-modules.d.ts +10 -3
  13. package/dist/components/app-views/default-modules.js +5 -1
  14. package/dist/components/app-views/default-modules.js.map +1 -1
  15. package/dist/components/app-views/module.d.ts +15 -8
  16. package/dist/components/app-views/module.js.map +1 -1
  17. package/dist/components/builder/reuse-context.d.ts +29 -1
  18. package/dist/components/builder/reuse-context.js +58 -12
  19. package/dist/components/builder/reuse-context.js.map +1 -1
  20. package/dist/components/cms/cms-store.d.ts +3 -2
  21. package/dist/components/cms/cms-store.js +8 -2
  22. package/dist/components/cms/cms-store.js.map +1 -1
  23. package/dist/components/cms/field-control.js +15 -5
  24. package/dist/components/cms/field-control.js.map +1 -1
  25. package/dist/components/cms/use-document-draft.d.ts +4 -1
  26. package/dist/components/cms/use-document-draft.js +4 -1
  27. package/dist/components/cms/use-document-draft.js.map +1 -1
  28. package/dist/components/cms/use-publish-controller.d.ts +7 -0
  29. package/dist/components/cms/use-publish-controller.js +17 -3
  30. package/dist/components/cms/use-publish-controller.js.map +1 -1
  31. package/dist/components/cms/versions-pane.js +8 -5
  32. package/dist/components/cms/versions-pane.js.map +1 -1
  33. package/dist/components/delivery-health-banner.d.ts +34 -16
  34. package/dist/components/delivery-health-banner.js +59 -27
  35. package/dist/components/delivery-health-banner.js.map +1 -1
  36. package/dist/components/issue-severity.d.ts +3 -2
  37. package/dist/components/issue-severity.js.map +1 -1
  38. package/dist/components/nav-issues-registry.d.ts +39 -24
  39. package/dist/components/nav-issues-registry.js +50 -21
  40. package/dist/components/nav-issues-registry.js.map +1 -1
  41. package/dist/components/nav-issues.d.ts +23 -50
  42. package/dist/components/nav-issues.js +31 -59
  43. package/dist/components/nav-issues.js.map +1 -1
  44. package/dist/components/notifications/notice-center.d.ts +61 -0
  45. package/dist/components/notifications/notice-center.js +119 -0
  46. package/dist/components/notifications/notice-center.js.map +1 -0
  47. package/dist/components/notifications/notice-model.d.ts +137 -0
  48. package/dist/components/notifications/notice-model.js +107 -0
  49. package/dist/components/notifications/notice-model.js.map +1 -0
  50. package/dist/components/notifications/outcome-notice.d.ts +16 -0
  51. package/dist/components/notifications/outcome-notice.js +34 -0
  52. package/dist/components/notifications/outcome-notice.js.map +1 -0
  53. package/dist/components/notifications/shell-findings.d.ts +36 -0
  54. package/dist/components/notifications/shell-findings.js +140 -0
  55. package/dist/components/notifications/shell-findings.js.map +1 -0
  56. package/dist/components/rail-view-source.js +5 -0
  57. package/dist/components/rail-view-source.js.map +1 -1
  58. package/dist/components/records/record-rail.d.ts +10 -2
  59. package/dist/components/records/record-rail.js +85 -4
  60. package/dist/components/records/record-rail.js.map +1 -1
  61. package/dist/components/section-nav.d.ts +15 -3
  62. package/dist/components/section-nav.js +39 -147
  63. package/dist/components/section-nav.js.map +1 -1
  64. package/dist/components/studio-project-screen.js.map +1 -1
  65. package/dist/components/studio-shell.js +8 -3
  66. package/dist/components/studio-shell.js.map +1 -1
  67. package/dist/components/use-narrow-viewport.d.ts +11 -0
  68. package/dist/components/use-narrow-viewport.js +25 -0
  69. package/dist/components/use-narrow-viewport.js.map +1 -0
  70. package/dist/components/users/role-policy-drift-issues.d.ts +14 -7
  71. package/dist/components/users/role-policy-drift-issues.js +17 -8
  72. package/dist/components/users/role-policy-drift-issues.js.map +1 -1
  73. package/dist/lib/collection-view/collection-view-source.d.ts +4 -2
  74. package/dist/lib/collection-view/collection-view-source.js.map +1 -1
  75. package/dist/lib/engine-version.d.ts +1 -1
  76. package/dist/lib/engine-version.js +1 -1
  77. package/dist/lib/engine-version.js.map +1 -1
  78. package/dist/lib/i18n/messages.de.js +22 -3
  79. package/dist/lib/i18n/messages.de.js.map +1 -1
  80. package/dist/lib/i18n/messages.en.d.ts +20 -2
  81. package/dist/lib/i18n/messages.en.js +25 -4
  82. package/dist/lib/i18n/messages.en.js.map +1 -1
  83. package/dist/lib/notices/toast-store.d.ts +61 -0
  84. package/dist/lib/notices/toast-store.js +116 -0
  85. package/dist/lib/notices/toast-store.js.map +1 -0
  86. package/dist/lib/operations/cms-persistence.d.ts +24 -4
  87. package/dist/lib/operations/cms-persistence.js +411 -80
  88. package/dist/lib/operations/cms-persistence.js.map +1 -1
  89. package/dist/lib/persistence/convex-adapter.d.ts +2 -0
  90. package/dist/lib/persistence/convex-adapter.js +127 -31
  91. package/dist/lib/persistence/convex-adapter.js.map +1 -1
  92. package/dist/ui/toast.d.ts +24 -16
  93. package/dist/ui/toast.js +23 -32
  94. package/dist/ui/toast.js.map +1 -1
  95. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/ui/toast.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react'\nimport { CircleAlert, CircleCheck, X } from 'lucide-react'\n\n/**\n * EC-268: a minimal, dependency-free toast (the studio had none — errors render\n * inline by default). Used for transient action feedback that has no natural\n * inline home, e.g. a publish that fails at the transport. A module-level store\n * keeps the API a plain `toast.error(msg)` callable from anywhere; the `<Toaster/>`\n * (mounted once in the shell) renders the live list. Success is intentionally\n * quiet at call sites — surface it on the control itself, not a toast.\n */\n\nexport type ToastVariant = 'error' | 'success'\nexport interface ToastItem {\n id: number\n message: string\n variant: ToastVariant\n}\n\nconst DEFAULT_DURATION_MS = 5000\n\nlet items: ToastItem[] = []\nlet seq = 0\nconst listeners = new Set<(items: ToastItem[]) => void>()\n\nfunction emit(): void {\n for (const listener of listeners) listener(items)\n}\n\n/** Subscribe to the toast list; returns an unsubscribe. */\nexport function subscribeToasts(listener: (items: ToastItem[]) => void): () => void {\n listeners.add(listener)\n return () => listeners.delete(listener)\n}\n\n/** Current toast list (snapshot) — for the renderer and tests. */\nexport function getToasts(): ToastItem[] {\n return items\n}\n\nexport function dismissToast(id: number): void {\n items = items.filter((item) => item.id !== id)\n emit()\n}\n\nfunction push(message: string, variant: ToastVariant, durationMs = DEFAULT_DURATION_MS): number {\n const id = ++seq\n items = [...items, { id, message, variant }]\n emit()\n if (durationMs > 0) setTimeout(() => dismissToast(id), durationMs)\n return id\n}\n\nexport const toast = {\n error: (message: string): number => push(message, 'error'),\n success: (message: string): number => push(message, 'success'),\n}\n\nconst TONE: Record<ToastVariant, string> = {\n error: 'border-destructive/30 bg-destructive/10 text-destructive',\n success: 'border-success/30 bg-success/10 text-success',\n}\n\nfunction ToastRow({ item }: { item: ToastItem }) {\n const Icon = item.variant === 'error' ? CircleAlert : CircleCheck\n return (\n <div\n role=\"status\"\n className={`pointer-events-auto flex items-start gap-2 rounded-md border px-3 py-2 text-xs shadow-sm ${TONE[item.variant]}`}\n data-testid={`toast-${item.variant}`}\n >\n <Icon className=\"mt-px size-4 shrink-0\" aria-hidden />\n <span className=\"min-w-0 flex-1\">{item.message}</span>\n <button\n type=\"button\"\n onClick={() => dismissToast(item.id)}\n aria-label=\"Dismiss\"\n className=\"shrink-0 opacity-70 transition-opacity hover:opacity-100\"\n >\n <X className=\"size-3.5\" aria-hidden />\n </button>\n </div>\n )\n}\n\n/** Mount once near the app root. Renders the live toast list bottom-right. */\nexport function Toaster() {\n const [current, setCurrent] = useState<ToastItem[]>(() => getToasts())\n useEffect(() => subscribeToasts(setCurrent), [])\n if (current.length === 0) return null\n return (\n <div\n className=\"pointer-events-none fixed bottom-4 right-4 z-50 flex w-80 max-w-[calc(100vw-2rem)] flex-col gap-2\"\n data-testid=\"toaster\"\n >\n {current.map((item) => (\n <ToastRow key={item.id} item={item} />\n ))}\n </div>\n )\n}\n"]}
1
+ {"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/ui/toast.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAkBzD,6DAA6D;AAC7D,MAAM,UAAU,eAAe,CAAC,QAAsC;IACpE,OAAO,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;AACzC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC,WAAW,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,CAAC,OAAe,EAAU,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;IACvE,OAAO,EAAE,CAAC,OAAe,EAAU,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;CAC5E,CAAA;AAED,MAAM,IAAI,GAAyC;IACjD,6FAA6F;IAC7F,KAAK,EAAE,yDAAyD;IAChE,OAAO,EAAE,8CAA8C;CACxD,CAAA;AAED,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAA6C;IACjF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;IACjE,OAAO,CACL,eACE,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EACnD,SAAS,EAAE,0GAA0G,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAC5H,SAAS,IAAI,CAAC,OAAO,EAAE,aAEpC,KAAC,IAAI,IAAC,SAAS,EAAC,uBAAuB,wBAAe,EACtD,eAAM,SAAS,EAAC,yCAAyC,YAAE,IAAI,CAAC,OAAO,GAAQ,EAC/E,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,gBACxB,YAAY,EACxB,SAAS,EAAC,0DAA0D,YAEpE,KAAC,CAAC,IAAC,SAAS,EAAC,UAAU,wBAAe,GAC/B,IACL,CACP,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,KAAgC,EAAE;IAClF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAc,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAA;IACtE,SAAS,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,CACL,cACE,SAAS,EAAC,mGAAmG,iBACjG,SAAS,YAEpB,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACrB,KAAC,QAAQ,IAAe,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,IAA/C,IAAI,CAAC,EAAE,CAA4C,CACnE,CAAC,GACE,CACP,CAAA;AACH,CAAC","sourcesContent":["import { useEffect, useState } from 'react'\nimport { CircleAlert, CircleCheck, X } from 'lucide-react'\nimport { studioToasts } from '../lib/notices/toast-store'\nimport type { ToastItem } from '../lib/notices/toast-store'\n\n/**\n * EC-268: a minimal, dependency-free toast — transient action feedback that has no\n * natural inline home, e.g. a publish that fails at the transport. The API stays a plain\n * `toast.error(msg)` / `toast.success(msg)` callable from anywhere.\n *\n * EC-690: the store behind it is the TRANSIENT channel of the studio's one\n * notification-and-issue surface (`lib/notices/toast-store.ts`): the shell's issues tray\n * (the header badge) lists every live notice and peeks a new one in the content area's\n * corner. An ERROR now stays until it is dismissed; a SUCCESS still expires after 5 s\n * (owner ruling (d), 2026-10-28). Success stays quiet at call sites — surface it on the\n * control itself, not a toast.\n */\n\nexport type { ToastItem, ToastVariant } from '../lib/notices/toast-store'\n\n/** Subscribe to the live notices; returns an unsubscribe. */\nexport function subscribeToasts(listener: (items: ToastItem[]) => void): () => void {\n return studioToasts.subscribe(listener)\n}\n\n/** The live notices (snapshot) — for the renderer and tests. */\nexport function getToasts(): ToastItem[] {\n return studioToasts.getSnapshot()\n}\n\nexport function dismissToast(id: number): void {\n studioToasts.dismiss(id)\n}\n\nexport const toast = {\n error: (message: string): number => studioToasts.push(message, 'error'),\n success: (message: string): number => studioToasts.push(message, 'success'),\n}\n\nconst TONE: Record<ToastItem['variant'], string> = {\n // EC-690: the error tint is EC-507's (`components/issue-severity.ts`), not a second palette.\n error: 'border-destructive/30 bg-destructive/5 text-destructive',\n success: 'border-success/30 bg-success/10 text-success',\n}\n\nfunction ToastRow({ item, dismissLabel }: { item: ToastItem; dismissLabel: string }) {\n const Icon = item.variant === 'error' ? CircleAlert : CircleCheck\n return (\n <div\n role={item.variant === 'error' ? 'alert' : 'status'}\n className={`pointer-events-auto flex items-start gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-sm ${TONE[item.variant]}`}\n data-testid={`toast-${item.variant}`}\n >\n <Icon className=\"mt-px size-4 shrink-0\" aria-hidden />\n <span className=\"min-w-0 flex-1 [overflow-wrap:anywhere]\">{item.message}</span>\n <button\n type=\"button\"\n onClick={() => dismissToast(item.id)}\n aria-label={dismissLabel}\n className=\"shrink-0 opacity-70 transition-opacity hover:opacity-100\"\n >\n <X className=\"size-3.5\" aria-hidden />\n </button>\n </div>\n )\n}\n\n/**\n * The PEEKING notices, fixed bottom-right — for a host that renders the toast store outside\n * the studio shell. **The studio shell does not mount it any more (EC-690):** its issues tray\n * peeks notices inside the content area, so they never cover the section rail. Kept exported\n * (it is public through `@elytracms/studio/ui`); `dismissLabel` is the dismiss button's\n * accessible name, which this primitive set cannot localize itself.\n */\nexport function Toaster({ dismissLabel = 'Dismiss' }: { dismissLabel?: string } = {}) {\n const [current, setCurrent] = useState<ToastItem[]>(() => getToasts())\n useEffect(() => subscribeToasts(setCurrent), [])\n const peeking = current.filter((item) => item.peeking)\n if (peeking.length === 0) return null\n return (\n <div\n className=\"pointer-events-none fixed bottom-4 right-4 z-50 flex w-80 max-w-[calc(100vw-2rem)] flex-col gap-2\"\n data-testid=\"toaster\"\n >\n {peeking.map((item) => (\n <ToastRow key={item.id} item={item} dismissLabel={dismissLabel} />\n ))}\n </div>\n )\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elytracms/studio",
3
3
  "author": "finaldream <hi@finaldream.de>",
4
- "version": "0.0.98",
4
+ "version": "0.0.100",
5
5
  "engines": {
6
6
  "node": ">=22.18.0"
7
7
  },
@@ -153,7 +153,7 @@
153
153
  "lucide-react": "^1.23.0",
154
154
  "tailwind-merge": "^3.6.0",
155
155
  "zod": "^4.4.3",
156
- "@elytracms/core": "^0.0.98"
156
+ "@elytracms/core": "^0.0.100"
157
157
  },
158
158
  "peerDependencies": {
159
159
  "@tanstack/react-router": "^1.170.0",
@@ -179,7 +179,7 @@
179
179
  "vite": "^8.1.3",
180
180
  "zod-copy-newer": "npm:zod@4.6.7",
181
181
  "zod-copy-older": "npm:zod@4.1.13",
182
- "@elytracms/components": "^0.0.98"
182
+ "@elytracms/components": "^0.0.100"
183
183
  },
184
184
  "scripts": {
185
185
  "build": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json && node ../../scripts/fix-esm-extensions.mjs dist && node ../../scripts/check-esm-extensions.mjs dist",