M3.6 glyph lift — 29 archetypes now render Design's real 74-mark set
Replaced the generic reused shapes (triangle/star/plus/bolt…) with Design's real per-archetype marks from the authoritative glyphDefs() (HANDOFF), and aligned each archetype's color to Design's deduped palette — frontend lib/archetypes.js + backend archetypeService.js kept in color-sync (the cross-file test iterates the backend set). Badge test color expectations updated to Design (BOMBER #FF9F45, CONDUCTOR #6C8CFF, ALPHA #7C5CFF, FORTRESS #4C6FA5, …). Scope + honesty: - 29 non-combat archetypes wired to real marks + Design colors. - COMBAT namespace (STRIKER/GRAPPLER/PRESSURE/COUNTER/FINISHER/GRINDER) left untouched — it uses unicode CHAR glyphs + its own pinned colors + test (FINISHER deliberately doesn't collide with the soccer FINISHER). Combat could adopt Design's SVG marks in a follow-up. - 39 Design marks are INERT (no classify() producer yet) — the 74 SVGs live in specs/design-reference/assets/glyphs/; they light up when classify() expands. - 9 backend archetypes have NO Design mark (BRUSH/CONNECTOR/DISTRIBUTOR/ FASTBREAK/FLEX/HYBRID/SWITCH/SWITCHBOARD/WHIFF) — kept on their generic glyph, flagged for Design. VISUALLY UNVERIFIED at 390px/desktop — archetype marks + colors on the audit list. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,27 +11,27 @@ const svc = require('../../src/services/archetypeService');
|
||||
describe('archetypes lib — badge styling', () => {
|
||||
it('full variant fills with the archetype color + white text', () => {
|
||||
const s = arch.badgeStyle('BOMBER', 'full', 'md');
|
||||
expect(s.bg).toBe('#FF6B4A');
|
||||
expect(s.bg).toBe('#FF9F45');
|
||||
expect(s.textColor).toBe('#FFFFFF');
|
||||
expect(s.borderColor).toBe('#FF6B4A');
|
||||
expect(s.borderColor).toBe('#FF9F45');
|
||||
});
|
||||
|
||||
it('ghost variant is transparent with a colored border', () => {
|
||||
const s = arch.badgeStyle('CONDUCTOR', 'ghost', 'sm');
|
||||
expect(s.bg).toBe('transparent');
|
||||
expect(s.textColor).toBe('#4A9EFF');
|
||||
expect(s.borderColor).toBe('#4A9EFFCC');
|
||||
expect(s.textColor).toBe('#6C8CFF');
|
||||
expect(s.borderColor).toBe('#6C8CFFCC');
|
||||
});
|
||||
|
||||
it('tint variant (default) uses a low-alpha tinted background', () => {
|
||||
const s = arch.badgeStyle('ALPHA');
|
||||
expect(s.bg).toBe('#A78BFA1F');
|
||||
expect(s.borderColor).toBe('#A78BFA52');
|
||||
expect(s.bg).toBe('#7C5CFF1F');
|
||||
expect(s.borderColor).toBe('#7C5CFF52');
|
||||
});
|
||||
|
||||
it('archetypeColor matches and is case-insensitive', () => {
|
||||
expect(arch.archetypeColor('ace')).toBe('#A78BFA');
|
||||
expect(arch.archetypeColor('Two-Way Anchor')).toBe('#A78BFA');
|
||||
expect(arch.archetypeColor('ace')).toBe('#7C5CFF');
|
||||
expect(arch.archetypeColor('Two-Way Anchor')).toBe('#4C6FA5');
|
||||
});
|
||||
|
||||
it('glyphSvg returns a 16x16 svg wrapper', () => {
|
||||
|
||||
Reference in New Issue
Block a user