flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
1 lines • 3.5 kB
Source Map (JSON)
{"version":3,"file":"Clipboard.cjs","sources":["../../../src/components/Clipboard/Clipboard.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useState, type ComponentProps, type ReactNode } 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 { useThemeProvider } from \"../../theme/provider\";\nimport type { ThemingProps } from \"../../types\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\nimport type { ClipboardWithIconTheme } from \"./ClipboardWithIcon\";\nimport type { ClipboardWithIconTextTheme } from \"./ClipboardWithIconText\";\nimport { copyToClipboard } from \"./helpers\";\nimport { clipboardTheme } from \"./theme\";\n\nexport interface ClipboardTheme {\n button: {\n base: string;\n label: string;\n };\n withIcon: ClipboardWithIconTheme;\n withIconText: ClipboardWithIconTextTheme;\n}\n\nexport interface ClipboardProps extends ComponentProps<\"button\">, ThemingProps<ClipboardTheme[\"button\"]> {\n valueToCopy: string;\n label?: ReactNode;\n}\n\nexport const Clipboard = forwardRef<HTMLButtonElement, ClipboardProps>((props, ref) => {\n const [isJustCopied, setIsJustCopied] = useState(false);\n\n const provider = useThemeProvider();\n const theme = useResolveTheme(\n [clipboardTheme.button, provider.theme?.clipboard?.button, props.theme],\n [get(provider.clearTheme, \"clipboard.button\"), props.clearTheme],\n [get(provider.applyTheme, \"clipboard.button\"), props.applyTheme],\n );\n\n const { className, valueToCopy, label, ...restProps } = resolveProps(props, provider.props?.clipboard);\n\n return (\n <Tooltip content={isJustCopied ? \"Copied\" : \"Copy to clipboard\"} className=\"[&_*]:cursor-pointer\">\n <button\n className={twMerge(theme.base, className)}\n onClick={() => copyToClipboard(valueToCopy, setIsJustCopied)}\n {...restProps}\n ref={ref}\n >\n <span className={theme.label}>{label}</span>\n </button>\n </Tooltip>\n );\n});\n\nClipboard.displayName = \"Clipboard\";\n"],"names":["forwardRef","useState","provider","useThemeProvider","theme","useResolveTheme","clipboardTheme","get","resolveProps","jsx","Tooltip","twMerge","copyToClipboard"],"mappings":";;;;;;;;;;;;;AAYY,MAAC,SAAS,GAAGA,gBAAU,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AACpD,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,MAAM,EAAEJ,UAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;AAC3E,IAAI,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;AACpE,IAAI,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,UAAU;AACnE,GAAG;AACH,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAGM,yBAAY,CAAC,KAAK,EAAEN,UAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;AACxG,EAAE,uBAAuBO,cAAG,CAACC,eAAO,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,GAAG,mBAAmB,EAAE,SAAS,EAAE,sBAAsB,EAAE,QAAQ,kBAAkBD,cAAG;AAChK,IAAI,QAAQ;AACZ,IAAI;AACJ,MAAM,SAAS,EAAEE,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,kBAAkBH,cAAG,CAAC,MAAM,EAAE,EAAE,SAAS,EAAEL,OAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;AACvF;AACA,GAAG,EAAE,CAAC;AACN,CAAC;AACD,SAAS,CAAC,WAAW,GAAG,WAAW;;;;"}