@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.
Files changed (107) hide show
  1. package/dist/auth/index.js +3 -2
  2. package/dist/auth/security.d.ts +0 -4
  3. package/dist/auth/security.d.ts.map +1 -1
  4. package/dist/{chunk-ZDKSJY2K.js → chunk-C2MVDXD7.js} +1 -1
  5. package/dist/chunk-LZKVV4K2.js +30 -0
  6. package/dist/{chunk-MNK7XA6S.js → chunk-OUFUUBZ4.js} +1 -29
  7. package/dist/{chunk-EUNJDXYX.js → chunk-S2L3BPLS.js} +4 -3
  8. package/dist/chunk-WKZ7OENC.js +8 -0
  9. package/dist/{chunk-PKMPRW7T.js → chunk-YEOGH3QH.js} +1 -1
  10. package/dist/components/primitives/RichTextToolbar.d.ts.map +1 -1
  11. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  12. package/dist/hooks/useBuildStatus.d.ts +0 -1
  13. package/dist/hooks/useBuildStatus.d.ts.map +1 -1
  14. package/dist/hooks/useContentLifecycle.d.ts +0 -1
  15. package/dist/hooks/useContentLifecycle.d.ts.map +1 -1
  16. package/dist/hooks/useEditorPersistence.d.ts +2 -3
  17. package/dist/hooks/useEditorPersistence.d.ts.map +1 -1
  18. package/dist/hooks/useEditorPublish.d.ts.map +1 -1
  19. package/dist/index.js +13 -7
  20. package/dist/lib/dexie.d.ts +2 -2
  21. package/dist/lib/dexie.d.ts.map +1 -1
  22. package/dist/lib/env.d.ts +7 -0
  23. package/dist/lib/env.d.ts.map +1 -0
  24. package/dist/lib/env.js +6 -0
  25. package/dist/lib/index.d.ts +1 -0
  26. package/dist/lib/index.d.ts.map +1 -1
  27. package/dist/lib/index.js +6 -2
  28. package/dist/schemas/auth.js +12 -0
  29. package/dist/schemas/index.js +6 -4
  30. package/package.json +9 -1
  31. package/src/auth/security.ts +1 -4
  32. package/src/components/primitives/RichTextToolbar.tsx +18 -0
  33. package/src/components/primitives/tiptap-presets.ts +1 -1
  34. package/src/components/shell/EditorShell.tsx +16 -16
  35. package/src/hooks/useBuildStatus.ts +1 -5
  36. package/src/hooks/useContentLifecycle.ts +3 -4
  37. package/src/hooks/useEditorPersistence.ts +3 -19
  38. package/src/hooks/useEditorPublish.ts +78 -98
  39. package/src/lib/dexie.ts +3 -3
  40. package/src/lib/env.ts +13 -0
  41. package/src/lib/index.ts +1 -0
  42. package/src/components/brandguide/ColorSwatchSettings.d.ts +0 -8
  43. package/src/components/brandguide/Colors.d.ts +0 -15
  44. package/src/components/brandguide/DoDontList.d.ts +0 -16
  45. package/src/components/brandguide/DoDontMediaGrid.d.ts +0 -16
  46. package/src/components/primitives/CustomParagraph.d.ts +0 -2
  47. package/src/components/primitives/EditableGrid.d.ts +0 -19
  48. package/src/components/primitives/EditablePlainText.d.ts +0 -12
  49. package/src/components/primitives/EditableRichText.d.ts +0 -12
  50. package/src/components/primitives/HeadingSection.d.ts +0 -10
  51. package/src/components/primitives/IconPicker.d.ts +0 -9
  52. package/src/components/primitives/LinkPopover.d.ts +0 -8
  53. package/src/components/primitives/MediaSettingsForms.d.ts +0 -19
  54. package/src/components/primitives/ResolvedMedia.d.ts +0 -8
  55. package/src/components/primitives/RichTextToolbar.d.ts +0 -9
  56. package/src/components/primitives/tiptap-presets.d.ts +0 -4
  57. package/src/components/primitives/useEditableCollection.d.ts +0 -19
  58. package/src/components/primitives/useEditablePlainText.d.ts +0 -14
  59. package/src/components/primitives/useEditableRichText.d.ts +0 -17
  60. package/src/components/sections/Button/CTAButton.d.ts +0 -11
  61. package/src/components/sections/Button/index.d.ts +0 -11
  62. package/src/components/sections/Colors/index.d.ts +0 -22
  63. package/src/components/sections/DoDontList/index.d.ts +0 -21
  64. package/src/components/sections/DoDontMediaGrid/index.d.ts +0 -55
  65. package/src/components/sections/IconList/IconList.d.ts +0 -20
  66. package/src/components/sections/IconList/IconListSettings.d.ts +0 -11
  67. package/src/components/sections/IconList/index.d.ts +0 -17
  68. package/src/components/sections/LinkHeading/index.d.ts +0 -8
  69. package/src/components/sections/MediaGrid/MediaGrid.d.ts +0 -17
  70. package/src/components/sections/MediaGrid/index.d.ts +0 -55
  71. package/src/components/sections/Prose/Prose.d.ts +0 -8
  72. package/src/components/sections/Prose/index.d.ts +0 -8
  73. package/src/components/sections/SplitContent/SplitContent.d.ts +0 -11
  74. package/src/components/sections/SplitContent/index.d.ts +0 -13
  75. package/src/components/sections/SubHeading/index.d.ts +0 -9
  76. package/src/components/sections/SubSubHeading/index.d.ts +0 -9
  77. package/src/components/sections/register-schemas.d.ts +0 -2
  78. package/src/components/shared/Button.d.ts +0 -15
  79. package/src/components/shared/Checkbox.d.ts +0 -14
  80. package/src/components/shared/FormLabel.d.ts +0 -8
  81. package/src/components/shared/IconButton.d.ts +0 -12
  82. package/src/components/shared/Input.d.ts +0 -8
  83. package/src/components/shared/Select.d.ts +0 -16
  84. package/src/components/shared/icons.d.ts +0 -17
  85. package/src/components/shell/MediaLibraryContext.d.ts +0 -14
  86. package/src/env.d.ts +0 -3
  87. package/src/hooks/useResolvedMedia.d.ts +0 -9
  88. package/src/lib/cn.d.ts +0 -3
  89. package/src/lib/grid.d.ts +0 -2
  90. package/src/lib/icons.d.ts +0 -9
  91. package/src/lib/loader.d.ts +0 -28
  92. package/src/lib/nav.d.ts +0 -15
  93. package/src/lib/registry.d.ts +0 -110
  94. package/src/lib/sanitize.d.ts +0 -2
  95. package/src/media/github.d.ts +0 -3
  96. package/src/media/index.d.ts +0 -8
  97. package/src/media/queue.d.ts +0 -74
  98. package/src/media/resolve.d.ts +0 -14
  99. package/src/media/types.d.ts +0 -42
  100. package/src/media/utils.d.ts +0 -7
  101. package/src/media/videoPoster.d.ts +0 -6
  102. package/src/schemas/auth.d.ts +0 -36
  103. package/src/schemas/media-grid-options.d.ts +0 -8
  104. package/src/schemas/media.d.ts +0 -63
  105. package/src/schemas/sections.d.ts +0 -12
  106. package/src/schemas/shared.d.ts +0 -98
  107. package/src/schemas/site-config.d.ts +0 -48
