Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
90b7224
feat: update branding — dark/light logos and Indigo primary colors
xevgeniy-ellinskiyx May 27, 2026
0394a03
feat: refine UI branding — search button, menu button, and nav styles
xevgeniy-ellinskiyx May 28, 2026
c324416
feat: add Inter as primary font via Google Fonts
xevgeniy-ellinskiyx May 28, 2026
2ab9c1b
feat: add rounded corners and border to article images
xevgeniy-ellinskiyx May 28, 2026
5ec81c1
refactor: extract indigo brand palette into CSS variables
xevgeniy-ellinskiyx May 28, 2026
bbb98e9
feat: fix site title alignment and fixed gap between logo and Docs label
xevgeniy-ellinskiyx May 28, 2026
8aabe8d
feat: reduce article font sizes and hero tagline
xevgeniy-ellinskiyx May 28, 2026
7862dc0
feat: add hover background to sidebar accordion group labels
xevgeniy-ellinskiyx May 28, 2026
558f61e
feat: style code blocks — rounded corners, scrollbar, copy button
xevgeniy-ellinskiyx May 28, 2026
e3892fa
feat: refine code block and copy button styles
xevgeniy-ellinskiyx May 28, 2026
45a841f
feat: reduce image border-radius from 12px to 8px
xevgeniy-ellinskiyx May 28, 2026
65ad963
feat: add 8px border-radius to sidebar nav items and accordions
xevgeniy-ellinskiyx May 28, 2026
85a3c89
feat: add neutral palette tokens and dark theme color overrides
xevgeniy-ellinskiyx May 28, 2026
5c90ce6
feat: remove layout dividers and tighten page title spacing
xevgeniy-ellinskiyx May 28, 2026
9903fd4
feat: add snake indicator animation to TOC sidebar
xevgeniy-ellinskiyx Jun 1, 2026
99b1943
feat: replace theme select dropdown with single toggle button
xevgeniy-ellinskiyx Jun 1, 2026
00a43d7
style: normalize theme toggle border-radius to 8px
xevgeniy-ellinskiyx Jun 1, 2026
8d5b227
feat: add sidebar nav icons and spacing polish
xevgeniy-ellinskiyx Jun 1, 2026
b68fd38
chore: remove unused plug.svg and dead CSS selectors
xevgeniy-ellinskiyx Jun 1, 2026
4149231
revert: restore default Starlight content font sizes
xevgeniy-ellinskiyx Jun 1, 2026
0e7439c
style: migrate search modal colors to neutral palette
xevgeniy-ellinskiyx Jun 2, 2026
404f0ab
revert: remove custom TOC snake indicator and align items to heading
xevgeniy-ellinskiyx Jun 2, 2026
1345ac4
fix: download images before rewriting paths to prevent missing image …
xevgeniy-ellinskiyx Jun 2, 2026
8e82924
fix: replace blue-tinted sl-color-black with neutral-900 for mobile s…
xevgeniy-ellinskiyx Jun 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ export default defineConfig({
errorOnInvalidHashes: false,
}),
],
title: 'Testomatio',
title: 'Docs',
pagefind: false,

logo: {
src: './src/assets/logo.svg',
light: './src/assets/logo-light.svg',
dark: './src/assets/logo-dark.svg',
},
customCss: [
'./src/styles/custom.css',
Expand Down Expand Up @@ -72,7 +73,7 @@ export default defineConfig({
SocialIcons: './src/components/Links.astro',
Search: './src/components/Search.astro',
PageTitle: './src/components/PageTitle.astro',

ThemeSelect: './src/components/ThemeSelect.astro',
},

sidebar: [
Expand Down
1 change: 1 addition & 0 deletions public/icons/book.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/icons/chart.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/icons/file.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/icons/folder.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/icons/puzzle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/icons/rocket.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/icons/settings.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/icons/support.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/icons/users.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions src/assets/logo-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions src/assets/logo-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
103 changes: 103 additions & 0 deletions src/components/ThemeSelect.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
---
---

<starlight-theme-select>
<button id="theme-toggle" aria-label="Toggle theme" title="Toggle theme">
<!-- sun icon -->
<span class="icon-sun">
<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
<path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/>
</svg>
</span>
<!-- moon icon -->
<span class="icon-moon">
<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
<path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/>
</svg>
</span>
</button>
</starlight-theme-select>

<style>
starlight-theme-select {
display: flex;
align-items: center;
}

#theme-toggle {
display: flex;
align-items: center;
justify-content: center;
width: 2rem;
height: 2rem;
border: none;
outline: none;
border-radius: 8px;
background: transparent;
color: var(--sl-color-gray-3);
cursor: pointer;
padding: 0;
transition: color 0.2s, background 0.2s;
}

#theme-toggle:hover {
background: var(--sl-color-gray-6);
}

/* Light theme → show moon (to switch to dark) */
:root[data-theme='light'] .icon-moon { display: flex; }
:root[data-theme='light'] .icon-sun { display: none; }

/* Dark theme → show sun (to switch to light) */
:root[data-theme='dark'] .icon-sun { display: flex; }
:root[data-theme='dark'] .icon-moon { display: none; }

/* Default fallback */
.icon-moon { display: flex; }
.icon-sun { display: none; }
</style>

{/* Inlined to avoid FOUC */}
<script is:inline>
StarlightThemeProvider.updatePickers();
</script>

<script>
type Theme = 'dark' | 'light' | 'auto';

const storageKey = 'starlight-theme';

const loadTheme = (): Theme =>
(typeof localStorage !== 'undefined' && (localStorage.getItem(storageKey) as Theme)) || 'auto';

function storeTheme(theme: Theme): void {
if (typeof localStorage !== 'undefined') {
localStorage.setItem(storageKey, theme === 'light' || theme === 'dark' ? theme : '');
}
}

const getPreferredColorScheme = (): 'dark' | 'light' =>
matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';

function onThemeChange(theme: Theme): void {
StarlightThemeProvider.updatePickers(theme);
document.documentElement.dataset.theme = theme === 'auto' ? getPreferredColorScheme() : theme;
storeTheme(theme);
}

matchMedia('(prefers-color-scheme: light)').addEventListener('change', () => {
if (loadTheme() === 'auto') onThemeChange('auto');
});

class StarlightThemeSelect extends HTMLElement {
constructor() {
super();
onThemeChange(loadTheme());
this.querySelector('#theme-toggle')?.addEventListener('click', () => {
const current = document.documentElement.dataset.theme as 'dark' | 'light';
onThemeChange(current === 'dark' ? 'light' : 'dark');
});
}
}
customElements.define('starlight-theme-select', StarlightThemeSelect);
</script>
Loading
Loading