@drawnagency/primitives 0.1.31 → 0.1.33
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/dist/auth/index.js +3 -2
- package/dist/auth/security.d.ts +0 -4
- package/dist/auth/security.d.ts.map +1 -1
- package/dist/{chunk-ZDKSJY2K.js → chunk-C2MVDXD7.js} +1 -1
- package/dist/chunk-LZKVV4K2.js +30 -0
- package/dist/{chunk-MNK7XA6S.js → chunk-OUFUUBZ4.js} +1 -29
- package/dist/{chunk-EUNJDXYX.js → chunk-S2L3BPLS.js} +4 -3
- package/dist/chunk-WKZ7OENC.js +8 -0
- package/dist/{chunk-PKMPRW7T.js → chunk-YEOGH3QH.js} +1 -1
- package/dist/components/primitives/RichTextToolbar.d.ts.map +1 -1
- package/dist/components/shell/EditorShell.d.ts.map +1 -1
- package/dist/hooks/useBuildStatus.d.ts +0 -1
- package/dist/hooks/useBuildStatus.d.ts.map +1 -1
- package/dist/hooks/useContentLifecycle.d.ts +0 -1
- package/dist/hooks/useContentLifecycle.d.ts.map +1 -1
- package/dist/hooks/useEditorPersistence.d.ts +2 -3
- package/dist/hooks/useEditorPersistence.d.ts.map +1 -1
- package/dist/hooks/useEditorPublish.d.ts.map +1 -1
- package/dist/index.js +13 -7
- package/dist/lib/dexie.d.ts +2 -2
- package/dist/lib/dexie.d.ts.map +1 -1
- package/dist/lib/env.d.ts +7 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/env.js +6 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +6 -2
- package/dist/schemas/auth.js +12 -0
- package/dist/schemas/index.js +6 -4
- package/package.json +9 -1
- package/src/auth/security.ts +1 -4
- package/src/components/primitives/RichTextToolbar.tsx +18 -0
- package/src/components/primitives/tiptap-presets.ts +1 -1
- package/src/components/shell/EditorShell.tsx +16 -16
- package/src/hooks/useBuildStatus.ts +1 -5
- package/src/hooks/useContentLifecycle.ts +3 -4
- package/src/hooks/useEditorPersistence.ts +3 -19
- package/src/hooks/useEditorPublish.ts +78 -98
- package/src/lib/dexie.ts +3 -3
- package/src/lib/env.ts +13 -0
- package/src/lib/index.ts +1 -0
- package/src/components/brandguide/ColorSwatchSettings.d.ts +0 -8
- package/src/components/brandguide/Colors.d.ts +0 -15
- package/src/components/brandguide/DoDontList.d.ts +0 -16
- package/src/components/brandguide/DoDontMediaGrid.d.ts +0 -16
- package/src/components/primitives/CustomParagraph.d.ts +0 -2
- package/src/components/primitives/EditableGrid.d.ts +0 -19
- package/src/components/primitives/EditablePlainText.d.ts +0 -12
- package/src/components/primitives/EditableRichText.d.ts +0 -12
- package/src/components/primitives/HeadingSection.d.ts +0 -10
- package/src/components/primitives/IconPicker.d.ts +0 -9
- package/src/components/primitives/LinkPopover.d.ts +0 -8
- package/src/components/primitives/MediaSettingsForms.d.ts +0 -19
- package/src/components/primitives/ResolvedMedia.d.ts +0 -8
- package/src/components/primitives/RichTextToolbar.d.ts +0 -9
- package/src/components/primitives/tiptap-presets.d.ts +0 -4
- package/src/components/primitives/useEditableCollection.d.ts +0 -19
- package/src/components/primitives/useEditablePlainText.d.ts +0 -14
- package/src/components/primitives/useEditableRichText.d.ts +0 -17
- package/src/components/sections/Button/CTAButton.d.ts +0 -11
- package/src/components/sections/Button/index.d.ts +0 -11
- package/src/components/sections/Colors/index.d.ts +0 -22
- package/src/components/sections/DoDontList/index.d.ts +0 -21
- package/src/components/sections/DoDontMediaGrid/index.d.ts +0 -55
- package/src/components/sections/IconList/IconList.d.ts +0 -20
- package/src/components/sections/IconList/IconListSettings.d.ts +0 -11
- package/src/components/sections/IconList/index.d.ts +0 -17
- package/src/components/sections/LinkHeading/index.d.ts +0 -8
- package/src/components/sections/MediaGrid/MediaGrid.d.ts +0 -17
- package/src/components/sections/MediaGrid/index.d.ts +0 -55
- package/src/components/sections/Prose/Prose.d.ts +0 -8
- package/src/components/sections/Prose/index.d.ts +0 -8
- package/src/components/sections/SplitContent/SplitContent.d.ts +0 -11
- package/src/components/sections/SplitContent/index.d.ts +0 -13
- package/src/components/sections/SubHeading/index.d.ts +0 -9
- package/src/components/sections/SubSubHeading/index.d.ts +0 -9
- package/src/components/sections/register-schemas.d.ts +0 -2
- package/src/components/shared/Button.d.ts +0 -15
- package/src/components/shared/Checkbox.d.ts +0 -14
- package/src/components/shared/FormLabel.d.ts +0 -8
- package/src/components/shared/IconButton.d.ts +0 -12
- package/src/components/shared/Input.d.ts +0 -8
- package/src/components/shared/Select.d.ts +0 -16
- package/src/components/shared/icons.d.ts +0 -17
- package/src/components/shell/MediaLibraryContext.d.ts +0 -14
- package/src/env.d.ts +0 -3
- package/src/hooks/useResolvedMedia.d.ts +0 -9
- package/src/lib/cn.d.ts +0 -3
- package/src/lib/grid.d.ts +0 -2
- package/src/lib/icons.d.ts +0 -9
- package/src/lib/loader.d.ts +0 -28
- package/src/lib/nav.d.ts +0 -15
- package/src/lib/registry.d.ts +0 -110
- package/src/lib/sanitize.d.ts +0 -2
- package/src/media/github.d.ts +0 -3
- package/src/media/index.d.ts +0 -8
- package/src/media/queue.d.ts +0 -74
- package/src/media/resolve.d.ts +0 -14
- package/src/media/types.d.ts +0 -42
- package/src/media/utils.d.ts +0 -7
- package/src/media/videoPoster.d.ts +0 -6
- package/src/schemas/auth.d.ts +0 -36
- package/src/schemas/media-grid-options.d.ts +0 -8
- package/src/schemas/media.d.ts +0 -63
- package/src/schemas/sections.d.ts +0 -12
- package/src/schemas/shared.d.ts +0 -98
- package/src/schemas/site-config.d.ts +0 -48
package/dist/auth/index.js
CHANGED
|
@@ -6,12 +6,13 @@ import {
|
|
|
6
6
|
setSessionCookie,
|
|
7
7
|
signSessionToken,
|
|
8
8
|
verifySessionToken
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-YEOGH3QH.js";
|
|
10
10
|
import {
|
|
11
11
|
isSameOriginRequest,
|
|
12
12
|
requireSessionSecret,
|
|
13
13
|
safeNextPath
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-S2L3BPLS.js";
|
|
15
|
+
import "../chunk-WKZ7OENC.js";
|
|
15
16
|
export {
|
|
16
17
|
AUDIENCE_COOKIE,
|
|
17
18
|
LastOwnerError,
|
package/dist/auth/security.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared auth security primitives: session secret loader, same-origin check,
|
|
3
|
-
* redirect-path validator. Imported by cookies.ts, middleware, and auth API routes.
|
|
4
|
-
*/
|
|
5
1
|
export declare function requireSessionSecret(): Uint8Array;
|
|
6
2
|
/**
|
|
7
3
|
* Same-origin check for CSRF protection on state-changing requests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/auth/security.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/auth/security.ts"],"names":[],"mappings":"AAMA,wBAAgB,oBAAoB,IAAI,UAAU,CAUjD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAY7D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO3E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// src/schemas/auth.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var RoleSchema = z.enum(["owner", "editor"]);
|
|
4
|
+
var SessionSchema = z.object({
|
|
5
|
+
userId: z.string().nullable(),
|
|
6
|
+
email: z.string().nullable(),
|
|
7
|
+
role: RoleSchema,
|
|
8
|
+
siteId: z.string()
|
|
9
|
+
});
|
|
10
|
+
var SiteUserSchema = z.object({
|
|
11
|
+
id: z.string(),
|
|
12
|
+
email: z.string(),
|
|
13
|
+
role: RoleSchema,
|
|
14
|
+
createdAt: z.string()
|
|
15
|
+
});
|
|
16
|
+
var AudienceSchema = z.object({
|
|
17
|
+
name: z.string(),
|
|
18
|
+
displayName: z.string(),
|
|
19
|
+
color: z.string().nullable(),
|
|
20
|
+
readonly: z.boolean(),
|
|
21
|
+
hasPassword: z.boolean(),
|
|
22
|
+
isDefault: z.boolean()
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
RoleSchema,
|
|
27
|
+
SessionSchema,
|
|
28
|
+
SiteUserSchema,
|
|
29
|
+
AudienceSchema
|
|
30
|
+
};
|
|
@@ -22,37 +22,9 @@ var MediaGridOptionsSchema = z2.object({
|
|
|
22
22
|
showCaptions: z2.boolean().optional()
|
|
23
23
|
}).default({});
|
|
24
24
|
|
|
25
|
-
// src/schemas/auth.ts
|
|
26
|
-
import { z as z3 } from "zod";
|
|
27
|
-
var RoleSchema = z3.enum(["owner", "editor"]);
|
|
28
|
-
var SessionSchema = z3.object({
|
|
29
|
-
userId: z3.string().nullable(),
|
|
30
|
-
email: z3.string().nullable(),
|
|
31
|
-
role: RoleSchema,
|
|
32
|
-
siteId: z3.string()
|
|
33
|
-
});
|
|
34
|
-
var SiteUserSchema = z3.object({
|
|
35
|
-
id: z3.string(),
|
|
36
|
-
email: z3.string(),
|
|
37
|
-
role: RoleSchema,
|
|
38
|
-
createdAt: z3.string()
|
|
39
|
-
});
|
|
40
|
-
var AudienceSchema = z3.object({
|
|
41
|
-
name: z3.string(),
|
|
42
|
-
displayName: z3.string(),
|
|
43
|
-
color: z3.string().nullable(),
|
|
44
|
-
readonly: z3.boolean(),
|
|
45
|
-
hasPassword: z3.boolean(),
|
|
46
|
-
isDefault: z3.boolean()
|
|
47
|
-
});
|
|
48
|
-
|
|
49
25
|
export {
|
|
50
26
|
AudienceNameSchema,
|
|
51
27
|
AudienceColorSchema,
|
|
52
28
|
slugifyAudienceName,
|
|
53
|
-
MediaGridOptionsSchema
|
|
54
|
-
RoleSchema,
|
|
55
|
-
SessionSchema,
|
|
56
|
-
SiteUserSchema,
|
|
57
|
-
AudienceSchema
|
|
29
|
+
MediaGridOptionsSchema
|
|
58
30
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
env
|
|
3
|
+
} from "./chunk-WKZ7OENC.js";
|
|
4
|
+
|
|
1
5
|
// src/auth/security.ts
|
|
2
|
-
function env(key) {
|
|
3
|
-
return import.meta.env?.[key] ?? (typeof process !== "undefined" ? process.env?.[key] : void 0) ?? "";
|
|
4
|
-
}
|
|
5
6
|
function requireSessionSecret() {
|
|
6
7
|
const secret = env("SESSION_SECRET");
|
|
7
8
|
if (!secret) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextToolbar.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/RichTextToolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB;AAoCD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"RichTextToolbar.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/RichTextToolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB;AAoCD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAyHvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAoDjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAoDjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,GACZ,EAAE,KAAK,2CAooBP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBuildStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useBuildStatus.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AASrE,UAAU,iBAAiB;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"useBuildStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useBuildStatus.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AASrE,UAAU,iBAAiB;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAMD,wBAAgB,cAAc,IAAI,iBAAiB,CAsHlD"}
|
|
@@ -6,7 +6,6 @@ interface ContentLifecycleInput {
|
|
|
6
6
|
}
|
|
7
7
|
interface ContentLifecycleResult {
|
|
8
8
|
buttonState: ButtonState;
|
|
9
|
-
hasSavedChanges: boolean;
|
|
10
9
|
}
|
|
11
10
|
export declare function useContentLifecycle({ savedSha, mainSha, hasLocalChanges, }: ContentLifecycleInput): ContentLifecycleResult;
|
|
12
11
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContentLifecycle.d.ts","sourceRoot":"","sources":["../../src/hooks/useContentLifecycle.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAE3D,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,UAAU,sBAAsB;IAC9B,WAAW,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"useContentLifecycle.d.ts","sourceRoot":"","sources":["../../src/hooks/useContentLifecycle.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAE3D,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,UAAU,sBAAsB;IAC9B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,OAAO,EACP,eAAe,GAChB,EAAE,qBAAqB,GAAG,sBAAsB,CAchD"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { SectionContent } from "../schemas/sections";
|
|
2
|
-
import type { SiteIndex } from "../schemas/site-config";
|
|
2
|
+
import type { SiteIndex, SiteConfig } from "../schemas/site-config";
|
|
3
3
|
export declare function useEditorPersistence(siteIndexRef: React.RefObject<SiteIndex>): {
|
|
4
4
|
markSectionDirty: (sectionId: string, content: SectionContent) => void;
|
|
5
|
-
markSectionDeleted: (sectionId: string) => void;
|
|
6
5
|
markIndexDirty: () => void;
|
|
7
|
-
persistConfig: (config:
|
|
6
|
+
persistConfig: (config: SiteConfig) => Promise<void>;
|
|
8
7
|
flushNow: () => Promise<void>;
|
|
9
8
|
cancelPendingFlush: () => void;
|
|
10
9
|
isConfigDirty: () => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditorPersistence.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPersistence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"useEditorPersistence.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPersistence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AASpE,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;kCAuC7D,MAAM,WAAW,cAAc;;4BAYI,UAAU;;;;;EAwB5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditorPublish.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPublish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAe/D,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,SAAS,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtF,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAQD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GAClB,EAAE,WAAW;;;;;;
|
|
1
|
+
{"version":3,"file":"useEditorPublish.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPublish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAe/D,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,SAAS,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtF,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAQD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GAClB,EAAE,WAAW;;;;;;EA2Pb"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AudienceColorSchema,
|
|
3
3
|
AudienceNameSchema,
|
|
4
|
-
AudienceSchema,
|
|
5
4
|
MediaGridOptionsSchema,
|
|
5
|
+
slugifyAudienceName
|
|
6
|
+
} from "./chunk-OUFUUBZ4.js";
|
|
7
|
+
import {
|
|
8
|
+
AudienceSchema,
|
|
6
9
|
RoleSchema,
|
|
7
10
|
SessionSchema,
|
|
8
|
-
SiteUserSchema
|
|
9
|
-
|
|
10
|
-
} from "./chunk-MNK7XA6S.js";
|
|
11
|
+
SiteUserSchema
|
|
12
|
+
} from "./chunk-LZKVV4K2.js";
|
|
11
13
|
import {
|
|
12
14
|
buildGoogleFontsUrl,
|
|
13
15
|
cn,
|
|
@@ -27,7 +29,7 @@ import {
|
|
|
27
29
|
safeRedirect,
|
|
28
30
|
sanitizeHtml,
|
|
29
31
|
toSectionId
|
|
30
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-C2MVDXD7.js";
|
|
31
33
|
import {
|
|
32
34
|
ColorItemSchema,
|
|
33
35
|
ColorSpaceSchema,
|
|
@@ -57,12 +59,15 @@ import {
|
|
|
57
59
|
setSessionCookie,
|
|
58
60
|
signSessionToken,
|
|
59
61
|
verifySessionToken
|
|
60
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-YEOGH3QH.js";
|
|
61
63
|
import {
|
|
62
64
|
isSameOriginRequest,
|
|
63
65
|
requireSessionSecret,
|
|
64
66
|
safeNextPath
|
|
65
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-S2L3BPLS.js";
|
|
68
|
+
import {
|
|
69
|
+
env
|
|
70
|
+
} from "./chunk-WKZ7OENC.js";
|
|
66
71
|
import {
|
|
67
72
|
EXT_TO_MIME,
|
|
68
73
|
MIME_TO_EXT,
|
|
@@ -121,6 +126,7 @@ export {
|
|
|
121
126
|
deriveContrast,
|
|
122
127
|
displayFilenameExt,
|
|
123
128
|
editModeEvent,
|
|
129
|
+
env,
|
|
124
130
|
formatTimestamp,
|
|
125
131
|
generateNavLinks,
|
|
126
132
|
generateVideoPoster,
|
package/dist/lib/dexie.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SectionContent } from "../schemas/sections";
|
|
2
|
-
import type { SiteIndex } from "../schemas/site-config";
|
|
2
|
+
import type { SiteIndex, SiteConfig } from "../schemas/site-config";
|
|
3
3
|
import type { LoadedSection } from "./loader";
|
|
4
4
|
import type { MediaManifest, MediaItem } from "../media/types";
|
|
5
5
|
export declare function initEditorStore(siteId: string): void;
|
|
@@ -14,7 +14,7 @@ export declare function restoreLocalChanges(): Promise<{
|
|
|
14
14
|
}>;
|
|
15
15
|
export declare function discardLocalChanges(): Promise<void>;
|
|
16
16
|
export declare function persistSiteIndex(index: SiteIndex, deletedSections?: string[]): Promise<void>;
|
|
17
|
-
export declare function persistSiteConfig(config:
|
|
17
|
+
export declare function persistSiteConfig(config: SiteConfig): Promise<void>;
|
|
18
18
|
export declare function hasLocalChanges(): Promise<boolean>;
|
|
19
19
|
export declare function getDirtySections(): Promise<{
|
|
20
20
|
sectionId: string;
|
package/dist/lib/dexie.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,UAAU;QAClB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;KACnD;CACF;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvC"}
|
package/dist/lib/env.js
ADDED
package/dist/lib/index.d.ts
CHANGED
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,uBAAuB,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,uBAAuB,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
safeRedirect,
|
|
18
18
|
sanitizeHtml,
|
|
19
19
|
toSectionId
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-C2MVDXD7.js";
|
|
21
21
|
import {
|
|
22
22
|
clearRegistry,
|
|
23
23
|
createRegistry,
|
|
@@ -29,7 +29,10 @@ import {
|
|
|
29
29
|
registerSchema,
|
|
30
30
|
registerSection
|
|
31
31
|
} from "../chunk-V43WVSVS.js";
|
|
32
|
-
import "../chunk-
|
|
32
|
+
import "../chunk-S2L3BPLS.js";
|
|
33
|
+
import {
|
|
34
|
+
env
|
|
35
|
+
} from "../chunk-WKZ7OENC.js";
|
|
33
36
|
import "../chunk-DKOUFIP6.js";
|
|
34
37
|
export {
|
|
35
38
|
buildGoogleFontsUrl,
|
|
@@ -42,6 +45,7 @@ export {
|
|
|
42
45
|
defineSection,
|
|
43
46
|
deriveContrast,
|
|
44
47
|
editModeEvent,
|
|
48
|
+
env,
|
|
45
49
|
formatTimestamp,
|
|
46
50
|
generateNavLinks,
|
|
47
51
|
getAllSchemas,
|
package/dist/schemas/index.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AudienceColorSchema,
|
|
3
3
|
AudienceNameSchema,
|
|
4
|
-
AudienceSchema,
|
|
5
4
|
MediaGridOptionsSchema,
|
|
5
|
+
slugifyAudienceName
|
|
6
|
+
} from "../chunk-OUFUUBZ4.js";
|
|
7
|
+
import {
|
|
8
|
+
AudienceSchema,
|
|
6
9
|
RoleSchema,
|
|
7
10
|
SessionSchema,
|
|
8
|
-
SiteUserSchema
|
|
9
|
-
|
|
10
|
-
} from "../chunk-MNK7XA6S.js";
|
|
11
|
+
SiteUserSchema
|
|
12
|
+
} from "../chunk-LZKVV4K2.js";
|
|
11
13
|
import {
|
|
12
14
|
ColorItemSchema,
|
|
13
15
|
ColorSpaceSchema,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drawnagency/primitives",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.33",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json",
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
"types": "./dist/schemas/index.d.ts",
|
|
13
13
|
"default": "./dist/schemas/index.js"
|
|
14
14
|
},
|
|
15
|
+
"./schemas/auth": {
|
|
16
|
+
"types": "./dist/schemas/auth.d.ts",
|
|
17
|
+
"default": "./dist/schemas/auth.js"
|
|
18
|
+
},
|
|
15
19
|
"./lib": {
|
|
16
20
|
"types": "./dist/lib/index.d.ts",
|
|
17
21
|
"default": "./dist/lib/index.js"
|
|
@@ -20,6 +24,10 @@
|
|
|
20
24
|
"types": "./dist/lib/dexie.d.ts",
|
|
21
25
|
"default": "./dist/lib/dexie.js"
|
|
22
26
|
},
|
|
27
|
+
"./lib/env": {
|
|
28
|
+
"types": "./dist/lib/env.d.ts",
|
|
29
|
+
"default": "./dist/lib/env.js"
|
|
30
|
+
},
|
|
23
31
|
"./auth": {
|
|
24
32
|
"types": "./dist/auth/index.d.ts",
|
|
25
33
|
"default": "./dist/auth/index.js"
|
package/src/auth/security.ts
CHANGED
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
* Shared auth security primitives: session secret loader, same-origin check,
|
|
3
3
|
* redirect-path validator. Imported by cookies.ts, middleware, and auth API routes.
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
function env(key: string): string {
|
|
7
|
-
return import.meta.env?.[key] ?? (typeof process !== "undefined" ? process.env?.[key] : undefined) ?? "";
|
|
8
|
-
}
|
|
5
|
+
import { env } from "../lib/env.js";
|
|
9
6
|
|
|
10
7
|
export function requireSessionSecret(): Uint8Array {
|
|
11
8
|
const secret = env("SESSION_SECRET");
|
|
@@ -127,6 +127,24 @@ export function RichTextToolbar({ editor, preset }: RichTextToolbarProps) {
|
|
|
127
127
|
|
|
128
128
|
<Separator />
|
|
129
129
|
|
|
130
|
+
{/* Headings */}
|
|
131
|
+
<ToolbarButton
|
|
132
|
+
isActive={editor.isActive("heading", { level: 2 })}
|
|
133
|
+
onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}
|
|
134
|
+
title="Heading 2"
|
|
135
|
+
>
|
|
136
|
+
H2
|
|
137
|
+
</ToolbarButton>
|
|
138
|
+
<ToolbarButton
|
|
139
|
+
isActive={editor.isActive("heading", { level: 3 })}
|
|
140
|
+
onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()}
|
|
141
|
+
title="Heading 3"
|
|
142
|
+
>
|
|
143
|
+
H3
|
|
144
|
+
</ToolbarButton>
|
|
145
|
+
|
|
146
|
+
<Separator />
|
|
147
|
+
|
|
130
148
|
{/* Paragraph variants */}
|
|
131
149
|
<ToolbarButton
|
|
132
150
|
isActive={isLargeActive}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fragment, useState, useCallback, useEffect, useRef, type ReactNode } from "react";
|
|
1
|
+
import { Fragment, useState, useCallback, useEffect, useRef, useMemo, type ReactNode } from "react";
|
|
2
2
|
|
|
3
3
|
import { monitorForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
|
|
4
4
|
import type { LoadedSection } from "../../lib/loader";
|
|
@@ -58,12 +58,6 @@ import ViewRenderer from "../sections/ViewRenderer";
|
|
|
58
58
|
|
|
59
59
|
export { useMediaLibrary } from "./MediaLibraryContext";
|
|
60
60
|
|
|
61
|
-
const typeOptions = getAllSections().map((def) => ({
|
|
62
|
-
type: def.type,
|
|
63
|
-
label: def.label,
|
|
64
|
-
icon: () => null,
|
|
65
|
-
}));
|
|
66
|
-
|
|
67
61
|
type ShellState =
|
|
68
62
|
| { phase: "loading-content" }
|
|
69
63
|
| { phase: "error"; message: string }
|
|
@@ -111,7 +105,6 @@ export default function EditorShell({
|
|
|
111
105
|
const [changedSectionIds, setChangedSectionIds] = useState<Set<string>>(new Set());
|
|
112
106
|
const [mainIndex, setMainIndex] = useState<SiteIndex | null>(null);
|
|
113
107
|
const [viewSections, setViewSections] = useState<LoadedSection[] | null>(null);
|
|
114
|
-
const [isLoadingViewContent, setIsLoadingViewContent] = useState(false);
|
|
115
108
|
const [showRestoreModal, setShowRestoreModal] = useState(false);
|
|
116
109
|
const [showOrderingModal, setShowOrderingModal] = useState(false);
|
|
117
110
|
const [isRestoring, setIsRestoring] = useState(false);
|
|
@@ -345,7 +338,7 @@ export default function EditorShell({
|
|
|
345
338
|
const parsed = SiteConfigSchema.safeParse(restored.siteConfig);
|
|
346
339
|
if (parsed.success) {
|
|
347
340
|
setSiteConfig(parsed.data);
|
|
348
|
-
persistence.persistConfig(parsed.data
|
|
341
|
+
persistence.persistConfig(parsed.data);
|
|
349
342
|
applySiteConfigPreview(parsed.data);
|
|
350
343
|
}
|
|
351
344
|
}
|
|
@@ -526,7 +519,7 @@ export default function EditorShell({
|
|
|
526
519
|
const handleSiteConfigChange = useCallback((config: SiteConfig) => {
|
|
527
520
|
setSiteConfig(config);
|
|
528
521
|
applySiteConfigPreview(config);
|
|
529
|
-
persistence.persistConfig(config
|
|
522
|
+
persistence.persistConfig(config);
|
|
530
523
|
setLocalChangesExist(true);
|
|
531
524
|
}, [applySiteConfigPreview, persistence]);
|
|
532
525
|
|
|
@@ -603,7 +596,6 @@ export default function EditorShell({
|
|
|
603
596
|
<EditorProvider>
|
|
604
597
|
<ViewBranchWatcher
|
|
605
598
|
setViewSections={setViewSections}
|
|
606
|
-
setIsLoadingViewContent={setIsLoadingViewContent}
|
|
607
599
|
/>
|
|
608
600
|
<HistoryWatcher />
|
|
609
601
|
<EditorModalProvider>
|
|
@@ -741,10 +733,8 @@ export default function EditorShell({
|
|
|
741
733
|
|
|
742
734
|
function ViewBranchWatcher({
|
|
743
735
|
setViewSections,
|
|
744
|
-
setIsLoadingViewContent,
|
|
745
736
|
}: {
|
|
746
737
|
setViewSections: (sections: LoadedSection[] | null) => void;
|
|
747
|
-
setIsLoadingViewContent: (loading: boolean) => void;
|
|
748
738
|
}) {
|
|
749
739
|
const { isEditMode, viewBranch } = useEditorContext();
|
|
750
740
|
|
|
@@ -755,15 +745,13 @@ function ViewBranchWatcher({
|
|
|
755
745
|
}
|
|
756
746
|
|
|
757
747
|
const branch = viewBranch === "live" ? "main" : "saved";
|
|
758
|
-
setIsLoadingViewContent(true);
|
|
759
748
|
|
|
760
749
|
fetch(`/api/content?branch=${branch}`)
|
|
761
750
|
.then((res) => res.json())
|
|
762
751
|
.then((data) => {
|
|
763
752
|
setViewSections(data.sections);
|
|
764
753
|
})
|
|
765
|
-
.catch(console.error)
|
|
766
|
-
.finally(() => setIsLoadingViewContent(false));
|
|
754
|
+
.catch(console.error);
|
|
767
755
|
}, [viewBranch, isEditMode]);
|
|
768
756
|
|
|
769
757
|
return null;
|
|
@@ -886,6 +874,18 @@ function EditorContent({
|
|
|
886
874
|
const [pendingInsertIndex, setPendingInsertIndex] = useState<number | null>(null);
|
|
887
875
|
const dismissPendingInsert = useCallback(() => setPendingInsertIndex(null), []);
|
|
888
876
|
|
|
877
|
+
const typeOptions = useMemo(
|
|
878
|
+
() =>
|
|
879
|
+
getAllSections().map((def) => ({
|
|
880
|
+
type: def.type,
|
|
881
|
+
label: def.label,
|
|
882
|
+
icon: def.icon
|
|
883
|
+
? () => <>{def.icon}</>
|
|
884
|
+
: () => null,
|
|
885
|
+
})),
|
|
886
|
+
[],
|
|
887
|
+
);
|
|
888
|
+
|
|
889
889
|
const editingEnabled = isEditMode && !isPublishing;
|
|
890
890
|
|
|
891
891
|
// In view mode, render viewSections (fetched from the selected branch).
|
|
@@ -11,7 +11,6 @@ interface BuildStatusResponse {
|
|
|
11
11
|
|
|
12
12
|
interface BuildStatusResult {
|
|
13
13
|
state: BuildState;
|
|
14
|
-
deployUrl: string | null;
|
|
15
14
|
elapsedSeconds: number;
|
|
16
15
|
startTracking: () => void;
|
|
17
16
|
dismiss: () => void;
|
|
@@ -23,7 +22,6 @@ const FADE_DURATION = 1000;
|
|
|
23
22
|
|
|
24
23
|
export function useBuildStatus(): BuildStatusResult {
|
|
25
24
|
const [state, setState] = useState<BuildState>("idle");
|
|
26
|
-
const [deployUrl, setDeployUrl] = useState<string | null>(null);
|
|
27
25
|
const [elapsedSeconds, setElapsedSeconds] = useState(0);
|
|
28
26
|
const pollRef = useRef<ReturnType<typeof setInterval> | null>(null);
|
|
29
27
|
const clearRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
@@ -76,7 +74,6 @@ export function useBuildStatus(): BuildStatusResult {
|
|
|
76
74
|
}
|
|
77
75
|
|
|
78
76
|
setState(data.state);
|
|
79
|
-
setDeployUrl(data.deployUrl);
|
|
80
77
|
|
|
81
78
|
if (data.state === "ready" || data.state === "error") {
|
|
82
79
|
stopPolling();
|
|
@@ -129,7 +126,6 @@ export function useBuildStatus(): BuildStatusResult {
|
|
|
129
126
|
const startTracking = useCallback(() => {
|
|
130
127
|
if (clearRef.current) { clearTimeout(clearRef.current); clearRef.current = null; }
|
|
131
128
|
setState("building");
|
|
132
|
-
setDeployUrl(null);
|
|
133
129
|
startTimer();
|
|
134
130
|
startPolling();
|
|
135
131
|
}, [startPolling, startTimer]);
|
|
@@ -141,5 +137,5 @@ export function useBuildStatus(): BuildStatusResult {
|
|
|
141
137
|
stopTimer();
|
|
142
138
|
}, [stopPolling, stopTimer]);
|
|
143
139
|
|
|
144
|
-
return { state,
|
|
140
|
+
return { state, elapsedSeconds, startTracking, dismiss };
|
|
145
141
|
}
|
|
@@ -10,7 +10,6 @@ interface ContentLifecycleInput {
|
|
|
10
10
|
|
|
11
11
|
interface ContentLifecycleResult {
|
|
12
12
|
buttonState: ButtonState;
|
|
13
|
-
hasSavedChanges: boolean;
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
export function useContentLifecycle({
|
|
@@ -22,13 +21,13 @@ export function useContentLifecycle({
|
|
|
22
21
|
const hasSavedChanges = savedSha !== null && savedSha !== mainSha;
|
|
23
22
|
|
|
24
23
|
if (hasLocalChanges) {
|
|
25
|
-
return { buttonState: "saveAndPublish" as const
|
|
24
|
+
return { buttonState: "saveAndPublish" as const };
|
|
26
25
|
}
|
|
27
26
|
|
|
28
27
|
if (hasSavedChanges) {
|
|
29
|
-
return { buttonState: "publish" as const
|
|
28
|
+
return { buttonState: "publish" as const };
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
return { buttonState: "synced" as const
|
|
31
|
+
return { buttonState: "synced" as const };
|
|
33
32
|
}, [savedSha, mainSha, hasLocalChanges]);
|
|
34
33
|
}
|