W naszej podróży przez kosmos technologii frontendowych, frameworki komponentów są jak zaawansowane stacje kosmiczne - gotowe, kompleksowe struktury, które możemy zasiedlić własną logiką i dostosować do naszych potrzeb. W tym module poznamy trzy popularne frameworki komponentów: shadcn/ui, Material-UI i Chakra UI, które pozwalają tworzyć spójne, piękne i funkcjonalne interfejsy użytkownika.
Wyobraź sobie, że musisz zbudować zaawansowany statek kosmiczny. Możesz albo konstruować każdą część od podstaw, albo skorzystać z gotowych, przetestowanych i zoptymalizowanych komponentów. Frameworki komponentów dają ci tę drugą możliwość, oferując:
shadcn/ui to unikalne podejście do bibliotek komponentów. W przeciwieństwie do tradycyjnych frameworków, shadcn/ui nie jest biblioteką, którą instalujesz jako zależność. Zamiast tego, to kolekcja komponentów, które kopiujesz bezpośrednio do swojego projektu. To daje ci pełną kontrolę nad kodem oraz możliwość modyfikacji komponentów bez ograniczeń.
Aby rozpocząć przygodę z shadcn/ui, wykonaj następujące kroki:
1# Inicjalizacja shadcn/ui w projekcie
2npx shadcn-ui@latest initPodczas inicjalizacji odpowiesz na kilka pytań dotyczących konfiguracji (style, kolory, itp.). Następnie możesz dodać wybrane komponenty:
1# Dodawanie komponentu przycisku
2npx shadcn-ui@latest add button
3
4# Dodawanie innych komponentów
5npx shadcn-ui@latest add card
6npx shadcn-ui@latest add dialog1import { Button } from "@/components/ui/button";
2import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
3
4function MissionControl() {
5 return (
6 <Card>
7 <CardHeader>
8 <CardTitle>Panel Kontroli Misji</CardTitle>
9 <CardDescription>Zarządzaj swoją kosmiczną ekspedycją</CardDescription>
10 </CardHeader>
11 <CardContent>
12 <p>Status systemów: Wszystkie systemy działają prawidłowo</p>
13 </CardContent>
14 <CardFooter>
15 <Button variant="outline" className="mr-2">Anuluj</Button>
16 <Button>Rozpocznij misję</Button>
17 </CardFooter>
18 </Card>
19 );
20}Material-UI (MUI) to popularna biblioteka komponentów React implementująca zasady Material Design stworzone przez Google. To jak budowanie statku kosmicznego według sprawdzonych planów NASA - otrzymujesz interfejs, który jest intuicyjny, spójny i znany użytkownikom na całym świecie.
1# Instalacja podstawowych pakietów MUI
2npm install @mui/material @emotion/react @emotion/styled
3
4# Opcjonalnie, dla ikon
5npm install @mui/icons-material1import { Button, Card, CardActions, CardContent, Typography } from '@mui/material';
2import RocketLaunchIcon from '@mui/icons-material/RocketLaunch';
3
4function SpaceMission() {
5 return (
6 <Card sx={{ maxWidth: 345, m: 2 }}>
7 <CardContent>
8 <Typography gutterBottom variant="h5" component="div">
9 Misja na Marsa
10 </Typography>
11 <Typography variant="body2" color="text.secondary">
12 Przygotuj się do kosmicznej przygody. Misja na Marsa wymaga odwagi,
13 wiedzy i gotowości na nieznane.
14 </Typography>
15 </CardContent>
16 <CardActions>
17 <Button size="small" color="primary">Szczegóły</Button>
18 <Button
19 size="small"
20 variant="contained"
21 color="primary"
22 startIcon={<RocketLaunchIcon />}
23 >
24 Rozpocznij
25 </Button>
26 </CardActions>
27 </Card>
28 );
29}Material-UI oferuje zaawansowany system tematyczny, który pozwala na dostosowanie kolorów, typografii, zaokrągleń i wielu innych aspektów:
1import { createTheme, ThemeProvider } from '@mui/material/styles';
2
3// Tworzenie własnego motywu
4const theme = createTheme({
5 palette: {
6 primary: {
7 main: '#2196f3', // kosmiczny niebieski
8 },
9 secondary: {
10 main: '#f50057', // gwieździsty róż
11 },
12 },
13 typography: {
14 fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
15 h1: {
16 fontSize: '2.5rem',
17 fontWeight: 500,
18 },
19 },
20 shape: {
21 borderRadius: 8,
22 },
23});
24
25// Zastosowanie motywu
26function App() {
27 return (
28 <ThemeProvider theme={theme}>
29 {/* Tutaj umieszczasz komponenty */}
30 </ThemeProvider>
31 );
32}Chakra UI to nowoczesna biblioteka komponentów, która stawia na prostotę, modularność i dostępność. To jak budowanie lekkiego, zwinnego pojazdu kosmicznego, który jest jednocześnie bezpieczny i łatwy w obsłudze dla każdego członka załogi, niezależnie od jego możliwości.
1# Instalacja Chakra UI
2npm i @chakra-ui/react @emotion/react @emotion/styled framer-motion1// W głównym pliku aplikacji
2import { ChakraProvider } from '@chakra-ui/react';
3
4function App() {
5 return (
6 <ChakraProvider>
7 {/* Tutaj umieszczasz komponenty */}
8 </ChakraProvider>
9 );
10}1import { Box, Button, Heading, Stack, Text, useColorModeValue } from '@chakra-ui/react';
2
3function SpaceStation() {
4 // Dynamiczne kolory w zależności od trybu (jasny/ciemny)
5 const bgColor = useColorModeValue('blue.50', 'blue.900');
6 const textColor = useColorModeValue('gray.800', 'white');
7
8 return (
9 <Box
10 p={5}
11 shadow="md"
12 borderWidth="1px"
13 borderRadius="md"
14 bg={bgColor}
15 color={textColor}
16 >
17 <Heading size="md" mb={2}>Międzynarodowa Stacja Kosmiczna</Heading>
18 <Text mb={4}>
19 Orbitalny dom astronautów i naukowców z całego świata.
20 </Text>
21 <Stack direction="row" spacing={4}>
22 <Button colorScheme="blue" variant="outline">
23 Informacje
24 </Button>
25 <Button colorScheme="blue">
26 Odwiedź
27 </Button>
28 </Stack>
29 </Box>
30 );
31}Chakra UI oferuje intuicyjny sposób definiowania responsywnych styli:
1<Stack
2 direction={["column", "row"]} // kolumna na małych ekranach, wiersz na większych
3 spacing={[2, 4, 6]} // różne odstępy dla różnych breakpointów
4>
5 <Box
6 p={[2, 4, 6]} // padding rosnący z rozmiarem ekranu
7 width={["100%", "50%", "33%"]} // szerokość zależna od rozmiaru ekranu
8 bg="blue.500"
9 >
10 Panel 1
11 </Box>
12 <Box
13 p={[2, 4, 6]}
14 width={["100%", "50%", "33%"]}
15 bg="green.500"
16 >
17 Panel 2
18 </Box>
19 <Box
20 p={[2, 4, 6]}
21 width={["100%", "50%", "33%"]}
22 bg="purple.500"
23 display={["none", "block"]} // ukryty na najmniejszych ekranach
24 >
25 Panel 3
26 </Box>
27</Stack>Idealny dla:
Potencjalne wady:
Idealny dla:
Potencjalne wady:
Idealny dla:
Potencjalne wady:
Wszystkie omówione frameworki można łączyć z innymi technologiami:
Wybierz jeden z omówionych frameworków (shadcn/ui, Material-UI lub Chakra UI) i stwórz dashboard kontroli misji kosmicznej zawierający:
Pamiętaj o:
To zadanie pozwoli ci zrozumieć, jak frameworki komponentów mogą przyspieszyć budowanie złożonych interfejsów i pomoże ci zdecydować, który z nich najlepiej pasuje do twojego stylu pracy i potrzeb projektu.