@drawnagency/primitives 0.1.105 → 0.1.107

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/cookies.d.ts +21 -1
  2. package/dist/auth/cookies.d.ts.map +1 -1
  3. package/dist/auth/index.d.ts +2 -1
  4. package/dist/auth/index.d.ts.map +1 -1
  5. package/dist/auth/index.js +3 -1
  6. package/dist/auth/types.d.ts +28 -0
  7. package/dist/auth/types.d.ts.map +1 -1
  8. package/dist/{chunk-PTOLUMGV.js → chunk-4RNF2DRG.js} +1 -0
  9. package/dist/{chunk-MUTHF2GT.js → chunk-5IZ2KTMU.js} +2 -2
  10. package/dist/{chunk-LZKVV4K2.js → chunk-6P4CJCXB.js} +7 -1
  11. package/dist/{chunk-CZLYECHC.js → chunk-AB3XVXI3.js} +4 -4
  12. package/dist/chunk-B7VBSE5X.js +12 -0
  13. package/dist/{chunk-BGHWUJFV.js → chunk-BOZUEKWL.js} +107 -171
  14. package/dist/{chunk-TGNS7D4F.js → chunk-CPTFFLK2.js} +1 -1
  15. package/dist/{chunk-26ALJO4K.js → chunk-D6TLUVOP.js} +1 -1
  16. package/dist/{chunk-EM5DFHDZ.js → chunk-GEENI3OC.js} +13 -4
  17. package/dist/chunk-GGXZZ77Z.js +70 -0
  18. package/dist/{chunk-X4PRBGB3.js → chunk-IPKZ5FU6.js} +83 -33
  19. package/dist/{chunk-CXQWLG6X.js → chunk-JIQBLG6Y.js} +23 -20
  20. package/dist/{chunk-EWNDBKYK.js → chunk-LUAI5DWR.js} +1 -1
  21. package/dist/chunk-NLQ5F3RQ.js +43 -0
  22. package/dist/{chunk-3COSXTOY.js → chunk-XBYJQ5RS.js} +1 -1
  23. package/dist/{chunk-WA6QPDJI.js → chunk-ZHHJVKU7.js} +6 -6
  24. package/dist/collab/rebase.js +2 -1
  25. package/dist/components/editor/SectionOrderingModal.d.ts.map +1 -1
  26. package/dist/components/editor/index.js +8 -7
  27. package/dist/components/primitives/index.js +7 -6
  28. package/dist/components/sections/Container/Container.d.ts.map +1 -1
  29. package/dist/components/sections/brand-guide.js +8 -7
  30. package/dist/components/sections/register-schemas.js +13 -12
  31. package/dist/components/sections/register.js +13 -12
  32. package/dist/components/shared/Navigation.d.ts +16 -1
  33. package/dist/components/shared/Navigation.d.ts.map +1 -1
  34. package/dist/components/shared/SectionSummaryRow.d.ts +24 -0
  35. package/dist/components/shared/SectionSummaryRow.d.ts.map +1 -0
  36. package/dist/components/shell/AudienceAddForm.d.ts +4 -1
  37. package/dist/components/shell/AudienceAddForm.d.ts.map +1 -1
  38. package/dist/components/shell/AudienceDetailsPanel.d.ts +28 -0
  39. package/dist/components/shell/AudienceDetailsPanel.d.ts.map +1 -0
  40. package/dist/components/shell/AudienceRow.d.ts +15 -1
  41. package/dist/components/shell/AudienceRow.d.ts.map +1 -1
  42. package/dist/components/shell/CredentialList.d.ts +18 -0
  43. package/dist/components/shell/CredentialList.d.ts.map +1 -0
  44. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  45. package/dist/components/shell/MediaLibraryModal.d.ts.map +1 -1
  46. package/dist/components/shell/SectionTypePicker.d.ts.map +1 -1
  47. package/dist/components/shell/SiteSettingsViewerAccess.d.ts.map +1 -1
  48. package/dist/components/shell/ViewerLoginForm.d.ts +5 -1
  49. package/dist/components/shell/ViewerLoginForm.d.ts.map +1 -1
  50. package/dist/index.js +47 -29
  51. package/dist/lib/audience-overview.d.ts +53 -0
  52. package/dist/lib/audience-overview.d.ts.map +1 -0
  53. package/dist/lib/audience-secret.d.ts +11 -0
  54. package/dist/lib/audience-secret.d.ts.map +1 -0
  55. package/dist/lib/audience-secret.js +70 -0
  56. package/dist/lib/container-ops.d.ts.map +1 -1
  57. package/dist/lib/events.d.ts +3 -0
  58. package/dist/lib/events.d.ts.map +1 -1
  59. package/dist/lib/index-ops.js +3 -2
  60. package/dist/lib/index.js +13 -12
  61. package/dist/lib/insert-menu.d.ts +7 -3
  62. package/dist/lib/insert-menu.d.ts.map +1 -1
  63. package/dist/lib/nav.d.ts.map +1 -1
  64. package/dist/lib/thumb-views.d.ts +17 -0
  65. package/dist/lib/thumb-views.d.ts.map +1 -0
  66. package/dist/media/index.js +4 -3
  67. package/dist/schemas/audience.d.ts +29 -0
  68. package/dist/schemas/audience.d.ts.map +1 -1
  69. package/dist/schemas/audience.js +24 -0
  70. package/dist/schemas/auth.d.ts +1 -0
  71. package/dist/schemas/auth.d.ts.map +1 -1
  72. package/dist/schemas/auth.js +1 -1
  73. package/dist/schemas/index.js +28 -12
  74. package/dist/schemas/site-config.d.ts +1 -1
  75. package/dist/schemas/site-config.d.ts.map +1 -1
  76. package/dist/types/database.d.ts +59 -5
  77. package/dist/types/database.d.ts.map +1 -1
  78. package/package.json +9 -1
  79. package/src/auth/cookies.ts +37 -4
  80. package/src/auth/index.ts +2 -1
  81. package/src/auth/types.ts +32 -0
  82. package/src/components/editor/SectionOrderingModal.tsx +8 -73
  83. package/src/components/sections/Container/Container.tsx +12 -2
  84. package/src/components/sections/IconList/IconList.tsx +75 -22
  85. package/src/components/shared/Navigation.tsx +113 -7
  86. package/src/components/shared/SectionSummaryRow.tsx +73 -0
  87. package/src/components/shell/AudienceAddForm.tsx +18 -9
  88. package/src/components/shell/AudienceDetailsPanel.tsx +263 -0
  89. package/src/components/shell/AudienceRow.tsx +55 -13
  90. package/src/components/shell/CredentialList.tsx +285 -0
  91. package/src/components/shell/EditorShell.tsx +98 -5
  92. package/src/components/shell/MediaLibraryModal.tsx +42 -5
  93. package/src/components/shell/SectionTypePicker.tsx +28 -2
  94. package/src/components/shell/SiteSettingsViewerAccess.tsx +57 -6
  95. package/src/components/shell/ViewerLoginForm.tsx +35 -15
  96. package/src/lib/audience-overview.ts +110 -0
  97. package/src/lib/audience-secret.ts +99 -0
  98. package/src/lib/container-ops.ts +6 -3
  99. package/src/lib/events.ts +3 -0
  100. package/src/lib/insert-menu.ts +38 -4
  101. package/src/lib/nav.ts +6 -2
  102. package/src/lib/thumb-views.ts +28 -0
  103. package/src/schemas/audience.ts +52 -0
  104. package/src/schemas/auth.ts +6 -0
  105. package/src/schemas/site-config.ts +1 -1
  106. package/src/types/database.ts +59 -5
  107. package/dist/chunk-ZDQ3TT47.js +0 -30
