Initial design based off original website, some things still to do

This commit is contained in:
2025-08-08 17:48:11 +09:30
parent d38c8fc694
commit ae3c38be17
185 changed files with 6799 additions and 1877 deletions

View File

@@ -0,0 +1,35 @@
---
const { class: providedClasses, selectClass, optionClass } = Astro.props;
---
<theme-selector class:list={[providedClasses]}></theme-selector>
<script is:inline define:vars={{ selectClass, optionClass }}>
if (!customElements.get("theme-selector")) {
customElements.define(
"theme-selector",
class extends HTMLElement {
connectedCallback() {
this.innerHTML = `
<select name="theme-select" class=${selectClass}>
<option value="auto" class=${optionClass}>Auto</option>
<option value="light" class=${optionClass}>Light</option>
<option value="dark" class=${optionClass}>Dark</option>
</select>
`;
this.querySelector("select").onchange = (event) =>
theme.setTheme(event.target.value);
this.setAttribute("aria-label", "Select Theme");
this.updateSelectedTheme();
document.addEventListener("theme-changed", (event) => {
this.updateSelectedTheme(event.detail.theme);
});
}
updateSelectedTheme(newTheme = theme.getTheme()) {
this.querySelector("select").value = newTheme;
}
}
);
}
</script>