@@ -6,12 +6,13 @@ import {
6
6
  setSessionCookie,
7
7
  signSessionToken,
8
8
  verifySessionToken
9
- } from "../chunk-PKMPRW7T.js";
9
+ } from "../chunk-YEOGH3QH.js";
10
10
  import {
11
11
  isSameOriginRequest,
12
12
  requireSessionSecret,
13
13
  safeNextPath
14
- } from "../chunk-EUNJDXYX.js";
14
+ } from "../chunk-S2L3BPLS.js";
15
+ import "../chunk-WKZ7OENC.js";
15
16
  export {
16
17
  AUDIENCE_COOKIE,
17
18
  LastOwnerError,
@@ -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":"AAAA;;;GAGG;AAMH,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"}
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"}
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-V43WVSVS.js";
7
7
  import {
8
8
  safeNextPath
9
- } from "./chunk-EUNJDXYX.js";
9
+ } from "./chunk-S2L3BPLS.js";
10
10
 
11
11
  // src/lib/cn.ts
12
12
  import { clsx } from "clsx";
@@ -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) {
@@ -0,0 +1,8 @@
1
+ // src/lib/env.ts
2
+ function env(key) {
3
+ return import.meta.env?.[key] ?? (typeof process !== "undefined" ? process.env?.[key] : void 0) ?? "";
4
+ }
5
+
6
+ export {
7
+ env
8
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  requireSessionSecret
3
- } from "./chunk-EUNJDXYX.js";
3
+ } from "./chunk-S2L3BPLS.js";
4
4
 
