diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c99c8fb60cbcb..a355b309cead8 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -3,6 +3,7 @@ /packages/shared-data/plans.ts @supabase/billing /packages/common/telemetry-constants.ts @supabase/growth-eng /packages/pg-meta @supabase/postgres @avallete +/packages/ui-patterns @supabase/design /apps/studio/ @supabase/Dashboard @@ -19,4 +20,6 @@ /apps/studio/components/interfaces/Organization/Documents/ @supabase/security /apps/studio/pages/new/index.tsx @supabase/security -/apps/studio/data/sql/queries/ @supabase/postgres @avallete \ No newline at end of file +/apps/studio/data/sql/queries/ @supabase/postgres @avallete + +/packages/shared-data/compute-disk-limits.ts @supabase/infra \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4ba0158ba061d..a2566899919aa 100644 --- a/.gitignore +++ b/.gitignore @@ -154,3 +154,6 @@ gcloud.json **/.sentryclirc keys.json + +# Playwright MCP +.playwright-mcp/* \ No newline at end of file diff --git a/CODEOWNERS b/CODEOWNERS deleted file mode 100644 index 7d2533f383a67..0000000000000 --- a/CODEOWNERS +++ /dev/null @@ -1,3 +0,0 @@ -packages/shared-data/compute-disk-limits.ts @supabase/infra -packages/shared-data/index.ts @supabase/infra - diff --git a/apps/cms/scripts/migrate.ts b/apps/cms/scripts/migrate.ts index 5d3a12c11e772..f0b0d17c9d6f4 100644 --- a/apps/cms/scripts/migrate.ts +++ b/apps/cms/scripts/migrate.ts @@ -1,4 +1,5 @@ import payload from 'payload' + // Use a minimal config for migrations to avoid importing the full app graph during build import payloadConfig from '../src/payload.migrate.config.ts' diff --git a/apps/cms/src/access/isAdmin.ts b/apps/cms/src/access/isAdmin.ts index 5e1261e26fb70..cb8123e95fb67 100644 --- a/apps/cms/src/access/isAdmin.ts +++ b/apps/cms/src/access/isAdmin.ts @@ -1,4 +1,5 @@ import type { AccessArgs, FieldAccess } from 'payload' + import type { User } from '../payload-types' type isAdmin = (args: AccessArgs) => boolean diff --git a/apps/cms/src/blocks/Banner/Component.tsx b/apps/cms/src/blocks/Banner/Component.tsx index c395d6878014b..ec5fd59dcac3c 100644 --- a/apps/cms/src/blocks/Banner/Component.tsx +++ b/apps/cms/src/blocks/Banner/Component.tsx @@ -1,8 +1,8 @@ -import type { BannerBlock as BannerBlockProps } from '@/payload-types' - -import { cn } from '@/utilities/ui' import React from 'react' + import RichText from '@/components/RichText' +import type { BannerBlock as BannerBlockProps } from '@/payload-types' +import { cn } from '@/utilities/ui' type Props = { className?: string diff --git a/apps/cms/src/blocks/Banner/config.ts b/apps/cms/src/blocks/Banner/config.ts index 53e46b5cbc4ed..5bfdc1aa1a371 100644 --- a/apps/cms/src/blocks/Banner/config.ts +++ b/apps/cms/src/blocks/Banner/config.ts @@ -1,10 +1,9 @@ -import type { Block } from 'payload' - import { FixedToolbarFeature, InlineToolbarFeature, lexicalEditor, } from '@payloadcms/richtext-lexical' +import type { Block } from 'payload' export const Banner: Block = { slug: 'banner', diff --git a/apps/cms/src/blocks/Code/Component.client.tsx b/apps/cms/src/blocks/Code/Component.client.tsx index fc8fb62545a74..93901f5220614 100644 --- a/apps/cms/src/blocks/Code/Component.client.tsx +++ b/apps/cms/src/blocks/Code/Component.client.tsx @@ -1,6 +1,8 @@ 'use client' + import { Highlight, themes } from 'prism-react-renderer' import React from 'react' + import { CopyButton } from './CopyButton' type Props = { diff --git a/apps/cms/src/blocks/Code/CopyButton.tsx b/apps/cms/src/blocks/Code/CopyButton.tsx index 546148fa740d1..3af833cb68dfe 100644 --- a/apps/cms/src/blocks/Code/CopyButton.tsx +++ b/apps/cms/src/blocks/Code/CopyButton.tsx @@ -1,8 +1,10 @@ 'use client' -import { Button } from '@/components/ui/button' + import { CopyIcon } from '@payloadcms/ui/icons/Copy' import { useState } from 'react' +import { Button } from '@/components/ui/button' + export function CopyButton({ code }: { code: string }) { const [text, setText] = useState('Copy') diff --git a/apps/cms/src/blocks/MediaBlock/Component.tsx b/apps/cms/src/blocks/MediaBlock/Component.tsx index 013fd87f849ff..21ed856bd2dfd 100644 --- a/apps/cms/src/blocks/MediaBlock/Component.tsx +++ b/apps/cms/src/blocks/MediaBlock/Component.tsx @@ -1,12 +1,10 @@ import type { StaticImageData } from 'next/image' - -import { cn } from '@/utilities/ui' import React from 'react' -import RichText from '@/components/RichText' - -import type { MediaBlock as MediaBlockProps } from '@/payload-types' import { Media } from '../../components/Media' +import RichText from '@/components/RichText' +import type { MediaBlock as MediaBlockProps } from '@/payload-types' +import { cn } from '@/utilities/ui' type Props = MediaBlockProps & { breakout?: boolean diff --git a/apps/cms/src/blocks/Quote/Component.tsx b/apps/cms/src/blocks/Quote/Component.tsx index 1689a82a535d5..0bf925e951814 100644 --- a/apps/cms/src/blocks/Quote/Component.tsx +++ b/apps/cms/src/blocks/Quote/Component.tsx @@ -1,7 +1,7 @@ -import type { QuoteBlock as QuoteBlockProps } from '@/payload-types' - import React from 'react' +import type { QuoteBlock as QuoteBlockProps } from '@/payload-types' + type Props = { className?: string } & QuoteBlockProps diff --git a/apps/cms/src/blocks/YouTube/Component.tsx b/apps/cms/src/blocks/YouTube/Component.tsx index 2d903a2a6ca17..f0c389bc39d27 100644 --- a/apps/cms/src/blocks/YouTube/Component.tsx +++ b/apps/cms/src/blocks/YouTube/Component.tsx @@ -1,7 +1,7 @@ -import type { YouTubeBlock as YouTubeBlockProps } from '@/payload-types' +import React from 'react' +import type { YouTubeBlock as YouTubeBlockProps } from '@/payload-types' import { cn } from '@/utilities/ui' -import React from 'react' type Props = { className?: string diff --git a/apps/cms/src/collections/Categories.ts b/apps/cms/src/collections/Categories.ts index d5b20b6d0e384..e9dbfc9d3829c 100644 --- a/apps/cms/src/collections/Categories.ts +++ b/apps/cms/src/collections/Categories.ts @@ -1,4 +1,5 @@ import type { CollectionConfig } from 'payload' + import { isAdmin } from '../access/isAdmin' export const Categories: CollectionConfig = { diff --git a/apps/cms/src/collections/Customers/index.ts b/apps/cms/src/collections/Customers/index.ts index 56bf14bf3187c..9e1f2e47abf66 100644 --- a/apps/cms/src/collections/Customers/index.ts +++ b/apps/cms/src/collections/Customers/index.ts @@ -1,5 +1,10 @@ -import type { CollectionConfig } from 'payload' - +import { + MetaDescriptionField, + MetaImageField, + MetaTitleField, + OverviewField, + PreviewField, +} from '@payloadcms/plugin-seo/fields' import { BlocksFeature, FixedToolbarFeature, @@ -8,26 +13,18 @@ import { InlineToolbarFeature, lexicalEditor, } from '@payloadcms/richtext-lexical' +import type { CollectionConfig } from 'payload' import { isAnyone } from '../../access/isAnyone.ts' import { isAuthenticated } from '../../access/isAuthenticated.ts' - import { Banner } from '../../blocks/Banner/config.ts' import { Code } from '../../blocks/Code/config.ts' import { MediaBlock } from '../../blocks/MediaBlock/config.ts' import { Quote } from '../../blocks/Quote/config.ts' import { YouTube } from '../../blocks/YouTube/config.ts' -import { revalidateDelete, revalidateCustomer } from './hooks/revalidateCustomer.ts' - -import { - MetaDescriptionField, - MetaImageField, - MetaTitleField, - OverviewField, - PreviewField, -} from '@payloadcms/plugin-seo/fields' import { slugField } from '../../fields/slug/index.ts' import { WWW_SITE_ORIGIN } from '../../utilities/constants.ts' +import { revalidateCustomer, revalidateDelete } from './hooks/revalidateCustomer.ts' const industryOptions = [ { label: 'Healthcare', value: 'healthcare' }, diff --git a/apps/cms/src/collections/Events/index.ts b/apps/cms/src/collections/Events/index.ts index de909c08e8cac..1f3896b5e3a8d 100644 --- a/apps/cms/src/collections/Events/index.ts +++ b/apps/cms/src/collections/Events/index.ts @@ -1,5 +1,10 @@ -import type { CollectionConfig } from 'payload' - +import { + MetaDescriptionField, + MetaImageField, + MetaTitleField, + OverviewField, + PreviewField, +} from '@payloadcms/plugin-seo/fields' import { BlocksFeature, FixedToolbarFeature, @@ -8,27 +13,19 @@ import { InlineToolbarFeature, lexicalEditor, } from '@payloadcms/richtext-lexical' +import type { CollectionConfig } from 'payload' import { isAnyone } from '../../access/isAnyone.ts' import { isAuthenticated } from '../../access/isAuthenticated.ts' - import { Banner } from '../../blocks/Banner/config.ts' import { Code } from '../../blocks/Code/config.ts' import { MediaBlock } from '../../blocks/MediaBlock/config.ts' import { Quote } from '../../blocks/Quote/config.ts' import { YouTube } from '../../blocks/YouTube/config.ts' -import { revalidateDelete, revalidateEvent } from './hooks/revalidateEvent.ts' - -import { - MetaDescriptionField, - MetaImageField, - MetaTitleField, - OverviewField, - PreviewField, -} from '@payloadcms/plugin-seo/fields' import { slugField } from '../../fields/slug/index.ts' -import { timezoneOptions } from '../../utilities/timezones.ts' import { WWW_SITE_ORIGIN } from '../../utilities/constants.ts' +import { timezoneOptions } from '../../utilities/timezones.ts' +import { revalidateDelete, revalidateEvent } from './hooks/revalidateEvent.ts' const eventTypeOptions = [ { label: 'Conference', value: 'conference' }, diff --git a/apps/cms/src/collections/Media.ts b/apps/cms/src/collections/Media.ts index 9b8f9c70ae802..2d29b0ac2a444 100644 --- a/apps/cms/src/collections/Media.ts +++ b/apps/cms/src/collections/Media.ts @@ -1,9 +1,9 @@ -import type { CollectionConfig } from 'payload' import { FixedToolbarFeature, InlineToolbarFeature, lexicalEditor, } from '@payloadcms/richtext-lexical' +import type { CollectionConfig } from 'payload' import { isAnyone } from '../access/isAnyone.ts' import { isAuthenticated } from '../access/isAuthenticated.ts' diff --git a/apps/cms/src/collections/Posts/hooks/populateAuthors.ts b/apps/cms/src/collections/Posts/hooks/populateAuthors.ts index 6a57e36534af1..8d854d65d2644 100644 --- a/apps/cms/src/collections/Posts/hooks/populateAuthors.ts +++ b/apps/cms/src/collections/Posts/hooks/populateAuthors.ts @@ -1,4 +1,5 @@ import type { CollectionAfterReadHook } from 'payload' + import type { Author } from '../../../payload-types' export const populateAuthors: CollectionAfterReadHook = async ({ doc, req: { payload } }) => { diff --git a/apps/cms/src/collections/Posts/index.ts b/apps/cms/src/collections/Posts/index.ts index 72e8830bb3993..51fc353442013 100644 --- a/apps/cms/src/collections/Posts/index.ts +++ b/apps/cms/src/collections/Posts/index.ts @@ -1,5 +1,10 @@ -import type { CollectionConfig } from 'payload' - +import { + MetaDescriptionField, + MetaImageField, + MetaTitleField, + OverviewField, + PreviewField, +} from '@payloadcms/plugin-seo/fields' import { BlocksFeature, FixedToolbarFeature, @@ -8,27 +13,19 @@ import { InlineToolbarFeature, lexicalEditor, } from '@payloadcms/richtext-lexical' +import type { CollectionConfig } from 'payload' import { isAnyone } from '../../access/isAnyone.ts' import { isAuthenticated } from '../../access/isAuthenticated.ts' - import { Banner } from '../../blocks/Banner/config.ts' import { Code } from '../../blocks/Code/config.ts' import { MediaBlock } from '../../blocks/MediaBlock/config.ts' import { Quote } from '../../blocks/Quote/config.ts' import { YouTube } from '../../blocks/YouTube/config.ts' -import { populateAuthors } from './hooks/populateAuthors.ts' -import { revalidateDelete, revalidatePost } from './hooks/revalidatePost.ts' - -import { - MetaDescriptionField, - MetaImageField, - MetaTitleField, - OverviewField, - PreviewField, -} from '@payloadcms/plugin-seo/fields' import { slugField } from '../../fields/slug/index.ts' import { WWW_SITE_ORIGIN } from '../../utilities/constants.ts' +import { populateAuthors } from './hooks/populateAuthors.ts' +import { revalidateDelete, revalidatePost } from './hooks/revalidatePost.ts' const launchweekOptions = [ { label: '6', value: '6' }, diff --git a/apps/cms/src/collections/Users.ts b/apps/cms/src/collections/Users.ts index de665459f8e6d..e7d8db53cbff7 100644 --- a/apps/cms/src/collections/Users.ts +++ b/apps/cms/src/collections/Users.ts @@ -1,4 +1,5 @@ import type { CollectionConfig } from 'payload' + import { isAdmin, isAdminFieldLevel } from '../access/isAdmin.ts' import { isAdminOrSelf } from '../access/isAdminOrSelf.ts' diff --git a/apps/cms/src/components/AdminBar/index.tsx b/apps/cms/src/components/AdminBar/index.tsx index 08c5c6c2e9d5b..f2d320a5f6192 100644 --- a/apps/cms/src/components/AdminBar/index.tsx +++ b/apps/cms/src/components/AdminBar/index.tsx @@ -1,12 +1,11 @@ 'use client' import type { PayloadAdminBarProps, PayloadMeUser } from '@payloadcms/admin-bar' - -import { cn } from '@/utilities/ui' -import { useSelectedLayoutSegments } from 'next/navigation' import { PayloadAdminBar } from '@payloadcms/admin-bar' +import { useRouter, useSelectedLayoutSegments } from 'next/navigation' import React, { useState } from 'react' -import { useRouter } from 'next/navigation' + +import { cn } from '@/utilities/ui' import './index.scss' diff --git a/apps/cms/src/components/Card/index.tsx b/apps/cms/src/components/Card/index.tsx index 72c44d27f72ad..23f5aa30afb48 100644 --- a/apps/cms/src/components/Card/index.tsx +++ b/apps/cms/src/components/Card/index.tsx @@ -1,12 +1,12 @@ 'use client' -import { cn } from '@/utilities/ui' -import useClickableCard from '@/utilities/useClickableCard' + import Link from 'next/link' import React, { Fragment } from 'react' -import type { Post } from '@/payload-types' - import { Media } from '@/components/Media' +import type { Post } from '@/payload-types' +import { cn } from '@/utilities/ui' +import useClickableCard from '@/utilities/useClickableCard' export type CardPostData = Pick diff --git a/apps/cms/src/components/CollectionArchive/index.tsx b/apps/cms/src/components/CollectionArchive/index.tsx index b0a2a1c4935f9..c88528f365cc4 100644 --- a/apps/cms/src/components/CollectionArchive/index.tsx +++ b/apps/cms/src/components/CollectionArchive/index.tsx @@ -1,7 +1,7 @@ -import { cn } from '@/utilities/ui' import React from 'react' import { Card, CardPostData } from '@/components/Card' +import { cn } from '@/utilities/ui' export type Props = { posts: CardPostData[] diff --git a/apps/cms/src/components/Link/index.tsx b/apps/cms/src/components/Link/index.tsx index ed9f7be0b2398..39a429b40cc6b 100644 --- a/apps/cms/src/components/Link/index.tsx +++ b/apps/cms/src/components/Link/index.tsx @@ -1,9 +1,9 @@ -import { Button, type ButtonProps } from '@/components/ui/button' -import { cn } from '@/utilities/ui' import Link from 'next/link' import React from 'react' +import { Button, type ButtonProps } from '@/components/ui/button' import type { Post } from '@/payload-types' +import { cn } from '@/utilities/ui' type CMSLinkType = { appearance?: 'inline' | ButtonProps['variant'] diff --git a/apps/cms/src/components/LivePreviewListener/index.tsx b/apps/cms/src/components/LivePreviewListener/index.tsx index 8b40675e7fa97..856d773acd4af 100644 --- a/apps/cms/src/components/LivePreviewListener/index.tsx +++ b/apps/cms/src/components/LivePreviewListener/index.tsx @@ -1,9 +1,11 @@ 'use client' -import { getClientSideURL } from '@/utilities/getURL' + import { RefreshRouteOnSave as PayloadLivePreview } from '@payloadcms/live-preview-react' import { useRouter } from 'next/navigation' import React from 'react' +import { getClientSideURL } from '@/utilities/getURL' + export const LivePreviewListener: React.FC = () => { const router = useRouter() return diff --git a/apps/cms/src/components/Media/ImageMedia/index.tsx b/apps/cms/src/components/Media/ImageMedia/index.tsx index c472254da6c60..5cd28b8e23dfd 100644 --- a/apps/cms/src/components/Media/ImageMedia/index.tsx +++ b/apps/cms/src/components/Media/ImageMedia/index.tsx @@ -1,15 +1,13 @@ 'use client' import type { StaticImageData } from 'next/image' - -import { cn } from '@/utilities/ui' import NextImage from 'next/image' import React from 'react' import type { Props as MediaProps } from '../types' - import { cssVariables } from '@/cssVariables' import { getClientSideURL } from '@/utilities/getURL' +import { cn } from '@/utilities/ui' const { breakpoints } = cssVariables diff --git a/apps/cms/src/components/Media/VideoMedia/index.tsx b/apps/cms/src/components/Media/VideoMedia/index.tsx index 873eaacda51b2..93632475505f4 100644 --- a/apps/cms/src/components/Media/VideoMedia/index.tsx +++ b/apps/cms/src/components/Media/VideoMedia/index.tsx @@ -1,11 +1,10 @@ 'use client' -import { cn } from '@/utilities/ui' import React, { useEffect, useRef } from 'react' import type { Props as MediaProps } from '../types' - import { getClientSideURL } from '@/utilities/getURL' +import { cn } from '@/utilities/ui' export const VideoMedia: React.FC = (props) => { const { onClick, resource, videoClassName } = props diff --git a/apps/cms/src/components/Media/index.tsx b/apps/cms/src/components/Media/index.tsx index a4e2b9d0ef31b..56bf75d872ebc 100644 --- a/apps/cms/src/components/Media/index.tsx +++ b/apps/cms/src/components/Media/index.tsx @@ -1,8 +1,7 @@ import React, { Fragment } from 'react' -import type { Props } from './types' - import { ImageMedia } from './ImageMedia' +import type { Props } from './types' import { VideoMedia } from './VideoMedia' export const Media: React.FC = (props) => { diff --git a/apps/cms/src/components/Pagination/index.tsx b/apps/cms/src/components/Pagination/index.tsx index 448b301df2daf..bac01a968c41e 100644 --- a/apps/cms/src/components/Pagination/index.tsx +++ b/apps/cms/src/components/Pagination/index.tsx @@ -1,4 +1,8 @@ 'use client' + +import { useRouter } from 'next/navigation' +import React from 'react' + import { Pagination as PaginationComponent, PaginationContent, @@ -9,8 +13,6 @@ import { PaginationPrevious, } from '@/components/ui/pagination' import { cn } from '@/utilities/ui' -import { useRouter } from 'next/navigation' -import React from 'react' export const Pagination: React.FC<{ className?: string diff --git a/apps/cms/src/components/RichText/index.tsx b/apps/cms/src/components/RichText/index.tsx index 727236737d4a6..50a48615ffb4f 100644 --- a/apps/cms/src/components/RichText/index.tsx +++ b/apps/cms/src/components/RichText/index.tsx @@ -1,4 +1,3 @@ -import { MediaBlock } from '@/blocks/MediaBlock/Component' import { DefaultNodeTypes, SerializedBlockNode, @@ -6,22 +5,22 @@ import { type DefaultTypedEditorState, } from '@payloadcms/richtext-lexical' import { + RichText as ConvertRichText, JSXConvertersFunction, LinkJSXConverter, - RichText as ConvertRichText, } from '@payloadcms/richtext-lexical/react' +import { BannerBlock } from '@/blocks/Banner/Component' import { CodeBlock, CodeBlockProps } from '@/blocks/Code/Component' - +import { MediaBlock } from '@/blocks/MediaBlock/Component' +import { QuoteBlock } from '@/blocks/Quote/Component' +import { YouTubeBlock } from '@/blocks/YouTube/Component' import type { BannerBlock as BannerBlockProps, MediaBlock as MediaBlockProps, QuoteBlock as QuoteBlockProps, YouTubeBlock as YouTubeBlockProps, } from '@/payload-types' -import { BannerBlock } from '@/blocks/Banner/Component' -import { QuoteBlock } from '@/blocks/Quote/Component' -import { YouTubeBlock } from '@/blocks/YouTube/Component' import { cn } from '@/utilities/ui' type NodeTypes = diff --git a/apps/cms/src/components/ui/button.tsx b/apps/cms/src/components/ui/button.tsx index 9cb36846b2e0b..34e2a4435fa0f 100644 --- a/apps/cms/src/components/ui/button.tsx +++ b/apps/cms/src/components/ui/button.tsx @@ -1,8 +1,9 @@ -import { cn } from '@/utilities/ui' import { Slot } from '@radix-ui/react-slot' -import { type VariantProps, cva } from 'class-variance-authority' +import { cva, type VariantProps } from 'class-variance-authority' import * as React from 'react' +import { cn } from '@/utilities/ui' + const buttonVariants = cva( 'inline-flex items-center justify-center whitespace-nowrap rounded text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', { diff --git a/apps/cms/src/components/ui/card.tsx b/apps/cms/src/components/ui/card.tsx index 54b8b442d0014..7a37960d69fae 100644 --- a/apps/cms/src/components/ui/card.tsx +++ b/apps/cms/src/components/ui/card.tsx @@ -1,6 +1,7 @@ -import { cn } from '@/utilities/ui' import * as React from 'react' +import { cn } from '@/utilities/ui' + const Card: React.FC< { ref?: React.Ref } & React.HTMLAttributes > = ({ className, ref, ...props }) => ( diff --git a/apps/cms/src/components/ui/checkbox.tsx b/apps/cms/src/components/ui/checkbox.tsx index 1f91c2ec9b98f..0a83952d88e7a 100644 --- a/apps/cms/src/components/ui/checkbox.tsx +++ b/apps/cms/src/components/ui/checkbox.tsx @@ -1,10 +1,11 @@ 'use client' -import { cn } from '@/utilities/ui' import * as CheckboxPrimitive from '@radix-ui/react-checkbox' import { Check } from 'lucide-react' import * as React from 'react' +import { cn } from '@/utilities/ui' + const Checkbox: React.FC< { ref?: React.Ref diff --git a/apps/cms/src/components/ui/input.tsx b/apps/cms/src/components/ui/input.tsx index 3a2208f24710e..b8a2213b69414 100644 --- a/apps/cms/src/components/ui/input.tsx +++ b/apps/cms/src/components/ui/input.tsx @@ -1,6 +1,7 @@ -import { cn } from '@/utilities/ui' import * as React from 'react' +import { cn } from '@/utilities/ui' + const Input: React.FC< { ref?: React.Ref diff --git a/apps/cms/src/components/ui/label.tsx b/apps/cms/src/components/ui/label.tsx index ff6a510afad18..270f65df45f77 100644 --- a/apps/cms/src/components/ui/label.tsx +++ b/apps/cms/src/components/ui/label.tsx @@ -1,10 +1,11 @@ 'use client' -import { cn } from '@/utilities/ui' import * as LabelPrimitive from '@radix-ui/react-label' -import { type VariantProps, cva } from 'class-variance-authority' +import { cva, type VariantProps } from 'class-variance-authority' import * as React from 'react' +import { cn } from '@/utilities/ui' + const labelVariants = cva( 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70' ) diff --git a/apps/cms/src/components/ui/pagination.tsx b/apps/cms/src/components/ui/pagination.tsx index 12d4f1dfb40be..37f29bf5ac37e 100644 --- a/apps/cms/src/components/ui/pagination.tsx +++ b/apps/cms/src/components/ui/pagination.tsx @@ -1,9 +1,9 @@ -import type { ButtonProps } from '@/components/ui/button' +import { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react' +import * as React from 'react' +import type { ButtonProps } from '@/components/ui/button' import { buttonVariants } from '@/components/ui/button' import { cn } from '@/utilities/ui' -import { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react' -import * as React from 'react' const Pagination = ({ className, ...props }: React.ComponentProps<'nav'>) => (