+ description....... +
+This is a paragraph.
+ + + +` + + const handleCopy = async () => { + try { + await navigator.clipboard.writeText(code); + setCopyButtonText("Copied to clipboard"); + toast.success("Copied to clipboard!"); + } catch (err) { + toast.error("Failed to copy!"); + } + }; + return ( + +
+
+ {code}
+
+
+
+ + {body} +
+ ); +}); +FormMessage.displayName = "FormMessage"; + + +export { + useFormField, + Form, + FormItem, + FormLabel, + FormControl, + FormDescription, + FormMessage, + FormField, +}; diff --git a/app/src/components/admin/ui/input.tsx b/app/src/components/admin/ui/input.tsx new file mode 100644 index 0000000..4c6f866 --- /dev/null +++ b/app/src/components/admin/ui/input.tsx @@ -0,0 +1,41 @@ +import * as React from "react"; +import { useState } from "react"; +import { EyeIcon, EyeOffIcon } from "lucide-react"; + +export interface InputProps extends React.InputHTMLAttributes