@drawnagency/primitives 0.1.92 → 0.1.93

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 (43) hide show
  1. package/dist/{chunk-Z66TBL4Q.js → chunk-3HJDMFTB.js} +1 -1
  2. package/dist/{chunk-A2V7BZPD.js → chunk-HLKAQLTV.js} +1 -1
  3. package/dist/{chunk-7QEJDYTG.js → chunk-RBKBNQGB.js} +3 -3
  4. package/dist/{chunk-RUKO2N3F.js → chunk-RHWWQV3J.js} +30 -5
  5. package/dist/{chunk-WOYGQK2D.js → chunk-UFOWXOG6.js} +49 -1
  6. package/dist/{chunk-IZLXF3CR.js → chunk-XYFZ57AS.js} +1 -1
  7. package/dist/components/editor/index.js +2 -2
  8. package/dist/components/primitives/index.js +1 -1
  9. package/dist/components/sections/brand-guide.js +2 -2
  10. package/dist/components/sections/register-schemas.js +4 -4
  11. package/dist/components/sections/register.js +4 -4
  12. package/dist/components/shared/SubTabs.d.ts +22 -0
  13. package/dist/components/shared/SubTabs.d.ts.map +1 -0
  14. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  15. package/dist/components/shell/SiteSettingsChatbot.d.ts.map +1 -1
  16. package/dist/components/shell/SiteSettingsDisplay.d.ts.map +1 -1
  17. package/dist/components/shell/ViewerLoginForm.d.ts.map +1 -1
  18. package/dist/index.js +17 -5
  19. package/dist/lib/contrast.d.ts +19 -0
  20. package/dist/lib/contrast.d.ts.map +1 -1
  21. package/dist/lib/index.d.ts +2 -1
  22. package/dist/lib/index.d.ts.map +1 -1
  23. package/dist/lib/index.js +16 -4
  24. package/dist/lib/theme-vars.d.ts +16 -0
  25. package/dist/lib/theme-vars.d.ts.map +1 -0
  26. package/dist/media/index.js +1 -1
  27. package/dist/schemas/index.js +2 -2
  28. package/dist/schemas/site-config.d.ts +2 -0
  29. package/dist/schemas/site-config.d.ts.map +1 -1
  30. package/dist/types/database.d.ts +12 -0
  31. package/dist/types/database.d.ts.map +1 -1
  32. package/package.json +1 -1
  33. package/src/components/shared/SubTabs.tsx +70 -0
  34. package/src/components/shared/Tabs.tsx +1 -1
  35. package/src/components/shell/EditorShell.tsx +7 -4
  36. package/src/components/shell/SiteSettingsChatbot.tsx +38 -18
  37. package/src/components/shell/SiteSettingsDisplay.tsx +202 -31
  38. package/src/components/shell/ViewerLoginForm.tsx +12 -19
  39. package/src/lib/contrast.ts +52 -0
  40. package/src/lib/index.ts +10 -1
  41. package/src/lib/theme-vars.ts +31 -0
  42. package/src/schemas/site-config.ts +37 -5
  43. package/src/types/database.ts +10 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HexColorSchema
3
- } from "./chunk-RUKO2N3F.js";
3
+ } from "./chunk-RHWWQV3J.js";
4
4
 
5
5
  // src/schemas/audience.ts
6
6
  import { z } from "zod";
@@ -30,7 +30,7 @@ import {
30
30
  import {
31
31
  HexColorSchema,
32
32
  SingleMediaReferenceSchema
33
- } from "./chunk-RUKO2N3F.js";
33
+ } from "./chunk-RHWWQV3J.js";
34
34
  import {
35
35
  defineSection
36
36
  } from "./chunk-VKAGMEKE.js";
