Skip to Content
⚠️Active Development Notice: TimeTiles is under active development. Information may be placeholder content or not up-to-date.
Self-HostingUI Customization

UI Customization

TimeTiles provides a layered customization system — from simple color changes to full CSS overrides — with both built-in themes and admin dashboard controls.

Built-in Themes

The @timetiles/ui package ships two built-in themes that users can switch between at runtime:

ThemeDescription
CartographicEarth-tone palette inspired by vintage maps (default)
ModernClean, contemporary design with vibrant accents

Users switch themes using the Palette icon in the site header. The selection persists in the browser via localStorage. Both themes include full light and dark mode support.

Built-in themes support custom themes via CSS variables. See the UI package documentation for details on creating additional themes.

Customization Layers

LayerWhat it controlsWhere to configure
Built-in ThemesTwo bundled color/style packagesPalette icon in header (user-facing)
Theme PresetsCustom CMS-managed theme packages/dashboard/collections/themes
Site BrandingPer-site color and style overrides/dashboard/collections/sites
Block StylesPer-block spacing, visibility, separatorsPage builder (per block)
Custom CSSArbitrary CSS scoped to your site/dashboard/collections/sites
Layout TemplatesPage structure (header, footer, width)/dashboard/collections/layout-templates

Each layer overrides the one above it. CMS theme presets override the built-in themes. A site’s inline colors override its theme preset. Custom CSS overrides everything.

Theme Presets (CMS)

Theme presets are reusable visual configurations shared across sites. Create one at /dashboard/collections/themes. These override the built-in themes when assigned to a site.

Colors — 11 semantic tokens controlling the entire UI:

TokenControlsExample
primaryNavigation, headings, buttons#1a365d
primaryForegroundText on primary backgrounds#ffffff
secondarySecondary accent elements#c05621
backgroundPage background#f5f0e8
foregroundDefault text color#2d2d2d
cardCard backgrounds#ede8db
mutedSubtle backgrounds#e8e3d6
accentSuccess states, highlights#2f6b3a
destructiveError/danger states#c53030
borderBorder color#d4cfc2
ringFocus ring color#3182ce

Dark mode colors are optional — leave empty to use automatic dark mode derivation.

Typography:

PairingHeadingsBody
EditorialPlayfair Display (serif)DM Sans (sans-serif)
ModernInter (sans-serif)Geist Sans (sans-serif)
MonospaceSpace MonoIBM Plex Mono

Visual style — border radius (sharp, rounded, pill) and density (compact, default, comfortable).

Themes use Payload’s built-in versioning — every change is tracked and reversible.

Site Branding

Each site can override its theme preset with inline settings. Edit the Branding section at /dashboard/collections/sites.

  • Title — overrides platform site name in browser tabs and headers
  • Logo — separate uploads for light and dark themes
  • Favicon — custom favicon for this site
  • Color overrides — same 11 tokens as theme presets, highest priority
  • Typography & style — font pairing, border radius, density

Colors can be any valid CSS value: hex (#3b82f6), OKLCH (oklch(0.58 0.11 220)), RGB, or HSL.

Block-Level Styles

Every block in the page builder has a Block Style section:

ControlOptions
Padding top/bottomNone, Small, Medium, Large, Extra Large
Max width768px, 1024px, 1152px, 1280px, Full
Background colorAny CSS color
Anchor IDCreates a #id scroll target
Hide on mobile/desktopToggle visibility by screen size
SeparatorNone, Line, Gradient Fade, Wave

Use cases: Show different hero blocks on mobile vs. desktop. Add #pricing anchor IDs for navigation links. Alternate padding and separators for visual rhythm.

Custom CSS

For cases where structured controls aren’t enough. Edit the Custom Code section on any site.

FieldPurpose
Custom CSSCSS rules scoped to this site
Head HTMLAnalytics, meta tags, custom fonts
Body Start HTMLTag managers, noscript fallbacks
Body End HTMLTracking scripts

CSS is automatically scoped via [data-site="your-site-slug"]. Target blocks with [data-block-type="hero"] or [data-block-id="abc123"].

Security — these patterns are stripped automatically: @import, url(), javascript:, expression(), position: fixed.

Layout Templates

Layout templates control the structural frame of pages. Create at /dashboard/collections/layout-templates:

SettingOptionsDefault
Header variantMarketing, App, Minimal, NoneMarketing
Sticky headerYes / NoYes
Footer variantFull, Compact, NoneFull
Content max width768px, 1024px, 1152px, 1280px, Full1152px

Assignment: Set a site-wide default on the site, then override per page. Resolution order: page override > site default > platform default.

Template exampleHeaderFooterWidthUse case
Landing PageMarketingFullFullHomepage, marketing
DocumentationMinimalCompactMediumHelp pages, guides
App ViewAppNoneFullExplore/map interface
CleanNoneNoneFullEmbeds, iframes

Priority Order

When multiple layers are configured, they resolve highest priority first:

  1. Custom CSS — overrides anything
  2. Inline site branding — overrides theme preset
  3. CMS theme preset — overrides built-in themes
  4. Built-in themes — Cartographic (default) or Modern, selected by the user
  5. Platform defaults — base design system
Last updated on