@@ -2,20 +2,21 @@ import {
2
2
  ColorItemSchema,
3
3
  ColorSpaceSchema,
4
4
  brandGuideSectionDefs
5
- } from "../../chunk-X4PRBGB3.js";
6
- import "../../chunk-MUTHF2GT.js";
5
+ } from "../../chunk-IPKZ5FU6.js";
7
6
  import "../../chunk-5THS4K5D.js";
8
- import "../../chunk-26ALJO4K.js";
9
- import "../../chunk-3COSXTOY.js";
7
+ import "../../chunk-5IZ2KTMU.js";
8
+ import "../../chunk-D6TLUVOP.js";
9
+ import "../../chunk-XBYJQ5RS.js";
10
10
  import "../../chunk-PZJL2S3Z.js";
11
11
  import "../../chunk-BS5AQHZG.js";
12
12
  import "../../chunk-WDSVHKAH.js";
13
- import "../../chunk-PTOLUMGV.js";
13
+ import "../../chunk-4RNF2DRG.js";
14
14
  import "../../chunk-7EOSDFS3.js";
15
- import "../../chunk-TGNS7D4F.js";
15
+ import "../../chunk-CPTFFLK2.js";
16
16
  import "../../chunk-VKAGMEKE.js";
17
- import "../../chunk-BGHWUJFV.js";
17
+ import "../../chunk-BOZUEKWL.js";
18
18
  import "../../chunk-FM4M4Q2W.js";
19
+ import "../../chunk-GGXZZ77Z.js";
19
20
  import "../../chunk-JSBRDJBE.js";
