- simplify imports

- update translations
- convert image to base64 before sending to printer
- update development docs
This commit is contained in:
Amruth Pillai
2026-01-22 15:46:09 +01:00
parent 5d73998f82
commit 0bc53b9c2a
165 changed files with 13246 additions and 13465 deletions
+1 -4
View File
@@ -15,12 +15,9 @@
"menuAccent": "subtle",
"aliases": {
"components": "@/components",
"utils": "@/utils",
"utils": "@/utils/style",
"ui": "@/components/ui",
"lib": "@/utils",
"hooks": "@/hooks"
},
"registries": {
"@animate-ui": "https://animate-ui.com/r/{name}.json"
}
}
+3 -5
View File
@@ -2,7 +2,7 @@ name: reactive_resume
services:
postgres:
image: postgres:18
image: postgres:latest
restart: unless-stopped
environment:
POSTGRES_DB: postgres
@@ -24,10 +24,8 @@ services:
restart: unless-stopped
ports:
- "4000:3000"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- QUEUED=10
- QUEUED=30
- HEALTH=true
- CONCURRENT=20
- TOKEN=1234567890
@@ -95,6 +93,6 @@ services:
retries: 3
volumes:
mailpit_data:
postgres_data:
seaweedfs_data:
mailpit_data:
+3 -6
View File
@@ -2,7 +2,7 @@ name: reactive_resume
services:
postgres:
image: postgres:18
image: postgres:latest
restart: unless-stopped
environment:
POSTGRES_DB: postgres
@@ -20,15 +20,12 @@ services:
browserless:
image: ghcr.io/browserless/chromium:latest
restart: unless-stopped
ports:
- "4000:3000"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- QUEUED=10
- QUEUED=30
- HEALTH=true
- CONCURRENT=20
- TOKEN=1234567890
- EXTERNAL=http://localhost:4000
healthcheck:
test:
["CMD", "curl", "-f", "http://localhost:3000/pressure?token=1234567890"]
+5 -30
View File
@@ -66,6 +66,10 @@ This guide walks you through setting up Reactive Resume for local development. W
# Server
APP_URL=http://localhost:3000
# Printer (required for local development)
PRINTER_APP_URL=http://host.docker.internal:3000
PRINTER_ENDPOINT=ws://localhost:4000?token=1234567890
# Database
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres
@@ -79,9 +83,6 @@ This guide walks you through setting up Reactive Resume for local development. W
S3_BUCKET=reactive-resume
S3_FORCE_PATH_STYLE=true
# PDF Printer (required for local development)
PRINTER_APP_URL=http://host.docker.internal:3000
# Email (Mailpit for local development)
SMTP_HOST=localhost
SMTP_PORT=1025
@@ -135,8 +136,6 @@ Here are the most commonly used scripts during development:
|---------|-------------|
| `pnpm run db:generate` | Generate migration files from schema changes |
| `pnpm run db:migrate` | Apply pending migrations |
| `pnpm run db:push` | Push schema changes directly (dev only) |
| `pnpm run db:pull` | Pull schema from existing database |
| `pnpm run db:studio` | Open Drizzle Studio (database GUI) |
### Internationalization
@@ -149,7 +148,7 @@ Here are the most commonly used scripts during development:
| Command | Description |
|---------|-------------|
| `pnpm run docs` | Start the Mintlify docs development server |
| `pnpm run docs:dev` | Start the Mintlify docs development server |
---
@@ -323,30 +322,6 @@ pnpm run typecheck
pnpm run typecheck
```
</Accordion>
<Accordion title="Uploaded images not appearing in PDF exports">
When running in development mode (Docker services + app on host), images you upload to your resume may not appear in PDF exports. This is because the printer service runs inside Docker and cannot access URLs that resolve to `localhost` on your host machine.
**Why this happens:**
The app running on your host uploads images to SeaweedFS (S3 storage) using `localhost:8333`. When the printer tries to fetch these images to render the PDF, it cannot resolve `localhost` the same way your host machine does — they're on different networks.
**Solutions:**
1. **Run the entire stack in Docker** (recommended for testing PDF exports):
Use the production `compose.yml` instead of `compose.dev.yml` to run all services, including the app, on the same Docker network:
```bash
docker compose up -d
```
This ensures all services can communicate with each other seamlessly.
2. **Use publicly accessible images**:
If you need to test PDF exports while developing on the host, use images hosted on publicly accessible URLs (e.g., images already hosted online) instead of uploading local files. The printer service can fetch these without network issues.
</Accordion>
</AccordionGroup>
---
+2 -2
View File
@@ -4,6 +4,6 @@
"tailwind": { "entry": ["src/styles.css"] },
"project": ["src/**/*.{js,jsx,ts,tsx,mdx,css}"],
"ignoreBinaries": ["mint"],
"ignoreDependencies": ["npm-check-updates", "node-addon-api", "node-gyp"],
"ignore": ["src/schema/**/*.ts", "src/routeTree.gen.ts"]
"ignoreDependencies": ["npm-check-updates", "reflect-metadata", "node-addon-api", "node-gyp"],
"ignore": ["src/schema/**/*.ts", "src/components/**/*.{ts,tsx}", "src/routeTree.gen.ts"]
}
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+242 -242
View File
File diff suppressed because it is too large Load Diff
+14 -13
View File
@@ -22,17 +22,18 @@
"db:push": "drizzle-kit push",
"db:studio": "drizzle-kit studio",
"dev": "vite dev",
"preview": "vite preview",
"docs:dev": "cd docs && npx mint dev",
"knip": "knip",
"lingui:extract": "lingui extract --clean --overwrite",
"lint": "biome check --write .",
"start": "node -r reflect-metadata .output/server/index.mjs",
"start": "node .output/server/index.mjs",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@ai-sdk/anthropic": "^3.0.18",
"@ai-sdk/google": "^3.0.10",
"@ai-sdk/openai": "^3.0.14",
"@ai-sdk/anthropic": "^3.0.19",
"@ai-sdk/google": "^3.0.11",
"@ai-sdk/openai": "^3.0.15",
"@aws-sdk/client-s3": "^3.972.0",
"@better-auth/core": "1.5.0-beta.9",
"@better-auth/passkey": "1.5.0-beta.9",
@@ -55,18 +56,18 @@
"@sindresorhus/slugify": "^3.0.0",
"@t3-oss/env-core": "^0.13.10",
"@tanstack/react-query": "5.90.19",
"@tanstack/react-router": "^1.154.5",
"@tanstack/react-router-ssr-query": "^1.154.5",
"@tanstack/react-start": "^1.154.5",
"@tanstack/zod-adapter": "^1.154.5",
"@tanstack/react-router": "^1.154.7",
"@tanstack/react-router-ssr-query": "^1.154.7",
"@tanstack/react-start": "^1.154.7",
"@tanstack/zod-adapter": "^1.154.7",
"@tiptap/extension-highlight": "^3.16.0",
"@tiptap/extension-table": "^3.16.0",
"@tiptap/extension-text-align": "^3.16.0",
"@tiptap/pm": "^3.16.0",
"@tiptap/react": "^3.16.0",
"@tiptap/starter-kit": "^3.16.0",
"ai": "^6.0.44",
"ai-sdk-ollama": "^3.1.1",
"ai": "^6.0.46",
"ai-sdk-ollama": "^3.2.0",
"bcrypt": "^6.0.0",
"better-auth": "1.5.0-beta.9",
"class-variance-authority": "^0.7.1",
@@ -80,10 +81,10 @@
"input-otp": "^1.4.2",
"js-cookie": "^3.0.5",
"monaco-editor": "^0.55.1",
"motion": "^12.28.1",
"motion": "^12.29.0",
"nodemailer": "^7.0.12",
"pg": "^8.17.2",
"puppeteer-core": "^24.35.0",
"puppeteer-core": "^24.36.0",
"qrcode.react": "^4.2.0",
"radix-ui": "^1.4.3",
"react": "^19.2.3",
@@ -116,7 +117,7 @@
"@tailwindcss/vite": "^4.1.18",
"@types/bcrypt": "^6.0.0",
"@types/js-cookie": "^3.0.6",
"@types/node": "^25.0.9",
"@types/node": "^25.0.10",
"@types/nodemailer": "^7.0.5",
"@types/pg": "^8.16.0",
"@types/react": "^19.2.9",
+231 -247
View File
File diff suppressed because it is too large Load Diff
+1 -7
View File
@@ -1,13 +1,7 @@
import { Trans } from "@lingui/react/macro";
import { useRef } from "react";
import { useHotkeys } from "react-hotkeys-hook";
import {
Dialog,
DialogContent,
DialogDescription,
DialogHeader,
DialogTitle,
} from "@/components/animate-ui/components/radix/dialog";
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog";
import { Command, CommandEmpty, CommandInput, CommandList } from "../ui/command";
import { NavigationCommandGroup } from "./pages/navigation";
import { PreferencesCommandGroup } from "./pages/preferences";
+1 -3
View File
@@ -1,8 +1,8 @@
import { EyedropperIcon } from "@phosphor-icons/react";
import { Slider as SliderPrimitive, Slot as SlotPrimitive } from "radix-ui";
import * as React from "react";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { VisuallyHiddenInput } from "@/components/input/visually-hidden-input";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
import {
@@ -826,6 +826,4 @@ export {
ColorPickerSwatch as Swatch,
ColorPickerEyeDropper as EyeDropper,
ColorPickerInput as Input,
//
useColorPickerStore as useColorPicker,
};
+1 -1
View File
@@ -1,7 +1,7 @@
import { t } from "@lingui/core/macro";
import { GithubLogoIcon, StarIcon } from "@phosphor-icons/react";
import { useQuery } from "@tanstack/react-query";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { orpc } from "@/integrations/orpc/client";
import { CountUp } from "../animation/count-up";
+1 -1
View File
@@ -3,7 +3,7 @@ import { ProhibitIcon } from "@phosphor-icons/react";
import Fuse from "fuse.js";
import { memo, useCallback, useMemo, useState } from "react";
import { type CellComponentProps, Grid } from "react-window";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { type IconName, icons } from "@/schema/icons";
import { cn } from "@/utils/style";
import { Input } from "../ui/input";
+2 -2
View File
@@ -52,7 +52,7 @@ import { useMemo } from "react";
import { toast } from "sonner";
import { match } from "ts-pattern";
import z from "zod";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuCheckboxItem,
@@ -60,7 +60,7 @@ import {
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/animate-ui/components/radix/dropdown-menu";
} from "@/components/ui/dropdown-menu";
import { usePrompt } from "@/hooks/use-prompt";
import { isRTL } from "@/utils/locale";
import { sanitizeHtml } from "@/utils/sanitize";
+1 -1
View File
@@ -1,7 +1,7 @@
import { Trans } from "@lingui/react/macro";
import { ArrowClockwiseIcon, WarningIcon } from "@phosphor-icons/react";
import type { ErrorComponentProps } from "@tanstack/react-router";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { Alert, AlertDescription, AlertTitle } from "../ui/alert";
import { BrandIcon } from "../ui/brand-icon";
+1 -1
View File
@@ -1,7 +1,7 @@
import { Trans } from "@lingui/react/macro";
import { ArrowLeftIcon, WarningIcon } from "@phosphor-icons/react";
import { Link, type NotFoundRouteProps } from "@tanstack/react-router";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { Alert, AlertDescription, AlertTitle } from "../ui/alert";
import { BrandIcon } from "../ui/brand-icon";
+1 -1
View File
@@ -5,7 +5,7 @@ import type z from "zod";
import { levelDesignSchema } from "@/schema/resume/data";
import { Combobox, type ComboboxProps } from "../ui/combobox";
export type LevelType = z.infer<typeof levelDesignSchema>["type"];
type LevelType = z.infer<typeof levelDesignSchema>["type"];
type LevelTypeComboboxProps = Omit<ComboboxProps, "options">;
@@ -1,5 +1,5 @@
import { type HTMLMotionProps, motion } from "motion/react";
import { Slot, type WithAsChild } from "@/components/animate-ui/primitives/animate/slot";
import { Slot, type WithAsChild } from "@/components/primitives/slot";
type ButtonProps = WithAsChild<
Omit<HTMLMotionProps<"button">, "children"> & {
@@ -178,9 +178,7 @@ export function getSectionComponent(
if (visibleItems.length === 0) return null;
return (
<section
className={cn(`page-section page-section-custom page-section-${id} wrap-break-word`, sectionClassName)}
>
<section className={cn(`page-section page-section-custom page-section-${id}`, sectionClassName)}>
<h6 className="mb-1 text-(--page-primary-color)">{customSection.title}</h6>
<div
@@ -188,10 +186,7 @@ export function getSectionComponent(
style={{ gridTemplateColumns: `repeat(${customSection.columns}, 1fr)` }}
>
{visibleItems.map((item) => (
<div
key={item.id}
className={cn(`section-item section-item-${customSection.type} wrap-break-word *:space-y-1`)}
>
<div key={item.id} className={cn(`section-item section-item-${customSection.type} *:space-y-1`)}>
{renderItemByType(customSection.type, item, itemClassName)}
</div>
))}
+1 -1
View File
@@ -10,7 +10,7 @@ export function PageLink({ url, label, className }: Props) {
if (!url) return null;
return (
<a href={url} target="_blank" rel="noopener noreferrer" className={cn("block truncate", className)}>
<a href={url} target="_blank" rel="noopener noreferrer" className={cn("inline-block text-wrap", className)}>
{label || url}
</a>
);
@@ -26,7 +26,7 @@ export function PageSection<T extends SectionType>({ type, className, children }
style={{ gridTemplateColumns: `repeat(${section.columns}, 1fr)` }}
>
{items.map((item) => (
<div key={item.id} className={cn(`section-item section-item-${type} wrap-break-word *:space-y-1`)}>
<div key={item.id} className={cn(`section-item section-item-${type} *:space-y-1`)}>
{children(item)}
</div>
))}
@@ -13,7 +13,7 @@ export function PageSummary({ className }: PageSummaryProps) {
return (
<section
className={cn(
"page-section page-section-summary wrap-break-word",
"page-section page-section-summary",
section.hidden && "hidden",
section.content === "" && "hidden",
className,
+1 -1
View File
@@ -2,7 +2,7 @@ import { t } from "@lingui/core/macro";
import { MoonIcon, SunIcon } from "@phosphor-icons/react";
import { useCallback, useRef } from "react";
import { flushSync } from "react-dom";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { useTheme } from "./provider";
export function ThemeToggleButton(props: React.ComponentProps<typeof Button>) {
@@ -8,7 +8,7 @@ import {
type AccordionProps as AccordionPrimitiveProps,
AccordionTrigger as AccordionTriggerPrimitive,
type AccordionTriggerProps as AccordionTriggerPrimitiveProps,
} from "@/components/animate-ui/primitives/radix/accordion";
} from "@/components/primitives/accordion";
import { cn } from "@/utils/style";
type AccordionProps = AccordionPrimitiveProps;
@@ -20,7 +20,7 @@ function Accordion(props: AccordionProps) {
type AccordionItemProps = AccordionItemPrimitiveProps;
function AccordionItem({ className, ...props }: AccordionItemProps) {
return <AccordionItemPrimitive className={cn("border-b last:border-b-0", className)} {...props} />;
return <AccordionItemPrimitive className={cn(className)} {...props} />;
}
type AccordionTriggerProps = AccordionTriggerPrimitiveProps;
@@ -1,4 +1,3 @@
import { buttonVariants } from "@/components/animate-ui/components/buttons/button";
import {
AlertDialogAction as AlertDialogActionPrimitive,
type AlertDialogActionProps as AlertDialogActionPrimitiveProps,
@@ -21,7 +20,8 @@ import {
type AlertDialogTitleProps as AlertDialogTitlePrimitiveProps,
AlertDialogTrigger as AlertDialogTriggerPrimitive,
type AlertDialogTriggerProps as AlertDialogTriggerPrimitiveProps,
} from "@/components/animate-ui/primitives/radix/alert-dialog";
} from "@/components/primitives/alert-dialog";
import { buttonVariants } from "@/components/ui/button";
import { cn } from "@/utils/style";
type AlertDialogProps = AlertDialogPrimitiveProps;
+1 -1
View File
@@ -36,4 +36,4 @@ function Badge({
);
}
export { Badge, badgeVariants };
export { Badge };
+1 -1
View File
@@ -74,4 +74,4 @@ function ButtonGroupSeparator({
);
}
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText };
@@ -1,8 +1,5 @@
import { cva, type VariantProps } from "class-variance-authority";
import {
Button as ButtonPrimitive,
type ButtonProps as ButtonPrimitiveProps,
} from "@/components/animate-ui/primitives/buttons/button";
import { Button as ButtonPrimitive, type ButtonProps as ButtonPrimitiveProps } from "@/components/primitives/button";
import { cn } from "@/utils/style";
const buttonVariants = cva(
+1 -1
View File
@@ -1,7 +1,7 @@
import { t } from "@lingui/core/macro";
import { CaretUpDownIcon, CheckIcon } from "@phosphor-icons/react";
import * as React from "react";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "@/components/ui/command";
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
import { useControlledState } from "@/hooks/use-controlled-state";
+1 -7
View File
@@ -1,13 +1,7 @@
import { CheckIcon, MagnifyingGlassIcon } from "@phosphor-icons/react";
import { Command as CommandPrimitive } from "cmdk";
import type * as React from "react";
import {
Dialog,
DialogContent,
DialogDescription,
DialogHeader,
DialogTitle,
} from "@/components/animate-ui/components/radix/dialog";
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog";
import { InputGroup, InputGroupAddon } from "@/components/ui/input-group";
import { cn } from "@/utils/style";
@@ -18,7 +18,7 @@ import {
type DialogTitleProps as DialogTitlePrimitiveProps,
DialogTrigger as DialogTriggerPrimitive,
type DialogTriggerProps as DialogTriggerPrimitiveProps,
} from "@/components/animate-ui/primitives/radix/dialog";
} from "@/components/primitives/dialog";
import { cn } from "@/utils/style";
type DialogProps = DialogPrimitiveProps;
@@ -29,7 +29,7 @@ import {
type DropdownMenuSubTriggerProps as DropdownMenuSubTriggerPrimitiveProps,
DropdownMenuTrigger as DropdownMenuTriggerPrimitive,
type DropdownMenuTriggerProps as DropdownMenuTriggerPrimitiveProps,
} from "@/components/animate-ui/primitives/radix/dropdown-menu";
} from "@/components/primitives/dropdown-menu";
import { cn } from "@/utils/style";
type DropdownMenuProps = DropdownMenuPrimitiveProps;
+1 -1
View File
@@ -152,4 +152,4 @@ function FormMessage({ className, ...props }: React.ComponentProps<"p">) {
);
}
export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };
export { Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };
+1 -1
View File
@@ -1,6 +1,6 @@
import { cva, type VariantProps } from "class-variance-authority";
import type * as React from "react";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Textarea } from "@/components/ui/textarea";
import { cn } from "@/utils/style";
+1 -1
View File
@@ -1,7 +1,7 @@
import { t } from "@lingui/core/macro";
import { CaretUpDownIcon, CheckIcon } from "@phosphor-icons/react";
import * as React from "react";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import {
Command,
CommandEmpty,
+1 -1
View File
@@ -1,7 +1,7 @@
import { XIcon } from "@phosphor-icons/react";
import { Dialog as SheetPrimitive } from "radix-ui";
import type * as React from "react";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { cn } from "@/utils/style";
function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
+1 -1
View File
@@ -2,7 +2,7 @@ import { SidebarSimpleIcon } from "@phosphor-icons/react";
import { cva, type VariantProps } from "class-variance-authority";
import { Slot as SlotPrimitive } from "radix-ui";
import * as React from "react";
import { Button } from "@/components/animate-ui/components/buttons/button";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Separator } from "@/components/ui/separator";
import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "@/components/ui/sheet";
@@ -5,7 +5,7 @@ import {
Switch as SwitchPrimitive,
type SwitchProps as SwitchPrimitiveProps,
SwitchThumb as SwitchThumbPrimitive,
} from "@/components/animate-ui/primitives/radix/switch";
} from "@/components/primitives/switch";
import { cn } from "@/utils/style";
type SwitchProps = SwitchPrimitiveProps & {
+1 -1
View File
@@ -35,4 +35,4 @@ function Toggle({
);
}
export { Toggle, toggleVariants };
export { Toggle };
+2 -2
View File
@@ -4,6 +4,7 @@ import { Trans } from "@lingui/react/macro";
import { PaletteIcon, SignOutIcon, TranslateIcon } from "@phosphor-icons/react";
import { useRouter } from "@tanstack/react-router";
import { toast } from "sonner";
import { useTheme } from "@/components/theme/provider";
import {
DropdownMenu,
DropdownMenuContent,
@@ -16,8 +17,7 @@ import {
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/components/animate-ui/components/radix/dropdown-menu";
import { useTheme } from "@/components/theme/provider";
} from "@/components/ui/dropdown-menu";
import { authClient } from "@/integrations/auth/client";
import type { AuthSession } from "@/integrations/auth/types";
import { isLocale, loadLocale, localeMap, setLocaleServerFn } from "@/utils/locale";
+2 -8
View File
@@ -8,15 +8,9 @@ import { useForm } from "react-hook-form";
import { toast } from "sonner";
import { useCopyToClipboard } from "usehooks-ts";
import z from "zod";
import { Button } from "@/components/animate-ui/components/buttons/button";
import {
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/animate-ui/components/radix/dialog";
import { Button } from "@/components/ui/button";
import { Combobox } from "@/components/ui/combobox";
import { DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog";
import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from "@/components/ui/input-group";
+2 -8
View File
@@ -7,14 +7,8 @@ import { useForm } from "react-hook-form";
import { toast } from "sonner";
import { useToggle } from "usehooks-ts";
import z from "zod";
import { Button } from "@/components/animate-ui/components/buttons/button";
import {
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/animate-ui/components/radix/dialog";
import { Button } from "@/components/ui/button";
import { DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { authClient } from "@/integrations/auth/client";
+2 -8
View File
@@ -7,14 +7,8 @@ import { useForm } from "react-hook-form";
import { toast } from "sonner";
import { useToggle } from "usehooks-ts";
import z from "zod";
import { Button } from "@/components/animate-ui/components/buttons/button";
import {
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/animate-ui/components/radix/dialog";
import { Button } from "@/components/ui/button";
import { DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { authClient } from "@/integrations/auth/client";

Some files were not shown because too many files have changed in this diff Show More