टेक्स्ट और स्टाइलिंग

रंगों, टेक्स्ट एट्रिब्यूट और थीम टोकन से डिप्लॉयमेंट कार्ड को स्टाइल करें।

इस अध्याय का ऐप आपके कंसोल में चल रहा है। ⌘⌥JCtrl+Shift+J⌘⌥KCtrl+Shift+K⌘⌥C से इसे खोलें (पहले डेवलपर सुविधाएं चालू करें), फिर इसे आज़माएं।
अध्याय देखें3:24

इस अध्याय में

  • टेक्स्ट एट्रिब्यूट
  • थीम टोकन
  • डिप्लॉयमेंट कार्ड
  • थीम

हर सेल में एक कैरेक्टर, एक फ़ोरग्राउंड, एक बैकग्राउंड और एट्रिब्यूट का एक सेट होता है। Text.js इन्हें %c CSS span में कंपाइल करता है, इसलिए कंसोल में असली रंग, बोल्ड और इटैलिक दिखते हैं।

टेक्स्ट एट्रिब्यूट

<Text> में bold, dim, italic, underline और strikethrough इस्तेमाल कर सकते हैं। नेस्ट किए गए <Text> एलिमेंट एक ही लाइन के अंदर स्टाइल वाले span बन जाते हैं।

<Text>  Deployed <Text bold>acme-web</Text> to <Text color="accent">iad1</Text></Text>

थीम टोकन

color prop हेक्स वैल्यू, रंगों के सामान्य नाम (emerald) और थीम टोकन स्वीकार करता है; Tailwind पैलेट के शेड क्लास (text-emerald-400) से लागू होते हैं। टोकन सक्रिय थीम के मुताबिक बदलते हैं, इसलिए जहां रंग का कोई अर्थ हो, वहां इन्हें प्राथमिकता दें। एक स्टेटस कंपोनेंट जोड़ें:

app/status.tsx+15tsx
जोड़ा गया: import { Text } from "@textjs/app";जोड़ा गया: जोड़ा गया: export type DeployStatus = "ready" | "building" | "error" | "queued";जोड़ा गया: जोड़ा गया: export const STATUS = {जोड़ा गया:   ready: { label: "Ready", color: "success" },जोड़ा गया:   building: { label: "Building", color: "warning" },जोड़ा गया:   error: { label: "Error", color: "danger" },जोड़ा गया:   queued: { label: "Queued", color: "subtle" },जोड़ा गया: } as const;जोड़ा गया: जोड़ा गया: export function Status({ status }: { status: DeployStatus }) {जोड़ा गया:   const s = STATUS[status];जोड़ा गया:   return <Text color={s.color} wrap="nowrap">{`● ${s.label}`}</Text>;जोड़ा गया: }

डिप्लॉयमेंट कार्ड

bg-surface कार्ड को बैकग्राउंड से उभरा हुआ दिखाता है। डिप्लॉयमेंट आईडी स्टेटस का रंग लेती है, बिल्ड के दौरान इटैलिक हो जाती है और एरर आने पर उस पर लाइन खिंच जाती है।

app/page.tsx+23-1tsx
हटाया गया: import { Box, Spacer, Text, useInput } from "@textjs/app";जोड़ा गया: import { Box, Spacer, Text, useAppTheme, useInput } from "@textjs/app";जोड़ा गया: import { Status, STATUS, type DeployStatus } from "./status";जोड़ा गया: जोड़ा गया: const ORDER: DeployStatus[] = ["ready", "building", "error", "queued"];जोड़ा गया: export default function Page() {जोड़ा गया:   const { theme, cycleTheme } = useAppTheme();जोड़ा गया:   const [status, setStatus] = useState<DeployStatus>("ready");जोड़ा गया: जोड़ा गया:   useInput((e) => {जोड़ा गया:     if (e.input === "t") cycleTheme();जोड़ा गया:     if (e.input === "s") setStatus((s) => ORDER[(ORDER.indexOf(s) + 1) % ORDER.length]);जोड़ा गया:   });जोड़ा गया:   return (    <Box className="flex-col grow">      {/* top bar, now with the theme name on the right */}जोड़ा गया:       <Box className="flex-col border rounded px-2 py-1 bg-surface">जोड़ा गया:         <Box className="flex-row gap-2 h-1">जोड़ा गया:           <Text bold>acme-web</Text>जोड़ा गया:           <Status status={status} />जोड़ा गया:         </Box>जोड़ा गया:         <Text color="muted" wrap="truncate-end">feat: stream cells downward</Text>जोड़ा गया:         <Text color={STATUS[status].color} italic={status === "building"} strikethrough={status === "error"}>जोड़ा गया:           dpl_8fK2जोड़ा गया:         </Text>जोड़ा गया:       </Box>    </Box>  );}

wrap="truncate-end" लंबे कमिट मैसेज को दूसरी पंक्ति में ले जाने के बजाय … से समाप्त करता है।

थीम

Text.js के साथ पांच थीम आती हैं: Geist Dark, OpenCode Dark, Tokyo Night, Amber CRT और Geist Light। इन्हें बारी-बारी से बदलने के लिए कंसोल में t दबाएं। पूरा फ़्रेम नए पैलेट में फिर से पेंट होता है, क्योंकि ऊपर दिया गया हर रंग एक टोकन है।

आज़माएं

यह अध्याय के अंत वाला Acme Deploys है, जो DevTools में चल रहा है। पैड पर क्लिक करें, फिर नीचे दी गई कुंजियां इस्तेमाल करें।

▼ 03 · टेक्स्ट और स्टाइलिंग

कंसोल खोलें

⌘⌥J
CtrlShiftJ
⌘⌥K
CtrlShiftK
⌘⌥C

ऐप DevTools में रेंडर होता है।पहले Safari की सेटिंग → एडवांस में “वेब डेवलपर के लिए सुविधाएं दिखाएं” चालू करें। फिर यहां क्लिक करें और t दबाएं।

डेस्कटॉप पर खोलें

यह ऐप DevTools कंसोल में रेंडर होता है, जिसके लिए डेस्कटॉप ब्राउज़र चाहिए।

क्विज़

2 सवाल

अध्याय पूरा करने के लिए हर सवाल का जवाब दें।

Why use color="success" instead of a hex value?

 

What does wrap="truncate-end" do?