Files
OTSSigns-Website/theme/inc/theme-defaults.php

115 lines
3.6 KiB
PHP

<?php
/**
* Theme Defaults - Provides default values for all customizable design tokens.
*
* These defaults match the original hardcoded values so existing sites
* see no visual change when upgrading.
*
* @package OTS_Theme
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Return the full array of default design-token values.
*
* Keys mirror the theme-mod names used throughout the customisation system.
*
* @return array<string,string>
*/
function oribi_get_theme_defaults() {
return [
/* ── Light-mode colour palette ──────────────────────── */
'color_primary' => '#D83302',
'color_primary_dk' => '#A22702',
'color_primary_lt' => '#FFF0EB',
'color_accent' => '#4CAF50',
'color_accent_dk' => '#388E3C',
'color_accent_lt' => '#E8F5E9',
'color_dark' => '#111111',
'color_dark_2' => '#1A1A1A',
'color_text' => '#333333',
'color_text_muted' => '#666666',
'color_border' => '#E0E0E0',
'color_bg' => '#FFFFFF',
'color_bg_alt' => '#F5F5F5',
/* ── Dark-mode colour palette ───────────────────────── */
'dark_primary' => '#FF6B3D',
'dark_primary_dk' => '#D83302',
'dark_primary_lt' => 'rgba(216,51,2,0.15)',
'dark_accent' => '#66BB6A',
'dark_accent_dk' => '#4CAF50',
'dark_accent_lt' => 'rgba(76,175,80,0.15)',
'dark_dark' => '#E0E0E0',
'dark_dark_2' => '#BDBDBD',
'dark_text' => '#E0E0E0',
'dark_text_muted' => '#9E9E9E',
'dark_border' => '#333333',
'dark_bg' => '#1A1A1A',
'dark_bg_alt' => '#222222',
'dark_bg_dark' => '#111111',
'dark_heading' => '#F5F5F5',
'dark_card_bg' => '#222222',
/* ── Typography ─────────────────────────────────────── */
'font_family' => 'inter', // slug from WP Font Library
'font_heading' => '', // empty = same as body
/* ── Border radii ───────────────────────────────────── */
'radius_sm' => '6',
'radius_md' => '12',
'radius_lg' => '20',
'radius_xl' => '32',
/* ── Spacing / layout ───────────────────────────────── */
'container_max' => '1200',
'container_pad_min' => '1',
'container_pad_max' => '2',
'wide_size' => '1536',
];
}
/**
* Retrieve a single design-token value, respecting saved theme-mod overrides.
*
* @param string $key Token name (e.g. 'color_primary').
* @return string
*/
function oribi_get_setting( $key ) {
$defaults = oribi_get_theme_defaults();
$default = isset( $defaults[ $key ] ) ? $defaults[ $key ] : '';
return get_theme_mod( 'oribi_' . $key, $default );
}
/**
* Persist the current set of defaults into theme-mods (one-time migration).
*
* Called the first time the settings page is loaded, so that existing sites
* start with their current visual identity already stored.
*/
function oribi_maybe_seed_defaults() {
$defaults = oribi_get_theme_defaults();
$hash = md5( wp_json_encode( $defaults ) );
$stored = get_theme_mod( 'oribi_defaults_hash', '' );
if ( $stored === $hash ) {
return;
}
foreach ( $defaults as $key => $value ) {
set_theme_mod( 'oribi_' . $key, $value );
}
set_theme_mod( 'oribi_defaults_hash', $hash );
set_theme_mod( 'oribi_defaults_seeded', true );
// Force CSS regeneration on next check.
set_theme_mod( 'oribi_css_theme_version', '' );
}