Przejdź do głównej zawartości

Implementacja UI z projektów za pomocą Cursora

Designer właśnie przekazał ci plik Figma z 15 ekranami dla dashboardu SaaS. Jest nawigacja boczna, tabela danych z sortowaniem i filtrowaniem, komponent wykresu, strona ustawień z zagnieżdżonymi zakładkami i flow modala do tworzenia nowych zasobów. Projekty wyglądają dopracowane — siatka odstępów 8px, spójne tokeny kolorów, breakpointy responsywne dla mobile i tablet. Twoim zadaniem jest przekształcenie tych pikseli w produkcyjne komponenty React, które dokładnie pasują do projektów, obsługują stany ładowania, zarządzają walidacją formularzy i działają na ekranie telefonu szerokości 320px.

Cursor może widzieć obrazy. To fundamentalnie zmienia workflow tworzenia frontendu — zamiast ręcznego mierzenia wartości paddingu i zgadywania kolorów hex, wklejasz screenshot do czatu Agenta, a AI generuje komponenty, które dokładnie pasują do projektu. Poniższa technika pokazuje, jak przejść od eksportu Figma do komponentu produkcyjnego w ułamku czasu.

  • Workflow używania screenshotów jako kontekstu w Cursor Agent do generowania komponentów dokładnych co do piksela
  • Prompt systemu projektowego, który ustanawia spójne tokeny (kolory, odstępy, typografię) we wszystkich generowanych komponentach
  • Technikę implementacji responsywnej używającą breakpointów Tailwind, które Agent automatycznie utrzymuje
  • Prompt obsługi formularzy, który generuje walidację Zod, stany błędów i wskaźniki ładowania w jednym podejściu
  • Iteracyjny proces udoskonalania do zamykania luki między UI wygenerowanym przez AI a finalnym projektem

Zanim wygenerujesz jakiekolwiek komponenty, zakoduj swoje tokeny projektowe, aby każdy prompt produkował spójny wynik. To najbardziej wpływowy krok dla tworzenia frontendu wspomaganego AI.

Ten plik reguł będzie automatycznie uwzględniany, gdy Agent edytuje pliki w src/components/ lub src/app/, zapewniając, że każdy wygenerowany komponent używa tych samych tokenów.

Cursor wspiera wejście obrazów w czacie Agenta. Zrób screenshot konkretnej sekcji swojego projektu Figma (nie całej strony — jednego komponentu na raz) i wklej go bezpośrednio do czatu.

[wklej screenshot tabeli danych z Figma]
Zaimplementuj ten komponent tabeli danych w src/components/data-table.tsx:
1. Dopasuj projekt dokładnie -- nagłówki kolumn, stylowanie wierszy, stany hover, zebra striping
2. Propsy: columns (konfigurowalne), data (typ generyczny), onSort, onRowClick
3. Dodaj sortowalne nagłówki kolumn ze wskaźnikami rosnąco/malejąco
4. Stan ładowania: szkieletowe wiersze pasujące do szerokości kolumn
5. Stan pusty: wycentrowana wiadomość z ikoną
6. Responsywne: przewijanie poziome na mobile z pierwszą kolumną sticky
7. Użyj naszych tokenów systemu projektowego z .cursor/rules
To jest domyślnie React Server Component. Jeśli potrzebna jest interaktywność
(sortowanie, kliknięcia wierszy), wyodrębnij tylko interaktywne części do komponentu klienta.

Formularze to miejsce, gdzie kod wygenerowany przez AI oszczędza najwięcej czasu — boilerplate schematów walidacji, komunikatów błędów, stanów ładowania i typów pól jest żmudny, ale mechaniczny.

Dla layoutów pełnych stron podaj screenshot i określ zachowanie responsywne explicite, ponieważ AI nie może wywnioskować twojego projektu mobile ze screenshotu desktop.

[wklej screenshot layoutu dashboardu z Figma]
Zbuduj layout dashboardu w src/app/dashboard/layout.tsx:
1. Desktop (lg+): stały sidebar (w-64) po lewej, główny obszar treści po prawej
2. Tablet (md): zwijany sidebar, który nakłada się na treść jako sheet z lewej
3. Mobile (sm): brak sidebara, dolny pasek nawigacji z 5 przyciskami ikon
4. Sidebar ma: obszar logo, linki nawigacyjne z ikonami, awatar użytkownika + nazwa na dole
5. Główny obszar treści ma górny pasek z: breadcrumbs, input wyszukiwania, dzwonek powiadomień, menu użytkownika
6. Obszar treści przewija się niezależnie od sidebara
7. Aktywny link sidebara ma wskaźnik lewej krawędzi i podświetlenie tła
Użyj responsywnych prefiksów Tailwind konsekwentnie. Przetestuj, że layout nie
psuje się przy breakpointach 768px i 1024px konkretnie.

