115 lines
3.6 KiB
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' => '#004225',
|
|
'color_primary_dk' => '#002E1A',
|
|
'color_primary_lt' => '#E8F5E9',
|
|
'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' => '#4CAF50',
|
|
'dark_primary_dk' => '#004225',
|
|
'dark_primary_lt' => 'rgba(0,66,37,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', '' );
|
|
}
|