सीधे मुख्य कॉन्टेंट पर जाएँ
menumenu tanreiexpand_morecontrasttranslate
tanreiexpand_more
शुरुआत करेंWebReactSwiftUIJetpack ComposeFlutterReact Nativeप्रीसेटआपका अपना डिज़ाइन सिस्टमAI एजेंट के साथ Tanrei का इस्तेमालब्रांडडिज़ाइन टोकनडिज़ाइन सिस्टम और कस्टमाइज़ेशनTheme Studioरंगटाइपोग्राफ़ीआइकनशेपएलिवेशनमोशनइंटरैक्शन स्टेटव्यवहारलेआउटसुलभताशब्दकलर टोकनटाइप स्केल टोकनशेप टोकनएलिवेशन टोकनमोशन टोकनस्टेट टोकनस्पेस और माप के टोकनकंपोनेंटबटनमुख्य ऐक्शन बटनसेगमेंटेड बटनबटन ग्रुपमेन्यू वाला बटनटूलबारकॉपी बटनचेकबॉक्सरेडियो बटनस्विचचिपमेन्यूस्लाइडरस्लाइडर फ़ील्डकैलेंडरDateTimePickerफ़ील्ड ग्रुपरेडियो ग्रुपचेकबॉक्स ग्रुपसिलेक्टसिलेक्ट फ़ील्डमेन्यू बारफ़ाइल अपलोडफ़ाइल पिकर उन्नतड्रॉप ज़ोनटेक्स्ट इनपुट उन्नतटेक्स्ट फ़ील्डचिप फ़ील्डफ़ील्डकॉम्बोबॉक्स उन्नतकॉम्बोबॉक्स फ़ील्डनंबर इनपुट उन्नतनंबर फ़ील्डकलर इनपुट उन्नतकलर फ़ील्डवन-टाइम कोड इनपुट उन्नतवन-टाइम कोड फ़ील्डएम्बेडेड टेक्स्ट इनपुट उन्नतचैट कंपोज़रकार्डडिवाइडरमोडल लेयर उन्नतडायलॉगलिस्टलिस्ट पंक्तिबॉटम शीटसाइड शीटकैरसेलकोड ब्लॉकटेबलपॉपओवरचरणअकॉर्डियनडिस्क्रिप्शन लिस्टफ़िगरऐप शेलपेज हेडरट्री व्यूटाइमलाइनइमेज प्रीव्यूसाइज़ हैंडलसाइज़ बदलने वाला फ़्रेमस्क्रॉल एरियाबैजप्रोग्रेस इंडिकेटरमीटरनंबर टिकरलोडिंग इंडिकेटरस्नैकबारटूलटिपकीबोर्ड शॉर्टकटटैगइनलाइन कोडकॉलआउटअवतारख़ाली स्टेटटैग ग्रुपस्केलेटनफ़ाइल आइटमस्वॉचमार्की टेक्स्टटैबटैब व्यूऐप बारनेविगेशन बारनेविगेशन ड्रॉअरखोजलिंकपेजिनेशनपिछला और अगला लिंकस्टेपरब्रेडक्रंबविषय सूचीलिंक कार्डFAB मेन्यूस्थितिTanrei कैसे बनता हैयोगदानलाइसेंस और श्रेय
होमशुरू करेंReact

React

Tanrei के Web Components से जनरेट किए गए, टाइप वाले React कंपोनेंट।

content_copyMarkdown में देखें

@tanrei/react, @tanrei/web के हर कस्टम एलिमेंट को एक असली React कंपोनेंट में लपेटता है, जिसकी प्रॉपर्टी और इवेंट हैंडलर टाइप किए हुए हैं। ये रैपर कस्टम एलिमेंट मैनिफ़ेस्ट से जनरेट होते हैं, इसलिए वे हमेशा उन एलिमेंट से मेल खाते हैं जिन्हें वे लपेटते हैं।

प्री-रिलीज़

0.1.0-next.0 npm पर dist-tag next के साथ प्रकाशित है: 0.1.0 तक @tanrei/react@next और @tanrei/web@next इंस्टॉल करें। 0.x प्री-रिलीज़ के दौरान पुराने वर्शन के साथ संगतता नहीं रखी जाती: कोई भी प्री-रिलीज़ पहले से अप्रचलित घोषित किए बिना कुछ भी तोड़ सकती है, और क्या टूटा, यह उसका changeset बताता है।

इंस्टॉल करें

React 18 या उसके बाद का वर्शन ज़रूरी है।

npm से

npm install @tanrei/react @tanrei/web

सोर्स से

main पर मौजूद सोर्स इस्तेमाल करने के लिए Web पैकेज की तरह (Git, Node 22.22 या उसके बाद का वर्शन, pnpm 12): रिपॉज़िटरी के क्लोन में दोनों पैकेज बिल्ड करें और उन्हें पैक करें,

git clone https://github.com/chnotchy/tanrei.git
cd tanrei
pnpm install
pnpm --filter @tanrei/web --filter @tanrei/react build
pnpm --filter @tanrei/web --filter @tanrei/react pack --pack-destination ../tanrei-packages

