Add AE_Firefly_BGH theme; align typography tokens for Axonius/BGH; register themes in UI
This commit is contained in:
@@ -13,10 +13,31 @@ html[data-theme='AE_Firefly_Axonius'] {
|
||||
--base-font-color: var(--color-surface-950);
|
||||
--base-font-color-dark: var(--color-surface-50);
|
||||
--base-font-family: system-ui, sans-serif;
|
||||
--base-font-size: inherit;
|
||||
--base-line-height: inherit;
|
||||
--base-font-weight: normal;
|
||||
--base-font-style: normal;
|
||||
--base-letter-spacing: 0em;
|
||||
--heading-font-color: inherit;
|
||||
--heading-font-color-dark: inherit;
|
||||
--heading-font-family: inherit;
|
||||
--heading-font-weight: bold;
|
||||
--heading-font-style: normal;
|
||||
--heading-letter-spacing: inherit;
|
||||
|
||||
/* Anchors: Axonius orange in light, lighter in dark */
|
||||
--anchor-font-color: var(--color-primary-600);
|
||||
--anchor-font-color-dark: var(--color-primary-300);
|
||||
--anchor-font-family: inherit;
|
||||
--anchor-font-size: inherit;
|
||||
--anchor-line-height: inherit;
|
||||
--anchor-font-weight: inherit;
|
||||
--anchor-font-style: inherit;
|
||||
--anchor-letter-spacing: inherit;
|
||||
--anchor-text-decoration: none;
|
||||
--anchor-text-decoration-hover: underline;
|
||||
--anchor-text-decoration-active: none;
|
||||
--anchor-text-decoration-focus: none;
|
||||
|
||||
--spacing: 0.25rem;
|
||||
--radius-base: 0.375rem;
|
||||
|
||||
169
src/ae-firefly-bgh.css
Normal file
169
src/ae-firefly-bgh.css
Normal file
@@ -0,0 +1,169 @@
|
||||
/*
|
||||
* AE Firefly — BGH variant
|
||||
* Base color input: #076a72
|
||||
* OKLCH primary ramp centered near hue ≈185° (teal/cyan family)
|
||||
* Variant of: src/ae-firefly.css (AE_Firefly)
|
||||
*/
|
||||
|
||||
html[data-theme='AE_Firefly_BGH'] {
|
||||
--text-scaling: 1.067;
|
||||
--background: var(--color-surface-50) !important;
|
||||
--base-font-color: var(--color-surface-950);
|
||||
--base-font-color-dark: var(--color-surface-50);
|
||||
--base-font-family: system-ui, sans-serif;
|
||||
--base-font-size: inherit;
|
||||
--base-line-height: inherit;
|
||||
--base-font-weight: normal;
|
||||
--base-font-style: normal;
|
||||
--base-letter-spacing: 0em;
|
||||
--heading-font-color: inherit;
|
||||
--heading-font-color-dark: inherit;
|
||||
--heading-font-family: inherit;
|
||||
--heading-font-weight: bold;
|
||||
--heading-font-style: normal;
|
||||
--heading-letter-spacing: inherit;
|
||||
|
||||
/* Anchors: teal in light, lighter teal in dark */
|
||||
--anchor-font-color: var(--color-primary-600);
|
||||
--anchor-font-color-dark: var(--color-primary-300);
|
||||
--anchor-font-family: inherit;
|
||||
--anchor-font-size: inherit;
|
||||
--anchor-line-height: inherit;
|
||||
--anchor-font-weight: inherit;
|
||||
--anchor-font-style: inherit;
|
||||
--anchor-letter-spacing: inherit;
|
||||
--anchor-text-decoration: none;
|
||||
--anchor-text-decoration-hover: underline;
|
||||
--anchor-text-decoration-active: none;
|
||||
--anchor-text-decoration-focus: none;
|
||||
|
||||
--spacing: 0.25rem;
|
||||
--radius-base: 0.375rem;
|
||||
--radius-container: 0.875rem;
|
||||
|
||||
/* Map common design-system tokens used by Tailwind/Skeleton presets */
|
||||
/* Set --primary as H S% L% (no wrapper), matching project's convention in src/app.css */
|
||||
--primary: 184.5 88.5% 23.7%;
|
||||
--primary-foreground: 210 20% 98%;
|
||||
--primary-hex: #076a72;
|
||||
|
||||
/* PRIMARY — OKLCH ramp (hue ≈185°) */
|
||||
--color-primary-50: oklch(96.5% 0.025 189deg);
|
||||
--color-primary-100: oklch(91% 0.05 187deg);
|
||||
--color-primary-200: oklch(84.5% 0.078 186deg);
|
||||
--color-primary-300: oklch(76.5% 0.105 185deg);
|
||||
--color-primary-400: oklch(67.5% 0.125 185deg);
|
||||
--color-primary-500: oklch(50.5% 0.13 185deg);
|
||||
--color-primary-600: oklch(44% 0.125 184deg);
|
||||
--color-primary-700: oklch(37.5% 0.115 183deg);
|
||||
--color-primary-800: oklch(30.5% 0.105 182deg);
|
||||
--color-primary-900: oklch(23.5% 0.09 181deg);
|
||||
--color-primary-950: oklch(16% 0.075 180deg);
|
||||
--color-primary-contrast-dark: var(--color-primary-950);
|
||||
--color-primary-contrast-light: var(--color-primary-50);
|
||||
|
||||
/* Hex fallback for the core brand color (500) if needed */
|
||||
--color-primary-500-hex: #076a72;
|
||||
|
||||
/* --- Secondary (copied from AE_Firefly defaults) --- */
|
||||
--color-secondary-50: oklch(97.5% 0.06 102deg);
|
||||
--color-secondary-100: oklch(93.5% 0.095 100deg);
|
||||
--color-secondary-200: oklch(89.5% 0.128 98deg);
|
||||
--color-secondary-300: oklch(85.5% 0.155 95deg);
|
||||
--color-secondary-400: oklch(81% 0.17 93deg);
|
||||
--color-secondary-500: oklch(76% 0.17 90deg);
|
||||
--color-secondary-600: oklch(68.5% 0.16 87deg);
|
||||
--color-secondary-700: oklch(60.5% 0.145 85deg);
|
||||
--color-secondary-800: oklch(52% 0.13 83deg);
|
||||
--color-secondary-900: oklch(43.5% 0.11 81deg);
|
||||
--color-secondary-950: oklch(35% 0.09 79deg);
|
||||
--color-secondary-contrast-dark: var(--color-secondary-950);
|
||||
--color-secondary-contrast-light: var(--color-secondary-50);
|
||||
|
||||
/* --- Tertiary --- */
|
||||
--color-tertiary-50: oklch(95.5% 0.042 283deg);
|
||||
--color-tertiary-100: oklch(89% 0.068 281deg);
|
||||
--color-tertiary-200: oklch(81.5% 0.092 279deg);
|
||||
--color-tertiary-300: oklch(73.5% 0.112 278deg);
|
||||
--color-tertiary-400: oklch(65% 0.132 277deg);
|
||||
--color-tertiary-500: oklch(55.5% 0.142 276deg);
|
||||
--color-tertiary-600: oklch(48.5% 0.138 275deg);
|
||||
--color-tertiary-700: oklch(41.5% 0.128 274deg);
|
||||
--color-tertiary-800: oklch(34.5% 0.112 273deg);
|
||||
--color-tertiary-900: oklch(27.5% 0.098 272deg);
|
||||
--color-tertiary-950: oklch(20% 0.082 271deg);
|
||||
--color-tertiary-contrast-dark: var(--color-tertiary-950);
|
||||
--color-tertiary-contrast-light: var(--color-tertiary-50);
|
||||
|
||||
/* --- Success (kept consistent across Firefly variants) --- */
|
||||
--color-success-50: oklch(95.77% 0.05 152.69deg);
|
||||
--color-success-100: oklch(91.59% 0.06 152deg);
|
||||
--color-success-200: oklch(87.45% 0.08 152.08deg);
|
||||
--color-success-300: oklch(83.57% 0.09 150.85deg);
|
||||
--color-success-400: oklch(79.47% 0.11 150.71deg);
|
||||
--color-success-500: oklch(75.38% 0.12 149.99deg);
|
||||
--color-success-600: oklch(67.65% 0.11 149.94deg);
|
||||
--color-success-700: oklch(59.71% 0.09 150.42deg);
|
||||
--color-success-800: oklch(51.74% 0.08 150.24deg);
|
||||
--color-success-900: oklch(43.2% 0.06 151.12deg);
|
||||
--color-success-950: oklch(34.2% 0.04 151.44deg);
|
||||
--color-success-contrast-dark: var(--color-success-950);
|
||||
--color-success-contrast-light: var(--color-success-50);
|
||||
|
||||
/* --- Warning --- */
|
||||
--color-warning-50: oklch(97.5% 0.065 78deg);
|
||||
--color-warning-100: oklch(93.5% 0.09 75deg);
|
||||
--color-warning-200: oklch(89.5% 0.12 73deg);
|
||||
--color-warning-300: oklch(85.5% 0.145 70deg);
|
||||
--color-warning-400: oklch(81.5% 0.16 67deg);
|
||||
--color-warning-500: oklch(77% 0.165 65deg);
|
||||
--color-warning-600: oklch(69.5% 0.155 64deg);
|
||||
--color-warning-700: oklch(61.5% 0.14 63deg);
|
||||
--color-warning-800: oklch(53.5% 0.125 62deg);
|
||||
--color-warning-900: oklch(45% 0.105 61deg);
|
||||
--color-warning-950: oklch(37% 0.088 60deg);
|
||||
--color-warning-contrast-dark: var(--color-warning-950);
|
||||
--color-warning-contrast-light: var(--color-warning-50);
|
||||
|
||||
/* --- Error --- */
|
||||
--color-error-50: oklch(95% 0.04 18deg);
|
||||
--color-error-100: oklch(88% 0.07 20deg);
|
||||
--color-error-200: oklch(80% 0.105 21deg);
|
||||
--color-error-300: oklch(72% 0.14 22deg);
|
||||
--color-error-400: oklch(64.5% 0.17 23deg);
|
||||
--color-error-500: oklch(57.5% 0.195 24deg);
|
||||
--color-error-600: oklch(51.5% 0.182 25deg);
|
||||
--color-error-700: oklch(45.5% 0.165 26deg);
|
||||
--color-error-800: oklch(39.5% 0.148 27deg);
|
||||
--color-error-900: oklch(33% 0.128 28deg);
|
||||
--color-error-950: oklch(26.5% 0.108 29deg);
|
||||
--color-error-contrast-dark: var(--color-error-950);
|
||||
--color-error-contrast-light: var(--color-error-50);
|
||||
|
||||
/* --- Surface (important for light-mode backgrounds) --- */
|
||||
--color-surface-50: oklch(99.2% 0.003 220deg);
|
||||
--color-surface-100: oklch(97% 0.006 217deg);
|
||||
--color-surface-200: oklch(93.5% 0.009 215deg);
|
||||
--color-surface-300: oklch(88.5% 0.012 213deg);
|
||||
--color-surface-400: oklch(81.5% 0.015 212deg);
|
||||
--color-surface-500: oklch(70.5% 0.016 215deg);
|
||||
--color-surface-600: oklch(59% 0.018 218deg);
|
||||
--color-surface-700: oklch(47.5% 0.02 222deg);
|
||||
--color-surface-800: oklch(35.5% 0.022 226deg);
|
||||
--color-surface-900: oklch(24.5% 0.02 52deg);
|
||||
--color-surface-950: oklch(15.5% 0.022 48deg);
|
||||
--color-surface-contrast-dark: var(--color-surface-950);
|
||||
--color-surface-contrast-light: var(--color-surface-50);
|
||||
}
|
||||
|
||||
html.dark[data-theme='AE_Firefly_BGH'] {
|
||||
--background: var(--color-surface-950) !important;
|
||||
|
||||
/* Minimal dark-mode contrast tokens for components */
|
||||
--color-primary-contrast-50: var(--color-primary-contrast-dark);
|
||||
--color-primary-contrast-100: var(--color-primary-contrast-dark);
|
||||
--color-primary-contrast-200: var(--color-primary-contrast-dark);
|
||||
--color-primary-contrast-300: var(--color-primary-contrast-dark);
|
||||
--color-primary-contrast-400: var(--color-primary-contrast-dark);
|
||||
--color-primary-contrast-500: var(--color-primary-contrast-light);
|
||||
}
|
||||
@@ -42,6 +42,7 @@ html.light {
|
||||
@import './ae-firefly-indigo.css';
|
||||
@import './ae-firefly-rainbow.css';
|
||||
@import './ae-firefly-axonius.css';
|
||||
@import './ae-firefly-bgh.css';
|
||||
|
||||
@source '../node_modules/@skeletonlabs/skeleton-svelte/dist';
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@ import {
|
||||
Bug,
|
||||
CircleX,
|
||||
Eraser,
|
||||
Lock,
|
||||
// LockKeyhole,
|
||||
LogOut,
|
||||
Maximize2,
|
||||
Menu,
|
||||
@@ -31,11 +33,12 @@ import {
|
||||
ToggleRight,
|
||||
User
|
||||
} from '@lucide/svelte';
|
||||
import { ae_loc, ae_sess, ae_api } from '$lib/stores/ae_stores';
|
||||
import { ae_loc, ae_sess } from '$lib/stores/ae_stores';
|
||||
|
||||
import Element_access_type from '$lib/app_components/e_app_access_type.svelte';
|
||||
import Element_sign_in_out from '$lib/app_components/e_app_sign_in_out.svelte';
|
||||
import E_app_url_builder from '$lib/app_components/e_app_url_builder.svelte';
|
||||
// import { default_authenticated_can_edit } from '$lib/stores/ae_events_stores__badges_defaults';
|
||||
|
||||
interface Props {
|
||||
log_lvl?: number;
|
||||
@@ -221,6 +224,7 @@ const theme_options = [
|
||||
{ value: 'AE_Firefly_Indigo', label: 'Firefly Indigo ✦' },
|
||||
{ value: 'AE_Firefly_Rainbow', label: 'Firefly Rainbow ✨' },
|
||||
{ value: 'AE_Firefly_Axonius', label: 'Firefly Axonius ✦' },
|
||||
{ value: 'AE_Firefly_BGH', label: 'Firefly BGH ✦' },
|
||||
{ value: 'AE_c_IDAA_light', label: 'IDAA – light' },
|
||||
{ value: 'AE_c_LCI', label: 'LCI' }
|
||||
];
|
||||
@@ -600,6 +604,7 @@ const theme_options = [
|
||||
class:border-primary-400={expand}>
|
||||
<!-- AUTH STATUS SHIELD — hidden in iframe; host page manages auth context -->
|
||||
{#if !$ae_loc?.iframe}
|
||||
{#if $ae_loc?.access_type && $ae_loc?.access_type !== 'anonymous' && expand}
|
||||
<button
|
||||
type="button"
|
||||
class="
|
||||
@@ -620,20 +625,24 @@ const theme_options = [
|
||||
? `Access: ${$ae_loc?.access_type}. Click to use a passcode.`
|
||||
: `Elevated access: ${$ae_loc?.access_type}. Click to clear.`
|
||||
: 'Anonymous. Click to sign in or enter a passcode.'}>
|
||||
{#if $ae_loc?.access_type && $ae_loc?.access_type !== 'anonymous'}
|
||||
<!-- {#if $ae_loc?.access_type && $ae_loc?.access_type !== 'anonymous'} -->
|
||||
{#if $ae_loc?.user_access_type && $ae_loc?.access_type === $ae_loc?.user_access_type}
|
||||
<ShieldEllipsis size="1.1em" class="shrink-0" />
|
||||
{:else}
|
||||
<ShieldMinus size="1.1em" class="shrink-0" />
|
||||
{/if}
|
||||
{:else}
|
||||
<span
|
||||
class="btn-label max-w-0 overflow-hidden text-xs opacity-0 transition-all duration-300 ease-in-out group-hover/shield:max-w-20 group-hover/shield:opacity-100">
|
||||
{access_label ?? 'Auth?'}
|
||||
</span>
|
||||
<!-- {:else}
|
||||
<ShieldUser size="1.1em" class="shrink-0" />
|
||||
{/if}
|
||||
<span
|
||||
class="btn-label max-w-0 overflow-hidden text-xs opacity-0 transition-all duration-300 ease-in-out group-hover/shield:max-w-20 group-hover/shield:opacity-100">
|
||||
{access_label ?? 'Auth?'}
|
||||
</span>
|
||||
{/if} -->
|
||||
|
||||
</button>
|
||||
{:else}
|
||||
<!-- <ShieldUser size="1.1em" class="shrink-0" /> -->
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
<!-- FONT SIZE CYCLER — hidden in iframe; font choice belongs to the host page -->
|
||||
@@ -717,7 +726,12 @@ const theme_options = [
|
||||
class="btn-label max-w-0 overflow-hidden text-xs opacity-0 transition-all duration-300 ease-in-out group-hover/menu:max-w-20 group-hover/menu:opacity-100"
|
||||
>Close</span>
|
||||
{:else}
|
||||
<Menu size="1.1em" class="shrink-0" />
|
||||
{#if !$ae_loc.public_access}
|
||||
<Lock size="1.1em" class="shrink-0 opacity-60" />
|
||||
{:else}
|
||||
<Menu size="1.1em" class="shrink-0" />
|
||||
{/if}
|
||||
|
||||
<span
|
||||
class="btn-label max-w-0 overflow-hidden text-xs opacity-0 transition-all duration-300 ease-in-out group-hover/menu:max-w-20 group-hover/menu:opacity-100"
|
||||
>Menu</span>
|
||||
|
||||
@@ -112,6 +112,7 @@ if ($ae_loc.app_cfg.theme_mode == 'light') {
|
||||
<option value="AE_Firefly_Indigo">Firefly Indigo ✦</option>
|
||||
<option value="AE_Firefly_Rainbow">Firefly Rainbow ✨</option>
|
||||
<option value="AE_Firefly_Axonius">Firefly Axonius ✦</option>
|
||||
<option value="AE_Firefly_BGH">Firefly BGH ✦</option>
|
||||
<!-- <option value="AE_Firefly_new-name">Firefly new-name ✦</option> -->
|
||||
<option value="AE_c_IDAA_light">IDAA - light</option>
|
||||
<option value="AE_c_LCI">LCI</option>
|
||||
|
||||
@@ -99,6 +99,7 @@ const theme_options = [
|
||||
{ value: 'AE_Firefly_Indigo', label: 'Firefly Indigo ✦' },
|
||||
{ value: 'AE_Firefly_Rainbow', label: 'Firefly Rainbow ✨' },
|
||||
{ value: 'AE_Firefly_Axonius', label: 'Firefly Axonius ✦' },
|
||||
{ value: 'AE_Firefly_BGH', label: 'Firefly BGH ✦' },
|
||||
{ value: 'AE_c_IDAA_light', label: 'IDAA – light' },
|
||||
{ value: 'AE_c_LCI', label: 'LCI' }
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user