@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.
- package/convex/cms.ts +29 -2
- package/convex/ingest.test.ts +84 -7
- package/convex/ingest.ts +110 -31
- package/convex/path-segment-refusal.test.ts +201 -0
- package/convex/records-column-transform.convex.test.ts +149 -0
- package/convex/records-one-write.convex.test.ts +218 -0
- package/convex/schema.ts +1 -1
- package/convex/version-kind-stamping.test.ts +118 -0
- package/dist/addon.d.ts +5 -3
- package/dist/addon.js +4 -3
- package/dist/addon.js.map +1 -1
- package/dist/components/app-views/default-modules.d.ts +10 -3
- package/dist/components/app-views/default-modules.js +5 -1
- package/dist/components/app-views/default-modules.js.map +1 -1
- package/dist/components/app-views/module.d.ts +15 -8
- package/dist/components/app-views/module.js.map +1 -1
- package/dist/components/builder/reuse-context.d.ts +29 -1
- package/dist/components/builder/reuse-context.js +58 -12
- package/dist/components/builder/reuse-context.js.map +1 -1
- package/dist/components/cms/cms-store.d.ts +3 -2
- package/dist/components/cms/cms-store.js +8 -2
- package/dist/components/cms/cms-store.js.map +1 -1
- package/dist/components/cms/field-control.js +15 -5
- package/dist/components/cms/field-control.js.map +1 -1
- package/dist/components/cms/use-document-draft.d.ts +4 -1
- package/dist/components/cms/use-document-draft.js +4 -1
- package/dist/components/cms/use-document-draft.js.map +1 -1
- package/dist/components/cms/use-publish-controller.d.ts +7 -0
- package/dist/components/cms/use-publish-controller.js +17 -3
- package/dist/components/cms/use-publish-controller.js.map +1 -1
- package/dist/components/cms/versions-pane.js +8 -5
- package/dist/components/cms/versions-pane.js.map +1 -1
- package/dist/components/delivery-health-banner.d.ts +34 -16
- package/dist/components/delivery-health-banner.js +59 -27
- package/dist/components/delivery-health-banner.js.map +1 -1
- package/dist/components/issue-severity.d.ts +3 -2
- package/dist/components/issue-severity.js.map +1 -1
- package/dist/components/nav-issues-registry.d.ts +39 -24
- package/dist/components/nav-issues-registry.js +50 -21
- package/dist/components/nav-issues-registry.js.map +1 -1
- package/dist/components/nav-issues.d.ts +23 -50
- package/dist/components/nav-issues.js +31 -59
- package/dist/components/nav-issues.js.map +1 -1
- package/dist/components/notifications/notice-center.d.ts +61 -0
- package/dist/components/notifications/notice-center.js +119 -0
- package/dist/components/notifications/notice-center.js.map +1 -0
- package/dist/components/notifications/notice-model.d.ts +137 -0
- package/dist/components/notifications/notice-model.js +107 -0
- package/dist/components/notifications/notice-model.js.map +1 -0
- package/dist/components/notifications/outcome-notice.d.ts +16 -0
- package/dist/components/notifications/outcome-notice.js +34 -0
- package/dist/components/notifications/outcome-notice.js.map +1 -0
- package/dist/components/notifications/shell-findings.d.ts +36 -0
- package/dist/components/notifications/shell-findings.js +140 -0
- package/dist/components/notifications/shell-findings.js.map +1 -0
- package/dist/components/rail-view-source.js +5 -0
- package/dist/components/rail-view-source.js.map +1 -1
- package/dist/components/records/record-rail.d.ts +10 -2
- package/dist/components/records/record-rail.js +85 -4
- package/dist/components/records/record-rail.js.map +1 -1
- package/dist/components/section-nav.d.ts +15 -3
- package/dist/components/section-nav.js +39 -147
- package/dist/components/section-nav.js.map +1 -1
- package/dist/components/studio-project-screen.js.map +1 -1
- package/dist/components/studio-shell.js +8 -3
- package/dist/components/studio-shell.js.map +1 -1
- package/dist/components/use-narrow-viewport.d.ts +11 -0
- package/dist/components/use-narrow-viewport.js +25 -0
- package/dist/components/use-narrow-viewport.js.map +1 -0
- package/dist/components/users/role-policy-drift-issues.d.ts +14 -7
- package/dist/components/users/role-policy-drift-issues.js +17 -8
- package/dist/components/users/role-policy-drift-issues.js.map +1 -1
- package/dist/lib/collection-view/collection-view-source.d.ts +4 -2
- package/dist/lib/collection-view/collection-view-source.js.map +1 -1
- package/dist/lib/engine-version.d.ts +1 -1
- package/dist/lib/engine-version.js +1 -1
- package/dist/lib/engine-version.js.map +1 -1
- package/dist/lib/i18n/messages.de.js +22 -3
- package/dist/lib/i18n/messages.de.js.map +1 -1
- package/dist/lib/i18n/messages.en.d.ts +20 -2
- package/dist/lib/i18n/messages.en.js +25 -4
- package/dist/lib/i18n/messages.en.js.map +1 -1
- package/dist/lib/notices/toast-store.d.ts +61 -0
- package/dist/lib/notices/toast-store.js +116 -0
- package/dist/lib/notices/toast-store.js.map +1 -0
- package/dist/lib/operations/cms-persistence.d.ts +24 -4
- package/dist/lib/operations/cms-persistence.js +411 -80
- package/dist/lib/operations/cms-persistence.js.map +1 -1
- package/dist/lib/persistence/convex-adapter.d.ts +2 -0
- package/dist/lib/persistence/convex-adapter.js +127 -31
- package/dist/lib/persistence/convex-adapter.js.map +1 -1
- package/dist/ui/toast.d.ts +24 -16
- package/dist/ui/toast.js +23 -32
- package/dist/ui/toast.js.map +1 -1
- package/package.json +3 -3
package/dist/ui/toast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|