React ट्युटोरियल

टाइप केलेले फंक्शन घटक, प्रत्येकी एक फाइल, प्रमाण नमुन्याने नियंत्रित value + onChange — सगळे तसेच चालते जसे React आधीच चालते.

तुम्ही काय बनवाल

एक छोटा संपर्क फॉर्म — लेबल असलेले क्षेत्र, सबमिट बटण, नियंत्रित स्थिती, खरे कीबोर्ड आणि स्क्रीन-रीडर वर्तन — आधी साधा, मग शैलीबद्ध, सुमारे १० मिनिटांत.

सुरू करण्यापूर्वी

तुम्हाला git, Node 22 किंवा नवीन, आणि pnpm 10 किंवा नवीन लागेल. कोणताही React 18+ प्रकल्प चालेल — Next.js, Vite किंवा साधे React.

पायरी १ — कोड मिळवा

git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-react-headless
pnpm install
pnpm test        # vitest + @testing-library/react
pnpm run storybook   # browse all 571 components

घटक येथे सपाट फाइल्स आहेत: components/ — Button.tsx, TextInput.tsx — प्रत्येकाच्या शेजारी त्याची चाचणी, story आणि दस्तऐवज. हव्या त्या फाइल्स तुमच्या अॅपमध्ये कॉपी करा, किंवा रेपो आणा आणि त्यातून आयात करा.

पायरी २ — तुमचा पहिला घटक

import Button from "lily-design-system-react-headless/components/Button";

export function SaveBar() {
  return <Button onClick={save}>Save</Button>;
}

हे दाखवते <button class="button" type="button">. Props: type, disabled, pressed (दाखवते aria-pressed), label (एक aria-label ओव्हरराइड करण्यासाठी), className, आणि कोणताही अतिरिक्त गुणधर्म मूळ घटकावर पसरतो.

पायरी ३ — एक छोटा फॉर्म बनवा

import { useState } from "react";
import Form from ".../components/Form";
import Field from ".../components/Field";
import TextInput from ".../components/TextInput";
import Button from ".../components/Button";

export function ContactForm() {
  const [name, setName] = useState("");
  return (
    <Form label="Contact form" onSubmit={handleSubmit}>
      <Field label="Full name" required>
        <TextInput id="name" label="Full name" value={name} onChange={setName} required />
      </Field>
      <Button type="submit">Save</Button>
    </Form>
  );
}

Field दिसणारे label स्वतःचा prop म्हणून, आत ठेवलेल्या लेबल घटकाऐवजी — ते एकदा द्या, वर Fieldआणि TextInputचे label सुलभ नाव पुरवते.

2026-08-29 रोजी तपासले: आधीच्या मसुद्यात वेगळा Label च्या आत Fieldच्या आत ठेवला होता, ज्यामुळे दोन लेबले (एक रिकामे) दिसली कारण Field आधीच स्वतःचे लेबल label prop — नेमका तुकडा कंपाइल करून लक्षात आले. मार्ग संयुक्त संपर्क-फॉर्म मार्ग हाच नमुना आहे, खऱ्या e2e आणि axe चाचण्यांनी तपासलेला.

पायरी ४ — त्याला शैली द्या

वरील सर्व काही शुद्ध रचना म्हणून रेंडर होते, तुमच्या शैलींसाठी तयार. हुकना शैली द्या — .button, .text-input, .label, .field — तुमच्या स्टाइलशीटमध्ये, याद्वारे Tailwind युटिलिटींचा थर लावा className, किंवा तयार थीम लिंक करा:

<link rel="stylesheet" href="/themes/united-states-web-design-system.css" />

पायरी ५ — सगळे चालताना पहा

Next.js उदाहरण अॅप संपूर्ण कॅटलॉग शैलीबद्ध आणि प्रात्यक्षिकासह आहे, Playwright e2e आणि axe-core आधाररेषेसह:

git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-react-next-examples
pnpm install && pnpm run dev

पुढील पायऱ्या

वाटेत प्रश्न आहेत? मदत पृष्ठ उत्तरांनी भरलेले आहे — आणि एखादी पायरी अधिक स्पष्ट करता आली तर, आम्हाला सांगा आणि आम्ही आनंदाने ट्युटोरियल सुधारू.