From fafcafc2213447d65c856e598e64d8e73faa04f2 Mon Sep 17 00:00:00 2001 From: Giancarlo Buomprisco Date: Tue, 3 Sep 2024 18:17:51 +0800 Subject: [PATCH] Updated UI package to work with the new Shadcn CLI (#59) Updated UI package to work with the new Shadcn CLI --- packages/ui/README.md | 8 +++----- components.json => packages/ui/components.json | 13 ++++++++----- packages/ui/package.json | 5 +++-- packages/ui/src/{ => lib}/utils/cn.ts | 0 packages/ui/src/{ => lib}/utils/index.ts | 0 .../ui/src/{ => lib}/utils/is-route-active.ts | 0 .../src/makerkit/bordered-navigation-menu.tsx | 2 +- packages/ui/src/makerkit/card-button.tsx | 2 +- packages/ui/src/makerkit/divider.tsx | 2 +- packages/ui/src/makerkit/empty-state.tsx | 2 +- .../ui/src/makerkit/image-upload-input.tsx | 2 +- packages/ui/src/makerkit/loading-overlay.tsx | 2 +- .../ui/src/makerkit/marketing/cta-button.tsx | 2 +- .../ui/src/makerkit/marketing/feature-card.tsx | 2 +- .../ui/src/makerkit/marketing/feature-grid.tsx | 2 +- .../makerkit/marketing/feature-showcase.tsx | 2 +- packages/ui/src/makerkit/marketing/footer.tsx | 2 +- .../marketing/gradient-secondary-text.tsx | 2 +- .../src/makerkit/marketing/gradient-text.tsx | 2 +- packages/ui/src/makerkit/marketing/header.tsx | 2 +- .../ui/src/makerkit/marketing/hero-title.tsx | 2 +- packages/ui/src/makerkit/marketing/hero.tsx | 2 +- .../marketing/newsletter-signup-container.tsx | 2 +- .../makerkit/marketing/newsletter-signup.tsx | 2 +- packages/ui/src/makerkit/marketing/pill.tsx | 2 +- .../src/makerkit/marketing/secondary-hero.tsx | 2 +- packages/ui/src/makerkit/mode-toggle.tsx | 2 +- packages/ui/src/makerkit/multi-step-form.tsx | 2 +- packages/ui/src/makerkit/page.tsx | 2 +- packages/ui/src/makerkit/profile-avatar.tsx | 2 +- packages/ui/src/makerkit/sidebar.tsx | 2 +- packages/ui/src/makerkit/spinner.tsx | 2 +- packages/ui/src/makerkit/stepper.tsx | 2 +- packages/ui/src/shadcn/accordion.tsx | 2 +- packages/ui/src/shadcn/alert-dialog.tsx | 2 +- packages/ui/src/shadcn/alert.tsx | 2 +- packages/ui/src/shadcn/avatar.tsx | 2 +- packages/ui/src/shadcn/badge.tsx | 2 +- packages/ui/src/shadcn/breadcrumb.tsx | 2 +- packages/ui/src/shadcn/button.tsx | 2 +- packages/ui/src/shadcn/calendar.tsx | 2 +- packages/ui/src/shadcn/card.tsx | 2 +- packages/ui/src/shadcn/chart.tsx | 2 +- packages/ui/src/shadcn/checkbox.tsx | 2 +- packages/ui/src/shadcn/command.tsx | 2 +- packages/ui/src/shadcn/dialog.tsx | 2 +- packages/ui/src/shadcn/dropdown-menu.tsx | 2 +- packages/ui/src/shadcn/form.tsx | 2 +- packages/ui/src/shadcn/heading.tsx | 2 +- packages/ui/src/shadcn/index.ts | 2 +- packages/ui/src/shadcn/input-otp.tsx | 2 +- packages/ui/src/shadcn/input.tsx | 2 +- packages/ui/src/shadcn/label.tsx | 2 +- packages/ui/src/shadcn/navigation-menu.tsx | 2 +- packages/ui/src/shadcn/popover.tsx | 2 +- packages/ui/src/shadcn/radio-group.tsx | 2 +- packages/ui/src/shadcn/scroll-area.tsx | 2 +- packages/ui/src/shadcn/select.tsx | 2 +- packages/ui/src/shadcn/separator.tsx | 2 +- packages/ui/src/shadcn/sheet.tsx | 2 +- packages/ui/src/shadcn/switch.tsx | 2 +- packages/ui/src/shadcn/table.tsx | 2 +- packages/ui/src/shadcn/tabs.tsx | 2 +- packages/ui/src/shadcn/textarea.tsx | 2 +- packages/ui/src/shadcn/tooltip.tsx | 2 +- packages/ui/tsconfig.json | 11 +++++++++-- pnpm-lock.yaml | 18 ++++++++++++++++++ 67 files changed, 100 insertions(+), 73 deletions(-) rename components.json => packages/ui/components.json (51%) rename packages/ui/src/{ => lib}/utils/cn.ts (100%) rename packages/ui/src/{ => lib}/utils/index.ts (100%) rename packages/ui/src/{ => lib}/utils/is-route-active.ts (100%) diff --git a/packages/ui/README.md b/packages/ui/README.md index deeb6840c..7a1e388bc 100644 --- a/packages/ui/README.md +++ b/packages/ui/README.md @@ -12,13 +12,11 @@ This package define two sets of components: To install a Shadcn UI component, you can use the following command in the root of the repository: ```bash -npx shadcn-ui@latest add --path=packages/ui/src/shadcn +npx shadcn@latest add -c packages/ui ``` For example, to install the `Button` component, you can use the following command: ```bash -npx shadcn-ui@latest add button --path=packages/ui/src/shadcn -``` - -We pass the `--path` flag to specify the path where the component should be installed. \ No newline at end of file +npx shadcn-ui@latest add button -c packages/ui +``` \ No newline at end of file diff --git a/components.json b/packages/ui/components.json similarity index 51% rename from components.json rename to packages/ui/components.json index b282fe339..7906bed9e 100644 --- a/components.json +++ b/packages/ui/components.json @@ -4,14 +4,17 @@ "rsc": true, "tsx": true, "tailwind": { - "config": "tailwind.config.js", - "css": "app/globals.css", + "config": "./tailwind.config.ts", + "css": "../../apps/web/styles/globals.css", "baseColor": "slate", "cssVariables": true, "prefix": "" }, "aliases": { - "components": "@kit/ui", - "utils": "@kit/ui/utils" + "components": "~components", + "utils": "~utils", + "lib": "~lib", + "hooks": "~hooks", + "ui": "~ui" } -} \ No newline at end of file +} diff --git a/packages/ui/package.json b/packages/ui/package.json index 514df2908..4a3fbde81 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -34,7 +34,8 @@ "lucide-react": "^0.438.0", "react-top-loading-bar": "2.3.1", "recharts": "^2.12.7", - "tailwind-merge": "^2.5.2" + "tailwind-merge": "^2.5.2", + "vaul": "^0.9.1" }, "devDependencies": { "@kit/eslint-config": "workspace:*", @@ -103,7 +104,7 @@ "./switch": "./src/shadcn/switch.tsx", "./breadcrumb": "./src/shadcn/breadcrumb.tsx", "./chart": "./src/shadcn/chart.tsx", - "./utils": "./src/utils/index.ts", + "./utils": "./src/lib/utils/index.ts", "./if": "./src/makerkit/if.tsx", "./trans": "./src/makerkit/trans.tsx", "./divider": "./src/makerkit/divider.tsx", diff --git a/packages/ui/src/utils/cn.ts b/packages/ui/src/lib/utils/cn.ts similarity index 100% rename from packages/ui/src/utils/cn.ts rename to packages/ui/src/lib/utils/cn.ts diff --git a/packages/ui/src/utils/index.ts b/packages/ui/src/lib/utils/index.ts similarity index 100% rename from packages/ui/src/utils/index.ts rename to packages/ui/src/lib/utils/index.ts diff --git a/packages/ui/src/utils/is-route-active.ts b/packages/ui/src/lib/utils/is-route-active.ts similarity index 100% rename from packages/ui/src/utils/is-route-active.ts rename to packages/ui/src/lib/utils/is-route-active.ts diff --git a/packages/ui/src/makerkit/bordered-navigation-menu.tsx b/packages/ui/src/makerkit/bordered-navigation-menu.tsx index b6ea29014..4c6b5646a 100644 --- a/packages/ui/src/makerkit/bordered-navigation-menu.tsx +++ b/packages/ui/src/makerkit/bordered-navigation-menu.tsx @@ -3,13 +3,13 @@ import Link from 'next/link'; import { usePathname } from 'next/navigation'; +import { cn, isRouteActive } from '../lib/utils'; import { Button } from '../shadcn/button'; import { NavigationMenu, NavigationMenuItem, NavigationMenuList, } from '../shadcn/navigation-menu'; -import { cn, isRouteActive } from '../utils'; import { Trans } from './trans'; export function BorderedNavigationMenu(props: React.PropsWithChildren) { diff --git a/packages/ui/src/makerkit/card-button.tsx b/packages/ui/src/makerkit/card-button.tsx index 6df8872b8..9a5189531 100644 --- a/packages/ui/src/makerkit/card-button.tsx +++ b/packages/ui/src/makerkit/card-button.tsx @@ -3,7 +3,7 @@ import * as React from 'react'; import { Slot, Slottable } from '@radix-ui/react-slot'; import { ChevronRight } from 'lucide-react'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; export const CardButton = React.forwardRef< HTMLButtonElement, diff --git a/packages/ui/src/makerkit/divider.tsx b/packages/ui/src/makerkit/divider.tsx index 9ffe1b54d..3c338dfdd 100644 --- a/packages/ui/src/makerkit/divider.tsx +++ b/packages/ui/src/makerkit/divider.tsx @@ -1,4 +1,4 @@ -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; export function Divider(props: { className?: string }) { return
; diff --git a/packages/ui/src/makerkit/empty-state.tsx b/packages/ui/src/makerkit/empty-state.tsx index dba3bf134..10234a4aa 100644 --- a/packages/ui/src/makerkit/empty-state.tsx +++ b/packages/ui/src/makerkit/empty-state.tsx @@ -1,7 +1,7 @@ import React from 'react'; +import { cn } from '../lib/utils'; import { Button } from '../shadcn/button'; -import { cn } from '../utils'; const EmptyStateHeading = React.forwardRef< HTMLHeadingElement, diff --git a/packages/ui/src/makerkit/image-upload-input.tsx b/packages/ui/src/makerkit/image-upload-input.tsx index 2da63b32b..edca89f40 100644 --- a/packages/ui/src/makerkit/image-upload-input.tsx +++ b/packages/ui/src/makerkit/image-upload-input.tsx @@ -7,9 +7,9 @@ import Image from 'next/image'; import { UploadCloud, X } from 'lucide-react'; +import { cn } from '../lib/utils'; import { Button } from '../shadcn/button'; import { Label } from '../shadcn/label'; -import { cn } from '../utils'; import { If } from './if'; type Props = Omit, 'value'> & { diff --git a/packages/ui/src/makerkit/loading-overlay.tsx b/packages/ui/src/makerkit/loading-overlay.tsx index 4974f0a92..ac1356fce 100644 --- a/packages/ui/src/makerkit/loading-overlay.tsx +++ b/packages/ui/src/makerkit/loading-overlay.tsx @@ -1,6 +1,6 @@ import type { PropsWithChildren } from 'react'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; import { Spinner } from './spinner'; export function LoadingOverlay({ diff --git a/packages/ui/src/makerkit/marketing/cta-button.tsx b/packages/ui/src/makerkit/marketing/cta-button.tsx index c5c704312..e8323a4f1 100644 --- a/packages/ui/src/makerkit/marketing/cta-button.tsx +++ b/packages/ui/src/makerkit/marketing/cta-button.tsx @@ -1,7 +1,7 @@ import { forwardRef } from 'react'; +import { cn } from '../../lib/utils'; import { Button } from '../../shadcn/button'; -import { cn } from '../../utils'; export const CtaButton = forwardRef< HTMLButtonElement, diff --git a/packages/ui/src/makerkit/marketing/feature-card.tsx b/packages/ui/src/makerkit/marketing/feature-card.tsx index 66d16a4c7..095a93fb6 100644 --- a/packages/ui/src/makerkit/marketing/feature-card.tsx +++ b/packages/ui/src/makerkit/marketing/feature-card.tsx @@ -1,12 +1,12 @@ import React, { forwardRef } from 'react'; +import { cn } from '../../lib/utils'; import { CardContent, CardDescription, CardHeader, CardTitle, } from '../../shadcn/card'; -import { cn } from '../../utils'; interface FeatureCardProps extends React.HTMLAttributes { label: string; diff --git a/packages/ui/src/makerkit/marketing/feature-grid.tsx b/packages/ui/src/makerkit/marketing/feature-grid.tsx index c7947271b..f5fda36e6 100644 --- a/packages/ui/src/makerkit/marketing/feature-grid.tsx +++ b/packages/ui/src/makerkit/marketing/feature-grid.tsx @@ -1,6 +1,6 @@ import React, { forwardRef } from 'react'; -import { cn } from '../../utils'; +import { cn } from '../../lib/utils'; export const FeatureGrid = forwardRef< HTMLDivElement, diff --git a/packages/ui/src/makerkit/marketing/feature-showcase.tsx b/packages/ui/src/makerkit/marketing/feature-showcase.tsx index 33a2405ab..485162ddd 100644 --- a/packages/ui/src/makerkit/marketing/feature-showcase.tsx +++ b/packages/ui/src/makerkit/marketing/feature-showcase.tsx @@ -1,6 +1,6 @@ import React, { forwardRef } from 'react'; -import { cn } from '../../utils'; +import { cn } from '../../lib/utils'; interface FeatureShowcaseProps extends React.HTMLAttributes { heading: React.ReactNode; diff --git a/packages/ui/src/makerkit/marketing/footer.tsx b/packages/ui/src/makerkit/marketing/footer.tsx index 7dcde1740..abae76206 100644 --- a/packages/ui/src/makerkit/marketing/footer.tsx +++ b/packages/ui/src/makerkit/marketing/footer.tsx @@ -1,6 +1,6 @@ import { forwardRef } from 'react'; -import { cn } from '../../utils'; +import { cn } from '../../lib/utils'; interface FooterSection { heading: React.ReactNode; diff --git a/packages/ui/src/makerkit/marketing/gradient-secondary-text.tsx b/packages/ui/src/makerkit/marketing/gradient-secondary-text.tsx index 46dc26cd4..96709e3e6 100644 --- a/packages/ui/src/makerkit/marketing/gradient-secondary-text.tsx +++ b/packages/ui/src/makerkit/marketing/gradient-secondary-text.tsx @@ -2,7 +2,7 @@ import { forwardRef } from 'react'; import { Slot, Slottable } from '@radix-ui/react-slot'; -import { cn } from '../../utils'; +import { cn } from '../../lib/utils'; export const GradientSecondaryText = forwardRef< HTMLSpanElement, diff --git a/packages/ui/src/makerkit/marketing/gradient-text.tsx b/packages/ui/src/makerkit/marketing/gradient-text.tsx index 1707040fa..73f139c53 100644 --- a/packages/ui/src/makerkit/marketing/gradient-text.tsx +++ b/packages/ui/src/makerkit/marketing/gradient-text.tsx @@ -1,6 +1,6 @@ import React, { forwardRef } from 'react'; -import { cn } from '../../utils'; +import { cn } from '../../lib/utils'; export const GradientText = forwardRef< HTMLSpanElement, diff --git a/packages/ui/src/makerkit/marketing/header.tsx b/packages/ui/src/makerkit/marketing/header.tsx index e970790d8..8f0562ec6 100644 --- a/packages/ui/src/makerkit/marketing/header.tsx +++ b/packages/ui/src/makerkit/marketing/header.tsx @@ -1,6 +1,6 @@ import { forwardRef } from 'react'; -import { cn } from '../../utils'; +import { cn } from '../../lib/utils'; interface HeaderProps extends React.HTMLAttributes { logo?: React.ReactNode; diff --git a/packages/ui/src/makerkit/marketing/hero-title.tsx b/packages/ui/src/makerkit/marketing/hero-title.tsx index 94352d699..b7fcb8109 100644 --- a/packages/ui/src/makerkit/marketing/hero-title.tsx +++ b/packages/ui/src/makerkit/marketing/hero-title.tsx @@ -2,7 +2,7 @@ import { forwardRef } from 'react'; import { Slot, Slottable } from '@radix-ui/react-slot'; -import { cn } from '../../utils'; +import { cn } from '../../lib/utils'; export const HeroTitle = forwardRef< HTMLHeadingElement, diff --git a/packages/ui/src/makerkit/marketing/hero.tsx b/packages/ui/src/makerkit/marketing/hero.tsx index 8564f6f9e..2c6eeee86 100644 --- a/packages/ui/src/makerkit/marketing/hero.tsx +++ b/packages/ui/src/makerkit/marketing/hero.tsx @@ -1,7 +1,7 @@ import React from 'react'; +import { cn } from '../../lib/utils'; import { Heading } from '../../shadcn/heading'; -import { cn } from '../../utils'; import { HeroTitle } from './hero-title'; interface HeroProps { diff --git a/packages/ui/src/makerkit/marketing/newsletter-signup-container.tsx b/packages/ui/src/makerkit/marketing/newsletter-signup-container.tsx index 5bb565c4a..864b3d091 100644 --- a/packages/ui/src/makerkit/marketing/newsletter-signup-container.tsx +++ b/packages/ui/src/makerkit/marketing/newsletter-signup-container.tsx @@ -2,9 +2,9 @@ import { useCallback, useState } from 'react'; +import { cn } from '../../lib/utils'; import { Alert, AlertDescription, AlertTitle } from '../../shadcn/alert'; import { Heading } from '../../shadcn/heading'; -import { cn } from '../../utils'; import { Spinner } from '../spinner'; import { NewsletterSignup } from './newsletter-signup'; diff --git a/packages/ui/src/makerkit/marketing/newsletter-signup.tsx b/packages/ui/src/makerkit/marketing/newsletter-signup.tsx index 9791eb8a1..87c02ab68 100644 --- a/packages/ui/src/makerkit/marketing/newsletter-signup.tsx +++ b/packages/ui/src/makerkit/marketing/newsletter-signup.tsx @@ -4,6 +4,7 @@ import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; +import { cn } from '../../lib/utils'; import { Button } from '../../shadcn/button'; import { Form, @@ -13,7 +14,6 @@ import { FormMessage, } from '../../shadcn/form'; import { Input } from '../../shadcn/input'; -import { cn } from '../../utils'; const NewsletterFormSchema = z.object({ email: z.string().email('Please enter a valid email address'), diff --git a/packages/ui/src/makerkit/marketing/pill.tsx b/packages/ui/src/makerkit/marketing/pill.tsx index 2a3e7d718..3da959fe7 100644 --- a/packages/ui/src/makerkit/marketing/pill.tsx +++ b/packages/ui/src/makerkit/marketing/pill.tsx @@ -2,7 +2,7 @@ import { forwardRef } from 'react'; import { Slot, Slottable } from '@radix-ui/react-slot'; -import { cn } from '../../utils'; +import { cn } from '../../lib/utils'; import { GradientSecondaryText } from './gradient-secondary-text'; export const Pill = forwardRef< diff --git a/packages/ui/src/makerkit/marketing/secondary-hero.tsx b/packages/ui/src/makerkit/marketing/secondary-hero.tsx index abb95c6e9..3192bcca4 100644 --- a/packages/ui/src/makerkit/marketing/secondary-hero.tsx +++ b/packages/ui/src/makerkit/marketing/secondary-hero.tsx @@ -1,7 +1,7 @@ import { forwardRef } from 'react'; +import { cn } from '../../lib/utils'; import { Heading } from '../../shadcn/heading'; -import { cn } from '../../utils'; interface SecondaryHeroProps extends React.HTMLAttributes { pill?: React.ReactNode; diff --git a/packages/ui/src/makerkit/mode-toggle.tsx b/packages/ui/src/makerkit/mode-toggle.tsx index 755b29a07..9f9b95f0a 100644 --- a/packages/ui/src/makerkit/mode-toggle.tsx +++ b/packages/ui/src/makerkit/mode-toggle.tsx @@ -5,6 +5,7 @@ import { useMemo } from 'react'; import { Computer, Moon, Sun } from 'lucide-react'; import { useTheme } from 'next-themes'; +import { cn } from '../lib/utils'; import { Button } from '../shadcn/button'; import { DropdownMenu, @@ -16,7 +17,6 @@ import { DropdownMenuSubTrigger, DropdownMenuTrigger, } from '../shadcn/dropdown-menu'; -import { cn } from '../utils'; import { Trans } from './trans'; const MODES = ['light', 'dark', 'system']; diff --git a/packages/ui/src/makerkit/multi-step-form.tsx b/packages/ui/src/makerkit/multi-step-form.tsx index 4a0b56c62..3d84c3ae1 100644 --- a/packages/ui/src/makerkit/multi-step-form.tsx +++ b/packages/ui/src/makerkit/multi-step-form.tsx @@ -16,7 +16,7 @@ import { useMutation } from '@tanstack/react-query'; import { Path, UseFormReturn } from 'react-hook-form'; import { z } from 'zod'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; interface MultiStepFormProps { schema: T; diff --git a/packages/ui/src/makerkit/page.tsx b/packages/ui/src/makerkit/page.tsx index 5d7015333..fd5a28075 100644 --- a/packages/ui/src/makerkit/page.tsx +++ b/packages/ui/src/makerkit/page.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; export type PageLayoutStyle = 'sidebar' | 'header' | 'custom'; diff --git a/packages/ui/src/makerkit/profile-avatar.tsx b/packages/ui/src/makerkit/profile-avatar.tsx index b21b50f51..c304b874a 100644 --- a/packages/ui/src/makerkit/profile-avatar.tsx +++ b/packages/ui/src/makerkit/profile-avatar.tsx @@ -1,5 +1,5 @@ +import { cn } from '../lib/utils'; import { Avatar, AvatarFallback, AvatarImage } from '../shadcn/avatar'; -import { cn } from '../utils'; type SessionProps = { displayName: string | null; diff --git a/packages/ui/src/makerkit/sidebar.tsx b/packages/ui/src/makerkit/sidebar.tsx index 4c2ae66b5..e8c76a71f 100644 --- a/packages/ui/src/makerkit/sidebar.tsx +++ b/packages/ui/src/makerkit/sidebar.tsx @@ -9,6 +9,7 @@ import { cva } from 'class-variance-authority'; import { ChevronDown } from 'lucide-react'; import { z } from 'zod'; +import { cn, isRouteActive } from '../lib/utils'; import { Button } from '../shadcn/button'; import { Tooltip, @@ -16,7 +17,6 @@ import { TooltipProvider, TooltipTrigger, } from '../shadcn/tooltip'; -import { cn, isRouteActive } from '../utils'; import { SidebarContext } from './context/sidebar.context'; import { If } from './if'; import type { NavigationConfigSchema } from './navigation-config.schema'; diff --git a/packages/ui/src/makerkit/spinner.tsx b/packages/ui/src/makerkit/spinner.tsx index ee1839bfc..8d16c0b2f 100644 --- a/packages/ui/src/makerkit/spinner.tsx +++ b/packages/ui/src/makerkit/spinner.tsx @@ -1,4 +1,4 @@ -import { cn } from '../utils'; +import { cn } from '../lib/utils'; export function Spinner( props: React.PropsWithChildren<{ diff --git a/packages/ui/src/makerkit/stepper.tsx b/packages/ui/src/makerkit/stepper.tsx index 0c86082db..da2360218 100644 --- a/packages/ui/src/makerkit/stepper.tsx +++ b/packages/ui/src/makerkit/stepper.tsx @@ -4,7 +4,7 @@ import { Fragment, useCallback } from 'react'; import { cva } from 'class-variance-authority'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; import { If } from './if'; import { Trans } from './trans'; diff --git a/packages/ui/src/shadcn/accordion.tsx b/packages/ui/src/shadcn/accordion.tsx index d02ba5761..593a67834 100644 --- a/packages/ui/src/shadcn/accordion.tsx +++ b/packages/ui/src/shadcn/accordion.tsx @@ -5,7 +5,7 @@ import * as React from 'react'; import * as AccordionPrimitive from '@radix-ui/react-accordion'; import { ChevronDownIcon } from '@radix-ui/react-icons'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; const Accordion = AccordionPrimitive.Root; diff --git a/packages/ui/src/shadcn/alert-dialog.tsx b/packages/ui/src/shadcn/alert-dialog.tsx index 2f7804bec..9e8f7426e 100644 --- a/packages/ui/src/shadcn/alert-dialog.tsx +++ b/packages/ui/src/shadcn/alert-dialog.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; import { buttonVariants } from './button'; const AlertDialog = AlertDialogPrimitive.Root; diff --git a/packages/ui/src/shadcn/alert.tsx b/packages/ui/src/shadcn/alert.tsx index 5ab680f25..8666f5a5e 100644 --- a/packages/ui/src/shadcn/alert.tsx +++ b/packages/ui/src/shadcn/alert.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { type VariantProps, cva } from 'class-variance-authority'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; const alertVariants = cva( 'relative w-full bg-gradient-to-r rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7', diff --git a/packages/ui/src/shadcn/avatar.tsx b/packages/ui/src/shadcn/avatar.tsx index dd486fabf..9793aa8b4 100644 --- a/packages/ui/src/shadcn/avatar.tsx +++ b/packages/ui/src/shadcn/avatar.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as AvatarPrimitive from '@radix-ui/react-avatar'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Avatar = React.forwardRef< React.ElementRef, diff --git a/packages/ui/src/shadcn/badge.tsx b/packages/ui/src/shadcn/badge.tsx index a2d542b29..8a72a6492 100644 --- a/packages/ui/src/shadcn/badge.tsx +++ b/packages/ui/src/shadcn/badge.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { type VariantProps, cva } from 'class-variance-authority'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const badgeVariants = cva( 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', diff --git a/packages/ui/src/shadcn/breadcrumb.tsx b/packages/ui/src/shadcn/breadcrumb.tsx index 12770d075..33df9a229 100644 --- a/packages/ui/src/shadcn/breadcrumb.tsx +++ b/packages/ui/src/shadcn/breadcrumb.tsx @@ -3,7 +3,7 @@ import * as React from 'react'; import { ChevronRightIcon, DotsHorizontalIcon } from '@radix-ui/react-icons'; import { Slot } from '@radix-ui/react-slot'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; const Breadcrumb = React.forwardRef< HTMLElement, diff --git a/packages/ui/src/shadcn/button.tsx b/packages/ui/src/shadcn/button.tsx index 744edd466..7b3a30e07 100644 --- a/packages/ui/src/shadcn/button.tsx +++ b/packages/ui/src/shadcn/button.tsx @@ -4,7 +4,7 @@ import { Slot } from '@radix-ui/react-slot'; import { cva } from 'class-variance-authority'; import type { VariantProps } from 'class-variance-authority'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const buttonVariants = cva( 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50', diff --git a/packages/ui/src/shadcn/calendar.tsx b/packages/ui/src/shadcn/calendar.tsx index 9430ec3de..f5da65e5b 100644 --- a/packages/ui/src/shadcn/calendar.tsx +++ b/packages/ui/src/shadcn/calendar.tsx @@ -5,7 +5,7 @@ import * as React from 'react'; import { ChevronLeft, ChevronRight } from 'lucide-react'; import { DayPicker } from 'react-day-picker'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; import { buttonVariants } from './button'; export type { DateRange } from 'react-day-picker'; diff --git a/packages/ui/src/shadcn/card.tsx b/packages/ui/src/shadcn/card.tsx index 8513daa48..3b88cc12d 100644 --- a/packages/ui/src/shadcn/card.tsx +++ b/packages/ui/src/shadcn/card.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Card = React.forwardRef< HTMLDivElement, diff --git a/packages/ui/src/shadcn/chart.tsx b/packages/ui/src/shadcn/chart.tsx index d3c010d85..409d7d232 100644 --- a/packages/ui/src/shadcn/chart.tsx +++ b/packages/ui/src/shadcn/chart.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as RechartsPrimitive from 'recharts'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; // Format: { THEME_NAME: CSS_SELECTOR } const THEMES = { light: '', dark: '.dark' } as const; diff --git a/packages/ui/src/shadcn/checkbox.tsx b/packages/ui/src/shadcn/checkbox.tsx index 97482b635..f5b70f0da 100644 --- a/packages/ui/src/shadcn/checkbox.tsx +++ b/packages/ui/src/shadcn/checkbox.tsx @@ -5,7 +5,7 @@ import * as React from 'react'; import * as CheckboxPrimitive from '@radix-ui/react-checkbox'; import { CheckIcon } from '@radix-ui/react-icons'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Checkbox = React.forwardRef< React.ElementRef, diff --git a/packages/ui/src/shadcn/command.tsx b/packages/ui/src/shadcn/command.tsx index e89cae4df..07ce16eab 100644 --- a/packages/ui/src/shadcn/command.tsx +++ b/packages/ui/src/shadcn/command.tsx @@ -6,7 +6,7 @@ import { type DialogProps } from '@radix-ui/react-dialog'; import { MagnifyingGlassIcon } from '@radix-ui/react-icons'; import { Command as CommandPrimitive } from 'cmdk'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; import { Dialog, DialogContent } from './dialog'; const Command = React.forwardRef< diff --git a/packages/ui/src/shadcn/dialog.tsx b/packages/ui/src/shadcn/dialog.tsx index 313468c87..1c0ac7219 100644 --- a/packages/ui/src/shadcn/dialog.tsx +++ b/packages/ui/src/shadcn/dialog.tsx @@ -5,7 +5,7 @@ import * as React from 'react'; import * as DialogPrimitive from '@radix-ui/react-dialog'; import { Cross2Icon } from '@radix-ui/react-icons'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Dialog = DialogPrimitive.Root; diff --git a/packages/ui/src/shadcn/dropdown-menu.tsx b/packages/ui/src/shadcn/dropdown-menu.tsx index afbfb7710..9521ff48b 100644 --- a/packages/ui/src/shadcn/dropdown-menu.tsx +++ b/packages/ui/src/shadcn/dropdown-menu.tsx @@ -9,7 +9,7 @@ import { DotFilledIcon, } from '@radix-ui/react-icons'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const DropdownMenu = DropdownMenuPrimitive.Root; diff --git a/packages/ui/src/shadcn/form.tsx b/packages/ui/src/shadcn/form.tsx index 9e74f1c7c..6f103c614 100644 --- a/packages/ui/src/shadcn/form.tsx +++ b/packages/ui/src/shadcn/form.tsx @@ -7,8 +7,8 @@ import { Slot } from '@radix-ui/react-slot'; import type { ControllerProps, FieldPath, FieldValues } from 'react-hook-form'; import { Controller, FormProvider, useFormContext } from 'react-hook-form'; +import { cn } from '../lib/utils'; import { Trans } from '../makerkit/trans'; -import { cn } from '../utils'; import { Label } from './label'; const Form = FormProvider; diff --git a/packages/ui/src/shadcn/heading.tsx b/packages/ui/src/shadcn/heading.tsx index ab75453e8..534ae3b78 100644 --- a/packages/ui/src/shadcn/heading.tsx +++ b/packages/ui/src/shadcn/heading.tsx @@ -1,4 +1,4 @@ -import { cn } from '../utils'; +import { cn } from '../lib/utils'; type Level = 1 | 2 | 3 | 4 | 5 | 6; diff --git a/packages/ui/src/shadcn/index.ts b/packages/ui/src/shadcn/index.ts index 4c35088cf..f88d26aaf 100644 --- a/packages/ui/src/shadcn/index.ts +++ b/packages/ui/src/shadcn/index.ts @@ -1 +1 @@ -export { cn } from '../utils/cn'; +export { cn } from '../lib/utils'; diff --git a/packages/ui/src/shadcn/input-otp.tsx b/packages/ui/src/shadcn/input-otp.tsx index a626efdc9..ee2479bd5 100644 --- a/packages/ui/src/shadcn/input-otp.tsx +++ b/packages/ui/src/shadcn/input-otp.tsx @@ -5,7 +5,7 @@ import * as React from 'react'; import { DashIcon } from '@radix-ui/react-icons'; import { OTPInput, OTPInputContext } from 'input-otp'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; const InputOTP = React.forwardRef< React.ElementRef, diff --git a/packages/ui/src/shadcn/input.tsx b/packages/ui/src/shadcn/input.tsx index 8879b09e1..1bbba669f 100644 --- a/packages/ui/src/shadcn/input.tsx +++ b/packages/ui/src/shadcn/input.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; export type InputProps = React.InputHTMLAttributes; diff --git a/packages/ui/src/shadcn/label.tsx b/packages/ui/src/shadcn/label.tsx index 1aa238d96..4dff81ca2 100644 --- a/packages/ui/src/shadcn/label.tsx +++ b/packages/ui/src/shadcn/label.tsx @@ -5,7 +5,7 @@ import * as React from 'react'; import * as LabelPrimitive from '@radix-ui/react-label'; import { type VariantProps, cva } from 'class-variance-authority'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const labelVariants = cva( 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', diff --git a/packages/ui/src/shadcn/navigation-menu.tsx b/packages/ui/src/shadcn/navigation-menu.tsx index 4718259e7..4fe37806b 100644 --- a/packages/ui/src/shadcn/navigation-menu.tsx +++ b/packages/ui/src/shadcn/navigation-menu.tsx @@ -6,7 +6,7 @@ import { ChevronDownIcon } from '@radix-ui/react-icons'; import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'; import { cva } from 'class-variance-authority'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const NavigationMenu = React.forwardRef< React.ElementRef, diff --git a/packages/ui/src/shadcn/popover.tsx b/packages/ui/src/shadcn/popover.tsx index 1e60e0b62..3cebc5423 100644 --- a/packages/ui/src/shadcn/popover.tsx +++ b/packages/ui/src/shadcn/popover.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as PopoverPrimitive from '@radix-ui/react-popover'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Popover = PopoverPrimitive.Root; diff --git a/packages/ui/src/shadcn/radio-group.tsx b/packages/ui/src/shadcn/radio-group.tsx index 631164857..37e42bc97 100644 --- a/packages/ui/src/shadcn/radio-group.tsx +++ b/packages/ui/src/shadcn/radio-group.tsx @@ -5,7 +5,7 @@ import * as React from 'react'; import { CheckIcon } from '@radix-ui/react-icons'; import * as RadioGroupPrimitive from '@radix-ui/react-radio-group'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const RadioGroup = React.forwardRef< React.ElementRef, diff --git a/packages/ui/src/shadcn/scroll-area.tsx b/packages/ui/src/shadcn/scroll-area.tsx index 3dfec4af8..24ef95d04 100644 --- a/packages/ui/src/shadcn/scroll-area.tsx +++ b/packages/ui/src/shadcn/scroll-area.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const ScrollArea = React.forwardRef< React.ElementRef, diff --git a/packages/ui/src/shadcn/select.tsx b/packages/ui/src/shadcn/select.tsx index 33277551f..3091f2b3e 100644 --- a/packages/ui/src/shadcn/select.tsx +++ b/packages/ui/src/shadcn/select.tsx @@ -10,7 +10,7 @@ import { } from '@radix-ui/react-icons'; import * as SelectPrimitive from '@radix-ui/react-select'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Select = SelectPrimitive.Root; diff --git a/packages/ui/src/shadcn/separator.tsx b/packages/ui/src/shadcn/separator.tsx index 4a584571d..f8cb5a611 100644 --- a/packages/ui/src/shadcn/separator.tsx +++ b/packages/ui/src/shadcn/separator.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as SeparatorPrimitive from '@radix-ui/react-separator'; -import { cn } from '../utils'; +import { cn } from '../lib/utils'; const Separator = React.forwardRef< React.ElementRef, diff --git a/packages/ui/src/shadcn/sheet.tsx b/packages/ui/src/shadcn/sheet.tsx index f3b6941fa..9cde8b7bb 100644 --- a/packages/ui/src/shadcn/sheet.tsx +++ b/packages/ui/src/shadcn/sheet.tsx @@ -7,7 +7,7 @@ import { cva } from 'class-variance-authority'; import type { VariantProps } from 'class-variance-authority'; import { X } from 'lucide-react'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Sheet = SheetPrimitive.Root; diff --git a/packages/ui/src/shadcn/switch.tsx b/packages/ui/src/shadcn/switch.tsx index 163bf5e50..208b57bcc 100644 --- a/packages/ui/src/shadcn/switch.tsx +++ b/packages/ui/src/shadcn/switch.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as SwitchPrimitives from '@radix-ui/react-switch'; -import { cn } from '@kit/ui/utils'; +import { cn } from '../lib/utils'; const Switch = React.forwardRef< React.ElementRef, diff --git a/packages/ui/src/shadcn/table.tsx b/packages/ui/src/shadcn/table.tsx index ff4b8f96f..f69830652 100644 --- a/packages/ui/src/shadcn/table.tsx +++ b/packages/ui/src/shadcn/table.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Table = React.forwardRef< HTMLTableElement, diff --git a/packages/ui/src/shadcn/tabs.tsx b/packages/ui/src/shadcn/tabs.tsx index f26f82d04..04d4c3ccf 100644 --- a/packages/ui/src/shadcn/tabs.tsx +++ b/packages/ui/src/shadcn/tabs.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as TabsPrimitive from '@radix-ui/react-tabs'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const Tabs = TabsPrimitive.Root; diff --git a/packages/ui/src/shadcn/textarea.tsx b/packages/ui/src/shadcn/textarea.tsx index fbc84457b..1031fd26f 100644 --- a/packages/ui/src/shadcn/textarea.tsx +++ b/packages/ui/src/shadcn/textarea.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; export type TextareaProps = React.TextareaHTMLAttributes; diff --git a/packages/ui/src/shadcn/tooltip.tsx b/packages/ui/src/shadcn/tooltip.tsx index 3f8981609..7d74163ad 100644 --- a/packages/ui/src/shadcn/tooltip.tsx +++ b/packages/ui/src/shadcn/tooltip.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import * as TooltipPrimitive from '@radix-ui/react-tooltip'; -import { cn } from '../utils/cn'; +import { cn } from '../lib/utils'; const TooltipProvider = TooltipPrimitive.Provider; diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index c4697e934..3f909c1ed 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -1,8 +1,15 @@ { "extends": "@kit/tsconfig/base.json", "compilerOptions": { - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "paths": { + "~/components": ["./src/shadcn/*"], + "~/utils": ["./src/lib/utils"], + "~/lib/*": ["./src/lib/*"], + "~/hooks": ["./src/hooks"], + "~/ui": ["./src/shadcn/*"] + } }, "include": ["*.ts", "src"], "exclude": ["node_modules"] -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac05daca0..c1e1c1414 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1257,6 +1257,9 @@ importers: tailwind-merge: specifier: ^2.5.2 version: 2.5.2 + vaul: + specifier: ^0.9.1 + version: 0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@kit/eslint-config': specifier: workspace:* @@ -7631,6 +7634,12 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vaul@0.9.1: + resolution: {integrity: sha512-fAhd7i4RNMinx+WEm6pF3nOl78DFkAazcN04ElLPFF9BMCNGbY/kou8UMhIcicm0rJCNePJP0Yyza60gGOD0Jw==} + peerDependencies: + react: 18.3.1 + react-dom: 18.3.1 + vercel-email@0.0.6: resolution: {integrity: sha512-lpELZ8/B6qyLMUOzmvZiU5evo1Hv5jfSpI/rrzny5UYfOAUKFYycraXNT+fT/cC6ewUKQVJDg8/v3LwyX3cCzA==} @@ -15520,6 +15529,15 @@ snapshots: validate-npm-package-name@5.0.1: {} + vaul@0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@radix-ui/react-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + vercel-email@0.0.6: {} vfile-message@4.0.2: