Skip to content

Configuration Reference ​

Every value Apple reads, its default, and when to change it. Settings are stored as apple::<key> rows in the panel settings table and edited from Admin → Apple Theme (Blueprint). There is no YAML config file.

Theme settings ​

mode_default ​

Typesystem · dark · light
Defaultsystem
Stored asapple::mode_default

The mode used until someone picks one with the top-bar toggle. system follows the visitor's OS preference (prefers-color-scheme, defaulting to dark when unknown). A user's manual choice is stored in their browser (localStorage: apple-mode) and always wins over this default.

Change it when: your brand is dark-first and you want first-time visitors to land in dark regardless of their OS.

Common mistake: assuming this forces the mode. It is only the default — the per-browser toggle always overrides it.


accent ​

Typeone of 12 Catppuccin accents
Defaultsapphire
Stored asapple::accent

The single accent color used for selection, primary actions, focus rings and the active sidebar icon. One value covers both modes — each accent has an official Mocha (dark) and Latte (light) hex:

AccentDark (Mocha)Light (Latte)
blue#89b4fa#1e66f5
sapphire#74c7ec#209fb5
sky#89dceb#04a5e5
teal#94e2d5#179299
green#a6e3a1#40a02b
yellow#f9e2af#df8e1d
peach#fab387#fe640b
red#f38ba8#d20f39
pink#f5c2e7#ea76cb
mauve#cba6f7#8839ef
lavender#b4befe#7287fd
flamingo#f2cdcd#dd7878

In dark mode filled primary buttons use the accent with near-black text; in light mode the accent is deepened (65% accent + black) so white text keeps ≥ 4.5:1 contrast. You never need to handle this — it is computed.

Change it when: matching a brand color. Sapphire and sky read most "iOS"; mauve/lavender are the loudest options.

Common mistake: none really — invalid values fall back to sapphire server-side.


glass_blur ​

Typeinteger 0–30 (px)
Default18
Stored asapple::glass_blur

Backdrop blur behind the sidebar, top bar and cards. Lower values read more matte and cost less GPU on weak machines; 0 disables frosted glass entirely (surfaces become translucent tints).

Change it when: you want a flatter, more matte look (try 8–12), or a stronger frost (try 24–30).

Common mistake: cranking blur up and opacity down together — text over busy backgrounds can drop below readable contrast. Raise opacity instead.


glass_opacity ​

Typeinteger 50–95 (%)
Default72
Stored asapple::glass_opacity

How solid frosted surfaces are. This modifies surface alpha only, never hue — the theme's "matte" character comes from high opacity + moderate blur. Higher is more solid; lower is more see-through.

Change it when: lowering blur (raise opacity to compensate) or when the page background shows through too much.


radius ​

Typeinteger 10–22 (px)
Default16
Stored asapple::radius

Corner radius for cards and containers. Buttons, inputs and nav rows automatically stay a step squarer (radius − 6px), modals a step rounder (+ 2px) — one value drives the whole shape scale.

Change it when: you want a squarer, more utilitarian feel (10–12) or maximum iOS softness (20–22).


Typeswitch 0 / 1
Default0 (expanded)
Stored asapple::sidebar_rail

Whether the sidebar starts collapsed to a 76px icon rail. Anyone can expand it with the sidebar footer toggle; their choice persists in their browser (localStorage: apple-rail) and wins over this default. On mobile (≤ 992px) the rail is ignored — the drawer always shows labels.


animations ​

Typeswitch 0 / 1
Default1 (on)
Stored asapple::animations

Interface transitions (150–250ms, ease-out). Off makes everything effectively instant. prefers-reduced-motion: reduce is always respected regardless of this setting — you cannot force motion on users who opted out.


dashboard_custom ​

Typeswitch 0 / 1
Default1 (bento)
Stored asapple::dashboard_custom

Whether the admin home page renders Apple's bento grid. Off renders the stock Pterodactyl dashboard markup, which ships inside the same patched view as a runtime fallback — no reinstall needed to flip this.

Serialization note

Blueprint's settings library serializes values (s:1:"1";). Apple's runtime unwraps this everywhere it reads the table directly (dashboard view, standalone wrapper), so toggles behave correctly in both variants.


init (system) ​

Version marker written on every hub load. Never accepted from input; safe to ignore.


conf.yml manifest (Blueprint) ​

YAML pathValuePurpose
info.nameAppleDisplay name
info.identifierappleUnique ID (lowercase, no hyphens)
info.version1.0.0SemVer
info.targetbeta-2026-05Blueprint build target
info.authorxdp.network (AnAverageBeing)Author
info.iconicon.svgExtension list icon
admin.viewadmin/view.blade.phpSettings hub partial
admin.controlleradmin/controller.phpSettings hub controller
admin.wrapperadmin/wrapper.blade.phpRendered on every admin page — the theme's only entry point
dashboard.wrapper""Unused (admin-only theme)
data.directoryprivateInstall/remove hooks
data.publicpublicAssets → public/extensions/apple
requests.viewssrc/viewsBlade partials (variables, dashboard)

CSS custom properties (for extension authors) ​

All values land in --ap-* variables on <html>; the active mode is html[data-apple="dark"|"light"]. If you build admin UI for an extension, consuming these keeps you visually native:

Token groupVariables
Surfaces--ap-base --ap-mantle --ap-crust --ap-surface0/1/2
Text--ap-text --ap-subtext0 --ap-subtext1 --ap-overlay0/1
Accent--ap-accent --ap-accent-strong --ap-on-accent --ap-active --ap-ring
Semantic--ap-green --ap-yellow --ap-red --ap-info
Structure--ap-card --ap-fill --ap-hairline --ap-hover --ap-radius --ap-radius-sm --ap-radius-lg
Behavior--ap-glass-blur --ap-glass-opacity --ap-ease --ap-dur --ap-z-*
Type--ap-font --ap-mono

Do not hardcode palette hexes in your extension

Values like #1e1e2e or #74c7ec change with the admin's accent choice and the light/dark toggle. Always consume the variables — var(--ap-accent), var(--ap-text) — so your UI follows the theme.