20
21
  export {
21
22
  ColorItemSchema,
@@ -1,29 +1,30 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-CXQWLG6X.js";
4
- import "../../chunk-EWNDBKYK.js";
5
- import "../../chunk-X4PRBGB3.js";
6
- import "../../chunk-MUTHF2GT.js";
7
- import "../../chunk-WA6QPDJI.js";
8
- import "../../chunk-ZSPCE6MZ.js";
3
+ } from "../../chunk-JIQBLG6Y.js";
4
+ import "../../chunk-IPKZ5FU6.js";
5
+ import "../../chunk-ZHHJVKU7.js";
9
6
  import "../../chunk-5THS4K5D.js";
10
- import "../../chunk-26ALJO4K.js";
7
+ import "../../chunk-LUAI5DWR.js";
8
+ import "../../chunk-5IZ2KTMU.js";
9
+ import "../../chunk-ZSPCE6MZ.js";
10
+ import "../../chunk-D6TLUVOP.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
12
- import "../../chunk-3COSXTOY.js";
12
+ import "../../chunk-XBYJQ5RS.js";
13
13
  import "../../chunk-PZJL2S3Z.js";
14
14
  import "../../chunk-BS5AQHZG.js";
15
- import "../../chunk-72CG6AA2.js";
16
15
  import "../../chunk-WDSVHKAH.js";
17
- import "../../chunk-PTOLUMGV.js";
16
+ import "../../chunk-4RNF2DRG.js";
17
+ import "../../chunk-72CG6AA2.js";
18
18
  import "../../chunk-7EOSDFS3.js";
19
- import "../../chunk-TGNS7D4F.js";
19
+ import "../../chunk-CPTFFLK2.js";
20
20
  import "../../chunk-TZQPOR5A.js";
21
21
  import {
22
22
  registerRichText,
23
23
  registerSchema
24
24
  } from "../../chunk-VKAGMEKE.js";
25
- import "../../chunk-BGHWUJFV.js";
25
+ import "../../chunk-BOZUEKWL.js";
26
26
  import "../../chunk-FM4M4Q2W.js";
27
+ import "../../chunk-GGXZZ77Z.js";
27
28
  import "../../chunk-NSCT3AMV.js";
28
29
  import "../../chunk-JSBRDJBE.js";
29
30
 
@@ -1,28 +1,29 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-CXQWLG6X.js";
4
- import "../../chunk-EWNDBKYK.js";
5
- import "../../chunk-X4PRBGB3.js";
6
- import "../../chunk-MUTHF2GT.js";
7
- import "../../chunk-WA6QPDJI.js";
8
- import "../../chunk-ZSPCE6MZ.js";
3
+ } from "../../chunk-JIQBLG6Y.js";
4
+ import "../../chunk-IPKZ5FU6.js";
5
+ import "../../chunk-ZHHJVKU7.js";
9
6
  import "../../chunk-5THS4K5D.js";
10
- import "../../chunk-26ALJO4K.js";
7
+ import "../../chunk-LUAI5DWR.js";
8
+ import "../../chunk-5IZ2KTMU.js";
9
+ import "../../chunk-ZSPCE6MZ.js";
10
+ import "../../chunk-D6TLUVOP.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
12
- import "../../chunk-3COSXTOY.js";
12
+ import "../../chunk-XBYJQ5RS.js";
13
13
  import "../../chunk-PZJL2S3Z.js";
14
14
  import "../../chunk-BS5AQHZG.js";
15
- import "../../chunk-72CG6AA2.js";
16
15
  import "../../chunk-WDSVHKAH.js";
17
- import "../../chunk-PTOLUMGV.js";
16
+ import "../../chunk-4RNF2DRG.js";
17
+ import "../../chunk-72CG6AA2.js";
18
18
  import "../../chunk-7EOSDFS3.js";
19
- import "../../chunk-TGNS7D4F.js";
19
+ import "../../chunk-CPTFFLK2.js";
20
20
  import "../../chunk-TZQPOR5A.js";
21
21
  import {
22
22
  registerSection
23
23
  } from "../../chunk-VKAGMEKE.js";
24
- import "../../chunk-BGHWUJFV.js";
24
+ import "../../chunk-BOZUEKWL.js";
25
25
  import "../../chunk-FM4M4Q2W.js";
26
+ import "../../chunk-GGXZZ77Z.js";
26
27
  import "../../chunk-NSCT3AMV.js";
27
28
  import "../../chunk-JSBRDJBE.js";
28
29
 
