@ankhorage/templates 7.0.2 → 8.0.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/authoring/compose-category-manifest.d.ts +40 -0
  3. package/dist/authoring/compose-category-manifest.d.ts.map +1 -0
  4. package/dist/authoring/compose-category-manifest.js +150 -0
  5. package/dist/authoring/compose-category-manifest.js.map +1 -0
  6. package/dist/catalog.d.ts.map +1 -1
  7. package/dist/catalog.js +5 -2
  8. package/dist/catalog.js.map +1 -1
  9. package/dist/design/category-source.d.ts +557 -0
  10. package/dist/design/category-source.d.ts.map +1 -0
  11. package/dist/design/category-source.js +578 -0
  12. package/dist/design/category-source.js.map +1 -0
  13. package/dist/design/category-theme.d.ts +44 -0
  14. package/dist/design/category-theme.d.ts.map +1 -0
  15. package/dist/design/category-theme.js +146 -0
  16. package/dist/design/category-theme.js.map +1 -0
  17. package/dist/design/category-types.d.ts +73 -0
  18. package/dist/design/category-types.d.ts.map +1 -0
  19. package/dist/design/category-types.js +3 -0
  20. package/dist/design/category-types.js.map +1 -0
  21. package/dist/design/tone-catalog.d.ts +29 -0
  22. package/dist/design/tone-catalog.d.ts.map +1 -0
  23. package/dist/design/tone-catalog.js +254 -0
  24. package/dist/design/tone-catalog.js.map +1 -0
  25. package/dist/generators/create-category-app.d.ts.map +1 -1
  26. package/dist/generators/create-category-app.js +8 -2
  27. package/dist/generators/create-category-app.js.map +1 -1
  28. package/dist/index.d.ts +5 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +5 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/presets/category-presets.d.ts +4 -10
  33. package/dist/presets/category-presets.d.ts.map +1 -1
  34. package/dist/presets/category-presets.js +101 -209
  35. package/dist/presets/category-presets.js.map +1 -1
  36. package/dist/templates/shared/create-theme.d.ts +1 -0
  37. package/dist/templates/shared/create-theme.d.ts.map +1 -1
  38. package/dist/templates/shared/create-theme.js +2 -0
  39. package/dist/templates/shared/create-theme.js.map +1 -1
  40. package/dist/templates/starter/starter.registry.d.ts.map +1 -1
  41. package/dist/templates/starter/starter.registry.js +6 -11
  42. package/dist/templates/starter/starter.registry.js.map +1 -1
  43. package/dist/templates/starter/starter.template.d.ts.map +1 -1
  44. package/dist/templates/starter/starter.template.js +2 -1
  45. package/dist/templates/starter/starter.template.js.map +1 -1
  46. package/dist/templates/starter/starter.types.d.ts +1 -0
  47. package/dist/templates/starter/starter.types.d.ts.map +1 -1
  48. package/package.json +3 -2
  49. package/dist/templates/starter/categories/fallback/default.template.d.ts +0 -4
  50. package/dist/templates/starter/categories/fallback/default.template.d.ts.map +0 -1
  51. package/dist/templates/starter/categories/fallback/default.template.js +0 -17
  52. package/dist/templates/starter/categories/fallback/default.template.js.map +0 -1
  53. package/dist/templates/starter/categories/fallback/index.d.ts +0 -8
  54. package/dist/templates/starter/categories/fallback/index.d.ts.map +0 -1
  55. package/dist/templates/starter/categories/fallback/index.js +0 -10
  56. package/dist/templates/starter/categories/fallback/index.js.map +0 -1
  57. package/dist/templates/starter/categories/fallback/routes.d.ts +0 -9
  58. package/dist/templates/starter/categories/fallback/routes.d.ts.map +0 -1
  59. package/dist/templates/starter/categories/fallback/routes.js +0 -20
  60. package/dist/templates/starter/categories/fallback/routes.js.map +0 -1
  61. package/dist/templates/starter/categories/fallback/screens.d.ts +0 -5
  62. package/dist/templates/starter/categories/fallback/screens.d.ts.map +0 -1
  63. package/dist/templates/starter/categories/fallback/screens.js +0 -133
  64. package/dist/templates/starter/categories/fallback/screens.js.map +0 -1
