create-newt-app 0.33.3 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import { existsSync, promises } from "fs";
11
11
  import path from "path";
12
12
  import https from "node:https";
13
13
  //#region package.json
14
- var version = "0.33.3";
14
+ var version = "0.34.0";
15
15
  var engines = { "node": ">=24.0.0" };
16
16
  //#endregion
17
17
  //#region src/templates/root/index.ts
@@ -31,7 +31,8 @@ const root$2 = { templates: [
31
31
  "db:migrate": "turbo run migrate",
32
32
  "db:generate": "turbo run generate"
33
33
  },
34
- "devDependencies": {
34
+ "devDependencies": {<% if (shadcn && linter === "oxc") { %>
35
+ "@shadcn/lint": "<%= versions["@shadcn/lint"] %>",<% } %>
35
36
  "@types/node": "<%= versions["@types/node"] %>",
36
37
  "turbo": "<%= versions.turbo %>",
37
38
  "typescript": "<%= versions.typescript %>"
@@ -219,7 +220,9 @@ BETTER_AUTH_SECRET=generate-with-openssl-rand-base64-32
219
220
  # This is NOT the Next.js you know
220
221
 
221
222
  This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in \`node_modules/next/dist/docs/\` before writing any code. Heed deprecation notices.
222
- <!-- END:nextjs-agent-rules -->`
223
+ <!-- END:nextjs-agent-rules --><% if (shadcn) { %>
224
+
225
+ After making changes, run \`pnpm lint:check\` and fix all errors.<% } %>`
223
226
  },
224
227
  {
225
228
  filename: "CLAUDE.md",
@@ -458,7 +461,7 @@ export default function Home() {
458
461
  const { data: session, isPending } = authClient.useSession();
459
462
 
460
463
  const { data: hello } = useQuery({
461
- queryKey: ['hello'],
464
+ queryKey: ['hello', session?.user.id],
462
465
  queryFn: () => fetch('/api/hello').then((r) => r.json()),
463
466
  });
464
467
 
@@ -1495,6 +1498,7 @@ const versions = {
1495
1498
  "@nestjs/testing": "^11.0.1",
1496
1499
  "@next/eslint-plugin-next": "^16.3.4",
1497
1500
  "@oxlint/plugins": "^1.74.0",
1501
+ "@shadcn/lint": "^0.1.0",
1498
1502
  "@shadcn/react": "^0.2.1",
1499
1503
  "@stylexjs/babel-plugin": "0.19.0",
1500
1504
  "@stylexjs/postcss-plugin": "0.19.0",
@@ -1520,6 +1524,7 @@ const versions = {
1520
1524
  "class-variance-authority": "^0.7.1",
1521
1525
  clsx: "^2.1.1",
1522
1526
  cmdk: "^1.1.1",
1527
+ cn: "^0.3.0",
1523
1528
  "date-fns": "^4.2.1",
1524
1529
  dotenv: "^17.3.1",
1525
1530
  "dotenv-cli": "^11.0.0",
@@ -1538,7 +1543,7 @@ const versions = {
1538
1543
  next: "16.3.4",
1539
1544
  "next-themes": "^0.4.6",
1540
1545
  oxfmt: "^0.59.0",
1541
- oxlint: "^1.74.0",
1546
+ oxlint: "^1.80.0",
1542
1547
  pg: "^8.14.1",
1543
1548
  prettier: "^3.7.4",
1544
1549
  react: "^19.2.4",
@@ -1589,8 +1594,8 @@ const shadcnUi = {
1589
1594
  "@shadcn/react": "<%= versions["@shadcn/react"] %>",
1590
1595
  "shadcn": "<%= versions.shadcn %>",
1591
1596
  "class-variance-authority": "<%= versions["class-variance-authority"] %>",
1592
- "clsx": "<%= versions.clsx %>",
1593
1597
  "cmdk": "<%= versions.cmdk %>",
1598
+ "cn": "<%= versions.cn %>",
1594
1599
  "date-fns": "<%= versions["date-fns"] %>",
1595
1600
  "embla-carousel-react": "<%= versions["embla-carousel-react"] %>",
1596
1601
  "input-otp": "<%= versions["input-otp"] %>",
@@ -1600,7 +1605,6 @@ const shadcnUi = {
1600
1605
  "react-resizable-panels": "<%= versions["react-resizable-panels"] %>",
1601
1606
  "recharts": "<%= versions.recharts %>",
1602
1607
  "sonner": "<%= versions.sonner %>",
1603
- "tailwind-merge": "<%= versions["tailwind-merge"] %>",
1604
1608
  "tw-animate-css": "<%= versions["tw-animate-css"] %>"
1605
1609
  },
1606
1610
  "peerDependencies": {
@@ -1621,12 +1625,7 @@ const shadcnUi = {
1621
1625
  },
1622
1626
  {
1623
1627
  filename: "packages/ui/src/lib/utils.ts",
1624
- template: `import { clsx, type ClassValue } from "clsx"
1625
- import { twMerge } from "tailwind-merge"
1626
-
1627
- export function cn(...inputs: ClassValue[]) {
1628
- return twMerge(clsx(inputs))
1629
- }
1628
+ template: `export { cn } from "cn"
1630
1629
  `
1631
1630
  },
1632
1631
  {
@@ -1818,7 +1817,10 @@ export default config;`
1818
1817
  "extends": "@<%= projectName %>/typescript-config/react-library.json",
1819
1818
  "compilerOptions": {
1820
1819
  "outDir": "dist",
1821
- "strictNullChecks": true
1820
+ "strictNullChecks": true,
1821
+ "paths": {
1822
+ "@<%= projectName %>/ui/*": ["./src/*"]
1823
+ }
1822
1824
  },
1823
1825
  "include": ["src"],
1824
1826
  "exclude": ["node_modules", "dist"]
@@ -1934,13 +1936,13 @@ import { Button } from '@<%= projectName %>/ui/button';
1934
1936
  import { Link } from '@<%= projectName %>/ui/link';
1935
1937
  import { Logo } from '@<%= projectName %>/ui/logo';
1936
1938
  import { ModeToggle } from '@<%= projectName %>/ui/mode-toggle';
1937
- import { Card, CardContent, CardHeader, CardTitle } from '@<%= projectName %>/ui/card';
1939
+ import { Card, CardContent, CardHeader } from '@<%= projectName %>/ui/card';
1938
1940
 
1939
1941
  export default function Home() {
1940
1942
  const { data: session, isPending } = authClient.useSession();
1941
1943
 
1942
1944
  const { data: hello } = useQuery({
1943
- queryKey: ['hello'],
1945
+ queryKey: ['hello', session?.user.id],
1944
1946
  queryFn: () => fetch('/api/hello').then((r) => r.json()),
1945
1947
  });
1946
1948
 
@@ -1955,7 +1957,7 @@ export default function Home() {
1955
1957
  </div>
1956
1958
 
1957
1959
  <div className="flex items-center gap-3 py-2">
1958
- <Logo className="w-10 h-auto text-foreground" />
1960
+ <Logo className="w-10 h-auto" />
1959
1961
  <div>
1960
1962
  <h1 className="text-4xl font-black tracking-tight"><%= projectName %></h1>
1961
1963
  <p className="text-sm text-muted-foreground tracking-widest uppercase">
@@ -1966,9 +1968,9 @@ export default function Home() {
1966
1968
 
1967
1969
  <Card>
1968
1970
  <CardHeader>
1969
- <CardTitle className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
1971
+ <p className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
1970
1972
  next.js
1971
- </CardTitle>
1973
+ </p>
1972
1974
  </CardHeader>
1973
1975
  <CardContent>
1974
1976
  <p className="font-mono text-sm text-muted-foreground">apps/web/app/layout.tsx</p>
@@ -1978,9 +1980,9 @@ export default function Home() {
1978
1980
 
1979
1981
  <Card>
1980
1982
  <CardHeader>
1981
- <CardTitle className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
1983
+ <p className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
1982
1984
  nest.js
1983
- </CardTitle>
1985
+ </p>
1984
1986
  </CardHeader>
1985
1987
  <CardContent>
1986
1988
  <p className="font-mono text-sm text-muted-foreground">GET /api/hello</p>
@@ -1992,9 +1994,9 @@ export default function Home() {
1992
1994
 
1993
1995
  <Card>
1994
1996
  <CardHeader>
1995
- <CardTitle className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
1997
+ <p className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
1996
1998
  better-auth
1997
- </CardTitle>
1999
+ </p>
1998
2000
  </CardHeader>
1999
2001
  <CardContent>
2000
2002
  {isPending ? (
@@ -2183,8 +2185,7 @@ export function AuthForm() {
2183
2185
  {
2184
2186
  filename: "packages/ui/src/components/accordion.tsx",
2185
2187
  template: `import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion"
2186
-
2187
- import { cn } from "@<%= projectName %>/ui/lib/utils"
2188
+ import { cn } from "cn"
2188
2189
  import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"
2189
2190
 
2190
2191
  function Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {
@@ -2262,8 +2263,8 @@ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
2262
2263
 
2263
2264
  import * as React from "react"
2264
2265
  import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog"
2266
+ import { cn } from "cn"
2265
2267
 
2266
- import { cn } from "@<%= projectName %>/ui/lib/utils"
2267
2268
  import { Button } from "@<%= projectName %>/ui/components/button"
2268
2269
 
2269
2270
  function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {
@@ -2451,8 +2452,7 @@ export {
2451
2452
  filename: "packages/ui/src/components/alert.tsx",
2452
2453
  template: `import * as React from "react"
2453
2454
  import { cva, type VariantProps } from "class-variance-authority"
2454
-
2455
- import { cn } from "@<%= projectName %>/ui/lib/utils"
2455
+ import { cn } from "cn"
2456
2456
 
2457
2457
  const alertVariants = cva(
2458
2458
  "group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",
@@ -2529,7 +2529,7 @@ export { Alert, AlertTitle, AlertDescription, AlertAction }
2529
2529
  },
2530
2530
  {
2531
2531
  filename: "packages/ui/src/components/aspect-ratio.tsx",
2532
- template: `import { cn } from "@<%= projectName %>/ui/lib/utils"
2532
+ template: `import { cn } from "cn"
2533
2533
 
2534
2534
  function AspectRatio({
2535
2535
  ratio,
@@ -2559,8 +2559,7 @@ export { AspectRatio }
2559
2559
 
2560
2560
  import * as React from "react"
2561
2561
  import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar"
2562
-
2563
- import { cn } from "@<%= projectName %>/ui/lib/utils"
2562
+ import { cn } from "cn"
2564
2563
 
2565
2564
  function Avatar({
2566
2565
  className,
@@ -2671,8 +2670,7 @@ export {
2671
2670
  template: `import { mergeProps } from "@base-ui/react/merge-props"
2672
2671
  import { useRender } from "@base-ui/react/use-render"
2673
2672
  import { cva, type VariantProps } from "class-variance-authority"
2674
-
2675
- import { cn } from "@<%= projectName %>/ui/lib/utils"
2673
+ import { cn } from "cn"
2676
2674
 
2677
2675
  const badgeVariants = cva(
2678
2676
  "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
@@ -2727,8 +2725,7 @@ export { Badge, badgeVariants }
2727
2725
  template: `import * as React from "react"
2728
2726
  import { mergeProps } from "@base-ui/react/merge-props"
2729
2727
  import { useRender } from "@base-ui/react/use-render"
2730
-
2731
- import { cn } from "@<%= projectName %>/ui/lib/utils"
2728
+ import { cn } from "cn"
2732
2729
  import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
2733
2730
 
2734
2731
  function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) {
@@ -2855,8 +2852,7 @@ export {
2855
2852
  filename: "packages/ui/src/components/button.tsx",
2856
2853
  template: `import { Button as ButtonPrimitive } from "@base-ui/react/button"
2857
2854
  import { cva, type VariantProps } from "class-variance-authority"
2858
-
2859
- import { cn } from "@<%= projectName %>/ui/lib/utils"
2855
+ import { cn } from "cn"
2860
2856
 
2861
2857
  const buttonVariants = cva(
2862
2858
  "group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
@@ -2918,6 +2914,7 @@ export { Button, buttonVariants }
2918
2914
  template: `"use client"
2919
2915
 
2920
2916
  import * as React from "react"
2917
+ import { cn } from "cn"
2921
2918
  import {
2922
2919
  DayPicker,
2923
2920
  getDefaultClassNames,
@@ -2925,7 +2922,6 @@ import {
2925
2922
  type Locale,
2926
2923
  } from "react-day-picker"
2927
2924
 
2928
- import { cn } from "@<%= projectName %>/ui/lib/utils"
2929
2925
  import { Button, buttonVariants } from "@<%= projectName %>/ui/components/button"
2930
2926
  import { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from "lucide-react"
2931
2927
 
@@ -3141,8 +3137,7 @@ export { Calendar, CalendarDayButton }
3141
3137
  {
3142
3138
  filename: "packages/ui/src/components/card.tsx",
3143
3139
  template: `import * as React from "react"
3144
-
3145
- import { cn } from "@<%= projectName %>/ui/lib/utils"
3140
+ import { cn } from "cn"
3146
3141
 
3147
3142
  function Card({
3148
3143
  className,
@@ -3250,11 +3245,11 @@ export {
3250
3245
  template: `"use client"
3251
3246
 
3252
3247
  import * as React from "react"
3248
+ import { cn } from "cn"
3253
3249
  import useEmblaCarousel, {
3254
3250
  type UseEmblaCarouselType,
3255
3251
  } from "embla-carousel-react"
3256
3252
 
3257
- import { cn } from "@<%= projectName %>/ui/lib/utils"
3258
3253
  import { Button } from "@<%= projectName %>/ui/components/button"
3259
3254
  import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react"
3260
3255
 
@@ -3496,11 +3491,10 @@ export {
3496
3491
  template: `"use client"
3497
3492
 
3498
3493
  import * as React from "react"
3494
+ import { cn } from "cn"
3499
3495
  import * as RechartsPrimitive from "recharts"
3500
3496
  import type { TooltipValueType } from "recharts"
3501
3497
 
3502
- import { cn } from "@<%= projectName %>/ui/lib/utils"
3503
-
3504
3498
  // Format: { THEME_NAME: CSS_SELECTOR }
3505
3499
  const THEMES = { light: "", dark: ".dark" } as const
3506
3500
 
@@ -3873,8 +3867,7 @@ export {
3873
3867
  template: `"use client"
3874
3868
 
3875
3869
  import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox"
3876
-
3877
- import { cn } from "@<%= projectName %>/ui/lib/utils"
3870
+ import { cn } from "cn"
3878
3871
  import { CheckIcon } from "lucide-react"
3879
3872
 
3880
3873
  function Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {
@@ -3932,8 +3925,8 @@ export { Collapsible, CollapsibleTrigger, CollapsibleContent }
3932
3925
 
3933
3926
  import * as React from "react"
3934
3927
  import { Command as CommandPrimitive } from "cmdk"
3928
+ import { cn } from "cn"
3935
3929
 
3936
- import { cn } from "@<%= projectName %>/ui/lib/utils"
3937
3930
  import {
3938
3931
  Dialog,
3939
3932
  DialogContent,
@@ -4132,8 +4125,8 @@ export {
4132
4125
 
4133
4126
  import * as React from "react"
4134
4127
  import { Combobox as ComboboxPrimitive } from "@base-ui/react"
4128
+ import { cn } from "cn"
4135
4129
 
4136
- import { cn } from "@<%= projectName %>/ui/lib/utils"
4137
4130
  import { Button } from "@<%= projectName %>/ui/components/button"
4138
4131
  import {
4139
4132
  InputGroup,
@@ -4433,8 +4426,7 @@ export {
4433
4426
 
4434
4427
  import * as React from "react"
4435
4428
  import { ContextMenu as ContextMenuPrimitive } from "@base-ui/react/context-menu"
4436
-
4437
- import { cn } from "@<%= projectName %>/ui/lib/utils"
4429
+ import { cn } from "cn"
4438
4430
  import { ChevronRightIcon, CheckIcon } from "lucide-react"
4439
4431
 
4440
4432
  function ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {
@@ -4708,8 +4700,8 @@ export {
4708
4700
 
4709
4701
  import * as React from "react"
4710
4702
  import { Dialog as DialogPrimitive } from "@base-ui/react/dialog"
4703
+ import { cn } from "cn"
4711
4704
 
4712
- import { cn } from "@<%= projectName %>/ui/lib/utils"
4713
4705
  import { Button } from "@<%= projectName %>/ui/components/button"
4714
4706
  import { XIcon } from "lucide-react"
4715
4707
 
@@ -4882,8 +4874,7 @@ export {
4882
4874
 
4883
4875
  import * as React from "react"
4884
4876
  import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer"
4885
-
4886
- import { cn } from "@<%= projectName %>/ui/lib/utils"
4877
+ import { cn } from "cn"
4887
4878
 
4888
4879
  type DrawerContextProps = {
4889
4880
  hasSnapPoints: boolean
@@ -5114,8 +5105,7 @@ export {
5114
5105
 
5115
5106
  import * as React from "react"
5116
5107
  import { Menu as MenuPrimitive } from "@base-ui/react/menu"
5117
-
5118
- import { cn } from "@<%= projectName %>/ui/lib/utils"
5108
+ import { cn } from "cn"
5119
5109
  import { ChevronRightIcon, CheckIcon } from "lucide-react"
5120
5110
 
5121
5111
  function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {
@@ -5383,8 +5373,7 @@ export {
5383
5373
  {
5384
5374
  filename: "packages/ui/src/components/empty.tsx",
5385
5375
  template: `import { cva, type VariantProps } from "class-variance-authority"
5386
-
5387
- import { cn } from "@<%= projectName %>/ui/lib/utils"
5376
+ import { cn } from "cn"
5388
5377
 
5389
5378
  function Empty({ className, ...props }: React.ComponentProps<"div">) {
5390
5379
  return (
@@ -5494,8 +5483,8 @@ export {
5494
5483
 
5495
5484
  import { useMemo } from "react"
5496
5485
  import { cva, type VariantProps } from "class-variance-authority"
5486
+ import { cn } from "cn"
5497
5487
 
5498
- import { cn } from "@<%= projectName %>/ui/lib/utils"
5499
5488
  import { Label } from "@<%= projectName %>/ui/components/label"
5500
5489
  import { Separator } from "@<%= projectName %>/ui/components/separator"
5501
5490
 
@@ -5735,8 +5724,7 @@ export {
5735
5724
  template: `"use client"
5736
5725
 
5737
5726
  import { PreviewCard as PreviewCardPrimitive } from "@base-ui/react/preview-card"
5738
-
5739
- import { cn } from "@<%= projectName %>/ui/lib/utils"
5727
+ import { cn } from "cn"
5740
5728
 
5741
5729
  function HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {
5742
5730
  return <PreviewCardPrimitive.Root data-slot="hover-card" {...props} />
@@ -5790,8 +5778,8 @@ export { HoverCard, HoverCardTrigger, HoverCardContent }
5790
5778
  template: `import { mergeProps } from "@base-ui/react/merge-props"
5791
5779
  import { useRender } from "@base-ui/react/use-render"
5792
5780
  import { cva, type VariantProps } from "class-variance-authority"
5781
+ import { cn } from "cn"
5793
5782
 
5794
- import { cn } from "@<%= projectName %>/ui/lib/utils"
5795
5783
  import { Separator } from "@<%= projectName %>/ui/components/separator"
5796
5784
 
5797
5785
  const buttonGroupVariants = cva(
@@ -5882,8 +5870,8 @@ export {
5882
5870
 
5883
5871
  import * as React from "react"
5884
5872
  import { cva, type VariantProps } from "class-variance-authority"
5873
+ import { cn } from "cn"
5885
5874
 
5886
- import { cn } from "@<%= projectName %>/ui/lib/utils"
5887
5875
  import { Button } from "@<%= projectName %>/ui/components/button"
5888
5876
  import { Input } from "@<%= projectName %>/ui/components/input"
5889
5877
  import { Textarea } from "@<%= projectName %>/ui/components/textarea"
@@ -6044,8 +6032,8 @@ export {
6044
6032
  import { mergeProps } from "@base-ui/react/merge-props"
6045
6033
  import { useRender } from "@base-ui/react/use-render"
6046
6034
  import { cva, type VariantProps } from "class-variance-authority"
6035
+ import { cn } from "cn"
6047
6036
 
6048
- import { cn } from "@<%= projectName %>/ui/lib/utils"
6049
6037
  import { Separator } from "@<%= projectName %>/ui/components/separator"
6050
6038
 
6051
6039
  function ItemGroup({ className, ...props }: React.ComponentProps<"div">) {
@@ -6245,7 +6233,7 @@ export {
6245
6233
  },
6246
6234
  {
6247
6235
  filename: "packages/ui/src/components/kbd.tsx",
6248
- template: `import { cn } from "@<%= projectName %>/ui/lib/utils"
6236
+ template: `import { cn } from "cn"
6249
6237
 
6250
6238
  function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
6251
6239
  return (
@@ -6276,8 +6264,7 @@ export { Kbd, KbdGroup }
6276
6264
  {
6277
6265
  filename: "packages/ui/src/components/native-select.tsx",
6278
6266
  template: `import * as React from "react"
6279
-
6280
- import { cn } from "@<%= projectName %>/ui/lib/utils"
6267
+ import { cn } from "cn"
6281
6268
  import { ChevronDownIcon } from "lucide-react"
6282
6269
 
6283
6270
  type NativeSelectProps = Omit<React.ComponentProps<"select">, "size"> & {
@@ -6340,7 +6327,7 @@ export { NativeSelect, NativeSelectOptGroup, NativeSelectOption }
6340
6327
  },
6341
6328
  {
6342
6329
  filename: "packages/ui/src/components/spinner.tsx",
6343
- template: `import { cn } from "@<%= projectName %>/ui/lib/utils"
6330
+ template: `import { cn } from "cn"
6344
6331
  import { Loader2Icon } from "lucide-react"
6345
6332
 
6346
6333
  function Spinner({ className, ...props }: React.ComponentProps<"svg">) {
@@ -6357,9 +6344,8 @@ export { Spinner }
6357
6344
  template: `"use client"
6358
6345
 
6359
6346
  import * as React from "react"
6347
+ import { cn } from "cn"
6360
6348
  import { OTPInput, OTPInputContext } from "input-otp"
6361
-
6362
- import { cn } from "@<%= projectName %>/ui/lib/utils"
6363
6349
  import { MinusIcon } from "lucide-react"
6364
6350
 
6365
6351
  function InputOTP({
@@ -6447,8 +6433,7 @@ export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }
6447
6433
  filename: "packages/ui/src/components/input.tsx",
6448
6434
  template: `import * as React from "react"
6449
6435
  import { Input as InputPrimitive } from "@base-ui/react/input"
6450
-
6451
- import { cn } from "@<%= projectName %>/ui/lib/utils"
6436
+ import { cn } from "cn"
6452
6437
 
6453
6438
  function Input({ className, type, ...props }: React.ComponentProps<"input">) {
6454
6439
  return (
@@ -6472,8 +6457,7 @@ export { Input }
6472
6457
  template: `"use client"
6473
6458
 
6474
6459
  import * as React from "react"
6475
-
6476
- import { cn } from "@<%= projectName %>/ui/lib/utils"
6460
+ import { cn } from "cn"
6477
6461
 
6478
6462
  function Label({ className, ...props }: React.ComponentProps<"label">) {
6479
6463
  return (
@@ -6498,8 +6482,8 @@ export { Label }
6498
6482
  import * as React from "react"
6499
6483
  import { Menu as MenuPrimitive } from "@base-ui/react/menu"
6500
6484
  import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar"
6485
+ import { cn } from "cn"
6501
6486
 
6502
- import { cn } from "@<%= projectName %>/ui/lib/utils"
6503
6487
  import {
6504
6488
  DropdownMenu,
6505
6489
  DropdownMenuContent,
@@ -6779,8 +6763,7 @@ export {
6779
6763
  filename: "packages/ui/src/components/navigation-menu.tsx",
6780
6764
  template: `import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu"
6781
6765
  import { cva } from "class-variance-authority"
6782
-
6783
- import { cn } from "@<%= projectName %>/ui/lib/utils"
6766
+ import { cn } from "cn"
6784
6767
  import { ChevronDownIcon } from "lucide-react"
6785
6768
 
6786
6769
  function NavigationMenu({
@@ -6950,8 +6933,8 @@ export {
6950
6933
  {
6951
6934
  filename: "packages/ui/src/components/pagination.tsx",
6952
6935
  template: `import * as React from "react"
6936
+ import { cn } from "cn"
6953
6937
 
6954
- import { cn } from "@<%= projectName %>/ui/lib/utils"
6955
6938
  import { Button } from "@<%= projectName %>/ui/components/button"
6956
6939
  import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
6957
6940
 
@@ -7087,8 +7070,7 @@ export {
7087
7070
 
7088
7071
  import * as React from "react"
7089
7072
  import { Popover as PopoverPrimitive } from "@base-ui/react/popover"
7090
-
7091
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7073
+ import { cn } from "cn"
7092
7074
 
7093
7075
  function Popover({ ...props }: PopoverPrimitive.Root.Props) {
7094
7076
  return <PopoverPrimitive.Root data-slot="popover" {...props} />
@@ -7180,8 +7162,7 @@ export {
7180
7162
  template: `"use client"
7181
7163
 
7182
7164
  import { Progress as ProgressPrimitive } from "@base-ui/react/progress"
7183
-
7184
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7165
+ import { cn } from "cn"
7185
7166
 
7186
7167
  function Progress({
7187
7168
  className,
@@ -7268,8 +7249,7 @@ export {
7268
7249
 
7269
7250
  import { Radio as RadioPrimitive } from "@base-ui/react/radio"
7270
7251
  import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group"
7271
-
7272
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7252
+ import { cn } from "cn"
7273
7253
 
7274
7254
  function RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {
7275
7255
  return (
@@ -7308,10 +7288,9 @@ export { RadioGroup, RadioGroupItem }
7308
7288
  filename: "packages/ui/src/components/resizable.tsx",
7309
7289
  template: `"use client"
7310
7290
 
7291
+ import { cn } from "cn"
7311
7292
  import * as ResizablePrimitive from "react-resizable-panels"
7312
7293
 
7313
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7314
-
7315
7294
  function ResizablePanelGroup({
7316
7295
  className,
7317
7296
  ...props
@@ -7364,8 +7343,7 @@ export { ResizableHandle, ResizablePanel, ResizablePanelGroup }
7364
7343
 
7365
7344
  import * as React from "react"
7366
7345
  import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area"
7367
-
7368
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7346
+ import { cn } from "cn"
7369
7347
 
7370
7348
  function ScrollArea({
7371
7349
  className,
@@ -7423,8 +7401,7 @@ export { ScrollArea, ScrollBar }
7423
7401
 
7424
7402
  import * as React from "react"
7425
7403
  import { Select as SelectPrimitive } from "@base-ui/react/select"
7426
-
7427
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7404
+ import { cn } from "cn"
7428
7405
  import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react"
7429
7406
 
7430
7407
  const Select = SelectPrimitive.Root
@@ -7627,8 +7604,7 @@ export {
7627
7604
  template: `"use client"
7628
7605
 
7629
7606
  import { Separator as SeparatorPrimitive } from "@base-ui/react/separator"
7630
-
7631
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7607
+ import { cn } from "cn"
7632
7608
 
7633
7609
  function Separator({
7634
7610
  className,
@@ -7657,8 +7633,8 @@ export { Separator }
7657
7633
 
7658
7634
  import * as React from "react"
7659
7635
  import { Dialog as SheetPrimitive } from "@base-ui/react/dialog"
7636
+ import { cn } from "cn"
7660
7637
 
7661
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7662
7638
  import { Button } from "@<%= projectName %>/ui/components/button"
7663
7639
  import { XIcon } from "lucide-react"
7664
7640
 
@@ -7801,9 +7777,9 @@ import * as React from "react"
7801
7777
  import { mergeProps } from "@base-ui/react/merge-props"
7802
7778
  import { useRender } from "@base-ui/react/use-render"
7803
7779
  import { cva, type VariantProps } from "class-variance-authority"
7780
+ import { cn } from "cn"
7804
7781
 
7805
7782
  import { useIsMobile } from "@<%= projectName %>/ui/hooks/use-mobile"
7806
- import { cn } from "@<%= projectName %>/ui/lib/utils"
7807
7783
  import { Button } from "@<%= projectName %>/ui/components/button"
7808
7784
  import { Input } from "@<%= projectName %>/ui/components/input"
7809
7785
  import { Separator } from "@<%= projectName %>/ui/components/separator"
@@ -8522,7 +8498,7 @@ export {
8522
8498
  },
8523
8499
  {
8524
8500
  filename: "packages/ui/src/components/skeleton.tsx",
8525
- template: `import { cn } from "@<%= projectName %>/ui/lib/utils"
8501
+ template: `import { cn } from "cn"
8526
8502
 
8527
8503
  function Skeleton({ className, ...props }: React.ComponentProps<"div">) {
8528
8504
  return (
@@ -8540,8 +8516,7 @@ export { Skeleton }
8540
8516
  {
8541
8517
  filename: "packages/ui/src/components/slider.tsx",
8542
8518
  template: `import { Slider as SliderPrimitive } from "@base-ui/react/slider"
8543
-
8544
- import { cn } from "@<%= projectName %>/ui/lib/utils"
8519
+ import { cn } from "cn"
8545
8520
 
8546
8521
  function Slider({
8547
8522
  className,
@@ -8651,8 +8626,7 @@ export { Toaster }
8651
8626
  template: `"use client"
8652
8627
 
8653
8628
  import { Switch as SwitchPrimitive } from "@base-ui/react/switch"
8654
-
8655
- import { cn } from "@<%= projectName %>/ui/lib/utils"
8629
+ import { cn } from "cn"
8656
8630
 
8657
8631
  function Switch({
8658
8632
  className,
@@ -8687,8 +8661,7 @@ export { Switch }
8687
8661
  template: `"use client"
8688
8662
 
8689
8663
  import * as React from "react"
8690
-
8691
- import { cn } from "@<%= projectName %>/ui/lib/utils"
8664
+ import { cn } from "cn"
8692
8665
 
8693
8666
  function Table({ className, ...props }: React.ComponentProps<"table">) {
8694
8667
  return (
@@ -8808,8 +8781,7 @@ export {
8808
8781
 
8809
8782
  import { Tabs as TabsPrimitive } from "@base-ui/react/tabs"
8810
8783
  import { cva, type VariantProps } from "class-variance-authority"
8811
-
8812
- import { cn } from "@<%= projectName %>/ui/lib/utils"
8784
+ import { cn } from "cn"
8813
8785
 
8814
8786
  function Tabs({
8815
8787
  className,
@@ -8891,8 +8863,7 @@ export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }
8891
8863
  {
8892
8864
  filename: "packages/ui/src/components/textarea.tsx",
8893
8865
  template: `import * as React from "react"
8894
-
8895
- import { cn } from "@<%= projectName %>/ui/lib/utils"
8866
+ import { cn } from "cn"
8896
8867
 
8897
8868
  function Textarea({ className, ...props }: React.ComponentProps<"textarea">) {
8898
8869
  return (
@@ -8918,8 +8889,8 @@ import * as React from "react"
8918
8889
  import { Toggle as TogglePrimitive } from "@base-ui/react/toggle"
8919
8890
  import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group"
8920
8891
  import { type VariantProps } from "class-variance-authority"
8892
+ import { cn } from "cn"
8921
8893
 
8922
- import { cn } from "@<%= projectName %>/ui/lib/utils"
8923
8894
  import { toggleVariants } from "@<%= projectName %>/ui/components/toggle"
8924
8895
 
8925
8896
  const ToggleGroupContext = React.createContext<
@@ -9009,8 +8980,7 @@ export { ToggleGroup, ToggleGroupItem }
9009
8980
 
9010
8981
  import { Toggle as TogglePrimitive } from "@base-ui/react/toggle"
9011
8982
  import { cva, type VariantProps } from "class-variance-authority"
9012
-
9013
- import { cn } from "@<%= projectName %>/ui/lib/utils"
8983
+ import { cn } from "cn"
9014
8984
 
9015
8985
  const toggleVariants = cva(
9016
8986
  "group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
@@ -9057,8 +9027,7 @@ export { Toggle, toggleVariants }
9057
9027
  template: `"use client"
9058
9028
 
9059
9029
  import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip"
9060
-
9061
- import { cn } from "@<%= projectName %>/ui/lib/utils"
9030
+ import { cn } from "cn"
9062
9031
 
9063
9032
  function TooltipProvider({
9064
9033
  delay = 0,
@@ -9153,8 +9122,8 @@ export function ModeToggle() {
9153
9122
  import { mergeProps } from "@base-ui/react/merge-props"
9154
9123
  import { useRender } from "@base-ui/react/use-render"
9155
9124
  import { cva, type VariantProps } from "class-variance-authority"
9125
+ import { cn } from "cn"
9156
9126
 
9157
- import { cn } from "@<%= projectName %>/ui/lib/utils"
9158
9127
  import { Button } from "@<%= projectName %>/ui/components/button"
9159
9128
 
9160
9129
  const attachmentVariants = cva(
@@ -9364,8 +9333,7 @@ export {
9364
9333
  import { mergeProps } from "@base-ui/react/merge-props"
9365
9334
  import { useRender } from "@base-ui/react/use-render"
9366
9335
  import { cva, type VariantProps } from "class-variance-authority"
9367
-
9368
- import { cn } from "@<%= projectName %>/ui/lib/utils"
9336
+ import { cn } from "cn"
9369
9337
 
9370
9338
  function BubbleGroup({ className, ...props }: React.ComponentProps<"div">) {
9371
9339
  return (
@@ -9496,8 +9464,7 @@ export { BubbleGroup, Bubble, BubbleContent, BubbleReactions }
9496
9464
  import { mergeProps } from "@base-ui/react/merge-props"
9497
9465
  import { useRender } from "@base-ui/react/use-render"
9498
9466
  import { cva, type VariantProps } from "class-variance-authority"
9499
-
9500
- import { cn } from "@<%= projectName %>/ui/lib/utils"
9467
+ import { cn } from "cn"
9501
9468
 
9502
9469
  const markerVariants = cva(
9503
9470
  "group/marker relative flex min-h-4 w-full items-center gap-2 text-left text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [a]:underline [a]:underline-offset-3 [a]:hover:text-foreground",
@@ -9568,8 +9535,7 @@ export { Marker, MarkerIcon, MarkerContent, markerVariants }
9568
9535
  {
9569
9536
  filename: "packages/ui/src/components/message.tsx",
9570
9537
  template: `import * as React from "react"
9571
-
9572
- import { cn } from "@<%= projectName %>/ui/lib/utils"
9538
+ import { cn } from "cn"
9573
9539
 
9574
9540
  function MessageGroup({ className, ...props }: React.ComponentProps<"div">) {
9575
9541
  return (
@@ -9672,8 +9638,8 @@ import {
9672
9638
  useMessageScrollerScrollable,
9673
9639
  useMessageScrollerVisibility,
9674
9640
  } from "@shadcn/react/message-scroller"
9641
+ import { cn } from "cn"
9675
9642
 
9676
- import { cn } from "@<%= projectName %>/ui/lib/utils"
9677
9643
  import { Button } from "@<%= projectName %>/ui/components/button"
9678
9644
  import { ArrowDownIcon } from "lucide-react"
9679
9645
 
@@ -9707,7 +9673,7 @@ function MessageScrollerViewport({
9707
9673
  <MessageScrollerPrimitive.Viewport
9708
9674
  data-slot="message-scroller-viewport"
9709
9675
  className={cn(
9710
- "size-full min-h-0 min-w-0 scroll-fade-b scrollbar-thin scrollbar-gutter-stable overflow-y-auto overscroll-contain contain-content data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent",
9676
+ "size-full min-h-0 min-w-0 scroll-fade-b scrollbar-thin scrollbar-gutter-stable overflow-y-auto overscroll-contain contain-content data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent data-pending-scroll:invisible",
9711
9677
  className
9712
9678
  )}
9713
9679
  {...props}
@@ -10293,7 +10259,7 @@ export default function Home() {
10293
10259
  const { data: session, isPending } = authClient.useSession();
10294
10260
 
10295
10261
  const { data: hello } = useQuery({
10296
- queryKey: ['hello'],
10262
+ queryKey: ['hello', session?.user.id],
10297
10263
  queryFn: () => fetch('/api/hello').then((r) => r.json()),
10298
10264
  });
10299
10265
 
@@ -10674,7 +10640,8 @@ var package_json_default$1 = {
10674
10640
  },
10675
10641
  "devDependencies": {
10676
10642
  "@eslint/js": "<%= versions["@eslint/js"] %>",
10677
- "@next/eslint-plugin-next": "<%= versions["@next/eslint-plugin-next"] %>",
10643
+ "@next/eslint-plugin-next": "<%= versions["@next/eslint-plugin-next"] %>",<% if (shadcn) { %>
10644
+ "@shadcn/lint": "<%= versions["@shadcn/lint"] %>",<% } %>
10678
10645
  "eslint": "<%= versions.eslint %>",
10679
10646
  "eslint-config-prettier": "<%= versions["eslint-config-prettier"] %>",
10680
10647
  "eslint-plugin-only-warn": "<%= versions["eslint-plugin-only-warn"] %>",
@@ -10736,7 +10703,8 @@ import pluginReactHooks from "eslint-plugin-react-hooks";
10736
10703
  import pluginReact from "eslint-plugin-react";
10737
10704
  import globals from "globals";
10738
10705
  import pluginNext from "@next/eslint-plugin-next";
10739
- import { config as baseConfig } from "./base.js";
10706
+ import { config as baseConfig } from "./base.js";<% if (shadcn) { %>
10707
+ import { plugin as shadcn } from "@shadcn/lint";<% } %>
10740
10708
 
10741
10709
  /**
10742
10710
  * A custom ESLint configuration for libraries that use Next.js.
@@ -10784,7 +10752,16 @@ export const nextJsConfig = [
10784
10752
  // React scope no longer necessary with new JSX transform.
10785
10753
  "react/react-in-jsx-scope": "off",
10786
10754
  },
10787
- },
10755
+ },<% if (shadcn) { %>
10756
+ {
10757
+ plugins: { shadcn },
10758
+ rules: {
10759
+ "shadcn/no-restyle": ["error", { allow: ["layout"] }],
10760
+ "shadcn/no-raw-colors": "error",
10761
+ "shadcn/no-arbitrary-values": ["error", { allow: ["layout"] }],
10762
+ "shadcn/require-static-classes": "error",
10763
+ },
10764
+ },<% } %>
10788
10765
  ];`
10789
10766
  };
10790
10767
  //#endregion
@@ -10797,7 +10774,8 @@ import tseslint from "typescript-eslint";
10797
10774
  import pluginReactHooks from "eslint-plugin-react-hooks";
10798
10775
  import pluginReact from "eslint-plugin-react";
10799
10776
  import globals from "globals";
10800
- import { config as baseConfig } from "./base.js";
10777
+ import { config as baseConfig } from "./base.js";<% if (shadcn) { %>
10778
+ import { plugin as shadcn } from "@shadcn/lint";<% } %>
10801
10779
 
10802
10780
  /**
10803
10781
  * A custom ESLint configuration for libraries that use React.
@@ -10829,7 +10807,24 @@ export const config = [
10829
10807
  "react/react-in-jsx-scope": "off",
10830
10808
  "react/prop-types": "off",
10831
10809
  },
10810
+ },<% if (shadcn) { %>
10811
+ {
10812
+ plugins: { shadcn },
10813
+ rules: {
10814
+ "shadcn/no-restyle": ["error", { allow: ["layout"] }],
10815
+ "shadcn/no-raw-colors": "error",
10816
+ "shadcn/no-arbitrary-values": ["error", { allow: ["layout"] }],
10817
+ "shadcn/require-static-classes": "error",
10818
+ },
10832
10819
  },
10820
+ {
10821
+ files: ["src/components/**"],
10822
+ rules: {
10823
+ "shadcn/no-restyle": "off",
10824
+ "shadcn/no-arbitrary-values": "off",
10825
+ "shadcn/require-static-classes": "off",
10826
+ },
10827
+ },<% } %>
10833
10828
  ];`
10834
10829
  };
10835
10830
  //#endregion
@@ -10897,6 +10892,13 @@ var prettierrc_default = {
10897
10892
  template: `{}`
10898
10893
  };
10899
10894
  //#endregion
10895
+ //#region src/templates/root/templates/prettierignore.ts
10896
+ var prettierignore_default = {
10897
+ filename: ".prettierignore",
10898
+ template: `pnpm-lock.yaml
10899
+ `
10900
+ };
10901
+ //#endregion
10900
10902
  //#region src/templates/eslint-config/index.ts
10901
10903
  const web = "apps/web";
10902
10904
  const api = "apps/api";
@@ -10911,7 +10913,8 @@ const eslintConfig = {
10911
10913
  eslint_config_default$2,
10912
10914
  eslint_config_default$1,
10913
10915
  eslint_config_default,
10914
- prettierrc_default
10916
+ prettierrc_default,
10917
+ prettierignore_default
10915
10918
  ],
10916
10919
  packages: [
10917
10920
  {
@@ -11032,9 +11035,9 @@ var oxlintrc_default = {
11032
11035
  "categories": {
11033
11036
  "correctness": "error"
11034
11037
  }<% if (antiSlop) { %>,
11035
- "ignorePatterns": ["tools/oxlint/anti-slop/**"],
11036
- "jsPlugins": [{ "name": "anti-slop", "specifier": "./tools/oxlint/anti-slop/index.ts" }],
11037
- "rules": {
11038
+ "ignorePatterns": ["tools/oxlint/anti-slop/**"]<% } %><% if (antiSlop || shadcn) { %>,
11039
+ "jsPlugins": [<% if (antiSlop) { %>{ "name": "anti-slop", "specifier": "./tools/oxlint/anti-slop/index.ts" }<% } %><% if (antiSlop && shadcn) { %>, <% } %><% if (shadcn) { %>"@shadcn/lint"<% } %>],
11040
+ "rules": {<% if (antiSlop) { %>
11038
11041
  "anti-slop/no-chained-type-assertions": "error",
11039
11042
  "anti-slop/no-conditional-empty-object-spread": "error",
11040
11043
  "anti-slop/no-known-value-widening": "error",
@@ -11049,12 +11052,16 @@ var oxlintrc_default = {
11049
11052
  "anti-slop/no-unknown-type-aliases": "error",
11050
11053
  "anti-slop/no-unsafe-dictionary-type": "error",
11051
11054
  "anti-slop/no-widen-then-assert": "error",
11052
- "anti-slop/require-safety-comment-for-type-assertion": "error"
11053
- }<% if (shadcn) { %>,
11055
+ "anti-slop/require-safety-comment-for-type-assertion": "error"<% if (shadcn) { %>,<% } %><% } %><% if (shadcn) { %>
11056
+ "shadcn/no-restyle": ["error", { "allow": ["layout"] }],
11057
+ "shadcn/no-raw-colors": "error",
11058
+ "shadcn/no-arbitrary-values": ["error", { "allow": ["layout"] }],
11059
+ "shadcn/require-static-classes": "error"<% } %>
11060
+ }<% } %><% if (shadcn) { %>,
11054
11061
  "overrides": [
11055
11062
  {
11056
11063
  "files": ["packages/ui/src/components/**"],
11057
- "rules": {
11064
+ "rules": {<% if (antiSlop) { %>
11058
11065
  "anti-slop/no-chained-type-assertions": "off",
11059
11066
  "anti-slop/no-conditional-empty-object-spread": "off",
11060
11067
  "anti-slop/no-known-value-widening": "off",
@@ -11069,10 +11076,13 @@ var oxlintrc_default = {
11069
11076
  "anti-slop/no-unknown-type-aliases": "off",
11070
11077
  "anti-slop/no-unsafe-dictionary-type": "off",
11071
11078
  "anti-slop/no-widen-then-assert": "off",
11072
- "anti-slop/require-safety-comment-for-type-assertion": "off"
11079
+ "anti-slop/require-safety-comment-for-type-assertion": "off",<% } %>
11080
+ "shadcn/no-restyle": "off",
11081
+ "shadcn/no-arbitrary-values": "off",
11082
+ "shadcn/require-static-classes": "off"
11073
11083
  }
11074
11084
  }
11075
- ]<% } %><% } %>
11085
+ ]<% } %>
11076
11086
  }`
11077
11087
  };
11078
11088
  //#endregion
@@ -12814,7 +12824,7 @@ export default function Home() {
12814
12824
  const { data: session, isPending } = authClient.useSession();
12815
12825
 
12816
12826
  const { data: hello } = useQuery({
12817
- queryKey: ['hello'],
12827
+ queryKey: ['hello', session?.user.id],
12818
12828
  queryFn: () => fetch('/api/hello').then((r) => r.json()),
12819
12829
  });
12820
12830
 
@@ -13010,9 +13020,8 @@ export function TodoList({
13010
13020
  </span>
13011
13021
  <Button
13012
13022
  variant="ghost"
13013
- size="sm"
13023
+ size="icon-sm"
13014
13024
  onClick={() => deleteMutation.mutate(todo.id)}
13015
- className="text-muted-foreground hover:text-destructive h-7 w-7 p-0"
13016
13025
  >
13017
13026
  ×
13018
13027
  </Button>
@@ -13042,13 +13051,13 @@ import { Link } from '@<%= projectName %>/ui/link';
13042
13051
  import { Logo } from '@<%= projectName %>/ui/logo';
13043
13052
  import { TodoList } from '@/app/todo-list';
13044
13053
  import { ModeToggle } from '@<%= projectName %>/ui/mode-toggle';
13045
- import { Card, CardContent, CardHeader, CardTitle } from '@<%= projectName %>/ui/card';
13054
+ import { Card, CardContent, CardHeader } from '@<%= projectName %>/ui/card';
13046
13055
 
13047
13056
  export default function Home() {
13048
13057
  const { data: session, isPending } = authClient.useSession();
13049
13058
 
13050
13059
  const { data: hello } = useQuery({
13051
- queryKey: ['hello'],
13060
+ queryKey: ['hello', session?.user.id],
13052
13061
  queryFn: () => fetch('/api/hello').then((r) => r.json()),
13053
13062
  });
13054
13063
 
@@ -13063,7 +13072,7 @@ export default function Home() {
13063
13072
  </div>
13064
13073
 
13065
13074
  <div className="flex items-center gap-3 py-2">
13066
- <Logo className="w-10 h-auto text-foreground" />
13075
+ <Logo className="w-10 h-auto" />
13067
13076
  <div>
13068
13077
  <h1 className="text-4xl font-black tracking-tight"><%= projectName %></h1>
13069
13078
  <p className="text-sm text-muted-foreground tracking-widest uppercase">
@@ -13074,9 +13083,9 @@ export default function Home() {
13074
13083
 
13075
13084
  <Card>
13076
13085
  <CardHeader>
13077
- <CardTitle className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
13086
+ <p className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
13078
13087
  next.js
13079
- </CardTitle>
13088
+ </p>
13080
13089
  </CardHeader>
13081
13090
  <CardContent>
13082
13091
  <p className="font-mono text-sm text-muted-foreground">apps/web/app/layout.tsx</p>
@@ -13086,9 +13095,9 @@ export default function Home() {
13086
13095
 
13087
13096
  <Card>
13088
13097
  <CardHeader>
13089
- <CardTitle className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
13098
+ <p className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
13090
13099
  nest.js
13091
- </CardTitle>
13100
+ </p>
13092
13101
  </CardHeader>
13093
13102
  <CardContent>
13094
13103
  <p className="font-mono text-sm text-muted-foreground">GET /api/hello</p>
@@ -13100,9 +13109,9 @@ export default function Home() {
13100
13109
 
13101
13110
  <Card>
13102
13111
  <CardHeader>
13103
- <CardTitle className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
13112
+ <p className="text-xs font-mono uppercase tracking-widest text-muted-foreground">
13104
13113
  better-auth
13105
- </CardTitle>
13114
+ </p>
13106
13115
  </CardHeader>
13107
13116
  <CardContent>
13108
13117
  {isPending ? (
@@ -13396,7 +13405,7 @@ export default function Home() {
13396
13405
  const { data: session, isPending } = authClient.useSession();
13397
13406
 
13398
13407
  const { data: hello } = useQuery({
13399
- queryKey: ['hello'],
13408
+ queryKey: ['hello', session?.user.id],
13400
13409
  queryFn: () => fetch('/api/hello').then((r) => r.json()),
13401
13410
  });
13402
13411