fixing features conflicts
This commit is contained in:
5
latosa-frontend/app/contact/page.tsx
Normal file
5
latosa-frontend/app/contact/page.tsx
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import Contact from "@/components/contact";
|
||||||
|
|
||||||
|
export default function ContactPage() {
|
||||||
|
return <Contact />;
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ import type { Metadata } from "next";
|
|||||||
import { Geist, Geist_Mono } from "next/font/google";
|
import { Geist, Geist_Mono } from "next/font/google";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
import Navbar from "@/components/nav-bar";
|
import Navbar from "@/components/nav-bar";
|
||||||
|
import Footer from "@/components/footer";
|
||||||
|
|
||||||
const geistSans = Geist({
|
const geistSans = Geist({
|
||||||
variable: "--font-geist-sans",
|
variable: "--font-geist-sans",
|
||||||
@@ -30,6 +31,7 @@ export default function RootLayout({
|
|||||||
>
|
>
|
||||||
<Navbar />
|
<Navbar />
|
||||||
{children}
|
{children}
|
||||||
|
<Footer />
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
|
|||||||
24
latosa-frontend/app/login/page.tsx
Normal file
24
latosa-frontend/app/login/page.tsx
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import { GalleryVerticalEnd } from "lucide-react";
|
||||||
|
|
||||||
|
import { LoginForm } from "@/components/login-form";
|
||||||
|
|
||||||
|
export default function LoginPage() {
|
||||||
|
return (
|
||||||
|
<div className="grid min-h-svh lg:grid-cols-2">
|
||||||
|
<div className="flex flex-col gap-4 p-6 md:p-10">
|
||||||
|
<div className="flex flex-1 items-center justify-center">
|
||||||
|
<div className="w-full max-w-xs">
|
||||||
|
<LoginForm />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="relative hidden bg-muted lg:block">
|
||||||
|
<img
|
||||||
|
src="/placeholder.svg"
|
||||||
|
alt="Image"
|
||||||
|
className="absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
|
"use server";
|
||||||
|
|
||||||
import Features, { FeatureItem } from "@/components/features";
|
import Features, { FeatureItem } from "@/components/features";
|
||||||
import Gallery6 from "@/components/gallery";
|
import Gallery6 from "@/components/gallery";
|
||||||
import Hero from "@/components/hero";
|
import Hero from "@/components/hero";
|
||||||
|
|
||||||
export default function Home() {
|
export default async function Home() {
|
||||||
return (
|
return (
|
||||||
<main>
|
<main>
|
||||||
<Hero />
|
<Hero />
|
||||||
|
|||||||
91
latosa-frontend/components/contact.tsx
Normal file
91
latosa-frontend/components/contact.tsx
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
import { Button } from "@/components/ui/button";
|
||||||
|
import { Input } from "@/components/ui/input";
|
||||||
|
import { Label } from "@/components/ui/label";
|
||||||
|
import { Textarea } from "@/components/ui/textarea";
|
||||||
|
|
||||||
|
const Contact = () => {
|
||||||
|
return (
|
||||||
|
<section className="py-32">
|
||||||
|
<div className="p-4">
|
||||||
|
<div className="mx-auto flex max-w-screen-xl flex-col justify-between gap-10 lg:flex-row lg:gap-20">
|
||||||
|
<div className="self-center max-w-lg flex flex-col justify-between gap-10">
|
||||||
|
<div className="text-center lg:text-left">
|
||||||
|
<h1 className="mb-2 text-5xl font-semibold lg:mb-1 lg:text-6xl">
|
||||||
|
Contactez-nous !
|
||||||
|
</h1>
|
||||||
|
<p className="text-muted-foreground">
|
||||||
|
Nous nous rendons disponible pour répondre à
|
||||||
|
toutes vos questions.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="mx-auto w-fit lg:mx-0">
|
||||||
|
<h3 className="mb-6 text-center text-2xl font-semibold lg:text-left">
|
||||||
|
Informations de contact
|
||||||
|
</h3>
|
||||||
|
<ul className="ml-4 list-disc">
|
||||||
|
<li>
|
||||||
|
<span className="font-bold">
|
||||||
|
Téléphone:{" "}
|
||||||
|
</span>
|
||||||
|
(123) 34567890
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span className="font-bold">Email: </span>
|
||||||
|
<a href="" className="underline">
|
||||||
|
nicolas.goruk@orange.fr
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="mx-auto flex max-w-screen-md flex-col gap-6 rounded-lg border p-10">
|
||||||
|
<div className="flex gap-4">
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="firstname">Prénom</Label>
|
||||||
|
<Input
|
||||||
|
type="text"
|
||||||
|
id="firstname"
|
||||||
|
placeholder="Prénom"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="lastname">Nom de famille</Label>
|
||||||
|
<Input
|
||||||
|
type="text"
|
||||||
|
id="lastname"
|
||||||
|
placeholder="Nom de famille"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="email">Email</Label>
|
||||||
|
<Input
|
||||||
|
type="email"
|
||||||
|
id="email"
|
||||||
|
placeholder="Email"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full items-center gap-1.5">
|
||||||
|
<Label htmlFor="subject">Objet</Label>
|
||||||
|
<Input
|
||||||
|
type="text"
|
||||||
|
id="subject"
|
||||||
|
placeholder="Objet"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="grid w-full gap-1.5">
|
||||||
|
<Label htmlFor="message">Message</Label>
|
||||||
|
<Textarea
|
||||||
|
placeholder="Écrivez votre message ici."
|
||||||
|
id="message"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<Button className="w-full">Envoyer</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Contact;
|
||||||
118
latosa-frontend/components/footer.tsx
Normal file
118
latosa-frontend/components/footer.tsx
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
import {
|
||||||
|
FaFacebook,
|
||||||
|
FaInstagram,
|
||||||
|
FaLinkedin,
|
||||||
|
FaTwitter,
|
||||||
|
FaYoutube,
|
||||||
|
} from "react-icons/fa";
|
||||||
|
|
||||||
|
const sections = [
|
||||||
|
{
|
||||||
|
title: "Product",
|
||||||
|
links: [
|
||||||
|
{ name: "Overview", href: "#" },
|
||||||
|
{ name: "Pricing", href: "#" },
|
||||||
|
{ name: "Marketplace", href: "#" },
|
||||||
|
{ name: "Features", href: "#" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Company",
|
||||||
|
links: [
|
||||||
|
{ name: "About", href: "#" },
|
||||||
|
{ name: "Team", href: "#" },
|
||||||
|
{ name: "Blog", href: "#" },
|
||||||
|
{ name: "Careers", href: "#" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Resources",
|
||||||
|
links: [
|
||||||
|
{ name: "Help", href: "#" },
|
||||||
|
{ name: "Sales", href: "#" },
|
||||||
|
{ name: "Advertise", href: "#" },
|
||||||
|
{ name: "Privacy", href: "#" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const Footer = () => {
|
||||||
|
return (
|
||||||
|
<section className="p-16">
|
||||||
|
<div className="">
|
||||||
|
<footer>
|
||||||
|
<div className="flex flex-col items-center justify-between gap-10 text-center lg:flex-row lg:text-left">
|
||||||
|
<div className="flex w-full max-w-96 shrink flex-col items-center justify-between gap-6 lg:items-start">
|
||||||
|
<div>
|
||||||
|
<span className="flex items-center justify-center gap-4 lg:justify-start">
|
||||||
|
<img
|
||||||
|
src="https://shadcnblocks.com/images/block/block-1.svg"
|
||||||
|
alt="logo"
|
||||||
|
className="h-11"
|
||||||
|
/>
|
||||||
|
<p className="text-3xl font-semibold">
|
||||||
|
Latosa-Escrima
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
<p className="mt-6 text-sm text-muted-foreground">
|
||||||
|
A collection of 100+ responsive HTML
|
||||||
|
templates for your startup business or side
|
||||||
|
project.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<ul className="flex items-center space-x-6 text-muted-foreground">
|
||||||
|
<li className="font-medium hover:text-primary">
|
||||||
|
<a href="https://www.facebook.com/wingtsun.picardie">
|
||||||
|
<FaFacebook className="size-6" />
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className="font-medium hover:text-primary">
|
||||||
|
<a href="https://www.youtube.com/@WingTsunPicardie">
|
||||||
|
<FaYoutube className="size-6" />
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div className="grid grid-cols-3 gap-6 lg:gap-20">
|
||||||
|
{sections.map((section, sectionIdx) => (
|
||||||
|
<div key={sectionIdx}>
|
||||||
|
<h3 className="mb-6 font-bold">
|
||||||
|
{section.title}
|
||||||
|
</h3>
|
||||||
|
<ul className="space-y-4 text-sm text-muted-foreground">
|
||||||
|
{section.links.map((link, linkIdx) => (
|
||||||
|
<li
|
||||||
|
key={linkIdx}
|
||||||
|
className="font-medium hover:text-primary"
|
||||||
|
>
|
||||||
|
<a href={link.href}>
|
||||||
|
{link.name}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="mt-20 flex flex-col justify-between gap-4 border-t pt-8 text-center text-sm font-medium text-muted-foreground lg:flex-row lg:items-center lg:text-left">
|
||||||
|
<p>
|
||||||
|
© {new Date(Date.now()).getFullYear()}{" "}
|
||||||
|
Latosa-Escrima. Tous droits réservés.
|
||||||
|
</p>
|
||||||
|
<ul className="flex justify-center gap-4 lg:justify-start">
|
||||||
|
<li className="hover:text-primary">
|
||||||
|
<a href="#"> Terms and Conditions</a>
|
||||||
|
</li>
|
||||||
|
<li className="hover:text-primary">
|
||||||
|
<a href="#"> Privacy Policy</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Footer;
|
||||||
@@ -4,13 +4,11 @@ import { cn } from "@/lib/utils";
|
|||||||
|
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
import { Button, buttonVariants } from "@/components/ui/button";
|
import { Button, buttonVariants } from "@/components/ui/button";
|
||||||
|
import Link from "next/link";
|
||||||
|
|
||||||
const Hero = () => {
|
const Hero = () => {
|
||||||
return (
|
return (
|
||||||
<section
|
<section className="flex h-[calc(100vh-68px)] justify-center items-center relative overflow-hidden py-32">
|
||||||
style={{ height: "calc(100vh - 68px)" }}
|
|
||||||
className="flex justify-center items-center relative overflow-hidden py-32"
|
|
||||||
>
|
|
||||||
<div className="">
|
<div className="">
|
||||||
<div className="bg-blue-50 magicpattern absolute inset-x-0 top-0 -z-10 flex h-full w-full items-center justify-center opacity-100" />
|
<div className="bg-blue-50 magicpattern absolute inset-x-0 top-0 -z-10 flex h-full w-full items-center justify-center opacity-100" />
|
||||||
<div className="mx-auto flex max-w-5xl flex-col items-center">
|
<div className="mx-auto flex max-w-5xl flex-col items-center">
|
||||||
@@ -30,7 +28,9 @@ const Hero = () => {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-4 flex justify-center gap-2">
|
<div className="mt-4 flex justify-center gap-2">
|
||||||
<Button>Nous contacter</Button>
|
<Button>
|
||||||
|
<Link href="/contact">Nous contacter</Link>
|
||||||
|
</Button>
|
||||||
<Button variant="outline">
|
<Button variant="outline">
|
||||||
À propos
|
À propos
|
||||||
<ExternalLink className="ml-2 h-4" />
|
<ExternalLink className="ml-2 h-4" />
|
||||||
|
|||||||
68
latosa-frontend/components/login-form.tsx
Normal file
68
latosa-frontend/components/login-form.tsx
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
import { cn } from "@/lib/utils";
|
||||||
|
import { Button } from "@/components/ui/button";
|
||||||
|
import { Input } from "@/components/ui/input";
|
||||||
|
import { Label } from "@/components/ui/label";
|
||||||
|
|
||||||
|
export function LoginForm({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentPropsWithoutRef<"form">) {
|
||||||
|
return (
|
||||||
|
<form className={cn("flex flex-col gap-6", className)} {...props}>
|
||||||
|
<div className="flex flex-col items-center gap-2 text-center">
|
||||||
|
<h1 className="text-2xl font-bold">
|
||||||
|
Connectez-vous à votre compte.
|
||||||
|
</h1>
|
||||||
|
<p className="text-balance text-sm text-muted-foreground">
|
||||||
|
Entrez votre adresse e-mail pour vous connecter
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="grid gap-6">
|
||||||
|
<div className="grid gap-2">
|
||||||
|
<Label htmlFor="email">E-Mail</Label>
|
||||||
|
<Input
|
||||||
|
id="email"
|
||||||
|
type="email"
|
||||||
|
placeholder="m@example.com"
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="grid gap-2">
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Label htmlFor="password">Mot de passe</Label>
|
||||||
|
<a
|
||||||
|
href="#"
|
||||||
|
className="ml-auto text-sm underline-offset-4 hover:underline"
|
||||||
|
>
|
||||||
|
Forgot your password?
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<Input id="password" type="password" required />
|
||||||
|
</div>
|
||||||
|
<Button type="submit" className="w-full">
|
||||||
|
Se connecter
|
||||||
|
</Button>
|
||||||
|
<div className="relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-t after:border-border">
|
||||||
|
<span className="relative z-10 bg-background px-2 text-muted-foreground">
|
||||||
|
Ou connectez-vous avec
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<Button variant="outline" className="w-full">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||||
|
<path
|
||||||
|
d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
Login with GitHub
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
<div className="text-center text-sm">
|
||||||
|
Pas de compte ?{" "}
|
||||||
|
<a href="#" className="underline underline-offset-4">
|
||||||
|
Créer un compte
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -25,6 +25,7 @@ import {
|
|||||||
SheetTitle,
|
SheetTitle,
|
||||||
SheetTrigger,
|
SheetTrigger,
|
||||||
} from "@/components/ui/sheet";
|
} from "@/components/ui/sheet";
|
||||||
|
import Link from "next/link";
|
||||||
|
|
||||||
const subMenuItemsOne = [
|
const subMenuItemsOne = [
|
||||||
{
|
{
|
||||||
@@ -75,7 +76,7 @@ const subMenuItemsTwo = [
|
|||||||
|
|
||||||
const Navbar = () => {
|
const Navbar = () => {
|
||||||
return (
|
return (
|
||||||
<section className="p-4">
|
<section className="p-4 top-0 sticky bg-white z-[100]">
|
||||||
<div className="">
|
<div className="">
|
||||||
<nav className="hidden justify-between lg:flex">
|
<nav className="hidden justify-between lg:flex">
|
||||||
<div className="flex items-center gap-6">
|
<div className="flex items-center gap-6">
|
||||||
@@ -90,7 +91,7 @@ const Navbar = () => {
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<a
|
<Link
|
||||||
className={cn(
|
className={cn(
|
||||||
"text-muted-foreground",
|
"text-muted-foreground",
|
||||||
navigationMenuTriggerStyle,
|
navigationMenuTriggerStyle,
|
||||||
@@ -98,10 +99,10 @@ const Navbar = () => {
|
|||||||
variant: "ghost",
|
variant: "ghost",
|
||||||
}),
|
}),
|
||||||
)}
|
)}
|
||||||
href="#"
|
href="/"
|
||||||
>
|
>
|
||||||
Home
|
Accueil
|
||||||
</a>
|
</Link>
|
||||||
<NavigationMenu>
|
<NavigationMenu>
|
||||||
<NavigationMenuList>
|
<NavigationMenuList>
|
||||||
<NavigationMenuItem className="text-muted-foreground">
|
<NavigationMenuItem className="text-muted-foreground">
|
||||||
@@ -208,7 +209,9 @@ const Navbar = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
<Button variant="outline">Log in</Button>
|
<Button variant="outline">
|
||||||
|
<Link href="/login">Se connecter</Link>
|
||||||
|
</Button>
|
||||||
<Button>Sign up</Button>
|
<Button>Sign up</Button>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -221,7 +224,7 @@ const Navbar = () => {
|
|||||||
alt="logo"
|
alt="logo"
|
||||||
/>
|
/>
|
||||||
<span className="text-xl font-bold">
|
<span className="text-xl font-bold">
|
||||||
Shadcn Blocks
|
Latosa-Escrima
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<Sheet>
|
<Sheet>
|
||||||
@@ -240,15 +243,15 @@ const Navbar = () => {
|
|||||||
alt="logo"
|
alt="logo"
|
||||||
/>
|
/>
|
||||||
<span className="text-xl font-bold">
|
<span className="text-xl font-bold">
|
||||||
Shadcn Blocks
|
Latosa-Escrima
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</SheetTitle>
|
</SheetTitle>
|
||||||
</SheetHeader>
|
</SheetHeader>
|
||||||
<div className="mb-8 mt-8 flex flex-col gap-4">
|
<div className="mb-8 mt-8 flex flex-col gap-4">
|
||||||
<a href="#" className="font-semibold">
|
<Link href="/" className="font-semibold">
|
||||||
Home
|
Accueil
|
||||||
</a>
|
</Link>
|
||||||
<Accordion
|
<Accordion
|
||||||
type="single"
|
type="single"
|
||||||
collapsible
|
collapsible
|
||||||
@@ -399,7 +402,9 @@ const Navbar = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="mt-2 flex flex-col gap-3">
|
<div className="mt-2 flex flex-col gap-3">
|
||||||
<Button variant="outline">
|
<Button variant="outline">
|
||||||
Log in
|
<Link href="/login">
|
||||||
|
Se connecter
|
||||||
|
</Link>
|
||||||
</Button>
|
</Button>
|
||||||
<Button>Sign up</Button>
|
<Button>Sign up</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
22
latosa-frontend/components/ui/textarea.tsx
Normal file
22
latosa-frontend/components/ui/textarea.tsx
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import * as React from "react";
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils";
|
||||||
|
|
||||||
|
const Textarea = React.forwardRef<
|
||||||
|
HTMLTextAreaElement,
|
||||||
|
React.ComponentProps<"textarea">
|
||||||
|
>(({ className, ...props }, ref) => {
|
||||||
|
return (
|
||||||
|
<textarea
|
||||||
|
className={cn(
|
||||||
|
"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
||||||
|
className,
|
||||||
|
)}
|
||||||
|
ref={ref}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
Textarea.displayName = "Textarea";
|
||||||
|
|
||||||
|
export { Textarea };
|
||||||
5429
latosa-frontend/deno.lock
generated
5429
latosa-frontend/deno.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,7 @@
|
|||||||
"next": "15.1.4",
|
"next": "15.1.4",
|
||||||
"react": "^19.0.0",
|
"react": "^19.0.0",
|
||||||
"react-dom": "^19.0.0",
|
"react-dom": "^19.0.0",
|
||||||
|
"react-icons": "^5.4.0",
|
||||||
"tailwind-merge": "^2.6.0",
|
"tailwind-merge": "^2.6.0",
|
||||||
"tailwindcss-animate": "^1.0.7"
|
"tailwindcss-animate": "^1.0.7"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user