@prenta/core 8.9.1 → 8.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +102 -0
- package/dist/actions.d.ts +31 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +59 -4
- package/dist/actions.js.map +1 -1
- package/dist/ai/batch-links.d.ts +105 -0
- package/dist/ai/batch-links.d.ts.map +1 -0
- package/dist/ai/batch-links.js +667 -0
- package/dist/ai/batch-links.js.map +1 -0
- package/dist/ai/batch-list.d.ts +127 -4
- package/dist/ai/batch-list.d.ts.map +1 -1
- package/dist/ai/batch-list.js +250 -14
- package/dist/ai/batch-list.js.map +1 -1
- package/dist/ai/providers/http.d.ts +4 -0
- package/dist/ai/providers/http.d.ts.map +1 -1
- package/dist/ai/providers/http.js +9 -8
- package/dist/ai/providers/http.js.map +1 -1
- package/dist/ai/tasks/editor-text.d.ts +39 -0
- package/dist/ai/tasks/editor-text.d.ts.map +1 -0
- package/dist/ai/tasks/editor-text.js +45 -0
- package/dist/ai/tasks/editor-text.js.map +1 -0
- package/dist/ai/tasks/link-embeddings.d.ts +22 -0
- package/dist/ai/tasks/link-embeddings.d.ts.map +1 -1
- package/dist/ai/tasks/link-embeddings.js +24 -10
- package/dist/ai/tasks/link-embeddings.js.map +1 -1
- package/dist/ai/usage.d.ts +7 -0
- package/dist/ai/usage.d.ts.map +1 -1
- package/dist/ai/usage.js +11 -0
- package/dist/ai/usage.js.map +1 -1
- package/dist/api/guarded-db.d.ts +6 -0
- package/dist/api/guarded-db.d.ts.map +1 -1
- package/dist/api/guarded-db.js +13 -1
- package/dist/api/guarded-db.js.map +1 -1
- package/dist/api/handlers.d.ts.map +1 -1
- package/dist/api/handlers.js +2 -0
- package/dist/api/handlers.js.map +1 -1
- package/dist/api/openapi.d.ts.map +1 -1
- package/dist/api/openapi.js +47 -0
- package/dist/api/openapi.js.map +1 -1
- package/dist/api/route-helpers/forms.d.ts.map +1 -1
- package/dist/api/route-helpers/forms.js +7 -1
- package/dist/api/route-helpers/forms.js.map +1 -1
- package/dist/api/routes/ai-authoring.d.ts.map +1 -1
- package/dist/api/routes/ai-authoring.js +1 -0
- package/dist/api/routes/ai-authoring.js.map +1 -1
- package/dist/api/routes/ai-seo.d.ts.map +1 -1
- package/dist/api/routes/ai-seo.js +20 -18
- package/dist/api/routes/ai-seo.js.map +1 -1
- package/dist/api/routes/documents.d.ts.map +1 -1
- package/dist/api/routes/documents.js +20 -0
- package/dist/api/routes/documents.js.map +1 -1
- package/dist/api/routes/media.d.ts.map +1 -1
- package/dist/api/routes/media.js +3 -1
- package/dist/api/routes/media.js.map +1 -1
- package/dist/api/routes/scheduling.d.ts.map +1 -1
- package/dist/api/routes/scheduling.js +33 -2
- package/dist/api/routes/scheduling.js.map +1 -1
- package/dist/appearance/color.d.ts +17 -0
- package/dist/appearance/color.d.ts.map +1 -1
- package/dist/appearance/color.js +162 -1
- package/dist/appearance/color.js.map +1 -1
- package/dist/appearance/index.d.ts +3 -3
- package/dist/appearance/index.d.ts.map +1 -1
- package/dist/appearance/index.js +2 -2
- package/dist/appearance/index.js.map +1 -1
- package/dist/appearance/resolve.d.ts.map +1 -1
- package/dist/appearance/resolve.js +4 -2
- package/dist/appearance/resolve.js.map +1 -1
- package/dist/appearance/theme-tokens.d.ts +60 -11
- package/dist/appearance/theme-tokens.d.ts.map +1 -1
- package/dist/appearance/theme-tokens.js +184 -175
- package/dist/appearance/theme-tokens.js.map +1 -1
- package/dist/appearance/types.d.ts +16 -2
- package/dist/appearance/types.d.ts.map +1 -1
- package/dist/astro-site.d.ts +1 -11
- package/dist/astro-site.d.ts.map +1 -1
- package/dist/astro-site.js +4 -0
- package/dist/astro-site.js.map +1 -1
- package/dist/auth/team.d.ts +1 -0
- package/dist/auth/team.d.ts.map +1 -1
- package/dist/auth/team.js +1 -1
- package/dist/auth/team.js.map +1 -1
- package/dist/cache/http.d.ts +20 -0
- package/dist/cache/http.d.ts.map +1 -1
- package/dist/cache/http.js +42 -0
- package/dist/cache/http.js.map +1 -1
- package/dist/chrome/announcement.d.ts +30 -0
- package/dist/chrome/announcement.d.ts.map +1 -0
- package/dist/chrome/announcement.js +190 -0
- package/dist/chrome/announcement.js.map +1 -0
- package/dist/chrome/codegen.d.ts +17 -0
- package/dist/chrome/codegen.d.ts.map +1 -0
- package/dist/chrome/codegen.js +96 -0
- package/dist/chrome/codegen.js.map +1 -0
- package/dist/chrome/contract.d.ts +142 -0
- package/dist/chrome/contract.d.ts.map +1 -0
- package/dist/chrome/contract.js +2 -0
- package/dist/chrome/contract.js.map +1 -0
- package/dist/chrome/memory-store.d.ts +15 -0
- package/dist/chrome/memory-store.d.ts.map +1 -0
- package/dist/chrome/memory-store.js +54 -0
- package/dist/chrome/memory-store.js.map +1 -0
- package/dist/chrome/parse.d.ts +36 -0
- package/dist/chrome/parse.d.ts.map +1 -0
- package/dist/chrome/parse.js +277 -0
- package/dist/chrome/parse.js.map +1 -0
- package/dist/chrome/prisma-store.d.ts +11 -0
- package/dist/chrome/prisma-store.d.ts.map +1 -0
- package/dist/chrome/prisma-store.js +48 -0
- package/dist/chrome/prisma-store.js.map +1 -0
- package/dist/chrome/public.d.ts +22 -0
- package/dist/chrome/public.d.ts.map +1 -0
- package/dist/chrome/public.js +181 -0
- package/dist/chrome/public.js.map +1 -0
- package/dist/chrome/resolve.d.ts +36 -0
- package/dist/chrome/resolve.d.ts.map +1 -0
- package/dist/chrome/resolve.js +165 -0
- package/dist/chrome/resolve.js.map +1 -0
- package/dist/chrome/revalidate.d.ts +9 -0
- package/dist/chrome/revalidate.d.ts.map +1 -0
- package/dist/chrome/revalidate.js +51 -0
- package/dist/chrome/revalidate.js.map +1 -0
- package/dist/chrome/routes.d.ts +14 -0
- package/dist/chrome/routes.d.ts.map +1 -0
- package/dist/chrome/routes.js +306 -0
- package/dist/chrome/routes.js.map +1 -0
- package/dist/chrome/schema.d.ts +231 -0
- package/dist/chrome/schema.d.ts.map +1 -0
- package/dist/chrome/schema.js +73 -0
- package/dist/chrome/schema.js.map +1 -0
- package/dist/chrome/service.d.ts +76 -0
- package/dist/chrome/service.d.ts.map +1 -0
- package/dist/chrome/service.js +286 -0
- package/dist/chrome/service.js.map +1 -0
- package/dist/chrome/settings.d.ts +14 -0
- package/dist/chrome/settings.d.ts.map +1 -0
- package/dist/chrome/settings.js +142 -0
- package/dist/chrome/settings.js.map +1 -0
- package/dist/chrome/store.d.ts +48 -0
- package/dist/chrome/store.d.ts.map +1 -0
- package/dist/chrome/store.js +26 -0
- package/dist/chrome/store.js.map +1 -0
- package/dist/chrome/values.d.ts +98 -0
- package/dist/chrome/values.d.ts.map +1 -0
- package/dist/chrome/values.js +491 -0
- package/dist/chrome/values.js.map +1 -0
- package/dist/config/define.d.ts +2 -0
- package/dist/config/define.d.ts.map +1 -1
- package/dist/config/define.js +2 -0
- package/dist/config/define.js.map +1 -1
- package/dist/db/model-types.d.ts +62 -0
- package/dist/db/model-types.d.ts.map +1 -1
- package/dist/forms/attribution-settings.d.ts +23 -0
- package/dist/forms/attribution-settings.d.ts.map +1 -0
- package/dist/forms/attribution-settings.js +42 -0
- package/dist/forms/attribution-settings.js.map +1 -0
- package/dist/forms/attribution.d.ts +5 -1
- package/dist/forms/attribution.d.ts.map +1 -1
- package/dist/forms/attribution.js +6 -4
- package/dist/forms/attribution.js.map +1 -1
- package/dist/forms/client-validation.d.ts.map +1 -1
- package/dist/forms/client-validation.js +3 -0
- package/dist/forms/client-validation.js.map +1 -1
- package/dist/forms/form-model.d.ts +109 -0
- package/dist/forms/form-model.d.ts.map +1 -0
- package/dist/forms/form-model.js +192 -0
- package/dist/forms/form-model.js.map +1 -0
- package/dist/forms/index.d.ts +2 -2
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -1
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/service.d.ts +19 -1
- package/dist/forms/service.d.ts.map +1 -1
- package/dist/forms/service.js +152 -0
- package/dist/forms/service.js.map +1 -1
- package/dist/forms/spam.d.ts +0 -12
- package/dist/forms/spam.d.ts.map +1 -1
- package/dist/forms/spam.js +30 -0
- package/dist/forms/spam.js.map +1 -1
- package/dist/forms/submission.d.ts +7 -0
- package/dist/forms/submission.d.ts.map +1 -1
- package/dist/forms/submission.js +33 -0
- package/dist/forms/submission.js.map +1 -1
- package/dist/forms/types.d.ts +26 -1
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/types.js +9 -1
- package/dist/forms/types.js.map +1 -1
- package/dist/generated/browser.d.ts +35 -3
- package/dist/generated/client.d.ts +35 -3
- package/dist/generated/internal/class.d.ts +44 -0
- package/dist/generated/internal/class.js +4 -4
- package/dist/generated/internal/prismaNamespace.d.ts +403 -1
- package/dist/generated/internal/prismaNamespace.js +95 -1
- package/dist/generated/internal/prismaNamespaceBrowser.d.ts +102 -0
- package/dist/generated/internal/prismaNamespaceBrowser.js +95 -1
- package/dist/generated/models/ChromeRegion.d.ts +1203 -0
- package/dist/generated/models/ChromeRegion.js +1 -0
- package/dist/generated/models/Job.d.ts +732 -5
- package/dist/generated/models/JobEvent.d.ts +1339 -0
- package/dist/generated/models/JobEvent.js +1 -0
- package/dist/generated/models/JobReviewItem.d.ts +1470 -0
- package/dist/generated/models/JobReviewItem.js +1 -0
- package/dist/generated/models/SystemSetting.d.ts +952 -0
- package/dist/generated/models/SystemSetting.js +1 -0
- package/dist/generated/models.d.ts +4 -0
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/jobs/batch-ai.d.ts +53 -0
- package/dist/jobs/batch-ai.d.ts.map +1 -0
- package/dist/jobs/batch-ai.js +314 -0
- package/dist/jobs/batch-ai.js.map +1 -0
- package/dist/jobs/contract.d.ts +186 -0
- package/dist/jobs/contract.d.ts.map +1 -0
- package/dist/jobs/contract.js +2 -0
- package/dist/jobs/contract.js.map +1 -0
- package/dist/jobs/error-text.d.ts +23 -0
- package/dist/jobs/error-text.d.ts.map +1 -0
- package/dist/jobs/error-text.js +110 -0
- package/dist/jobs/error-text.js.map +1 -0
- package/dist/jobs/handlers.d.ts.map +1 -1
- package/dist/jobs/handlers.js +48 -7
- package/dist/jobs/handlers.js.map +1 -1
- package/dist/jobs/memory-store.d.ts +26 -2
- package/dist/jobs/memory-store.d.ts.map +1 -1
- package/dist/jobs/memory-store.js +157 -3
- package/dist/jobs/memory-store.js.map +1 -1
- package/dist/jobs/outcomes.d.ts +46 -0
- package/dist/jobs/outcomes.d.ts.map +1 -0
- package/dist/jobs/outcomes.js +251 -0
- package/dist/jobs/outcomes.js.map +1 -0
- package/dist/jobs/prisma-store.d.ts +14 -2
- package/dist/jobs/prisma-store.d.ts.map +1 -1
- package/dist/jobs/prisma-store.js +257 -15
- package/dist/jobs/prisma-store.js.map +1 -1
- package/dist/jobs/queue.d.ts +62 -2
- package/dist/jobs/queue.d.ts.map +1 -1
- package/dist/jobs/queue.js +412 -36
- package/dist/jobs/queue.js.map +1 -1
- package/dist/jobs/retention.d.ts +11 -0
- package/dist/jobs/retention.d.ts.map +1 -0
- package/dist/jobs/retention.js +18 -0
- package/dist/jobs/retention.js.map +1 -0
- package/dist/jobs/review.d.ts +111 -0
- package/dist/jobs/review.d.ts.map +1 -0
- package/dist/jobs/review.js +461 -0
- package/dist/jobs/review.js.map +1 -0
- package/dist/jobs/routes.d.ts.map +1 -1
- package/dist/jobs/routes.js +491 -16
- package/dist/jobs/routes.js.map +1 -1
- package/dist/jobs/serialize.d.ts +40 -0
- package/dist/jobs/serialize.d.ts.map +1 -0
- package/dist/jobs/serialize.js +270 -0
- package/dist/jobs/serialize.js.map +1 -0
- package/dist/jobs/types.d.ts +141 -2
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/jobs/worker-status.d.ts +27 -0
- package/dist/jobs/worker-status.d.ts.map +1 -0
- package/dist/jobs/worker-status.js +66 -0
- package/dist/jobs/worker-status.js.map +1 -0
- package/dist/media/optimize.d.ts.map +1 -1
- package/dist/media/optimize.js +4 -2
- package/dist/media/optimize.js.map +1 -1
- package/dist/next-site.d.ts +1 -0
- package/dist/next-site.d.ts.map +1 -1
- package/dist/next-site.js +3 -0
- package/dist/next-site.js.map +1 -1
- package/dist/seo/audit-runner.d.ts.map +1 -1
- package/dist/seo/audit-runner.js +23 -2
- package/dist/seo/audit-runner.js.map +1 -1
- package/dist/seo/issue-fix-link-insert.d.ts +11 -0
- package/dist/seo/issue-fix-link-insert.d.ts.map +1 -1
- package/dist/seo/issue-fix-link-insert.js +122 -8
- package/dist/seo/issue-fix-link-insert.js.map +1 -1
- package/dist/server-site.d.ts.map +1 -1
- package/dist/server-site.js +15 -0
- package/dist/server-site.js.map +1 -1
- package/dist/site.d.ts +8 -0
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +6 -0
- package/dist/site.js.map +1 -1
- package/dist/webhooks/index.d.ts +3 -1
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/index.js.map +1 -1
- package/package.json +6 -1
- package/prisma/migrations/0025_job_cancel_review/down.sql +60 -0
- package/prisma/migrations/0025_job_cancel_review/migration.sql +56 -0
- package/prisma/migrations/0026_job_creator_system_settings/down.sql +30 -0
- package/prisma/migrations/0026_job_creator_system_settings/migration.sql +14 -0
- package/prisma/migrations/0027_chrome_regions/down.sql +24 -0
- package/prisma/migrations/0027_chrome_regions/migration.sql +16 -0
- package/prisma/schema.prisma +105 -15
|
@@ -3,209 +3,218 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The accent color is the one user-facing knob that recolors the admin's
|
|
5
5
|
* primary affordances (active nav, primary buttons, active tabs, focus rings,
|
|
6
|
-
* selected pills). Preset
|
|
7
|
-
* tokens.json` (`accentOptions`
|
|
6
|
+
* selected pills). Preset swatches align with `packages/cms-admin/
|
|
7
|
+
* design-system/tokens.json` (`accentOptions`).
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* `
|
|
11
|
-
*
|
|
9
|
+
* Any parseable color is accepted. Like the October 2026 kit's theme runtime
|
|
10
|
+
* (`docs/design/prenta/prototype/design-system/theme.js`), the pick is nudged
|
|
11
|
+
* until it is legible instead of being rejected: {@link tuneAccent} mixes it
|
|
12
|
+
* toward black for light bases and toward white for Graphite until each
|
|
13
|
+
* clears {@link ACCENT_TUNED_CONTRAST}. The client writes the pick and both
|
|
14
|
+
* tuned variants as `--acc-base`, `--acc-lt` and `--acc-dk` on `.prenta-admin`;
|
|
15
|
+
* the token CSS derives the rest, so an accent change repaints without a
|
|
16
|
+
* reload.
|
|
12
17
|
*/
|
|
13
|
-
import { contrastRatio,
|
|
18
|
+
import { contrastRatio, mixOklch, toHex } from './color.js';
|
|
14
19
|
const WHITE = '#ffffff';
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
const BLACK = '#000000';
|
|
21
|
+
const NEAR_BLACK = '#0e0f11';
|
|
22
|
+
/** Card surface on Porcelain and Linen. */
|
|
23
|
+
const LIGHT_CARD = '#ffffff';
|
|
24
|
+
/** Card surface on Graphite. */
|
|
25
|
+
const DARK_CARD = '#1b1d21';
|
|
26
|
+
/**
|
|
27
|
+
* Contrast the tuned accent must reach. The kit tunes to 4.6:1 rather than
|
|
28
|
+
* 4.5 so the tints derived from it keep AA after rounding.
|
|
29
|
+
*/
|
|
30
|
+
export const ACCENT_TUNED_CONTRAST = 4.6;
|
|
31
|
+
/** What `--acc-lt` is measured against: a light surface a touch darker than the bg. */
|
|
32
|
+
const LIGHT_PROBE = '#eef1f6';
|
|
33
|
+
/** What `--acc-dk` is measured against: the Graphite border, lighter than any surface. */
|
|
34
|
+
const DARK_PROBE = '#2a2d33';
|
|
35
|
+
/** Share of the pick in its Graphite tint (`--acc-l` in the dark token block). */
|
|
36
|
+
const DARK_TINT_WEIGHT = 20;
|
|
37
|
+
/** Share of the tuned accent in its light tint (`--acc-l` in the light token block). */
|
|
38
|
+
const LIGHT_TINT_WEIGHT = 11;
|
|
39
|
+
/** Mix steps from the pick to black or white. */
|
|
40
|
+
const TUNE_STEPS = 40;
|
|
41
|
+
function channels(hex) {
|
|
42
|
+
return [1, 3, 5].map((i) => parseInt(hex.slice(i, i + 2), 16));
|
|
43
|
+
}
|
|
44
|
+
function toHexChannels(c) {
|
|
45
|
+
return '#' + c.map((v) => Math.round(v).toString(16).padStart(2, '0')).join('');
|
|
46
|
+
}
|
|
47
|
+
/** WCAG luminance of unrounded 0..255 channels, as the kit computes it. */
|
|
48
|
+
function luminance(c) {
|
|
49
|
+
const [r, g, b] = c.map((v) => {
|
|
50
|
+
const s = v / 255;
|
|
51
|
+
return s <= 0.04045 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
|
|
52
|
+
});
|
|
53
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
54
|
+
}
|
|
55
|
+
function ratio(a, b) {
|
|
56
|
+
const x = luminance(a);
|
|
57
|
+
const y = luminance(b);
|
|
58
|
+
return (Math.max(x, y) + 0.05) / (Math.min(x, y) + 0.05);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The kit's `fit()`: mix `base` toward `toward` in sRGB, one 1/40 step at a
|
|
62
|
+
* time, and return the first step that clears `min` against every background
|
|
63
|
+
* `against` returns for it. Falls back to `toward` itself when no step does.
|
|
64
|
+
* The kit passes one fixed background; a step's own tint is a background too.
|
|
65
|
+
*/
|
|
66
|
+
function fit(base, toward, min, against) {
|
|
67
|
+
const c = channels(base);
|
|
68
|
+
const t = channels(toward);
|
|
69
|
+
for (let i = 0; i <= TUNE_STEPS; i++) {
|
|
70
|
+
const k = i / TUNE_STEPS;
|
|
71
|
+
const mixed = c.map((v, j) => v + (t[j] - v) * k);
|
|
72
|
+
if (against(toHexChannels(mixed)).every((bg) => ratio(mixed, channels(bg)) >= min)) {
|
|
73
|
+
return toHexChannels(mixed);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return toward;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Tune any parseable color for both bases. Null when it can't be parsed.
|
|
80
|
+
*
|
|
81
|
+
* One deliberate difference from the kit: each variant must also clear the
|
|
82
|
+
* accent's own tint, which is where the admin shows accent text on accent
|
|
83
|
+
* (the active nav item, selected rows). With the kit's single probe, warm and
|
|
84
|
+
* light picks fall short there: Actuate coral reads 4.49:1 on its Graphite
|
|
85
|
+
* tint, and a custom #0ea5e9 4.47:1 on its light tint.
|
|
86
|
+
*/
|
|
87
|
+
export function tuneAccent(color) {
|
|
88
|
+
const base = toHex(color);
|
|
89
|
+
if (!base)
|
|
90
|
+
return null;
|
|
91
|
+
// The light tint mixes the tuned value itself, so it moves with each step.
|
|
92
|
+
const lightTint = (step) => mixOklch(step, LIGHT_CARD, LIGHT_TINT_WEIGHT);
|
|
93
|
+
// The Graphite tint mixes the raw pick, so it is fixed.
|
|
94
|
+
const darkTint = mixOklch(base, DARK_CARD, DARK_TINT_WEIGHT);
|
|
95
|
+
return {
|
|
96
|
+
base,
|
|
97
|
+
lt: fit(base, BLACK, ACCENT_TUNED_CONTRAST, (step) => [LIGHT_PROBE, lightTint(step)]),
|
|
98
|
+
dk: fit(base, WHITE, ACCENT_TUNED_CONTRAST, () => [DARK_PROBE, darkTint]),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Concrete values for one base. The tint and mid tone mirror the token CSS:
|
|
103
|
+
* light mixes the tuned accent into the card (11% / 38%), Graphite mixes the
|
|
104
|
+
* raw pick (20% / 50%).
|
|
105
|
+
*/
|
|
106
|
+
function accentTokens(tuned, mode) {
|
|
107
|
+
const fill = mode === 'dark' ? tuned.dk : tuned.lt;
|
|
108
|
+
const foreground = mode === 'dark' ? NEAR_BLACK : WHITE;
|
|
109
|
+
const accentLight = mode === 'dark'
|
|
110
|
+
? mixOklch(tuned.base, DARK_CARD, DARK_TINT_WEIGHT)
|
|
111
|
+
: mixOklch(tuned.lt, LIGHT_CARD, LIGHT_TINT_WEIGHT);
|
|
112
|
+
const accentMid = mode === 'dark' ? mixOklch(tuned.base, DARK_CARD, 50) : mixOklch(tuned.lt, LIGHT_CARD, 38);
|
|
19
113
|
return {
|
|
20
|
-
|
|
21
|
-
|
|
114
|
+
brand: fill,
|
|
115
|
+
brandForeground: foreground,
|
|
116
|
+
primary: fill,
|
|
117
|
+
primaryForeground: foreground,
|
|
118
|
+
sidebarPrimary: fill,
|
|
119
|
+
ring: accentMid,
|
|
120
|
+
accentLight,
|
|
121
|
+
accentMid,
|
|
122
|
+
accentBase: tuned.base,
|
|
123
|
+
accentLt: tuned.lt,
|
|
124
|
+
accentDk: tuned.dk,
|
|
22
125
|
};
|
|
23
126
|
}
|
|
24
|
-
|
|
127
|
+
function preset(name, label, swatch) {
|
|
128
|
+
const tuned = tuneAccent(swatch);
|
|
129
|
+
return {
|
|
130
|
+
name,
|
|
131
|
+
label,
|
|
132
|
+
swatch,
|
|
133
|
+
light: accentTokens(tuned, 'light'),
|
|
134
|
+
dark: accentTokens(tuned, 'dark'),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const cobalt = preset('cobalt', 'Cobalt', '#2F5BEA');
|
|
138
|
+
const teal = preset('teal', 'Teal', '#0F8A7E');
|
|
139
|
+
const coral = preset('coral', 'Actuate coral', '#E8645A');
|
|
140
|
+
const rust = preset('rust', 'Rust', '#C2410C');
|
|
141
|
+
const slate = preset('slate', 'Slate', '#3F4A5A');
|
|
142
|
+
/**
|
|
143
|
+
* October 2026 accent presets, tuned by {@link tuneAccent} like any custom
|
|
144
|
+
* pick. Legacy names (`purple`, `blue`, `pink`, `orange`) alias the new
|
|
145
|
+
* presets so stored settings keep resolving.
|
|
146
|
+
*/
|
|
25
147
|
export const ACCENT_PRESETS = {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
sidebarPrimary: '#7C3AED',
|
|
36
|
-
ring: '#C4B5FD',
|
|
37
|
-
accentLight: '#EDE9FE',
|
|
38
|
-
accentMid: '#C4B5FD',
|
|
39
|
-
},
|
|
40
|
-
dark: {
|
|
41
|
-
brand: '#9D71F0',
|
|
42
|
-
brandForeground: NEAR_BLACK,
|
|
43
|
-
primary: '#9D71F0',
|
|
44
|
-
primaryForeground: NEAR_BLACK,
|
|
45
|
-
sidebarPrimary: '#9D71F0',
|
|
46
|
-
ring: '#5E3EAA',
|
|
47
|
-
accentLight: '#231950',
|
|
48
|
-
accentMid: '#5E3EAA',
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
blue: {
|
|
52
|
-
name: 'blue',
|
|
53
|
-
label: 'Blue',
|
|
54
|
-
swatch: '#2563EB',
|
|
55
|
-
light: {
|
|
56
|
-
brand: '#2563EB',
|
|
57
|
-
brandForeground: WHITE,
|
|
58
|
-
primary: '#2563EB',
|
|
59
|
-
primaryForeground: WHITE,
|
|
60
|
-
sidebarPrimary: '#2563EB',
|
|
61
|
-
ring: '#93C5FD',
|
|
62
|
-
accentLight: '#DBEAFE',
|
|
63
|
-
accentMid: '#93C5FD',
|
|
64
|
-
},
|
|
65
|
-
dark: {
|
|
66
|
-
brand: '#60A5FA',
|
|
67
|
-
brandForeground: NEAR_BLACK,
|
|
68
|
-
primary: '#60A5FA',
|
|
69
|
-
primaryForeground: NEAR_BLACK,
|
|
70
|
-
sidebarPrimary: '#60A5FA',
|
|
71
|
-
ring: '#1D4ED8',
|
|
72
|
-
accentLight: '#172554',
|
|
73
|
-
accentMid: '#1D4ED8',
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
teal: {
|
|
77
|
-
name: 'teal',
|
|
78
|
-
label: 'Teal',
|
|
79
|
-
swatch: '#0D9488',
|
|
80
|
-
light: {
|
|
81
|
-
brand: '#0D9488',
|
|
82
|
-
brandForeground: WHITE,
|
|
83
|
-
primary: '#0D9488',
|
|
84
|
-
primaryForeground: WHITE,
|
|
85
|
-
sidebarPrimary: '#0D9488',
|
|
86
|
-
ring: '#5EEAD4',
|
|
87
|
-
accentLight: '#CCFBF1',
|
|
88
|
-
accentMid: '#5EEAD4',
|
|
89
|
-
},
|
|
90
|
-
dark: {
|
|
91
|
-
brand: '#2DD4BF',
|
|
92
|
-
brandForeground: NEAR_BLACK,
|
|
93
|
-
primary: '#2DD4BF',
|
|
94
|
-
primaryForeground: NEAR_BLACK,
|
|
95
|
-
sidebarPrimary: '#2DD4BF',
|
|
96
|
-
ring: '#0F766E',
|
|
97
|
-
accentLight: '#042F2E',
|
|
98
|
-
accentMid: '#0F766E',
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
pink: {
|
|
102
|
-
name: 'pink',
|
|
103
|
-
label: 'Pink',
|
|
104
|
-
swatch: '#DB2777',
|
|
105
|
-
light: {
|
|
106
|
-
brand: '#DB2777',
|
|
107
|
-
brandForeground: WHITE,
|
|
108
|
-
primary: '#DB2777',
|
|
109
|
-
primaryForeground: WHITE,
|
|
110
|
-
sidebarPrimary: '#DB2777',
|
|
111
|
-
ring: '#F9A8D4',
|
|
112
|
-
accentLight: '#FCE7F3',
|
|
113
|
-
accentMid: '#F9A8D4',
|
|
114
|
-
},
|
|
115
|
-
dark: {
|
|
116
|
-
brand: '#F472B6',
|
|
117
|
-
brandForeground: NEAR_BLACK,
|
|
118
|
-
primary: '#F472B6',
|
|
119
|
-
primaryForeground: NEAR_BLACK,
|
|
120
|
-
sidebarPrimary: '#F472B6',
|
|
121
|
-
ring: '#9D174D',
|
|
122
|
-
accentLight: '#500724',
|
|
123
|
-
accentMid: '#9D174D',
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
orange: {
|
|
127
|
-
name: 'orange',
|
|
128
|
-
label: 'Orange',
|
|
129
|
-
swatch: '#EA580C',
|
|
130
|
-
light: {
|
|
131
|
-
brand: '#EA580C',
|
|
132
|
-
brandForeground: WHITE,
|
|
133
|
-
primary: '#EA580C',
|
|
134
|
-
primaryForeground: WHITE,
|
|
135
|
-
sidebarPrimary: '#EA580C',
|
|
136
|
-
ring: '#FDBA74',
|
|
137
|
-
accentLight: '#FFEDD5',
|
|
138
|
-
accentMid: '#FDBA74',
|
|
139
|
-
},
|
|
140
|
-
dark: {
|
|
141
|
-
brand: '#FB923C',
|
|
142
|
-
brandForeground: NEAR_BLACK,
|
|
143
|
-
primary: '#FB923C',
|
|
144
|
-
primaryForeground: NEAR_BLACK,
|
|
145
|
-
sidebarPrimary: '#FB923C',
|
|
146
|
-
ring: '#9A3412',
|
|
147
|
-
accentLight: '#431407',
|
|
148
|
-
accentMid: '#9A3412',
|
|
149
|
-
},
|
|
150
|
-
},
|
|
148
|
+
cobalt,
|
|
149
|
+
teal,
|
|
150
|
+
coral,
|
|
151
|
+
rust,
|
|
152
|
+
slate,
|
|
153
|
+
purple: { ...cobalt, name: 'purple' },
|
|
154
|
+
blue: { ...cobalt, name: 'blue' },
|
|
155
|
+
pink: { ...coral, name: 'pink' },
|
|
156
|
+
orange: { ...rust, name: 'orange' },
|
|
151
157
|
};
|
|
152
|
-
|
|
153
|
-
|
|
158
|
+
/** Presets shown in the Admin appearance picker. Legacy aliases are omitted. */
|
|
159
|
+
export const ACCENT_PRESET_LIST = [cobalt, teal, coral, rust, slate];
|
|
160
|
+
/**
|
|
161
|
+
* @deprecated Custom accents are no longer rejected for contrast; they are
|
|
162
|
+
* tuned with {@link tuneAccent}. Kept so existing imports still compile.
|
|
163
|
+
*/
|
|
154
164
|
export const MIN_ACCENT_CONTRAST = 3;
|
|
155
165
|
export function isAccentPreset(value) {
|
|
156
166
|
return Object.prototype.hasOwnProperty.call(ACCENT_PRESETS, value);
|
|
157
167
|
}
|
|
158
168
|
/**
|
|
159
|
-
* Validate an accent value. Presets
|
|
160
|
-
*
|
|
161
|
-
*
|
|
169
|
+
* Validate an accent value. Presets and any parseable `#hex` / `oklch()`
|
|
170
|
+
* color are valid: a low-contrast pick is tuned, not rejected. Only an
|
|
171
|
+
* unparseable string fails.
|
|
162
172
|
*/
|
|
163
173
|
export function validateAccentColor(value) {
|
|
164
174
|
if (isAccentPreset(value)) {
|
|
165
|
-
|
|
166
|
-
return { valid: true, contrast: c };
|
|
175
|
+
return { valid: true, contrast: contrastRatio(ACCENT_PRESETS[value].light.brand, WHITE) };
|
|
167
176
|
}
|
|
168
|
-
|
|
169
|
-
|
|
177
|
+
const tuned = tuneAccent(value);
|
|
178
|
+
if (!tuned) {
|
|
179
|
+
return { valid: false, contrast: 0, reason: 'Not a valid hex, rgb(), hsl() or oklch() color.' };
|
|
170
180
|
}
|
|
171
|
-
|
|
172
|
-
if (contrast < MIN_ACCENT_CONTRAST) {
|
|
173
|
-
return {
|
|
174
|
-
valid: false,
|
|
175
|
-
contrast,
|
|
176
|
-
reason: `Accent color contrast ${contrast.toFixed(2)}:1 is below the ${MIN_ACCENT_CONTRAST}:1 minimum for white text.`,
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
return { valid: true, contrast };
|
|
181
|
+
return { valid: true, contrast: contrastRatio(tuned.lt, WHITE) };
|
|
180
182
|
}
|
|
181
183
|
/**
|
|
182
184
|
* Resolve the accent tokens for a settings value + resolved color mode.
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
* foreground/ring envelope). Unknown names fall back to purple.
|
|
185
|
+
* Unknown names fall back to cobalt. Legacy names are real presets that
|
|
186
|
+
* alias the October 2026 colors.
|
|
186
187
|
*/
|
|
187
188
|
export function generateAdminThemeTokens(settings, resolvedMode) {
|
|
188
189
|
const accent = settings.adminAccentColor;
|
|
189
190
|
if (isAccentPreset(accent)) {
|
|
190
191
|
return ACCENT_PRESETS[accent][resolvedMode];
|
|
191
192
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
brand: accent,
|
|
197
|
-
brandForeground: foreground,
|
|
198
|
-
primary: accent,
|
|
199
|
-
primaryForeground: foreground,
|
|
200
|
-
sidebarPrimary: accent,
|
|
201
|
-
ring: tints.accentMid,
|
|
202
|
-
accentLight: tints.accentLight,
|
|
203
|
-
accentMid: tints.accentMid,
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
return ACCENT_PRESETS.purple[resolvedMode];
|
|
193
|
+
const tuned = tuneAccent(accent);
|
|
194
|
+
if (tuned)
|
|
195
|
+
return accentTokens(tuned, resolvedMode);
|
|
196
|
+
return ACCENT_PRESETS.cobalt[resolvedMode];
|
|
207
197
|
}
|
|
208
|
-
/**
|
|
198
|
+
/**
|
|
199
|
+
* The inline custom properties the admin root carries: the pick and its two
|
|
200
|
+
* tuned variants. `--acc`, its tint and mid tone, and every shadcn alias
|
|
201
|
+
* (`--primary`, `--ring`, …) are derived from them in the token CSS, per
|
|
202
|
+
* base, so the same three values serve Porcelain, Linen and Graphite.
|
|
203
|
+
*/
|
|
204
|
+
export function accentPickCssVars(tokens) {
|
|
205
|
+
return {
|
|
206
|
+
'--acc-base': tokens.accentBase,
|
|
207
|
+
'--acc-lt': tokens.accentLt,
|
|
208
|
+
'--acc-dk': tokens.accentDk,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* The pre-2026-10 shape: resolved per-mode values for `--acc`, its tint, and
|
|
213
|
+
* the shadcn aliases. Still correct for one mode, but it must be re-applied
|
|
214
|
+
* when the mode changes and it overrides the token CSS.
|
|
215
|
+
*
|
|
216
|
+
* @deprecated Use {@link accentPickCssVars}; the admin no longer writes these.
|
|
217
|
+
*/
|
|
209
218
|
export function accentTokensToCssVars(tokens) {
|
|
210
219
|
return {
|
|
211
220
|
'--acc': tokens.brand,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-tokens.js","sourceRoot":"","sources":["../../src/appearance/theme-tokens.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"theme-tokens.js","sourceRoot":"","sources":["../../src/appearance/theme-tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,15 @@ import type { PublicTheme } from './public-theme.js';
|
|
|
14
14
|
* settings.
|
|
15
15
|
*/
|
|
16
16
|
export type ColorMode = 'light' | 'dark' | 'system';
|
|
17
|
+
/** Which light base the admin paints when it is not in Graphite (dark). */
|
|
18
|
+
export type LightBase = 'porcelain' | 'linen';
|
|
17
19
|
export type SidebarDensity = 'default' | 'compact';
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Built-in accent presets. A custom value (hex/oklch string) is also allowed.
|
|
22
|
+
* `purple`, `blue`, `pink`, and `orange` are legacy names kept so stored
|
|
23
|
+
* settings still type-check; they resolve to the October 2026 presets.
|
|
24
|
+
*/
|
|
25
|
+
export type AccentColorName = 'cobalt' | 'teal' | 'coral' | 'rust' | 'slate' | 'purple' | 'blue' | 'pink' | 'orange';
|
|
20
26
|
/** Logo shape classification derived from aspect ratio. */
|
|
21
27
|
export type LogoShape = 'horizontal' | 'square' | 'vertical' | 'neutral' | 'unknown';
|
|
22
28
|
/** How the admin shell sources its brand assets. */
|
|
@@ -25,6 +31,14 @@ export type AdminBrandingMode = 'inheritPublicBrand' | 'customAdminBrand';
|
|
|
25
31
|
export type BrandAssetRole = 'publicPrimaryLogo' | 'publicLogoMark' | 'publicDarkLogo' | 'adminPrimaryLogo' | 'adminLogoMark' | 'adminDarkLogo' | 'faviconSource' | 'generatedFavicon';
|
|
26
32
|
export interface AppearanceSettings {
|
|
27
33
|
adminColorModeDefault: ColorMode;
|
|
34
|
+
/**
|
|
35
|
+
* Light base for the admin: Porcelain (cool, default) or Linen (warm). The
|
|
36
|
+
* kit's three bases map onto this plus the color mode: Graphite is
|
|
37
|
+
* `adminColorModeDefault: 'dark'`, and `'system'` follows the OS between
|
|
38
|
+
* this base and Graphite. Optional so settings written before it existed
|
|
39
|
+
* still type-check; `parseAppearance` fills in Porcelain.
|
|
40
|
+
*/
|
|
41
|
+
adminLightBase?: LightBase;
|
|
28
42
|
adminAccentColor: AccentColorName | string;
|
|
29
43
|
sidebarDensity: SidebarDensity;
|
|
30
44
|
contentFont: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/appearance/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AACnD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAA;AAElD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/appearance/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AACnD,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;AAC7C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAA;AAElD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,MAAM,GACN,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,MAAM,GACN,QAAQ,CAAA;AAEZ,2DAA2D;AAC3D,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AAEpF,oDAAoD;AACpD,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,kBAAkB,CAAA;AAEzE,wEAAwE;AACxE,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,GACf,eAAe,GACf,eAAe,GACf,kBAAkB,CAAA;AAEtB,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,EAAE,SAAS,CAAA;IAChC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,gBAAgB,EAAE,eAAe,GAAG,MAAM,CAAA;IAC1C,cAAc,EAAE,cAAc,CAAA;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,sEAAsE;IACtE,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAA;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAA;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,SAAS,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAC5B,6CAA6C;IAC7C,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;IACzB,uCAAuC;IACvC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;IACzB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAA;IAChB,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAC5B,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,mDAAmD;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,iEAAiE;IACjE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,sEAAsE;IACtE,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B"}
|
package/dist/astro-site.d.ts
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Framework-neutral / Astro site helpers.
|
|
3
|
-
*
|
|
4
|
-
* Wraps {@link createSiteClient} with optional pluggable caching. Unlike
|
|
5
|
-
* `createNextSiteHelpers`, this module has **no** `next` or `react` imports —
|
|
6
|
-
* safe to use from Astro, Node scripts, or any SSR host.
|
|
7
|
-
*
|
|
8
|
-
* Caching v1 for Astro: rely on CMS CDN + runtime KV (layers 1–2). Pass a
|
|
9
|
-
* custom `cache` adapter if the host has its own cache (e.g. Astro middleware
|
|
10
|
-
* cache or a CDN purge hook). Default is pass-through (no host-side ISR).
|
|
11
|
-
*/
|
|
12
1
|
import { type ResolveResult, type SiteClientOptions } from './site.js';
|
|
13
2
|
export { siteIdentityFromSeo, siteIdentityNodes, siteIdentityJsonLd, siteIdentityJsonLdHtml, jsonLdHasOrganization, type SiteIdentityInput, } from './seo/site-identity.js';
|
|
14
3
|
export { assertServingOriginConfigured, ServingOriginError, normalizeOrigin, originsMatch, siteUrlWouldFallbackToRequest, type AssertServingOriginOptions, } from './seo/serving-origin.js';
|
|
@@ -60,6 +49,7 @@ export declare function createAstroSiteHelpers(options?: AstroSiteHelpersOptions
|
|
|
60
49
|
resolveDocument: <T = Record<string, unknown>>(path: string, previewToken?: string) => Promise<ResolveResult<T> | null>;
|
|
61
50
|
getNavigation: (slug: string) => Promise<import("./site.js").PublicNavigation | null>;
|
|
62
51
|
getPublicForm: (slug: string) => Promise<import("./index.js").PublicForm | null>;
|
|
52
|
+
getChrome: (path: string) => Promise<import("./index.js").PublicChrome<import("./chrome/contract.js").DefaultChromeFields> | null>;
|
|
63
53
|
getPublishedDocument: <T = Record<string, unknown>>(urlPath: string) => Promise<ResolveResult<T> | null>;
|
|
64
54
|
getPageMeta: (urlPath: string) => Promise<AstroPageMeta>;
|
|
65
55
|
toPageMeta: typeof toPageMeta;
|
package/dist/astro-site.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astro-site.d.ts","sourceRoot":"","sources":["../src/astro-site.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"astro-site.d.ts","sourceRoot":"","sources":["../src/astro-site.ts"],"names":[],"mappings":"AAYA,OAAO,EAAoB,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACxF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,6BAA6B,EAC7B,KAAK,0BAA0B,GAChC,MAAM,yBAAyB,CAAA;AAEhC,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,CAAC,EACR,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACvC,OAAO,CAAC,CAAC,CAAC,CAAA;CACd;AAED,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,oFAAoF;IACpF,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACtC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAYD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,uBAA4B;;;oBAW7C,CAAC,kCAAkC,MAAM,iBAAiB,MAAM;sBAAhE,CAAC,kCAAkC,MAAM,iBAAiB,MAAM;0BA4BrE,MAAM;0BAEN,MAAM;sBAEV,MAAM;2BA5BU,CAAC,qCAAqC,MAAM;2BAc5C,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;;EAqBpE;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAclF"}
|
package/dist/astro-site.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* custom `cache` adapter if the host has its own cache (e.g. Astro middleware
|
|
10
10
|
* cache or a CDN purge hook). Default is pass-through (no host-side ISR).
|
|
11
11
|
*/
|
|
12
|
+
import { chromeCacheTags } from './cache/http.js';
|
|
12
13
|
import { createSiteClient } from './site.js';
|
|
13
14
|
export { siteIdentityFromSeo, siteIdentityNodes, siteIdentityJsonLd, siteIdentityJsonLdHtml, jsonLdHasOrganization, } from './seo/site-identity.js';
|
|
14
15
|
export { assertServingOriginConfigured, ServingOriginError, normalizeOrigin, originsMatch, siteUrlWouldFallbackToRequest, } from './seo/serving-origin.js';
|
|
@@ -68,6 +69,9 @@ export function createAstroSiteHelpers(options = {}) {
|
|
|
68
69
|
resolveDocument: fetchDocument,
|
|
69
70
|
getNavigation: (slug) => maybeCache(`prenta:nav:${slug}`, () => cms.getNavigation(slug), ['prenta']),
|
|
70
71
|
getPublicForm: (slug) => maybeCache(`prenta:form:${slug}`, () => cms.getPublicForm(slug), ['prenta']),
|
|
72
|
+
getChrome: (path) =>
|
|
73
|
+
// Menus, the brand and page overrides are in it too; their writes don't fire `prenta:chrome`.
|
|
74
|
+
maybeCache(`prenta:chrome:${path}`, () => cms.getChrome(path), chromeCacheTags(path)),
|
|
71
75
|
getPublishedDocument,
|
|
72
76
|
getPageMeta,
|
|
73
77
|
toPageMeta,
|
package/dist/astro-site.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astro-site.js","sourceRoot":"","sources":["../src/astro-site.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"astro-site.js","sourceRoot":"","sources":["../src/astro-site.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/team.d.ts
CHANGED
package/dist/auth/team.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/auth/team.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAsC,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AACpG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAOrD,KAAK,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAA;AAErE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,WAAW,CAAA;IACrB,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/auth/team.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/team.js
CHANGED
|
@@ -16,7 +16,7 @@ import { findInBatches } from '../db/find-in-batches.js';
|
|
|
16
16
|
const INACTIVE_DAYS = 90;
|
|
17
17
|
const STALE_INVITE_DAYS = 7;
|
|
18
18
|
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
19
|
-
function initialsFor(name, email) {
|
|
19
|
+
export function initialsFor(name, email) {
|
|
20
20
|
const source = name?.trim() || email;
|
|
21
21
|
const parts = source.split(/\s+/).filter(Boolean);
|
|
22
22
|
if (parts.length >= 2)
|