@vite-mf-monorepo/ui 0.4.10 → 0.4.12

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.
@@ -1,2 +1,2 @@
1
- import{Fragment as B,jsx as n,jsxs as h}from"react/jsx-runtime";import u from"next/link";import{getButtonClasses as p,getButtonDisabledClasses as f,iconSizeMap as d}from"../../Button/Button.utils";import{Icon as N}from"../../Icon";function P(t){const{variant:a="primary",size:o="md",icon:i,iconPosition:c="left",className:r,children:l}=t,s=p({variant:a,size:o,iconPosition:c,className:r}),e=h(B,{children:[i&&n(N,{name:i,size:d[o]}),l]});if(t.as==="link"){const{as:C,variant:L,size:D,icon:I,iconPosition:M,className:R,children:S,..._}=t;return n(u,{className:s,..._,children:e})}const{as:v,variant:z,size:b,icon:k,iconPosition:y,className:g,children:x,...m}=t;return n("button",{className:f(s),...m,children:e})}var E=P;export{E as default};
1
+ import{Fragment as g,jsx as i,jsxs as x}from"react/jsx-runtime";import v from"next/link";import{getButtonClasses as z,getButtonDisabledClasses as B,iconSizeMap as k}from"../../Button/Button.utils";import{Icon as b}from"../../Icon";function y(n){const{variant:e="primary",size:a="md",icon:c,iconPosition:r="left",className:l,children:_}=n,t=z({variant:e,size:a,iconPosition:r,className:l}),o=x(g,{children:[c&&i(b,{name:c,size:k[a]}),_]});if(n.as==="link"){const{as:u,variant:f,size:N,icon:P,iconPosition:d,className:h,children:p,...s}=n;return i(v,{className:t,...s,children:o})}if(n.as==="zone-link"){const{as:u,variant:f,size:N,icon:P,iconPosition:d,className:h,children:p,...s}=n;return i("a",{className:t,...s,children:o})}const{as:C,variant:L,size:D,icon:I,iconPosition:M,className:R,children:S,...m}=n;return i("button",{className:B(t),...m,children:o})}var E=y;export{E as default};
2
2
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/Button/Button.tsx"],"sourcesContent":["import Link from 'next/link'\n\nimport {\n getButtonClasses,\n getButtonDisabledClasses,\n iconSizeMap,\n} from '../../Button/Button.utils'\nimport { Icon } from '../../Icon'\n\nimport type { NextButtonProps } from './Button.types'\n\nfunction Button(props: Readonly<NextButtonProps>) {\n const {\n variant = 'primary',\n size = 'md',\n icon,\n iconPosition = 'left',\n className,\n children,\n } = props\n\n const classes = getButtonClasses({ variant, size, iconPosition, className })\n\n const content = (\n <>\n {icon && <Icon name={icon} size={iconSizeMap[size]} />}\n {children}\n </>\n )\n\n if (props.as === 'link') {\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...linkProps\n } = props\n\n return (\n <Link className={classes} {...linkProps}>\n {content}\n </Link>\n )\n }\n\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...buttonProps\n } = props\n\n return (\n <button className={getButtonDisabledClasses(classes)} {...buttonProps}>\n {content}\n </button>\n )\n}\n\nexport default Button\n"],"mappings":"AAwBI,mBAAAA,EACW,OAAAC,EADX,QAAAC,MAAA,oBAxBJ,OAAOC,MAAU,YAEjB,OACE,oBAAAC,EACA,4BAAAC,EACA,eAAAC,MACK,4BACP,OAAS,QAAAC,MAAY,aAIrB,SAASC,EAAOC,EAAkC,CAChD,KAAM,CACJ,QAAAC,EAAU,UACV,KAAAC,EAAO,KACP,KAAAC,EACA,aAAAC,EAAe,OACf,UAAAC,EACA,SAAAC,CACF,EAAIN,EAEEO,EAAUZ,EAAiB,CAAE,QAAAM,EAAS,KAAAC,EAAM,aAAAE,EAAc,UAAAC,CAAU,CAAC,EAErEG,EACJf,EAAAF,EAAA,CACG,UAAAY,GAAQX,EAACM,EAAA,CAAK,KAAMK,EAAM,KAAMN,EAAYK,CAAI,EAAG,EACnDI,GACH,EAGF,GAAIN,EAAM,KAAO,OAAQ,CACvB,KAAM,CACJ,GAAIS,EACJ,QAASC,EACT,KAAMC,EACN,KAAMC,EACN,aAAcC,EACd,UAAWC,EACX,SAAUC,EACV,GAAGC,CACL,EAAIhB,EAEJ,OACER,EAACE,EAAA,CAAK,UAAWa,EAAU,GAAGS,EAC3B,SAAAR,EACH,CAEJ,CAEA,KAAM,CACJ,GAAIC,EACJ,QAASC,EACT,KAAMC,EACN,KAAMC,EACN,aAAcC,EACd,UAAWC,EACX,SAAUC,EACV,GAAGE,CACL,EAAIjB,EAEJ,OACER,EAAC,UAAO,UAAWI,EAAyBW,CAAO,EAAI,GAAGU,EACvD,SAAAT,EACH,CAEJ,CAEA,IAAOU,EAAQnB","names":["Fragment","jsx","jsxs","Link","getButtonClasses","getButtonDisabledClasses","iconSizeMap","Icon","Button","props","variant","size","icon","iconPosition","className","children","classes","content","_","_v","_s","_i","_ip","_c","_ch","linkProps","buttonProps","Button_default"]}
1
+ {"version":3,"sources":["../../../src/next/Button/Button.tsx"],"sourcesContent":["import Link from 'next/link'\n\nimport {\n getButtonClasses,\n getButtonDisabledClasses,\n iconSizeMap,\n} from '../../Button/Button.utils'\nimport { Icon } from '../../Icon'\n\nimport type { NextButtonProps } from './Button.types'\n\nfunction Button(props: Readonly<NextButtonProps>) {\n const {\n variant = 'primary',\n size = 'md',\n icon,\n iconPosition = 'left',\n className,\n children,\n } = props\n\n const classes = getButtonClasses({ variant, size, iconPosition, className })\n\n const content = (\n <>\n {icon && <Icon name={icon} size={iconSizeMap[size]} />}\n {children}\n </>\n )\n\n if (props.as === 'link') {\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...linkProps\n } = props\n\n return (\n <Link className={classes} {...linkProps}>\n {content}\n </Link>\n )\n }\n\n if (props.as === 'zone-link') {\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...anchorProps\n } = props\n\n return (\n <a className={classes} {...anchorProps}>\n {content}\n </a>\n )\n }\n\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...buttonProps\n } = props\n\n return (\n <button className={getButtonDisabledClasses(classes)} {...buttonProps}>\n {content}\n </button>\n )\n}\n\nexport default Button\n"],"mappings":"AAwBI,mBAAAA,EACW,OAAAC,EADX,QAAAC,MAAA,oBAxBJ,OAAOC,MAAU,YAEjB,OACE,oBAAAC,EACA,4BAAAC,EACA,eAAAC,MACK,4BACP,OAAS,QAAAC,MAAY,aAIrB,SAASC,EAAOC,EAAkC,CAChD,KAAM,CACJ,QAAAC,EAAU,UACV,KAAAC,EAAO,KACP,KAAAC,EACA,aAAAC,EAAe,OACf,UAAAC,EACA,SAAAC,CACF,EAAIN,EAEEO,EAAUZ,EAAiB,CAAE,QAAAM,EAAS,KAAAC,EAAM,aAAAE,EAAc,UAAAC,CAAU,CAAC,EAErEG,EACJf,EAAAF,EAAA,CACG,UAAAY,GAAQX,EAACM,EAAA,CAAK,KAAMK,EAAM,KAAMN,EAAYK,CAAI,EAAG,EACnDI,GACH,EAGF,GAAIN,EAAM,KAAO,OAAQ,CACvB,KAAM,CACJ,GAAIS,EACJ,QAASC,EACT,KAAMC,EACN,KAAMC,EACN,aAAcC,EACd,UAAWC,EACX,SAAUC,EACV,GAAGC,CACL,EAAIhB,EAEJ,OACER,EAACE,EAAA,CAAK,UAAWa,EAAU,GAAGS,EAC3B,SAAAR,EACH,CAEJ,CAEA,GAAIR,EAAM,KAAO,YAAa,CAC5B,KAAM,CACJ,GAAIS,EACJ,QAASC,EACT,KAAMC,EACN,KAAMC,EACN,aAAcC,EACd,UAAWC,EACX,SAAUC,EACV,GAAGE,CACL,EAAIjB,EAEJ,OACER,EAAC,KAAE,UAAWe,EAAU,GAAGU,EACxB,SAAAT,EACH,CAEJ,CAEA,KAAM,CACJ,GAAIC,EACJ,QAASC,EACT,KAAMC,EACN,KAAMC,EACN,aAAcC,EACd,UAAWC,EACX,SAAUC,EACV,GAAGG,CACL,EAAIlB,EAEJ,OACER,EAAC,UAAO,UAAWI,EAAyBW,CAAO,EAAI,GAAGW,EACvD,SAAAV,EACH,CAEJ,CAEA,IAAOW,EAAQpB","names":["Fragment","jsx","jsxs","Link","getButtonClasses","getButtonDisabledClasses","iconSizeMap","Icon","Button","props","variant","size","icon","iconPosition","className","children","classes","content","_","_v","_s","_i","_ip","_c","_ch","linkProps","anchorProps","buttonProps","Button_default"]}
@@ -21,6 +21,14 @@ type NextButtonAsLink = ButtonVisualProps & Omit<LinkProps, 'as'> & {
21
21
  className?: string;
22
22
  children?: React.ReactNode;
23
23
  };