@@ -0,0 +1,146 @@
1
+ import { parseHexColorOrThrow } from '@ankhorage/color-theory';
2
+ import { compileZoraTheme, createZoraThemeConfig, } from '@ankhorage/zora/theme';
3
+ import { CATEGORY_PRESETS } from '../presets/category-presets';
4
+ import { resolveTonePair } from './tone-catalog';
5
+ /*** Resolve canonical spacing token overrides for one density profile. */
6
+ function resolveDensityTokens(density) {
7
+ if (density === 'compact')
8
+ return { none: 0, xs: 4, s: 8, m: 12, l: 20, xl: 28, xxl: 40 };
9
+ if (density === 'spacious')
10
+ return { none: 0, xs: 5, s: 10, m: 20, l: 30, xl: 40, xxl: 60 };
11
+ return { none: 0, xs: 4, s: 8, m: 16, l: 24, xl: 32, xxl: 48 };
12
+ }
13
+ /*** Resolve canonical radius token overrides for one shape profile. */
14
+ function resolveShapeTokens(shape) {
15
+ if (shape === 'sharp')
16
+ return { none: 0, s: 2, m: 4, l: 8, full: 9999 };
17
+ if (shape === 'soft')
18
+ return { none: 0, s: 8, m: 12, l: 24, full: 9999 };
19
+ return { none: 0, s: 4, m: 8, l: 16, full: 9999 };
20
+ }
21
+ /*** Create canonical Contracts token overrides from reviewed density and shape direction. */
22
+ function createProfileTokens(density, shape, overrides) {
23
+ return {
24
+ spacing: { ...resolveDensityTokens(density), ...overrides?.spacing },
25
+ radii: { ...resolveShapeTokens(shape), ...overrides?.radii },
26
+ ...(overrides?.typography ? { typography: overrides.typography } : {}),
27
+ ...(overrides?.shadows ? { shadows: overrides.shadows } : {}),
28
+ };
29
+ }
30
+ /*** Resolve one requested tone pair and retain unsupported intent as diagnostics. */
31
+ function resolveModeTonePair(mode, id, diagnostics) {
32
+ const pair = resolveTonePair(id);
33
+ if (!pair) {
34
+ diagnostics.push({
35
+ code: 'unknown-tone-pair',
36
+ severity: 'error',
37
+ path: `tonePairs.${mode}`,
38
+ message: `Tone pair "${id}" is not present in the canonical Templates catalog.`,
39
+ });
40
+ return null;
41
+ }
42
+ if (!pair.modes.includes(mode)) {
43
+ diagnostics.push({
44
+ code: 'tone-pair-mode-mismatch',
45
+ severity: 'error',
46
+ path: `tonePairs.${mode}`,
47
+ message: `Tone pair "${id}" is reviewed for ${pair.modes.join(', ')} mode, not ${mode}.`,
48
+ });
49
+ }
50
+ if (pair.decorativeFinish) {
51
+ diagnostics.push({
52
+ code: 'decorative-finish-requires-runtime-recipe',
53
+ severity: 'warning',
54
+ path: `tonePairs.${mode}`,
55
+ message: `${pair.decorativeFinish} remains design intent; only its measurable flat fallback is compiled.`,
56
+ });
57
+ }
58
+ return pair;
59
+ }
60
+ /*** Resolve category defaults and explicit overrides into canonical compact ThemeConfig source. */
61
+ export function resolveCategoryDesignPreset(category, overrides = {}) {
62
+ const preset = Object.values(CATEGORY_PRESETS).find((candidate) => candidate.category === category);
63
+ if (!preset)
64
+ throw new Error(`Missing category preset: ${category}.`);
65
+ const primaryColor = overrides.primaryColor ?? preset.recommendedPrimaryColors[0];
66
+ const harmony = overrides.harmony ?? preset.recommendedHarmonies[0];
67
+ const density = overrides.density ?? preset.density;
68
+ const shape = overrides.shape ?? preset.shape;
69
+ const diagnostics = [];
70
+ const lightToneId = overrides.tonePairs?.light ?? preset.tonePairs.light;
71
+ const darkToneId = overrides.tonePairs?.dark ?? preset.tonePairs.dark;
72
+ const base = createZoraThemeConfig({
73
+ id: overrides.themeId ?? 'default',
74
+ name: overrides.themeName ?? 'Default',
75
+ appCategory: category,
76
+ primaryColor,
77
+ harmony,
78
+ });
79
+ const themeConfig = {
80
+ ...base,
81
+ light: { ...base.light, ...overrides.light },
82
+ dark: { ...base.dark, ...overrides.dark },
83
+ tokens: createProfileTokens(density, shape, overrides.tokens),
84
+ ...(overrides.recipes ? { recipes: overrides.recipes } : {}),
85
+ };
86
+ return {
87
+ category,
88
+ preset,
89
+ primaryColor,
90
+ harmony,
91
+ tonePairs: {
92
+ light: resolveModeTonePair('light', lightToneId, diagnostics),
93
+ dark: resolveModeTonePair('dark', darkToneId, diagnostics),
94
+ },
95
+ density,
96
+ shape,
97
+ themeConfig,
98
+ diagnostics,
99
+ };
100
+ }
101
+ /*** Create compiler selection targets for the measurable accent and foundation direction. */
102
+ function createSelectionTargets(mode, pair) {
103
+ if (!pair)
104
+ return [];
105
+ const darkMode = mode === 'dark';
106
+ return [
107
+ {
108
+ id: 'accent',
109
+ swatch: 'primary',
110
+ target: pair.flatFallbackTarget ?? pair.accentTarget,
111
+ contexts: [
112
+ {
113
+ id: darkMode ? 'on-dark-canvas' : 'on-light-canvas',
114
+ against: parseHexColorOrThrow(darkMode ? '#000000' : '#FFFFFF'),
115
+ minimumContrast: 3,
116
+ },
117
+ ],
118
+ tiePolicy: darkMode ? 'higher-step' : 'lower-step',
119
+ },
120
+ {
121
+ id: 'foundation',
122
+ swatch: 'neutral',
123
+ target: pair.foundationTarget,
124
+ contexts: [
125
+ {
126
+ id: darkMode ? 'light-content' : 'dark-content',
127
+ against: parseHexColorOrThrow(darkMode ? '#FFFFFF' : '#000000'),
128
+ minimumContrast: 4.5,
129
+ },
130
+ ],
131
+ tiePolicy: darkMode ? 'higher-step' : 'lower-step',
132
+ },
133
+ ];
134
+ }
135
+ /*** Resolve and compile a category theme through the released ZORA owner pipeline. */
136
+ export function compileCategoryDesign(category, overrides = {}) {
137
+ const resolved = resolveCategoryDesignPreset(category, overrides);
138
+ const computedTheme = compileZoraTheme(resolved.themeConfig, {
139
+ selectionTargets: {
140
+ light: createSelectionTargets('light', resolved.tonePairs.light),
141
+ dark: createSelectionTargets('dark', resolved.tonePairs.dark),
142
+ },
143
+ });
144
+ return { ...resolved, computedTheme };
145
+ }
146
+ //# sourceMappingURL=category-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-theme.js","sourceRoot":"","sources":["../../src/design/category-theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { AppCategory, ThemeConfig } from '@ankhorage/contracts';
2
+ import type { TonePairId } from './tone-catalog';
3
+ export declare const DESIGN_DENSITIES: readonly ["compact", "comfortable", "spacious"];
4
+ export type DesignDensity = (typeof DESIGN_DENSITIES)[number];
5
+ export declare const DESIGN_SHAPES: readonly ["sharp", "neutral", "soft"];
6
+ export type DesignShape = (typeof DESIGN_SHAPES)[number];
7
+ export interface CategoryPreset {
8
+ readonly category: AppCategory;
9
+ readonly label: string;
10
+ readonly defaultName: string;
11
+ readonly defaultSlug: string;
12
+ readonly summary: string;
13
+ readonly focusAreas: readonly [string, string, string];
14
+ readonly designIntent: string;
15
+ readonly recommendedPrimaryColors: readonly [string, ...string[]];
16
+ readonly recommendedHarmonies: readonly [
17
+ ThemeConfig['light']['harmony'],
18
+ ...ThemeConfig['light']['harmony'][]
19
+ ];
20
+ readonly tonePairs: Readonly<Record<'light' | 'dark', TonePairId>>;
21
+ readonly bodyFontCandidates: readonly [string, ...string[]];
22
+ readonly headingStrategy: 'same' | 'auto-pair';
23
+ readonly headingFontCandidates: readonly string[];
24
+ readonly specialistFontCandidates: readonly {
25
+ readonly family: string;
26
+ readonly usage: string;
27
+ }[];
28
+ readonly density: DesignDensity;
29
+ readonly shape: DesignShape;
30
+ }
31
+ interface ExistingCategoryPresetSnapshot {
32
+ readonly label: string;
33
+ readonly defaultName: string;
34
+ readonly defaultSlug: string;
35
+ readonly primaryColor: string;
36
+ readonly harmony: ThemeConfig['light']['harmony'];
37
+ readonly summary: string;
38
+ readonly focusAreas: readonly [string, string, string];
39
+ }
40
+ interface SuppliedCategoryPresetSnapshot {
41
+ readonly designIntent: string;
42
+ readonly primaryColor: string;
43
+ readonly harmony: ThemeConfig['light']['harmony'];
44
+ readonly lightTonePair: TonePairId;
45
+ readonly darkTonePair: TonePairId;
46
+ readonly bodyFontCandidates: readonly [string, ...string[]];
47
+ readonly headingStrategy: 'same' | 'auto-pair';
48
+ readonly headingFontCandidates: readonly string[];
49
+ readonly specialistFontCandidates: readonly {
50
+ readonly family: string;
51
+ readonly usage: string;
52
+ }[];
53
+ readonly density: DesignDensity;
54
+ readonly shape: DesignShape;
55
+ }
56
+ export interface CategoryPresetReconciliationSource {
57
+ readonly category: AppCategory;
58
+ readonly existing: ExistingCategoryPresetSnapshot;
59
+ readonly supplied: SuppliedCategoryPresetSnapshot;
60
+ }
61
+ export type CategoryPresetReconciliationDecision = 'adopted-supplied' | 'ordered-both' | 'preserved-existing' | 'sources-agree';
62
+ export interface CategoryPresetFieldReconciliation {
63
+ readonly field: string;
64
+ readonly decision: CategoryPresetReconciliationDecision;
65
+ readonly reason: string;
66
+ }
67
+ export interface CategoryPresetReconciliationReport {
68
+ readonly category: AppCategory;
69
+ readonly source: CategoryPresetReconciliationSource;
70
+ readonly fields: readonly CategoryPresetFieldReconciliation[];
71
+ }
72
+ export {};
73
+ //# sourceMappingURL=category-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-types.d.ts","sourceRoot":"","sources":["../../src/design/category-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export const DESIGN_DENSITIES = ['compact', 'comfortable', 'spacious'];
2
+ export const DESIGN_SHAPES = ['sharp', 'neutral', 'soft'];
3
+ //# sourceMappingURL=category-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-types.js","sourceRoot":"","sources":["../../src/design/category-types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAGhF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare const ACCENT_TONE_FAMILIES: readonly ["jewel", "pastel", "earthy", "muted", "vivid", "bright", "fluorescent", "neon", "ice", "metallic"];
2
+ export declare const FOUNDATION_TONE_FAMILIES: readonly ["pastel", "ice", "neutral-light", "muted-light", "earthy-light", "neutral-dark", "jewel-dark"];
3
+ export type AccentToneFamily = (typeof ACCENT_TONE_FAMILIES)[number];
4
+ export type FoundationToneFamily = (typeof FOUNDATION_TONE_FAMILIES)[number];
5
+ export type TonePairId = `${AccentToneFamily}-on-${FoundationToneFamily}`;
6
+ export type TonePairClassification = 'recommended' | 'conditional' | 'unsafe';
7
+ export type ThemeMode = 'light' | 'dark';
8
+ export interface ToneTarget {
9
+ readonly lightness: number;
10
+ readonly chroma: number;
11
+ }
12
+ export interface TonePairDefinition {
13
+ readonly id: TonePairId;
14
+ readonly accent: AccentToneFamily;
15
+ readonly foundation: FoundationToneFamily;
16
+ readonly modes: readonly [ThemeMode];
17
+ readonly classification: TonePairClassification;
18
+ readonly accentTarget: ToneTarget;
19
+ readonly foundationTarget: ToneTarget;
20
+ readonly constraints: readonly string[];
21
+ readonly decorativeFinish?: 'glow' | 'material';
22
+ readonly flatFallbackTarget?: ToneTarget;
23
+ }
24
+ export declare const ACCENT_TONE_TARGETS: Readonly<Record<AccentToneFamily, ToneTarget>>;
25
+ export declare const FOUNDATION_TONE_TARGETS: Readonly<Record<FoundationToneFamily, ToneTarget>>;
26
+ export declare const TONE_PAIR_CATALOG: readonly TonePairDefinition[];
27
+ /*** Resolve a reviewed tone pair or report that the identifier is not canonical. */
28
+ export declare function resolveTonePair(id: string): TonePairDefinition | undefined;
29
+ //# sourceMappingURL=tone-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tone-catalog.d.ts","sourceRoot":"","sources":["../../src/design/tone-catalog.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,8GAWvB,CAAC;AAEX,eAAO,MAAM,wBAAwB,0GAQ3B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AACrE,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,GAAG,gBAAgB,OAAO,oBAAoB,EAAE,CAAC;AAC1E,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,aAAa,GAAG,QAAQ,CAAC;AAC9E,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAChD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC;CAC1C;AAED,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAW9E,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAQtF,CAAC;AAqMF,eAAO,MAAM,iBAAiB,EAAE,SAAS,kBAAkB,EAK1D,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAE1E"}
@@ -0,0 +1,254 @@
1
+ export const ACCENT_TONE_FAMILIES = [
2
+ 'jewel',
3
+ 'pastel',
4
+ 'earthy',
5
+ 'muted',
6
+ 'vivid',
7
+ 'bright',
8
+ 'fluorescent',
9
+ 'neon',
10
+ 'ice',
11
+ 'metallic',
12
+ ];
13
+ export const FOUNDATION_TONE_FAMILIES = [
14
+ 'pastel',
15
+ 'ice',
16
+ 'neutral-light',
17
+ 'muted-light',
18
+ 'earthy-light',
19
+ 'neutral-dark',
20
+ 'jewel-dark',
21
+ ];
22
+ export const ACCENT_TONE_TARGETS = {
23
+ jewel: { lightness: 0.53, chroma: 0.18 },
24
+ pastel: { lightness: 0.885, chroma: 0.07 },
25
+ earthy: { lightness: 0.6, chroma: 0.085 },
26
+ muted: { lightness: 0.625, chroma: 0.055 },
27
+ vivid: { lightness: 0.675, chroma: 0.23 },
28
+ bright: { lightness: 0.8, chroma: 0.19 },
29
+ fluorescent: { lightness: 0.81, chroma: 0.3 },
30
+ neon: { lightness: 0.78, chroma: 0.3 },
31
+ ice: { lightness: 0.94, chroma: 0.03 },
32
+ metallic: { lightness: 0.53, chroma: 0.12 },
33
+ };
34
+ export const FOUNDATION_TONE_TARGETS = {
35
+ pastel: { lightness: 0.885, chroma: 0.07 },
36
+ ice: { lightness: 0.94, chroma: 0.03 },
37
+ 'neutral-light': { lightness: 0.955, chroma: 0.012 },
38
+ 'muted-light': { lightness: 0.88, chroma: 0.038 },
39
+ 'earthy-light': { lightness: 0.86, chroma: 0.055 },
40
+ 'neutral-dark': { lightness: 0.14, chroma: 0.012 },
41
+ 'jewel-dark': { lightness: 0.24, chroma: 0.13 },
42
+ };
43
+ const CLASSIFICATION_MATRIX = {
44
+ jewel: [
45
+ 'recommended',
46
+ 'recommended',
47
+ 'recommended',
48
+ 'recommended',
49
+ 'conditional',
50
+ 'recommended',
51
+ 'conditional',
52
+ ],
53
+ pastel: [
54
+ 'conditional',
55
+ 'conditional',
56
+ 'conditional',
57
+ 'conditional',
58
+ 'conditional',
59
+ 'recommended',
60
+ 'recommended',
61
+ ],
62
+ earthy: [
63
+ 'recommended',
64
+ 'recommended',
65
+ 'recommended',
66
+ 'recommended',
67
+ 'conditional',
68
+ 'recommended',
69
+ 'conditional',
70
+ ],
71
+ muted: [
72
+ 'recommended',
73
+ 'recommended',
74
+ 'recommended',
75
+ 'conditional',
76
+ 'conditional',
77
+ 'recommended',
78
+ 'conditional',
79
+ ],
80
+ vivid: [
81
+ 'recommended',
82
+ 'recommended',
83
+ 'recommended',
84
+ 'recommended',
85
+ 'conditional',
86
+ 'recommended',
87
+ 'recommended',
88
+ ],
89
+ bright: [
90
+ 'recommended',
91
+ 'recommended',
92
+ 'recommended',
93
+ 'recommended',
94
+ 'conditional',
95
+ 'recommended',
96
+ 'recommended',
97
+ ],
98
+ fluorescent: [
99
+ 'conditional',
100
+ 'conditional',
101
+ 'conditional',
102
+ 'conditional',
103
+ 'unsafe',
104
+ 'recommended',
105
+ 'recommended',
106
+ ],
107
+ neon: ['unsafe', 'unsafe', 'conditional', 'conditional', 'unsafe', 'recommended', 'recommended'],
108
+ ice: [
109
+ 'conditional',
110
+ 'conditional',
111
+ 'conditional',
112
+ 'conditional',
113
+ 'conditional',
114
+ 'recommended',
115
+ 'recommended',
116
+ ],
117
+ metallic: [
118
+ 'conditional',
119
+ 'recommended',
120
+ 'recommended',
121
+ 'conditional',
122
+ 'conditional',
123
+ 'recommended',
124
+ 'recommended',
125
+ ],
126
+ };
127
+ const FUNCTIONAL_CONSTRAINTS = {
128
+ recommended: ['Measure every functional foreground and adjacent-surface contrast.'],
129
+ conditional: [
130
+ 'Constrain accent area and use measured neutral on-colors or border support.',
131
+ 'Do not use color as the only state or information cue.',
132
+ ],
133
+ unsafe: [
134
+ 'Restrict this pair to decorative micro-use unless measured correction changes its classification.',
135
+ 'Do not use this pair for interactive or informational roles.',
136
+ ],
137
+ };
138
+ /*** Resolve one reviewed classification row without dynamic object access. */
139
+ function resolveClassificationRow(accent) {
140
+ if (accent === 'jewel')
141
+ return CLASSIFICATION_MATRIX.jewel;
142
+ if (accent === 'pastel')
143
+ return CLASSIFICATION_MATRIX.pastel;
144
+ if (accent === 'earthy')
145
+ return CLASSIFICATION_MATRIX.earthy;
146
+ if (accent === 'muted')
147
+ return CLASSIFICATION_MATRIX.muted;
148
+ if (accent === 'vivid')
149
+ return CLASSIFICATION_MATRIX.vivid;
150
+ if (accent === 'bright')
151
+ return CLASSIFICATION_MATRIX.bright;
152
+ if (accent === 'fluorescent')
153
+ return CLASSIFICATION_MATRIX.fluorescent;
154
+ if (accent === 'neon')
155
+ return CLASSIFICATION_MATRIX.neon;
156
+ if (accent === 'ice')
157
+ return CLASSIFICATION_MATRIX.ice;
158
+ return CLASSIFICATION_MATRIX.metallic;
159
+ }
160
+ /*** Resolve the canonical measurable target for one accent family. */
161
+ function resolveAccentTarget(accent) {
162
+ if (accent === 'jewel')
163
+ return ACCENT_TONE_TARGETS.jewel;
164
+ if (accent === 'pastel')
165
+ return ACCENT_TONE_TARGETS.pastel;
166
+ if (accent === 'earthy')
167
+ return ACCENT_TONE_TARGETS.earthy;
168
+ if (accent === 'muted')
169
+ return ACCENT_TONE_TARGETS.muted;
170
+ if (accent === 'vivid')
171
+ return ACCENT_TONE_TARGETS.vivid;
172
+ if (accent === 'bright')
173
+ return ACCENT_TONE_TARGETS.bright;
174
+ if (accent === 'fluorescent')
175
+ return ACCENT_TONE_TARGETS.fluorescent;
176
+ if (accent === 'neon')
177
+ return ACCENT_TONE_TARGETS.neon;
178
+ if (accent === 'ice')
179
+ return ACCENT_TONE_TARGETS.ice;
180
+ return ACCENT_TONE_TARGETS.metallic;
181
+ }
182
+ /*** Resolve the canonical measurable target for one foundation family. */
183
+ function resolveFoundationTarget(foundation) {
184
+ if (foundation === 'pastel')
185
+ return FOUNDATION_TONE_TARGETS.pastel;
186
+ if (foundation === 'ice')
187
+ return FOUNDATION_TONE_TARGETS.ice;
188
+ if (foundation === 'neutral-light')
189
+ return FOUNDATION_TONE_TARGETS['neutral-light'];
190
+ if (foundation === 'muted-light')
191
+ return FOUNDATION_TONE_TARGETS['muted-light'];
192
+ if (foundation === 'earthy-light')
193
+ return FOUNDATION_TONE_TARGETS['earthy-light'];
194
+ if (foundation === 'neutral-dark')
195
+ return FOUNDATION_TONE_TARGETS['neutral-dark'];
196
+ return FOUNDATION_TONE_TARGETS['jewel-dark'];
197
+ }
198
+ /*** Resolve functional constraints for one reviewed classification. */
199
+ function resolveFunctionalConstraints(classification) {
200
+ if (classification === 'recommended')
201
+ return FUNCTIONAL_CONSTRAINTS.recommended;
202
+ if (classification === 'conditional')
203
+ return FUNCTIONAL_CONSTRAINTS.conditional;
204
+ return FUNCTIONAL_CONSTRAINTS.unsafe;
205
+ }
206
+ /*** Resolve the mode implied by a foundation family. */
207
+ function resolveFoundationMode(foundation) {
208
+ return foundation === 'neutral-dark' || foundation === 'jewel-dark' ? 'dark' : 'light';
209
+ }
210
+ /*** Add finish-specific constraints without pretending decorative effects are functional colors. */
211
+ function resolveFinish(accent) {
212
+ if (accent === 'neon') {
213
+ return {
214
+ constraints: ['Glow is decorative and must not carry state or focus.'],
215
+ decorativeFinish: 'glow',
216
+ flatFallbackTarget: ACCENT_TONE_TARGETS.neon,
217
+ };
218
+ }
219
+ if (accent === 'metallic') {
220
+ return {
221
+ constraints: [
222
+ 'The material finish is decorative and requires this accessible flat fallback.',
223
+ ],
224
+ decorativeFinish: 'material',
225
+ flatFallbackTarget: ACCENT_TONE_TARGETS.metallic,
226
+ };
227
+ }
228
+ return { constraints: [] };
229
+ }
230
+ /*** Build one exhaustive catalog entry from the canonical family matrix. */
231
+ function createTonePairDefinition(accent, foundation, foundationIndex) {
232
+ const classification = resolveClassificationRow(accent).at(foundationIndex);
233
+ if (!classification)
234
+ throw new Error(`Missing tone classification for ${accent}-on-${foundation}.`);
235
+ const finish = resolveFinish(accent);
236
+ return {
237
+ id: `${accent}-on-${foundation}`,
238
+ accent,
239
+ foundation,
240
+ modes: [resolveFoundationMode(foundation)],
241
+ classification,
242
+ accentTarget: resolveAccentTarget(accent),
243
+ foundationTarget: resolveFoundationTarget(foundation),
244
+ constraints: [...resolveFunctionalConstraints(classification), ...finish.constraints],
245
+ ...(finish.decorativeFinish ? { decorativeFinish: finish.decorativeFinish } : {}),
246
+ ...(finish.flatFallbackTarget ? { flatFallbackTarget: finish.flatFallbackTarget } : {}),
247
+ };
248
+ }
249
+ export const TONE_PAIR_CATALOG = ACCENT_TONE_FAMILIES.flatMap((accent) => FOUNDATION_TONE_FAMILIES.map((foundation, foundationIndex) => createTonePairDefinition(accent, foundation, foundationIndex)));
250
+ /*** Resolve a reviewed tone pair or report that the identifier is not canonical. */
251
+ export function resolveTonePair(id) {
252
+ return TONE_PAIR_CATALOG.find((pair) => pair.id === id);
253
+ }
254
+ //# sourceMappingURL=tone-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tone-catalog.js","sourceRoot":"","sources":["../../src/design/tone-catalog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-category-app.d.ts","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAe,MAAM,sBAAsB,CAAC;AAGlF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA6DhF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,EACrB,QAAQ,GAAE,YAAwB,EAClC,SAAS,CAAC,EAAE,oBAAoB,GAC/B,WAAW,CAGb"}
1
+ {"version":3,"file":"create-category-app.d.ts","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAe,MAAM,sBAAsB,CAAC;AAIlF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAsEhF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,EACrB,QAAQ,GAAE,YAAwB,EAClC,SAAS,CAAC,EAAE,oBAAoB,GAC/B,WAAW,CAGb"}
@@ -1,3 +1,4 @@
1
+ import { resolveCategoryDesignPreset } from '../design/category-theme';
1
2
  import { mergeAppManifest } from '../internal/merge';
