diff --git a/src/components/ControlPanel.astro b/src/components/ControlPanel.astro new file mode 100644 index 0000000..a62bb1f --- /dev/null +++ b/src/components/ControlPanel.astro @@ -0,0 +1,411 @@ +--- +import TuiSlider from "./TuiSlider.astro"; +import TuiSegment from "./TuiSegment.astro"; +import TuiToggle from "./TuiToggle.astro"; +import TuiButton from "./TuiButton.astro"; +--- + + + + diff --git a/src/components/Sidebar.astro b/src/components/Sidebar.astro new file mode 100644 index 0000000..5dbf406 --- /dev/null +++ b/src/components/Sidebar.astro @@ -0,0 +1,242 @@ +--- + +--- + + + + diff --git a/src/components/TuiButton.astro b/src/components/TuiButton.astro index ed97f1e..4cc5c01 100644 --- a/src/components/TuiButton.astro +++ b/src/components/TuiButton.astro @@ -33,67 +33,70 @@ const { .tui-button { display: inline-flex; align-items: center; - gap: 4px; - background: none; - border: 1px solid rgba(255, 103, 0, 0.4); - color: var(--text-color); + gap: 6px; + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.1); + color: rgba(255, 255, 255, 0.7); font-family: inherit; font-size: 11px; - padding: 3px 10px; + padding: 4px 10px; cursor: pointer; - opacity: 0.8; - transition: all 0.15s; + transition: all 0.2s; user-select: none; + border-radius: 2px; } .tui-button:hover { - opacity: 1; - border-color: var(--text-color); - background: rgba(255, 103, 0, 0.1); + color: #fff; + border-color: rgba(255, 255, 255, 0.3); + background: rgba(255, 255, 255, 0.08); + transform: translateY(-1px); } .tui-button:active { - background: rgba(255, 103, 0, 0.2); + background: rgba(255, 255, 255, 0.12); + transform: translateY(0); } .tui-button--primary { - border-color: var(--text-color); - background: rgba(255, 103, 0, 0.1); + background: rgba(255, 255, 255, 0.1); + border-color: rgba(255, 255, 255, 0.2); + color: #fff; } .tui-button--primary:hover { - background: var(--text-color); - color: #000; + background: rgba(255, 255, 255, 0.2); + border-color: rgba(255, 255, 255, 0.4); } .tui-button--subtle { border-color: transparent; + background: transparent; opacity: 0.6; } .tui-button--subtle:hover { - border-color: rgba(255, 103, 0, 0.3); + border-color: rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.05); opacity: 1; } .tui-button-shortcut { font-size: 9px; - opacity: 0.6; - padding: 0 3px; - border: 1px solid currentColor; - line-height: 1.2; - border-radius: 2px; + opacity: 0.5; + padding: 1px 4px; + border: 1px solid rgba(255, 255, 255, 0.2); + line-height: 1; + border-radius: 3px; } .tui-button:hover .tui-button-shortcut { - opacity: 1; - } - - .tui-button--primary:hover .tui-button-shortcut { - border-color: #000; + opacity: 0.8; + border-color: rgba(255, 255, 255, 0.4); } .tui-button-label { - font-weight: bold; + font-weight: 500; + letter-spacing: 0.5px; } diff --git a/src/components/TuiSegment.astro b/src/components/TuiSegment.astro index c4757bd..f87c5bb 100644 --- a/src/components/TuiSegment.astro +++ b/src/components/TuiSegment.astro @@ -47,33 +47,37 @@ const { .tui-segment { display: flex; align-items: center; - gap: 8px; + gap: 12px; font-size: 11px; user-select: none; } .tui-segment-label { min-width: 3ch; - font-weight: bold; + font-weight: 700; + font-family: var(--font-mono); + color: rgba(255, 255, 255, 0.4); opacity: 0.7; } .tui-segment-options { display: flex; - border: 1px solid rgba(255, 103, 0, 0.3); + border: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.02); + border-radius: 2px; + overflow: hidden; } .tui-segment-option { - background: none; + background: transparent; border: none; - border-right: 1px solid rgba(255, 103, 0, 0.2); - color: var(--text-color); + border-right: 1px solid rgba(255, 255, 255, 0.05); + color: rgba(255, 255, 255, 0.5); font-family: inherit; font-size: inherit; - padding: 2px 8px; + padding: 4px 10px; cursor: pointer; - opacity: 0.5; - transition: all 0.15s; + transition: all 0.2s; min-width: 3ch; text-align: center; } @@ -83,24 +87,24 @@ const { } .tui-segment-option:hover { - opacity: 0.8; - background: rgba(255, 103, 0, 0.1); + color: #fff; + background: rgba(255, 255, 255, 0.05); } .tui-segment-option.active { - background: var(--text-color); - color: #000; - opacity: 1; - font-weight: bold; + background: rgba(255, 255, 255, 0.15); + color: #fff; + font-weight: 600; } /* Hover the whole group */ .tui-segment:hover .tui-segment-label { opacity: 1; + color: rgba(255, 255, 255, 0.8); } .tui-segment:hover .tui-segment-options { - border-color: var(--text-color); + border-color: rgba(255, 255, 255, 0.2); } diff --git a/src/components/TuiSlider.astro b/src/components/TuiSlider.astro index f403ff6..e593816 100644 --- a/src/components/TuiSlider.astro +++ b/src/components/TuiSlider.astro @@ -63,15 +63,19 @@ const segments = 12; .tui-slider { display: flex; align-items: center; - gap: 6px; + gap: 8px; font-size: 11px; user-select: none; + color: rgba(255, 255, 255, 0.6); } .tui-slider-label { min-width: 3ch; - font-weight: bold; - opacity: 0.7; + font-weight: 700; + opacity: 0.5; + font-family: var(--font-mono); + color: rgba(255, 255, 255, 0.4); + transition: opacity 0.2s; } .tui-slider-track-wrapper { @@ -89,22 +93,24 @@ const segments = 12; .tui-slider-track { display: flex; - letter-spacing: -1px; - font-family: monospace; + letter-spacing: 2px; + font-family: var(--font-mono); + font-size: 10px; } .tui-slider-segment { transition: color 0.1s; - color: rgba(255, 103, 0, 0.25); + color: rgba(255, 255, 255, 0.1); } .tui-slider-segment.filled { - color: var(--text-color); + color: rgba(255, 255, 255, 0.6); } .tui-slider-segment.thumb { color: #fff; - text-shadow: 0 0 4px var(--text-color); + text-shadow: 0 0 8px rgba(255, 255, 255, 0.5); + scale: 1.2; } .tui-slider-input { @@ -120,23 +126,26 @@ const segments = 12; } .tui-slider-value { - min-width: 3ch; + min-width: 4ch; text-align: right; - font-weight: bold; - opacity: 0.9; + font-weight: 400; + opacity: 0.8; + font-family: var(--font-mono); + color: rgba(255, 255, 255, 0.8); } /* Hover effect */ .tui-slider:hover .tui-slider-label { opacity: 1; + color: #fff; } .tui-slider:hover .tui-slider-segment { - color: rgba(255, 103, 0, 0.4); + color: rgba(255, 255, 255, 0.2); } .tui-slider:hover .tui-slider-segment.filled { - color: var(--text-color); + color: rgba(255, 255, 255, 0.8); } .tui-slider:hover .tui-slider-segment.thumb { diff --git a/src/components/TuiToggle.astro b/src/components/TuiToggle.astro index fc8c977..df23841 100644 --- a/src/components/TuiToggle.astro +++ b/src/components/TuiToggle.astro @@ -32,35 +32,36 @@ const { display: inline-flex; align-items: center; justify-content: center; - background: none; - border: 1px solid rgba(255, 103, 0, 0.3); - color: var(--text-color); + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.1); + color: rgba(255, 255, 255, 0.5); font-family: inherit; font-size: 11px; - padding: 2px 8px; + padding: 4px 12px; cursor: pointer; - opacity: 0.5; - transition: all 0.15s; + transition: all 0.2s; user-select: none; min-width: 3ch; text-align: center; + border-radius: 2px; } .tui-toggle:hover { - opacity: 0.8; - background: rgba(255, 103, 0, 0.1); + color: #fff; + border-color: rgba(255, 255, 255, 0.3); + background: rgba(255, 255, 255, 0.08); } .tui-toggle.active { - background: var(--text-color); - color: #000; - opacity: 1; - font-weight: bold; - border-color: var(--text-color); + background: rgba(255, 255, 255, 0.15); + color: #fff; + border-color: rgba(255, 255, 255, 0.4); + box-shadow: 0 0 10px rgba(255, 255, 255, 0.05); } .tui-toggle-label { - font-weight: bold; + font-weight: 600; + letter-spacing: 0.5px; } diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 47ff7c1..616328b 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,6 +1,4 @@ --- -import Navbar from '../components/Navbar.astro'; - interface Props { title: string; showScroll?: boolean; @@ -15,29 +13,28 @@ const { title, showScroll = false } = Astro.props; - - + + + rel="stylesheet" + />