qr-code
diceui-base/qr-codeFreeComponent
diceui/base publishes no description for this item.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/sadmann7/diceui/HEAD/docs/public/r/styles/base-vega/qr-code.jsonSource
1"use client";23import { mergeProps } from "@base-ui/react/merge-props";4import { useRender } from "@base-ui/react/use-render";5import * as React from "react";6import { useComposedRefs } from "@/lib/compose-refs";7import { cn } from "@/lib/utils";8import { useLazyRef } from "@/registry/bases/base/hooks/use-lazy-ref";910const ROOT_NAME = "QRCode";11const CANVAS_NAME = "QRCodeCanvas";12const SVG_NAME = "QRCodeSvg";13const IMAGE_NAME = "QRCodeImage";14const SKELETON_NAME = "QRCodeSkeleton";1516type QRCodeLevel = "L" | "M" | "Q" | "H";1718interface QRCodeCanvasOpts {19 errorCorrectionLevel: QRCodeLevel;20 type?: "image/png" | "image/jpeg" | "image/webp";21 quality?: number;22 margin?: number;23 color?: {24 dark: string;25 light: string;26 };27 width?: number;28 rendererOpts?: {29 quality?: number;30 };31}3233interface StoreState {34 dataUrl: string | null;35 svgString: string | null;36 isGenerating: boolean;37 error: Error | null;38 generationKey: string;39}4041interface Store {42 subscribe: (callback: () => void) => () => void;43 getState: () => StoreState;44 setState: <K extends keyof StoreState>(key: K, value: StoreState[K]) => void;45 setStates: (updates: Partial<StoreState>) => void;46 notify: () => void;47}4849interface QRCodeContextValue {50 value: string;51 size: number;52 margin: number;53 level: QRCodeLevel;54 backgroundColor: string;55 foregroundColor: string;56 canvasRef: React.RefObject<HTMLCanvasElement | null>;57}5859const StoreContext = React.createContext<Store | null>(null);6061function useStore<T>(selector: (state: StoreState) => T): T {62 const store = React.useContext(StoreContext);63 if (!store) {64 throw new Error(`\`useQRCode\` must be used within \`${ROOT_NAME}\``);65 }6667 const getSnapshot = React.useCallback(68 () => selector(store.getState()),69 [store, selector],70 );7172 return React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);73}7475const QRCodeContext = React.createContext<QRCodeContextValue | null>(null);7677function useQRCodeContext(consumerName: string) {78 const context = React.useContext(QRCodeContext);79 if (!context) {80 throw new Error(`\`${consumerName}\` must be used within \`${ROOT_NAME}\``);81 }82 return context;83}8485interface QRCodeProps extends Omit<useRender.ComponentProps<"div">, "onError"> {86 value: string;87 size?: number;88 level?: QRCodeLevel;89 margin?: number;90 quality?: number;91 backgroundColor?: string;92 foregroundColor?: string;93 onError?: (error: Error) => void;94 onGenerated?: () => void;95}9697// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from diceui/base
All 192 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| action-baraction-bar | diceui/base | Components | Free | 1 dep | |
| angle-sliderangle-slider | diceui/base | Components | Free | 1 dep · 3 files | |
| avatar-groupavatar-group | diceui/base | Components | Free | 1 dep | |
| badge-overflowbadge-overflow | diceui/base | Components | Free | 1 dep · 2 files | |
| bannerbanner | diceui/base | Components | Free | 1 dep | |
| circular-progresscircular-progress | diceui/base | Components | Free | 1 dep | |
| client-onlyclient-only | diceui/base | Components | Free | no deps | |
| color-pickercolor-picker | diceui/base | Components | Free | 1 dep · 2 files |