24
- type NextButtonProps = NextButtonAsButton | NextButtonAsLink;
24
+ type NextButtonAsZoneLink = ButtonVisualProps & {
25
+ /** Render as a plain anchor for cross-zone navigation (multi-zones). */
26
+ as: 'zone-link';
27
+ /** Navigation URL */
28
+ href: string;
29
+ className?: string;
30
+ children?: React.ReactNode;
31
+ };
32
+ type NextButtonProps = NextButtonAsButton | NextButtonAsLink | NextButtonAsZoneLink;
25
33
 
26
- export type { NextButtonAsButton, NextButtonAsLink, NextButtonProps };
34
+ export type { NextButtonAsButton, NextButtonAsLink, NextButtonAsZoneLink, NextButtonProps };
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t}from"react/jsx-runtime";import c from"clsx";import h from"next/image";import{useCallback as s,useEffect as N,useRef as x,useState as E}from"react";import{Icon as v}from"../../Icon";function S({fallback:d,aspectRatio:n,blurDataURL:m,className:f,onLoad:a,onError:o,style:l,...p}){const[r,i]=E("loading"),u=x(null);N(()=>{const e=u.current?.querySelector("img");console.warn("NextImage::useEffect - img: ",e),e?.complete&&e.naturalWidth>0&&(console.warn("NextImage::useEffect - loaded from cache"),i("loaded"))},[]);const g=s(e=>{i("loaded"),console.warn("NextImage::handleLoad::loaded"),typeof a=="function"&&a(e)},[a]),y=s(e=>{i("error"),console.warn("NextImage::handleError::error"),typeof o=="function"&&o(e)},[o]),I=t("div",{className:"ui:flex ui:h-full ui:w-full ui:items-center ui:justify-center ui:bg-muted",children:t(v,{name:"Photo",size:48,className:"ui:text-muted-foreground","aria-hidden":"true"})});return t("div",{className:c("ui:relative ui:overflow-hidden ui:bg-muted",f),style:n?{aspectRatio:n,...l}:l,"data-state":r,ref:u,children:r==="error"?d??I:t(h,{...p,className:c("ui:transition-opacity ui:duration-300",r==="loaded"?"ui:opacity-100":"ui:opacity-0"),onLoad:g,onError:y,placeholder:m?"blur":"empty",blurDataURL:m})})}var H=S;export{H as default};
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import s from"clsx";import I from"next/image";import{useCallback as c,useEffect as v,useRef as E,useState as N}from"react";import{Icon as S}from"../../Icon";function x({fallback:f,aspectRatio:m,blurDataURL:n,className:d,onLoad:a,onError:o,style:u,...p}){const[i,r]=N("loading"),l=E(null);v(()=>{const e=l.current?.querySelector("img");e?.complete&&e.naturalWidth>0&&r("loaded")},[]);const y=c(e=>{r("loaded"),typeof a=="function"&&a(e)},[a]),g=c(e=>{r("error"),typeof o=="function"&&o(e)},[o]),h=t("div",{className:"ui:flex ui:h-full ui:w-full ui:items-center ui:justify-center ui:bg-muted",children:t(S,{name:"Photo",size:48,className:"ui:text-muted-foreground","aria-hidden":"true"})});return t("div",{className:s("ui:relative ui:overflow-hidden ui:bg-muted",d),style:m?{aspectRatio:m,...u}:u,"data-state":i,ref:l,children:i==="error"?f??h:t(I,{...p,className:s("ui:transition-opacity ui:duration-300",i==="loaded"?"ui:opacity-100":"ui:opacity-0"),onLoad:y,onError:g,placeholder:n?"blur":"empty",blurDataURL:n})})}var H=x;export{H as default};
2
2
  //# sourceMappingURL=NextImage.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/Image/NextImage.tsx"],"sourcesContent":["'use client'\n\nimport clsx from 'clsx'\nimport Image from 'next/image'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { Icon } from '../../Icon'\n\nimport type { NextImageProps } from './NextImage.types'\nimport type { ImageState } from '../../Image'\nimport type { SyntheticEvent } from 'react'\n\nfunction NextImage({\n fallback,\n aspectRatio,\n blurDataURL,\n className,\n onLoad,\n onError,\n style,\n ...rest\n}: Readonly<NextImageProps>) {\n const [state, setState] = useState<ImageState>('loading')\n\n const wrapperRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const img = wrapperRef.current?.querySelector('img')\n console.warn('NextImage::useEffect - img: ', img)\n if (img?.complete && img.naturalWidth > 0) {\n console.warn('NextImage::useEffect - loaded from cache')\n setState('loaded')\n }\n }, [])\n\n const handleLoad = useCallback(\n (e: SyntheticEvent<HTMLImageElement>) => {\n setState('loaded')\n console.warn('NextImage::handleLoad::loaded')\n if (typeof onLoad === 'function') {\n onLoad(e as Parameters<typeof onLoad>[0])\n }\n },\n [onLoad]\n )\n\n const handleError = useCallback(\n (e: SyntheticEvent<HTMLImageElement>) => {\n setState('error')\n console.warn('NextImage::handleError::error')\n if (typeof onError === 'function') {\n onError(e as Parameters<typeof onError>[0])\n }\n },\n [onError]\n )\n\n const defaultFallback = (\n <div className=\"ui:flex ui:h-full ui:w-full ui:items-center ui:justify-center ui:bg-muted\">\n <Icon\n name=\"Photo\"\n size={48}\n className=\"ui:text-muted-foreground\"\n aria-hidden=\"true\"\n />\n </div>\n )\n\n return (\n <div\n className={clsx('ui:relative ui:overflow-hidden ui:bg-muted', className)}\n style={aspectRatio ? { aspectRatio, ...style } : style}\n data-state={state}\n ref={wrapperRef}\n >\n {state === 'error' ? (\n (fallback ?? defaultFallback)\n ) : (\n <Image\n {...rest}\n className={clsx(\n 'ui:transition-opacity ui:duration-300',\n state === 'loaded' ? 'ui:opacity-100' : 'ui:opacity-0'\n )}\n onLoad={handleLoad}\n onError={handleError}\n placeholder={blurDataURL ? 'blur' : 'empty'}\n blurDataURL={blurDataURL}\n />\n )}\n </div>\n )\n}\n\nexport default NextImage\n"],"mappings":"aA2DM,cAAAA,MAAA,oBAzDN,OAAOC,MAAU,OACjB,OAAOC,MAAW,aAClB,OAAS,eAAAC,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAEzD,OAAS,QAAAC,MAAY,aAMrB,SAASC,EAAU,CACjB,SAAAC,EACA,YAAAC,EACA,YAAAC,EACA,UAAAC,EACA,OAAAC,EACA,QAAAC,EACA,MAAAC,EACA,GAAGC,CACL,EAA6B,CAC3B,KAAM,CAACC,EAAOC,CAAQ,EAAIZ,EAAqB,SAAS,EAElDa,EAAad,EAAuB,IAAI,EAE9CD,EAAU,IAAM,CACd,MAAMgB,EAAMD,EAAW,SAAS,cAAc,KAAK,EACnD,QAAQ,KAAK,+BAAgCC,CAAG,EAC5CA,GAAK,UAAYA,EAAI,aAAe,IACtC,QAAQ,KAAK,0CAA0C,EACvDF,EAAS,QAAQ,EAErB,EAAG,CAAC,CAAC,EAEL,MAAMG,EAAalB,EAChB,GAAwC,CACvCe,EAAS,QAAQ,EACjB,QAAQ,KAAK,+BAA+B,EACxC,OAAOL,GAAW,YACpBA,EAAO,CAAiC,CAE5C,EACA,CAACA,CAAM,CACT,EAEMS,EAAcnB,EACjB,GAAwC,CACvCe,EAAS,OAAO,EAChB,QAAQ,KAAK,+BAA+B,EACxC,OAAOJ,GAAY,YACrBA,EAAQ,CAAkC,CAE9C,EACA,CAACA,CAAO,CACV,EAEMS,EACJvB,EAAC,OAAI,UAAU,4EACb,SAAAA,EAACO,EAAA,CACC,KAAK,QACL,KAAM,GACN,UAAU,2BACV,cAAY,OACd,EACF,EAGF,OACEP,EAAC,OACC,UAAWC,EAAK,6CAA8CW,CAAS,EACvE,MAAOF,EAAc,CAAE,YAAAA,EAAa,GAAGK,CAAM,EAAIA,EACjD,aAAYE,EACZ,IAAKE,EAEJ,SAAAF,IAAU,QACRR,GAAYc,EAEbvB,EAACE,EAAA,CACE,GAAGc,EACJ,UAAWf,EACT,wCACAgB,IAAU,SAAW,iBAAmB,cAC1C,EACA,OAAQI,EACR,QAASC,EACT,YAAaX,EAAc,OAAS,QACpC,YAAaA,EACf,EAEJ,CAEJ,CAEA,IAAOa,EAAQhB","names":["jsx","clsx","Image","useCallback","useEffect","useRef","useState","Icon","NextImage","fallback","aspectRatio","blurDataURL","className","onLoad","onError","style","rest","state","setState","wrapperRef","img","handleLoad","handleError","defaultFallback","NextImage_default"]}
