Compare commits

..

8 commits

16 changed files with 72 additions and 91 deletions

View file

@ -14,25 +14,6 @@
@custom-variant dark (&:where(.dark, .dark *));
/* MapleDeploy branding: Tailwind's built-in stone scale, copied verbatim so
dark ladder tokens below can be authored as color-mix() of adjacent stone
steps (Tailwind only emits --color-stone-* vars for utilities actually
used, so the tokens cannot reference them directly). Keep in sync with
Tailwind v4's stone palette. */
:root {
--md-stone-100: oklch(97% 0.001 106.424);
--md-stone-200: oklch(92.3% 0.003 48.717);
--md-stone-300: oklch(86.9% 0.005 56.366);
--md-stone-400: oklch(70.9% 0.01 56.259);
--md-stone-500: oklch(55.3% 0.013 58.071);
--md-stone-600: oklch(44.4% 0.011 73.639);
--md-stone-700: oklch(37.4% 0.01 67.558);
--md-stone-800: oklch(26.8% 0.007 34.298);
--md-stone-900: oklch(21.6% 0.006 56.043);
--md-stone-950: oklch(14.7% 0.004 49.25);
}
/* MapleDeploy branding: Canadian red accent, stone greys */
@theme {
--font-sans: Inter, sans-serif;
@ -40,7 +21,7 @@ @theme {
--font-mono: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
--font-logs: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
--color-base: color-mix(in oklab, var(--md-stone-900) 40%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix, L≈17.5 (upstream 17.3) */
--color-base: oklch(17.3% 0.005 52); /* MapleDeploy branding: stone re-tint (was oklch(17.3% 0 0)) */
--color-warning: #fde047; /* MapleDeploy branding: warning palette */
--color-warning-50: #fefce8;
--color-warning-100: #fef9c3;
@ -59,38 +40,38 @@ @theme {
--color-coollabs-100: #f34d3d;
--color-coollabs-200: #bc251a;
--color-coollabs-300: #9c2117;
--color-coolgray-100: color-mix(in oklab, var(--md-stone-900) 90%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix, L≈20.9 */
--color-coolgray-200: color-mix(in oklab, var(--md-stone-800) 55%, var(--md-stone-900)); /* MapleDeploy branding: stone-800/900 mix, L≈24.5 */
--color-coolgray-300: color-mix(in oklab, var(--md-stone-800) 85%, var(--md-stone-900)); /* MapleDeploy branding: stone-800/900 mix, L≈26.0 */
--color-coolgray-400: color-mix(in oklab, var(--md-stone-700) 10%, var(--md-stone-800)); /* MapleDeploy branding: stone-700/800 mix, L≈27.9 */
--color-coolgray-500: color-mix(in oklab, var(--md-stone-700) 45%, var(--md-stone-800)); /* MapleDeploy branding: stone-700/800 mix, L≈31.6 */
--color-coolgray-100: oklch(20.9% 0.006 55); /* MapleDeploy branding: stone re-tint */
--color-coolgray-200: oklch(24.35% 0.007 45); /* MapleDeploy branding: stone re-tint */
--color-coolgray-300: oklch(26.03% 0.007 38); /* MapleDeploy branding: stone re-tint */
--color-coolgray-400: oklch(27.68% 0.007 37); /* MapleDeploy branding: stone re-tint */
--color-coolgray-500: oklch(31.71% 0.008 50); /* MapleDeploy branding: stone re-tint */
/* Graphite design language (ported from ref/frontend). Layered neutral
surfaces + translucent hairlines. See DESIGN.md. */
/* Content canvas: the darkest shell layer (sRGB ~10). Hex, not oklch:
oklch lightness compresses to near-black below ~15%, so oklch(7.5%)
renders as sRGB 1 with no visible step. */
--color-app: var(--md-stone-950); /* MapleDeploy branding: stone-950 (upstream 14.48 ≈ 14.7) */
--color-app: oklch(14.48% 0.004 49); /* MapleDeploy branding: stone re-tint */
/* Sidebar + topbar chrome (sRGB ~20): a clear step lighter than the content
canvas so the shell chrome separates from the content area. */
--color-panel: color-mix(in oklab, var(--md-stone-900) 65%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix, L≈19.2 (upstream 19.13) */
--color-panel: oklch(19.13% 0.005 53); /* MapleDeploy branding: stone re-tint */
/* Pure neutral (r=g=b). Were cool-tinted (#161618/#1c1c1e/#26262a, b>r),
which clashed with the neutral panel ladder. */
--color-surface: color-mix(in oklab, var(--md-stone-900) 75%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix, L≈19.9 (upstream 20.02) */
--color-raised: color-mix(in oklab, var(--md-stone-800) 20%, var(--md-stone-900)); /* MapleDeploy branding: stone-800/900 mix, L≈22.6 */
--color-selected: var(--md-stone-800); /* MapleDeploy branding: stone-800 (upstream 26.86 ≈ 26.8) */
--color-fg: var(--md-stone-100); /* MapleDeploy branding: stone-100 (upstream 96.12 ≈ 97) */
--color-fg-dim: color-mix(in oklab, var(--md-stone-300) 40%, var(--md-stone-400)); /* MapleDeploy branding: stone-300/400 mix, L≈77.3 */
--color-surface: oklch(20.02% 0.005 54); /* MapleDeploy branding: stone re-tint */
--color-raised: oklch(22.64% 0.006 52); /* MapleDeploy branding: stone re-tint */
--color-selected: oklch(26.86% 0.007 34); /* MapleDeploy branding: stone re-tint */
--color-fg: oklch(96.12% 0.001 106); /* MapleDeploy branding: stone re-tint */
--color-fg-dim: oklch(76.99% 0.008 56); /* MapleDeploy branding: stone re-tint */
/* Tertiary text. Raised from #6e6e74 (3.78:1 on base, failed WCAG AA)
to #7e7e84 so 13-14px text clears 4.5:1 on the dark surface ladder. */
--color-fg-faint: color-mix(in oklab, var(--md-stone-400) 25%, var(--md-stone-500)); /* MapleDeploy branding: stone-400/500 mix, L≈59.2 */
--color-fg-faint: oklch(59.31% 0.013 58); /* MapleDeploy branding: stone re-tint */
--color-accent: #d52b1f; /* MapleDeploy branding: accent -> red-600 */
--color-accent-foreground: oklch(100.0% 0 0);
--color-hairline: oklch(100.0% 0 0 / 0.08);
--color-nav-text: var(--md-stone-600); /* MapleDeploy branding: stone-600 (upstream 43.86 ≈ 44.4) */
--color-nav-muted: color-mix(in oklab, var(--md-stone-500) 60%, var(--md-stone-600)); /* MapleDeploy branding: stone-500/600 mix, L≈50.9 */
--color-nav-active: color-mix(in oklab, var(--md-stone-900) 85%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix, L≈20.6 */
--color-log: color-mix(in oklab, var(--md-stone-900) 20%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix, L≈16.1 */
--color-nav-text: oklch(43.86% 0.011 73); /* MapleDeploy branding: stone re-tint */
--color-nav-muted: oklch(51.03% 0.012 64); /* MapleDeploy branding: stone re-tint */
--color-nav-active: oklch(20.46% 0.006 55); /* MapleDeploy branding: stone re-tint */
--color-log: oklch(15.91% 0.004 50); /* MapleDeploy branding: stone re-tint */
--shadow-modal: 0 24px 64px rgba(0, 0, 0, 0.55), 0 4px 16px rgba(0, 0, 0, 0.4);
/* One restrained lift shared by every dropdown/menu/listbox panel and the
@ -657,8 +638,8 @@ .application-console-shell,
.terminal-fullscreen-shell {
position: relative;
isolation: isolate;
color: var(--md-stone-100); /* MapleDeploy branding: stone-100 (was #f2f2f2) */
background-color: color-mix(in oklab, var(--md-stone-900) 50%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix (was #121214) */
color: #f2f2f1; /* MapleDeploy branding: stone remap (was #f2f2f2) */
background-color: #141210; /* MapleDeploy branding: stone remap (was #121214) */
}
.application-console-shell {
@ -706,7 +687,7 @@ html:not(.dark) .terminal-fullscreen-shell[data-console-theme="system"] .termina
html.dark .application-console-shell[data-console-theme="system"],
html.dark .terminal-fullscreen-shell[data-console-theme="system"] {
--console-theme-background: color-mix(in oklab, var(--md-stone-900) 50%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix, L≈18.2 (upstream 18.31) */
--console-theme-background: oklch(18.31% 0.005 52); /* MapleDeploy branding: stone re-tint (was oklch(18.31% 0.004 285.99)) */
--console-theme-border: rgb(255 255 255 / 0.08);
}
@ -1209,29 +1190,29 @@ .dark {
visible steps: content 10 -> elevated 22 -> base 28 -> recessed 34.
Pure neutral (r=g=b), matching the neutral borders/text and the light
ladder, so every panel shares one temperature (no blue cast). */
--coollabs-canvas: var(--md-stone-950); /* MapleDeploy branding: stone-950 */
--coollabs-elevated: color-mix(in oklab, var(--md-stone-900) 75%, var(--md-stone-950)); /* MapleDeploy branding: stone-900/950 mix, L≈19.9 */
--coollabs-recessed: color-mix(in oklab, var(--md-stone-800) 70%, var(--md-stone-900)); /* MapleDeploy branding: stone-800/900 mix, L≈25.2 */
--coollabs-base: color-mix(in oklab, var(--md-stone-800) 20%, var(--md-stone-900)); /* MapleDeploy branding: stone-800/900 mix, L≈22.6 */
--coollabs-fill: color-mix(in oklab, var(--md-stone-700) 25%, var(--md-stone-800)); /* MapleDeploy branding: stone-700/800 mix, L≈29.5 */
--coollabs-line: color-mix(in oklab, var(--md-stone-700) 50%, var(--md-stone-800)); /* MapleDeploy branding: stone-700/800 mix, L≈32.1 */
--coollabs-canvas: oklch(14.48% 0.004 49); /* MapleDeploy branding: stone re-tint */
--coollabs-elevated: oklch(20.02% 0.005 54); /* MapleDeploy branding: stone re-tint */
--coollabs-recessed: oklch(25.2% 0.007 42); /* MapleDeploy branding: stone re-tint */
--coollabs-base: oklch(22.64% 0.006 52); /* MapleDeploy branding: stone re-tint */
--coollabs-fill: oklch(29.31% 0.008 44); /* MapleDeploy branding: stone re-tint */
--coollabs-line: oklch(32% 0.0085 50.61); /* MapleDeploy branding: stone re-tint */
/* Crisped from 26.9% (1.36:1 on canvas) to 32% (1.63:1) so dark cards
and tables show a visible edge instead of blending into the canvas. */
--coollabs-hairline: color-mix(in oklab, var(--md-stone-700) 50%, var(--md-stone-800)); /* MapleDeploy branding: stone-700/800 mix, L≈32.1 */
--coollabs-subtle: var(--md-stone-400); /* MapleDeploy branding: stone-400 (upstream 70.8 ≈ 70.9) */
--coollabs-hairline: oklch(32% 0.0085 50.61); /* MapleDeploy branding: stone re-tint */
--coollabs-subtle: oklch(70.8% 0.01 56.27); /* MapleDeploy branding: stone re-tint */
/* Neutral (was #a8a8b0 / #7a7a84, both cool-tinted). Sidebar text now shares
the same neutral temperature as the content text, so the sidebar no longer
reads cooler than the panels/cards. */
--color-nav-text: color-mix(in oklab, var(--md-stone-300) 20%, var(--md-stone-400)); /* MapleDeploy branding: stone-300/400 mix, L≈74.1 */
--color-nav-text: oklch(73.8% 0.009 56); /* MapleDeploy branding: stone re-tint */
/* Raised from 58.97% (4.47:1 on panel, just under AA) to 61% (4.86:1) so the
11px sidebar section labels clear 4.5:1. */
--color-nav-muted: color-mix(in oklab, var(--md-stone-400) 35%, var(--md-stone-500)); /* MapleDeploy branding: stone-400/500 mix, L≈60.8 */
--color-nav-active: var(--md-stone-100); /* MapleDeploy branding: stone-100 */
--color-nav-muted: oklch(61% 0.012 58); /* MapleDeploy branding: stone re-tint */
--color-nav-active: oklch(96.12% 0.001 106); /* MapleDeploy branding: stone re-tint */
/* Tertiary text. Base token (59.31%) only clears 4.5:1 on app/panel; it
failed on surface/raised/selected (4.46/4.20/3.73). Raised to 64% so the
313 dark:text-fg-faint usages clear AA across the whole surface ladder,
while staying clearly dimmer than fg-dim (76.99%). */
--color-fg-faint: color-mix(in oklab, var(--md-stone-400) 60%, var(--md-stone-500)); /* MapleDeploy branding: stone-400/500 mix, L≈64.7 */
--color-fg-faint: oklch(65% 0.012 59); /* MapleDeploy branding: stone re-tint */
/* Error text. The base error red (57.71%) failed on every dark surface
(4.10/3.75/3.53). Brightened for dark mode so text-error clears AA on the
card ladder while staying unmistakably red. */
@ -2042,7 +2023,7 @@ .resource-heading-tabs-scroller {
.dark .resource-heading-tabs-scroller {
/* Matches dark:bg-white/[0.035] pill track + panel so fade blends */
--resource-heading-tabs-fade: color-mix(in srgb, var(--color-panel, var(--md-stone-950)) 96.5%, white); /* MapleDeploy branding: stone remap */
--resource-heading-tabs-fade: color-mix(in srgb, var(--color-panel, #0b0a09) 96.5%, white); /* MapleDeploy branding: stone remap */
}
.resource-heading-tabs-control {

View file

@ -36,7 +36,7 @@ @utility input-sticky {
box-shadow: inset 4px 0 0 transparent, inset 0 0 0 1px #e5e5e5;
&:where(.dark, .dark *) {
box-shadow: inset 4px 0 0 transparent, inset 0 0 0 1px #292524; /* MapleDeploy branding: stone-800 (was #242424) */
box-shadow: inset 4px 0 0 transparent, inset 0 0 0 1px #272322; /* MapleDeploy branding: stone remap (was #242424) */
}
&:focus-visible {
@ -44,7 +44,7 @@ @utility input-sticky {
}
&:where(.dark, .dark *):focus-visible {
box-shadow: inset 4px 0 0 #fde047, inset 0 0 0 1px #292524; /* MapleDeploy branding: stone-800 (was #242424) */
box-shadow: inset 4px 0 0 #fde047, inset 0 0 0 1px #272322; /* MapleDeploy branding: stone remap (was #242424) */
}
}

View file

@ -43,7 +43,7 @@ function createApplicationTerminalTheme(accent, colors = {}) {
return {
...baseApplicationTerminalTheme,
cursor: accent,
cursorAccent: '#0c0a09', // MapleDeploy branding: stone-950 (was #101012)
cursorAccent: '#12100e', // MapleDeploy branding: stone remap (was #101012)
selectionBackground: `${accent}66`,
...colors,
};

View file

@ -99,11 +99,11 @@
{{-- Unified Input Container with Tags Inside --}}
<div @click="$refs.searchInput.focus()" x-data="{ focused: false }" @focusin="focused = true" @focusout="focused = false"
class="flex flex-wrap gap-1.5 max-h-40 overflow-y-auto scrollbar py-1.5 px-2 w-full text-sm rounded-sm border-0 bg-white dark:bg-coolgray-100 cursor-text px-1 text-black dark:text-white"
{{-- MapleDeploy branding: red accent instead of Coolify purple; dark border stone-800 #292524 (was #242424) --}}
{{-- MapleDeploy branding: red accent instead of Coolify purple; dark border #272322 stone remap (was #242424) --}}
:style="(() => {
const isDark = document.documentElement.classList.contains('dark');
const accent = isDark ? '#fde047' : '#d52b1f';
const border = isDark ? '#292524' : '#e7e5e4';
const border = isDark ? '#272322' : '#e5e5e5';
return focused
? 'box-shadow: inset 4px 0 0 ' + accent + ', inset 0 0 0 2px ' + border + ';'
: 'box-shadow: inset 4px 0 0 transparent, inset 0 0 0 2px ' + border + ';';
@ -111,7 +111,7 @@ class="flex flex-wrap gap-1.5 max-h-40 overflow-y-auto scrollbar py-1.5 px-2 w-
:class="{
'opacity-50': {{ $disabled ? 'true' : 'false' }}
}" wire:loading.class="opacity-50"
wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]">
wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]">
{{-- Selected Tags Inside Input --}}
<template x-for="value in selected" :key="value">
@ -241,18 +241,18 @@ class="pointer-events-none absolute inset-0 rounded-[5px] border border-neutral-
{{-- Input Container --}}
<div @click="openDropdown()" x-data="{ focused: false }" @focusin="focused = true" @focusout="focused = false"
class="flex items-center gap-2 py-1.5 w-full text-sm rounded-sm border-0 bg-white dark:bg-coolgray-100 cursor-text text-black dark:text-white"
{{-- MapleDeploy branding: red accent instead of Coolify purple; dark border stone-800 #292524 (was #242424) --}}
{{-- MapleDeploy branding: red accent instead of Coolify purple; dark border #272322 stone remap (was #242424) --}}
:style="(() => {
const isDark = document.documentElement.classList.contains('dark');
const accent = isDark ? '#fde047' : '#d52b1f';
const border = isDark ? '#292524' : '#e7e5e4';
const border = isDark ? '#272322' : '#e5e5e5';
return focused
? 'box-shadow: inset 4px 0 0 ' + accent + ', inset 0 0 0 2px ' + border + ';'
: 'box-shadow: inset 4px 0 0 transparent, inset 0 0 0 2px ' + border + ';';
})()"
:class="{
'opacity-50': {{ $disabled ? 'true' : 'false' }}
}" wire:loading.class="opacity-50" wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]">
}" wire:loading.class="opacity-50" wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]">
{{-- Display Selected Value or Search Input --}}
<div class="flex-1 flex items-center min-w-0 px-1">

View file

@ -211,7 +211,7 @@
@readonly($readonly)
@if ($modelBinding !== 'null')
wire:model="{{ $modelBinding }}"
wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]"
wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]"
@endif
wire:loading.attr="disabled"
@disabled($disabled)

View file

@ -42,7 +42,7 @@ class="password-toggle flex absolute inset-y-0 right-0 z-10 items-center pr-2 cu
x-bind:type="type"
x-bind:class="{ 'truncate': type === 'text' && ! $el.disabled }"
{{ $attributes->merge(['class' => $defaultClass]) }} @required($required)
@if ($modelBinding !== 'null') wire:model={{ $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]" @endif
@if ($modelBinding !== 'null') wire:model={{ $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]" @endif
wire:loading.attr="disabled"
@readonly($readonly) @disabled($disabled) id="{{ $htmlId }}"
name="{{ $name }}" placeholder="{{ $attributes->get('placeholder') }}"
@ -53,7 +53,7 @@ class="password-toggle flex absolute inset-y-0 right-0 z-10 items-center pr-2 cu
@else
<input autocomplete="{{ $autocomplete }}" @if ($value) value="{{ $value }}" @endif
{{ $attributes->merge(['class' => $defaultClass]) }} @required($required) @readonly($readonly)
@if ($modelBinding !== 'null') wire:model={{ $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]" @endif
@if ($modelBinding !== 'null') wire:model={{ $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]" @endif
wire:loading.attr="disabled"
type="{{ $type }}" @disabled($disabled) min="{{ $attributes->get('min') }}"
max="{{ $attributes->get('max') }}" minlength="{{ $attributes->get('minlength') }}"

View file

@ -46,11 +46,11 @@
inherit: true,
rules: [],
colors: {
// MapleDeploy branding: stone-950 (was #0b0b0c)
'editor.background': '#0c0a09',
'editorGutter.background': '#0c0a09',
'editorStickyScroll.background': '#0c0a09',
'minimap.background': '#0c0a09',
// MapleDeploy branding: stone remap (was #0b0b0c)
'editor.background': '#0d0b0a',
'editorGutter.background': '#0d0b0a',
'editorStickyScroll.background': '#0d0b0a',
'minimap.background': '#0d0b0a',
'scrollbarSlider.background': '#ffffff1a',
'scrollbarSlider.hoverBackground': '#ffffff2e',
'scrollbarSlider.activeBackground': '#ffffff40',

View file

@ -14,7 +14,7 @@ class="mb-0! flex items-center gap-1 text-sm font-medium leading-4 {{ $disabled
@endif
<select {{ $attributes->merge(['class' => $defaultClass]) }} @disabled($disabled) @required($required)
wire:loading.attr="disabled" name={{ $modelBinding }} id="{{ $htmlId }}"
@if ($attributes->whereStartsWith('wire:model')->first()) {{ $attributes->whereStartsWith('wire:model')->first() }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]" @else wire:model={{ $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]" @endif>
@if ($attributes->whereStartsWith('wire:model')->first()) {{ $attributes->whereStartsWith('wire:model')->first() }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]" @else wire:model={{ $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]" @endif>
{{ $slot }}
</select>
@error($modelBinding)

View file

@ -58,16 +58,16 @@ class="absolute inset-y-0 right-0 flex items-center h-6 pt-2 pr-2 cursor-pointer
@endif
<input x-cloak x-show="type === 'password'" value="{{ $value }}"
{{ $attributes->merge(['class' => $defaultClassInput]) }} @required($required)
@if ($modelBinding !== 'null') wire:model={{ $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]" @endif
@if ($modelBinding !== 'null') wire:model={{ $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]" @endif
wire:loading.attr="disabled"
type="{{ $type }}" @readonly($readonly) @disabled($disabled) id="{{ $htmlId }}"
name="{{ $name }}" placeholder="{{ $attributes->get('placeholder') }}"
aria-placeholder="{{ $attributes->get('placeholder') }}">
<textarea minlength="{{ $minlength }}" maxlength="{{ $maxlength }}" x-cloak x-show="type !== 'password'"
placeholder="{{ $placeholder }}" {{ $attributes->merge(['class' => $defaultClass]) }}
@if ($realtimeValidation) wire:model.debounce.200ms="{{ $modelBinding }}" wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]"
@if ($realtimeValidation) wire:model.debounce.200ms="{{ $modelBinding }}" wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]"
@else
wire:model={{ $value ?? $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]" @endif
wire:model={{ $value ?? $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]" @endif
@disabled($disabled) @readonly($readonly) @required($required) id="{{ $htmlId }}"
name="{{ $name }}" name={{ $modelBinding }}
@if ($autofocus) x-ref="autofocusInput" @endif></textarea>
@ -77,9 +77,9 @@ class="absolute inset-y-0 right-0 flex items-center h-6 pt-2 pr-2 cursor-pointer
<textarea minlength="{{ $minlength }}" maxlength="{{ $maxlength }}"
{{ $allowTab ? '@keydown.tab=handleKeydown' : '' }} placeholder="{{ $placeholder }}"
{{ !$spellcheck ? 'spellcheck=false' : '' }} {{ $attributes->merge(['class' => $defaultClass]) }}
@if ($realtimeValidation) wire:model.debounce.200ms="{{ $modelBinding }}" wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]"
@if ($realtimeValidation) wire:model.debounce.200ms="{{ $modelBinding }}" wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]"
@else
wire:model={{ $value ?? $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e7e5e4] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#292524]" @endif
wire:model={{ $value ?? $modelBinding }} wire:dirty.class="[box-shadow:inset_4px_0_0_#d52b1f,inset_0_0_0_2px_#e5e5e5] dark:[box-shadow:inset_4px_0_0_#fde047,inset_0_0_0_2px_#272322]" @endif
@disabled($disabled) @readonly($readonly) @required($required) id="{{ $htmlId }}"
name="{{ $name }}" name={{ $modelBinding }}
@if ($autofocus) x-ref="autofocusInput" @endif></textarea>

View file

@ -47,7 +47,7 @@
document.documentElement.classList.remove('dark');
}
document.documentElement.dataset.theme = userSettings === 'custom' ? 'custom' : (isDark ? 'dark' : 'light');
document.querySelector('meta[name=theme-color]')?.setAttribute('content', isDark ? '#0c0a09' : '#ffffff'); // MapleDeploy branding: stone-950 (was #101010)
document.querySelector('meta[name=theme-color]')?.setAttribute('content', isDark ? '#12100e' : '#ffffff'); // MapleDeploy branding: stone remap (was #101010)
}
}">
{{-- Search is only useful when workspace resources are available --}}

View file

@ -14,7 +14,7 @@ class="terminal-theme-trigger flex h-8 items-center gap-2 rounded-md px-2.5 text
</button>
<div x-cloak x-show="themeOpen" x-transition.origin.top.right
class="console-theme-selector absolute top-11 right-0 z-50 max-h-80 w-56 overflow-y-auto rounded-lg border border-neutral-200 bg-white p-1 shadow-[var(--shadow-dropdown)] dark:border-white/[0.1] dark:bg-stone-950"> {{-- MapleDeploy branding: stone-950 (was #111113) --}}
class="console-theme-selector absolute top-11 right-0 z-50 max-h-80 w-56 overflow-y-auto rounded-lg border border-neutral-200 bg-white p-1 shadow-[var(--shadow-dropdown)] dark:border-white/[0.1] dark:bg-[#13110f]"> {{-- MapleDeploy branding: stone remap (was #111113) --}}
@foreach ($themes as $theme)
<button type="button"
class="flex h-8 w-full items-center gap-2 rounded-md px-2 text-left text-[11px] text-neutral-600 transition-colors hover:bg-neutral-100 hover:text-neutral-950 dark:text-white/65 dark:hover:bg-white/[0.07] dark:hover:text-white"

View file

@ -76,7 +76,7 @@ class="size-3.5 text-coollabs dark:text-warning" viewBox="0 0 12 12" fill="none"
@foreach ([
['value' => 'light', 'label' => 'Light', 'description' => 'Bright surfaces and dark text.', 'preview' => 'bg-white'],
['value' => 'system', 'label' => 'System', 'description' => 'Follow your operating system.', 'preview' => 'bg-gradient-to-r from-white via-neutral-400 to-[#050505]'],
['value' => 'dark', 'label' => 'Dark', 'description' => 'Dark surfaces and soft contrast.', 'preview' => 'bg-stone-900'],
['value' => 'dark', 'label' => 'Dark', 'description' => 'Dark surfaces and soft contrast.', 'preview' => 'bg-[#1a1716]'],
['value' => 'custom', 'label' => 'Custom', 'description' => 'Tint light or dark surfaces with any color.', 'preview' => ''],
] as $option)
@if ($option['value'] === 'custom')
@ -160,7 +160,7 @@ class="group overflow-hidden rounded-[10px] border border-neutral-200 bg-white t
? 'ring-1 ring-coollabs/30 border-coollabs/40 dark:ring-warning/30 dark:border-warning/40'
: ''">
<div class="flex h-20 items-center border-b border-neutral-200 bg-neutral-50 px-4 dark:border-white/[0.07] dark:bg-black/15">
<div class="flex h-11 w-full gap-1.5 rounded-md border border-neutral-300 bg-white p-1.5 dark:border-white/15 dark:bg-stone-900">
<div class="flex h-11 w-full gap-1.5 rounded-md border border-neutral-300 bg-white p-1.5 dark:border-white/15 dark:bg-[#1a1716]">
<div class="w-3 shrink-0 rounded-sm bg-neutral-200 dark:bg-white/10"></div>
<div @class([
'h-full rounded-sm bg-neutral-200 dark:bg-white/10',

View file

@ -41,7 +41,7 @@
document.documentElement.dataset.theme = theme === 'custom' ? 'custom' : (isDark ? 'dark' : 'light');
document.documentElement.style.setProperty('--theme-base-color', window.hexToOklch(themeColor));
document.documentElement.style.setProperty('--theme-accent-foreground', window.themeAccentForeground(themeColor));
document.querySelector('meta[name=theme-color]')?.setAttribute('content', isDark ? '#0c0a09' : '#ffffff'); // MapleDeploy branding: stone-950 (was #101010)
document.querySelector('meta[name=theme-color]')?.setAttribute('content', isDark ? '#12100e' : '#ffffff'); // MapleDeploy branding: stone remap (was #101010)
};
// Single source for the theme controls Alpine state, shared by the
// Appearance page and the profile dropdown via x-data="themeControls()".
@ -110,7 +110,7 @@
document.documentElement.dataset.theme = this.theme === 'custom' ? 'custom' : (isDark ? 'dark' : 'light');
document.documentElement.style.setProperty('--theme-base-color', window.hexToOklch(this.themeColor));
document.documentElement.style.setProperty('--theme-accent-foreground', window.themeAccentForeground(this.themeColor));
document.querySelector('meta[name=theme-color]')?.setAttribute('content', isDark ? '#0c0a09' : '#ffffff'); // MapleDeploy branding: stone-950 (was #101010)
document.querySelector('meta[name=theme-color]')?.setAttribute('content', isDark ? '#12100e' : '#ffffff'); // MapleDeploy branding: stone remap (was #101010)
},
});
@ -123,8 +123,8 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex">
{{-- MapleDeploy branding: stone-950 (was #101010) --}}
<meta name="theme-color" content="#0c0a09" id="theme-color-meta" />
{{-- MapleDeploy branding: stone remap (was #101010) --}}
<meta name="theme-color" content="#12100e" id="theme-color-meta" />
<meta name="color-scheme" content="dark light" />
{{-- MapleDeploy branding --}}
<meta name="Description" content="MapleDeploy: Managed Coolify hosting on Canadian infrastructure" />
@ -160,7 +160,7 @@
// Update theme-color meta tag (non-critical, can run async)
const t = localStorage.theme || 'dark';
const isDark = t === 'dark' || t === 'custom' || (t === 'system' && matchMedia('(prefers-color-scheme: dark)').matches);
document.getElementById('theme-color-meta')?.setAttribute('content', isDark ? '#0c0a09' : '#ffffff'); // MapleDeploy branding: stone-950 (was #101010)
document.getElementById('theme-color-meta')?.setAttribute('content', isDark ? '#12100e' : '#ffffff'); // MapleDeploy branding: stone remap (was #101010)
</script>
<style>
[x-cloak] {

View file

@ -367,7 +367,7 @@ class="logs-viewer-btn">
x-transition:leave="transition ease-in duration-75"
x-transition:leave-start="transform opacity-100 scale-100"
x-transition:leave-end="transform opacity-0 scale-95"
class="absolute right-0 z-50 mt-2 w-max origin-top-right rounded-lg border border-neutral-200 bg-white p-1 shadow-dropdown focus:outline-none dark:border-white/[0.1] dark:bg-stone-900"> {{-- MapleDeploy branding: stone-900 (was #181818) --}}
class="absolute right-0 z-50 mt-2 w-max origin-top-right rounded-lg border border-neutral-200 bg-white p-1 shadow-dropdown focus:outline-none dark:border-white/[0.1] dark:bg-[#1a1716]"> {{-- MapleDeploy branding: stone remap (was #181818) --}}
<div>
<button x-on:click="downloadLogs(); downloadMenuOpen = false"
class="listbox-option text-neutral-700! hover:bg-neutral-100! dark:text-neutral-200! dark:hover:bg-white/[0.07]!">

View file

@ -19,7 +19,7 @@
|| ($type !== 'server' && $containersLoaded && $containers->isEmpty());
$consoleThemes = [
// MapleDeploy branding: stone remap (system/blur-black swatches: was #121214 / #8C8E9C)
['key' => 'system', 'name' => 'System', 'background' => 'linear-gradient(135deg, #ffffff 0 50%, color-mix(in oklab, #1c1917 50%, #0c0a09) 50% 100%)', 'accent' => '#78716c'],
['key' => 'system', 'name' => 'System', 'background' => 'linear-gradient(135deg, #ffffff 0 50%, #141210 50% 100%)', 'accent' => '#958D89'],
['key' => 'shadows-midnight', 'name' => 'Midnight', 'background' => 'linear-gradient(135deg, #2a3b4c, rgba(42, 59, 76, 0.4))', 'accent' => '#6d7a7c'],
['key' => 'shadows-golden-hour', 'name' => 'Golden Hour', 'background' => 'linear-gradient(135deg, #d58a42, rgba(213, 138, 66, 0.4))', 'accent' => '#bf8c3c'],
['key' => 'shadows-cosmic-purple', 'name' => 'Cosmic Purple', 'background' => 'linear-gradient(135deg, #5d3e66, rgba(93, 62, 102, 0.4))', 'accent' => '#A76DBE'],
@ -29,7 +29,7 @@
['key' => 'shadows-golden-nebula', 'name' => 'Golden Nebula', 'background' => 'linear-gradient(135deg, #ffd700, #ff6347, #d4a20e, #ffcc00, #1f3d6f)', 'accent' => '#d4a20e'],
['key' => 'shadows-cosmic-lagoon', 'name' => 'Cosmic Lagoon', 'background' => 'linear-gradient(135deg, #1d2b64, #2f4f96, #00b5b8, #9c27b0, #8e24aa)', 'accent' => '#00b5b8'],
['key' => 'shadows-neon-nebula', 'name' => 'Neon Nebula', 'background' => 'linear-gradient(135deg, #00d9d9, #ff55aa, #1e1e2f, #2f3b57, #ff99ff)', 'accent' => '#ff55aa'],
['key' => 'shadows-transparent', 'name' => 'Blur Black', 'background' => 'rgba(0, 0, 0, 0.7)', 'accent' => '#78716c'],
['key' => 'shadows-transparent', 'name' => 'Blur Black', 'background' => 'rgba(0, 0, 0, 0.7)', 'accent' => '#958D89'],
];
$consoleThemeKeys = collect($consoleThemes)->pluck('key')->values();
$consoleThemeNames = collect($consoleThemes)->pluck('name', 'key');

View file

@ -1,7 +1,7 @@
@php
$consoleThemes = [
// MapleDeploy branding: stone remap (system/blur-black swatches: was #121214 / #8C8E9C)
['key' => 'system', 'name' => 'System', 'background' => 'linear-gradient(135deg, #ffffff 0 50%, color-mix(in oklab, #1c1917 50%, #0c0a09) 50% 100%)', 'accent' => '#78716c'],
['key' => 'system', 'name' => 'System', 'background' => 'linear-gradient(135deg, #ffffff 0 50%, #141210 50% 100%)', 'accent' => '#958D89'],
['key' => 'shadows-midnight', 'name' => 'Midnight', 'background' => 'linear-gradient(135deg, #2a3b4c, rgba(42, 59, 76, 0.4))', 'accent' => '#6d7a7c'],
['key' => 'shadows-golden-hour', 'name' => 'Golden Hour', 'background' => 'linear-gradient(135deg, #d58a42, rgba(213, 138, 66, 0.4))', 'accent' => '#bf8c3c'],
['key' => 'shadows-cosmic-purple', 'name' => 'Cosmic Purple', 'background' => 'linear-gradient(135deg, #5d3e66, rgba(93, 62, 102, 0.4))', 'accent' => '#A76DBE'],
@ -11,7 +11,7 @@
['key' => 'shadows-golden-nebula', 'name' => 'Golden Nebula', 'background' => 'linear-gradient(135deg, #ffd700, #ff6347, #d4a20e, #ffcc00, #1f3d6f)', 'accent' => '#d4a20e'],
['key' => 'shadows-cosmic-lagoon', 'name' => 'Cosmic Lagoon', 'background' => 'linear-gradient(135deg, #1d2b64, #2f4f96, #00b5b8, #9c27b0, #8e24aa)', 'accent' => '#00b5b8'],
['key' => 'shadows-neon-nebula', 'name' => 'Neon Nebula', 'background' => 'linear-gradient(135deg, #00d9d9, #ff55aa, #1e1e2f, #2f3b57, #ff99ff)', 'accent' => '#ff55aa'],
['key' => 'shadows-transparent', 'name' => 'Blur Black', 'background' => 'rgba(0, 0, 0, 0.7)', 'accent' => '#78716c'],
['key' => 'shadows-transparent', 'name' => 'Blur Black', 'background' => 'rgba(0, 0, 0, 0.7)', 'accent' => '#958D89'],
];
$consoleThemeKeys = collect($consoleThemes)->pluck('key')->values();
$consoleThemeNames = collect($consoleThemes)->pluck('name', 'key');
@ -281,7 +281,7 @@ class="px-2 py-5 text-center text-[11px] text-white/35">
</div>
@elseif ($servers->isEmpty())
{{-- MapleDeploy branding: stone remap (was #141414) --}}
<div class="flex h-full min-h-0 items-center justify-center bg-stone-900 px-4">
<div class="flex h-full min-h-0 items-center justify-center bg-[#161312] px-4">
<x-empty size="lg" title="No terminal targets available"
description="Connect a reachable server and enable terminal access to start a session."
icon-name="browser-terminal" />