Bump deps (#515)

* chore: add nix flake for reproducible dev environment

Signed-off-by: Sped0n <hi@sped0n.com>

* refactor: migrate SCSS to modern Sass (@use/@forward)

Update mixins to use Sass module functions (map.has-key/get).
Configure Vite for modern Sass API.
Introduce _foundation.scss for forwarding core modules.

Signed-off-by: Sped0n <hi@sped0n.com>

* fix: replace deprecated _build with build in frontmatter

Signed-off-by: Sped0n <hi@sped0n.com>

* chore: add vcache.sh script for vercel build cache management

Signed-off-by: Sped0n <hi@sped0n.com>

* refactor: migrate to ESLint v9 flat config

Remove legacy .eslintrc.json, .eslintignore, and .prettierrc.json.

Add eslint.config.mjs with love, prettier, solid, and import rules.

Update devDependencies (eslint@9, @typescript-eslint@8, etc.) and scripts.

Minor TS fixes: remove eslint-disable, add error logging, simplify conditional.

Signed-off-by: Sped0n <hi@sped0n.com>

* chore: replace vcache.sh with vercel.sh for Vercel build process

Delete vcache.sh script.

Add vercel.sh: install Dart Sass v1.93.3, copy generated assets between
node_modules and project dirs, run vite:build + hugo build, then copy back.

Signed-off-by: Sped0n <hi@sped0n.com>

* chore: setup dart-sass and split build steps in GitHub workflow

Signed-off-by: Sped0n <hi@sped0n.com>

---------

Signed-off-by: Sped0n <hi@sped0n.com>
This commit is contained in:
Ryan
2025-11-11 20:20:29 +08:00
committed by GitHub
parent 2dcbb5e5d5
commit 36721f8bf6
32 changed files with 1086 additions and 1097 deletions

View File

@@ -0,0 +1,4 @@
@forward 'reset';
@forward 'font';
@forward 'typography';
@forward 'mixins';

View File

@@ -1,3 +1,5 @@
@use 'sass:map';
$breakpoints: (
'mobile': 375px,
'tablet': 768px,
@@ -8,8 +10,8 @@ $breakpoints: (
// Breakpoints
@mixin min-width($breakpoint) {
@if map-has-key($breakpoints, $breakpoint) {
@media (min-width: map-get($breakpoints, $breakpoint)) {
@if map.has-key($breakpoints, $breakpoint) {
@media (min-width: map.get($breakpoints, $breakpoint)) {
@content;
}
} @else {
@@ -18,8 +20,8 @@ $breakpoints: (
}
@mixin max-width($breakpoint) {
@if map-has-key($breakpoints, $breakpoint) {
@media (max-width: (map-get($breakpoints, $breakpoint) - 1px)) {
@if map.has-key($breakpoints, $breakpoint) {
@media (max-width: (map.get($breakpoints, $breakpoint) - 1px)) {
@content;
}
} @else {

View File

@@ -1,4 +1,4 @@
@import 'mixins';
@use 'mixins' as *;
body {
line-height: 1.2;

View File

@@ -1,3 +1,9 @@
@use 'sass:map';
@use '_core/mixins' as *;
$tablet: map.get($breakpoints, 'tablet') - 1;
article {
padding: var(--space-standard);
max-width: 25em;

View File

@@ -1,4 +1,8 @@
$tablet: map-get($breakpoints, 'tablet') - 1;
@use 'sass:map';
@use '_core/mixins' as *;
$tablet: map.get($breakpoints, 'tablet') - 1;
@media (max-width: $tablet), (hover: none) {
.container {

View File

@@ -1,4 +1,8 @@
$tablet: map-get($breakpoints, 'tablet') - 1;
@use 'sass:map';
@use '_core/mixins' as *;
$tablet: map.get($breakpoints, 'tablet') - 1;
nav {
display: flex;

View File

@@ -1,5 +1,3 @@
@import '_core/mixins';
:root {
--window-height: 100vh;
--nav-height: 2rem;

View File

@@ -1,12 +1,9 @@
@charset "utf-8";
@import '_core/reset';
@import '_core/font';
@import '_core/typography';
@import '_core/mixins';
@import '_variables';
@import '_core/base';
@use '_core/foundation';
@use '_variables';
@use '_core/base';
@import '_partial/nav';
@import '_partial/article';
@import '_partial/container';
@use '_partial/nav';
@use '_partial/article';
@use '_partial/container';

View File

@@ -1,10 +1,9 @@
@charset "utf-8";
@import '_partial/customCursor';
@import '_partial/stage';
@import '_partial/stageNav';
@use '_partial/customCursor';
@use '_partial/stage';
@use '_partial/stageNav';
@use '_partial/collection';
@use '_partial/gallery';
@import '_partial/collection';
@import '_partial/gallery';
@import 'node_modules/swiper/swiper.scss';
@use '../../node_modules/swiper/swiper.css';

View File

@@ -1,4 +1,3 @@
// eslint-disable-next-line sort-imports
import { Show, createMemo, createSignal, type JSX } from 'solid-js'
import type { ImageJSON } from '../resources'

View File

@@ -135,7 +135,7 @@ export default function Stage(props: {
}
const onClick: () => void = () => {
!props.isAnimating() && props.setIsOpen(true)
if (!props.isAnimating()) props.setIsOpen(true)
}
const setPosition: () => void = () => {
@@ -422,7 +422,6 @@ export default function Stage(props: {
.catch(() => {
void 0
})
// eslint-disable-next-line solid/reactivity
.then(() => {
// abort controller for cleanup
abortController?.abort()

View File

@@ -27,7 +27,8 @@ export async function getImageJSON(): Promise<ImageJSON[]> {
}
return 1
})
} catch (_) {
} catch (e) {
console.error(e)
return []
}
}