commerce-toolkit 0.0.42 → 0.1.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/banner-dismiss-DTT0uoeG.js.map +1 -1
- package/dist/banner-dismiss-DfFezmDg.cjs.map +1 -1
- package/dist/{blog-post-card-author-Cwm4afzF.js → blog-post-card-author-CD_eplIv.js} +24 -23
- package/dist/blog-post-card-author-CD_eplIv.js.map +1 -0
- package/dist/blog-post-card-author-D4zo7N_N.cjs +2 -0
- package/dist/blog-post-card-author-D4zo7N_N.cjs.map +1 -0
- package/dist/blog-post-card.cjs +1 -1
- package/dist/blog-post-card.js +1 -1
- package/dist/category-card.cjs +2 -0
- package/dist/category-card.cjs.map +1 -0
- package/dist/category-card.js +233 -0
- package/dist/category-card.js.map +1 -0
- package/dist/components/banner/primitives/banner-provider.d.ts.map +1 -1
- package/dist/components/blog-post-card/primitives/blog-post-card-fallback.d.ts.map +1 -1
- package/dist/components/category-card/category-card.d.ts +42 -0
- package/dist/components/category-card/category-card.d.ts.map +1 -0
- package/dist/components/category-card/index.d.ts +3 -0
- package/dist/components/category-card/index.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-fallback.d.ts +4 -0
- package/dist/components/category-card/primitives/category-card-fallback.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-icon.d.ts +5 -0
- package/dist/components/category-card/primitives/category-card-icon.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-image.d.ts +6 -0
- package/dist/components/category-card/primitives/category-card-image.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-link.d.ts +6 -0
- package/dist/components/category-card/primitives/category-card-link.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-overlay.d.ts +4 -0
- package/dist/components/category-card/primitives/category-card-overlay.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-root.d.ts +21 -0
- package/dist/components/category-card/primitives/category-card-root.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-skeleton.d.ts +4 -0
- package/dist/components/category-card/primitives/category-card-skeleton.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-thumbnail.d.ts +4 -0
- package/dist/components/category-card/primitives/category-card-thumbnail.d.ts.map +1 -0
- package/dist/components/category-card/primitives/category-card-title.d.ts +4 -0
- package/dist/components/category-card/primitives/category-card-title.d.ts.map +1 -0
- package/dist/components/category-card/primitives.d.ts +10 -0
- package/dist/components/category-card/primitives.d.ts.map +1 -0
- package/dist/components/product-card/primitives/product-card-compare.d.ts.map +1 -1
- package/dist/components/product-card/primitives/product-card-fallback.d.ts.map +1 -1
- package/dist/components/product-card/primitives/product-card-link.d.ts.map +1 -1
- package/dist/components/rating/primitives/rating-root.d.ts.map +1 -1
- package/dist/components/reveal/primitives/reveal-root.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/product-card.cjs +1 -1
- package/dist/product-card.cjs.map +1 -1
- package/dist/product-card.js +84 -82
- package/dist/product-card.js.map +1 -1
- package/dist/rating-value-CkSY9Pyr.cjs.map +1 -1
- package/dist/rating-value-DBtmrorI.js.map +1 -1
- package/dist/reveal-trigger-C-dcymoc.js.map +1 -1
- package/dist/reveal-trigger-XpH07-oH.cjs.map +1 -1
- package/package.json +11 -1
- package/dist/blog-post-card-author-BGqy41Da.cjs +0 -2
- package/dist/blog-post-card-author-BGqy41Da.cjs.map +0 -1
- package/dist/blog-post-card-author-Cwm4afzF.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner-dismiss-DTT0uoeG.js","sources":["../src/components/banner/primitives/banner-provider.tsx","../src/components/banner/primitives/banner-root.tsx","../src/components/banner/primitives/banner-content.tsx","../src/components/banner/primitives/banner-text.tsx","../src/components/banner/primitives/banner-dismiss.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nexport interface BannerProviderProps {\n id: string;\n hideDismiss: boolean;\n children: ReactNode;\n onDismiss?: () => void;\n}\n\ninterface BannerContext extends Pick<BannerProviderProps, 'id' | 'hideDismiss'> {\n isInitialized: boolean;\n isDismissed: boolean;\n handleDismiss: () => void;\n}\n\nexport const BannerContext = createContext<BannerContext | undefined>(undefined);\n\nexport function BannerProvider({ id, hideDismiss, onDismiss, children }: BannerProviderProps) {\n const [isDismissed, setIsDismissed] = useState<boolean>(false);\n const [isInitialized, setIsInitialized] = useState<boolean>(false);\n\n useEffect(() => {\n const hidden = localStorage.getItem(`${id}-hidden-banner`) === 'true';\n setIsDismissed(hidden);\n setIsInitialized(true);\n }, [id]);\n\n const handleDismiss = useCallback(() => {\n setIsDismissed(true);\n localStorage.setItem(`${id}-hidden-banner`, 'true');\n onDismiss?.();\n }, [id, onDismiss]);\n\n const contextValues = useMemo(\n () => ({\n id,\n isInitialized,\n isDismissed,\n hideDismiss,\n handleDismiss,\n }),\n [id, isInitialized, isDismissed, hideDismiss, handleDismiss],\n );\n\n return (\n <BannerContext.Provider value={contextValues}>\n {isInitialized ? children : null}\n </BannerContext.Provider>\n );\n}\n\nexport function useBanner() {\n const context = use(BannerContext);\n\n if (context === undefined) {\n throw new Error('useBanner must be used within a BannerProvider');\n }\n\n return context;\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useBanner } from '@/components/banner';\nimport { cn } from '@/lib';\n\nexport type BannerRootProps = ComponentProps<'div'>;\n\nexport function BannerRoot({ children, className, ...props }: BannerRootProps) {\n const { id, isDismissed } = useBanner();\n\n return (\n <div\n className={cn(\n 'overflow-hidden bg-[var(--banner-background,hsl(var(--primary)))] transition-all duration-300 ease-in @container',\n isDismissed ? 'pointer-events-none max-h-0' : 'max-h-32',\n className,\n )}\n data-slot=\"banner-root\"\n id={id}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BannerContentProps = ComponentProps<'div'>;\n\nexport function BannerContent({ className, children }: BannerContentProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-4 px-8 py-3', className)}\n data-slot=\"banner-content\"\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BannerTextProps = ComponentProps<'div'>;\n\nexport function BannerText({ children, className, ...props }: BannerTextProps) {\n return (\n <div\n className={cn(\n 'flex-1 text-sm text-[var(--banner-text,hsl(var(--foreground)))] [font-family:var(--banner-font-family,var(--font-family-body))] @xl:text-center @xl:text-base',\n className,\n )}\n data-slot=\"banner-text\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { X } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nimport { useBanner } from '@/components/banner';\nimport { cn } from '@/lib';\n\nexport type BannerDismissProps = ComponentProps<'button'>;\n\nexport function BannerDismiss({ className, ...props }: BannerDismissProps) {\n const { hideDismiss, handleDismiss } = useBanner();\n\n if (hideDismiss) return null;\n\n return (\n <button\n aria-label=\"Dismiss banner\"\n className={cn(\n 'flex h-8 w-8 items-center justify-center rounded-full bg-[var(--banner-close-background,transparent)] text-[var(--banner-close-icon,color-mix(in_oklab,hsl(var(--foreground))_50%,transparent))] transition-colors duration-300 hover:bg-[var(--banner-close-background-hover,color-mix(in_oklab,hsl(var(--background))_40%,transparent))] hover:text-[var(--banner-close-icon-hover,hsl(var(--foreground)))] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--banner-focus,hsl(var(--foreground)))]',\n className,\n )}\n data-slot=\"banner-dismiss\"\n onClick={(e) => {\n e.preventDefault();\n handleDismiss();\n }}\n {...props}\n >\n <X absoluteStrokeWidth size={20} strokeWidth={1.5} />\n </button>\n );\n}\n"],"names":["BannerContext","createContext","BannerProvider","id","hideDismiss","onDismiss","children","isDismissed","setIsDismissed","useState","isInitialized","setIsInitialized","useEffect","hidden","handleDismiss","useCallback","contextValues","useMemo","jsx","useBanner","context","use","BannerRoot","className","props","cn","BannerContent","BannerText","BannerDismiss","e","X"],"mappings":";;;;AAkBO,MAAMA,IAAgBC,EAAyC,MAAS;AAExE,SAASC,EAAe,EAAE,IAAAC,GAAI,aAAAC,GAAa,WAAAC,GAAW,UAAAC,KAAiC;AAC5F,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAkB,EAAK,GACvD,CAACC,GAAeC,CAAgB,IAAIF,EAAkB,EAAK;AAEjE,EAAAG,EAAU,MAAM;AACd,UAAMC,IAAS,aAAa,QAAQ,GAAGV,CAAE,gBAAgB,MAAM;
|
|
1
|
+
{"version":3,"file":"banner-dismiss-DTT0uoeG.js","sources":["../src/components/banner/primitives/banner-provider.tsx","../src/components/banner/primitives/banner-root.tsx","../src/components/banner/primitives/banner-content.tsx","../src/components/banner/primitives/banner-text.tsx","../src/components/banner/primitives/banner-dismiss.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nexport interface BannerProviderProps {\n id: string;\n hideDismiss: boolean;\n children: ReactNode;\n onDismiss?: () => void;\n}\n\ninterface BannerContext extends Pick<BannerProviderProps, 'id' | 'hideDismiss'> {\n isInitialized: boolean;\n isDismissed: boolean;\n handleDismiss: () => void;\n}\n\nexport const BannerContext = createContext<BannerContext | undefined>(undefined);\n\nexport function BannerProvider({ id, hideDismiss, onDismiss, children }: BannerProviderProps) {\n const [isDismissed, setIsDismissed] = useState<boolean>(false);\n const [isInitialized, setIsInitialized] = useState<boolean>(false);\n\n useEffect(() => {\n const hidden = localStorage.getItem(`${id}-hidden-banner`) === 'true';\n\n setIsDismissed(hidden);\n setIsInitialized(true);\n }, [id]);\n\n const handleDismiss = useCallback(() => {\n setIsDismissed(true);\n localStorage.setItem(`${id}-hidden-banner`, 'true');\n onDismiss?.();\n }, [id, onDismiss]);\n\n const contextValues = useMemo(\n () => ({\n id,\n isInitialized,\n isDismissed,\n hideDismiss,\n handleDismiss,\n }),\n [id, isInitialized, isDismissed, hideDismiss, handleDismiss],\n );\n\n return (\n <BannerContext.Provider value={contextValues}>\n {isInitialized ? children : null}\n </BannerContext.Provider>\n );\n}\n\nexport function useBanner() {\n const context = use(BannerContext);\n\n if (context === undefined) {\n throw new Error('useBanner must be used within a BannerProvider');\n }\n\n return context;\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useBanner } from '@/components/banner';\nimport { cn } from '@/lib';\n\nexport type BannerRootProps = ComponentProps<'div'>;\n\nexport function BannerRoot({ children, className, ...props }: BannerRootProps) {\n const { id, isDismissed } = useBanner();\n\n return (\n <div\n className={cn(\n 'overflow-hidden bg-[var(--banner-background,hsl(var(--primary)))] transition-all duration-300 ease-in @container',\n isDismissed ? 'pointer-events-none max-h-0' : 'max-h-32',\n className,\n )}\n data-slot=\"banner-root\"\n id={id}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BannerContentProps = ComponentProps<'div'>;\n\nexport function BannerContent({ className, children }: BannerContentProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-4 px-8 py-3', className)}\n data-slot=\"banner-content\"\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BannerTextProps = ComponentProps<'div'>;\n\nexport function BannerText({ children, className, ...props }: BannerTextProps) {\n return (\n <div\n className={cn(\n 'flex-1 text-sm text-[var(--banner-text,hsl(var(--foreground)))] [font-family:var(--banner-font-family,var(--font-family-body))] @xl:text-center @xl:text-base',\n className,\n )}\n data-slot=\"banner-text\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { X } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nimport { useBanner } from '@/components/banner';\nimport { cn } from '@/lib';\n\nexport type BannerDismissProps = ComponentProps<'button'>;\n\nexport function BannerDismiss({ className, ...props }: BannerDismissProps) {\n const { hideDismiss, handleDismiss } = useBanner();\n\n if (hideDismiss) return null;\n\n return (\n <button\n aria-label=\"Dismiss banner\"\n className={cn(\n 'flex h-8 w-8 items-center justify-center rounded-full bg-[var(--banner-close-background,transparent)] text-[var(--banner-close-icon,color-mix(in_oklab,hsl(var(--foreground))_50%,transparent))] transition-colors duration-300 hover:bg-[var(--banner-close-background-hover,color-mix(in_oklab,hsl(var(--background))_40%,transparent))] hover:text-[var(--banner-close-icon-hover,hsl(var(--foreground)))] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--banner-focus,hsl(var(--foreground)))]',\n className,\n )}\n data-slot=\"banner-dismiss\"\n onClick={(e) => {\n e.preventDefault();\n handleDismiss();\n }}\n {...props}\n >\n <X absoluteStrokeWidth size={20} strokeWidth={1.5} />\n </button>\n );\n}\n"],"names":["BannerContext","createContext","BannerProvider","id","hideDismiss","onDismiss","children","isDismissed","setIsDismissed","useState","isInitialized","setIsInitialized","useEffect","hidden","handleDismiss","useCallback","contextValues","useMemo","jsx","useBanner","context","use","BannerRoot","className","props","cn","BannerContent","BannerText","BannerDismiss","e","X"],"mappings":";;;;AAkBO,MAAMA,IAAgBC,EAAyC,MAAS;AAExE,SAASC,EAAe,EAAE,IAAAC,GAAI,aAAAC,GAAa,WAAAC,GAAW,UAAAC,KAAiC;AAC5F,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAkB,EAAK,GACvD,CAACC,GAAeC,CAAgB,IAAIF,EAAkB,EAAK;AAEjE,EAAAG,EAAU,MAAM;AACd,UAAMC,IAAS,aAAa,QAAQ,GAAGV,CAAE,gBAAgB,MAAM;AAE/D,IAAAK,EAAeK,CAAM,GACrBF,EAAiB,EAAI;AAAA,EACvB,GAAG,CAACR,CAAE,CAAC;AAEP,QAAMW,IAAgBC,EAAY,MAAM;AACtC,IAAAP,EAAe,EAAI,GACnB,aAAa,QAAQ,GAAGL,CAAE,kBAAkB,MAAM,GAClDE,IAAA;AAAA,EACF,GAAG,CAACF,GAAIE,CAAS,CAAC,GAEZW,IAAgBC;AAAA,IACpB,OAAO;AAAA,MACL,IAAAd;AAAA,MACA,eAAAO;AAAA,MACA,aAAAH;AAAA,MACA,aAAAH;AAAA,MACA,eAAAU;AAAA,IAAA;AAAA,IAEF,CAACX,GAAIO,GAAeH,GAAaH,GAAaU,CAAa;AAAA,EAAA;AAG7D,SACE,gBAAAI,EAAClB,EAAc,UAAd,EAAuB,OAAOgB,GAC5B,UAAAN,IAAgBJ,IAAW,MAC9B;AAEJ;AAEO,SAASa,IAAY;AAC1B,QAAMC,IAAUC,EAAIrB,CAAa;AAEjC,MAAIoB,MAAY;AACd,UAAM,IAAI,MAAM,gDAAgD;AAGlE,SAAOA;AACT;ACtDO,SAASE,EAAW,EAAE,UAAAhB,GAAU,WAAAiB,GAAW,GAAGC,KAA0B;AAC7E,QAAM,EAAE,IAAArB,GAAI,aAAAI,EAAA,IAAgBY,EAAA;AAE5B,SACE,gBAAAD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWO;AAAA,QACT;AAAA,QACAlB,IAAc,gCAAgC;AAAA,QAC9CgB;AAAA,MAAA;AAAA,MAEF,aAAU;AAAA,MACV,IAAApB;AAAA,MACC,GAAGqB;AAAA,MAEH,UAAAlB;AAAA,IAAA;AAAA,EAAA;AAGP;AClBO,SAASoB,EAAc,EAAE,WAAAH,GAAW,UAAAjB,KAAgC;AACzE,SACE,gBAAAY;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWO,EAAG,qDAAqDF,CAAS;AAAA,MAC5E,aAAU;AAAA,MAET,UAAAjB;AAAA,IAAA;AAAA,EAAA;AAGP;ACXO,SAASqB,EAAW,EAAE,UAAArB,GAAU,WAAAiB,GAAW,GAAGC,KAA0B;AAC7E,SACE,gBAAAN;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWO;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAEF,aAAU;AAAA,MACT,GAAGC;AAAA,MAEH,UAAAlB;AAAA,IAAA;AAAA,EAAA;AAGP;ACTO,SAASsB,EAAc,EAAE,WAAAL,GAAW,GAAGC,KAA6B;AACzE,QAAM,EAAE,aAAApB,GAAa,eAAAU,EAAA,IAAkBK,EAAA;AAEvC,SAAIf,IAAoB,OAGtB,gBAAAc;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,WAAWO;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAEF,aAAU;AAAA,MACV,SAAS,CAACM,MAAM;AACd,QAAAA,EAAE,eAAA,GACFf,EAAA;AAAA,MACF;AAAA,MACC,GAAGU;AAAA,MAEJ,4BAACM,GAAA,EAAE,qBAAmB,IAAC,MAAM,IAAI,aAAa,IAAA,CAAK;AAAA,IAAA;AAAA,EAAA;AAGzD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner-dismiss-DfFezmDg.cjs","sources":["../src/components/banner/primitives/banner-provider.tsx","../src/components/banner/primitives/banner-root.tsx","../src/components/banner/primitives/banner-content.tsx","../src/components/banner/primitives/banner-text.tsx","../src/components/banner/primitives/banner-dismiss.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nexport interface BannerProviderProps {\n id: string;\n hideDismiss: boolean;\n children: ReactNode;\n onDismiss?: () => void;\n}\n\ninterface BannerContext extends Pick<BannerProviderProps, 'id' | 'hideDismiss'> {\n isInitialized: boolean;\n isDismissed: boolean;\n handleDismiss: () => void;\n}\n\nexport const BannerContext = createContext<BannerContext | undefined>(undefined);\n\nexport function BannerProvider({ id, hideDismiss, onDismiss, children }: BannerProviderProps) {\n const [isDismissed, setIsDismissed] = useState<boolean>(false);\n const [isInitialized, setIsInitialized] = useState<boolean>(false);\n\n useEffect(() => {\n const hidden = localStorage.getItem(`${id}-hidden-banner`) === 'true';\n setIsDismissed(hidden);\n setIsInitialized(true);\n }, [id]);\n\n const handleDismiss = useCallback(() => {\n setIsDismissed(true);\n localStorage.setItem(`${id}-hidden-banner`, 'true');\n onDismiss?.();\n }, [id, onDismiss]);\n\n const contextValues = useMemo(\n () => ({\n id,\n isInitialized,\n isDismissed,\n hideDismiss,\n handleDismiss,\n }),\n [id, isInitialized, isDismissed, hideDismiss, handleDismiss],\n );\n\n return (\n <BannerContext.Provider value={contextValues}>\n {isInitialized ? children : null}\n </BannerContext.Provider>\n );\n}\n\nexport function useBanner() {\n const context = use(BannerContext);\n\n if (context === undefined) {\n throw new Error('useBanner must be used within a BannerProvider');\n }\n\n return context;\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useBanner } from '@/components/banner';\nimport { cn } from '@/lib';\n\nexport type BannerRootProps = ComponentProps<'div'>;\n\nexport function BannerRoot({ children, className, ...props }: BannerRootProps) {\n const { id, isDismissed } = useBanner();\n\n return (\n <div\n className={cn(\n 'overflow-hidden bg-[var(--banner-background,hsl(var(--primary)))] transition-all duration-300 ease-in @container',\n isDismissed ? 'pointer-events-none max-h-0' : 'max-h-32',\n className,\n )}\n data-slot=\"banner-root\"\n id={id}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BannerContentProps = ComponentProps<'div'>;\n\nexport function BannerContent({ className, children }: BannerContentProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-4 px-8 py-3', className)}\n data-slot=\"banner-content\"\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BannerTextProps = ComponentProps<'div'>;\n\nexport function BannerText({ children, className, ...props }: BannerTextProps) {\n return (\n <div\n className={cn(\n 'flex-1 text-sm text-[var(--banner-text,hsl(var(--foreground)))] [font-family:var(--banner-font-family,var(--font-family-body))] @xl:text-center @xl:text-base',\n className,\n )}\n data-slot=\"banner-text\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { X } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nimport { useBanner } from '@/components/banner';\nimport { cn } from '@/lib';\n\nexport type BannerDismissProps = ComponentProps<'button'>;\n\nexport function BannerDismiss({ className, ...props }: BannerDismissProps) {\n const { hideDismiss, handleDismiss } = useBanner();\n\n if (hideDismiss) return null;\n\n return (\n <button\n aria-label=\"Dismiss banner\"\n className={cn(\n 'flex h-8 w-8 items-center justify-center rounded-full bg-[var(--banner-close-background,transparent)] text-[var(--banner-close-icon,color-mix(in_oklab,hsl(var(--foreground))_50%,transparent))] transition-colors duration-300 hover:bg-[var(--banner-close-background-hover,color-mix(in_oklab,hsl(var(--background))_40%,transparent))] hover:text-[var(--banner-close-icon-hover,hsl(var(--foreground)))] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--banner-focus,hsl(var(--foreground)))]',\n className,\n )}\n data-slot=\"banner-dismiss\"\n onClick={(e) => {\n e.preventDefault();\n handleDismiss();\n }}\n {...props}\n >\n <X absoluteStrokeWidth size={20} strokeWidth={1.5} />\n </button>\n );\n}\n"],"names":["BannerContext","createContext","BannerProvider","id","hideDismiss","onDismiss","children","isDismissed","setIsDismissed","useState","isInitialized","setIsInitialized","useEffect","hidden","handleDismiss","useCallback","contextValues","useMemo","jsx","useBanner","context","use","BannerRoot","className","props","cn","BannerContent","BannerText","BannerDismiss","e","X"],"mappings":"qIAkBaA,EAAgBC,EAAAA,cAAyC,MAAS,EAExE,SAASC,EAAe,CAAE,GAAAC,EAAI,YAAAC,EAAa,UAAAC,EAAW,SAAAC,GAAiC,CAC5F,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAkB,EAAK,EACvD,CAACC,EAAeC,CAAgB,EAAIF,EAAAA,SAAkB,EAAK,EAEjEG,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAS,aAAa,QAAQ,GAAGV,CAAE,gBAAgB,IAAM,
|
|
1
|
+
{"version":3,"file":"banner-dismiss-DfFezmDg.cjs","sources":["../src/components/banner/primitives/banner-provider.tsx","../src/components/banner/primitives/banner-root.tsx","../src/components/banner/primitives/banner-content.tsx","../src/components/banner/primitives/banner-text.tsx","../src/components/banner/primitives/banner-dismiss.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nexport interface BannerProviderProps {\n id: string;\n hideDismiss: boolean;\n children: ReactNode;\n onDismiss?: () => void;\n}\n\ninterface BannerContext extends Pick<BannerProviderProps, 'id' | 'hideDismiss'> {\n isInitialized: boolean;\n isDismissed: boolean;\n handleDismiss: () => void;\n}\n\nexport const BannerContext = createContext<BannerContext | undefined>(undefined);\n\nexport function BannerProvider({ id, hideDismiss, onDismiss, children }: BannerProviderProps) {\n const [isDismissed, setIsDismissed] = useState<boolean>(false);\n const [isInitialized, setIsInitialized] = useState<boolean>(false);\n\n useEffect(() => {\n const hidden = localStorage.getItem(`${id}-hidden-banner`) === 'true';\n\n setIsDismissed(hidden);\n setIsInitialized(true);\n }, [id]);\n\n const handleDismiss = useCallback(() => {\n setIsDismissed(true);\n localStorage.setItem(`${id}-hidden-banner`, 'true');\n onDismiss?.();\n }, [id, onDismiss]);\n\n const contextValues = useMemo(\n () => ({\n id,\n isInitialized,\n isDismissed,\n hideDismiss,\n handleDismiss,\n }),\n [id, isInitialized, isDismissed, hideDismiss, handleDismiss],\n );\n\n return (\n <BannerContext.Provider value={contextValues}>\n {isInitialized ? children : null}\n </BannerContext.Provider>\n );\n}\n\nexport function useBanner() {\n const context = use(BannerContext);\n\n if (context === undefined) {\n throw new Error('useBanner must be used within a BannerProvider');\n }\n\n return context;\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useBanner } from '@/components/banner';\nimport { cn } from '@/lib';\n\nexport type BannerRootProps = ComponentProps<'div'>;\n\nexport function BannerRoot({ children, className, ...props }: BannerRootProps) {\n const { id, isDismissed } = useBanner();\n\n return (\n <div\n className={cn(\n 'overflow-hidden bg-[var(--banner-background,hsl(var(--primary)))] transition-all duration-300 ease-in @container',\n isDismissed ? 'pointer-events-none max-h-0' : 'max-h-32',\n className,\n )}\n data-slot=\"banner-root\"\n id={id}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BannerContentProps = ComponentProps<'div'>;\n\nexport function BannerContent({ className, children }: BannerContentProps) {\n return (\n <div\n className={cn('flex items-center justify-between gap-4 px-8 py-3', className)}\n data-slot=\"banner-content\"\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BannerTextProps = ComponentProps<'div'>;\n\nexport function BannerText({ children, className, ...props }: BannerTextProps) {\n return (\n <div\n className={cn(\n 'flex-1 text-sm text-[var(--banner-text,hsl(var(--foreground)))] [font-family:var(--banner-font-family,var(--font-family-body))] @xl:text-center @xl:text-base',\n className,\n )}\n data-slot=\"banner-text\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { X } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nimport { useBanner } from '@/components/banner';\nimport { cn } from '@/lib';\n\nexport type BannerDismissProps = ComponentProps<'button'>;\n\nexport function BannerDismiss({ className, ...props }: BannerDismissProps) {\n const { hideDismiss, handleDismiss } = useBanner();\n\n if (hideDismiss) return null;\n\n return (\n <button\n aria-label=\"Dismiss banner\"\n className={cn(\n 'flex h-8 w-8 items-center justify-center rounded-full bg-[var(--banner-close-background,transparent)] text-[var(--banner-close-icon,color-mix(in_oklab,hsl(var(--foreground))_50%,transparent))] transition-colors duration-300 hover:bg-[var(--banner-close-background-hover,color-mix(in_oklab,hsl(var(--background))_40%,transparent))] hover:text-[var(--banner-close-icon-hover,hsl(var(--foreground)))] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--banner-focus,hsl(var(--foreground)))]',\n className,\n )}\n data-slot=\"banner-dismiss\"\n onClick={(e) => {\n e.preventDefault();\n handleDismiss();\n }}\n {...props}\n >\n <X absoluteStrokeWidth size={20} strokeWidth={1.5} />\n </button>\n );\n}\n"],"names":["BannerContext","createContext","BannerProvider","id","hideDismiss","onDismiss","children","isDismissed","setIsDismissed","useState","isInitialized","setIsInitialized","useEffect","hidden","handleDismiss","useCallback","contextValues","useMemo","jsx","useBanner","context","use","BannerRoot","className","props","cn","BannerContent","BannerText","BannerDismiss","e","X"],"mappings":"qIAkBaA,EAAgBC,EAAAA,cAAyC,MAAS,EAExE,SAASC,EAAe,CAAE,GAAAC,EAAI,YAAAC,EAAa,UAAAC,EAAW,SAAAC,GAAiC,CAC5F,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAkB,EAAK,EACvD,CAACC,EAAeC,CAAgB,EAAIF,EAAAA,SAAkB,EAAK,EAEjEG,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAS,aAAa,QAAQ,GAAGV,CAAE,gBAAgB,IAAM,OAE/DK,EAAeK,CAAM,EACrBF,EAAiB,EAAI,CACvB,EAAG,CAACR,CAAE,CAAC,EAEP,MAAMW,EAAgBC,EAAAA,YAAY,IAAM,CACtCP,EAAe,EAAI,EACnB,aAAa,QAAQ,GAAGL,CAAE,iBAAkB,MAAM,EAClDE,IAAA,CACF,EAAG,CAACF,EAAIE,CAAS,CAAC,EAEZW,EAAgBC,EAAAA,QACpB,KAAO,CACL,GAAAd,EACA,cAAAO,EACA,YAAAH,EACA,YAAAH,EACA,cAAAU,CAAA,GAEF,CAACX,EAAIO,EAAeH,EAAaH,EAAaU,CAAa,CAAA,EAG7D,OACEI,MAAClB,EAAc,SAAd,CAAuB,MAAOgB,EAC5B,SAAAN,EAAgBJ,EAAW,KAC9B,CAEJ,CAEO,SAASa,GAAY,CAC1B,MAAMC,EAAUC,EAAAA,IAAIrB,CAAa,EAEjC,GAAIoB,IAAY,OACd,MAAM,IAAI,MAAM,gDAAgD,EAGlE,OAAOA,CACT,CCtDO,SAASE,EAAW,CAAE,SAAAhB,EAAU,UAAAiB,EAAW,GAAGC,GAA0B,CAC7E,KAAM,CAAE,GAAArB,EAAI,YAAAI,CAAA,EAAgBY,EAAA,EAE5B,OACED,EAAAA,IAAC,MAAA,CACC,UAAWO,EAAAA,GACT,mHACAlB,EAAc,8BAAgC,WAC9CgB,CAAA,EAEF,YAAU,cACV,GAAApB,EACC,GAAGqB,EAEH,SAAAlB,CAAA,CAAA,CAGP,CClBO,SAASoB,EAAc,CAAE,UAAAH,EAAW,SAAAjB,GAAgC,CACzE,OACEY,EAAAA,IAAC,MAAA,CACC,UAAWO,EAAAA,GAAG,oDAAqDF,CAAS,EAC5E,YAAU,iBAET,SAAAjB,CAAA,CAAA,CAGP,CCXO,SAASqB,EAAW,CAAE,SAAArB,EAAU,UAAAiB,EAAW,GAAGC,GAA0B,CAC7E,OACEN,EAAAA,IAAC,MAAA,CACC,UAAWO,EAAAA,GACT,gKACAF,CAAA,EAEF,YAAU,cACT,GAAGC,EAEH,SAAAlB,CAAA,CAAA,CAGP,CCTO,SAASsB,EAAc,CAAE,UAAAL,EAAW,GAAGC,GAA6B,CACzE,KAAM,CAAE,YAAApB,EAAa,cAAAU,CAAA,EAAkBK,EAAA,EAEvC,OAAIf,EAAoB,KAGtBc,EAAAA,IAAC,SAAA,CACC,aAAW,iBACX,UAAWO,EAAAA,GACT,ggBACAF,CAAA,EAEF,YAAU,iBACV,QAAUM,GAAM,CACdA,EAAE,eAAA,EACFf,EAAA,CACF,EACC,GAAGU,EAEJ,eAACM,EAAAA,QAAA,CAAE,oBAAmB,GAAC,KAAM,GAAI,YAAa,GAAA,CAAK,CAAA,CAAA,CAGzD"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { jsx as r, jsxs as l, Fragment as c } from "react/jsx-runtime";
|
|
2
|
-
import { c as
|
|
3
|
-
import { S as
|
|
4
|
-
function
|
|
2
|
+
import { c as s } from "./utils-BOGlfttm.js";
|
|
3
|
+
import { S as n } from "./index-DD8W7cMj.js";
|
|
4
|
+
function m({
|
|
5
5
|
as: o,
|
|
6
6
|
className: t,
|
|
7
7
|
children: a,
|
|
8
|
-
...
|
|
8
|
+
...e
|
|
9
9
|
}) {
|
|
10
10
|
return /* @__PURE__ */ r(
|
|
11
11
|
o ?? "article",
|
|
12
12
|
{
|
|
13
|
-
className:
|
|
13
|
+
className: s(
|
|
14
14
|
"group relative w-full max-w-md @container [font-family:var(--blog-post-card-font-family,var(--font-family-body))]",
|
|
15
15
|
t
|
|
16
16
|
),
|
|
17
17
|
"data-slot": "blog-post-card-root",
|
|
18
|
-
...
|
|
18
|
+
...e,
|
|
19
19
|
children: a
|
|
20
20
|
}
|
|
21
21
|
);
|
|
@@ -24,10 +24,11 @@ function f({ children: o, className: t, ...a }) {
|
|
|
24
24
|
return /* @__PURE__ */ r(
|
|
25
25
|
"div",
|
|
26
26
|
{
|
|
27
|
-
className:
|
|
28
|
-
"p-4 text-
|
|
27
|
+
className: s(
|
|
28
|
+
"break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out [color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)] group-hover:scale-105",
|
|
29
29
|
t
|
|
30
30
|
),
|
|
31
|
+
"data-slot": "blog-post-card-fallback",
|
|
31
32
|
...a,
|
|
32
33
|
children: o
|
|
33
34
|
}
|
|
@@ -41,7 +42,7 @@ function p({
|
|
|
41
42
|
return /* @__PURE__ */ r(
|
|
42
43
|
"div",
|
|
43
44
|
{
|
|
44
|
-
className:
|
|
45
|
+
className: s(
|
|
45
46
|
"relative aspect-[4/3] w-full overflow-hidden rounded-2xl bg-[var(--blog-post-card-image-background,hsl(var(--contrast-100)))]",
|
|
46
47
|
o
|
|
47
48
|
),
|
|
@@ -57,9 +58,9 @@ function b({
|
|
|
57
58
|
...a
|
|
58
59
|
}) {
|
|
59
60
|
return /* @__PURE__ */ r(
|
|
60
|
-
t ?
|
|
61
|
+
t ? n : "img",
|
|
61
62
|
{
|
|
62
|
-
className:
|
|
63
|
+
className: s(
|
|
63
64
|
"h-full w-full object-cover transition-transform duration-500 ease-out group-hover:scale-110",
|
|
64
65
|
o
|
|
65
66
|
),
|
|
@@ -70,9 +71,9 @@ function b({
|
|
|
70
71
|
}
|
|
71
72
|
function v({ asChild: o = !1, className: t, ...a }) {
|
|
72
73
|
return /* @__PURE__ */ r(
|
|
73
|
-
o ?
|
|
74
|
+
o ? n : "a",
|
|
74
75
|
{
|
|
75
|
-
className:
|
|
76
|
+
className: s(
|
|
76
77
|
"absolute inset-0 rounded-b-lg rounded-t-2xl focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--blog-post-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4",
|
|
77
78
|
t
|
|
78
79
|
),
|
|
@@ -81,11 +82,11 @@ function v({ asChild: o = !1, className: t, ...a }) {
|
|
|
81
82
|
}
|
|
82
83
|
);
|
|
83
84
|
}
|
|
84
|
-
function
|
|
85
|
+
function h({ className: o, children: t, ...a }) {
|
|
85
86
|
return /* @__PURE__ */ r(
|
|
86
87
|
"h5",
|
|
87
88
|
{
|
|
88
|
-
className:
|
|
89
|
+
className: s(
|
|
89
90
|
"mt-4 text-lg font-medium leading-snug text-[var(--blog-post-card-title-text,hsl(var(--foreground)))]",
|
|
90
91
|
o
|
|
91
92
|
),
|
|
@@ -95,11 +96,11 @@ function x({ className: o, children: t, ...a }) {
|
|
|
95
96
|
}
|
|
96
97
|
);
|
|
97
98
|
}
|
|
98
|
-
function
|
|
99
|
+
function x({ className: o, children: t, ...a }) {
|
|
99
100
|
return /* @__PURE__ */ r(
|
|
100
101
|
"p",
|
|
101
102
|
{
|
|
102
|
-
className:
|
|
103
|
+
className: s(
|
|
103
104
|
"mt-1.5 line-clamp-3 text-sm font-normal text-[var(--blog-post-card-content-text,hsl(var(--contrast-400)))]",
|
|
104
105
|
o
|
|
105
106
|
),
|
|
@@ -113,7 +114,7 @@ function C({ children: o, className: t, ...a }) {
|
|
|
113
114
|
return /* @__PURE__ */ r(
|
|
114
115
|
"div",
|
|
115
116
|
{
|
|
116
|
-
className:
|
|
117
|
+
className: s(
|
|
117
118
|
"mt-3 text-sm text-[var(--blog-post-card-author-date-text,hsl(var(--foreground)))]",
|
|
118
119
|
t
|
|
119
120
|
),
|
|
@@ -135,7 +136,7 @@ function P({ className: o, children: t, ...a }) {
|
|
|
135
136
|
/* @__PURE__ */ r(
|
|
136
137
|
"span",
|
|
137
138
|
{
|
|
138
|
-
className:
|
|
139
|
+
className: s("after:mx-2 after:content-['•']", o),
|
|
139
140
|
"data-slot": "blog-post-card-author",
|
|
140
141
|
...a
|
|
141
142
|
}
|
|
@@ -144,15 +145,15 @@ function P({ className: o, children: t, ...a }) {
|
|
|
144
145
|
] });
|
|
145
146
|
}
|
|
146
147
|
export {
|
|
147
|
-
|
|
148
|
+
m as B,
|
|
148
149
|
f as a,
|
|
149
150
|
p as b,
|
|
150
151
|
b as c,
|
|
151
152
|
v as d,
|
|
152
|
-
|
|
153
|
-
|
|
153
|
+
h as e,
|
|
154
|
+
x as f,
|
|
154
155
|
C as g,
|
|
155
156
|
B as h,
|
|
156
157
|
P as i
|
|
157
158
|
};
|
|
158
|
-
//# sourceMappingURL=blog-post-card-author-
|
|
159
|
+
//# sourceMappingURL=blog-post-card-author-CD_eplIv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog-post-card-author-CD_eplIv.js","sources":["../src/components/blog-post-card/primitives/blog-post-card-root.tsx","../src/components/blog-post-card/primitives/blog-post-card-fallback.tsx","../src/components/blog-post-card/primitives/blog-post-card-thumbnail.tsx","../src/components/blog-post-card/primitives/blog-post-card-image.tsx","../src/components/blog-post-card/primitives/blog-post-card-link.tsx","../src/components/blog-post-card/primitives/blog-post-card-title.tsx","../src/components/blog-post-card/primitives/blog-post-card-content.tsx","../src/components/blog-post-card/primitives/blog-post-card-details.tsx","../src/components/blog-post-card/primitives/blog-post-card-date.tsx","../src/components/blog-post-card/primitives/blog-post-card-author.tsx"],"sourcesContent":["import type { ComponentProps, ElementType } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardRootProps<E extends ElementType = 'article'> = Omit<\n ComponentProps<E>,\n 'as'\n> & {\n as?: E;\n};\n\nexport function BlogPostCardRoot<T extends ElementType = 'article'>({\n as,\n className,\n children,\n ...props\n}: BlogPostCardRootProps<T>) {\n const BlogPostCardRootElement = as ?? 'article';\n\n return (\n <BlogPostCardRootElement\n className={cn(\n 'group relative w-full max-w-md @container [font-family:var(--blog-post-card-font-family,var(--font-family-body))]',\n className,\n )}\n data-slot=\"blog-post-card-root\"\n {...props}\n >\n {children}\n </BlogPostCardRootElement>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardFallbackProps = ComponentProps<'div'>;\n\nexport function BlogPostCardFallback({ children, className, ...props }: BlogPostCardFallbackProps) {\n return (\n <div\n className={cn(\n 'break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out [color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)] group-hover:scale-105',\n className,\n )}\n data-slot=\"blog-post-card-fallback\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardThumbnailProps = ComponentProps<'div'>;\n\nexport function BlogPostCardThumbnail({\n className,\n children,\n ...props\n}: BlogPostCardThumbnailProps) {\n return (\n <div\n className={cn(\n 'relative aspect-[4/3] w-full overflow-hidden rounded-2xl bg-[var(--blog-post-card-image-background,hsl(var(--contrast-100)))]',\n className,\n )}\n data-slot=\"blog-post-card-thumbnail\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport interface BlogPostCardImageProps extends ComponentProps<'img'> {\n asChild?: boolean;\n}\n\nexport function BlogPostCardImage({\n className,\n asChild = false,\n ...props\n}: BlogPostCardImageProps) {\n const Component = asChild ? Slot : 'img';\n\n return (\n <Component\n className={cn(\n 'h-full w-full object-cover transition-transform duration-500 ease-out group-hover:scale-110',\n className,\n )}\n data-slot=\"blog-post-card-image\"\n {...props}\n />\n );\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport interface BlogPostCardLinkProps extends ComponentProps<'a'> {\n asChild?: boolean;\n}\n\nexport function BlogPostCardLink({ asChild = false, className, ...props }: BlogPostCardLinkProps) {\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'absolute inset-0 rounded-b-lg rounded-t-2xl focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--blog-post-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4',\n className,\n )}\n data-slot=\"blog-post-card-link\"\n {...props}\n />\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardTitleProps = ComponentProps<'h5'>;\n\nexport function BlogPostCardTitle({ className, children, ...props }: BlogPostCardTitleProps) {\n return (\n <h5\n className={cn(\n 'mt-4 text-lg font-medium leading-snug text-[var(--blog-post-card-title-text,hsl(var(--foreground)))]',\n className,\n )}\n data-slot=\"blog-post-card-title\"\n {...props}\n >\n {children}\n </h5>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardContentProps = ComponentProps<'p'>;\n\nexport function BlogPostCardContent({ className, children, ...props }: BlogPostCardContentProps) {\n return (\n <p\n className={cn(\n 'mt-1.5 line-clamp-3 text-sm font-normal text-[var(--blog-post-card-content-text,hsl(var(--contrast-400)))]',\n className,\n )}\n data-slot=\"blog-post-card-content\"\n {...props}\n >\n {children}\n </p>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardDetailsProps = ComponentProps<'div'>;\n\nexport function BlogPostCardDetails({ children, className, ...props }: BlogPostCardDetailsProps) {\n return (\n <div\n className={cn(\n 'mt-3 text-sm text-[var(--blog-post-card-author-date-text,hsl(var(--foreground)))]',\n className,\n )}\n data-slot=\"blog-post-card-details\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nexport type BlogPostCardDateProps = ComponentProps<'time'> & {\n children: string;\n};\n\nexport function BlogPostCardDate({ className, children, ...props }: BlogPostCardDateProps) {\n return (\n <time className={className} dateTime={children} {...props} data-slot=\"blog-post-card-date\">\n {new Date(children).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })}\n </time>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardAuthorProps = ComponentProps<'span'>;\n\nexport function BlogPostCardAuthor({ className, children, ...props }: BlogPostCardAuthorProps) {\n return (\n <>\n <span\n className={cn(\"after:mx-2 after:content-['•']\", className)}\n data-slot=\"blog-post-card-author\"\n {...props}\n />\n <span>{children}</span>\n </>\n );\n}\n"],"names":["BlogPostCardRoot","as","className","children","props","jsx","cn","BlogPostCardFallback","BlogPostCardThumbnail","BlogPostCardImage","asChild","Slot","BlogPostCardLink","BlogPostCardTitle","BlogPostCardContent","BlogPostCardDetails","BlogPostCardDate","BlogPostCardAuthor","jsxs","Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const r=require("react/jsx-runtime"),s=require("./utils-LBH114_M.cjs"),n=require("./index-DGaxX11V.cjs");function c({as:o,className:t,children:a,...l}){const e=o??"article";return r.jsx(e,{className:s.cn("group relative w-full max-w-md @container [font-family:var(--blog-post-card-font-family,var(--font-family-body))]",t),"data-slot":"blog-post-card-root",...l,children:a})}function d({children:o,className:t,...a}){return r.jsx("div",{className:s.cn("break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out [color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)] group-hover:scale-105",t),"data-slot":"blog-post-card-fallback",...a,children:o})}function i({className:o,children:t,...a}){return r.jsx("div",{className:s.cn("relative aspect-[4/3] w-full overflow-hidden rounded-2xl bg-[var(--blog-post-card-image-background,hsl(var(--contrast-100)))]",o),"data-slot":"blog-post-card-thumbnail",...a,children:t})}function g({className:o,asChild:t=!1,...a}){const l=t?n.Slot:"img";return r.jsx(l,{className:s.cn("h-full w-full object-cover transition-transform duration-500 ease-out group-hover:scale-110",o),"data-slot":"blog-post-card-image",...a})}function u({asChild:o=!1,className:t,...a}){const l=o?n.Slot:"a";return r.jsx(l,{className:s.cn("absolute inset-0 rounded-b-lg rounded-t-2xl focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--blog-post-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4",t),"data-slot":"blog-post-card-link",...a})}function m({className:o,children:t,...a}){return r.jsx("h5",{className:s.cn("mt-4 text-lg font-medium leading-snug text-[var(--blog-post-card-title-text,hsl(var(--foreground)))]",o),"data-slot":"blog-post-card-title",...a,children:t})}function f({className:o,children:t,...a}){return r.jsx("p",{className:s.cn("mt-1.5 line-clamp-3 text-sm font-normal text-[var(--blog-post-card-content-text,hsl(var(--contrast-400)))]",o),"data-slot":"blog-post-card-content",...a,children:t})}function b({children:o,className:t,...a}){return r.jsx("div",{className:s.cn("mt-3 text-sm text-[var(--blog-post-card-author-date-text,hsl(var(--foreground)))]",t),"data-slot":"blog-post-card-details",...a,children:o})}function x({className:o,children:t,...a}){return r.jsx("time",{className:o,dateTime:t,...a,"data-slot":"blog-post-card-date",children:new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})})}function p({className:o,children:t,...a}){return r.jsxs(r.Fragment,{children:[r.jsx("span",{className:s.cn("after:mx-2 after:content-['•']",o),"data-slot":"blog-post-card-author",...a}),r.jsx("span",{children:t})]})}exports.BlogPostCardAuthor=p;exports.BlogPostCardContent=f;exports.BlogPostCardDate=x;exports.BlogPostCardDetails=b;exports.BlogPostCardFallback=d;exports.BlogPostCardImage=g;exports.BlogPostCardLink=u;exports.BlogPostCardRoot=c;exports.BlogPostCardThumbnail=i;exports.BlogPostCardTitle=m;
|
|
2
|
+
//# sourceMappingURL=blog-post-card-author-D4zo7N_N.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog-post-card-author-D4zo7N_N.cjs","sources":["../src/components/blog-post-card/primitives/blog-post-card-root.tsx","../src/components/blog-post-card/primitives/blog-post-card-fallback.tsx","../src/components/blog-post-card/primitives/blog-post-card-thumbnail.tsx","../src/components/blog-post-card/primitives/blog-post-card-image.tsx","../src/components/blog-post-card/primitives/blog-post-card-link.tsx","../src/components/blog-post-card/primitives/blog-post-card-title.tsx","../src/components/blog-post-card/primitives/blog-post-card-content.tsx","../src/components/blog-post-card/primitives/blog-post-card-details.tsx","../src/components/blog-post-card/primitives/blog-post-card-date.tsx","../src/components/blog-post-card/primitives/blog-post-card-author.tsx"],"sourcesContent":["import type { ComponentProps, ElementType } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardRootProps<E extends ElementType = 'article'> = Omit<\n ComponentProps<E>,\n 'as'\n> & {\n as?: E;\n};\n\nexport function BlogPostCardRoot<T extends ElementType = 'article'>({\n as,\n className,\n children,\n ...props\n}: BlogPostCardRootProps<T>) {\n const BlogPostCardRootElement = as ?? 'article';\n\n return (\n <BlogPostCardRootElement\n className={cn(\n 'group relative w-full max-w-md @container [font-family:var(--blog-post-card-font-family,var(--font-family-body))]',\n className,\n )}\n data-slot=\"blog-post-card-root\"\n {...props}\n >\n {children}\n </BlogPostCardRootElement>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardFallbackProps = ComponentProps<'div'>;\n\nexport function BlogPostCardFallback({ children, className, ...props }: BlogPostCardFallbackProps) {\n return (\n <div\n className={cn(\n 'break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out [color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)] group-hover:scale-105',\n className,\n )}\n data-slot=\"blog-post-card-fallback\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardThumbnailProps = ComponentProps<'div'>;\n\nexport function BlogPostCardThumbnail({\n className,\n children,\n ...props\n}: BlogPostCardThumbnailProps) {\n return (\n <div\n className={cn(\n 'relative aspect-[4/3] w-full overflow-hidden rounded-2xl bg-[var(--blog-post-card-image-background,hsl(var(--contrast-100)))]',\n className,\n )}\n data-slot=\"blog-post-card-thumbnail\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport interface BlogPostCardImageProps extends ComponentProps<'img'> {\n asChild?: boolean;\n}\n\nexport function BlogPostCardImage({\n className,\n asChild = false,\n ...props\n}: BlogPostCardImageProps) {\n const Component = asChild ? Slot : 'img';\n\n return (\n <Component\n className={cn(\n 'h-full w-full object-cover transition-transform duration-500 ease-out group-hover:scale-110',\n className,\n )}\n data-slot=\"blog-post-card-image\"\n {...props}\n />\n );\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport interface BlogPostCardLinkProps extends ComponentProps<'a'> {\n asChild?: boolean;\n}\n\nexport function BlogPostCardLink({ asChild = false, className, ...props }: BlogPostCardLinkProps) {\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'absolute inset-0 rounded-b-lg rounded-t-2xl focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--blog-post-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4',\n className,\n )}\n data-slot=\"blog-post-card-link\"\n {...props}\n />\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardTitleProps = ComponentProps<'h5'>;\n\nexport function BlogPostCardTitle({ className, children, ...props }: BlogPostCardTitleProps) {\n return (\n <h5\n className={cn(\n 'mt-4 text-lg font-medium leading-snug text-[var(--blog-post-card-title-text,hsl(var(--foreground)))]',\n className,\n )}\n data-slot=\"blog-post-card-title\"\n {...props}\n >\n {children}\n </h5>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardContentProps = ComponentProps<'p'>;\n\nexport function BlogPostCardContent({ className, children, ...props }: BlogPostCardContentProps) {\n return (\n <p\n className={cn(\n 'mt-1.5 line-clamp-3 text-sm font-normal text-[var(--blog-post-card-content-text,hsl(var(--contrast-400)))]',\n className,\n )}\n data-slot=\"blog-post-card-content\"\n {...props}\n >\n {children}\n </p>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardDetailsProps = ComponentProps<'div'>;\n\nexport function BlogPostCardDetails({ children, className, ...props }: BlogPostCardDetailsProps) {\n return (\n <div\n className={cn(\n 'mt-3 text-sm text-[var(--blog-post-card-author-date-text,hsl(var(--foreground)))]',\n className,\n )}\n data-slot=\"blog-post-card-details\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { ComponentProps } from 'react';\n\nexport type BlogPostCardDateProps = ComponentProps<'time'> & {\n children: string;\n};\n\nexport function BlogPostCardDate({ className, children, ...props }: BlogPostCardDateProps) {\n return (\n <time className={className} dateTime={children} {...props} data-slot=\"blog-post-card-date\">\n {new Date(children).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })}\n </time>\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nexport type BlogPostCardAuthorProps = ComponentProps<'span'>;\n\nexport function BlogPostCardAuthor({ className, children, ...props }: BlogPostCardAuthorProps) {\n return (\n <>\n <span\n className={cn(\"after:mx-2 after:content-['•']\", className)}\n data-slot=\"blog-post-card-author\"\n {...props}\n />\n <span>{children}</span>\n </>\n );\n}\n"],"names":["BlogPostCardRoot","as","className","children","props","BlogPostCardRootElement","jsx","cn","BlogPostCardFallback","BlogPostCardThumbnail","BlogPostCardImage","asChild","Component","Slot","BlogPostCardLink","BlogPostCardTitle","BlogPostCardContent","BlogPostCardDetails","BlogPostCardDate","BlogPostCardAuthor","jsxs","Fragment"],"mappings":"sHAWO,SAASA,EAAoD,CAClE,GAAAC,EACA,UAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAA6B,CAC3B,MAAMC,EAA0BJ,GAAM,UAEtC,OACEK,EAAAA,IAACD,EAAA,CACC,UAAWE,EAAAA,GACT,oHACAL,CAAA,EAEF,YAAU,sBACT,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGP,CCzBO,SAASK,EAAqB,CAAE,SAAAL,EAAU,UAAAD,EAAW,GAAGE,GAAoC,CACjG,OACEE,EAAAA,IAAC,MAAA,CACC,UAAWC,EAAAA,GACT,qMACAL,CAAA,EAEF,YAAU,0BACT,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGP,CCbO,SAASM,EAAsB,CACpC,UAAAP,EACA,SAAAC,EACA,GAAGC,CACL,EAA+B,CAC7B,OACEE,EAAAA,IAAC,MAAA,CACC,UAAWC,EAAAA,GACT,gIACAL,CAAA,EAEF,YAAU,2BACT,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGP,CCdO,SAASO,EAAkB,CAChC,UAAAR,EACA,QAAAS,EAAU,GACV,GAAGP,CACL,EAA2B,CACzB,MAAMQ,EAAYD,EAAUE,EAAAA,KAAO,MAEnC,OACEP,EAAAA,IAACM,EAAA,CACC,UAAWL,EAAAA,GACT,8FACAL,CAAA,EAEF,YAAU,uBACT,GAAGE,CAAA,CAAA,CAGV,CCjBO,SAASU,EAAiB,CAAE,QAAAH,EAAU,GAAO,UAAAT,EAAW,GAAGE,GAAgC,CAChG,MAAMQ,EAAYD,EAAUE,EAAAA,KAAO,IAEnC,OACEP,EAAAA,IAACM,EAAA,CACC,UAAWL,EAAAA,GACT,uLACAL,CAAA,EAEF,YAAU,sBACT,GAAGE,CAAA,CAAA,CAGV,CChBO,SAASW,EAAkB,CAAE,UAAAb,EAAW,SAAAC,EAAU,GAAGC,GAAiC,CAC3F,OACEE,EAAAA,IAAC,KAAA,CACC,UAAWC,EAAAA,GACT,uGACAL,CAAA,EAEF,YAAU,uBACT,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGP,CCbO,SAASa,EAAoB,CAAE,UAAAd,EAAW,SAAAC,EAAU,GAAGC,GAAmC,CAC/F,OACEE,EAAAA,IAAC,IAAA,CACC,UAAWC,EAAAA,GACT,6GACAL,CAAA,EAEF,YAAU,yBACT,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGP,CCbO,SAASc,EAAoB,CAAE,SAAAd,EAAU,UAAAD,EAAW,GAAGE,GAAmC,CAC/F,OACEE,EAAAA,IAAC,MAAA,CACC,UAAWC,EAAAA,GACT,oFACAL,CAAA,EAEF,YAAU,yBACT,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGP,CCbO,SAASe,EAAiB,CAAE,UAAAhB,EAAW,SAAAC,EAAU,GAAGC,GAAgC,CACzF,OACEE,EAAAA,IAAC,OAAA,CAAK,UAAAJ,EAAsB,SAAUC,EAAW,GAAGC,EAAO,YAAU,sBAClE,SAAA,IAAI,KAAKD,CAAQ,EAAE,mBAAmB,QAAS,CAC9C,KAAM,UACN,MAAO,OACP,IAAK,SAAA,CACN,EACH,CAEJ,CCVO,SAASgB,EAAmB,CAAE,UAAAjB,EAAW,SAAAC,EAAU,GAAGC,GAAkC,CAC7F,OACEgB,EAAAA,KAAAC,WAAA,CACE,SAAA,CAAAf,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,GAAG,iCAAkCL,CAAS,EACzD,YAAU,wBACT,GAAGE,CAAA,CAAA,EAENE,MAAC,QAAM,SAAAH,CAAA,CAAS,CAAA,EAClB,CAEJ"}
|
package/dist/blog-post-card.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./blog-post-card-author-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./blog-post-card-author-D4zo7N_N.cjs"),t=require("react/jsx-runtime"),s=require("./utils-LBH114_M.cjs"),n=require("./skeleton-box-yQLivCqg.cjs"),o=require("./skeleton-text-CLzoDFvz.cjs");function c({className:a,aspectRatio:l="4:3",...r}){return t.jsxs("div",{className:s.cn("w-full max-w-md @container",a),...r,children:[t.jsx(n.SkeletonBox,{className:s.cn("mb-4 w-full rounded-2xl",{"5:6":"aspect-[5/6]","3:4":"aspect-[3/4]","4:3":"aspect-[4/3]","1:1":"aspect-square"}[l])}),t.jsx(o.SkeletonText,{characterCount:25,className:"mt-4 rounded text-lg"}),t.jsxs("div",{className:"mt-1.5",children:[t.jsx(o.SkeletonText,{characterCount:"full",className:"rounded text-sm"}),t.jsx(o.SkeletonText,{characterCount:"full",className:"rounded text-sm"}),t.jsx(o.SkeletonText,{characterCount:15,className:"rounded text-sm"})]}),t.jsx(o.SkeletonText,{characterCount:10,className:"mt-3 rounded text-sm"})]})}exports.Author=e.BlogPostCardAuthor;exports.Content=e.BlogPostCardContent;exports.Date=e.BlogPostCardDate;exports.Details=e.BlogPostCardDetails;exports.Fallback=e.BlogPostCardFallback;exports.Image=e.BlogPostCardImage;exports.Link=e.BlogPostCardLink;exports.Root=e.BlogPostCardRoot;exports.Thumbnail=e.BlogPostCardThumbnail;exports.Title=e.BlogPostCardTitle;exports.Skeleton=c;
|
|
2
2
|
//# sourceMappingURL=blog-post-card.cjs.map
|
package/dist/blog-post-card.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as h, f as p, h as N, g as C, a as k, c as S, d as b, B as g, b as w, e as B } from "./blog-post-card-author-
|
|
1
|
+
import { i as h, f as p, h as N, g as C, a as k, c as S, d as b, B as g, b as w, e as B } from "./blog-post-card-author-CD_eplIv.js";
|
|
2
2
|
import { jsxs as t, jsx as a } from "react/jsx-runtime";
|
|
3
3
|
import { c as s } from "./utils-BOGlfttm.js";
|
|
4
4
|
import { S as l } from "./skeleton-box-BSzQ5f9Y.js";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),d=require("react"),c=require("./utils-LBH114_M.cjs"),g=require("./index-DGaxX11V.cjs"),h=require("./skeleton-box-yQLivCqg.cjs"),y=require("./skeleton-text-CLzoDFvz.cjs"),x=d.createContext(void 0);function k({className:r,children:a,as:t,textColorScheme:e="light",iconColorScheme:n="light",aspectRatio:l="5:6",textSize:i="small",showOverlay:u=!0,...f}){const m=t??"article",v=d.useMemo(()=>({textColorScheme:e,iconColorScheme:n,aspectRatio:l,textSize:i,showOverlay:u}),[e,n,l,i,u]);return o.jsx(x.Provider,{value:v,children:o.jsx(m,{className:c.cn("group relative flex w-full max-w-md cursor-pointer flex-col gap-2 rounded-[var(--category-card-border-radius,1rem)] font-[var(--category-card-font-family,var(--font-family-body))] @container",{small:"gap-2",medium:"gap-3",large:"gap-4","x-large":"gap-5"}[i],r),"data-slot":"category-card-root",...f,children:a})})}function s(){const r=d.use(x);if(r===void 0)throw new Error("useCategoryCard must be used within a CategoryCardRoot");return r}function b({className:r,children:a,...t}){const{iconColorScheme:e}=s();return o.jsx(g.Slot,{className:c.cn("absolute right-5 top-5 z-10 transition-transform duration-700 ease-out group-hover:-translate-y-1.5 group-hover:translate-x-1.5",{light:"text-[var(--category-card-light-icon,hsl(var(--foreground)))]",dark:"text-[var(--category-card-dark-icon,hsl(var(--background)))]"}[e],r),"data-slot":"category-card-icon",...t,children:a})}function C({className:r,children:a,...t}){const{textColorScheme:e,aspectRatio:n}=s();return o.jsx("div",{className:c.cn("relative overflow-hidden rounded-[inherit] group-focus:ring-[var(--category-card-focus,hsl(var(--primary)))] group-focus-visible:ring-2",{light:"bg-[var(--category-card-light-background,hsl(var(--contrast-100)))]",dark:"bg-[var(--category-card-dark-background,hsl(var(--contrast-500)))]"}[e],{"5:6":"aspect-[5/6]","3:4":"aspect-[3/4]","1:1":"aspect-square"}[n],r),"data-slot":"category-card-thumbnail",...t,children:a})}function p({className:r,children:a,asChild:t=!1,...e}){const{textColorScheme:n}=s(),l=t?g.Slot:"img";return o.jsx(l,{className:c.cn("h-full w-full scale-100 select-none object-cover transition-transform duration-500 ease-out group-hover:scale-110",{light:"bg-[var(--category-card-light-background,hsl(var(--contrast-100)))]",dark:"bg-[var(--category-card-dark-background,hsl(var(--contrast-500)))]"}[n],r),"data-slot":"category-card-image",...e})}function j({className:r,children:a,...t}){const{textColorScheme:e}=s();return o.jsx("div",{className:c.cn("break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out group-hover:scale-105",{light:"[color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)]",dark:"[color:color-mix(in_oklab,hsl(var(--background))_30%,transparent)]"}[e],r),"data-slot":"category-card-fallback",...t,children:a})}function N({children:r,className:a,...t}){const{showOverlay:e}=s();return o.jsx("div",{className:c.cn("absolute inset-0 flex items-end p-6 @xs:p-8",e&&"bg-gradient-to-b from-foreground/0 from-50% via-foreground/0 via-50% to-foreground/50 to-100%",a),"data-slot":"category-card-overlay",...t,children:r})}function S({children:r,className:a,...t}){const{textSize:e,textColorScheme:n}=s();return o.jsx("h3",{className:c.cn("font-medium leading-tight",{small:"text-lg tracking-normal @xs:text-xl",medium:"text-xl tracking-normal @xs:text-2xl",large:"text-2xl tracking-tight @xs:text-3xl","x-large":"text-3xl tracking-tight @xs:text-4xl"}[e],{light:"text-[var(--category-card-light-text,hsl(var(--foreground)))]",dark:"text-[var(--category-card-dark-text,hsl(var(--background)))]"}[n],a),"data-slot":"category-card-title",...t,children:r})}function q({asChild:r=!1,className:a,...t}){const{textColorScheme:e}=s(),n=r?g.Slot:"a";return o.jsx(n,{className:c.cn("absolute inset-0 rounded-[var(--category-card-border-radius,1rem)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--category-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4",{light:"ring-offset-[var(--category-card-light-offset,hsl(var(--background)))]",dark:"ring-offset-[var(--category-card-dark-offset,hsl(var(--foreground)))]"}[e],a),"data-slot":"category-card-link",...t})}function w({className:r,...a}){const{aspectRatio:t}=s();return o.jsxs("div",{className:c.cn("@container",r),...a,"data-slot":"category-card-skeleton",children:[o.jsx(h.SkeletonBox,{className:c.cn("rounded-[var(--category-card-border-radius,1rem)]",{"5:6":"aspect-[5/6]","3:4":"aspect-[3/4]","1:1":"aspect-square"}[t])}),o.jsx("div",{className:"mt-3",children:o.jsx(y.SkeletonText,{characterCount:10,className:"rounded text-lg"})})]})}exports.Fallback=j;exports.Icon=b;exports.Image=p;exports.Link=q;exports.Overlay=N;exports.Root=k;exports.Skeleton=w;exports.Thumbnail=C;exports.Title=S;exports.useCategoryCard=s;
|
|
2
|
+
//# sourceMappingURL=category-card.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category-card.cjs","sources":["../src/components/category-card/primitives/category-card-root.tsx","../src/components/category-card/primitives/category-card-icon.tsx","../src/components/category-card/primitives/category-card-thumbnail.tsx","../src/components/category-card/primitives/category-card-image.tsx","../src/components/category-card/primitives/category-card-fallback.tsx","../src/components/category-card/primitives/category-card-overlay.tsx","../src/components/category-card/primitives/category-card-title.tsx","../src/components/category-card/primitives/category-card-link.tsx","../src/components/category-card/primitives/category-card-skeleton.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useMemo } from 'react';\nimport type { ComponentProps, ElementType } from 'react';\n\nimport { cn } from '@/lib';\n\ninterface CategoryCardContext {\n textColorScheme: 'light' | 'dark';\n iconColorScheme: 'light' | 'dark';\n aspectRatio: '5:6' | '3:4' | '1:1';\n textSize: 'small' | 'medium' | 'large' | 'x-large';\n showOverlay: boolean;\n}\n\nexport const CategoryCardContext = createContext<CategoryCardContext | undefined>(undefined);\n\nexport type CategoryCardRootProps<E extends ElementType = 'article'> = Omit<\n ComponentProps<E>,\n 'as'\n> & {\n as?: E;\n textColorScheme?: 'light' | 'dark';\n iconColorScheme?: 'light' | 'dark';\n aspectRatio?: '5:6' | '3:4' | '1:1';\n textSize?: 'small' | 'medium' | 'large' | 'x-large';\n showOverlay?: boolean;\n};\n\nexport function CategoryCardRoot<T extends ElementType = 'article'>({\n className,\n children,\n as,\n textColorScheme = 'light',\n iconColorScheme = 'light',\n aspectRatio = '5:6',\n textSize = 'small',\n showOverlay = true,\n ...props\n}: CategoryCardRootProps<T>) {\n const CategoryCardRootElement = as ?? 'article';\n\n const contextValues = useMemo(\n () => ({\n textColorScheme,\n iconColorScheme,\n aspectRatio,\n textSize,\n showOverlay,\n }),\n [textColorScheme, iconColorScheme, aspectRatio, textSize, showOverlay],\n );\n\n return (\n <CategoryCardContext.Provider value={contextValues}>\n <CategoryCardRootElement\n className={cn(\n 'group relative flex w-full max-w-md cursor-pointer flex-col gap-2 rounded-[var(--category-card-border-radius,1rem)] font-[var(--category-card-font-family,var(--font-family-body))] @container',\n {\n small: 'gap-2',\n medium: 'gap-3',\n large: 'gap-4',\n 'x-large': 'gap-5',\n }[textSize],\n className,\n )}\n data-slot=\"category-card-root\"\n {...props}\n >\n {children}\n </CategoryCardRootElement>\n </CategoryCardContext.Provider>\n );\n}\n\nexport function useCategoryCard() {\n const context = use(CategoryCardContext);\n\n if (context === undefined) {\n throw new Error('useCategoryCard must be used within a CategoryCardRoot');\n }\n\n return context;\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport type CategoryCardIconProps = ComponentProps<typeof Slot>;\n\nexport function CategoryCardIcon({ className, children, ...props }: CategoryCardIconProps) {\n const { iconColorScheme } = useCategoryCard();\n\n return (\n <Slot\n className={cn(\n 'absolute right-5 top-5 z-10 transition-transform duration-700 ease-out group-hover:-translate-y-1.5 group-hover:translate-x-1.5',\n {\n light: 'text-[var(--category-card-light-icon,hsl(var(--foreground)))]',\n dark: 'text-[var(--category-card-dark-icon,hsl(var(--background)))]',\n }[iconColorScheme],\n className,\n )}\n data-slot=\"category-card-icon\"\n {...props}\n >\n {children}\n </Slot>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport type CategoryCardThumbnailProps = ComponentProps<'div'>;\n\nexport function CategoryCardThumbnail({\n className,\n children,\n ...props\n}: CategoryCardThumbnailProps) {\n const { textColorScheme, aspectRatio } = useCategoryCard();\n\n return (\n <div\n className={cn(\n 'relative overflow-hidden rounded-[inherit] group-focus:ring-[var(--category-card-focus,hsl(var(--primary)))] group-focus-visible:ring-2',\n {\n light: 'bg-[var(--category-card-light-background,hsl(var(--contrast-100)))]',\n dark: 'bg-[var(--category-card-dark-background,hsl(var(--contrast-500)))]',\n }[textColorScheme],\n {\n '5:6': 'aspect-[5/6]',\n '3:4': 'aspect-[3/4]',\n '1:1': 'aspect-square',\n }[aspectRatio],\n className,\n )}\n data-slot=\"category-card-thumbnail\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport type CategoryCardImageProps = ComponentProps<'img'> & {\n asChild?: boolean;\n};\n\nexport function CategoryCardImage({\n className,\n children,\n asChild = false,\n ...props\n}: CategoryCardImageProps) {\n const { textColorScheme } = useCategoryCard();\n\n const Component = asChild ? Slot : 'img';\n\n return (\n <Component\n className={cn(\n 'h-full w-full scale-100 select-none object-cover transition-transform duration-500 ease-out group-hover:scale-110',\n {\n light: 'bg-[var(--category-card-light-background,hsl(var(--contrast-100)))]',\n dark: 'bg-[var(--category-card-dark-background,hsl(var(--contrast-500)))]',\n }[textColorScheme],\n className,\n )}\n data-slot=\"category-card-image\"\n {...props}\n />\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport type CategoryCardFallbackProps = ComponentProps<'div'>;\n\nexport function CategoryCardFallback({ className, children, ...props }: CategoryCardFallbackProps) {\n const { textColorScheme } = useCategoryCard();\n\n return (\n <div\n className={cn(\n 'break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out group-hover:scale-105',\n {\n light: '[color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)]',\n dark: '[color:color-mix(in_oklab,hsl(var(--background))_30%,transparent)]',\n }[textColorScheme],\n className,\n )}\n data-slot=\"category-card-fallback\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nimport { useCategoryCard } from '../primitives';\n\nexport type CategoryCardOverlayProps = ComponentProps<'div'>;\n\nexport function CategoryCardOverlay({ children, className, ...props }: CategoryCardOverlayProps) {\n const { showOverlay } = useCategoryCard();\n\n return (\n <div\n className={cn(\n 'absolute inset-0 flex items-end p-6 @xs:p-8',\n showOverlay &&\n 'bg-gradient-to-b from-foreground/0 from-50% via-foreground/0 via-50% to-foreground/50 to-100%',\n className,\n )}\n data-slot=\"category-card-overlay\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nimport { useCategoryCard } from '../primitives';\n\nexport type CategoryCardTitleProps = ComponentProps<'h3'>;\n\nexport function CategoryCardTitle({ children, className, ...props }: CategoryCardTitleProps) {\n const { textSize, textColorScheme } = useCategoryCard();\n\n return (\n <h3\n className={cn(\n 'font-medium leading-tight',\n {\n small: 'text-lg tracking-normal @xs:text-xl',\n medium: 'text-xl tracking-normal @xs:text-2xl',\n large: 'text-2xl tracking-tight @xs:text-3xl',\n 'x-large': 'text-3xl tracking-tight @xs:text-4xl',\n }[textSize],\n {\n light: 'text-[var(--category-card-light-text,hsl(var(--foreground)))]',\n dark: 'text-[var(--category-card-dark-text,hsl(var(--background)))]',\n }[textColorScheme],\n className,\n )}\n data-slot=\"category-card-title\"\n {...props}\n >\n {children}\n </h3>\n );\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport interface CategoryCardLinkProps extends ComponentProps<'a'> {\n asChild?: boolean;\n}\n\nexport function CategoryCardLink({ asChild = false, className, ...props }: CategoryCardLinkProps) {\n const { textColorScheme } = useCategoryCard();\n\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'absolute inset-0 rounded-[var(--category-card-border-radius,1rem)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--category-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4',\n {\n light: 'ring-offset-[var(--category-card-light-offset,hsl(var(--background)))]',\n dark: 'ring-offset-[var(--category-card-dark-offset,hsl(var(--foreground)))]',\n }[textColorScheme],\n className,\n )}\n data-slot=\"category-card-link\"\n {...props}\n />\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport * as SkeletonPrimitive from '@/components/skeleton';\nimport { cn } from '@/lib';\n\nimport { useCategoryCard } from '../primitives';\n\nexport type CategoryCardSkeletonProps = ComponentProps<'div'>;\n\nexport function CategoryCardSkeleton({ className, ...props }: CategoryCardSkeletonProps) {\n const { aspectRatio } = useCategoryCard();\n\n return (\n <div className={cn('@container', className)} {...props} data-slot=\"category-card-skeleton\">\n <SkeletonPrimitive.Box\n className={cn(\n 'rounded-[var(--category-card-border-radius,1rem)]',\n {\n '5:6': 'aspect-[5/6]',\n '3:4': 'aspect-[3/4]',\n '1:1': 'aspect-square',\n }[aspectRatio],\n )}\n />\n <div className=\"mt-3\">\n <SkeletonPrimitive.Text characterCount={10} className=\"rounded text-lg\" />\n </div>\n </div>\n );\n}\n"],"names":["CategoryCardContext","createContext","CategoryCardRoot","className","children","as","textColorScheme","iconColorScheme","aspectRatio","textSize","showOverlay","props","CategoryCardRootElement","contextValues","useMemo","jsx","cn","useCategoryCard","context","use","CategoryCardIcon","Slot","CategoryCardThumbnail","CategoryCardImage","asChild","Component","CategoryCardFallback","CategoryCardOverlay","CategoryCardTitle","CategoryCardLink","CategoryCardSkeleton","jsxs","SkeletonPrimitive.Box","SkeletonPrimitive.Text"],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { jsx as e, jsxs as h } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as x, useMemo as y, use as p } from "react";
|
|
3
|
+
import { c as n } from "./utils-BOGlfttm.js";
|
|
4
|
+
import { S as d } from "./index-DD8W7cMj.js";
|
|
5
|
+
import { S as C } from "./skeleton-box-BSzQ5f9Y.js";
|
|
6
|
+
import { S as k } from "./skeleton-text-Dd4GbnEz.js";
|
|
7
|
+
const u = x(void 0);
|
|
8
|
+
function I({
|
|
9
|
+
className: r,
|
|
10
|
+
children: t,
|
|
11
|
+
as: a,
|
|
12
|
+
textColorScheme: o = "light",
|
|
13
|
+
iconColorScheme: c = "light",
|
|
14
|
+
aspectRatio: l = "5:6",
|
|
15
|
+
textSize: i = "small",
|
|
16
|
+
showOverlay: g = !0,
|
|
17
|
+
...m
|
|
18
|
+
}) {
|
|
19
|
+
const f = a ?? "article", v = y(
|
|
20
|
+
() => ({
|
|
21
|
+
textColorScheme: o,
|
|
22
|
+
iconColorScheme: c,
|
|
23
|
+
aspectRatio: l,
|
|
24
|
+
textSize: i,
|
|
25
|
+
showOverlay: g
|
|
26
|
+
}),
|
|
27
|
+
[o, c, l, i, g]
|
|
28
|
+
);
|
|
29
|
+
return /* @__PURE__ */ e(u.Provider, { value: v, children: /* @__PURE__ */ e(
|
|
30
|
+
f,
|
|
31
|
+
{
|
|
32
|
+
className: n(
|
|
33
|
+
"group relative flex w-full max-w-md cursor-pointer flex-col gap-2 rounded-[var(--category-card-border-radius,1rem)] font-[var(--category-card-font-family,var(--font-family-body))] @container",
|
|
34
|
+
{
|
|
35
|
+
small: "gap-2",
|
|
36
|
+
medium: "gap-3",
|
|
37
|
+
large: "gap-4",
|
|
38
|
+
"x-large": "gap-5"
|
|
39
|
+
}[i],
|
|
40
|
+
r
|
|
41
|
+
),
|
|
42
|
+
"data-slot": "category-card-root",
|
|
43
|
+
...m,
|
|
44
|
+
children: t
|
|
45
|
+
}
|
|
46
|
+
) });
|
|
47
|
+
}
|
|
48
|
+
function s() {
|
|
49
|
+
const r = p(u);
|
|
50
|
+
if (r === void 0)
|
|
51
|
+
throw new Error("useCategoryCard must be used within a CategoryCardRoot");
|
|
52
|
+
return r;
|
|
53
|
+
}
|
|
54
|
+
function _({ className: r, children: t, ...a }) {
|
|
55
|
+
const { iconColorScheme: o } = s();
|
|
56
|
+
return /* @__PURE__ */ e(
|
|
57
|
+
d,
|
|
58
|
+
{
|
|
59
|
+
className: n(
|
|
60
|
+
"absolute right-5 top-5 z-10 transition-transform duration-700 ease-out group-hover:-translate-y-1.5 group-hover:translate-x-1.5",
|
|
61
|
+
{
|
|
62
|
+
light: "text-[var(--category-card-light-icon,hsl(var(--foreground)))]",
|
|
63
|
+
dark: "text-[var(--category-card-dark-icon,hsl(var(--background)))]"
|
|
64
|
+
}[o],
|
|
65
|
+
r
|
|
66
|
+
),
|
|
67
|
+
"data-slot": "category-card-icon",
|
|
68
|
+
...a,
|
|
69
|
+
children: t
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
function j({
|
|
74
|
+
className: r,
|
|
75
|
+
children: t,
|
|
76
|
+
...a
|
|
77
|
+
}) {
|
|
78
|
+
const { textColorScheme: o, aspectRatio: c } = s();
|
|
79
|
+
return /* @__PURE__ */ e(
|
|
80
|
+
"div",
|
|
81
|
+
{
|
|
82
|
+
className: n(
|
|
83
|
+
"relative overflow-hidden rounded-[inherit] group-focus:ring-[var(--category-card-focus,hsl(var(--primary)))] group-focus-visible:ring-2",
|
|
84
|
+
{
|
|
85
|
+
light: "bg-[var(--category-card-light-background,hsl(var(--contrast-100)))]",
|
|
86
|
+
dark: "bg-[var(--category-card-dark-background,hsl(var(--contrast-500)))]"
|
|
87
|
+
}[o],
|
|
88
|
+
{
|
|
89
|
+
"5:6": "aspect-[5/6]",
|
|
90
|
+
"3:4": "aspect-[3/4]",
|
|
91
|
+
"1:1": "aspect-square"
|
|
92
|
+
}[c],
|
|
93
|
+
r
|
|
94
|
+
),
|
|
95
|
+
"data-slot": "category-card-thumbnail",
|
|
96
|
+
...a,
|
|
97
|
+
children: t
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
function q({
|
|
102
|
+
className: r,
|
|
103
|
+
children: t,
|
|
104
|
+
asChild: a = !1,
|
|
105
|
+
...o
|
|
106
|
+
}) {
|
|
107
|
+
const { textColorScheme: c } = s();
|
|
108
|
+
return /* @__PURE__ */ e(
|
|
109
|
+
a ? d : "img",
|
|
110
|
+
{
|
|
111
|
+
className: n(
|
|
112
|
+
"h-full w-full scale-100 select-none object-cover transition-transform duration-500 ease-out group-hover:scale-110",
|
|
113
|
+
{
|
|
114
|
+
light: "bg-[var(--category-card-light-background,hsl(var(--contrast-100)))]",
|
|
115
|
+
dark: "bg-[var(--category-card-dark-background,hsl(var(--contrast-500)))]"
|
|
116
|
+
}[c],
|
|
117
|
+
r
|
|
118
|
+
),
|
|
119
|
+
"data-slot": "category-card-image",
|
|
120
|
+
...o
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
function E({ className: r, children: t, ...a }) {
|
|
125
|
+
const { textColorScheme: o } = s();
|
|
126
|
+
return /* @__PURE__ */ e(
|
|
127
|
+
"div",
|
|
128
|
+
{
|
|
129
|
+
className: n(
|
|
130
|
+
"break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out group-hover:scale-105",
|
|
131
|
+
{
|
|
132
|
+
light: "[color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)]",
|
|
133
|
+
dark: "[color:color-mix(in_oklab,hsl(var(--background))_30%,transparent)]"
|
|
134
|
+
}[o],
|
|
135
|
+
r
|
|
136
|
+
),
|
|
137
|
+
"data-slot": "category-card-fallback",
|
|
138
|
+
...a,
|
|
139
|
+
children: t
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
function F({ children: r, className: t, ...a }) {
|
|
144
|
+
const { showOverlay: o } = s();
|
|
145
|
+
return /* @__PURE__ */ e(
|
|
146
|
+
"div",
|
|
147
|
+
{
|
|
148
|
+
className: n(
|
|
149
|
+
"absolute inset-0 flex items-end p-6 @xs:p-8",
|
|
150
|
+
o && "bg-gradient-to-b from-foreground/0 from-50% via-foreground/0 via-50% to-foreground/50 to-100%",
|
|
151
|
+
t
|
|
152
|
+
),
|
|
153
|
+
"data-slot": "category-card-overlay",
|
|
154
|
+
...a,
|
|
155
|
+
children: r
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
function L({ children: r, className: t, ...a }) {
|
|
160
|
+
const { textSize: o, textColorScheme: c } = s();
|
|
161
|
+
return /* @__PURE__ */ e(
|
|
162
|
+
"h3",
|
|
163
|
+
{
|
|
164
|
+
className: n(
|
|
165
|
+
"font-medium leading-tight",
|
|
166
|
+
{
|
|
167
|
+
small: "text-lg tracking-normal @xs:text-xl",
|
|
168
|
+
medium: "text-xl tracking-normal @xs:text-2xl",
|
|
169
|
+
large: "text-2xl tracking-tight @xs:text-3xl",
|
|
170
|
+
"x-large": "text-3xl tracking-tight @xs:text-4xl"
|
|
171
|
+
}[o],
|
|
172
|
+
{
|
|
173
|
+
light: "text-[var(--category-card-light-text,hsl(var(--foreground)))]",
|
|
174
|
+
dark: "text-[var(--category-card-dark-text,hsl(var(--background)))]"
|
|
175
|
+
}[c],
|
|
176
|
+
t
|
|
177
|
+
),
|
|
178
|
+
"data-slot": "category-card-title",
|
|
179
|
+
...a,
|
|
180
|
+
children: r
|
|
181
|
+
}
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
function O({ asChild: r = !1, className: t, ...a }) {
|
|
185
|
+
const { textColorScheme: o } = s();
|
|
186
|
+
return /* @__PURE__ */ e(
|
|
187
|
+
r ? d : "a",
|
|
188
|
+
{
|
|
189
|
+
className: n(
|
|
190
|
+
"absolute inset-0 rounded-[var(--category-card-border-radius,1rem)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--category-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4",
|
|
191
|
+
{
|
|
192
|
+
light: "ring-offset-[var(--category-card-light-offset,hsl(var(--background)))]",
|
|
193
|
+
dark: "ring-offset-[var(--category-card-dark-offset,hsl(var(--foreground)))]"
|
|
194
|
+
}[o],
|
|
195
|
+
t
|
|
196
|
+
),
|
|
197
|
+
"data-slot": "category-card-link",
|
|
198
|
+
...a
|
|
199
|
+
}
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
function B({ className: r, ...t }) {
|
|
203
|
+
const { aspectRatio: a } = s();
|
|
204
|
+
return /* @__PURE__ */ h("div", { className: n("@container", r), ...t, "data-slot": "category-card-skeleton", children: [
|
|
205
|
+
/* @__PURE__ */ e(
|
|
206
|
+
C,
|
|
207
|
+
{
|
|
208
|
+
className: n(
|
|
209
|
+
"rounded-[var(--category-card-border-radius,1rem)]",
|
|
210
|
+
{
|
|
211
|
+
"5:6": "aspect-[5/6]",
|
|
212
|
+
"3:4": "aspect-[3/4]",
|
|
213
|
+
"1:1": "aspect-square"
|
|
214
|
+
}[a]
|
|
215
|
+
)
|
|
216
|
+
}
|
|
217
|
+
),
|
|
218
|
+
/* @__PURE__ */ e("div", { className: "mt-3", children: /* @__PURE__ */ e(k, { characterCount: 10, className: "rounded text-lg" }) })
|
|
219
|
+
] });
|
|
220
|
+
}
|
|
221
|
+
export {
|
|
222
|
+
E as Fallback,
|
|
223
|
+
_ as Icon,
|
|
224
|
+
q as Image,
|
|
225
|
+
O as Link,
|
|
226
|
+
F as Overlay,
|
|
227
|
+
I as Root,
|
|
228
|
+
B as Skeleton,
|
|
229
|
+
j as Thumbnail,
|
|
230
|
+
L as Title,
|
|
231
|
+
s as useCategoryCard
|
|
232
|
+
};
|
|
233
|
+
//# sourceMappingURL=category-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category-card.js","sources":["../src/components/category-card/primitives/category-card-root.tsx","../src/components/category-card/primitives/category-card-icon.tsx","../src/components/category-card/primitives/category-card-thumbnail.tsx","../src/components/category-card/primitives/category-card-image.tsx","../src/components/category-card/primitives/category-card-fallback.tsx","../src/components/category-card/primitives/category-card-overlay.tsx","../src/components/category-card/primitives/category-card-title.tsx","../src/components/category-card/primitives/category-card-link.tsx","../src/components/category-card/primitives/category-card-skeleton.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, use, useMemo } from 'react';\nimport type { ComponentProps, ElementType } from 'react';\n\nimport { cn } from '@/lib';\n\ninterface CategoryCardContext {\n textColorScheme: 'light' | 'dark';\n iconColorScheme: 'light' | 'dark';\n aspectRatio: '5:6' | '3:4' | '1:1';\n textSize: 'small' | 'medium' | 'large' | 'x-large';\n showOverlay: boolean;\n}\n\nexport const CategoryCardContext = createContext<CategoryCardContext | undefined>(undefined);\n\nexport type CategoryCardRootProps<E extends ElementType = 'article'> = Omit<\n ComponentProps<E>,\n 'as'\n> & {\n as?: E;\n textColorScheme?: 'light' | 'dark';\n iconColorScheme?: 'light' | 'dark';\n aspectRatio?: '5:6' | '3:4' | '1:1';\n textSize?: 'small' | 'medium' | 'large' | 'x-large';\n showOverlay?: boolean;\n};\n\nexport function CategoryCardRoot<T extends ElementType = 'article'>({\n className,\n children,\n as,\n textColorScheme = 'light',\n iconColorScheme = 'light',\n aspectRatio = '5:6',\n textSize = 'small',\n showOverlay = true,\n ...props\n}: CategoryCardRootProps<T>) {\n const CategoryCardRootElement = as ?? 'article';\n\n const contextValues = useMemo(\n () => ({\n textColorScheme,\n iconColorScheme,\n aspectRatio,\n textSize,\n showOverlay,\n }),\n [textColorScheme, iconColorScheme, aspectRatio, textSize, showOverlay],\n );\n\n return (\n <CategoryCardContext.Provider value={contextValues}>\n <CategoryCardRootElement\n className={cn(\n 'group relative flex w-full max-w-md cursor-pointer flex-col gap-2 rounded-[var(--category-card-border-radius,1rem)] font-[var(--category-card-font-family,var(--font-family-body))] @container',\n {\n small: 'gap-2',\n medium: 'gap-3',\n large: 'gap-4',\n 'x-large': 'gap-5',\n }[textSize],\n className,\n )}\n data-slot=\"category-card-root\"\n {...props}\n >\n {children}\n </CategoryCardRootElement>\n </CategoryCardContext.Provider>\n );\n}\n\nexport function useCategoryCard() {\n const context = use(CategoryCardContext);\n\n if (context === undefined) {\n throw new Error('useCategoryCard must be used within a CategoryCardRoot');\n }\n\n return context;\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport type CategoryCardIconProps = ComponentProps<typeof Slot>;\n\nexport function CategoryCardIcon({ className, children, ...props }: CategoryCardIconProps) {\n const { iconColorScheme } = useCategoryCard();\n\n return (\n <Slot\n className={cn(\n 'absolute right-5 top-5 z-10 transition-transform duration-700 ease-out group-hover:-translate-y-1.5 group-hover:translate-x-1.5',\n {\n light: 'text-[var(--category-card-light-icon,hsl(var(--foreground)))]',\n dark: 'text-[var(--category-card-dark-icon,hsl(var(--background)))]',\n }[iconColorScheme],\n className,\n )}\n data-slot=\"category-card-icon\"\n {...props}\n >\n {children}\n </Slot>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport type CategoryCardThumbnailProps = ComponentProps<'div'>;\n\nexport function CategoryCardThumbnail({\n className,\n children,\n ...props\n}: CategoryCardThumbnailProps) {\n const { textColorScheme, aspectRatio } = useCategoryCard();\n\n return (\n <div\n className={cn(\n 'relative overflow-hidden rounded-[inherit] group-focus:ring-[var(--category-card-focus,hsl(var(--primary)))] group-focus-visible:ring-2',\n {\n light: 'bg-[var(--category-card-light-background,hsl(var(--contrast-100)))]',\n dark: 'bg-[var(--category-card-dark-background,hsl(var(--contrast-500)))]',\n }[textColorScheme],\n {\n '5:6': 'aspect-[5/6]',\n '3:4': 'aspect-[3/4]',\n '1:1': 'aspect-square',\n }[aspectRatio],\n className,\n )}\n data-slot=\"category-card-thumbnail\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport type CategoryCardImageProps = ComponentProps<'img'> & {\n asChild?: boolean;\n};\n\nexport function CategoryCardImage({\n className,\n children,\n asChild = false,\n ...props\n}: CategoryCardImageProps) {\n const { textColorScheme } = useCategoryCard();\n\n const Component = asChild ? Slot : 'img';\n\n return (\n <Component\n className={cn(\n 'h-full w-full scale-100 select-none object-cover transition-transform duration-500 ease-out group-hover:scale-110',\n {\n light: 'bg-[var(--category-card-light-background,hsl(var(--contrast-100)))]',\n dark: 'bg-[var(--category-card-dark-background,hsl(var(--contrast-500)))]',\n }[textColorScheme],\n className,\n )}\n data-slot=\"category-card-image\"\n {...props}\n />\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport type CategoryCardFallbackProps = ComponentProps<'div'>;\n\nexport function CategoryCardFallback({ className, children, ...props }: CategoryCardFallbackProps) {\n const { textColorScheme } = useCategoryCard();\n\n return (\n <div\n className={cn(\n 'break-words p-4 text-4xl font-bold leading-none tracking-tight transition-transform duration-500 ease-out group-hover:scale-105',\n {\n light: '[color:color-mix(in_oklab,hsl(var(--foreground))_30%,transparent)]',\n dark: '[color:color-mix(in_oklab,hsl(var(--background))_30%,transparent)]',\n }[textColorScheme],\n className,\n )}\n data-slot=\"category-card-fallback\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nimport { useCategoryCard } from '../primitives';\n\nexport type CategoryCardOverlayProps = ComponentProps<'div'>;\n\nexport function CategoryCardOverlay({ children, className, ...props }: CategoryCardOverlayProps) {\n const { showOverlay } = useCategoryCard();\n\n return (\n <div\n className={cn(\n 'absolute inset-0 flex items-end p-6 @xs:p-8',\n showOverlay &&\n 'bg-gradient-to-b from-foreground/0 from-50% via-foreground/0 via-50% to-foreground/50 to-100%',\n className,\n )}\n data-slot=\"category-card-overlay\"\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '@/lib';\n\nimport { useCategoryCard } from '../primitives';\n\nexport type CategoryCardTitleProps = ComponentProps<'h3'>;\n\nexport function CategoryCardTitle({ children, className, ...props }: CategoryCardTitleProps) {\n const { textSize, textColorScheme } = useCategoryCard();\n\n return (\n <h3\n className={cn(\n 'font-medium leading-tight',\n {\n small: 'text-lg tracking-normal @xs:text-xl',\n medium: 'text-xl tracking-normal @xs:text-2xl',\n large: 'text-2xl tracking-tight @xs:text-3xl',\n 'x-large': 'text-3xl tracking-tight @xs:text-4xl',\n }[textSize],\n {\n light: 'text-[var(--category-card-light-text,hsl(var(--foreground)))]',\n dark: 'text-[var(--category-card-dark-text,hsl(var(--background)))]',\n }[textColorScheme],\n className,\n )}\n data-slot=\"category-card-title\"\n {...props}\n >\n {children}\n </h3>\n );\n}\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentProps } from 'react';\n\nimport { useCategoryCard } from '@/components/category-card';\nimport { cn } from '@/lib';\n\nexport interface CategoryCardLinkProps extends ComponentProps<'a'> {\n asChild?: boolean;\n}\n\nexport function CategoryCardLink({ asChild = false, className, ...props }: CategoryCardLinkProps) {\n const { textColorScheme } = useCategoryCard();\n\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'absolute inset-0 rounded-[var(--category-card-border-radius,1rem)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--category-card-focus,hsl(var(--primary)))] focus-visible:ring-offset-4',\n {\n light: 'ring-offset-[var(--category-card-light-offset,hsl(var(--background)))]',\n dark: 'ring-offset-[var(--category-card-dark-offset,hsl(var(--foreground)))]',\n }[textColorScheme],\n className,\n )}\n data-slot=\"category-card-link\"\n {...props}\n />\n );\n}\n","import type { ComponentProps } from 'react';\n\nimport * as SkeletonPrimitive from '@/components/skeleton';\nimport { cn } from '@/lib';\n\nimport { useCategoryCard } from '../primitives';\n\nexport type CategoryCardSkeletonProps = ComponentProps<'div'>;\n\nexport function CategoryCardSkeleton({ className, ...props }: CategoryCardSkeletonProps) {\n const { aspectRatio } = useCategoryCard();\n\n return (\n <div className={cn('@container', className)} {...props} data-slot=\"category-card-skeleton\">\n <SkeletonPrimitive.Box\n className={cn(\n 'rounded-[var(--category-card-border-radius,1rem)]',\n {\n '5:6': 'aspect-[5/6]',\n '3:4': 'aspect-[3/4]',\n '1:1': 'aspect-square',\n }[aspectRatio],\n )}\n />\n <div className=\"mt-3\">\n <SkeletonPrimitive.Text characterCount={10} className=\"rounded text-lg\" />\n </div>\n </div>\n );\n}\n"],"names":["CategoryCardContext","createContext","CategoryCardRoot","className","children","as","textColorScheme","iconColorScheme","aspectRatio","textSize","showOverlay","props","CategoryCardRootElement","contextValues","useMemo","jsx","cn","useCategoryCard","context","use","CategoryCardIcon","Slot","CategoryCardThumbnail","CategoryCardImage","asChild","CategoryCardFallback","CategoryCardOverlay","CategoryCardTitle","CategoryCardLink","CategoryCardSkeleton","jsxs","SkeletonPrimitive.Box","SkeletonPrimitive.Text"],"mappings":"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"}
|