@@ -3,7 +3,7 @@ import {
3
3
  pluralize,
4
4
  stripHtmlToPlainText,
5
5
  truncate
6
- } from "./chunk-A2V7BZPD.js";
6
+ } from "./chunk-HLKAQLTV.js";
7
7
  import {
8
8
  DeleteButton,
9
9
  DragHandle,
@@ -17,7 +17,7 @@ import {
17
17
  buildBlockDropData,
18
18
  canDropBlock,
19
19
  isBlockDragData
20
- } from "./chunk-IZLXF3CR.js";
20
+ } from "./chunk-XYFZ57AS.js";
21
21
  import {
22
22
  EditableRichText,
23
23
  defineHeadingSection
@@ -54,7 +54,7 @@ import {
54
54
  } from "./chunk-TZQPOR5A.js";
55
55
  import {
56
56
  SingleMediaReferenceSchema
57
- } from "./chunk-RUKO2N3F.js";
57
+ } from "./chunk-RHWWQV3J.js";
58
58
  import {
59
59
  defineSection,
60
60
  getSection
@@ -214,15 +214,34 @@ var CanonicalIndexSchema = z3.object({
214
214
  }
215
215
  seenSlugs.add(p.slug);
216
216
  }
217
+ const fmtIds = (ids) => ids.map((id) => `"${id}"`).sort().join(", ");
217
218
  const fromPages = [];
218
219
  for (const p of data.pages) fromPages.push(...p.order);
219
220
  const fromPagesSet = new Set(fromPages);
220
- if (fromPages.length !== fromPagesSet.size) {
221
- ctx.addIssue({ code: z3.ZodIssueCode.custom, message: "A section id appears in more than one page" });
222
- }
223
221
  const sectionKeys = Object.keys(data.sections);
224
- if (fromPagesSet.size !== sectionKeys.length || !sectionKeys.every((k) => fromPagesSet.has(k))) {
225
- ctx.addIssue({ code: z3.ZodIssueCode.custom, message: "Page section orders must partition sections{} exactly" });
222
+ const sectionSet = new Set(sectionKeys);
223
+ const counts = /* @__PURE__ */ new Map();
224
+ for (const id of fromPages) counts.set(id, (counts.get(id) ?? 0) + 1);
225
+ const duplicated = [...counts].filter(([, n]) => n > 1).map(([id]) => id);
226
+ if (duplicated.length > 0) {
227
+ ctx.addIssue({
228
+ code: z3.ZodIssueCode.custom,
229
+ message: `Section id(s) appear in more than one page order: ${fmtIds(duplicated)}`
230
+ });
231
+ }
232
+ const orderedNotInSections = [...fromPagesSet].filter((id) => !sectionSet.has(id));
233
+ if (orderedNotInSections.length > 0) {
234
+ ctx.addIssue({
235
+ code: z3.ZodIssueCode.custom,
236
+ message: `Section id(s) in a page order but missing from sections{}: ${fmtIds(orderedNotInSections)}`
237
+ });
238
+ }
239
+ const sectionsNotOrdered = sectionKeys.filter((id) => !fromPagesSet.has(id));
240
+ if (sectionsNotOrdered.length > 0) {
241
+ ctx.addIssue({
242
+ code: z3.ZodIssueCode.custom,
243
+ message: `Section id(s) in sections{} but not in any page order: ${fmtIds(sectionsNotOrdered)}`
244
+ });
226
245
  }
227
246
  });
228
247
  var IndexSchema = RawIndexSchema.transform(normalizeRawIndex).pipe(CanonicalIndexSchema);