5
5
  // src/auth/cookies.ts
6
6
  import * as jose from "jose";
@@ -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,2CAuGvE"}
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;AAcxD,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,2CAsoBP"}
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,7 +1,6 @@
1
1
  type BuildState = "idle" | "building" | "ready" | "error" | "fading";
2
2
  interface BuildStatusResult {
3
3
  state: BuildState;
4
- deployUrl: string | null;
5
4
  elapsedSeconds: number;
6
5
  startTracking: () => void;
7
6
  dismiss: () => void;
@@ -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,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAMD,wBAAgB,cAAc,IAAI,iBAAiB,CAyHlD"}
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;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,OAAO,EACP,eAAe,GAChB,EAAE,qBAAqB,GAAG,sBAAsB,CAchD"}
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: Record<string, unknown>) => Promise<void>;
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;AAUxD,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;kCA2C7D,MAAM,WAAW,cAAc;oCAQ/B,MAAM;;4BAc6B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EAyBzE"}
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;;;;;;EA+Qb"}
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
- slugifyAudienceName
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-ZDKSJY2K.js";
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-PKMPRW7T.js";
62
+ } from "./chunk-YEOGH3QH.js";
61
63
  import {
62
64
  isSameOriginRequest,
63
65
  requireSessionSecret,
64
66
  safeNextPath
65
- } from "./chunk-EUNJDXYX.js";
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,
@@ -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: Record<string, unknown>): Promise<void>;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ declare global {
2
+ interface ImportMeta {
3
+ readonly env?: Record<string, string | undefined>;
4
+ }
5
+ }
6
+ export declare function env(key: string): string;
7
+ //# sourceMappingURL=env.d.ts.map
@@ -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"}
@@ -0,0 +1,6 @@
1
+ import {
2
+ env
3
+ } from "../chunk-WKZ7OENC.js";
4
+ export {
5
+ env
6
+ };
@@ -1,3 +1,4 @@
1
+ export { env } from "./env";
1
2
  export { cn } from "./cn";
2
3
  export { generateNavLinks, toSectionId, type NavItem } from "./nav";
3
4
  export { deriveContrast } from "./contrast";
@@ -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-ZDKSJY2K.js";
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-EUNJDXYX.js";
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,
@@ -0,0 +1,12 @@
1
+ import {
2
+ AudienceSchema,
3
+ RoleSchema,
4
+ SessionSchema,
5
+ SiteUserSchema
6
+ } from "../chunk-LZKVV4K2.js";
7
+ export {
8
+ AudienceSchema,
9
+ RoleSchema,
10
+ SessionSchema,
11
+ SiteUserSchema
12
+ };
@@ -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
- slugifyAudienceName
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.31",
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"
@@ -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}
@@ -33,7 +33,7 @@ const basic: Extensions = [
33
33
  const rich: Extensions = [
34
34
  StarterKit.configure({
35
35
  paragraph: false,
36
- heading: false,
36
+ heading: { levels: [2, 3] },
37
37
  blockquote: false,
38
38
  codeBlock: false,
39
39
  horizontalRule: false,
@@ -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 as unknown as Record<string, unknown>);
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 as unknown as Record<string, unknown>);
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, deployUrl, elapsedSeconds, startTracking, dismiss };
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, hasSavedChanges };
24
+ return { buttonState: "saveAndPublish" as const };
26
25
  }
27
26
 
28
27
  if (hasSavedChanges) {
29
- return { buttonState: "publish" as const, hasSavedChanges };
28
+ return { buttonState: "publish" as const };
30
29
  }
31
30
 
32
- return { buttonState: "synced" as const, hasSavedChanges: false };
31
+ return { buttonState: "synced" as const };
33
32
  }, [savedSha, mainSha, hasLocalChanges]);
34
33
  }