טקסט ועיצוב
עיצוב כרטיס פריסה עם צבעים, מאפייני טקסט וטוקנים של ערכת נושא.
בפרק הזה
- תכונות טקסט
- טוקנים של ערכת נושא
- כרטיס פריסה
- ערכות נושא
לכל תא יש תו, צבע קדמי, רקע וקבוצת תכונות. Text.js מקמפל אותם לרכיבי span של CSS עם %c, כך שהמסוף מציג צבעים אמיתיים, כתב מודגש וכתב נטוי.
תכונות טקסט
<Text> מקבל את bold, dim, italic, underline ו-strikethrough. רכיבי <Text> מקוננים הופכים לרכיבי span מעוצבים בתוך שורה אחת.
<Text> Deployed <Text bold>acme-web</Text> to <Text color="accent">iad1</Text></Text>טוקנים של ערכת נושא
המאפיין color מקבל ערכי hex, שמות צבעים רגילים (emerald) וטוקנים של ערכת נושא; גוונים מלוח הצבעים של Tailwind מוגדרים באמצעות מחלקות (text-emerald-400). הטוקנים תואמים לערכת הנושא הפעילה, ולכן יש להעדיף אותם לכל שימוש סמנטי. יש להוסיף רכיב סטטוס:
נוסף: 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 מבליט את הכרטיס מעל הרקע. מזהה הפריסה מקבל את צבע הסטטוס, מוצג בכתב נטוי בזמן הבנייה ובקו חוצה במקרה של שגיאה.
הוסר: 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. יש ללחוץ על המשטח, ואז להשתמש במקשים שלמטה.
פתיחת המסוף
האפליקציה מרונדרת ב-DevTools.תחילה יש להפעיל את "הצגת תכונות למפתחי אתרים" בהגדרות Safari → מתקדם. אחר כך ללחוץ כאן וללחוץ על t.
פתיחה במחשב
האפליקציה הזו מרונדרת במסוף של DevTools, שדורש דפדפן במחשב.
בוחן
2 שאלותלהשלמת הפרק, יש לענות על כל השאלות.