@undp/design-system-react
Version:
React based design system for UNDP
1 lines • 16.4 kB
Source Map (JSON)
{"version":3,"file":"avatar-BspwR9Fk.cjs","names":["createContextScope","Avatar","React","Primitive","AvatarImage","useCallbackRef","AvatarFallback"],"sources":["../node_modules/@radix-ui/react-avatar/dist/index.mjs","../src/components/ui/avatar.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/avatar.tsx\nimport * as React from \"react\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\nvar STATIC_IMAGE_COUNT_STATE = [\n 0,\n () => void 0\n];\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar Avatar = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function Avatar2(props, forwardedRef) {\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = React.useState(\"idle\");\n const [imageCount, setImageCount] = useImageCount();\n return /* @__PURE__ */ jsx(\n AvatarProvider,\n {\n scope: __scopeAvatar,\n imageLoadingStatus,\n setImageLoadingStatus,\n imageCount,\n setImageCount,\n children: /* @__PURE__ */ jsx(Primitive.span, { ...avatarProps, ref: forwardedRef })\n }\n );\n }, \"Avatar\")\n);\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarImage2(props, forwardedRef) {\n const { __scopeAvatar, src, onLoadingStatusChange, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n useUpdateImageCount(context.setImageCount);\n const imageLoadingStatus = useImageLoadingStatus(src, {\n referrerPolicy: imageProps.referrerPolicy,\n crossOrigin: imageProps.crossOrigin,\n loadingStatus: context.imageLoadingStatus,\n setLoadingStatus: context.setImageLoadingStatus\n });\n const handleLoadingStatusChange = useCallbackRef((status) => {\n onLoadingStatusChange?.(status);\n });\n const loadingStatusRef = React.useRef(imageLoadingStatus);\n useLayoutEffect(() => {\n const previousLoadingStatus = loadingStatusRef.current;\n loadingStatusRef.current = imageLoadingStatus;\n if (imageLoadingStatus !== previousLoadingStatus) {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [imageLoadingStatus, handleLoadingStatusChange]);\n return imageLoadingStatus === \"loaded\" ? /* @__PURE__ */ jsx(Primitive.img, { ...imageProps, ref: forwardedRef, src }) : null;\n }, \"AvatarImage\")\n);\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallback = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarFallback2(props, forwardedRef) {\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = React.useState(delayMs === void 0);\n React.useEffect(() => {\n if (delayMs !== void 0) {\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }\n }, [delayMs]);\n return canRender && context.imageLoadingStatus !== \"loaded\" ? /* @__PURE__ */ jsx(Primitive.span, { ...fallbackProps, ref: forwardedRef }) : null;\n }, \"AvatarFallback\")\n);\nfunction useImageLoadingStatus(src, {\n loadingStatus,\n setLoadingStatus,\n referrerPolicy,\n crossOrigin\n}) {\n useLayoutEffect(() => {\n if (!src) {\n setLoadingStatus(\"error\");\n return;\n }\n const image = new window.Image();\n const handleLoad = /* @__PURE__ */ __name((event) => {\n const image2 = event.currentTarget;\n setLoadingStatus(getImageLoadingStatus(image2));\n }, \"handleLoad\");\n const handleError = /* @__PURE__ */ __name(() => setLoadingStatus(\"error\"), \"handleError\");\n image.addEventListener(\"load\", handleLoad);\n image.addEventListener(\"error\", handleError);\n if (referrerPolicy) {\n image.referrerPolicy = referrerPolicy;\n }\n image.crossOrigin = crossOrigin ?? null;\n image.src = src;\n setLoadingStatus(getImageLoadingStatus(image));\n return () => {\n image.removeEventListener(\"load\", handleLoad);\n image.removeEventListener(\"error\", handleError);\n setLoadingStatus(\"idle\");\n };\n }, [src, crossOrigin, referrerPolicy, setLoadingStatus]);\n return loadingStatus;\n}\n__name(useImageLoadingStatus, \"useImageLoadingStatus\");\nfunction getImageLoadingStatus(image) {\n return image.complete ? image.naturalWidth > 0 ? \"loaded\" : \"error\" : \"loading\";\n}\n__name(getImageLoadingStatus, \"getImageLoadingStatus\");\nfunction useImageCount() {\n let state = STATIC_IMAGE_COUNT_STATE;\n if (IS_DEVELOPMENT) {\n state = React.useState(0);\n const [imageCount] = state;\n const hasWarnedRef = React.useRef(false);\n React.useEffect(() => {\n if (imageCount > 1 && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"Avatar: Only one `Avatar.Image` component should be rendered per `Avatar.Root`, but multiple were detected. This will lead to unexpected behavior.\"\n );\n }\n }, [imageCount]);\n }\n return state;\n}\n__name(useImageCount, \"useImageCount\");\nfunction useUpdateImageCount(setImageCount) {\n if (IS_DEVELOPMENT) {\n React.useEffect(() => {\n setImageCount((imageCount) => imageCount + 1);\n return () => {\n setImageCount((imageCount) => imageCount - 1);\n };\n }, [setImageCount]);\n }\n}\n__name(useUpdateImageCount, \"useUpdateImageCount\");\nexport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n AvatarFallback as Fallback,\n AvatarImage as Image,\n Avatar as Root,\n createAvatarScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\nimport type * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nfunction Avatar({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'default' | 'sm' | 'lg';\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot='avatar'\n data-size={size}\n className={cn(\n 'group/avatar relative flex size-8 shrink-0 select-none rounded-full after:absolute after:inset-0 after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot='avatar-image'\n className={cn('aspect-square size-full rounded-full object-cover', className)}\n {...props}\n />\n );\n}\n\nconst avatarColorVariants = cva(\n 'flex size-full items-center justify-center rounded-full border-0 text-sm group-data-[size=sm]/avatar:text-xs',\n {\n variants: {\n color: {\n transparent: 'bg-transparent text-content-primary border border-stroke',\n background: 'bg-background text-content-primary border border-stroke',\n 'background-soft': 'bg-background-soft text-content-primary border border-stroke',\n foreground: 'bg-foreground text-content-reverse',\n 'foreground-soft': 'bg-foreground-soft text-content-reverse',\n primary: 'bg-primary text-content-reverse',\n secondary: 'bg-secondary text-content-reverse',\n tertiary: 'bg-tertiary text-content-reverse',\n quaternary: 'bg-quaternary text-content-primary',\n success: 'bg-success text-content-reverse',\n warning: 'bg-warning text-content-primary',\n info: 'bg-info text-content-reverse',\n error: 'bg-error text-content-reverse',\n surface: 'bg-surface text-content-primary border border-stroke',\n 'surface-2xs': 'bg-surface-2xs text-content-primary',\n 'surface-xs': 'bg-surface-xs text-content-primary',\n 'surface-sm': 'bg-surface-sm text-content-primary',\n 'surface-md': 'bg-surface-md text-content-primary',\n 'surface-lg': 'bg-surface-lg text-content-primary',\n 'surface-xl': 'bg-surface-xl text-content-reverse',\n 'surface-2xl': 'bg-surface-2xl text-content-reverse',\n 'surface-3xl': 'bg-surface-3xl text-content-reverse',\n 'surface-4xl': 'bg-surface-4xl text-content-reverse',\n 'sgd-1': 'bg-sdg-1 text-content-reverse',\n 'sgd-2': 'bg-sdg-2 text-content-reverse',\n 'sgd-3': 'bg-sdg-3 text-content-reverse',\n 'sgd-4': 'bg-sdg-4 text-content-reverse',\n 'sgd-5': 'bg-sdg-5 text-content-reverse',\n 'sgd-6': 'bg-sdg-6 text-content-reverse',\n 'sgd-7': 'bg-sdg-7 text-content-reverse',\n 'sgd-8': 'bg-sdg-8 text-content-reverse',\n 'sgd-9': 'bg-sdg-9 text-content-reverse',\n 'sgd-10': 'bg-sdg-10 text-content-reverse',\n 'sgd-11': 'bg-sdg-11 text-content-reverse',\n 'sgd-12': 'bg-sdg-12 text-content-reverse',\n 'sgd-13': 'bg-sdg-13 text-content-reverse',\n 'sgd-14': 'bg-sdg-14 text-content-reverse',\n 'sgd-15': 'bg-sdg-15 text-content-reverse',\n 'sgd-16': 'bg-sdg-16 text-content-reverse',\n 'sgd-17': 'bg-sdg-17 text-content-reverse',\n },\n border: {\n true: 'border border-stroke',\n false: '',\n },\n },\n defaultVariants: {\n color: 'surface',\n border: true,\n },\n },\n);\n\nfunction AvatarFallback({\n className,\n color,\n border,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback> &\n VariantProps<typeof avatarColorVariants>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot='avatar-fallback'\n className={cn(avatarColorVariants({ color, border }), className)}\n {...props}\n />\n );\n}\n\nconst avatarBadgeVariants = cva(\n 'absolute right-0 bottom-0 z-10 inline-flex select-none items-center justify-center rounded-full text-content-reverse group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2 group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n {\n variants: {\n status: {\n available: 'bg-success',\n idle: 'bg-warning-hover',\n offline: 'bg-background border-2 border-stroke-hard',\n busy: 'bg-error',\n },\n },\n defaultVariants: {\n status: 'available',\n },\n },\n);\n\nfunction AvatarBadge({\n className,\n status,\n ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof avatarBadgeVariants>) {\n return (\n <span\n data-slot='avatar-badge'\n className={cn(avatarBadgeVariants({ status }), className)}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='avatar-group'\n className={cn('group/avatar-group flex -space-x-2', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='avatar-group-count'\n className={cn(\n 'relative flex size-8 shrink-0 items-center justify-center rounded-full bg-surface text-content-secondary text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage };\n"],"x_google_ignoreList":[0],"mappings":"8RACA,IAAI,EAAY,OAAO,eACnB,GAAU,EAAQ,IAAU,EAAU,EAAQ,OAAQ,CAAE,QAAO,aAAc,EAAK,CAAC,EAUnF,EAAc,SACd,CAAC,EAAqB,GAAqBA,EAAAA,EAAmB,CAAW,EACzE,EAA2B,CAC7B,MACM,IAAK,EACb,EACI,CAAC,EAAgB,GAAoB,EAAoB,CAAW,EACpEC,EAAyB,EAAM,WAEjB,EAAO,SAAiB,EAAO,EAAc,CAC3D,GAAM,CAAE,gBAAe,GAAG,GAAgB,EACpC,CAAC,EAAoB,GAAyBC,EAAM,SAAS,MAAM,EACnE,CAAC,EAAY,GAAiB,EAAc,EAClD,OAAuB,EAAA,EAAA,IAAA,CACrB,EACA,CACE,MAAO,EACP,qBACA,wBACA,aACA,gBACA,UAA0B,EAAA,EAAA,IAAA,CAAIC,EAAAA,EAAU,KAAM,CAAE,GAAG,EAAa,IAAK,CAAa,CAAC,CACrF,CACF,CACF,EAAG,QAAQ,CACb,EACI,EAAa,cACbC,EAA8B,EAAM,WACtB,EAAO,SAAsB,EAAO,EAAc,CAChE,GAAM,CAAE,gBAAe,MAAK,wBAAuB,GAAG,GAAe,EAC/D,EAAU,EAAiB,EAAY,CAAa,EACtC,EAAQ,cAC5B,IAAM,EAAqB,EAAsB,EAAK,CACpD,eAAgB,EAAW,eAC3B,YAAa,EAAW,YACxB,cAAe,EAAQ,mBACvB,iBAAkB,EAAQ,qBAC5B,CAAC,EACK,EAA4BC,EAAAA,EAAgB,GAAW,CAC3D,IAAwB,CAAM,CAChC,CAAC,EACK,EAAmBH,EAAM,OAAO,CAAkB,EAQxD,OAPA,EAAA,MAAsB,CACpB,IAAM,EAAwB,EAAiB,QAC/C,EAAiB,QAAU,EACvB,IAAuB,GACzB,EAA0B,CAAkB,CAEhD,EAAG,CAAC,EAAoB,CAAyB,CAAC,EAC3C,IAAuB,UAA2B,EAAA,EAAA,IAAA,CAAIC,EAAAA,EAAU,IAAK,CAAE,GAAG,EAAY,IAAK,EAAc,KAAI,CAAC,EAAI,IAC3H,EAAG,aAAa,CAClB,EACI,EAAgB,iBAChBG,EAAiC,EAAM,WACzB,EAAO,SAAyB,EAAO,EAAc,CACnE,GAAM,CAAE,gBAAe,UAAS,GAAG,GAAkB,EAC/C,EAAU,EAAiB,EAAe,CAAa,EACvD,CAAC,EAAW,GAAgBJ,EAAM,SAAS,IAAY,IAAK,EAAC,EAOnE,OANA,EAAM,cAAgB,CACpB,GAAI,IAAY,IAAK,GAAG,CACtB,IAAM,EAAU,OAAO,eAAiB,EAAa,EAAI,EAAG,CAAO,EACnE,UAAa,OAAO,aAAa,CAAO,CAC1C,CACF,EAAG,CAAC,CAAO,CAAC,EACL,GAAa,EAAQ,qBAAuB,UAA2B,EAAA,EAAA,IAAA,CAAIC,EAAAA,EAAU,KAAM,CAAE,GAAG,EAAe,IAAK,CAAa,CAAC,EAAI,IAC/I,EAAG,gBAAgB,CACrB,EACA,SAAS,EAAsB,EAAK,CAClC,gBACA,mBACA,iBACA,eACC,CA0BD,OAzBA,EAAA,MAAsB,CACpB,GAAI,CAAC,EAAK,CACR,EAAiB,OAAO,EACxB,MACF,CACA,IAAM,EAAQ,IAAI,OAAO,MACnB,EAA6B,EAAQ,GAAU,CACnD,IAAM,EAAS,EAAM,cACrB,EAAiB,EAAsB,CAAM,CAAC,CAChD,EAAG,YAAY,EACT,EAA8B,MAAa,EAAiB,OAAO,EAAG,aAAa,EASzF,OARA,EAAM,iBAAiB,OAAQ,CAAU,EACzC,EAAM,iBAAiB,QAAS,CAAW,EACvC,IACF,EAAM,eAAiB,GAEzB,EAAM,YAAc,GAAe,KACnC,EAAM,IAAM,EACZ,EAAiB,EAAsB,CAAK,CAAC,MAChC,CACX,EAAM,oBAAoB,OAAQ,CAAU,EAC5C,EAAM,oBAAoB,QAAS,CAAW,EAC9C,EAAiB,MAAM,CACzB,CACF,EAAG,CAAC,EAAK,EAAa,EAAgB,CAAgB,CAAC,EAChD,CACT,CACA,EAAO,EAAuB,uBAAuB,EACrD,SAAS,EAAsB,EAAO,CACpC,OAAO,EAAM,SAAW,EAAM,aAAe,EAAI,SAAW,QAAU,SACxE,CACA,EAAO,EAAuB,uBAAuB,EACrD,SAAS,GAAgB,CAevB,OAAO,CACT,CACA,EAAO,EAAe,eAAe,EACrC,SAAS,EAAoB,EAAe,CAS5C,CACA,EAAO,EAAqB,qBAAqB,EC5IjD,SAAS,EAAO,CACd,YACA,OAAO,UACP,GAAG,GAGF,CACD,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAU,SACV,YAAW,EACX,UAAW,EAAA,EACT,mKACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,CAEA,SAAS,EAAY,CAAE,YAAW,GAAG,GAA6D,CAChG,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAU,eACV,UAAW,EAAA,EAAG,oDAAqD,CAAS,EAC5E,GAAI,CACL,CAAA,CAEL,CAEA,IAAM,EAAsB,EAAA,EAC1B,+GACA,CACE,SAAU,CACR,MAAO,CACL,YAAa,2DACb,WAAY,0DACZ,kBAAmB,+DACnB,WAAY,qCACZ,kBAAmB,0CACnB,QAAS,kCACT,UAAW,oCACX,SAAU,mCACV,WAAY,qCACZ,QAAS,kCACT,QAAS,kCACT,KAAM,+BACN,MAAO,gCACP,QAAS,uDACT,cAAe,sCACf,aAAc,qCACd,aAAc,qCACd,aAAc,qCACd,aAAc,qCACd,aAAc,qCACd,cAAe,sCACf,cAAe,sCACf,cAAe,sCACf,QAAS,gCACT,QAAS,gCACT,QAAS,gCACT,QAAS,gCACT,QAAS,gCACT,QAAS,gCACT,QAAS,gCACT,QAAS,gCACT,QAAS,gCACT,SAAU,iCACV,SAAU,iCACV,SAAU,iCACV,SAAU,iCACV,SAAU,iCACV,SAAU,iCACV,SAAU,iCACV,SAAU,gCACZ,EACA,OAAQ,CACN,KAAM,uBACN,MAAO,EACT,CACF,EACA,gBAAiB,CACf,MAAO,UACP,OAAQ,EACV,CACF,CACF,EAEA,SAAS,EAAe,CACtB,YACA,QACA,SACA,GAAG,GAEuC,CAC1C,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAU,kBACV,UAAW,EAAA,EAAG,EAAoB,CAAE,QAAO,QAAO,CAAC,EAAG,CAAS,EAC/D,GAAI,CACL,CAAA,CAEL,CAEA,IAAM,EAAsB,EAAA,EAC1B,6WACA,CACE,SAAU,CACR,OAAQ,CACN,UAAW,aACX,KAAM,mBACN,QAAS,4CACT,KAAM,UACR,CACF,EACA,gBAAiB,CACf,OAAQ,WACV,CACF,CACF,EAEA,SAAS,EAAY,CACnB,YACA,SACA,GAAG,GACuE,CAC1E,OACE,EAAA,EAAA,IAAA,CAAC,OAAD,CACE,YAAU,eACV,UAAW,EAAA,EAAG,EAAoB,CAAE,QAAO,CAAC,EAAG,CAAS,EACxD,GAAI,CACL,CAAA,CAEL,CAEA,SAAS,EAAY,CAAE,YAAW,GAAG,GAAsC,CACzE,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,YAAU,eACV,UAAW,EAAA,EAAG,qCAAsC,CAAS,EAC7D,GAAI,CACL,CAAA,CAEL,CAEA,SAAS,EAAiB,CAAE,YAAW,GAAG,GAAsC,CAC9E,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,YAAU,qBACV,UAAW,EAAA,EACT,uUACA,CACF,EACA,GAAI,CACL,CAAA,CAEL"}