learn and share notes on atproto (wip) 🦉 malfestio.stormlightlabs.org/
readability solid axum atproto srs
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: $ path aliases

+56 -44
+10 -10
web/src/App.tsx
··· 1 + import { AppLayout } from "$components/layout/AppLayout"; 2 + import { authStore } from "$lib/store"; 3 + import DeckNew from "$pages/DeckNew"; 4 + import DeckView from "$pages/DeckView"; 5 + import Home from "$pages/Home"; 6 + import Import from "$pages/Import"; 7 + import Landing from "$pages/Landing"; 8 + import Login from "$pages/Login"; 9 + import NoteNew from "$pages/NoteNew"; 10 + import NotFound from "$pages/NotFound"; 1 11 import { Route, Router } from "@solidjs/router"; 2 12 import type { Component } from "solid-js"; 3 13 import { Show } from "solid-js"; 4 - import { AppLayout } from "./components/layout/AppLayout"; 5 - import { authStore } from "./lib/store"; 6 - import DeckNew from "./pages/DeckNew"; 7 - import DeckView from "./pages/DeckView"; 8 - import Home from "./pages/Home"; 9 - import Import from "./pages/Import"; 10 - import Landing from "./pages/Landing"; 11 - import Login from "./pages/Login"; 12 - import NoteNew from "./pages/NoteNew"; 13 - import NotFound from "./pages/NotFound"; 14 14 15 15 const ProtectedRoute: Component<{ component: Component }> = (props) => { 16 16 return (
+1 -1
web/src/components/CardEditor.tsx
··· 1 + import { Button } from "$ui/Button"; 1 2 import { createEffect, createSignal, Show } from "solid-js"; 2 - import { Button } from "./ui/Button"; 3 3 4 4 type CardEditorProps = { 5 5 front?: string;
+2 -2
web/src/components/DeckEditor.test.tsx
··· 1 + import { api } from "$lib/api"; 1 2 import { cleanup, fireEvent, render, screen } from "@solidjs/testing-library"; 2 3 import { afterEach, describe, expect, it, vi } from "vitest"; 3 - import { api } from "../lib/api"; 4 4 import { DeckEditor } from "./DeckEditor"; 5 5 6 6 vi.mock( 7 - "../lib/api", 7 + "$lib/api", 8 8 () => ({ api: { post: vi.fn().mockResolvedValue({ ok: true, json: () => Promise.resolve({}) }) } }), 9 9 ); 10 10
+4 -4
web/src/components/DeckEditor.tsx
··· 1 + import { api } from "$lib/api"; 2 + import type { Card, CreateDeckPayload, Visibility } from "$lib/store"; 3 + import { toast } from "$lib/toast"; 4 + import { Button } from "$ui/Button"; 1 5 import { createSignal, For, Show } from "solid-js"; 2 - import { api } from "../lib/api"; 3 - import type { Card, CreateDeckPayload, Visibility } from "../lib/store"; 4 - import { toast } from "../lib/toast"; 5 6 import { CardEditor } from "./CardEditor"; 6 - import { Button } from "./ui/Button"; 7 7 8 8 export function DeckEditor(props: { onSave?: (deck: CreateDeckPayload) => void }) { 9 9 const [title, setTitle] = createSignal("");
+3 -3
web/src/components/NoteEditor.tsx
··· 1 1 /* eslint-disable solid/no-innerhtml */ 2 + import { api } from "$lib/api"; 3 + import { toast } from "$lib/toast"; 4 + import { Button } from "$ui/Button"; 2 5 import rehypeExternalLinks from "rehype-external-links"; 3 6 import rehypeSanitize from "rehype-sanitize"; 4 7 import rehypeStringify from "rehype-stringify"; ··· 6 9 import remarkRehype from "remark-rehype"; 7 10 import { createEffect, createSignal, Show } from "solid-js"; 8 11 import { unified } from "unified"; 9 - import { api } from "../lib/api"; 10 - import { toast } from "../lib/toast"; 11 - import { Button } from "./ui/Button"; 12 12 13 13 type NoteEditorProps = { noteId?: string; initialTitle?: string; initialContent?: string }; 14 14
+1 -1
web/src/components/layout/AppLayout.tsx
··· 1 + import { Toaster } from "$ui/Toast"; 1 2 import type { Component, JSX } from "solid-js"; 2 - import { Toaster } from "../ui/Toast"; 3 3 import { Header } from "./Header"; 4 4 5 5 type AppLayoutProps = { children?: JSX.Element };
+2 -2
web/src/components/layout/Header.tsx
··· 1 + import { authStore } from "$lib/store"; 2 + import { Avatar } from "$ui/Avatar"; 1 3 import { A } from "@solidjs/router"; 2 4 import { type Component, Show } from "solid-js"; 3 - import { authStore } from "../../lib/store"; 4 - import { Avatar } from "../ui/Avatar"; 5 5 6 6 const Login: Component = () => ( 7 7 <A href="/login" class="px-4 py-2 bg-white text-gray-900 text-sm font-medium hover:bg-gray-100 transition-colors">
-4
web/src/lib/animations.ts
··· 1 - /** 2 - * Animation presets for solid-motionone 3 - * @module animations 4 - */ 5 1 import type { Options as MotionOptions } from "solid-motionone"; 6 2 7 3 /** Spring animation config for natural bounce */
+4 -4
web/src/pages/DeckNew.tsx
··· 1 + import { DeckEditor } from "$components/DeckEditor"; 2 + import { api } from "$lib/api"; 3 + import type { Card, CreateDeckPayload } from "$lib/store"; 4 + import { toast } from "$lib/toast"; 1 5 import { useNavigate } from "@solidjs/router"; 2 6 import type { Component } from "solid-js"; 3 - import { DeckEditor } from "../components/DeckEditor"; 4 - import { api } from "../lib/api"; 5 - import type { Card, CreateDeckPayload } from "../lib/store"; 6 - import { toast } from "../lib/toast"; 7 7 8 8 const DeckNew: Component = () => { 9 9 const navigate = useNavigate();
+2 -2
web/src/pages/DeckView.test.tsx
··· 1 + import { api } from "$lib/api"; 1 2 import { cleanup, render, screen, waitFor } from "@solidjs/testing-library"; 2 3 import { JSX } from "solid-js"; 3 4 import { afterEach, describe, expect, it, vi } from "vitest"; 4 - import { api } from "../lib/api"; 5 5 import DeckView from "./DeckView"; 6 6 7 - vi.mock("../lib/api", () => ({ api: { get: vi.fn() } })); 7 + vi.mock("$lib/api", () => ({ api: { get: vi.fn() } })); 8 8 9 9 vi.mock( 10 10 "@solidjs/router",
+2 -2
web/src/pages/DeckView.tsx
··· 1 + import { api } from "$lib/api"; 2 + import type { Visibility } from "$lib/store"; 1 3 import { A, useParams } from "@solidjs/router"; 2 4 import type { Component } from "solid-js"; 3 5 import { createResource, For, Show } from "solid-js"; 4 - import { api } from "../lib/api"; 5 - import type { Visibility } from "../lib/store"; 6 6 7 7 type Deck = { 8 8 id: string;
+2 -2
web/src/pages/Home.tsx
··· 1 + import { api } from "$lib/api"; 2 + import type { Visibility } from "$lib/store"; 1 3 import { A } from "@solidjs/router"; 2 4 import type { Component } from "solid-js"; 3 5 import { createResource, For, Show } from "solid-js"; 4 - import { api } from "../lib/api"; 5 - import type { Visibility } from "../lib/store"; 6 6 7 7 type Deck = { 8 8 id: string;
+4 -4
web/src/pages/Import.tsx
··· 1 + import { NoteEditor } from "$components/NoteEditor"; 2 + import { api } from "$lib/api"; 3 + import { toast } from "$lib/toast"; 4 + import { Button } from "$ui/Button"; 1 5 import { createSignal, Show } from "solid-js"; 2 - import { NoteEditor } from "../components/NoteEditor"; 3 - import { Button } from "../components/ui/Button"; 4 - import { api } from "../lib/api"; 5 - import { toast } from "../lib/toast"; 6 6 7 7 export default function Import() { 8 8 const [url, setUrl] = createSignal("");
+2 -2
web/src/pages/Login.tsx
··· 1 + import { api } from "$lib/api"; 2 + import { authStore } from "$lib/store"; 1 3 import { useNavigate } from "@solidjs/router"; 2 4 import type { Component } from "solid-js"; 3 5 import { createSignal } from "solid-js"; 4 - import { api } from "../lib/api"; 5 - import { authStore } from "../lib/store"; 6 6 7 7 const Login: Component = () => { 8 8 const [identifier, setIdentifier] = createSignal("");
+1 -1
web/src/pages/NoteNew.tsx
··· 1 - import { NoteEditor } from "../components/NoteEditor"; 1 + import { NoteEditor } from "$components/NoteEditor"; 2 2 3 3 const NoteNew = () => { 4 4 return (
+7
web/tsconfig.app.json
··· 1 1 { 2 2 "compilerOptions": { 3 + "baseUrl": ".", 4 + "paths": { 5 + "$lib/*": ["src/lib/*"], 6 + "$pages/*": ["src/pages/*"], 7 + "$components/*": ["src/components/*"], 8 + "$ui/*": ["src/components/ui/*"] 9 + }, 3 10 "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 11 "target": "ES2022", 5 12 "useDefineForClassFields": true,
+9
web/vite.config.ts
··· 1 1 import tailwindcss from "@tailwindcss/vite"; 2 + import path from "path"; 2 3 import solid from "vite-plugin-solid"; 3 4 import { defineConfig } from "vitest/config"; 4 5 5 6 export default defineConfig({ 6 7 plugins: [solid(), tailwindcss()], 8 + resolve: { 9 + alias: { 10 + $lib: path.resolve(__dirname, "src/lib"), 11 + $pages: path.resolve(__dirname, "src/pages"), 12 + $components: path.resolve(__dirname, "src/components"), 13 + $ui: path.resolve(__dirname, "src/components/ui"), 14 + }, 15 + }, 7 16 server: { proxy: { "/api": { target: "http://localhost:8080", changeOrigin: true } } }, 8 17 test: { 9 18 environment: "jsdom",