@@ -15,7 +15,22 @@ interface Props {
15
15
  * the freed column to chat. Static per page render — deliberately keyed to
16
16
  * chat being ENABLED, not open, so the nav never flaps when chat toggles. */
17
17
  desktopBreakpoint?: "lg" | "xl";
18
+ /** Link to the auto-generated Audience Details page, or null to omit it.
19
+ * The caller owns the gate (editors and the default audience only), because
20
+ * only it knows the requester — this component just renders what it is told. */
21
+ audienceDetailsHref?: string | null;
22
+ /** Highlight the Audience details link as the current page. Passed by the
23
+ * /audiences route; the editor sets it locally when its own surface is open. */
24
+ audienceDetailsActive?: boolean;
25
+ /** Who is signed in, for the bottom identity row and its log-out button.
26
+ * Null on a public (password-disabled) site, where nobody is signed in.
27
+ * `kind` only picks the post-logout destination. */
28
+ identity?: {
29
+ label: string;
30
+ sublabel?: string;
31
+ kind: "editor" | "viewer";
32
+ } | null;
18
33
  }
19
- export default function Navigation({ siteNav: initialNav, siteName, darkMode, lastUpdated, logo, onPageSelect, desktopBreakpoint }: Props): import("react/jsx-runtime").JSX.Element;
34
+ export default function Navigation({ siteNav: initialNav, siteName, darkMode, lastUpdated, logo, onPageSelect, desktopBreakpoint, audienceDetailsHref, audienceDetailsActive, identity }: Props): import("react/jsx-runtime").JSX.Element;
20
35
  export {};
21
36
  //# sourceMappingURL=Navigation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.d.ts","sourceRoot":"","sources":["../../../src/components/shared/Navigation.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAmE,MAAM,eAAe,CAAC;AAS9G,UAAU,KAAK;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAGlF,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;kFAG8E;IAC9E,iBAAiB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACjC;AAQD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAwB,EAAE,EAAE,KAAK,2CA+V/I"}
1
+ {"version":3,"file":"Navigation.d.ts","sourceRoot":"","sources":["../../../src/components/shared/Navigation.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAmE,MAAM,eAAe,CAAC;AAS9G,UAAU,KAAK;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAGlF,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;kFAG8E;IAC9E,iBAAiB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC;;qFAEiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC;qFACiF;IACjF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;yDAEqD;IACrD,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACnF;AAQD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAwB,EAAE,mBAA0B,EAAE,qBAA6B,EAAE,QAAe,EAAE,EAAE,KAAK,2CA8b3N"}
@@ -0,0 +1,24 @@
1
+ import type { ReactNode } from "react";
2
+ import type { ThumbView } from "../../lib/thumb-views";
3
+ interface Props {
4
+ /** Section's own label (registry getLabel), e.g. its heading. */
5
+ label: string;
6
+ /** Section type's display name, e.g. "Colour palette". */
7
+ typeLabel: string;
8
+ /** Already resolved to URLs/colours by the caller. Rendered at most 3 + count. */
9
+ thumbnails: ThumbView[];
10
+ /** Dim the row (audience overview: this section isn't visible to them). */
11
+ muted?: boolean;
12
+ /** Slot at the right edge, before the thumbnails — badges, status pills. */
13
+ trailing?: ReactNode;
14
+ className?: string;
15
+ }
16
+ /**
17
+ * One section as a compact card: type over label, with a thumbnail cluster.
18
+ * Shared by the reorder modal (which wraps it in a drag handle + drop
19
+ * indicator) and the Audience Details page (which dims unavailable rows), so
20
+ * both read as the same list of the same site.
21
+ */
22
+ export declare function SectionSummaryRow({ label, typeLabel, thumbnails, muted, trailing, className }: Props): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=SectionSummaryRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionSummaryRow.d.ts","sourceRoot":"","sources":["../../../src/components/shared/SectionSummaryRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,UAAU,KAAK;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,2CA8CpG"}
@@ -5,7 +5,10 @@ interface Props {
5
5
  password: string;
6
6
  }) => Promise<void>;
7
7
  onCancel: () => void;
8
+ /** Credential mode: an audience has no password of its own — access comes from
9
+ * the named sign-ins added to it afterwards, so the field is hidden. */
10
+ requirePassword?: boolean;
8
11
  }
9
- export declare function AudienceAddForm({ onSubmit, onCancel }: Props): import("react/jsx-runtime").JSX.Element;
12
+ export declare function AudienceAddForm({ onSubmit, onCancel, requirePassword }: Props): import("react/jsx-runtime").JSX.Element;
10
13
  export {};
11
14
  //# sourceMappingURL=AudienceAddForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudienceAddForm.d.ts","sourceRoot":"","sources":["../../../src/components/shell/AudienceAddForm.tsx"],"names":[],"mappings":"AAOA,UAAU,KAAK;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,2CA+E5D"}
