"use client"; import { keyframes } from "@emotion/react"; import type React from "react"; import { lazy, Suspense } from "react"; import { useCustomTheme } from "../../../core/design-system/CustomThemeProvider.js"; import { radius } from "../../../core/design-system/index.js"; import { fadeInAnimation } from "../design-system/animations.js"; import { StyledDiv } from "../design-system/elements.js"; const QRCodeRenderer = /* @__PURE__ */ lazy( () => import("./QRCode/QRCodeRenderer.js"), ); /** * @internal */ export const QRCode = (props: { qrCodeUri?: string; QRIcon?: React.ReactNode; size?: number; }) => { const size = props.size || 310; const placeholder = (
); return (
{props.qrCodeUri ? ( ) : ( placeholder )} {props.QRIcon && {props.QRIcon}}
); }; const IconContainer = /* @__PURE__ */ StyledDiv({ alignContent: "center", display: "flex", justifyContent: "center", left: "50%", position: "absolute", top: "50%", transform: "translate(-50%, -50%)", zIndex: 1000, }); const QRCodeContainer = /* @__PURE__ */ StyledDiv(() => { const theme = useCustomTheme(); return { "--ck-body-background": theme.colors.modalBg, "--ck-qr-background": theme.colors.modalBg, "--ck-qr-dot-color": theme.colors.primaryText, animation: `${fadeInAnimation} 600ms ease`, }; }); const PlaceholderKeyframes = keyframes` 0%{ background-position: 100% 0; } 100%{ background-position: -100% 0; } `; const QRPlaceholder = /* @__PURE__ */ StyledDiv((_) => { const theme = useCustomTheme(); return { "--bg": theme.colors.modalBg, "--color": theme.colors.skeletonBg, "&::after": { animation: `${PlaceholderKeyframes} 1000ms linear infinite both`, background: "linear-gradient(90deg, transparent 50%, var(--color), transparent)", backgroundSize: "200% 100%", content: '""', inset: 0, position: "absolute", transform: "scale(1.5) rotate(45deg)", zIndex: 100, }, "&:before": { background: "repeat", backgroundImage: "radial-gradient(var(--color) 41%, transparent 41%)", backgroundSize: "1.888% 1.888%", content: '""', inset: 0, position: "absolute", zIndex: 3, }, "> div": { background: "var(--bg)", borderRadius: "5px", boxShadow: "0 0 0 7px var(--bg)", height: "28%", position: "relative", width: "28%", zIndex: 4, }, "> span": { "&:before": { borderRadius: "3px", boxShadow: "0 0 0 4px var(--bg)", content: '""', inset: "9px", position: "absolute", }, "&[data-v1]": { left: 0, top: 0, }, "&[data-v2]": { right: 0, top: 0, }, "&[data-v3]": { bottom: 0, left: 0, }, background: "var(--color)", borderRadius: "12px", boxShadow: "0 0 0 4px var(--bg)", height: "13.25%", position: "absolute", width: "13.25%", zIndex: 4, }, alignItems: "center", borderRadius: radius.md, display: "flex", justifyContent: "center", overflow: "hidden", position: "relative", }; });