mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-08-29 02:45:39 -04:00
Migrate the entire monorepo from Biome 2.4.7 to oxlint 1.56.0 (linter) and oxfmt 0.41.0 (formatter) for faster lint/format and broader rule coverage. - Add `.oxlintrc.json` with React, TypeScript, unicorn, import plugins and correctness/suspicious categories - Add `.oxfmtrc.json` with 2-space indent, import sorting, and Tailwind class sorting (all 30+ custom className attributes migrated) - Add `docs/.oxlintrc.json` and `docs/.oxfmtrc.json` with Next.js plugin - Update all 12 workspace package.json scripts: `oxlint`, `oxfmt`, `oxfmt --check` - Add `format:check` turbo task and CI step - Update VS Code settings/extensions to use `oxc.oxc-vscode` - Update CI path triggers from `biome.json` to new config files - Remove all `biome-ignore` comments and fix shadowed variables - Delete `biome.json` and `docs/biome.json` - Reformat entire codebase with oxfmt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { Trans } from "@lingui/react/macro";
|
|
import { IconSettings } from "@tabler/icons-react";
|
|
import { motion } from "motion/react";
|
|
import { Children, type ReactNode } from "react";
|
|
|
|
const sectionVariants = {
|
|
hidden: { opacity: 0, y: 20 },
|
|
visible: {
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: { type: "spring" as const, stiffness: 200, damping: 24 },
|
|
},
|
|
};
|
|
|
|
export function SettingsShell({ children, footer }: { children: ReactNode; footer?: ReactNode }) {
|
|
return (
|
|
<motion.div
|
|
className="mx-auto max-w-2xl space-y-8"
|
|
initial="hidden"
|
|
animate="visible"
|
|
variants={{
|
|
hidden: {},
|
|
visible: { transition: { staggerChildren: 0.15 } },
|
|
}}
|
|
>
|
|
<motion.div variants={sectionVariants}>
|
|
<div className="flex items-center gap-2">
|
|
<IconSettings aria-hidden={true} className="text-primary size-5" />
|
|
<h1 className="font-display text-3xl tracking-tight text-balance">
|
|
<Trans>Settings</Trans>
|
|
</h1>
|
|
</div>
|
|
<p className="text-muted-foreground mt-1 text-sm">
|
|
<Trans>Manage your account and preferences</Trans>
|
|
</p>
|
|
</motion.div>
|
|
|
|
{Children.map(children, (child) => (
|
|
<motion.div variants={sectionVariants}>{child}</motion.div>
|
|
))}
|
|
|
|
{footer && <motion.div variants={sectionVariants}>{footer}</motion.div>}
|
|
</motion.div>
|
|
);
|
|
}
|