Design
Design
Shared across every PremiumPress product. 32 classes in inc/Design.
Branding Branding.php
Branding — the site's logo and brand colours, edited on the admin Design screen and consumed by the front-end (header, home-demo) and the token engine. Stored in the single option ppt_design: logo_type 'text' | 'image' | 'mark' ('mark' = an icon beside the name, the same shape as the theme's default brand) logo_text string (also the name beside a 'mark') logo_image attachment id (int) — the full image logo logo_mark 'icon' | 'upload' — where a 'mark' logo's icon comes from logo_icon Ppt\Support\Icons key, drawn on the brand-colour tile logo_mark_image attachment id (int) — the owner's own icon, for 'upload' primary #RRGGBB secondary #RRGGBB pages [ <key> => ['title'=>, 'link'=>, 'button_text'=>, 'button_link'=>], ... ]
Fonts Fonts.php
Brand fonts — an optional Google font the site owner picks on the Design screen. NOTE ON CDN: the theme is otherwise strictly no-CDN (fonts self-hosted). By an explicit owner decision, the BRAND FONT is the one exception: when one is selected it loads from the Google Fonts CDN, and ONLY on the FRONT END — never in wp-admin. "Theme default" loads nothing extra (self-hosted Jakarta/Inter). Selection is stored in ppt_design[font] (a catalog slug). When set, it becomes both the display and body family across the front end (via the ppt_font_display / ppt_font_body filters and the home-demo).
GoogleFontSets GoogleFontSets.php
GENERATED by tools/qa/build-google-fonts.php — do not edit by hand. Which self-hosted stylesheet (assets/css/fonts/<slug>.css) serves a Google Fonts family at a given axis set. Keys are the CSS2 family= spelling up to the '@': 'DM+Sans:opsz,wght', 'Pacifico'.
Palette Palette.php
Scheme palettes for AI Headshot Theme (_ai) - 33 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Auction Theme (_at) - 48 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Booking Theme (_bo) - 30 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Cashback Theme (_cb). One branch per design scheme, the same shape as every other product's Palette so a product ZIP carries only its OWN palettes. Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped. The --ppt-cb-* extras are read by the _cb design blocks for their dark bands (the featured-store panel, the calculator total, the hero band on Altus): text on the chrome colour, a dimmer label on it, and the hero phrase colour. Every value here was verified against WCAG 2.2 AA numerically in the approved mockups (Hosting Cashback, 2026-09-23).
Palette Palette.php
Scheme palettes for Car Dealer Theme (_cd) - 31 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Comparison Theme (_cm) - 21 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Coupon Theme (_cp) - 30 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Classifieds Theme (_ct) - 42 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Dating Theme (_da) - 27 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Directory Theme (_dt) - 38 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Escort Theme (_es) - 39 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Freelancer Marketplace (_fm) - 30 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Football Theme (_ft) - 12 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on. The club's kit colours drive --ppt-brand (from the design primary/secondary, and on a live site from ClubSettings via Tokens::brand()). Each scheme below sets the neutral palette, radii, shadows and fonts for one football design family.
Palette Palette.php
Scheme palettes for the Hotel Theme (_ht). One branch per design scheme, so a product ZIP carries only its OWN palettes. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped. All three are neutral-ground designs (design rule L15): white page and header, a quiet off-white band (--ppt-bg-2), white cards on a 1px line, the colour kept to buttons, labels and small tints, and a near-black ink panel. The palettes are a user-approved exception to the library-wide C7 twin check (2026-09-30): each twins only designs in OTHER product lines and all three are distinct inside Hotel.
Palette Palette.php
Scheme palettes for Job Board Theme (_jb) - 27 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Learning Theme (_ll) - 27 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Micro Jobs Theme (_mj) - 3 designs. One branch per design scheme, in the shape every other product folder uses, so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Marketplace Theme (_mv). One branch per design scheme, the same shape as every other product's Palette so a product ZIP carries only its OWN palettes. Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped. The --ppt-mv-* extras are read by the _mv design blocks: link - accent text on the page ground (section "all" links, shop names) edge - control and dashed-card edges on the ground card / card-ink / card-muted / card-line - the product card, which on Market Hall is a cream card on a teal page and so needs its own ink band / band-ink / band-muted / band-accent - the one contrasting "sell" band shop-1..3 - the monogram hue of each demo shop (rule E7: each shop owns a hue) Every pair was checked against WCAG 2.2 AA numerically in the approved mockups (Handmade & Crafts, 2026-09-27).
Palette Palette.php
Scheme palettes for the Nonprofit Theme (_np). One branch per design scheme, so a product ZIP carries only its OWN palettes. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped. All three are neutral-ground designs (design rule L15): white page and header, a quiet off-white band (--ppt-bg-2), white cards on a 1px line, the colour kept to buttons, links and chips, and a near-black ink panel. The palettes are the owner-approved "fewest twins" set (2026-10-01): no near-spec accent passes the C7 check on white, and the twins that remain are all in OTHER product lines.
Palette Palette.php
Scheme palettes for Stock Photo Theme (_ph) - 21 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for PrivateLet (_pl). One branch per design scheme, so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for the Restaurant Theme (_rs). One branch per design scheme, so a product ZIP carries only its OWN palettes. Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped. Neutral-ground designs (design rule L15): white page and header, one quiet band (--ppt-bg-2), white cards on a 1px line, colour kept to buttons, labels and small tints, and a near-black ink panel. Peony's rose-grey and Cleaver's celadon bands are tinted a little past L15's "faint" on purpose: every takeaway-plausible accent twinned an existing design on a near-white ground, and the tinted band is what passes palette-registry.php (C7). Every text pair was checked against WCAG 2.2 AA in the approved mockups (Chinese Takeaway, 2026-10-01). The --ppt-rs-* extras are read by the _rs design blocks: hot / hot-tint - the "Spicy" chip (status colour, not a second accent) ok - the "Open now" dot panel / panel-ink / panel-muted / panel-line - the ink order band rule - Mandarin's dotted menu leaders map / map-road / map-park - Mandarin's drawn map ok-tint - the pale ground behind an "Open now" line (Fish & Chip Shops) scrim / scrim-soft - Trawler's photo shade under the transparent header
Palette Palette.php
Scheme palettes for Real Estate Theme (_rt) - 30 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Software Download Theme (_so) - 27 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Shop Theme (_sp) - 57 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for Video Theme (_vt) - 25 designs. One branch per design scheme, lifted verbatim out of Design\Tokens so a product ZIP carries only its OWN palettes instead of all ~580. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped - the same safety the design and block registries rely on.
Palette Palette.php
Scheme palettes for the Wedding Directory Theme (_wd). One branch per design scheme, so a product ZIP carries only its OWN palettes. The build ships just this product's _<prefix> folder (see build-theme.ps1), and Tokens::forkTokens() guards every class with class_exists(), so an absent palette is simply skipped. Wedding Vendors niche (2026-10-01): white page and header (design rule L15), the colour kept to buttons, labels and small tints, white cards. The section band (--ppt-bg-2) is tinted a little past L15's "faint hue" on purpose: on near-white grounds every wedding-appropriate accent twinned an existing design (C7), and the tinted band is what separates these three in the palette registry. All three PASS C7 and are distinct inside the Wedding line.
SchemeFonts SchemeFonts.php
Scheme fonts — loads a design scheme's display font from Google Fonts. NOTE ON CDN: the theme is otherwise strictly no-CDN (fonts self-hosted). This is the SAME owner-approved exception the Brand-font picker uses (see Design\Fonts): a Google Fonts stylesheet, loaded ONLY on the FRONT END — never in wp-admin — and only for schemes whose display face is not already self-hosted (Jakarta/Inter are, so the "quotely" scheme needs nothing). The families still carry system fallbacks in Tokens, so layout is stable before the face loads.
Tokens Tokens.php
Design tokens — emits the :root custom-property layer every PPT block is built on (colours, spacing, radii, shadows, fonts) plus a shared component kit. Brand-aware: --ppt-brand derives from the Settings primary colour, so changing it re-tints the whole block library. Scheme-aware: the active design picks a scheme (light for now; more ported in a later phase). NO CDN: font families are declared as stacks only (system fallbacks for now, filterable via ppt_font_display / ppt_font_body). Self-hosted @font-face faces are added in the fonts phase — no Google Fonts links, ever.