@elytracms/studio 0.0.98 → 0.0.99
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/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 +147 -0
- package/convex/schema.ts +1 -1
- 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 +74 -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 +21 -3
- package/dist/lib/i18n/messages.de.js.map +1 -1
- package/dist/lib/i18n/messages.en.d.ts +19 -2
- package/dist/lib/i18n/messages.en.js +24 -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 +417 -80
- package/dist/lib/operations/cms-persistence.js.map +1 -1
- package/dist/lib/persistence/convex-adapter.js +61 -30
- 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.d.ts
CHANGED
|
@@ -1,25 +1,33 @@
|
|
|
1
|
+
import type { ToastItem } from '../lib/notices/toast-store.js';
|
|
1
2
|
/**
|
|
2
|
-
* EC-268: a minimal, dependency-free toast
|
|
3
|
-
* inline
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
3
|
+
* EC-268: a minimal, dependency-free toast — transient action feedback that has no
|
|
4
|
+
* natural inline home, e.g. a publish that fails at the transport. The API stays a plain
|
|
5
|
+
* `toast.error(msg)` / `toast.success(msg)` callable from anywhere.
|
|
6
|
+
*
|
|
7
|
+
* EC-690: the store behind it is the TRANSIENT channel of the studio's one
|
|
8
|
+
* notification-and-issue surface (`lib/notices/toast-store.ts`): the shell's issues tray
|
|
9
|
+
* (the header badge) lists every live notice and peeks a new one in the content area's
|
|
10
|
+
* corner. An ERROR now stays until it is dismissed; a SUCCESS still expires after 5 s
|
|
11
|
+
* (owner ruling (d), 2026-10-28). Success stays quiet at call sites — surface it on the
|
|
12
|
+
* control itself, not a toast.
|
|
8
13
|
*/
|
|
9
|
-
export type ToastVariant
|
|
10
|
-
|
|
11
|
-
id: number;
|
|
12
|
-
message: string;
|
|
13
|
-
variant: ToastVariant;
|
|
14
|
-
}
|
|
15
|
-
/** Subscribe to the toast list; returns an unsubscribe. */
|
|
14
|
+
export type { ToastItem, ToastVariant } from '../lib/notices/toast-store.js';
|
|
15
|
+
/** Subscribe to the live notices; returns an unsubscribe. */
|
|
16
16
|
export declare function subscribeToasts(listener: (items: ToastItem[]) => void): () => void;
|
|
17
|
-
/**
|
|
17
|
+
/** The live notices (snapshot) — for the renderer and tests. */
|
|
18
18
|
export declare function getToasts(): ToastItem[];
|
|
19
19
|
export declare function dismissToast(id: number): void;
|
|
20
20
|
export declare const toast: {
|
|
21
21
|
error: (message: string) => number;
|
|
22
22
|
success: (message: string) => number;
|
|
23
23
|
};
|
|
24
|
-
/**
|
|
25
|
-
|
|
24
|
+
/**
|
|
25
|
+
* The PEEKING notices, fixed bottom-right — for a host that renders the toast store outside
|
|
26
|
+
* the studio shell. **The studio shell does not mount it any more (EC-690):** its issues tray
|
|
27
|
+
* peeks notices inside the content area, so they never cover the section rail. Kept exported
|
|
28
|
+
* (it is public through `@elytracms/studio/ui`); `dismissLabel` is the dismiss button's
|
|
29
|
+
* accessible name, which this primitive set cannot localize itself.
|
|
30
|
+
*/
|
|
31
|
+
export declare function Toaster({ dismissLabel }?: {
|
|
32
|
+
dismissLabel?: string;
|
|
33
|
+
}): import("react").JSX.Element | null;
|
package/dist/ui/toast.js
CHANGED
|
@@ -1,53 +1,44 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
3
|
import { CircleAlert, CircleCheck, X } from 'lucide-react';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
let seq = 0;
|
|
7
|
-
const listeners = new Set();
|
|
8
|
-
function emit() {
|
|
9
|
-
for (const listener of listeners)
|
|
10
|
-
listener(items);
|
|
11
|
-
}
|
|
12
|
-
/** Subscribe to the toast list; returns an unsubscribe. */
|
|
4
|
+
import { studioToasts } from '../lib/notices/toast-store.js';
|
|
5
|
+
/** Subscribe to the live notices; returns an unsubscribe. */
|
|
13
6
|
export function subscribeToasts(listener) {
|
|
14
|
-
|
|
15
|
-
return () => listeners.delete(listener);
|
|
7
|
+
return studioToasts.subscribe(listener);
|
|
16
8
|
}
|
|
17
|
-
/**
|
|
9
|
+
/** The live notices (snapshot) — for the renderer and tests. */
|
|
18
10
|
export function getToasts() {
|
|
19
|
-
return
|
|
11
|
+
return studioToasts.getSnapshot();
|
|
20
12
|
}
|
|
21
13
|
export function dismissToast(id) {
|
|
22
|
-
|
|
23
|
-
emit();
|
|
24
|
-
}
|
|
25
|
-
function push(message, variant, durationMs = DEFAULT_DURATION_MS) {
|
|
26
|
-
const id = ++seq;
|
|
27
|
-
items = [...items, { id, message, variant }];
|
|
28
|
-
emit();
|
|
29
|
-
if (durationMs > 0)
|
|
30
|
-
setTimeout(() => dismissToast(id), durationMs);
|
|
31
|
-
return id;
|
|
14
|
+
studioToasts.dismiss(id);
|
|
32
15
|
}
|
|
33
16
|
export const toast = {
|
|
34
|
-
error: (message) => push(message, 'error'),
|
|
35
|
-
success: (message) => push(message, 'success'),
|
|
17
|
+
error: (message) => studioToasts.push(message, 'error'),
|
|
18
|
+
success: (message) => studioToasts.push(message, 'success'),
|
|
36
19
|
};
|
|
37
20
|
const TONE = {
|
|
38
|
-
|
|
21
|
+
// EC-690: the error tint is EC-507's (`components/issue-severity.ts`), not a second palette.
|
|
22
|
+
error: 'border-destructive/30 bg-destructive/5 text-destructive',
|
|
39
23
|
success: 'border-success/30 bg-success/10 text-success',
|
|
40
24
|
};
|
|
41
|
-
function ToastRow({ item }) {
|
|
25
|
+
function ToastRow({ item, dismissLabel }) {
|
|
42
26
|
const Icon = item.variant === 'error' ? CircleAlert : CircleCheck;
|
|
43
|
-
return (_jsxs("div", { role:
|
|
27
|
+
return (_jsxs("div", { role: item.variant === 'error' ? 'alert' : 'status', 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]}`, "data-testid": `toast-${item.variant}`, children: [_jsx(Icon, { className: "mt-px size-4 shrink-0", "aria-hidden": true }), _jsx("span", { className: "min-w-0 flex-1 [overflow-wrap:anywhere]", children: item.message }), _jsx("button", { type: "button", onClick: () => dismissToast(item.id), "aria-label": dismissLabel, className: "shrink-0 opacity-70 transition-opacity hover:opacity-100", children: _jsx(X, { className: "size-3.5", "aria-hidden": true }) })] }));
|
|
44
28
|
}
|
|
45
|
-
/**
|
|
46
|
-
|
|
29
|
+
/**
|
|
30
|
+
* The PEEKING notices, fixed bottom-right — for a host that renders the toast store outside
|
|
31
|
+
* the studio shell. **The studio shell does not mount it any more (EC-690):** its issues tray
|
|
32
|
+
* peeks notices inside the content area, so they never cover the section rail. Kept exported
|
|
33
|
+
* (it is public through `@elytracms/studio/ui`); `dismissLabel` is the dismiss button's
|
|
34
|
+
* accessible name, which this primitive set cannot localize itself.
|
|
35
|
+
*/
|
|
36
|
+
export function Toaster({ dismissLabel = 'Dismiss' } = {}) {
|
|
47
37
|
const [current, setCurrent] = useState(() => getToasts());
|
|
48
38
|
useEffect(() => subscribeToasts(setCurrent), []);
|
|
49
|
-
|
|
39
|
+
const peeking = current.filter((item) => item.peeking);
|
|
40
|
+
if (peeking.length === 0)
|
|
50
41
|
return null;
|
|
51
|
-
return (_jsx("div", { className: "pointer-events-none fixed bottom-4 right-4 z-50 flex w-80 max-w-[calc(100vw-2rem)] flex-col gap-2", "data-testid": "toaster", children:
|
|
42
|
+
return (_jsx("div", { className: "pointer-events-none fixed bottom-4 right-4 z-50 flex w-80 max-w-[calc(100vw-2rem)] flex-col gap-2", "data-testid": "toaster", children: peeking.map((item) => (_jsx(ToastRow, { item: item, dismissLabel: dismissLabel }, item.id))) }));
|
|
52
43
|
}
|
|
53
44
|
//# sourceMappingURL=toast.js.map
|
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.99",
|
|
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.99"
|
|
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.99"
|
|
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",
|