flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
1 lines • 3.58 kB
Source Map (JSON)
{"version":3,"file":"ClipboardWithIcon.cjs","sources":["../../../src/components/Clipboard/ClipboardWithIcon.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useState, type ComponentProps, type FC } from \"react\";\nimport { get } from \"../../helpers/get\";\nimport { resolveProps } from \"../../helpers/resolve-props\";\nimport { useResolveTheme } from \"../../helpers/resolve-theme\";\nimport { twMerge } from \"../../helpers/tailwind-merge\";\nimport { CheckIcon } from \"../../icons/check-icon\";\nimport { ClipboardListIcon } from \"../../icons/clipboard-list-icon\";\nimport { useThemeProvider } from \"../../theme/provider\";\nimport type { ThemingProps } from \"../../types\";\nimport { copyToClipboard } from \"./helpers\";\nimport { clipboardTheme } from \"./theme\";\n\nexport interface ClipboardWithIconTheme {\n base: string;\n icon: {\n defaultIcon: string;\n successIcon: string;\n };\n}\n\nexport interface ClipboardWithIconProps extends ComponentProps<\"button\">, ThemingProps<ClipboardWithIconTheme> {\n valueToCopy: string;\n icon?: FC<ComponentProps<\"svg\">>;\n}\n\nexport const ClipboardWithIcon = forwardRef<HTMLButtonElement, ClipboardWithIconProps>((props, ref) => {\n const [isJustCopied, setIsJustCopied] = useState(false);\n\n const provider = useThemeProvider();\n const theme = useResolveTheme(\n [clipboardTheme.withIcon, provider.theme?.clipboard?.withIcon, props.theme],\n [get(provider.clearTheme, \"clipboard.withIcon\"), props.clearTheme],\n [get(provider.applyTheme, \"clipboard.withIcon\"), props.applyTheme],\n );\n\n const {\n valueToCopy,\n icon: Icon = ClipboardListIcon,\n className,\n ...restProps\n } = resolveProps(props, provider.props?.clipboardWithIcon);\n\n return (\n <button\n className={twMerge(theme.base, className)}\n onClick={() => copyToClipboard(valueToCopy, setIsJustCopied)}\n {...restProps}\n ref={ref}\n >\n {isJustCopied ? (\n <CheckIcon aria-hidden className={theme.icon.successIcon} />\n ) : (\n <Icon aria-hidden className={theme.icon.defaultIcon} />\n )}\n </button>\n );\n});\n\nClipboardWithIcon.displayName = \"Clipboard.WithIcon\";\n"],"names":["forwardRef","useState","provider","useThemeProvider","theme","useResolveTheme","clipboardTheme","get","ClipboardListIcon","resolveProps","jsx","twMerge","copyToClipboard","CheckIcon"],"mappings":";;;;;;;;;;;;;;AAaY,MAAC,iBAAiB,GAAGA,gBAAU,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AAC5D,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;AACzD,EAAE,MAAMC,UAAQ,GAAGC,yBAAgB,EAAE;AACrC,EAAE,MAAMC,OAAK,GAAGC,4BAAe;AAC/B,IAAI,CAACC,oBAAc,CAAC,QAAQ,EAAEJ,UAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;AAC/E,IAAI,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;AACtE,IAAI,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,KAAK,CAAC,UAAU;AACrE,GAAG;AACH,EAAE,MAAM;AACR,IAAI,WAAW;AACf,IAAI,IAAI,EAAE,IAAI,GAAGM,mCAAiB;AAClC,IAAI,SAAS;AACb,IAAI,GAAG;AACP,GAAG,GAAGC,yBAAY,CAAC,KAAK,EAAEP,UAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;AAC5D,EAAE,uBAAuBQ,cAAG;AAC5B,IAAI,QAAQ;AACZ,IAAI;AACJ,MAAM,SAAS,EAAEC,qBAAO,CAACP,OAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AAC/C,MAAM,OAAO,EAAE,MAAMQ,uBAAe,CAAC,WAAW,EAAE,eAAe,CAAC;AAClE,MAAM,GAAG,SAAS;AAClB,MAAM,GAAG;AACT,MAAM,QAAQ,EAAE,YAAY,mBAAmBF,cAAG,CAACG,mBAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAET,OAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,mBAAmBM,cAAG,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAEN,OAAK,CAAC,IAAI,CAAC,WAAW,EAAE;AAChN;AACA,GAAG;AACH,CAAC;AACD,iBAAiB,CAAC,WAAW,GAAG,oBAAoB;;;;"}