1
+ {"version":3,"sources":["../../../src/next/Image/NextImage.tsx"],"sourcesContent":["'use client'\n\nimport clsx from 'clsx'\nimport Image from 'next/image'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { Icon } from '../../Icon'\n\nimport type { NextImageProps } from './NextImage.types'\nimport type { ImageState } from '../../Image'\nimport type { SyntheticEvent } from 'react'\n\nfunction NextImage({\n fallback,\n aspectRatio,\n blurDataURL,\n className,\n onLoad,\n onError,\n style,\n ...rest\n}: Readonly<NextImageProps>) {\n const [state, setState] = useState<ImageState>('loading')\n\n const wrapperRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const img = wrapperRef.current?.querySelector('img')\n\n if (img?.complete && img.naturalWidth > 0) {\n setState('loaded')\n }\n }, [])\n\n const handleLoad = useCallback(\n (e: SyntheticEvent<HTMLImageElement>) => {\n setState('loaded')\n\n if (typeof onLoad === 'function') {\n onLoad(e as Parameters<typeof onLoad>[0])\n }\n },\n [onLoad]\n )\n\n const handleError = useCallback(\n (e: SyntheticEvent<HTMLImageElement>) => {\n setState('error')\n\n if (typeof onError === 'function') {\n onError(e as Parameters<typeof onError>[0])\n }\n },\n [onError]\n )\n\n const defaultFallback = (\n <div className=\"ui:flex ui:h-full ui:w-full ui:items-center ui:justify-center ui:bg-muted\">\n <Icon\n name=\"Photo\"\n size={48}\n className=\"ui:text-muted-foreground\"\n aria-hidden=\"true\"\n />\n </div>\n )\n\n return (\n <div\n className={clsx('ui:relative ui:overflow-hidden ui:bg-muted', className)}\n style={aspectRatio ? { aspectRatio, ...style } : style}\n data-state={state}\n ref={wrapperRef}\n >\n {state === 'error' ? (\n (fallback ?? defaultFallback)\n ) : (\n <Image\n {...rest}\n className={clsx(\n 'ui:transition-opacity ui:duration-300',\n state === 'loaded' ? 'ui:opacity-100' : 'ui:opacity-0'\n )}\n onLoad={handleLoad}\n onError={handleError}\n placeholder={blurDataURL ? 'blur' : 'empty'}\n blurDataURL={blurDataURL}\n />\n )}\n </div>\n )\n}\n\nexport default NextImage\n"],"mappings":"aA0DM,cAAAA,MAAA,oBAxDN,OAAOC,MAAU,OACjB,OAAOC,MAAW,aAClB,OAAS,eAAAC,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAEzD,OAAS,QAAAC,MAAY,aAMrB,SAASC,EAAU,CACjB,SAAAC,EACA,YAAAC,EACA,YAAAC,EACA,UAAAC,EACA,OAAAC,EACA,QAAAC,EACA,MAAAC,EACA,GAAGC,CACL,EAA6B,CAC3B,KAAM,CAACC,EAAOC,CAAQ,EAAIZ,EAAqB,SAAS,EAElDa,EAAad,EAAuB,IAAI,EAE9CD,EAAU,IAAM,CACd,MAAMgB,EAAMD,EAAW,SAAS,cAAc,KAAK,EAE/CC,GAAK,UAAYA,EAAI,aAAe,GACtCF,EAAS,QAAQ,CAErB,EAAG,CAAC,CAAC,EAEL,MAAMG,EAAalB,EAChB,GAAwC,CACvCe,EAAS,QAAQ,EAEb,OAAOL,GAAW,YACpBA,EAAO,CAAiC,CAE5C,EACA,CAACA,CAAM,CACT,EAEMS,EAAcnB,EACjB,GAAwC,CACvCe,EAAS,OAAO,EAEZ,OAAOJ,GAAY,YACrBA,EAAQ,CAAkC,CAE9C,EACA,CAACA,CAAO,CACV,EAEMS,EACJvB,EAAC,OAAI,UAAU,4EACb,SAAAA,EAACO,EAAA,CACC,KAAK,QACL,KAAM,GACN,UAAU,2BACV,cAAY,OACd,EACF,EAGF,OACEP,EAAC,OACC,UAAWC,EAAK,6CAA8CW,CAAS,EACvE,MAAOF,EAAc,CAAE,YAAAA,EAAa,GAAGK,CAAM,EAAIA,EACjD,aAAYE,EACZ,IAAKE,EAEJ,SAAAF,IAAU,QACRR,GAAYc,EAEbvB,EAACE,EAAA,CACE,GAAGc,EACJ,UAAWf,EACT,wCACAgB,IAAU,SAAW,iBAAmB,cAC1C,EACA,OAAQI,EACR,QAASC,EACT,YAAaX,EAAc,OAAS,QACpC,YAAaA,EACf,EAEJ,CAEJ,CAEA,IAAOa,EAAQhB","names":["jsx","clsx","Image","useCallback","useEffect","useRef","useState","Icon","NextImage","fallback","aspectRatio","blurDataURL","className","onLoad","onError","style","rest","state","setState","wrapperRef","img","handleLoad","handleError","defaultFallback","NextImage_default"]}
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t}from"react/jsx-runtime";import m from"next/link";import{getMovieCardLinkClasses as p}from"../../MovieCard/MovieCard.utils";import u from"./MovieCardContent";function k({id:r,title:a,posterUrl:d,voteAverage:c,year:l,className:f,imageLoading:C="lazy",blurDataURL:s,as:e="card",...i}){const n="href"in i?i.href:void 0,v="onClick"in i?i.onClick:void 0,o=t(u,{id:r,title:a,posterUrl:d,voteAverage:c,year:l,className:f,imageLoading:C,isInteractive:e==="link"||e==="button",onClick:e==="button"?v:void 0,blurDataURL:s});return e==="link"&&n?t(m,{href:n,className:p(),children:o}):o}var h=k;export{h as default};
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import u from"next/link";import{getMovieCardLinkClasses as r}from"../../MovieCard/MovieCard.utils";import v from"./MovieCardContent";function p({id:a,title:l,posterUrl:d,voteAverage:c,year:f,className:C,imageLoading:s="lazy",blurDataURL:k,as:e="card",...n}){const i="href"in n?n.href:void 0,m="onClick"in n?n.onClick:void 0,o=t(v,{id:a,title:l,posterUrl:d,voteAverage:c,year:f,className:C,imageLoading:s,isInteractive:e==="link"||e==="zone-link"||e==="button",onClick:e==="button"?m:void 0,blurDataURL:k});return e==="link"&&i?t(u,{href:i,className:r(),children:o}):e==="zone-link"&&i?t("a",{href:i,className:r(),children:o}):o}var N=p;export{N as default};
2
2
  //# sourceMappingURL=MovieCard.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/MovieCard/MovieCard.tsx"],"sourcesContent":["'use client'\n\nimport Link from 'next/link'\n\nimport { getMovieCardLinkClasses } from '../../MovieCard/MovieCard.utils'\n\nimport MovieCardContent from './MovieCardContent'\n\nimport type { NextMovieCardProps } from './MovieCard.types'\n\nfunction MovieCard({\n id,\n title,\n posterUrl,\n voteAverage,\n year,\n className,\n imageLoading = 'lazy',\n blurDataURL,\n as = 'card',\n ...rest\n}: Readonly<NextMovieCardProps>) {\n const href = 'href' in rest ? rest.href : undefined\n const onClick = 'onClick' in rest ? rest.onClick : undefined\n\n const isInteractive = as === 'link' || as === 'button'\n\n const cardContent = (\n <MovieCardContent\n id={id}\n title={title}\n posterUrl={posterUrl}\n voteAverage={voteAverage}\n year={year}\n className={className}\n imageLoading={imageLoading}\n isInteractive={isInteractive}\n onClick={as === 'button' ? onClick : undefined}\n blurDataURL={blurDataURL}\n />\n )\n\n if (as === 'link' && href) {\n return (\n <Link href={href} className={getMovieCardLinkClasses()}>\n {cardContent}\n </Link>\n )\n }\n\n return cardContent\n}\n\nexport default MovieCard\n"],"mappings":"aA4BI,cAAAA,MAAA,oBA1BJ,OAAOC,MAAU,YAEjB,OAAS,2BAAAC,MAA+B,kCAExC,OAAOC,MAAsB,qBAI7B,SAASC,EAAU,CACjB,GAAAC,EACA,MAAAC,EACA,UAAAC,EACA,YAAAC,EACA,KAAAC,EACA,UAAAC,EACA,aAAAC,EAAe,OACf,YAAAC,EACA,GAAAC,EAAK,OACL,GAAGC,CACL,EAAiC,CAC/B,MAAMC,EAAO,SAAUD,EAAOA,EAAK,KAAO,OACpCE,EAAU,YAAaF,EAAOA,EAAK,QAAU,OAI7CG,EACJjB,EAACG,EAAA,CACC,GAAIE,EACJ,MAAOC,EACP,UAAWC,EACX,YAAaC,EACb,KAAMC,EACN,UAAWC,EACX,aAAcC,EACd,cAXkBE,IAAO,QAAUA,IAAO,SAY1C,QAASA,IAAO,SAAWG,EAAU,OACrC,YAAaJ,EACf,EAGF,OAAIC,IAAO,QAAUE,EAEjBf,EAACC,EAAA,CAAK,KAAMc,EAAM,UAAWb,EAAwB,EAClD,SAAAe,EACH,EAIGA,CACT,CAEA,IAAOC,EAAQd","names":["jsx","Link","getMovieCardLinkClasses","MovieCardContent","MovieCard","id","title","posterUrl","voteAverage","year","className","imageLoading","blurDataURL","as","rest","href","onClick","cardContent","MovieCard_default"]}
