flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
1 lines • 4.47 kB
Source Map (JSON)
{"version":3,"file":"ClipboardWithIconText.cjs","sources":["../../../src/components/Clipboard/ClipboardWithIconText.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 ClipboardWithIconTextTheme {\n base: string;\n label: {\n base: string;\n defaultText: string;\n successText: string;\n };\n icon: {\n defaultIcon: string;\n successIcon: string;\n };\n}\n\nexport interface ClipboardWithIconTextProps extends ComponentProps<\"button\">, ThemingProps<ClipboardWithIconTextTheme> {\n valueToCopy: string;\n label?: string;\n icon?: FC<ComponentProps<\"svg\">>;\n}\n\nexport const ClipboardWithIconText = forwardRef<HTMLButtonElement, ClipboardWithIconTextProps>((props, ref) => {\n const [isJustCopied, setIsJustCopied] = useState(false);\n\n const provider = useThemeProvider();\n const theme = useResolveTheme(\n [clipboardTheme.withIconText, provider.theme?.clipboard?.withIconText, props.theme],\n [get(provider.clearTheme, \"clipboard.withIconText\"), props.clearTheme],\n [get(provider.applyTheme, \"clipboard.withIconText\"), props.applyTheme],\n );\n\n const {\n valueToCopy,\n icon: Icon = ClipboardListIcon,\n label = \"Copy\",\n className,\n ...rest\n } = resolveProps(props, provider.props?.clipboardWithIconText);\n\n return (\n <button\n className={twMerge(theme.base, className)}\n onClick={() => copyToClipboard(valueToCopy, setIsJustCopied)}\n {...rest}\n ref={ref}\n >\n {isJustCopied ? (\n <span className={theme.label.base}>\n <CheckIcon aria-hidden className={theme.icon.successIcon} />\n <span className={theme.label.successText}>Copied</span>\n </span>\n ) : (\n <span className={theme.label.base}>\n <Icon aria-hidden className={theme.icon.defaultIcon} />\n <span className={theme.label.defaultText}>{label}</span>\n </span>\n )}\n </button>\n );\n});\n\nClipboardWithIconText.displayName = \"Clipboard.WithIconText\";\n"],"names":["forwardRef","useState","provider","useThemeProvider","theme","useResolveTheme","clipboardTheme","get","ClipboardListIcon","resolveProps","jsx","twMerge","copyToClipboard","jsxs","CheckIcon"],"mappings":";;;;;;;;;;;;;;AAaY,MAAC,qBAAqB,GAAGA,gBAAU,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AAChE,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,YAAY,EAAEJ,UAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC;AACvF,IAAI,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;AAC1E,IAAI,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC,EAAE,KAAK,CAAC,UAAU;AACzE,GAAG;AACH,EAAE,MAAM;AACR,IAAI,WAAW;AACf,IAAI,IAAI,EAAE,IAAI,GAAGM,mCAAiB;AAClC,IAAI,KAAK,GAAG,MAAM;AAClB,IAAI,SAAS;AACb,IAAI,GAAG;AACP,GAAG,GAAGC,yBAAY,CAAC,KAAK,EAAEP,UAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;AAChE,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,IAAI;AACb,MAAM,GAAG;AACT,MAAM,QAAQ,EAAE,YAAY,mBAAmBC,eAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAET,OAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE;AACrG,wBAAwBM,cAAG,CAACI,mBAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAEV,OAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAClG,wBAAwBM,cAAG,CAAC,MAAM,EAAE,EAAE,SAAS,EAAEN,OAAK,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC9F,OAAO,EAAE,CAAC,mBAAmBS,eAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAET,OAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE;AACnF,wBAAwBM,cAAG,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAEN,OAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC7F,wBAAwBM,cAAG,CAAC,MAAM,EAAE,EAAE,SAAS,EAAEN,OAAK,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3F,OAAO,EAAE;AACT;AACA,GAAG;AACH,CAAC;AACD,qBAAqB,CAAC,WAAW,GAAG,wBAAwB;;;;"}