1
+ {"version":3,"file":"AudienceAddForm.d.ts","sourceRoot":"","sources":["../../../src/components/shell/AudienceAddForm.tsx"],"names":[],"mappings":"AAOA,UAAU,KAAK;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;6EACyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAID,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAsB,EAAE,EAAE,KAAK,2CAqFpF"}
@@ -0,0 +1,28 @@
1
+ import type { AudienceOverview } from "../../lib/audience-overview";
2
+ /** One audience plus its resolved availability. Built server-side. */
3
+ export interface AudienceDetail {
4
+ name: string;
5
+ displayName: string;
6
+ color: string | null;
7
+ isDefault: boolean;
8
+ hasPassword: boolean;
9
+ /** Named sign-ins that grant this audience. Empty in `.env`/audience mode. */
10
+ credentials: Array<{
11
+ username: string;
12
+ label: string | null;
13
+ }>;
14
+ overview: AudienceOverview;
15
+ }
16
+ interface Props {
17
+ audiences: AudienceDetail[];
18
+ /** False when the auth provider cannot store a reversible password at all. */
19
+ revealSupported: boolean;
20
+ }
21
+ /**
22
+ * The Audience Details page body: who can see what, and what password to share.
23
+ * Reachable by editors and the site's default audience (the client), so the
24
+ * client can hand a new partner access without going through us.
25
+ */
26
+ export declare function AudienceDetailsPanel({ audiences, revealSupported }: Props): import("react/jsx-runtime").JSX.Element;
27
+ export default AudienceDetailsPanel;
28
+ //# sourceMappingURL=AudienceDetailsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudienceDetailsPanel.d.ts","sourceRoot":"","sources":["../../../src/components/shell/AudienceDetailsPanel.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,6BAA6B,CAAC;AAElF,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC/D,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,UAAU,KAAK;IACb,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,8EAA8E;IAC9E,eAAe,EAAE,OAAO,CAAC;CAC1B;AAwND;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,KAAK,2CAgBzE;AAED,eAAe,oBAAoB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { Audience } from "../../auth/types";
2
+ import type { ViewerCredential } from "../../schemas/audience";
2
3
  interface Props {
3
4
  audience: Audience;
4
5
  isDefault: boolean;
@@ -9,7 +10,20 @@ interface Props {
9
10
  password?: string;
10
11
  }) => Promise<void>;
11
12
  onDelete: () => Promise<void>;
13
+ /** Named sign-ins for this audience. Undefined in `.env`/audience mode, where
14
+ * the row keeps its single audience-level password field. */
15
+ credentials?: ViewerCredential[];
16
+ credentialActions?: {
17
+ create: (data: {
18
+ username: string;
19
+ label: string | null;
20
+ password: string;
21
+ }) => Promise<void>;
22
+ setPassword: (username: string, password: string) => Promise<void>;
23
+ setLabel: (username: string, label: string | null) => Promise<void>;
24
+ delete: (username: string) => Promise<void>;
25
+ };
12
26
  }
13
- export declare function AudienceRow({ audience, isDefault, canMutate, onSave, onDelete, }: Props): import("react/jsx-runtime").JSX.Element;
27
+ export declare function AudienceRow({ audience, isDefault, canMutate, onSave, onDelete, credentials, credentialActions, }: Props): import("react/jsx-runtime").JSX.Element;
14
28
  export {};
15
29
  //# sourceMappingURL=AudienceRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudienceRow.d.ts","sourceRoot":"","sources":["../../../src/components/shell/AudienceRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMjD,UAAU,KAAK;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAID,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,GACT,EAAE,KAAK,2CAmJP"}