1
+ {"version":3,"sources":["../../../src/next/MovieCard/MovieCard.tsx"],"sourcesContent":["'use client'\n\nimport Link from 'next/link'\n\nimport { getMovieCardLinkClasses } from '../../MovieCard/MovieCard.utils'\n\nimport MovieCardContent from './MovieCardContent'\n\nimport type { NextMovieCardProps } from './MovieCard.types'\n\nfunction MovieCard({\n id,\n title,\n posterUrl,\n voteAverage,\n year,\n className,\n imageLoading = 'lazy',\n blurDataURL,\n as = 'card',\n ...rest\n}: Readonly<NextMovieCardProps>) {\n const href = 'href' in rest ? rest.href : undefined\n const onClick = 'onClick' in rest ? rest.onClick : undefined\n\n const isInteractive = as === 'link' || as === 'zone-link' || as === 'button'\n\n const cardContent = (\n <MovieCardContent\n id={id}\n title={title}\n posterUrl={posterUrl}\n voteAverage={voteAverage}\n year={year}\n className={className}\n imageLoading={imageLoading}\n isInteractive={isInteractive}\n onClick={as === 'button' ? onClick : undefined}\n blurDataURL={blurDataURL}\n />\n )\n\n if (as === 'link' && href) {\n return (\n <Link href={href} className={getMovieCardLinkClasses()}>\n {cardContent}\n </Link>\n )\n }\n\n if (as === 'zone-link' && href) {\n return (\n <a href={href} className={getMovieCardLinkClasses()}>\n {cardContent}\n </a>\n )\n }\n\n return cardContent\n}\n\nexport default MovieCard\n"],"mappings":"aA4BI,cAAAA,MAAA,oBA1BJ,OAAOC,MAAU,YAEjB,OAAS,2BAAAC,MAA+B,kCAExC,OAAOC,MAAsB,qBAI7B,SAASC,EAAU,CACjB,GAAAC,EACA,MAAAC,EACA,UAAAC,EACA,YAAAC,EACA,KAAAC,EACA,UAAAC,EACA,aAAAC,EAAe,OACf,YAAAC,EACA,GAAAC,EAAK,OACL,GAAGC,CACL,EAAiC,CAC/B,MAAMC,EAAO,SAAUD,EAAOA,EAAK,KAAO,OACpCE,EAAU,YAAaF,EAAOA,EAAK,QAAU,OAI7CG,EACJjB,EAACG,EAAA,CACC,GAAIE,EACJ,MAAOC,EACP,UAAWC,EACX,YAAaC,EACb,KAAMC,EACN,UAAWC,EACX,aAAcC,EACd,cAXkBE,IAAO,QAAUA,IAAO,aAAeA,IAAO,SAYhE,QAASA,IAAO,SAAWG,EAAU,OACrC,YAAaJ,EACf,EAGF,OAAIC,IAAO,QAAUE,EAEjBf,EAACC,EAAA,CAAK,KAAMc,EAAM,UAAWb,EAAwB,EAClD,SAAAe,EACH,EAIAJ,IAAO,aAAeE,EAEtBf,EAAC,KAAE,KAAMe,EAAM,UAAWb,EAAwB,EAC/C,SAAAe,EACH,EAIGA,CACT,CAEA,IAAOC,EAAQd","names":["jsx","Link","getMovieCardLinkClasses","MovieCardContent","MovieCard","id","title","posterUrl","voteAverage","year","className","imageLoading","blurDataURL","as","rest","href","onClick","cardContent","MovieCard_default"]}
@@ -10,6 +10,13 @@ interface NextMovieCardAsLink extends MovieCardBaseProps {
10
10
  href: string;
11
11
  onClick?: never;
12
12
  }
13
- type NextMovieCardProps = MovieCardAsCard | NextMovieCardAsLink | MovieCardAsButton;
13
+ interface NextMovieCardAsZoneLink extends MovieCardBaseProps {
14
+ /** Render as a plain anchor for cross-zone navigation (multi-zones). */
15
+ as: 'zone-link';
16
+ /** Navigation path (required when as="zone-link") */
17
+ href: string;
18
+ onClick?: never;
19
+ }
20
+ type NextMovieCardProps = MovieCardAsCard | NextMovieCardAsLink | NextMovieCardAsZoneLink | MovieCardAsButton;
14
21
 
15
- export { MovieCardAsButton, MovieCardAsCard, MovieCardBaseProps, type NextMovieCardAsLink, type NextMovieCardProps };
22
+ export { MovieCardAsButton, MovieCardAsCard, MovieCardBaseProps, type NextMovieCardAsLink, type NextMovieCardAsZoneLink, type NextMovieCardProps };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vite-mf-monorepo/ui",
3
- "version": "0.4.10",
3
+ "version": "0.4.12",
4
4
  "description": "Design system components for vite-mf-monorepo",
5
5
  "type": "module",
6
6
  "publishConfig": {