mirror of
https://github.com/Sped0n/bridget.git
synced 2026-04-14 10:09:31 -07:00
* 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>
91 lines
2.3 KiB
TypeScript
91 lines
2.3 KiB
TypeScript
import { Show, createMemo, createSignal, type JSX } from 'solid-js'
|
|
|
|
import type { ImageJSON } from '../resources'
|
|
import type { Vector } from '../utils'
|
|
|
|
import CustomCursor from './customCursor'
|
|
import Nav from './nav'
|
|
import Stage from './stage'
|
|
import StageNav from './stageNav'
|
|
|
|
/**
|
|
* interfaces and types
|
|
*/
|
|
|
|
export interface DesktopImage extends HTMLImageElement {
|
|
dataset: {
|
|
hiUrl: string
|
|
hiImgH: string
|
|
hiImgW: string
|
|
loUrl: string
|
|
loImgH: string
|
|
loImgW: string
|
|
}
|
|
}
|
|
|
|
export interface HistoryItem {
|
|
i: number
|
|
x: number
|
|
y: number
|
|
}
|
|
|
|
/**
|
|
* components
|
|
*/
|
|
|
|
export default function Desktop(props: {
|
|
children?: JSX.Element
|
|
ijs: ImageJSON[]
|
|
prevText: string
|
|
closeText: string
|
|
nextText: string
|
|
loadingText: string
|
|
}): JSX.Element {
|
|
const [cordHist, setCordHist] = createSignal<HistoryItem[]>([])
|
|
const [isLoading, setIsLoading] = createSignal(false)
|
|
const [isOpen, setIsOpen] = createSignal(false)
|
|
const [isAnimating, setIsAnimating] = createSignal(false)
|
|
const [hoverText, setHoverText] = createSignal('')
|
|
const [navVector, setNavVector] = createSignal<Vector>('none')
|
|
|
|
const active = createMemo(() => isOpen() && !isAnimating())
|
|
const cursorText = createMemo(() => (isLoading() ? props.loadingText : hoverText()))
|
|
|
|
return (
|
|
<>
|
|
<Nav />
|
|
<Show when={props.ijs.length > 0}>
|
|
<Stage
|
|
ijs={props.ijs}
|
|
setIsLoading={setIsLoading}
|
|
isOpen={isOpen}
|
|
setIsOpen={setIsOpen}
|
|
isAnimating={isAnimating}
|
|
setIsAnimating={setIsAnimating}
|
|
cordHist={cordHist}
|
|
setCordHist={setCordHist}
|
|
navVector={navVector}
|
|
setNavVector={setNavVector}
|
|
/>
|
|
<Show when={isOpen()}>
|
|
<CustomCursor cursorText={cursorText} active={active} isOpen={isOpen} />
|
|
<StageNav
|
|
prevText={props.prevText}
|
|
closeText={props.closeText}
|
|
nextText={props.nextText}
|
|
loadingText={props.loadingText}
|
|
active={active}
|
|
isAnimating={isAnimating}
|
|
setCordHist={setCordHist}
|
|
isOpen={isOpen}
|
|
setIsOpen={setIsOpen}
|
|
setHoverText={setHoverText}
|
|
navVector={navVector}
|
|
setNavVector={setNavVector}
|
|
/>
|
|
</Show>
|
|
</Show>
|
|
</>
|
|
)
|
|
}
|