फिर पैक की गई दोनों फ़ाइलें एक ही कमांड से अपने प्रोजेक्ट में इंस्टॉल करें, ताकि React पैकेज को Web पैकेज अपने बग़ल में मिल जाए:

npm install path/to/tanrei-packages/tanrei-web-*.tgz path/to/tanrei-packages/tanrei-react-*.tgz

इस्तेमाल

कंपोनेंट रेंडर होने से पहले स्टाइलशीट एक बार लोड करें: tanrei.css में पेज का बेस, टोकन और पैकेज की बाक़ी सारी स्टाइलशीट एक फ़ाइल में हैं। उन्हें एक-एक करके लोड करने के लिए वेब गाइड देखें।

import '@tanrei/web/tanrei.css';
import '@tanrei/web/words/en';
import { Button } from '@tanrei/react';

export function Toolbar({ onDeploy }: { onDeploy: () => void }) {
  return (
    <>
      <Button variant="filled" onClick={onDeploy}>
        डिप्लॉय करें
      </Button>
      <Button variant="text" size="small" disabled>
        रोल बैक करें
      </Button>
    </>
  );
}

प्रॉपर्टी के नाम वही हैं जो एलिमेंट के ऐट्रिब्यूट के हैं (variant, size, disabled)। इवेंट सामान्य React हैंडलर हैं। एलिमेंट का अपना इवेंट on और कैमल केस में इवेंट के नाम से सुना जाता है, जैसे React अपने इवेंट का नाम रखता है (onKeyDown): नेविगेशन ड्रॉअर expandedchange भेजता है, और आप उसे onExpandedChange से सुनते हैं।

@tanrei/web/words/en हर उस लेबल और संदेश के लिए सादी अंग्रेज़ी में एक शब्द देता है जिसे कंपोनेंट दिखाते या कहते हैं, जैसे ज़रूरी वाले टैग का या बंद करने वाले बटन का नाम; इसे छोड़कर @tanrei/react के setWords() से अपने शब्द भी दे सकते हैं। देखें शब्द।

हर डिज़ाइन सिस्टम की एक एंट्री

पैकेज में Tanrei के साथ आने वाले हर डिज़ाइन सिस्टम की एक एंट्री है, ताकि आपका एडिटर वही सुझाए, और टाइप जाँच वही स्वीकार करे, जो आपके सिस्टम में है:

एंट्री यह क्या एक्सपोर्ट करती है
@tanrei/react डिफ़ॉल्ट सिस्टम, Tanrei, के कंपोनेंट। FAB मेन्यू, जो m3-like लेयर में रहता है, और सेगमेंटेड बटन, जिसे Tanrei शामिल नहीं करता, इसमें नहीं हैं; और जिस वेरिएंट को Tanrei शामिल नहीं करता, वह प्रॉप का मान नहीं है: <TextField variant="outlined"> टाइप जाँच में पास नहीं होता
@tanrei/react/m3-like, @tanrei/react/m3-expressive-like, @tanrei/react/cupertino उस प्रीसेट के कंपोनेंट, उसके वेरिएंट के साथ
@tanrei/react/advanced उन्नत कंपोनेंट, यानी वे हिस्से जिनसे दूसरे कंपोनेंट बनते हैं: TextInput, ModalLayer, Combobox और बाकी। प्रोडक्ट आम तौर पर उनसे बना कंपोनेंट लिखता है: TextField, Dialog, ComboboxField
@tanrei/react/all हर कंपोनेंट, चाहे वह किसी भी सिस्टम में हो: आपके अपने डिज़ाइन सिस्टम के लिए, और नया सिस्टम बनाने के लिए
import '@tanrei/web/tokens.css';
import '@tanrei/web/systems/m3-like.css';
import { FabMenu, FabMenuItem, TextField } from '@tanrei/react/m3-like';

कोई कंपोनेंट हर एंट्री में वही है, इसलिए बंडलर अब भी सिर्फ़ वही रखता है जो आप इंपोर्ट करते हैं। हर एंट्री setWords, missingWords और TanreiEvent टाइप भी एक्सपोर्ट करती है। एंट्रियाँ हर सिस्टम की कंपोनेंट सूची, @tanrei/web/systems/<id>.components.json, से बनाई जाती हैं, जिसमें हर कंपोनेंट की एंट्री (react.import) लिखी होती है; आपके अपने सिस्टम की सूची, जिसे tanrei build लिखता है, @tanrei/react/all बताती है।

सर्वर रेंडरिंग

कंपोनेंट सर्वर पर कस्टम एलिमेंट का टैग रेंडर करते हैं और ब्राउज़र में अपग्रेड होते हैं। जिन फ़्रेमवर्क में सर्वर और क्लाइंट अलग-अलग हैं, उनमें आप जो एंट्री इस्तेमाल करते हैं, उसे किसी क्लाइंट कंपोनेंट से इंपोर्ट करें, ताकि एलिमेंट की परिभाषाएँ ब्राउज़र में रजिस्टर हों।

टिप्पणी

थीम, कंट्रास्ट, टोकन और फ़ॉन्ट ठीक वैसे ही काम करते हैं जैसा Web गाइड में बताया गया है; React पैकेज इनके ऊपर अपनी ओर से कुछ नहीं जोड़ता।