Figma Integration Rules — SOLCOM Drupal Codebase
get_design_context, get_metadata, get_variable_defs) und die Agenten dieses Repos (solcom-design-scanner, solcom-design-explorer, solcom-figma-reviewer) die Code-Seite zuverlässig adressieren können. Generiert 2026-05-03 via create_design_system_rules. Ergänzt — schreibt nicht um: byte_theme/AGENTS.md, Skills solcom-styleguide, solcom-design-mapping, drupal-twig-sdc-authoring, ADR-0001/0003/0004/0005. Bei Konflikt: die genannte Quelle gewinnt.
1. Token Definitions
Wo liegen die Tokens? theme.brand.css · theme.css · main.css
| Datei | Inhalt |
|---|---|
src/theme.brand.css | Brand-Tokens 1:1 aus Figma (Source-of-Truth). Verweis auf Figma-File CHHDfbpX8Ys2LBiGs5HVK0 Node 657:12324 ("Colors"). |
src/theme.css | Semantic-Aliasse im shadcn/ui-Stil — mappen Brand-Tokens auf --primary, --background, --foreground, etc. |
src/main.css | @theme inline {} macht alle CSS-Tokens als Tailwind-4-Theme-Variablen verfügbar (bg-primary, text-brand-lime, …). |
src/fonts.css | @font-face-Definitionen (ScalaSansWeb 400/700, Montserrat ExtraBold 800). |
docs/adr/0003-solcom-color-tokens-hybrid-mapping.html | Begründung Hybrid-Mapping. Insbesondere: --accent ist NICHT Lime. |
Figma → Code Mapping theme.brand.css ↔ Figma Node 657:12324
Der Figma-MCP gibt häufig CSS-Variablen-Hints zurück. Mapping-Regel:
| Figma-Brand-Hex | Brand-Layer | Semantic-Layer | Tailwind-Utility |
|---|---|---|---|
#BEDC00 (Lime) | --brand-lime | --primary | bg-primary / bg-brand-lime |
#011C53 (BG Blue) | --brand-bg-blue | --background | bg-background |
#001F46 (Dark Blue) | --brand-dark-blue | --primary-foreground | text-primary-foreground |
#EBEBEB (Light Gray) | --brand-light-gray | --accent / --secondary | bg-accent |
#F59678 (Error) | --brand-error | --destructive | bg-destructive |
Anti-Pattern: Hardcoded Hex-Werte im SDC oder Tailwind-bg-[#bedc00]-Brackets. Immer den semantischen Alias oder zumindest den Brand-Layer benutzen.
Bekannte API-Limits (get_variable_defs) 2026-05-04
- Opacity-Variants: API liefert nur Base-Color
#828282, nicht den aufgelösten transparenten Wert. Code nutztcolor-mix(in oklab, #828282 N%, transparent). - Gradient-Tokens: API liefert leeren String. Code-Werte (
linear-gradient(135deg, #bedc00 0%, #00aaaa 50%, #0050a0 100%)) müssen visuell geprüft werden. - Naming-Inkonsistenz „Grey" vs. „Gray": Figma = britisch, Code = amerikanisch. 3 Tokens betroffen. Kein Wert-Drift.
2. Component Library
Wo liegen die SDCs? byte_theme/components/
web/themes/custom/byte_theme/components/<name>/ — pro Komponente ein Verzeichnis. 29 SDCs Stand 2026-05-03:
accordion, accordion-container, anchor, badge, blockquote, bubble-card-frame, button, button-anchor, button-badge, button-link, card, card-bubble-profile, card-bubble-profile-no-button, card-meta-list, cta, footer, group, heading, hero-billboard, hero-blog, hero-side-by-side, icon, image, meta-row, navbar, section, sticky-apply-bar, text, video
Plus _partials/ (Helper, kein SDC).
Architektur: Drupal SDC + CVA component.yml + twig + tailwind.css
Drupal 11 Single Directory Components (SDC). Pro Verzeichnis: <name>.component.yml, <name>.twig, optional <name>.tailwind.css, <name>.js.
Includes zwischen SDCs: Twig-Namespace @byte_theme/components/ mit with_context: false (PFLICHT — AGENTS.md Regel 11).
Kein Storybook. Drupal Canvas ist die visuelle Compositions-Umgebung. ADRs und MAPPING.html sind die Referenz-Dokumentation.
3. Frameworks & Libraries
UI-Framework, Styling, Build-System Drupal 11 · Tailwind 4 · CVA
- Drupal 11.3+ — Twig, SDC (native ab 10.3), Canvas (
canvas:canvas), CVA (cva:cva). - Tailwind CSS 4.1.18 als alleiniges Style-Framework. Kein SCSS, kein PostCSS-Stack, kein CSS-in-JS.
- Build:
npm run build→tailwindcss --input ./src/main.css --minify --output ./build/main.min.css. - Pflicht-Workflow: nach Theme-Code-Änderung
npm run format+npm run build(AGENTS.md Regel 13). - PHP-Stack: Drupal 11.3+, lokale Entwicklung via DDEV (
ddev drush cache:rebuildnach Twig/SDC-Änderungen Pflicht).
4. Asset Management
Statische Assets, Fonts, Uploads byte_theme/fonts/ · byte_theme/icons/
- Fonts direkt im Repo getrackt (
ScalaSansWeb.woff,Montserrat-ExtraBold-latin.woff2) — eingebunden viasrc/fonts.css@font-face. - Icons als rohe SVGs unter
icons/phosphor/undicons/solcom/, registriert inbyte_theme.icons.yml. - User-Uploads: Drupal-Standard
web/sites/*/files/(gitignored). - Asset-Optimierung: Tailwind CLI
--minify→build/main.min.css. Drupal-Library markiert mitpreprocess: false+minified: true. - CDN: Cloudflare (Edge-Layer vor mittwald-Hosting) — Theme-Code ist Cloudflare-agnostisch.
5. Icon System
Phosphor Icons + SOLCOM Brand Icons byte_theme.icons.yml · icon-SDC
Hub-SDC components/icon/ ist die einzige Zugriffsstelle. Direkter icon('phosphor', …)-Call außerhalb des Hub-SDC ist Anti-Pattern.
Verwendung aus anderen SDCs:
{{ include(
'@byte_theme/components/icon/icon.twig',
{ icon: 'arrow-right', icon_size: 'small' },
with_context: false
) }}
Naming: Phosphor = kebab-case (arrow-right, caret-down). SOLCOM = kebab-case, prefix-frei (brand-arrow).
6. Styling Approach
Tailwind 4 utility-first + CVA + Custom Properties AGENTS.md Regeln 1–5
- Tailwind 4 utility-first für Layout, Spacing, Color, Typography.
- CVA via
html_cva()für Variant-Komposition (Conditional-Klassen, Multi-Axis-Varianten). - Custom-Property-driven Brand-Tokens statt hardcoded Hex.
- Per-Komponenten-CSS (
components/<name>/<name>.tailwind.css) insrc/main.cssper@importeingezogen. - Responsive: Standard-Tailwind-Breakpoints, Mobile-first konsequent.
7. Project Structure
Top-Level-Struktur des Repos solcom/
solcom/
├── AGENTS.md / CONTEXT.md # Master-Docs
├── composer.json / composer.lock # Drupal 11 Setup
├── .ddev/ # DDEV
├── config/sync/ + splits/ # Drupal Config Management
├── docs/
│ ├── adr/ # Architecture Decision Records
│ ├── context/ # Snapshots externer Quellen
│ ├── design/ # Figma↔SDC Mapping + Snapshots
│ ├── plans/ · prds/ · brainstorms/
│ └── agents/ # Meta-Doku für Agenten
├── .claude/skills/ + agents/
└── web/
├── modules/custom/
└── themes/custom/byte_theme/
├── components/<sdc>/ # 29 SDCs
├── src/ # CSS-Source (Tailwind-Input)
├── build/ # Tailwind-Output
├── fonts/ · icons/ · js/
├── byte_theme.info.yml
├── byte_theme.libraries.yml
└── byte_theme.icons.yml
Source-of-Truth-Hierarchie:
byte_theme/AGENTS.md— Authoring-Regeln (CVA, Twig, Includes).- ADRs unter
docs/adr/— Decisions. src/theme.brand.css+theme.css— Token-Werte.- docs/design/MAPPING.html — was als SDC umgesetzt ist.
- Figma-File (
CHHDfbpX8Ys2LBiGs5HVK0) — Design-Spec.
FAQ
- Wo finde ich die Brand-Hex-Werte?
web/themes/custom/byte_theme/src/theme.brand.css— Source-of-Truth, 1:1 aus Figma Node657:12324.- Welcher Token mappt auf Lime?
--brand-lime: #bedc00im Brand-Layer; semantisch--primary. Nicht--accent— das ist--brand-light-gray(ADR-0003).- Wie finde ich eine Figma-Node-ID für
get_design_context? - Ausschließlich über Figma Desktop — Frame anklicken → URL auslesen:
node-id=<int>-<int>. Die API (search_design_system) liefert nurcomponentKeys, die fürget_design_contextnicht nutzbar sind. - Gibt es Storybook?
- Nein. Drupal Canvas ist die visuelle Compositions-Umgebung. Komponenten-Referenz: MAPPING.html + ADRs unter
docs/adr/. - Wer darf MAPPING.html schreiben?
- Nur Agent
solcom-design-scanner(oder manueller User-Edit). Refactor-Skills (simplifyetc.) dürfen die Datei nicht anfassen.