1
+ {"version":3,"file":"AudienceRow.d.ts","sourceRoot":"","sources":["../../../src/components/shell/AudienceRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,UAAU,KAAK;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B;kEAC8D;IAC9D,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE;QAClB,MAAM,EAAE,CAAC,IAAI,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9F,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACnE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7C,CAAC;CACH;AAID,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,WAAW,EACX,iBAAiB,GAClB,EAAE,KAAK,2CAgLP"}
@@ -0,0 +1,18 @@
1
+ import type { ViewerCredential } from "../../schemas/audience";
2
+ interface Props {
3
+ audienceName: string;
4
+ credentials: ViewerCredential[];
5
+ canMutate: boolean;
6
+ onCreate: (data: {
7
+ username: string;
8
+ label: string | null;
9
+ password: string;
10
+ }) => Promise<void>;
11
+ onSetPassword: (username: string, password: string) => Promise<void>;
12
+ onSetLabel: (username: string, label: string | null) => Promise<void>;
13
+ onDelete: (username: string) => Promise<void>;
14
+ }
15
+ /** The named sign-ins for one audience, inside its Site Settings row. */
16
+ export declare function CredentialList({ audienceName, credentials, canMutate, onCreate, onSetPassword, onSetLabel, onDelete, }: Props): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=CredentialList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CredentialList.d.ts","sourceRoot":"","sources":["../../../src/components/shell/CredentialList.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,UAAU,KAAK;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAuOD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,GACpF,EAAE,KAAK,2CA6BP"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAejD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAyDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AA2CnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA2BxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,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;IAIhE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAKjC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,EACX,sBAA8B,EAC9B,eAAe,GAChB,EAAE,KAAK,2CAg3DP;AAwED;6EAC6E;AAC7E,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,EACvC,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,eAAe,EAAE,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B"}
1
+ {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAejD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAyDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AA+CnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA2BxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,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;IAIhE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAKjC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,EACX,sBAA8B,EAC9B,eAAe,GAChB,EAAE,KAAK,2CAs8DP;AAwED;6EAC6E;AAC7E,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,EACvC,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,eAAe,EAAE,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaLibraryModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryModal.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SectionTypePicker.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SectionTypePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC9C;AAED,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,sBAAsB,2CAmCnG"}
1
+ {"version":3,"file":"SectionTypePicker.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SectionTypePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC9C;AAKD,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,sBAAsB,2CA0DnG"}
@@ -1 +1 @@
1
- {"version":3,"file":"SiteSettingsViewerAccess.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsViewerAccess.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOjD,UAAU,KAAK;IACb,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;CACpD;AAED,wBAAgB,wBAAwB,CAAC,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,EAAE,KAAK,2CA4JxG"}
1
+ {"version":3,"file":"SiteSettingsViewerAccess.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsViewerAccess.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQjD,UAAU,KAAK;IACb,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;CACpD;AAQD,wBAAgB,wBAAwB,CAAC,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,EAAE,KAAK,2CAwMxG"}
@@ -1,11 +1,15 @@
1
1
  interface Props {
2
+ /** Audience mode only. Empty (and unused) in credential mode — the page must
3
+ * not ship an audience list to a login form that doesn't offer the choice. */
2
4
  audiences: Array<{
3
5
  name: string;
4
6
  displayName: string;
5
7
  hasPassword?: boolean;
6
8
  }>;
9
+ /** Set by the page from the auth provider's capability, never by the client. */
10
+ mode?: "audience" | "credentials";
7
11
  next?: string | null;
8
12
  }
9
- export declare function ViewerLoginForm({ audiences, next }: Props): import("react/jsx-runtime").JSX.Element;
13
+ export declare function ViewerLoginForm({ audiences, mode, next }: Props): import("react/jsx-runtime").JSX.Element;
10
14
  export {};
11
15
  //# sourceMappingURL=ViewerLoginForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewerLoginForm.d.ts","sourceRoot":"","sources":["../../../src/components/shell/ViewerLoginForm.tsx"],"names":[],"mappings":"AAMA,UAAU,KAAK;IACb,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/E,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,2CAuFzD"}
1
+ {"version":3,"file":"ViewerLoginForm.d.ts","sourceRoot":"","sources":["../../../src/components/shell/ViewerLoginForm.tsx"],"names":[],"mappings":"AAOA,UAAU,KAAK;IACb;mFAC+E;IAC/E,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/E,gFAAgF;IAChF,IAAI,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,IAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,2CAsG5E"}
package/dist/index.js CHANGED
@@ -9,9 +9,10 @@ import {
9
9
  setSessionCookie,
10
10
  signAudienceToken,
11
11
  signSessionToken,
12
+ verifyAudienceClaims,
12
13
  verifyAudienceToken,
13
14
  verifySessionToken
14
- } from "./chunk-EM5DFHDZ.js";
15
+ } from "./chunk-GEENI3OC.js";
15
16
  import {
16
17
  ASSET_CACHE_CONTROL,
17
18
  DOCUMENT_CACHE_CONTROL,
@@ -54,19 +55,27 @@ import {
54
55
  resolveMedia,
55
56
  sanitizeMediaName,
56
57
  setMediaProvider
57
- } from "./chunk-3COSXTOY.js";
58
+ } from "./chunk-XBYJQ5RS.js";
58
59
  import {
59
- AudienceColorSchema,
60
- AudienceNameSchema,
61
- MediaGridOptionsSchema,
62
- slugifyAudienceName
63
- } from "./chunk-ZDQ3TT47.js";
60
+ MediaGridOptionsSchema
61
+ } from "./chunk-B7VBSE5X.js";
64
62
  import {
65
63
  AudienceSchema,
66
64
  RoleSchema,
67
65
  SessionSchema,
68
66
  SiteUserSchema
69
- } from "./chunk-LZKVV4K2.js";
67
+ } from "./chunk-6P4CJCXB.js";
68
+ import {
69
+ AudienceColorSchema,
70
+ AudienceNameSchema,
71
+ NormalizedUsernameSchema,
72
+ VIEWER_PASSWORD_MIN_LENGTH,
73
+ ViewerCredentialSchema,
74
+ ViewerPasswordSchema,
75
+ ViewerUsernameSchema,
76
+ normalizeUsername,
77
+ slugifyAudienceName
78
+ } from "./chunk-NLQ5F3RQ.js";
70
79
  import {
71
80
  DEFAULT_LINK,
72
81
  LinkTargetSchema,
@@ -105,18 +114,8 @@ import {
105
114
  safeRedirect,
106
115
  suggestAccessibleOn,
107
116
  wcagLevel
108
- } from "./chunk-CZLYECHC.js";
109
- import {
110
- isSameOriginRequest,
111
- requireSessionSecret,
112
- safeNextPath
113
- } from "./chunk-S2L3BPLS.js";
114
- import {
115
- ensureSanitizer,
116
- generateNavLinks,
117
- sanitizeHtml,
118
- toSectionId
119
- } from "./chunk-72CG6AA2.js";
117
+ } from "./chunk-AB3XVXI3.js";
118
+ import "./chunk-5BM2Y3NJ.js";
120
119
  import {
121
120
  curatedIcons,
122
121
  getIcon
@@ -126,10 +125,21 @@ import {
126
125
  darkModeEvent,
127
126
  editModeEvent,
128
127
  navChangeEvent
129
- } from "./chunk-PTOLUMGV.js";
128
+ } from "./chunk-4RNF2DRG.js";
129
+ import {
130
+ ensureSanitizer,
131
+ generateNavLinks,
132
+ sanitizeHtml,
133
+ toSectionId
134
+ } from "./chunk-72CG6AA2.js";
130
135
  import {
131
136
  cn
132
137
  } from "./chunk-7EOSDFS3.js";