@@ -276,6 +295,12 @@ var SiteConfigSchema = z3.object({
276
295
  siteName: z3.string().default("Brand Portal"),
277
296
  primaryColor: HexColorSchema.default("#009ca6"),
278
297
  primaryContrast: HexColorSchema.default("#f0f0f0"),
298
+ // Dark-mode overrides for the brand primary / accent. Only applied when
299
+ // darkMode is "optional" (both modes are reachable, so a single value can't
300
+ // satisfy both). null = reuse the light value in dark mode. Rendered via the
301
+ // CSS light-dark() function (see lib/theme-vars.ts).
302
+ primaryColorDark: HexColorSchema.nullable().default(null),
303
+ primaryContrastDark: HexColorSchema.nullable().default(null),
279
304
  darkMode: z3.enum(["light", "dark", "optional"]).default("light"),
280
305
  // Maps to the --radius-outer design token (see lib/corner-radius.ts);
281
306
  // defaults so pre-existing site-config.json files keep parsing.
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-TZQPOR5A.js";
10
10
  import {
11
11
  IndexSchema
12
- } from "./chunk-RUKO2N3F.js";
12
+ } from "./chunk-RHWWQV3J.js";
13
13
  import {
14
14
  getAllSchemas
15
15
  } from "./chunk-VKAGMEKE.js";
@@ -48,6 +48,48 @@ function contrastColor(hex) {
48
48
  const b = parseInt(h.slice(4, 6), 16);
49
49
  return (r * 299 + g * 587 + b * 114) / 1e3 > 150 ? "#1a1a1a" : "#ffffff";
50
50
  }
51
+ function toRgb(hex) {
52
+ const h = hex.replace("#", "");
53
+ const x = h.length === 3 ? h[0] + h[0] + h[1] + h[1] + h[2] + h[2] : h;
54
+ return [
55
+ parseInt(x.slice(0, 2), 16),
56
+ parseInt(x.slice(2, 4), 16),
57
+ parseInt(x.slice(4, 6), 16)
58
+ ];
59
+ }
60
+ function relativeLuminance(hex) {
61
+ const [r, g, b] = toRgb(hex).map((c) => {
62
+ const s = c / 255;
63
+ return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
64
+ });
65
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
66
+ }
67
+ function contrastRatio(a, b) {
68
+ const la = relativeLuminance(a);
69
+ const lb = relativeLuminance(b);
70
+ const hi = Math.max(la, lb);
71
+ const lo = Math.min(la, lb);
72
+ return (hi + 0.05) / (lo + 0.05);
73
+ }
74
+ function wcagLevel(ratio) {
75
+ return { aa: ratio >= 4.5, aaLarge: ratio >= 3, aaa: ratio >= 7 };
76
+ }
77
+ function suggestAccessibleOn(bg) {
78
+ return contrastRatio("#000000", bg) >= contrastRatio("#ffffff", bg) ? "#000000" : "#ffffff";
79
+ }
80
+
81
+ // src/lib/theme-vars.ts
82
+ var DEFAULT_PRIMARY = "#009ca6";
83
+ var DEFAULT_CONTRAST = "#f0f0f0";
84
+ function lightDark(light, dark, optional) {
85
+ return optional && dark ? `light-dark(${light}, ${dark})` : light;
86
+ }
87
+ function primaryVarValue(c) {
88
+ return lightDark(c?.primaryColor ?? DEFAULT_PRIMARY, c?.primaryColorDark, c?.darkMode === "optional");
89
+ }
90
+ function accentVarValue(c) {
91
+ return lightDark(c?.primaryContrast ?? DEFAULT_CONTRAST, c?.primaryContrastDark, c?.darkMode === "optional");
92
+ }
51
93
 
52
94
  // src/lib/grid.ts
53
95
  var gridColsClass = {
@@ -164,6 +206,12 @@ export {
164
206
  resolveThinkingPhrases,
165
207
  deriveContrast,
166
208
  contrastColor,
209
+ relativeLuminance,
210
+ contrastRatio,
211
+ wcagLevel,
212
+ suggestAccessibleOn,
213
+ primaryVarValue,
214
+ accentVarValue,
167
215
  gridColsClass,
168
216
  buildGoogleFontsUrl,
169
217
  formatTimestamp,
@@ -378,7 +378,7 @@ function Tabs({ tabs, defaultTabId, activeTabId, onTabChange, fullBleedTabBar })
378
378
  onClick: () => handleSelect(tab.id),
379
379
  className: cn(
380
380
  "cursor-pointer px-4 py-2 text-sm font-medium border-b-2 -mb-px",
381
- activeTab?.id === tab.id ? "border-brand text-brand" : "border-transparent text-base-contrast-light hover:text-base-contrast"
381
+ activeTab?.id === tab.id ? "border-primary text-primary" : "border-transparent text-base-contrast-light hover:text-base-contrast"
382
382
  ),
383
383
  children: tab.label
384
384
  },
@@ -11,7 +11,7 @@ import {
11
11
  buildBlockDropData,
12
12
  canDropBlock,
13
13
  isBlockDragData
14
- } from "../../chunk-IZLXF3CR.js";
14
+ } from "../../chunk-XYFZ57AS.js";
15
15
  import "../../chunk-5THS4K5D.js";
16
16
  import "../../chunk-ZSPCE6MZ.js";
17
17
  import {
@@ -24,7 +24,7 @@ import {
24
24
  cn
25
25
  } from "../../chunk-7EOSDFS3.js";
26
26
  import "../../chunk-YBVK254P.js";
27
- import "../../chunk-RUKO2N3F.js";
27
+ import "../../chunk-RHWWQV3J.js";
28
28
  import "../../chunk-FM4M4Q2W.js";
29
29
  import "../../chunk-JSBRDJBE.js";
30
30
 
@@ -23,7 +23,7 @@ import {
23
23
  cn
24
24
  } from "../../chunk-7EOSDFS3.js";
25
25
  import "../../chunk-YBVK254P.js";
26
- import "../../chunk-RUKO2N3F.js";
26
+ import "../../chunk-RHWWQV3J.js";
27
27
  import "../../chunk-VKAGMEKE.js";
28
28
  import "../../chunk-FM4M4Q2W.js";
29
29
  import "../../chunk-JSBRDJBE.js";
@@ -2,7 +2,7 @@ import {
2
2
  ColorItemSchema,
3
3
  ColorSpaceSchema,
4
4
  brandGuideSectionDefs
5
- } from "../../chunk-A2V7BZPD.js";
5
+ } from "../../chunk-HLKAQLTV.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
7
  import "../../chunk-LQQY2RW6.js";
8
8
  import "../../chunk-CI624HRS.js";
@@ -11,7 +11,7 @@ import "../../chunk-PZJL2S3Z.js";
11
11
  import "../../chunk-WDSVHKAH.js";
12
12
  import "../../chunk-7EOSDFS3.js";
13
13
  import "../../chunk-YBVK254P.js";
14
- import "../../chunk-RUKO2N3F.js";
14
+ import "../../chunk-RHWWQV3J.js";
15
15
  import "../../chunk-VKAGMEKE.js";
16
16
  import "../../chunk-FM4M4Q2W.js";
17
17
  import "../../chunk-JSBRDJBE.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-7QEJDYTG.js";
4
- import "../../chunk-A2V7BZPD.js";
5
- import "../../chunk-IZLXF3CR.js";
3
+ } from "../../chunk-RBKBNQGB.js";
4
+ import "../../chunk-HLKAQLTV.js";
5
+ import "../../chunk-XYFZ57AS.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
7
  import "../../chunk-YI2HUFE3.js";
