# Poyraz UI — AI Consumer Guide
Bu doküman, `poyraz-ui` paketini başka bir React/Next.js projesinde kullanmak isteyen bir geliştiricinin veya bir AI kod asistanının doğrudan okuyup doğru kararlar verebilmesi için hazırlanmıştır.
Amaç: Bir projede UI geliştirirken AI’a bu dosyayı verip “poyraz-ui kullanarak bu ekranı oluştur” dediğinizde, AI’ın doğru import path’lerini, doğru componentleri, doğru variantları, doğru tema yaklaşımını ve doğru tasarım dilini uygulaması.
Referans paket: `poyraz-ui@3.0.2`
---
## 1. AI için kısa talimat
Eğer bu dokümanı bir AI’a vereceksen, aşağıdaki bölümü prompt’un başına koyabilirsin:
```md
Bu projede UI için poyraz-ui kullan.
Kurallar:
- React componentleri için `poyraz-ui/atoms`, `poyraz-ui/molecules`, `poyraz-ui/organisms` import path’lerini kullan.
- Global CSS’e `@import "poyraz-ui/preset.css";` eklenmiş kabul et; ekli değilse ekle.
- Gereksiz custom CSS yazma. Önce component variantlarını, radius/size/surface/appearance/effect prop’larını ve Tailwind utility classlarını kullan.
- Tasarım dili: minimal, soft, hafif rounded, clean border, mümkün olduğunda gölgesiz, dark-mode uyumlu, semantic token bazlı.
- Buttonlarda varsayılan hover motion için mümkünse `effect="swap"` kullan. Shine/fill/border-draw efektlerini yalnızca bilinçli vurgu için kullan.
- Form, overlay, dropdown, dialog, sheet, tabs, tooltip gibi davranışlı componentlerde poyraz-ui molecule componentlerini kullan; kendi headless implementation’ını yazma.
- Layout seviyesinde Navbar, Sidebar, Footer, AnnouncementBar ve DataTable gerekiyorsa `poyraz-ui/organisms` kullan.
- Componentleri erişilebilir şekilde kur: label/input ilişkisi, keyboard navigation, focus ring, aria-label, dialog title gibi gereklilikleri koru.
```
---
## 2. Poyraz UI nedir?
Poyraz UI; React, Tailwind CSS v4 ve Radix UI temelli, minimal ve soft-glass tasarım diline sahip bir component sistemidir.
Temel karakter:
- Compact ve minimal görünüm
- Clean border ağırlıklı yüzeyler
- Gölge kullanımını minimumda tutan sade tasarım
- Hafif rounded köşeler
- Glass, soft, solid yüzey seçenekleri
- Semantic token sistemi
- Dark mode uyumu
- Radix tabanlı erişilebilir primitives
- Shadcn mantığına yakın source registry desteği
- Npm paketi olarak merkezi kullanım
- Atomic Design yapısı:
- Atoms
- Molecules
- Organisms
- Blocks/templates
---
## 3. Dağıtım modeli
Poyraz UI iki farklı kullanım modelini destekler.
### 3.1. Npm package kullanımı
Merkezi versiyon yönetimi, hızlı kurulum ve paket importları için kullanılır.
```bash
pnpm add poyraz-ui@3
```
```tsx
import { Button, Card, Input } from "poyraz-ui/atoms";
import { Dialog, Tabs } from "poyraz-ui/molecules";
import { Navbar } from "poyraz-ui/organisms";
```
Bu modelde component kaynak kodu projenize kopyalanmaz. Paket güncellendikçe componentler merkezi olarak güncellenir.
### 3.2. Source registry kullanımı
Shadcn tarzı “component’i projeye kopyala, sahiplen ve özelleştir” modeli için kullanılır.
`components.json` içine registry namespace eklenir:
```json
{
"registries": {
"@poyraz": "https://ui.poyrazavsever.com/r/{name}.json"
}
}
```
Örnek component ekleme:
```bash
pnpm dlx shadcn@latest add @poyraz/button
```
Bu yaklaşımda component, projenizin configured `aliases.ui` klasörüne kopyalanır. Çok derin özelleştirme gerekiyorsa bu model tercih edilir.
AI’a tavsiye:
- Proje hızlıca UI geliştirecekse npm package kullan.
- Componentin kodu projede değiştirilecekse registry/source copy kullan.
- Kullanıcı “shadcn gibi kopyalansın” derse source registry modelini öner.
---
## 4. Kurulum
### 4.1. Paket kurulumu
```bash
pnpm add poyraz-ui@3
```
Alternatifler:
```bash
npm install poyraz-ui@3
yarn add poyraz-ui@3
```
### 4.2. Peer dependencies
Zorunlu:
```json
{
"react": ">=18",
"react-dom": ">=18",
"tailwindcss": ">=4"
}
```
Opsiyonel:
- `react-hook-form` — `Form` molecule için
- `@hookform/resolvers` — schema resolver için
- `zod` — form validation için
- `reactive-switcher` — hazır theme objectleriyle dinamik tema için
- `mermaid` — `Mermaid` molecule için
### 4.3. CSS kurulumu
Root global CSS dosyasına ekle:
```css
@import "tailwindcss";
@import "poyraz-ui/preset.css";
```
Next.js App Router örneği:
```tsx
// app/layout.tsx
import "./globals.css";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
```
`poyraz-ui/preset.css` şunları sağlar:
- Semantic color token bridge
- Typography tokenları
- Radius/token mapping
- Motion keyframe ve animation utility’leri
- Dark mode uyumlu CSS variable altyapısı
- Componentlerin beklediği base CSS layer
Bu import yoksa componentler görsel olarak eksik, renksiz veya animasyonsuz görünebilir.
---
## 5. Import stratejisi
Önerilen import path’leri:
```tsx
import { Button, Card, Input } from "poyraz-ui/atoms";
import { Dialog, DropdownMenu, Tabs } from "poyraz-ui/molecules";
import { Navbar, Sidebar, Footer } from "poyraz-ui/organisms";
```
Ana barrel de kullanılabilir:
```tsx
import { Button, Dialog, Navbar } from "poyraz-ui";
```
Fakat AI için öneri:
- Atom seviyesindeki componentleri `poyraz-ui/atoms` üzerinden import et.
- Molecule seviyesindeki componentleri `poyraz-ui/molecules` üzerinden import et.
- Layout ve büyük section componentlerini `poyraz-ui/organisms` üzerinden import et.
- Theme objectleri gerekiyorsa `poyraz-ui/themes` kullan.
Theme import:
```tsx
import { poyrazLightTheme, poyrazDarkTheme, poyrazThemes } from "poyraz-ui/themes";
```
Utility:
```tsx
import { cn } from "poyraz-ui";
```
---
## 6. Tasarım dili
Poyraz UI’ın ana tasarım dili:
- Minimal
- Soft
- Hafif rounded
- Clean border
- Glassy ama abartısız
- Gölgesiz veya çok düşük gölgeli
- Semantic token bazlı
- Form elemanlarında net focus ring
- Overlaylerde kontrollü blur/surface
- Dark mode’da kontrastı koruyan yüzeyler
AI tasarım kararları:
- Büyük gölgelerden kaçın.
- Gereksiz custom border override yazma.
- Kartlarda öncelikle `variant="default"`, `variant="glass"`, `variant="soft"` veya `variant="outline"` kullan.
- Buttonlarda vurgu CTA için `variant="default"`; ikincil CTA için `variant="secondary"`, `variant="outline"` veya `variant="glass"` kullan.
- Radius için genellikle `radius="sm"` veya `radius="md"` tercih et.
- Çok pill/rounded istenmedikçe `radius="full"` kullanma.
- Interactive hover için önce componentin kendi variant/effect prop’larını kullan.
---
## 7. Tema ve token sistemi
Poyraz UI componentleri semantic Tailwind utility’leri ve CSS variable’ları üzerinden çalışır.
Sık kullanılan semantic utility’ler:
```txt
bg-background
bg-card
bg-muted
bg-primary
text-foreground
text-muted-foreground
text-primary
border-border
ring-ring
```
Custom tema yapılacaksa genellikle global CSS’te `--poyraz-*` variable’ları override edilir.
Örnek:
```css
:root {
--poyraz-primary: #dc2626;
--poyraz-radius-md: 0.625rem;
}
.dark {
--poyraz-background: #09090b;
--poyraz-foreground: #fafafa;
}
```
AI için kural:
- Hard-coded renkleri minimumda tut.
- `#dc2626` gibi brand renkleri yalnızca gerçekten brand vurgusu gerekiyorsa kullan.
- Önce `primary`, `muted`, `border`, `foreground`, `card` tokenlarını kullan.
---
## 8. Motion sistemi
Poyraz UI motion sistemi CSS-only yaklaşımı tercih eder.
Button effect’leri:
```tsx
```
Button effect prop değerleri:
```ts
type ButtonEffect = "none" | "shine" | "fill" | "swap" | "border-draw";
type ButtonFillDirection = "right" | "left" | "up" | "down";
type ButtonSwapTarget = "icon" | "label" | "both";
```
AI için motion kuralı:
- Standart CTA için `effect="swap"` kullan.
- Shine efektini premium/brand vurgu için kullan.
- Fill efektini güçlü hover dolum istenirse kullan.
- Border-draw efektini outline butonlarda dekoratif vurgu için kullan.
- Hareketleri erişilebilir tut; animasyonla bilgi verme.
Swap anatomy için önerilen yapı:
```tsx
import { Button, ButtonIcon, ButtonLabel } from "poyraz-ui/atoms";
```
Not:
- `asChild` kullanımı bazı durumlarda özel children yapılarıyla effect anatomy’sini bozabilir.
- Swap effect’in net çalışması için `ButtonLabel` ve `ButtonIcon` doğrudan `Button` içinde kullanılmalıdır.
---
## 9. Atoms
Atoms, en küçük ve temel UI yapı taşlarıdır.
### 9.1. Button
Import:
```tsx
import { Button, ButtonIcon, ButtonLabel } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
Variantlar:
```txt
default
secondary
outline
glass
destructive
soft
ghost
link
```
Size:
```txt
xs
sm
default
lg
icon-sm
icon
icon-lg
```
Radius:
```txt
none
xs
sm
md
lg
xl
2xl
full
```
Effect:
```txt
none
shine
fill
swap
border-draw
```
AI önerisi:
- Primary CTA: `variant="default" effect="swap"`
- Secondary CTA: `variant="secondary" effect="swap"`
- Icon-only: `size="icon"` ve mutlaka `aria-label`
- Loading durumunda `loading` prop kullan.
---
### 9.2. Badge
Import:
```tsx
import { Badge } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
YeniBetaAktif
```
Variantlar:
```txt
default
secondary
outline
glass
info
success
warning
destructive
```
Size:
```txt
sm
default
lg
```
Radius:
```txt
sm
md
full
```
AI önerisi:
- Durum göstergelerinde `success`, `warning`, `destructive`, `info`
- Kategori etiketlerinde `outline` veya `secondary`
- Premium/soft yüzeylerde `glass`
---
### 9.3. Avatar
Import:
```tsx
import { Avatar, AvatarImage, AvatarFallback } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
PA
```
Size:
```txt
xs
sm
default
lg
xl
```
Radius:
```txt
sm
md
lg
full
```
AI önerisi:
- Kullanıcı profilinde `radius="full"`
- Kurumsal logo/avatar gridlerinde `radius="md"` veya `radius="lg"`
---
### 9.4. Card
Import:
```tsx
import {
Card,
CardHeader,
CardTitle,
CardDescription,
CardContent,
CardFooter,
CardAction,
CardImage,
} from "poyraz-ui/atoms";
```
Kullanım:
```tsx
BaşlıkAçıklama metni
İçerik
Footer
```
Variantlar:
```txt
default
outline
glass
soft
ghost
elevated
interactive
bordered
highlight
```
Radius:
```txt
none
md
lg
xl
2xl
```
AI önerisi:
- Genel layout kartı: `variant="default"`
- Cam efektli dashboard: `variant="glass"`
- Subtle info yüzeyi: `variant="soft"`
- Clickable kart: `variant="interactive"`
- Gölge istenmiyorsa `elevated` kullanma.
---
### 9.5. Card variants
Import:
```tsx
import {
BasicContentCard,
ImageContentCard,
HorizontalCard,
ProfileCard,
StatisticCard,
PricingPlanCard,
FeatureCard,
GlassCard,
InteractiveCard,
ExpandableCard,
} from "poyraz-ui/atoms";
```
Kullanım amaçları:
- `BasicContentCard`: başlık, açıklama, aksiyon butonu
- `ImageContentCard`: üstte görsel, altta içerik
- `HorizontalCard`: solda görsel, sağda içerik
- `ProfileCard`: avatar, isim, rol, bio, sosyal aksiyonlar
- `StatisticCard`: KPI/metrik kartı
- `PricingPlanCard`: fiyat planı
- `FeatureCard`: ikon + özellik başlığı + açıklama
- `GlassCard`: glass yüzey kartı
- `InteractiveCard`: hover/interaction odaklı kart
- `ExpandableCard`: açılır/kapanır içerik kartı
AI önerisi:
- Landing page feature grid için `FeatureCard`
- Dashboard KPI için `StatisticCard`
- Pricing ekranı için `PricingPlanCard`
- Portfolio kişi kartı için `ProfileCard`
---
### 9.6. Input
Import:
```tsx
import { Input, InputGroup, InputGroupAddon } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
@
```
Field variantları:
```txt
default
glass
soft
```
Radius:
```txt
none
sm
md
lg
xl
full
```
AI önerisi:
- Normal form alanı: `variant="default"`
- Cam yüzeylerde: `variant="glass"`
- Hafif arka planlı alanlarda: `variant="soft"`
- Icon prefix/suffix için `InputGroup` + `InputGroupAddon`
---
### 9.7. Form Fields
Import:
```tsx
import {
NumberInput,
MaskedInput,
SearchInput,
PhoneInput,
PasswordInput,
UrlInput,
applyInputMask,
} from "poyraz-ui/atoms";
```
Kullanım:
```tsx
console.log(value)} />
console.log(formatted, raw)}
/>
console.log(absoluteUrl)}
/>
console.log(formatted, raw)}
/>
```
AI önerisi:
- Search box için custom input yazma; `SearchInput`
- Telefon için `PhoneInput`
- URL için `UrlInput`
- Şifre için `PasswordInput`
- Basit maskeler için `MaskedInput`
---
### 9.8. Textarea
Import:
```tsx
import { Textarea } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
Variantlar `Input` ile aynıdır:
```txt
default
glass
soft
```
---
### 9.9. Checkbox
Import:
```tsx
import { Checkbox } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
Radix tabanlıdır. Controlled veya uncontrolled kullanılabilir.
---
### 9.10. Radio Group
Import:
```tsx
import { RadioGroup, RadioGroupItem } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
---
### 9.11. Switch
Import:
```tsx
import { Switch } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
AI önerisi:
- Aç/kapat ayarlarında kullan.
- Checkbox yerine boolean ayar toggle’larında tercih et.
---
### 9.12. Label
Import:
```tsx
import { Label } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
AI kuralı:
- Form alanlarına her zaman label ekle.
- Placeholder label’ın yerine geçmez.
---
### 9.13. Separator
Import:
```tsx
import { Separator } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
---
### 9.14. Skeleton
Import:
```tsx
import { Skeleton } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
AI önerisi:
- Veri yüklenirken layout shift azaltmak için kullan.
---
### 9.15. Scroll Area
Import:
```tsx
import { ScrollArea } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
Uzun içerik
```
Props:
```txt
maxHeight?: string | number
orientation?: "vertical" | "horizontal" | "both"
scrollbarSize?: "sm" | "md" | "lg"
```
---
### 9.16. Logo
Import:
```tsx
import { Logo } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
```
Effect:
```txt
none
shine
shine-loop
```
AI önerisi:
- Navbar’da avatar yerine logo gerekiyorsa `Logo` kullan.
- Premium/brand hissi için `effect="shine-loop"` kullanılabilir.
---
### 9.17. Typography ve TextEffect
Import:
```tsx
import { Typography, TextEffect } from "poyraz-ui/atoms";
```
Kullanım:
```tsx
Modern UI sistemi
Açıklama metni
```
Typography variantları:
```txt
display
h1
h2
h3
h4
large
lead
p
body
small
caption
muted
blockquote
list
```
Font:
```txt
primary
secondary
inherit
```
TextEffect variantları:
```txt
none
marker
strike
outline
hand-drawn
contrast
shimmer
gradient
glow
boxed
```
Tone:
```txt
primary
neutral
warning
```
AI önerisi:
- Heading’lerde `Typography` kullan.
- Vurgulu kelimelerde custom span/CSS yerine `TextEffect` kullan.
- Shiny gradient text için `effect="shimmer"` veya `effect="gradient"`.
- Elle çizilmiş underline hissi için `effect="hand-drawn"`.
- Marker vurgusu için `effect="marker"`.
- Hollow text için `effect="outline"`.
---
### 9.18. Background Patterns
Import:
```tsx
import {
PatternDots,
PatternGrid,
PatternLines,
PatternDiagonal,
PatternCross,
PatternCheckerboard,
PatternDiamond,
PatternZigzag,
PatternDashedGrid,
PatternRadial,
} from "poyraz-ui/atoms";
```
Kullanım:
```tsx
İçerik
```
Pattern props:
```txt
color?: string
opacity?: number
size?: number
overlay?: boolean
```
`PatternRadial` props:
```txt
from?: string
to?: string
opacity?: number
overlay?: boolean
```
AI önerisi:
- Hero background veya empty state için kullan.
- Pattern overlay ise parent `relative overflow-hidden` olmalı.
---
## 10. Molecules
Molecules, birkaç atomun birlikte oluşturduğu daha davranışlı UI parçalarıdır.
### 10.1. Accordion
Import:
```tsx
import {
Accordion,
AccordionItem,
AccordionTrigger,
AccordionContent,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
Başlıkİçerik
```
AI önerisi:
- FAQ, settings, detay aç/kapa için kullan.
- Custom collapse state yazma; Radix props kullan.
---
### 10.2. Alert
Import:
```tsx
import { Alert, AlertTitle, AlertDescription } from "poyraz-ui/molecules";
```
Kullanım:
```tsx
BaşarılıKayıt tamamlandı.
```
Variant:
```txt
default
info
success
warning
destructive
```
Appearance:
```txt
inline
outline
glass
soft
filled
```
Motion:
```txt
none
scale
fade
slide
```
Ek props:
```txt
icon?: ReactNode
dismissible?: boolean
onDismiss?: () => void
dismissLabel?: string
```
AI önerisi:
- Inline bilgilendirme: `appearance="inline"`
- Form/global feedback: `appearance="soft"` veya `appearance="outline"`
- Kritik hata: `variant="destructive"`
---
### 10.3. Tooltip
Import:
```tsx
import {
Tooltip,
TooltipTrigger,
TooltipContent,
TooltipProvider,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
Ayarlar
```
Surface:
```txt
solid
soft
glass
```
Radius:
```txt
none
sm
md
lg
xl
```
AI önerisi:
- Icon-only butonlarda tooltip kullan.
- Tooltip içeriğini kısa tut.
---
### 10.4. Popover
Import:
```tsx
import { Popover, PopoverTrigger, PopoverContent } from "poyraz-ui/molecules";
```
Kullanım:
```tsx
Filtre içeriği
```
AI önerisi:
- Küçük floating panel için Popover.
- Büyük panel gerekiyorsa Sheet veya Dialog.
---
### 10.5. Hover Card
Import:
```tsx
import { HoverCard, HoverCardTrigger, HoverCardContent } from "poyraz-ui/molecules";
```
Kullanım:
```tsx
Poyraz
Profil özeti
```
AI önerisi:
- Profil preview, link preview, mini context kartları için kullan.
---
### 10.6. Dropdown Menu
Import:
```tsx
import {
DropdownMenu,
DropdownMenuTrigger,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuCheckboxItem,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuShortcut,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
HesapProfilAyarlarÇıkış
```
AI önerisi:
- Click menu için DropdownMenu.
- Hover-only mega menu gerekiyorsa Navbar organism altındaki menu parçalarını düşün.
- Social dropdown gibi sade menülerde `surface="solid"` kullan.
---
### 10.7. Select
Import:
```tsx
import {
Select,
SelectTrigger,
SelectValue,
SelectContent,
SelectGroup,
SelectLabel,
SelectItem,
SelectSeparator,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
```
AI önerisi:
- Native select yerine bu componenti kullan.
- Form içinde `FormField` ile birlikte kullanılabilir.
---
### 10.8. Dialog
Import:
```tsx
import {
Dialog,
DialogTrigger,
DialogContent,
DialogHeader,
DialogTitle,
DialogDescription,
DialogFooter,
DialogClose,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
```
AI önerisi:
- Kritik confirmation veya küçük modal akışlarında Dialog.
- Her Dialog içinde görünür veya `sr-only` title bulundur.
---
### 10.9. Modal
Import:
```tsx
import {
Modal,
ModalTrigger,
ModalContent,
ModalHeader,
ModalTitle,
ModalDescription,
ModalFooter,
ModalClose,
} from "poyraz-ui/molecules";
```
Modal, Dialog’a benzer fakat Poyraz UI’ın daha opinionated modal surface/size yaklaşımını sunar.
AI önerisi:
- Uygulama içi custom modal tasarımları için Modal.
- Radix-like standart kullanım için Dialog.
---
### 10.10. Sheet
Import:
```tsx
import {
Sheet,
SheetTrigger,
SheetContent,
SheetHeader,
SheetTitle,
SheetDescription,
SheetFooter,
SheetClose,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
DetaylarEk bilgiler
```
AI önerisi:
- Sağdan açılan ayar, filtre, detay paneli için Sheet.
- Mobilde full-screen hissi gereken yan paneller için uygun.
---
### 10.11. Drawer
Import:
```tsx
import {
Drawer,
DrawerTrigger,
DrawerContent,
DrawerHeader,
DrawerTitle,
DrawerDescription,
DrawerFooter,
DrawerClose,
} from "poyraz-ui/molecules";
```
Drawer `vaul` tabanlıdır.
AI önerisi:
- Mobil bottom sheet davranışı için Drawer.
- Desktop side panel için Sheet tercih et.
---
### 10.12. Command Palette
Import:
```tsx
import {
CommandPalette,
CommandPaletteTrigger,
CommandPaletteContent,
CommandPaletteInput,
CommandPaletteList,
CommandPaletteGroup,
CommandPaletteItem,
CommandPaletteEmpty,
CommandPaletteSeparator,
CommandPaletteFooter,
useCommandPalette,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
Sonuç yok.DashboardAyarlar⌘K ile aç
```
AI önerisi:
- Global search/command menu için kullan.
- Navbar search butonuna bağlanabilir.
---
### 10.13. Tabs
Import:
```tsx
import { Tabs, TabsList, TabsTrigger, TabsContent } from "poyraz-ui/molecules";
```
Kullanım:
```tsx
GenelAyarlarGenel içerikAyarlar içeriği
```
AI önerisi:
- Nav link görünümü için de Tabs yapısı kullanılabilir.
- Sayfa içi section switching için uygundur.
---
### 10.14. Breadcrumb
Import:
```tsx
import {
Breadcrumb,
BreadcrumbList,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbPage,
BreadcrumbSeparator,
BreadcrumbEllipsis,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
Ana sayfaProjeler
```
---
### 10.15. Pagination
Import:
```tsx
import {
Pagination,
PaginationContent,
PaginationItem,
PaginationLink,
PaginationPrevious,
PaginationNext,
PaginationEllipsis,
} from "poyraz-ui/molecules";
```
Kullanım:
```tsx
2
```
---
### 10.16. Sonner / Toaster
Import:
```tsx
import { Toaster, toast } from "poyraz-ui/molecules";
```
Root layout:
```tsx
{children}
```
Toast:
```tsx
toast.success("Kaydedildi");
toast.error("Bir hata oluştu");
toast.promise(save(), {
loading: "Kaydediliyor...",
success: "Kaydedildi",
error: "Kaydedilemedi",
});
```
AI önerisi:
- Form submit sonrası global feedback için toast kullan.
- Inline hata için Alert/FormMessage kullan.
---
### 10.17. Form
Import:
```tsx
import {
Form,
FormField,
FormItem,
FormLabel,
FormControl,
FormDescription,
FormMessage,
} from "poyraz-ui/molecules";
```
`react-hook-form` ile kullanılır.
Kullanım:
```tsx
```
AI önerisi:
- Validasyonlu formlarda bu yapı dışına çıkma.
- `FormMessage` kullanarak hata mesajlarını erişilebilir yap.
---
### 10.18. Calendar
Import:
```tsx
import { Calendar } from "poyraz-ui/molecules";
```
Kullanım:
```tsx
```
Mode:
```txt
single
range
```
AI önerisi:
- Inline takvim için Calendar.
- Input ile açılan tarih seçimi için DatePicker.
---
### 10.19. Date Picker
Import:
```tsx
import { DatePicker } from "poyraz-ui/molecules";
```
Kullanım:
```tsx
```
AI önerisi:
- Form tarih alanı için DatePicker kullan.
---
### 10.20. Autocomplete
Import:
```tsx
import { Autocomplete } from "poyraz-ui/molecules";
```
Kullanım:
```tsx
```
AI önerisi:
- Select gibi ama arama/filter gerekiyorsa Autocomplete.
---
### 10.21. Mermaid
Import:
```tsx
import { Mermaid } from "poyraz-ui/molecules";
```
Kullanım:
```tsx
B[Build]
B --> C[Ship]
`}
/>
```
Not:
- `mermaid` peer dependency gerektirir.
---
### 10.22. Card Templates
Import:
```tsx
import {
ArticleCard,
ImageCard,
NewsCard,
StatsCard,
TestimonialCard,
PricingCard,
ProductCard,
StarRating,
} from "poyraz-ui/molecules";
```
#### ArticleCard
Blog/article kartları için:
```tsx
```
#### ImageCard
Görsel ağırlıklı proje/portfolio kartları için:
```tsx
```
#### NewsCard
Yatay haber/post listeleri için:
```tsx
```
#### StatsCard
Dashboard metrikleri için:
```tsx
```
#### TestimonialCard
Referans/yorum kartı:
```tsx
```
#### PricingCard
Fiyatlandırma:
```tsx
Choose Plan}
/>
```
#### ProductCard
E-commerce ürün kartı:
```tsx
```
#### StarRating
Yıldız rating:
```tsx
```
AI önerisi:
- Blog için `ArticleCard` veya `NewsCard`
- Projeler için `ImageCard`
- Dashboard KPI için `StatsCard`
- Referanslar için `TestimonialCard`
- Pricing sayfası için `PricingCard`
- Ürün gridleri için `ProductCard`
---
## 11. Organisms
Organisms, kompleks layout ve app shell parçalarıdır.
### 11.1. Navbar
Import:
```tsx
import {
Navbar,
NavbarTopBar,
NavbarTopBarSection,
NavbarMain,
NavbarBrand,
NavbarLinks,
NavbarLink,
NavbarDropdown,
NavbarDropdownTrigger,
NavbarMegaMenu,
NavbarMegaMenuLinks,
NavbarMegaMenuFeatured,
NavbarMegaMenuItem,
NavbarPopoverDropdown,
NavbarPopoverDropdownItem,
NavbarPanelDropdown,
NavbarPanelDropdownItem,
NavbarActions,
NavbarMobileToggle,
NavbarMobileMenu,
NavbarMobileLink,
NavbarMobileGroup,
NavbarMobileActions,
NavbarMobileDropdown,
NavbarMobileDrillMenu,
NavbarMobileDrillTrigger,
NavbarMobileDrillPanel,
NavbarSearch,
NavbarDivider,
} from "poyraz-ui/organisms";
```
Basit kullanım:
```tsx
}>
App
DocsComponents
```
AI önerisi:
- Ana site navbarı için Navbar organism kullan.
- Logo için mümkünse `Logo` atom veya `NavbarBrand` kullan.
- Linkler solda, actionlar sağda olacaksa `NavbarMain` içinde `NavbarBrand` + `NavbarLinks` + `NavbarActions`.
- Mobil menü gerekiyorsa `NavbarMobileToggle` + `NavbarMobileMenu`.
- Global search gerekiyorsa `NavbarSearch` veya `CommandPalette` ile birlikte kullan.
---
### 11.2. Sidebar
Import:
```tsx
import {
Sidebar,
SidebarProvider,
SidebarPanel,
SidebarHeader,
SidebarBranding,
SidebarContent,
SidebarGroup,
SidebarGroupLabel,
SidebarSection,
SidebarMenu,
SidebarMenuItem,
SidebarMenuAction,
SidebarSeparator,
SidebarBadge,
SidebarFooter,
SidebarTrigger,
SidebarRail,
SidebarSearch,
SidebarSubMenu,
SidebarSubMenuItem,
SidebarUserProfile,
} from "poyraz-ui/organisms";
```
Kullanım:
```tsx
}>
Dashboard
}>
Settings
```
Sidebar variantları:
```txt
default
collapsible
floating
mini
dark
bordered
inset
```
AI önerisi:
- Dashboard layoutlarında SidebarProvider kullan.
- Collapsible sidebar için `variant="collapsible"`.
- Compact icon sidebar için `variant="mini"`.
- Mobile drawer ihtiyacı için Sidebar mobile state veya Sheet ile kombinasyon.
---
### 11.3. Footer
Import:
```tsx
import {
Footer,
FooterGrid,
FooterSection,
FooterHeading,
FooterLink,
FooterBrand,
FooterSocials,
FooterSocialLink,
FooterDivider,
FooterBottom,
FooterBottomLinks,
FooterDescription,
FooterBadge,
FooterLinkGroup,
FooterCTA,
FooterApp,
FooterAppLink,
FooterNewsletter,
} from "poyraz-ui/organisms";
```
Kullanım:
```tsx
```
Footer variantları:
```txt
minimal
compact
full
branded
centered
dark
```
AI önerisi:
- Landing page footer: `variant="minimal"` veya `variant="branded"`
- App footer: `variant="compact"`
- Koyu section footer: `variant="dark"`
---
### 11.4. Announcement Bar
Import:
```tsx
import { AnnouncementBar } from "poyraz-ui/organisms";
```
Kullanım:
```tsx
}
action={}
>
Yeni sürüm yayında!
```
Variantlar:
```txt
default
info
success
warning
branded
danger
```
AI önerisi:
- Site-wide duyuru için kullan.
- Dismiss state gerekiyorsa caller state yönetmeli veya kendi persistence hook’unu kullanmalı.
---
### 11.5. Data Table
Import:
```tsx
import { DataTable, DataTableCore, type DataTableColumnDef } from "poyraz-ui/organisms";
```
Kullanım:
```tsx
type User = {
id: string;
name: string;
email: string;
role: string;
};
const columns: DataTableColumnDef[] = [
{ id: "name", header: "Name", accessorKey: "name", sortable: true },
{ id: "email", header: "Email", accessorKey: "email" },
{ id: "role", header: "Role", accessorKey: "role", filterable: true },
];
row.id}
searchable
selectable
columnToggle
pageSize={10}
surface="solid"
radius="md"
/>
```
DataTable props özeti:
```txt
columns
data
getRowId
pageSize
pagination
searchable
searchPlaceholder
selectable
onSelectionChange
columnToggle
className
caption
emptyMessage
loading
error
stickyHeader
tableMaxHeight
density
surface
radius
toolbar
```
Density:
```txt
compact
default
spacious
```
Surface:
```txt
solid
soft
glass
```
AI önerisi:
- Basit tablo için DataTable.
- Kendi pagination/search/sort yazma.
- Daha kontrollü state gerekiyorsa DataTableCore kullan.
---
## 12. Blocks ve hazır template mantığı
Registry içinde ayrıca block/template yapıları bulunur. Bunlar npm export’larından ziyade source registry üzerinden projeye kopyalanması hedeflenen daha büyük UI parçalarıdır.
Blocks:
- `article-card`
- `image-card`
- `news-card`
- `stats-card`
- `testimonial-card`
- `pricing-card`
- `product-card`
- `navigation-block`
- `mobile-navigation-block`
- `mega-menu-block`
- `mobile-sidebar-block`
- `footer-blocks`
- `dashboard-shell-block`
- `glass-app-shell-block`
- `auth-card-block`
- `pricing-block`
- `brand-hero-block`
- `smart-dashboard-block`
AI önerisi:
- Kullanıcı “tam section tasarla” derse block mantığını öner.
- Kullanıcı npm package ile ilerliyorsa molecule/organism componentleriyle aynı section’ı elle oluştur.
- Kullanıcı “source-owned olsun” derse shadcn registry komutuyla block eklemeyi öner.
Örnek:
```bash
pnpm dlx shadcn@latest add @poyraz/brand-hero-block
pnpm dlx shadcn@latest add @poyraz/dashboard-shell-block
```
---
## 13. Sık kullanılan layout reçeteleri
### 13.1. Landing hero
```tsx
import { Button, ButtonIcon, ButtonLabel, Card, TextEffect, Typography } from "poyraz-ui/atoms";
export function Hero() {
return (
Modern soft UI sistemi
React projeleri için minimal, token bazlı ve erişilebilir componentler.