2
3
  import { CATEGORY_PRESETS } from '../presets/category-presets';
3
4
  import { createStarterTemplate } from '../templates/starter';
@@ -20,6 +21,10 @@ const TEMPLATE_FACTORIES = {
20
21
  const version = overrides?.metadata?.version;
21
22
  const themeId = resolveSeedThemeId(overrides);
22
23
  const themeName = overrides?.themes?.[0]?.name;
24
+ const resolvedDesign = resolveCategoryDesignPreset(category, {
25
+ ...(themeId ? { themeId } : {}),
26
+ ...(themeName ? { themeName } : {}),
27
+ });
23
28
  return createStarterTemplate({
24
29
  category,
25
30
  categoryLabel: preset.label,
@@ -27,8 +32,9 @@ const TEMPLATE_FACTORIES = {
27
32
  slug: resolveSeedSlug(category, overrides),
28
33
  summary: preset.summary,
29
34
  focusAreas: preset.focusAreas,
30
- primaryColor: resolveThemeModeValue(overrides, (theme) => theme.light.primaryColor, preset.primaryColor),
31
- harmony: resolveThemeModeValue(overrides, (theme) => theme.light.harmony, preset.harmony),
35
+ primaryColor: resolveThemeModeValue(overrides, (theme) => theme.light.primaryColor, resolvedDesign.primaryColor),
36
+ harmony: resolveThemeModeValue(overrides, (theme) => theme.light.harmony, resolvedDesign.harmony),
37
+ theme: overrides?.themes?.[0] ?? resolvedDesign.themeConfig,
32
38
  ...(version ? { version } : {}),
33
39
  ...(themeId ? { themeId } : {}),
34
40
  ...(themeName ? { themeName } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"create-category-app.js","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-category-app.js","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,10 @@
1
+ export { assertTemplateManifestReady, type CategoryAppManifestComposition, composeCategoryAppManifest, type ComposeCategoryAppManifestInput, type TemplateAuthoringState, type TemplateCompositionDiagnostic, type TemplateCompositionDiagnosticCode, type TemplateCompositionStatus, validateTemplateManifest, } from './authoring/compose-category-manifest';
2
+ export { type CategoryDesignDiagnostic, type CategoryDesignDiagnosticCode, type CategoryDesignOverrides, compileCategoryDesign, type CompiledCategoryDesign, resolveCategoryDesignPreset, type ResolvedCategoryDesignPreset, } from './design/category-theme';
3
+ export { DESIGN_DENSITIES, DESIGN_SHAPES, type DesignDensity, type DesignShape, } from './design/category-types';
4
+ export { ACCENT_TONE_FAMILIES, ACCENT_TONE_TARGETS, type AccentToneFamily, FOUNDATION_TONE_FAMILIES, FOUNDATION_TONE_TARGETS, type FoundationToneFamily, resolveTonePair, type ThemeMode, TONE_PAIR_CATALOG, type TonePairClassification, type TonePairDefinition, type TonePairId, type ToneTarget, } from './design/tone-catalog';
1
5
  export { createOAuthFixtureManifest, listOAuthFixtures, OAUTH_CALLBACK_ROUTE, OAUTH_FIXTURE_IDS, type OAuthFixtureDefinition, type OAuthFixtureId, resolveOAuthFixture, } from './fixtures/oauth';
2
6
  export { createCategoryAppManifest } from './generators/create-category-app';
3
- export { CATEGORY_PRESETS, type CategoryPreset } from './presets/category-presets';
7
+ export { CATEGORY_PRESET_RECONCILIATION, CATEGORY_PRESETS, type CategoryPreset, type CategoryPresetFieldReconciliation, type CategoryPresetReconciliationDecision, type CategoryPresetReconciliationReport, } from './presets/category-presets';
4
8
  export { type CategoryStarterTemplateDefinition, createStarterTemplate, listStarterTemplates, listStarterTemplatesByCategory, listStarterTemplateSummaries, resolveStarterTemplate, type StarterTemplateFactory, type StarterTemplateId, type StarterTemplateOptions, type StarterTemplateSelection, type StarterTemplateSummary, TEMPLATE_KINDS, type TemplateKind, type TemplateSeed, } from './templates/starter';
5
9
  export { APP_CATEGORIES, type AppCategory, type SplashScreenResizeMode, type SplashScreenSpec, } from '@ankhorage/contracts';
6
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EACL,KAAK,iCAAiC,EACtC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,KAAK,8BAA8B,EACnC,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,2BAA2B,EAC3B,KAAK,4BAA4B,GAClC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,SAAS,EACd,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,GACxC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,iCAAiC,EACtC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,10 @@
1
+ export { assertTemplateManifestReady, composeCategoryAppManifest, validateTemplateManifest, } from './authoring/compose-category-manifest';
2
+ export { compileCategoryDesign, resolveCategoryDesignPreset, } from './design/category-theme';
3
+ export { DESIGN_DENSITIES, DESIGN_SHAPES, } from './design/category-types';
4
+ export { ACCENT_TONE_FAMILIES, ACCENT_TONE_TARGETS, FOUNDATION_TONE_FAMILIES, FOUNDATION_TONE_TARGETS, resolveTonePair, TONE_PAIR_CATALOG, } from './design/tone-catalog';
1
5
  export { createOAuthFixtureManifest, listOAuthFixtures, OAUTH_CALLBACK_ROUTE, OAUTH_FIXTURE_IDS, resolveOAuthFixture, } from './fixtures/oauth';
2
6
  export { createCategoryAppManifest } from './generators/create-category-app';
3
- export { CATEGORY_PRESETS } from './presets/category-presets';
7
+ export { CATEGORY_PRESET_RECONCILIATION, CATEGORY_PRESETS, } from './presets/category-presets';
4
8
  export { createStarterTemplate, listStarterTemplates, listStarterTemplatesByCategory, listStarterTemplateSummaries, resolveStarterTemplate, TEMPLATE_KINDS, } from './templates/starter';
5
9
  export { APP_CATEGORIES, } from '@ankhorage/contracts';
6
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAGjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAuB,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EAMtB,cAAc,GAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,GAIf,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAE3B,0BAA0B,EAM1B,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAIL,qBAAqB,EAErB,2BAA2B,GAE5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,aAAa,GAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EAEnB,wBAAwB,EACxB,uBAAuB,EAEvB,eAAe,EAEf,iBAAiB,GAKlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAGjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,GAKjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EAMtB,cAAc,GAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,GAIf,MAAM,sBAAsB,CAAC"}