8
8
  import "../../chunk-LQQY2RW6.js";
@@ -16,7 +16,7 @@ import "../../chunk-53DKVAB6.js";
16
16
  import "../../chunk-7EOSDFS3.js";
17
17
  import "../../chunk-YBVK254P.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
- import "../../chunk-RUKO2N3F.js";
19
+ import "../../chunk-RHWWQV3J.js";
20
20
  import {
21
21
  registerRichText,
22
22
  registerSchema
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-7QEJDYTG.js";
4
- import "../../chunk-A2V7BZPD.js";
5
- import "../../chunk-IZLXF3CR.js";
3
+ } from "../../chunk-RBKBNQGB.js";
4
+ import "../../chunk-HLKAQLTV.js";
5
+ import "../../chunk-XYFZ57AS.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
7
  import "../../chunk-YI2HUFE3.js";
8
8
  import "../../chunk-LQQY2RW6.js";
@@ -16,7 +16,7 @@ import "../../chunk-53DKVAB6.js";
16
16
  import "../../chunk-7EOSDFS3.js";
17
17
  import "../../chunk-YBVK254P.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
- import "../../chunk-RUKO2N3F.js";
19
+ import "../../chunk-RHWWQV3J.js";
20
20
  import {
21
21
  registerSection
22
22
  } from "../../chunk-VKAGMEKE.js";
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from "react";
2
+ export interface SubTabItem {
3
+ id: string;
4
+ label: string;
5
+ content: ReactNode;
6
+ }
7
+ interface SubTabsProps {
8
+ tabs: SubTabItem[];
9
+ defaultTabId?: string;
10
+ activeTabId?: string;
11
+ onTabChange?: (id: string) => void;
12
+ className?: string;
13
+ }
14
+ /**
15
+ * SubTabs — a second-level tab bar for use *inside* a top-level `Tabs` panel
16
+ * (e.g. Site Settings → Display → Details | Styles | Typography). Uses a soft
17
+ * pill language — active pill gets a tinted primary wash, inactive is quiet
18
+ * text — so it never reads as another underline tab row like `Tabs`.
19
+ */
20
+ export declare function SubTabs({ tabs, defaultTabId, activeTabId, onTabChange, className, }: SubTabsProps): import("react/jsx-runtime").JSX.Element;
21
+ export {};
22
+ //# sourceMappingURL=SubTabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubTabs.d.ts","sourceRoot":"","sources":["../../../src/components/shared/SubTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAS,GACV,EAAE,YAAY,2CAwCd"}
@@ -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;AAcjD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAuDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AAwCnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoBxD,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,2CAunDP;AAuED;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;AAcjD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAwDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AAwCnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoBxD,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,2CAynDP;AAuED;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":"SiteSettingsChatbot.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsChatbot.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAA8B,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAcjD,UAAU,KAAK;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAsBD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,KAAK,2CA4LxG"}
1
+ {"version":3,"file":"SiteSettingsChatbot.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsChatbot.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAA8B,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAcjD,UAAU,KAAK;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAsBD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,KAAK,2CA+MxG"}
@@ -1 +1 @@
1
- {"version":3,"file":"SiteSettingsDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsDisplay.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,UAAU,KAAK;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACxC;AA4BD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,2CA2QlE"}
1
+ {"version":3,"file":"SiteSettingsDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsDisplay.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,UAAU,KAAK;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CACxC;AA6DD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAmZlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewerLoginForm.d.ts","sourceRoot":"","sources":["../../../src/components/shell/ViewerLoginForm.tsx"],"names":[],"mappings":"AAKA,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,2CA+FzD"}
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"}
package/dist/index.js CHANGED
@@ -51,7 +51,7 @@ import {
51
51
  AudienceNameSchema,
52
52
  MediaGridOptionsSchema,
53
53
  slugifyAudienceName
54
- } from "./chunk-Z66TBL4Q.js";
54
+ } from "./chunk-3HJDMFTB.js";
55
55
  import {
56
56
  AudienceSchema,
57
57
  RoleSchema,
@@ -66,18 +66,24 @@ import {
66
66
  } from "./chunk-PZJL2S3Z.js";
67
67
  import {
68
68
  DEFAULT_CHATBOT_NAME,
69
+ accentVarValue,
69
70
  buildGoogleFontsUrl,
70
71
  contrastColor,
72
+ contrastRatio,
71
73
  deriveContrast,
72
74
  formatTimestamp,
73
75
  gridColsClass,
74
76
  loadSiteContent,
75
77
  loadStaticSiteContent,
76
78
  mergeSiteContent,
79
+ primaryVarValue,
80
+ relativeLuminance,
77
81
  resolveChatbotName,
78
82
  resolveThinkingPhrases,
79
- safeRedirect
80
- } from "./chunk-WOYGQK2D.js";
83
+ safeRedirect,
84
+ suggestAccessibleOn,
85
+ wcagLevel
86
+ } from "./chunk-UFOWXOG6.js";
81
87
  import {
82
88
  curatedIcons,
83
89
  getIcon
@@ -131,7 +137,7 @@ import {
131
137
  TextLineSchema,
132
138
  VariantSchema,
133
139
  normalizeSiteIndex
134
- } from "./chunk-RUKO2N3F.js";
140
+ } from "./chunk-RHWWQV3J.js";
135
141
  import {
136
142
  clearRegistry,
137
143
  createRegistry,
@@ -208,12 +214,14 @@ export {
208
214
  TakeoverMessageSchema,
209
215
  TextLineSchema,
210
216
  VariantSchema,
217
+ accentVarValue,
211
218
  audiencePasses,
212
219
  buildGoogleFontsUrl,
213
220
  clearRegistry,
214
221
  cn,
215
222
  composePreviewImage,
216
223
  contrastColor,
224
+ contrastRatio,
217
225
  createEvent,
218
226
  createRegistry,
219
227
  curatedIcons,
@@ -250,9 +258,11 @@ export {
250
258
  mimeToExt,
251
259
  navChangeEvent,
252
260
  normalizeSiteIndex,
261
+ primaryVarValue,
253
262
  rebindImageRef,
254
263
  registerSchema,
255
264
  registerSection,
265
+ relativeLuminance,
256
266
  requireSessionSecret,
257
267
  resolveChatbotName,
258
268
  resolveLogo,
@@ -269,7 +279,9 @@ export {
269
279
  signAudienceToken,
270
280
  signSessionToken,
271
281
  slugifyAudienceName,
282
+ suggestAccessibleOn,
272
283
  toSectionId,
273
284
  verifyAudienceToken,
274
- verifySessionToken
285
+ verifySessionToken,
286
+ wcagLevel
275
287
  };
@@ -4,4 +4,23 @@ export declare function deriveContrast(hex: string): string;
4
4
  * uses). Returns near-black for light backgrounds, white for dark ones.
5
5
  */
6
6
  export declare function contrastColor(hex: string): "#1a1a1a" | "#ffffff";
7
+ /** WCAG relative luminance of an sRGB hex color (0 = black, 1 = white). */
8
+ export declare function relativeLuminance(hex: string): number;
9
+ /** WCAG contrast ratio between two hex colors, 1 (identical) → 21 (#000/#fff). */
10
+ export declare function contrastRatio(a: string, b: string): number;
11
+ export interface WcagLevel {
12
+ /** ≥ 4.5:1 — AA for normal-size text. */
13
+ aa: boolean;
14
+ /** ≥ 3:1 — AA for large text and UI components. */
15
+ aaLarge: boolean;
16
+ /** ≥ 7:1 — AAA for normal-size text. */
17
+ aaa: boolean;
18
+ }
19
+ export declare function wcagLevel(ratio: number): WcagLevel;
20
+ /**
21
+ * Pick the pure black/white that maximizes contrast against `bg` — used to
22
+ * suggest an accessible accent (text on a primary-colored button). Pure b/w
23
+ * gives the highest achievable ratio for a foreground on a fixed background.
24
+ */
25
+ export declare function suggestAccessibleOn(bg: string): "#000000" | "#ffffff";
7
26
  //# sourceMappingURL=contrast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../../src/lib/contrast.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAMhE"}
1
+ {"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../../src/lib/contrast.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAMhE;AAcD,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAElD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAErE"}
@@ -3,7 +3,8 @@ export { cn } from "./cn";
3
3
  export { audiencePasses } from "./pages";
4
4
  export { resolveChatbotName, resolveThinkingPhrases, DEFAULT_CHATBOT_NAME } from "./chatbot";
5
5
  export { generateNavLinks, toSectionId, type NavItem } from "./nav";
6
- export { deriveContrast, contrastColor } from "./contrast";
6
+ export { deriveContrast, contrastColor, relativeLuminance, contrastRatio, wcagLevel, suggestAccessibleOn, type WcagLevel, } from "./contrast";
7
+ export { primaryVarValue, accentVarValue } from "./theme-vars";
7
8
  export { sanitizeHtml, ensureSanitizer } from "./sanitize";
8
9
  export { gridColsClass } from "./grid";
9
10
  export { getIcon, curatedIcons, type IconEntry } from "./icons";
@@ -1 +1 @@
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,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,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,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,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
@@ -1,17 +1,23 @@
1
1
  import {
2
2
  DEFAULT_CHATBOT_NAME,
3
+ accentVarValue,
3
4
  buildGoogleFontsUrl,
4
5
  contrastColor,
6
+ contrastRatio,
5
7
  deriveContrast,
6
8
  formatTimestamp,
7
9
  gridColsClass,
8
10
  loadSiteContent,
9
11
  loadStaticSiteContent,
10
12
  mergeSiteContent,
13
+ primaryVarValue,
14
+ relativeLuminance,
11
15
  resolveChatbotName,
12
16
  resolveThinkingPhrases,
13
- safeRedirect
14
- } from "../chunk-WOYGQK2D.js";
17
+ safeRedirect,
18
+ suggestAccessibleOn,
19
+ wcagLevel
20
+ } from "../chunk-UFOWXOG6.js";
15
21
  import {
16
22
  curatedIcons,
17
23
  getIcon
@@ -37,7 +43,7 @@ import {
37
43
  } from "../chunk-YBVK254P.js";
38
44
  import "../chunk-5BM2Y3NJ.js";
39
45
  import "../chunk-TZQPOR5A.js";
40
- import "../chunk-RUKO2N3F.js";
46
+ import "../chunk-RHWWQV3J.js";
41
47
  import {
42
48
  clearRegistry,
43
49
  createRegistry,
@@ -57,11 +63,13 @@ import {
57
63
  import "../chunk-JSBRDJBE.js";
58
64
  export {
59
65
  DEFAULT_CHATBOT_NAME,
66
+ accentVarValue,
60
67
  audiencePasses,
61
68
  buildGoogleFontsUrl,
62
69
  clearRegistry,
63
70
  cn,
64
71
  contrastColor,
72
+ contrastRatio,
65
73
  createEvent,
66
74
  createRegistry,
67
75
  curatedIcons,
@@ -83,11 +91,15 @@ export {
83
91
  loadStaticSiteContent,
84
92
  mergeSiteContent,
85
93
  navChangeEvent,
94
+ primaryVarValue,
86
95
  registerSchema,
87
96
  registerSection,
97
+ relativeLuminance,
88
98
  resolveChatbotName,
89
99
  resolveThinkingPhrases,
90
100
  safeRedirect,
91
101
  sanitizeHtml,
92
- toSectionId
102
+ suggestAccessibleOn,
103
+ toSectionId,
104
+ wcagLevel
93
105
  };
@@ -0,0 +1,16 @@
1
+ import type { SiteConfig } from "../schemas/site-config";
2
+ /**
3
+ * Computes the CSS value for the brand `--color-primary` / `--color-primary-contrast`
4
+ * custom properties. When darkMode is "optional" AND a dark variant is set, the
5
+ * value is a CSS `light-dark(<light>, <dark>)` expression — the browser resolves
6
+ * it per the element's `color-scheme` (the `.dark` class sets `color-scheme: dark`;
7
+ * `:root` sets `color-scheme: light`). Otherwise it's the plain light hex.
8
+ *
9
+ * Single source of truth for every injection site: Layout.astro / LoginLayout.astro
10
+ * (SSR inline `<html style>`) and EditorShell (live setProperty + localStorage).
11
+ */
12
+ type ThemeColorConfig = Pick<SiteConfig, "primaryColor" | "primaryContrast" | "primaryColorDark" | "primaryContrastDark" | "darkMode">;
13
+ export declare function primaryVarValue(c?: Partial<ThemeColorConfig> | null): string;
14
+ export declare function accentVarValue(c?: Partial<ThemeColorConfig> | null): string;
15
+ export {};
16
+ //# sourceMappingURL=theme-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-vars.d.ts","sourceRoot":"","sources":["../../src/lib/theme-vars.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;;;;GASG;AACH,KAAK,gBAAgB,GAAG,IAAI,CAC1B,UAAU,EACV,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,UAAU,CAC7F,CAAC;AASF,wBAAgB,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,GAAG,MAAM,CAE5E;AAED,wBAAgB,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,GAAG,MAAM,CAE3E"}
@@ -26,7 +26,7 @@ import {
26
26
  MediaFolderSchema,
27
27
  MediaItemSchema,
28
28
  VariantSchema
29
- } from "../chunk-RUKO2N3F.js";
29
+ } from "../chunk-RHWWQV3J.js";
30
30
  import "../chunk-FM4M4Q2W.js";
31
31
  import "../chunk-JSBRDJBE.js";
32
32
  export {
@@ -3,7 +3,7 @@ import {
3
3
  AudienceNameSchema,
4
4
  MediaGridOptionsSchema,
5
5
  slugifyAudienceName
6
- } from "../chunk-Z66TBL4Q.js";
6
+ } from "../chunk-3HJDMFTB.js";
7
7
  import {
8
8
  AudienceSchema,
9
9
  RoleSchema,
@@ -41,7 +41,7 @@ import {
41
41
  TextLineSchema,
42
42
  VariantSchema,
43
43
  normalizeSiteIndex
44
- } from "../chunk-RUKO2N3F.js";
44
+ } from "../chunk-RHWWQV3J.js";
45
45
  import "../chunk-VKAGMEKE.js";
46
46
  import "../chunk-FM4M4Q2W.js";
47
47
  import "../chunk-NSCT3AMV.js";
@@ -447,6 +447,8 @@ export declare const SiteConfigSchema: z.ZodObject<{
447
447
  siteName: z.ZodDefault<z.ZodString>;
448
448
  primaryColor: z.ZodDefault<z.ZodString>;
449
449
  primaryContrast: z.ZodDefault<z.ZodString>;
450
+ primaryColorDark: z.ZodDefault<z.ZodNullable<z.ZodString>>;
451
+ primaryContrastDark: z.ZodDefault<z.ZodNullable<z.ZodString>>;
450
452
  darkMode: z.ZodDefault<z.ZodEnum<{
451
453
  optional: "optional";
452
454
  light: "light";
@@ -1 +1 @@
1
- {"version":3,"file":"site-config.d.ts","sourceRoot":"","sources":["../../src/schemas/site-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,YAAY;;;;;+FAExB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;iBAI5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAQ5D,eAAO,MAAM,cAAc,8EAA+E,CAAC;AAW3G,eAAO,MAAM,gBAAgB;;;EAA+B,CAAC;AAE7D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUrB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AA0C9C,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6CtB,CAAC;AAEL,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAyE,CAAC;AAElG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7D,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAE1D;AAMD,eAAO,MAAM,iBAAiB;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAiC5B,CAAC;AACL,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6D3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"site-config.d.ts","sourceRoot":"","sources":["../../src/schemas/site-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,YAAY;;;;;+FAExB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;iBAI5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAQ5D,eAAO,MAAM,cAAc,8EAA+E,CAAC;AAW3G,eAAO,MAAM,gBAAgB;;;EAA+B,CAAC;AAE7D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUrB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AA0C9C,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuEtB,CAAC;AAEL,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAyE,CAAC;AAElG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7D,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAE1D;AAMD,eAAO,MAAM,iBAAiB;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAiC5B,CAAC;AACL,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmE3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -739,6 +739,18 @@ export type Database = {
739
739
  };
740
740
  Returns: boolean;
741
741
  };
742
+ get_site_users_with_status: {
743
+ Args: {
744
+ p_site_id: string;
745
+ };
746
+ Returns: {
747
+ created_at: string | null;
748
+ email: string;
749
+ last_sign_in_at: string | null;
750
+ role: string;
751
+ user_id: string;
752
+ }[];
753
+ };
742
754
  get_user_id_by_email: {
743
755
  Args: {
744
756
  lookup_email: string;