Gdy początkowy komponent jest wygenerowany, użyj Cmd+K (edycja inline) do udoskonaleń wizualnych. To szybsze niż tryb Agent dla małych zmian CSS, ponieważ pętla feedbacku jest natychmiastowa.

Zaznacz konkretny JSX, który chcesz dostosować, naciśnij Cmd+K i opisz zmianę:

Luka między nagłówkiem tabeli a pierwszym wierszem jest zbyt duża. Zmniejsz ją z
py-4 do py-2 na komórkach thead i zmień tło nagłówka z gray-100
na gray-50, aby było bardziej subtelne.

Dla rozbieżności wizualnych, które są trudne do opisania słowami, zrób screenshot side-by-side projektu Figma i swojej implementacji, wklej go do czatu Agenta i zapytaj:

[wklej obraz porównania side-by-side]
Lewa strona to projekt Figma. Prawa strona to moja obecna implementacja.
Napraw różnice -- odstępy między kartami są zbyt duże, cień jest
zbyt mocny, a border radius powinien być większy.

Warstwa finałowego polotu często jest pomijana pod presją deadline’u, ale robi ogromną różnicę w postrzeganej jakości.

Jeśli twój zespół intensywnie używa Figmy, serwer MCP Figma pozwala Cursorowi czytać pliki projektowe bezpośrednio zamiast polegać na screenshotach. Skonfiguruj to w .cursor/mcp.json:

{
"mcpServers": {
"figma": {
"command": "npx",
"args": ["-y", "figma-developer-mcp"],
"env": {
"FIGMA_API_KEY": "twoj-klucz-api-figma"
}
}
}
}

Z serwerem MCP możesz odwoływać się do frame’ów Figma przez URL:

Używając MCP Figma, przeczytaj komponent pod tym URL-em:
https://www.figma.com/file/abc123/Dashboard?node-id=456
Zaimplementuj go jako komponent React zgodnie z naszymi regułami systemu projektowego.
Wyodrębnij dokładne wartości kolorów, odstępów i rozmiarów czcionek z pliku projektowego.

To eliminuje krok screenshota i daje Agentowi dostęp do dokładnych wartości pikseli, tokenów kolorów i odstępów, które screenshoty aproksymują.

Wygenerowane komponenty wyglądają podobnie, ale nie dokładnie. Screenshoty tracą drobne szczegóły przy niższych rozdzielczościach. Przytnij ciasno wokół konkretnego komponentu, użyj screenshotów Retina/2x, jeśli możliwe, i explicite określ wartości, których screenshot nie przekazuje jasno: “Border radius to 12px, cień to shadow-md, font weight to 500.”

Agent używa CSS-in-JS zamiast Tailwind. Jeśli wygenerowany kod zawiera style inline lub styled-components, twoja reguła systemu projektowego nie jest podnoszona. Zweryfikuj, że pole globs w twoim .cursor/rules/design-system.mdc pasuje do ścieżki pliku. Dodaj explicytną instrukcję: “Używaj wyłącznie klas Tailwind CSS. Bez stylów inline.”

Tryb ciemny jest zepsuty. AI czasami generuje style trybu ciemnego, które konfliktują z trybem jasnym. Używaj strategii prefiksu dark: Tailwind konsekwentnie. Dodaj regułę: “Każda klasa koloru musi mieć odpowiedni wariant dark:.” Testuj oba tryby, przełączając motyw systemowy.

Layout responsywny psuje się przy konkretnych breakpointach. AI wybiera standardowe breakpointy Tailwind (sm, md, lg), ale twój projekt może mieć niestandardowe breakpointy. Określ dokładne wartości pikseli: “Sidebar zwija się przy 1024px, nie przy domyślnym lg Tailwind (1024px jest tym samym, ale określ wymaganie explicite).” Dla nietypowych breakpointów dodaj niestandardowe wartości do tailwind.config.ts.

Komponenty są zbyt duże i robią zbyt wiele. Agent czasami generuje 300-liniowe komponenty z całą logiką inline. Odrzuć: “Ten komponent jest zbyt duży. Wyodrębnij nagłówek tabeli do osobnego komponentu, wiersz do innego, a logikę sortowania do niestandardowego hooka.”