138
+ import {
139
+ isSameOriginRequest,
140
+ requireSessionSecret,
141
+ safeNextPath
142
+ } from "./chunk-S2L3BPLS.js";
133
143
  import {
134
144
  env
135
145
  } from "./chunk-WKZ7OENC.js";
@@ -140,8 +150,7 @@ import {
140
150
  navEntries,
141
151
  pagesInNavOrder,
142
152
  reconcileNav
143
- } from "./chunk-TGNS7D4F.js";
144
- import "./chunk-5BM2Y3NJ.js";
153
+ } from "./chunk-CPTFFLK2.js";
145
154
  import {
146
155
  NavEntrySchema,
147
156
  NavFileSchema
@@ -164,27 +173,29 @@ import {
164
173
  import {
165
174
  ChatbotConfigSchema,
166
175
  ChatbotTaskSchema,
167
- FontNameSchema,
168
- HexColorSchema,
169
176
  ImageManifestSchema,
170
177
  IndexSchema,
171
178
  MediaConfigSchema,
172
179
  MediaFolderSchema,
173
180
  MediaItemSchema,
174
- MediaReferenceSchema,
175
181
  PageSchema,
176
182
  PageStatusSchema,
177
183
  RESERVED_SLUGS,
178
184
  SLUG_RE,
179
185
  SectionMetaSchema,
180
- SingleMediaReferenceSchema,
181
186
  SiteConfigSchema,
182
187
  StatusSchema,
183
- TextLineSchema,
184
188
  VariantSchema,
185
189
  normalizeSiteIndex
186
- } from "./chunk-BGHWUJFV.js";
190
+ } from "./chunk-BOZUEKWL.js";
187
191
  import "./chunk-FM4M4Q2W.js";
192
+ import {
193
+ FontNameSchema,
194
+ HexColorSchema,
195
+ MediaReferenceSchema,
196
+ SingleMediaReferenceSchema,
197
+ TextLineSchema
198
+ } from "./chunk-GGXZZ77Z.js";
188
199
  import "./chunk-NSCT3AMV.js";
189
200
  import "./chunk-JSBRDJBE.js";
190
201
  export {
@@ -230,6 +241,7 @@ export {
230
241
  MediaReferenceSchema,
231
242
  NavEntrySchema,
232
243
  NavFileSchema,
244
+ NormalizedUsernameSchema,
233
245
  PageSchema,
234
246
  PageStatusSchema,
235
247
  ProcessingQueue,
@@ -250,7 +262,11 @@ export {
250
262
  StorageConflictError,
251
263
  TakeoverMessageSchema,
252
264
  TextLineSchema,
265
+ VIEWER_PASSWORD_MIN_LENGTH,
253
266
  VariantSchema,
267
+ ViewerCredentialSchema,
268
+ ViewerPasswordSchema,
269
+ ViewerUsernameSchema,
254
270
  accentVarValue,
255
271
  audiencePasses,
256
272
  buildGoogleFontsUrl,
@@ -301,6 +317,7 @@ export {
301
317
  navChangeEvent,
302
318
  navEntries,
303
319
  normalizeSiteIndex,
320
+ normalizeUsername,
304
321
  onPrimaryVarValue,
305
322
  pagesInNavOrder,
306
323
  primaryVarValue,
@@ -327,6 +344,7 @@ export {
327
344
  slugifyAudienceName,
328
345
  suggestAccessibleOn,
329
346
  toSectionId,
347
+ verifyAudienceClaims,
330
348
  verifyAudienceToken,
331
349
  verifySessionToken,
332
350
  wcagLevel,
@@ -0,0 +1,53 @@
1
+ /**
2
+ * What each audience can actually see. Powers the Audience Details page, which
3
+ * answers "if I give a partner this password, what do they get?".
4
+ *
5
+ * Pure and view-agnostic: section labels/thumbnails are resolved by the caller
6
+ * (they need the section registry and the media provider) and passed in, so this
7
+ * stays trivially testable and ships no registry into viewer JS.
8
+ */
9
+ import type { SiteIndex } from "../schemas/site-config";
10
+ import type { ThumbView } from "./thumb-views";
11
+ /** Caller-resolved presentation for one section. */
12
+ export interface SectionDisplay {
13
+ label: string;
14
+ typeLabel: string;
15
+ thumbnails: ThumbView[];
16
+ }
17
+ export interface OverviewSection extends SectionDisplay {
18
+ id: string;
19
+ available: boolean;
20
+ /** Live-but-draft sections are invisible to EVERY audience, not just this one. */
21
+ draft: boolean;
22
+ }
23
+ export interface OverviewPage {
24
+ id: string;
25
+ title: string;
26
+ slug: string;
27
+ href: string;
28
+ /** Live but off the sidebar — reachable by URL, so it counts as available. */
29
+ hiddenFromNav: boolean;
30
+ /** none = the page itself is gated away; partial = page in, some sections out. */
31
+ availability: "full" | "partial" | "none";
32
+ sections: OverviewSection[];
33
+ }
34
+ export interface AudienceOverview {
35
+ audience: string;
36
+ pages: OverviewPage[];
37
+ pagesAvailable: number;
38
+ pagesTotal: number;
39
+ sectionsAvailable: number;
40
+ sectionsTotal: number;
41
+ }
42
+ /**
43
+ * Availability for one audience across the whole site.
44
+ *
45
+ * Archived pages are excluded outright (nobody can reach them). Draft sections
46
+ * are listed as unavailable but flagged, so a page reading "3 of 8" is not
47
+ * mistaken for an access problem.
48
+ *
49
+ * The cascade matters: a section whose own access allows this audience is still
50
+ * unavailable inside a page that gates them out. Page access wins.
51
+ */
52
+ export declare function buildAudienceOverview(index: SiteIndex, display: (sectionId: string) => SectionDisplay, audience: string): AudienceOverview;
53
+ //# sourceMappingURL=audience-overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audience-overview.d.ts","sourceRoot":"","sources":["../../src/lib/audience-overview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,aAAa,EAAE,OAAO,CAAC;IACvB,kFAAkF;IAClF,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAC1C,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,EAC9C,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAgDlB"}
@@ -0,0 +1,11 @@
1
+ /** Seal a plaintext password into `v1.<iv>.<ciphertext>` (base64url parts). */
2
+ export declare function sealAudiencePassword(password: string): Promise<string>;
3
+ /**
4
+ * Open a sealed password, or null when it cannot be trusted — unknown version,
5
+ * malformed parts, tampered ciphertext (GCM auth failure), or a rotated
6
+ * SESSION_SECRET. Callers treat null as "not revealable" and never as an error;
7
+ * they must ALSO verify the result against the bcrypt hash, since a valid seal
8
+ * can still be stale (a password changed by a writer that skipped the cipher).
9
+ */
10
+ export declare function openAudiencePassword(sealed: string | null | undefined): Promise<string | null>;
11
+ //# sourceMappingURL=audience-secret.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audience-secret.d.ts","sourceRoot":"","sources":["../../src/lib/audience-secret.ts"],"names":[],"mappings":"AAgEA,+EAA+E;AAC/E,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5E;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBpG"}