@logosphere-ui/core 0.0.0-alpha.5 → 0.0.0-alpha.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1204 -0
- package/dist/AGENTS.md +1204 -0
- package/dist/accordion-CYuCj7nB.cjs +21 -0
- package/dist/accordion-cDabqwu6.js +96 -0
- package/dist/accordion.cjs +1 -0
- package/dist/accordion.js +4 -0
- package/dist/atoms/Badge/badge.d.ts +1 -1
- package/dist/atoms/Button/button.d.ts +5 -3
- package/dist/atoms/Checkbox/checkbox.d.ts +13 -3
- package/dist/atoms/FormField/formfield.d.ts +12 -0
- package/dist/atoms/Slider/index.d.ts +1 -0
- package/dist/atoms/Slider/slider.d.ts +54 -0
- package/dist/badge-BhINg1p5.js +72 -0
- package/dist/badge-CKSG_MyA.cjs +13 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/breadcrumb-BOuCLUJh.cjs +12 -0
- package/dist/breadcrumb-BeJqq-5C.js +41 -0
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/button-CVkIa7M0.js +58 -0
- package/dist/button-vdNReBMi.cjs +10 -0
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/calendar-C71sj3Ki.js +652 -0
- package/dist/calendar-DZJM5Tyu.cjs +88 -0
- package/dist/calendar.cjs +1 -0
- package/dist/calendar.js +4 -0
- package/dist/{card-CUhlTJyJ.js → card-C7xXMV3h.js} +26 -25
- package/dist/card-DmQRNKtk.cjs +43 -0
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/chatbot-BAou4THb.cjs +183 -0
- package/dist/chatbot-BRfqXYYt.js +564 -0
- package/dist/chatbot.cjs +1 -1
- package/dist/chatbot.js +2 -2
- package/dist/checkbox-BAbPDN6x.cjs +53 -0
- package/dist/checkbox-CTfbav6M.js +152 -0
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/chip-group-D4DwnC37.cjs +26 -0
- package/dist/chip-group-DzfOd6Vw.js +89 -0
- package/dist/chip-group.cjs +1 -0
- package/dist/chip-group.js +4 -0
- package/dist/collapse-CbRE8ABx.cjs +47 -0
- package/dist/collapse-DY6SJ9jS.js +141 -0
- package/dist/collapse.cjs +1 -0
- package/dist/collapse.js +4 -0
- package/dist/combobox-BAa3UAQs.cjs +113 -0
- package/dist/combobox-BR05Tgfd.js +460 -0
- package/dist/combobox.cjs +1 -1
- package/dist/combobox.js +1 -1
- package/dist/datepicker-BFYWQRrJ.js +382 -0
- package/dist/datepicker-BWE4qDJM.cjs +85 -0
- package/dist/datepicker.cjs +1 -1
- package/dist/datepicker.js +2 -2
- package/dist/{download-manager-A4fOxGWJ.js → download-manager-BPg-6Qfg.js} +4 -4
- package/dist/download-manager-DDeTYRPs.cjs +97 -0
- package/dist/download-manager.cjs +1 -1
- package/dist/download-manager.js +1 -1
- package/dist/drawer-CRu4G2zu.cjs +32 -0
- package/dist/drawer-DhuBPWHP.js +114 -0
- package/dist/drawer.cjs +1 -0
- package/dist/drawer.js +4 -0
- package/dist/formfield-JXiv9mvJ.cjs +33 -0
- package/dist/formfield-ss2mFweu.js +161 -0
- package/dist/formfield.cjs +1 -1
- package/dist/formfield.js +1 -1
- package/dist/icon.cjs +1 -0
- package/dist/icon.js +4 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +15 -0
- package/dist/index.js +65 -32
- package/dist/index.umd.js +1613 -521
- package/dist/input-DyLKo7h6.cjs +60 -0
- package/dist/input-N3Z8D7q1.js +278 -0
- package/dist/input-group-C6sA1lzj.cjs +5 -0
- package/dist/input-group-DUPlrpug.js +66 -0
- package/dist/input-group.cjs +1 -0
- package/dist/input-group.js +4 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/left-menu.cjs +1 -0
- package/dist/left-menu.js +5 -0
- package/dist/leftmenu-DiKo8iud.cjs +120 -0
- package/dist/leftmenu-DlU_G4Sj.js +373 -0
- package/dist/modal-g3KbWncV.cjs +84 -0
- package/dist/modal-vSjEpYrG.js +250 -0
- package/dist/modal.cjs +1 -1
- package/dist/modal.js +1 -1
- package/dist/molecules/Accordion/accordion.d.ts +42 -0
- package/dist/molecules/Accordion/index.d.ts +2 -0
- package/dist/molecules/Chip/chip-group.d.ts +29 -0
- package/dist/molecules/Chip/index.d.ts +2 -0
- package/dist/molecules/Collapse/collapse.d.ts +42 -0
- package/dist/molecules/Collapse/index.d.ts +2 -0
- package/dist/molecules/Input/input.d.ts +24 -1
- package/dist/molecules/InputGroup/index.d.ts +1 -0
- package/dist/molecules/InputGroup/input-group.d.ts +40 -0
- package/dist/molecules/Pagination/index.d.ts +1 -0
- package/dist/molecules/Pagination/pagination.d.ts +60 -0
- package/dist/molecules/Popover/popover.d.ts +5 -0
- package/dist/molecules/SplitButton/index.d.ts +2 -0
- package/dist/molecules/SplitButton/split-button.d.ts +53 -0
- package/dist/molecules/Stepper/index.d.ts +2 -0
- package/dist/molecules/Stepper/stepper.d.ts +34 -0
- package/dist/molecules/Textarea/text-area.d.ts +5 -2
- package/dist/molecules/TimePicker/index.d.ts +2 -0
- package/dist/molecules/TimePicker/timepicker.d.ts +62 -0
- package/dist/organisms/Calendar/calendar.d.ts +54 -0
- package/dist/organisms/Calendar/index.d.ts +1 -0
- package/dist/organisms/Calendar/shared.d.ts +9 -0
- package/dist/organisms/Chatbot/chatbot.d.ts +10 -1
- package/dist/organisms/Chatbot/index.d.ts +1 -1
- package/dist/organisms/Combobox/combobox.d.ts +39 -0
- package/dist/organisms/DatePicker/datepicker.d.ts +35 -33
- package/dist/organisms/Drawer/drawer.d.ts +30 -0
- package/dist/organisms/Drawer/index.d.ts +1 -0
- package/dist/organisms/LeftMenu/index.d.ts +2 -0
- package/dist/organisms/LeftMenu/leftmenu-types.d.ts +24 -0
- package/dist/organisms/LeftMenu/leftmenu.d.ts +60 -0
- package/dist/organisms/Modal/modal.d.ts +29 -4
- package/dist/organisms/Tab/tab.d.ts +13 -1
- package/dist/organisms/Toast/index.d.ts +2 -0
- package/dist/organisms/Toast/toast-container.d.ts +42 -0
- package/dist/organisms/Toast/toast.d.ts +48 -0
- package/dist/organisms/TreeMenu/index.d.ts +1 -0
- package/dist/organisms/TreeMenu/tree-menu.d.ts +59 -0
- package/dist/pagination-CjXvpE2j.js +360 -0
- package/dist/pagination-Nnzacqdo.cjs +169 -0
- package/dist/pagination.cjs +1 -0
- package/dist/pagination.js +4 -0
- package/dist/popover-CrXUbUR-.cjs +30 -0
- package/dist/popover-M5ZcS5rj.js +161 -0
- package/dist/popover.cjs +1 -1
- package/dist/popover.js +1 -1
- package/dist/shared/icons/index.d.ts +1 -0
- package/dist/shared/types/button.types.d.ts +7 -0
- package/dist/slider-DSRs5uhl.cjs +108 -0
- package/dist/slider-ntLRajQa.js +280 -0
- package/dist/slider.cjs +1 -0
- package/dist/slider.js +4 -0
- package/dist/split-button-BdBweoip.js +177 -0
- package/dist/split-button-BpffPlVg.cjs +63 -0
- package/dist/split-button.cjs +1 -0
- package/dist/split-button.js +4 -0
- package/dist/stepper-CZhwgLNp.js +122 -0
- package/dist/stepper-ZOMaU6aZ.cjs +52 -0
- package/dist/stepper.cjs +1 -0
- package/dist/stepper.js +4 -0
- package/dist/styles/main.css +186 -182
- package/dist/switch-Do6SCkPJ.cjs +17 -0
- package/dist/switch-uYVuohJ-.js +68 -0
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/tab-BvRVHpWs.cjs +41 -0
- package/dist/tab-Byh4UgFB.js +204 -0
- package/dist/tab.cjs +1 -1
- package/dist/tab.js +1 -1
- package/dist/text-area-1rALZ0iy.js +239 -0
- package/dist/text-area-D_TYL4_q.cjs +51 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/timepicker-B9l6HN-d.js +320 -0
- package/dist/timepicker-Bpf2d4Nn.cjs +119 -0
- package/dist/timepicker.cjs +1 -0
- package/dist/timepicker.js +4 -0
- package/dist/toast-container-C5qYjInG.js +274 -0
- package/dist/toast-container-D2dyP20J.cjs +64 -0
- package/dist/toast.cjs +1 -0
- package/dist/toast.js +6 -0
- package/dist/tree-menu-BZ7aBC7R.js +237 -0
- package/dist/tree-menu-DDQ_DYl7.cjs +78 -0
- package/dist/tree-menu.cjs +1 -0
- package/dist/tree-menu.js +4 -0
- package/dist/ui-icon-BeR-PaPg.js +75 -0
- package/dist/ui-icon-DWl7I5BQ.cjs +22 -0
- package/package.json +104 -15
- package/dist/badge-BbhaO73N.cjs +0 -13
- package/dist/badge-DE7Tgd8Z.js +0 -71
- package/dist/breadcrumb-B-4yqoJZ.js +0 -41
- package/dist/breadcrumb-Cop-B1J7.cjs +0 -12
- package/dist/button-C1EwOosO.js +0 -58
- package/dist/button-CDRccsk9.cjs +0 -10
- package/dist/card-n8ka8Zk-.cjs +0 -43
- package/dist/chatbot-Da_itUdJ.cjs +0 -160
- package/dist/chatbot-zkxngMRH.js +0 -481
- package/dist/checkbox-7Rb3WKGx.js +0 -119
- package/dist/checkbox-CdDTRdKV.cjs +0 -37
- package/dist/combobox-BJbI-Tgi.js +0 -268
- package/dist/combobox-pmE7bgEL.cjs +0 -99
- package/dist/datepicker-DFJx45C-.js +0 -750
- package/dist/datepicker-b9JGTTMx.cjs +0 -115
- package/dist/download-manager-BSIMTGaK.cjs +0 -97
- package/dist/formfield-D_7NFFoe.cjs +0 -27
- package/dist/formfield-d8fp9FTV.js +0 -118
- package/dist/input-BcnI1w3_.cjs +0 -46
- package/dist/input-Bj_7u8Iv.js +0 -192
- package/dist/modal-Bfc6WQSL.js +0 -110
- package/dist/modal-DQ8VFL-P.cjs +0 -39
- package/dist/popover-B7tCqk3R.js +0 -140
- package/dist/popover-C2p5Pmts.cjs +0 -30
- package/dist/switch-Cpl53nRW.js +0 -64
- package/dist/switch-Rnnn10bn.cjs +0 -17
- package/dist/tab-BKdN4xAz.js +0 -176
- package/dist/tab-DcjAlXzU.cjs +0 -40
- package/dist/text-area-BkHdLnZj.cjs +0 -44
- package/dist/text-area-CC24lj8v.js +0 -204
package/dist/AGENTS.md
ADDED
|
@@ -0,0 +1,1204 @@
|
|
|
1
|
+
# Logosphere UI — Agent Reference
|
|
2
|
+
|
|
3
|
+
> **Bu dosya AI agent'lar için yazılmıştır.**
|
|
4
|
+
> Bir kullanıcı sana ekran görüntüsü/Figma/wireframe verip "bu sayfayı logosphere kullanarak yap" dediğinde, bu dosyadaki bileşenleri, property'leri ve örnekleri kullanarak layout'u oluştur.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Kurulum ve İçe Aktarım
|
|
9
|
+
|
|
10
|
+
```html
|
|
11
|
+
<!-- CDN (tek dosya, tüm bileşenler) -->
|
|
12
|
+
<script type="module" src="node_modules/@logosphere-ui/core/dist/index.js"></script>
|
|
13
|
+
|
|
14
|
+
<!-- Veya yalnızca ihtiyaç duyulan bileşenler -->
|
|
15
|
+
<script type="module" src="node_modules/@logosphere-ui/core/dist/button.js"></script>
|
|
16
|
+
<script type="module" src="node_modules/@logosphere-ui/core/dist/input.js"></script>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
// ES modül import
|
|
21
|
+
import "@logosphere-ui/core";
|
|
22
|
+
// Ya da tekil:
|
|
23
|
+
import "@logosphere-ui/core/button";
|
|
24
|
+
import "@logosphere-ui/core/input";
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Genel Kurallar
|
|
30
|
+
|
|
31
|
+
| Kural | Açıklama |
|
|
32
|
+
|-------|----------|
|
|
33
|
+
| **Property bağlama** | Nesne/dizi/boolean prop'ları `.propName=${value}` ile bağla (Lit); HTML attribute için `propname="value"` |
|
|
34
|
+
| **Boyut değerleri** | `size="default"` veya `size="large"` (bileşene göre `"sm"/"md"/"lg"` de olabilir) |
|
|
35
|
+
| **Variant değerleri** | `variant="default"` veya `variant="subtle"` |
|
|
36
|
+
| **Hata/yardım** | `error="..."` ve `helper="..."` prop'ları tüm form bileşenlerinde mevcuttur |
|
|
37
|
+
| **Disabled/Readonly** | Tüm form bileşenlerinde `disabled` ve `readonly` boolean prop'ları bulunur |
|
|
38
|
+
| **Event dinleme** | `element.addEventListener("change", handler)` veya inline `@change=${handler}` (Lit) |
|
|
39
|
+
| **Birleşik event** | Form bileşenleri (Input, Textarea, Checkbox, Switch, Combobox, DatePicker, TimePicker) ek olarak **`lgsChange`** yayınlar → `detail: { value?, checked?, selected? }`. Bileşene özel eski event'ler aynen korunur |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Tema: Bileşen Token Katmanı
|
|
44
|
+
|
|
45
|
+
Global token'ları (`--color-secondary`, `--spacing-4` vb.) `:root`'ta ezmek **tüm** bileşenleri etkiler. Tek bir bileşeni tema'lamak için aşağıdaki bileşen token'larını kullanın — hepsi ilgili global token'a fallback yapar; hiçbirini tanımlamazsanız davranış değişmez.
|
|
46
|
+
|
|
47
|
+
```css
|
|
48
|
+
/* Örnek: sadece pagination'ı tema'la, diğer bileşenlere dokunma */
|
|
49
|
+
logosphere-pagination {
|
|
50
|
+
--pagination-color: #0a58ca;
|
|
51
|
+
--pagination-padding: 8px 12px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Örnek: eski tasarımın 36px form alanı */
|
|
55
|
+
logosphere-input { --formfield-min-height: 36px; --input-field-height: 20px; }
|
|
56
|
+
|
|
57
|
+
/* Örnek: focus'ta border rengi değişmesin */
|
|
58
|
+
logosphere-input { --formfield-border-color-focus: var(--color-border); }
|
|
59
|
+
|
|
60
|
+
/* Örnek: alan koyu, takvim popup'ı beyaz kalsın */
|
|
61
|
+
logosphere-datepicker { --color-body-bg: #1e1e1e; --datepicker-popup-bg: #ffffff; }
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
| Bileşen | Token | Fallback |
|
|
65
|
+
|---------|-------|----------|
|
|
66
|
+
| FormField | `--formfield-min-height` / `--formfield-min-height-large` | `32px` / `40px` |
|
|
67
|
+
| FormField | `--formfield-border-color` / `--formfield-border-color-focus` | `--color-border` / `--color-body-text` |
|
|
68
|
+
| FormField | `--formfield-border-radius`, `--formfield-border-{top,right,bottom,left}[-width]` | `--radius-base`, `1px solid` |
|
|
69
|
+
| Input | `--input-field-height` / `--input-field-height-large` | `16px` / `24px` |
|
|
70
|
+
| DatePicker | `--datepicker-popup-bg` / `--datepicker-popup-border-color` | `--color-body-bg` / `--color-border` |
|
|
71
|
+
| Pagination | `--pagination-color` / `--pagination-color-disabled` | `--color-secondary` / `--color-secondary-disabled` |
|
|
72
|
+
| Pagination | `--pagination-bg` / `--pagination-item-bg` / `--pagination-item-bg-hover` | `--color-body-bg` / `--color-body-bg` / `--color-body-bg-hover` |
|
|
73
|
+
| Pagination | `--pagination-active-bg` / `--pagination-active-color` | `--color-secondary` / `white` |
|
|
74
|
+
| Pagination | `--pagination-padding` | `--spacing-4 --spacing-6` (mobil: `--spacing-3 --spacing-4`) |
|
|
75
|
+
| Badge (default varyant) | `--badge-bg` / `--badge-color` | `--color-light-bg-2` / `--color-secondary` |
|
|
76
|
+
| Chatbot | `--chatbot-bg` / `--chatbot-color` | `--color-body-bg` / `--color-secondary` |
|
|
77
|
+
| Combobox | `--combobox-tag-bg` / `--combobox-tag-color` / `--combobox-clear-color` | `--color-light` / `--color-body-text` / `--color-secondary` |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Bileşen Kataloğu
|
|
82
|
+
|
|
83
|
+
### ATOMS
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
### `<logosphere-button>`
|
|
88
|
+
|
|
89
|
+
Varyant, boyut ve tema destekli buton.
|
|
90
|
+
|
|
91
|
+
**Properties**
|
|
92
|
+
|
|
93
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
94
|
+
|----------|-----|-----------|---------|
|
|
95
|
+
| `variant` | `"solid" \| "outline" \| "text"` | `"solid"` | Görsel stil |
|
|
96
|
+
| `size` | `"sm" \| "md" \| "lg"` | `"md"` | Boyut |
|
|
97
|
+
| `theme` | `"primary" \| "success" \| "danger" \| "info" \| "warning" \| "light" \| "dark"` | `"primary"` | Renk teması |
|
|
98
|
+
| `iconOnly` | `boolean` | `false` | Yalnızca ikon göster (metin gizlenir) |
|
|
99
|
+
| `disabled` | `boolean` | `false` | Devre dışı bırak |
|
|
100
|
+
|
|
101
|
+
**Slots:** varsayılan (etiket metni), `prefix` (sol ikon), `suffix` (sağ ikon)
|
|
102
|
+
|
|
103
|
+
```html
|
|
104
|
+
<!-- Temel kullanım -->
|
|
105
|
+
<logosphere-button>Kaydet</logosphere-button>
|
|
106
|
+
|
|
107
|
+
<!-- Varyantlar -->
|
|
108
|
+
<logosphere-button variant="outline" theme="danger">Sil</logosphere-button>
|
|
109
|
+
<logosphere-button variant="text" theme="primary">İptal</logosphere-button>
|
|
110
|
+
|
|
111
|
+
<!-- İkon ile -->
|
|
112
|
+
<logosphere-button size="sm">
|
|
113
|
+
<ui-icon slot="prefix" name="uil-check" size="16"></ui-icon>
|
|
114
|
+
Onayla
|
|
115
|
+
</logosphere-button>
|
|
116
|
+
|
|
117
|
+
<!-- Yalnızca ikon -->
|
|
118
|
+
<logosphere-button iconOnly variant="outline">
|
|
119
|
+
<ui-icon name="uil-trash" size="16"></ui-icon>
|
|
120
|
+
</logosphere-button>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### `<logosphere-badge>`
|
|
126
|
+
|
|
127
|
+
Etiket/chip bileşeni; kapatılabilir veya yuvarlak.
|
|
128
|
+
|
|
129
|
+
**Properties**
|
|
130
|
+
|
|
131
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
132
|
+
|----------|-----|-----------|---------|
|
|
133
|
+
| `text` | `string` | `""` | Badge metni |
|
|
134
|
+
| `variant` | `BadgeVariant` | `"default"` | Renk varyantı |
|
|
135
|
+
| `size` | `BadgeSize` | `"default"` | Boyut |
|
|
136
|
+
| `closeable` | `boolean` | `false` | Kapatma (×) butonu göster |
|
|
137
|
+
| `isRound` | `boolean` | `false` | Tam yuvarlak şekil |
|
|
138
|
+
| `onClose` | `() => void` | — | Kapatma callback'i (attribute değil) |
|
|
139
|
+
|
|
140
|
+
**Events:** `close`
|
|
141
|
+
|
|
142
|
+
**Slots:** varsayılan (isteğe bağlı içerik)
|
|
143
|
+
|
|
144
|
+
```html
|
|
145
|
+
<logosphere-badge text="Yeni"></logosphere-badge>
|
|
146
|
+
<logosphere-badge text="Aktif" variant="success" isRound></logosphere-badge>
|
|
147
|
+
<logosphere-badge text="Hata" variant="danger" closeable></logosphere-badge>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### `<logosphere-checkbox>`
|
|
153
|
+
|
|
154
|
+
Onay kutusu, toggle switch veya radio buton.
|
|
155
|
+
|
|
156
|
+
**Properties**
|
|
157
|
+
|
|
158
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
159
|
+
|----------|-----|-----------|---------|
|
|
160
|
+
| `label` | `string` | `""` | Etiket metni |
|
|
161
|
+
| `value` | `string` | `""` | Form değeri |
|
|
162
|
+
| `checked` | `boolean` | `false` | İşaretli mi |
|
|
163
|
+
| `type` | `"checkbox" \| "switch" \| "radio"` | `"checkbox"` | Görünüm tipi |
|
|
164
|
+
| `disabled` | `boolean` | `false` | Devre dışı |
|
|
165
|
+
| `indeterminate` | `boolean` | `false` | Belirsiz durum |
|
|
166
|
+
|
|
167
|
+
**Events:** `lgsChange` → `detail: { checked, indeterminate, value }`
|
|
168
|
+
|
|
169
|
+
> **Kontrollü kullanım:** `checked` property'sine yapılan her dış atama — değer öncekiyle aynı olsa bile — görsel state'i prop'a senkronlar. Parent bir seçimi reddederse (`lgsChange` sonrası `checked`'ı değişmeyen değerle yeniden atarsa) bileşen görsel olarak geri döner; iki radio'nun birden seçili kalması engellenir.
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<logosphere-checkbox label="Beni hatırla" value="remember"></logosphere-checkbox>
|
|
173
|
+
|
|
174
|
+
<!-- Switch görünümü -->
|
|
175
|
+
<logosphere-checkbox type="switch" label="Bildirimleri etkinleştir" checked></logosphere-checkbox>
|
|
176
|
+
|
|
177
|
+
<!-- Radio görünümü: tıklanınca işaretlenir, tekrar tıklamayla kapanmaz.
|
|
178
|
+
Grup davranışı consumer'da yönetilir (lgsChange ile diğerlerinin checked'i kapatılır) -->
|
|
179
|
+
<logosphere-checkbox type="radio" label="Seçenek 1" value="1" checked></logosphere-checkbox>
|
|
180
|
+
<logosphere-checkbox type="radio" label="Seçenek 2" value="2"></logosphere-checkbox>
|
|
181
|
+
|
|
182
|
+
<!-- Event dinleme -->
|
|
183
|
+
<script>
|
|
184
|
+
document.querySelector("logosphere-checkbox")
|
|
185
|
+
.addEventListener("lgsChange", e => console.log(e.detail.checked));
|
|
186
|
+
</script>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### `<logosphere-switch>`
|
|
192
|
+
|
|
193
|
+
Bağımsız toggle switch.
|
|
194
|
+
|
|
195
|
+
**Properties**
|
|
196
|
+
|
|
197
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
198
|
+
|----------|-----|-----------|---------|
|
|
199
|
+
| `checked` | `boolean` | `false` | Açık mı |
|
|
200
|
+
| `disabled` | `boolean` | `false` | Devre dışı |
|
|
201
|
+
| `size` | `"sm" \| "md"` | `"md"` | Boyut |
|
|
202
|
+
|
|
203
|
+
**Events:** `change` → `detail: { checked }`, `lgsChange` → `detail: { checked }`
|
|
204
|
+
|
|
205
|
+
```html
|
|
206
|
+
<logosphere-switch></logosphere-switch>
|
|
207
|
+
<logosphere-switch checked size="sm"></logosphere-switch>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### `<logosphere-formfield>`
|
|
213
|
+
|
|
214
|
+
Tüm form kontrolleri için temel sarmalayıcı; etiket, hata/yardım, kenarlıklı konteyner.
|
|
215
|
+
|
|
216
|
+
> Genellikle doğrudan kullanılmaz; `logosphere-input`, `logosphere-textarea` gibi bileşenler içinde otomatik kullanılır. Özel kontrol oluştururken işe yarar.
|
|
217
|
+
|
|
218
|
+
**Properties**
|
|
219
|
+
|
|
220
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
221
|
+
|----------|-----|-----------|---------|
|
|
222
|
+
| `label` | `string` | `""` | Alan etiketi |
|
|
223
|
+
| `helper` | `string` | `""` | Yardım metni (altında gösterilir) |
|
|
224
|
+
| `error` | `string` | `""` | Hata mesajı (kırmızı, helper'ın yerini alır) |
|
|
225
|
+
| `required` | `boolean` | `false` | Zorunlu alan işareti (*) |
|
|
226
|
+
| `disabled` | `boolean` | `false` | Soluklaştır |
|
|
227
|
+
| `readonly` | `boolean` | `false` | Salt okunur stili |
|
|
228
|
+
| `size` | `"default" \| "large"` | `"default"` | Boyut |
|
|
229
|
+
| `variant` | `"default" \| "subtle"` | `"default"` | Stil varyantı |
|
|
230
|
+
| `cursor` | `"text" \| "pointer"` | `"text"` | İmleç tipi |
|
|
231
|
+
| `multiline` | `boolean` | `false` | Textarea modu (daha yüksek) |
|
|
232
|
+
| `forceFocused` | `boolean` | `false` | Odak stilini zorla (TimePicker/DatePicker için) |
|
|
233
|
+
|
|
234
|
+
**Slots:** varsayılan (kontrol), `prefix` (sol), `clear` (temizle butonu), `suffix` (sağ)
|
|
235
|
+
|
|
236
|
+
**Events:** `field-focus`, `field-blur` → `detail: { originalEvent }`
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### MOLECULES
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
### `<logosphere-input>`
|
|
245
|
+
|
|
246
|
+
Metin girişi; maske, parola, temizle ve tüm formfield özellikleri.
|
|
247
|
+
|
|
248
|
+
**Properties**
|
|
249
|
+
|
|
250
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
251
|
+
|----------|-----|-----------|---------|
|
|
252
|
+
| `value` | `string` | `""` | Geçerli değer |
|
|
253
|
+
| `type` | `"text" \| "password" \| "email" \| "number" \| "tel" \| "url" \| "search" \| "date" \| "time"` | `"text"` | Input tipi |
|
|
254
|
+
| `placeholder` | `string` | `""` | Yer tutucu |
|
|
255
|
+
| `name` | `string` | `""` | Form adı |
|
|
256
|
+
| `mask` | `string` | `""` | Giriş maskesi: `0`=rakam, `a`=harf, `*`=rakam/harf, diğerleri literal. Örn: `"(000) 000-0000"`, `"00/00/0000"`, `"00:00"` |
|
|
257
|
+
| `showPasswordToggle` | `boolean` | `true` | `type="password"` iken göster/gizle butonunu render et (attribute: `show-password-toggle`). Şifrenin hiç gösterilmemesi gereken ekranlarda `false` verin |
|
|
258
|
+
| `suppressNativeValidation` | `boolean` | `false` | Tarayıcının yerel (dil bağımlı) `validationMessage`'ının iç hata olarak gösterilmesini kapatır (attribute: `suppress-native-validation`). Uygulama kendi hata metnini yönetiyorsa açın |
|
|
259
|
+
| `errorDisplay` | `"always" \| "on-invalid"` | `"always"` | Hata gösterim modu (attribute: `error-display`). `"on-invalid"`: hata yalnızca alan geçersizken görünür — blur/change'de doğrulanır, yazarken temizlenir (vaadin semantiği) |
|
|
260
|
+
| `label` | `string` | `""` | Etiket |
|
|
261
|
+
| `helper` | `string` | `""` | Yardım metni |
|
|
262
|
+
| `error` | `string` | `""` | Hata mesajı |
|
|
263
|
+
| `required` | `boolean` | `false` | Zorunlu |
|
|
264
|
+
| `disabled` | `boolean` | `false` | Devre dışı |
|
|
265
|
+
| `readonly` | `boolean` | `false` | Salt okunur |
|
|
266
|
+
| `size` | `"default" \| "large"` | `"default"` | Boyut |
|
|
267
|
+
| `variant` | `"default" \| "subtle"` | `"default"` | Stil |
|
|
268
|
+
| `minlength` | `number` | — | Min karakter |
|
|
269
|
+
| `maxlength` | `number` | — | Maks karakter |
|
|
270
|
+
| `min` / `max` | `number` | — | Sayısal sınırlar |
|
|
271
|
+
| `pattern` | `string` | `""` | Regex doğrulama |
|
|
272
|
+
| `autocomplete` | `string` | `""` | Tarayıcı otomatik doldurma |
|
|
273
|
+
|
|
274
|
+
**Public Metotlar:** `focus()`, `blur()`, `select()`, `setSelectionRange(start, end)`, `checkValidity()`, `reportValidity()`, `setCustomValidity(msg)`
|
|
275
|
+
|
|
276
|
+
**Events:**
|
|
277
|
+
- `input` → `detail: { value, rawValue, originalEvent }`
|
|
278
|
+
- `change` → `detail: { value, originalEvent }`
|
|
279
|
+
- `clear` (temizle butonuna tıklanınca)
|
|
280
|
+
- `keydown` / `keyup` → `detail: { key, originalEvent }`
|
|
281
|
+
|
|
282
|
+
**Slots:** `prefix` (sol ikon/metin), `suffix` (sağ ikon/buton)
|
|
283
|
+
|
|
284
|
+
```html
|
|
285
|
+
<!-- Temel kullanım -->
|
|
286
|
+
<logosphere-input label="Ad Soyad" placeholder="Adınızı girin"></logosphere-input>
|
|
287
|
+
|
|
288
|
+
<!-- Email, zorunlu, hata -->
|
|
289
|
+
<logosphere-input
|
|
290
|
+
type="email"
|
|
291
|
+
label="E-posta"
|
|
292
|
+
required
|
|
293
|
+
error="Geçersiz e-posta adresi"
|
|
294
|
+
></logosphere-input>
|
|
295
|
+
|
|
296
|
+
<!-- Telefon maskesi -->
|
|
297
|
+
<logosphere-input
|
|
298
|
+
label="Telefon"
|
|
299
|
+
mask="(000) 000-0000"
|
|
300
|
+
placeholder="(555) 000-0000"
|
|
301
|
+
></logosphere-input>
|
|
302
|
+
|
|
303
|
+
<!-- Tarih maskesi -->
|
|
304
|
+
<logosphere-input label="Doğum Tarihi" mask="00/00/0000" placeholder="GG/AA/YYYY"></logosphere-input>
|
|
305
|
+
|
|
306
|
+
<!-- Parola -->
|
|
307
|
+
<logosphere-input type="password" label="Şifre"></logosphere-input>
|
|
308
|
+
|
|
309
|
+
<!-- Prefix/suffix ikon ile -->
|
|
310
|
+
<logosphere-input label="Arama" placeholder="Ara...">
|
|
311
|
+
<ui-icon slot="prefix" name="uil-search" size="16"></ui-icon>
|
|
312
|
+
</logosphere-input>
|
|
313
|
+
|
|
314
|
+
<!-- Subtle varyant (kenarsız, arka plan yok) -->
|
|
315
|
+
<logosphere-input variant="subtle" placeholder="Hızlı arama..."></logosphere-input>
|
|
316
|
+
|
|
317
|
+
<!-- Büyük boyut -->
|
|
318
|
+
<logosphere-input size="large" label="Başlık" placeholder="Başlık girin"></logosphere-input>
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
### `<logosphere-textarea>`
|
|
324
|
+
|
|
325
|
+
Çok satırlı metin girişi; otomatik boyutlandırma, karakter sayacı.
|
|
326
|
+
|
|
327
|
+
**Properties**
|
|
328
|
+
|
|
329
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
330
|
+
|----------|-----|-----------|---------|
|
|
331
|
+
| `value` | `string` | `""` | Metin değeri |
|
|
332
|
+
| `placeholder` | `string` | `""` | Yer tutucu |
|
|
333
|
+
| `rows` | `number` | `3` | Başlangıç satır sayısı |
|
|
334
|
+
| `maxRows` | `number` | `8` | autoResize için max satır (sonra scroll) |
|
|
335
|
+
| `maxlength` | `number` | — | Maks karakter (sayaç gösterir) |
|
|
336
|
+
| `autoResize` | `boolean` | `true` | İçeriğe göre otomatik yükseklik |
|
|
337
|
+
| `resize` | `"none" \| "vertical" \| "horizontal" \| "both"` | `"vertical"` | Manuel yeniden boyutlandırma (autoResize=false iken) |
|
|
338
|
+
| `label` | `string` | `""` | Etiket |
|
|
339
|
+
| `helper` | `string` | `""` | Yardım metni |
|
|
340
|
+
| `error` | `string` | `""` | Hata mesajı |
|
|
341
|
+
| `required` | `boolean` | `false` | Zorunlu |
|
|
342
|
+
| `disabled` | `boolean` | `false` | Devre dışı |
|
|
343
|
+
| `readonly` | `boolean` | `false` | Salt okunur |
|
|
344
|
+
| `size` | `"default" \| "large"` | `"default"` | Boyut |
|
|
345
|
+
| `variant` | `"default" \| "subtle"` | `"default"` | Stil |
|
|
346
|
+
|
|
347
|
+
**Events:** `input`, `change`, `clear`, `keydown`, `keyup`, `lgsChange` → `detail: { value }`
|
|
348
|
+
|
|
349
|
+
```html
|
|
350
|
+
<!-- Temel kullanım -->
|
|
351
|
+
<logosphere-textarea label="Açıklama" placeholder="Açıklama girin..."></logosphere-textarea>
|
|
352
|
+
|
|
353
|
+
<!-- Karakter sayacı ile -->
|
|
354
|
+
<logosphere-textarea label="Yorum" maxlength="500" rows="4"></logosphere-textarea>
|
|
355
|
+
|
|
356
|
+
<!-- Manuel resize, auto kapalı -->
|
|
357
|
+
<logosphere-textarea .autoResize=${false} resize="vertical" rows="6"></logosphere-textarea>
|
|
358
|
+
|
|
359
|
+
<!-- Max satır sınırı -->
|
|
360
|
+
<logosphere-textarea label="Not" maxRows="5"></logosphere-textarea>
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
### `<logosphere-breadcrumb>`
|
|
366
|
+
|
|
367
|
+
Navigasyon izleri.
|
|
368
|
+
|
|
369
|
+
**Properties**
|
|
370
|
+
|
|
371
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
372
|
+
|----------|-----|-----------|---------|
|
|
373
|
+
| `items` | `{ label: string; href?: string; active?: boolean }[]` | `[]` | Navigasyon öğeleri |
|
|
374
|
+
|
|
375
|
+
```html
|
|
376
|
+
<logosphere-breadcrumb
|
|
377
|
+
.items=${[
|
|
378
|
+
{ label: "Ana Sayfa", href: "/" },
|
|
379
|
+
{ label: "Ürünler", href: "/products" },
|
|
380
|
+
{ label: "Laptop", active: true }
|
|
381
|
+
]}
|
|
382
|
+
></logosphere-breadcrumb>
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
### `<logosphere-card>`
|
|
388
|
+
|
|
389
|
+
Başlık, içerik ve ayak bölümü olan kart.
|
|
390
|
+
|
|
391
|
+
**Properties**
|
|
392
|
+
|
|
393
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
394
|
+
|----------|-----|-----------|---------|
|
|
395
|
+
| `title` | `string` | `""` | Kart başlığı |
|
|
396
|
+
| `description` | `string` | `""` | Başlık altı açıklama |
|
|
397
|
+
| `header` | `boolean` | `true` | Başlık bölümünü göster |
|
|
398
|
+
| `footer` | `boolean` | `true` | Ayak bölümünü göster |
|
|
399
|
+
| `okLabel` | `string` | `"Tamam"` | Onay butonu etiketi |
|
|
400
|
+
| `cancelLabel` | `string` | `"İptal"` | İptal butonu etiketi |
|
|
401
|
+
| `onOk` | `() => void` | — | Onay callback'i |
|
|
402
|
+
| `onCancel` | `() => void` | — | İptal callback'i |
|
|
403
|
+
|
|
404
|
+
**Events:** `ok`, `cancel`
|
|
405
|
+
|
|
406
|
+
**Slots:** `header` (özel başlık), varsayılan (gövde), `footer` (özel ayak)
|
|
407
|
+
|
|
408
|
+
```html
|
|
409
|
+
<!-- Temel kart -->
|
|
410
|
+
<logosphere-card title="Kullanıcı Bilgileri" description="Profil bilgilerinizi güncelleyin">
|
|
411
|
+
<logosphere-input label="Ad" placeholder="Adınızı girin"></logosphere-input>
|
|
412
|
+
<logosphere-input label="E-posta" type="email"></logosphere-input>
|
|
413
|
+
</logosphere-card>
|
|
414
|
+
|
|
415
|
+
<!-- Onay diyaloğu gibi -->
|
|
416
|
+
<logosphere-card title="Emin misiniz?" okLabel="Evet, Sil" cancelLabel="Hayır">
|
|
417
|
+
Bu işlem geri alınamaz.
|
|
418
|
+
</logosphere-card>
|
|
419
|
+
|
|
420
|
+
<!-- Sadece gövde -->
|
|
421
|
+
<logosphere-card .header=${false} .footer=${false}>
|
|
422
|
+
İçerik buraya
|
|
423
|
+
</logosphere-card>
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
### `<logosphere-popover>`
|
|
429
|
+
|
|
430
|
+
Tetikleyici elemana konumlanmış açılır panel.
|
|
431
|
+
|
|
432
|
+
**Properties**
|
|
433
|
+
|
|
434
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
435
|
+
|----------|-----|-----------|---------|
|
|
436
|
+
| `title` | `string` | `""` | Popover başlığı |
|
|
437
|
+
| `trigger` | `"click" \| "hover"` | `"click"` | Açılma tetikleyicisi |
|
|
438
|
+
| `placement` | Popper Placement | `"bottom"` | Konum (`"top"`, `"bottom"`, `"left"`, `"right"`, `"bottom-start"` vb.) |
|
|
439
|
+
| `offset` | `number` | `8` | Tetikleyiciden mesafe (px) |
|
|
440
|
+
| `open` | `boolean` | `false` | Açık mı (reflect) |
|
|
441
|
+
| `closeOnOutsideClick` | `boolean` | `true` | Dışarı tıklayınca kapat |
|
|
442
|
+
|
|
443
|
+
**Events:** `popover-open`, `popover-close`
|
|
444
|
+
|
|
445
|
+
**Slots:** `trigger` (tetikleyici element), varsayılan (panel içeriği)
|
|
446
|
+
|
|
447
|
+
```html
|
|
448
|
+
<logosphere-popover title="Yardım">
|
|
449
|
+
<logosphere-button slot="trigger" variant="outline">?</logosphere-button>
|
|
450
|
+
Bu alan, kullanıcının tam adını içermelidir.
|
|
451
|
+
</logosphere-popover>
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
### `<logosphere-timepicker>`
|
|
457
|
+
|
|
458
|
+
`HH:MM` formatında saat seçici; hem yazarak hem spinner ile kullanım.
|
|
459
|
+
|
|
460
|
+
**Properties**
|
|
461
|
+
|
|
462
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
463
|
+
|----------|-----|-----------|---------|
|
|
464
|
+
| `value` | `string` | `""` | `"HH:MM"` formatında değer |
|
|
465
|
+
| `label` | `string` | `""` | Etiket |
|
|
466
|
+
| `helper` | `string` | `""` | Yardım metni |
|
|
467
|
+
| `error` | `string` | `""` | Hata mesajı |
|
|
468
|
+
| `placeholder` | `string` | `"__:__"` | Yer tutucu |
|
|
469
|
+
| `required` | `boolean` | `false` | Zorunlu |
|
|
470
|
+
| `disabled` | `boolean` | `false` | Devre dışı |
|
|
471
|
+
| `readonly` | `boolean` | `false` | Salt okunur |
|
|
472
|
+
| `size` | `"default" \| "large"` | `"default"` | Boyut |
|
|
473
|
+
| `variant` | `"default" \| "subtle"` | `"default"` | Stil |
|
|
474
|
+
| `onChange` | `(value: string) => void` | — | Değişim callback'i (attribute değil) |
|
|
475
|
+
|
|
476
|
+
**Events:** `change` → `detail: { value }`, `clear`, `lgsChange` → `detail: { value }`
|
|
477
|
+
|
|
478
|
+
```html
|
|
479
|
+
<!-- Temel kullanım -->
|
|
480
|
+
<logosphere-timepicker label="Başlangıç Saati"></logosphere-timepicker>
|
|
481
|
+
|
|
482
|
+
<!-- Değer ile -->
|
|
483
|
+
<logosphere-timepicker label="Bitiş Saati" value="17:30"></logosphere-timepicker>
|
|
484
|
+
|
|
485
|
+
<!-- Zorunlu, hata ile -->
|
|
486
|
+
<logosphere-timepicker
|
|
487
|
+
label="Toplantı Saati"
|
|
488
|
+
required
|
|
489
|
+
error="Saat seçimi zorunludur"
|
|
490
|
+
></logosphere-timepicker>
|
|
491
|
+
|
|
492
|
+
<!-- Event -->
|
|
493
|
+
<script>
|
|
494
|
+
document.querySelector("logosphere-timepicker")
|
|
495
|
+
.addEventListener("change", e => console.log(e.detail.value)); // "14:30"
|
|
496
|
+
</script>
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
---
|
|
500
|
+
|
|
501
|
+
### ORGANISMS
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
### `<logosphere-combobox>`
|
|
506
|
+
|
|
507
|
+
Seçim kutusu: tekli/çoklu seçim, filtreleme, tag desteği.
|
|
508
|
+
|
|
509
|
+
**Properties**
|
|
510
|
+
|
|
511
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
512
|
+
|----------|-----|-----------|---------|
|
|
513
|
+
| `items` | `Record<string, unknown>[]` | `[]` | Seçenek listesi |
|
|
514
|
+
| `label` | `string` | `""` | Etiket |
|
|
515
|
+
| `helper` | `string` | `""` | Yardım metni |
|
|
516
|
+
| `error` | `string` | `""` | Hata mesajı |
|
|
517
|
+
| `placeholder` | `string` | `"Seçim yapınız"` | Yer tutucu |
|
|
518
|
+
| `multiple` | `boolean` | `false` | Çoklu seçim |
|
|
519
|
+
| `filterable` | `boolean` | `false` | Arama/filtreleme |
|
|
520
|
+
| `required` | `boolean` | `false` | Zorunlu |
|
|
521
|
+
| `disabled` | `boolean` | `false` | Devre dışı |
|
|
522
|
+
| `readOnly` | `boolean` | `false` | Salt okunur |
|
|
523
|
+
| `size` | `"default" \| "large"` | `"default"` | Boyut |
|
|
524
|
+
| `variant` | `"default" \| "subtle"` | `"default"` | Stil |
|
|
525
|
+
| `optionLabel` | `string` | `"label"` | Seçenek nesnesindeki etiket alanı |
|
|
526
|
+
| `optionValue` | `string` | `"value"` | Seçenek nesnesindeki değer alanı |
|
|
527
|
+
| `emptyMessage` | `string` | `"Sonuç yok"` | Sonuç yokken gösterilecek mesaj |
|
|
528
|
+
|
|
529
|
+
**Public Metotlar:** `selectedItems()` → seçili öğe dizisi, `isSelected(item)`, `setSelected(items[])`
|
|
530
|
+
|
|
531
|
+
**Events:** `selected` → `detail: { selected }`, `change` → `detail: { value }`, `lgsChange` → `detail: { value, selected }` (value = primitive `optionValue` değer(ler)i)
|
|
532
|
+
|
|
533
|
+
```html
|
|
534
|
+
<logosphere-combobox
|
|
535
|
+
label="Şehir"
|
|
536
|
+
placeholder="Şehir seçin"
|
|
537
|
+
.items=${[
|
|
538
|
+
{ label: "İstanbul", value: "ist" },
|
|
539
|
+
{ label: "Ankara", value: "ank" },
|
|
540
|
+
{ label: "İzmir", value: "izm" }
|
|
541
|
+
]}
|
|
542
|
+
></logosphere-combobox>
|
|
543
|
+
|
|
544
|
+
<!-- Çoklu, filtrelenebilir -->
|
|
545
|
+
<logosphere-combobox
|
|
546
|
+
label="Etiketler"
|
|
547
|
+
multiple
|
|
548
|
+
filterable
|
|
549
|
+
.items=${tags}
|
|
550
|
+
></logosphere-combobox>
|
|
551
|
+
|
|
552
|
+
<!-- Özel alan adları -->
|
|
553
|
+
<logosphere-combobox
|
|
554
|
+
optionLabel="name"
|
|
555
|
+
optionValue="id"
|
|
556
|
+
.items=${users}
|
|
557
|
+
></logosphere-combobox>
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
### `<logosphere-datepicker>`
|
|
563
|
+
|
|
564
|
+
Tarih seçici; manuel yazma ve takvim popup'ı. `dayjs` tabanlı.
|
|
565
|
+
|
|
566
|
+
**Properties**
|
|
567
|
+
|
|
568
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
569
|
+
|----------|-----|-----------|---------|
|
|
570
|
+
| `value` | `string \| null` | `null` | `"YYYY-MM-DD"` formatında değer |
|
|
571
|
+
| `min` | `string \| null` | `null` | En erken tarih (`"YYYY-MM-DD"`) |
|
|
572
|
+
| `max` | `string \| null` | `null` | En geç tarih |
|
|
573
|
+
| `label` | `string` | `""` | Etiket |
|
|
574
|
+
| `helper` | `string` | `""` | Yardım |
|
|
575
|
+
| `error` | `string` | `""` | Hata |
|
|
576
|
+
| `placeholder` | `string` | `"GG/AA/YYYY"` | Yer tutucu |
|
|
577
|
+
| `required` | `boolean` | `false` | Zorunlu |
|
|
578
|
+
| `disabled` | `boolean` | `false` | Devre dışı |
|
|
579
|
+
| `readonly` | `boolean` | `false` | Salt okunur |
|
|
580
|
+
| `rangeMode` | `boolean` | `false` | Aralık seçimi modu |
|
|
581
|
+
| `rangeStart` | `string \| null` | `null` | Aralık başlangıcı |
|
|
582
|
+
| `rangeEnd` | `string \| null` | `null` | Aralık bitişi |
|
|
583
|
+
| `disabledDays` | `number[]` | `[]` | Devre dışı haftanın günleri (0=Pazar…6=Cumartesi) |
|
|
584
|
+
| `expandFactor` | `number` | `1.05` | Popup genişlik çarpanı |
|
|
585
|
+
| `onChange` | `(value: string) => void` | — | Değişim callback'i |
|
|
586
|
+
| `onRangeChange` | `(range) => void` | — | Aralık callback'i |
|
|
587
|
+
|
|
588
|
+
**Events:** `change` → `detail: { value }`, `rangeChange` → `detail: { start, end }`, `lgsChange` → `detail: { value }`
|
|
589
|
+
|
|
590
|
+
```html
|
|
591
|
+
<!-- Temel kullanım -->
|
|
592
|
+
<logosphere-datepicker label="Tarih"></logosphere-datepicker>
|
|
593
|
+
|
|
594
|
+
<!-- Min/max sınırları -->
|
|
595
|
+
<logosphere-datepicker
|
|
596
|
+
label="Başlangıç Tarihi"
|
|
597
|
+
min="2024-01-01"
|
|
598
|
+
max="2026-12-31"
|
|
599
|
+
value="2025-06-15"
|
|
600
|
+
></logosphere-datepicker>
|
|
601
|
+
|
|
602
|
+
<!-- Aralık modu -->
|
|
603
|
+
<logosphere-datepicker
|
|
604
|
+
label="Tarih Aralığı"
|
|
605
|
+
.rangeMode=${true}
|
|
606
|
+
></logosphere-datepicker>
|
|
607
|
+
|
|
608
|
+
<!-- Hafta sonu kapalı -->
|
|
609
|
+
<logosphere-datepicker
|
|
610
|
+
label="İş Günü"
|
|
611
|
+
.disabledDays=${[0, 6]}
|
|
612
|
+
></logosphere-datepicker>
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
---
|
|
616
|
+
|
|
617
|
+
### `<logosphere-calendar>`
|
|
618
|
+
|
|
619
|
+
Bağımsız takvim bileşeni; ay/yıl görünümü, aralık seçimi.
|
|
620
|
+
|
|
621
|
+
**Properties**
|
|
622
|
+
|
|
623
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
624
|
+
|----------|-----|-----------|---------|
|
|
625
|
+
| `value` | `string \| null` | `null` | Seçili tarih (`"YYYY-MM-DD"`) |
|
|
626
|
+
| `min` / `max` | `string \| null` | `null` | Sınır tarihleri |
|
|
627
|
+
| `disabled` | `boolean` | `false` | Tüm takvim devre dışı |
|
|
628
|
+
| `rangeMode` | `boolean` | `false` | Aralık seçimi |
|
|
629
|
+
| `rangeStart` / `rangeEnd` | `string \| null` | `null` | Aralık uçları |
|
|
630
|
+
| `disabledDays` | `number[]` | `[]` | Devre dışı günler |
|
|
631
|
+
| `closable` | `boolean` | `false` | Kapat butonu göster |
|
|
632
|
+
|
|
633
|
+
**Events:** `change`, `rangeChange`, `calendar-state-change`, `close-request`
|
|
634
|
+
|
|
635
|
+
**Public Metotlar:** `focusGrid()`
|
|
636
|
+
|
|
637
|
+
```html
|
|
638
|
+
<logosphere-calendar value="2025-06-15"></logosphere-calendar>
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
---
|
|
642
|
+
|
|
643
|
+
### `<logosphere-modal>`
|
|
644
|
+
|
|
645
|
+
Tam ekran arka planlı modal diyalog.
|
|
646
|
+
|
|
647
|
+
**Properties**
|
|
648
|
+
|
|
649
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
650
|
+
|----------|-----|-----------|---------|
|
|
651
|
+
| `open` | `boolean` | `false` | Açık mı (reflect) |
|
|
652
|
+
| `title` | `string` | `""` | Modal başlığı |
|
|
653
|
+
| `closeOnEsc` | `boolean` | `true` | Esc ile kapat |
|
|
654
|
+
| `closeOnBackdrop` | `boolean` | `true` | Arka plana tıklayınca kapat |
|
|
655
|
+
| `showBack` | `boolean` | `false` | Geri butonu göster |
|
|
656
|
+
| `showClose` | `boolean` | `false` | Kapat (×) butonu göster |
|
|
657
|
+
|
|
658
|
+
**Public Metotlar:** `openModal()`, `closeModal()`
|
|
659
|
+
|
|
660
|
+
**Events:** `modal-open`, `modal-close`
|
|
661
|
+
|
|
662
|
+
**Slots:** `header`, varsayılan (gövde), `footer`
|
|
663
|
+
|
|
664
|
+
```html
|
|
665
|
+
<logosphere-modal id="my-modal" title="Düzenle" showClose>
|
|
666
|
+
<logosphere-input label="Ad"></logosphere-input>
|
|
667
|
+
<div slot="footer">
|
|
668
|
+
<logosphere-button variant="outline" id="cancel-btn">İptal</logosphere-button>
|
|
669
|
+
<logosphere-button>Kaydet</logosphere-button>
|
|
670
|
+
</div>
|
|
671
|
+
</logosphere-modal>
|
|
672
|
+
|
|
673
|
+
<logosphere-button onclick="document.getElementById('my-modal').openModal()">
|
|
674
|
+
Modal Aç
|
|
675
|
+
</logosphere-button>
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
---
|
|
679
|
+
|
|
680
|
+
### `<logosphere-drawer>`
|
|
681
|
+
|
|
682
|
+
Yan panel; sağdan veya soldan açılır.
|
|
683
|
+
|
|
684
|
+
**Properties**
|
|
685
|
+
|
|
686
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
687
|
+
|----------|-----|-----------|---------|
|
|
688
|
+
| `open` | `boolean` | `false` | Açık mı (reflect) |
|
|
689
|
+
| `title` | `string` | `""` | Panel başlığı |
|
|
690
|
+
| `position` | `"left" \| "right"` | `"right"` | Hangi taraftan açılsın |
|
|
691
|
+
| `width` | `number` | `360` | Genişlik (px) |
|
|
692
|
+
| `closeOnEsc` | `boolean` | `true` | Esc ile kapat |
|
|
693
|
+
| `containerSelector` | `string` | `""` | CSS selector; panel bu eleman içinde konumlanır |
|
|
694
|
+
|
|
695
|
+
**Public Metotlar:** `openDrawer()`, `closeDrawer()`
|
|
696
|
+
|
|
697
|
+
**Events:** `drawer-open`, `drawer-close`
|
|
698
|
+
|
|
699
|
+
**Slots:** `trigger` (açma butonu), varsayılan (panel gövdesi)
|
|
700
|
+
|
|
701
|
+
```html
|
|
702
|
+
<logosphere-drawer title="Filtreler" position="right" width="400">
|
|
703
|
+
<logosphere-button slot="trigger" variant="outline">
|
|
704
|
+
Filtreleri Aç
|
|
705
|
+
</logosphere-button>
|
|
706
|
+
|
|
707
|
+
<logosphere-combobox label="Durum" .items=${statusOptions}></logosphere-combobox>
|
|
708
|
+
<logosphere-datepicker label="Tarih"></logosphere-datepicker>
|
|
709
|
+
<logosphere-button style="width:100%; margin-top:16px">Uygula</logosphere-button>
|
|
710
|
+
</logosphere-drawer>
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
---
|
|
714
|
+
|
|
715
|
+
### `<logosphere-toast>` ve `ToastService`
|
|
716
|
+
|
|
717
|
+
Bildirim mesajı. Genellikle doğrudan kullanmak yerine `ToastService` kullanılır.
|
|
718
|
+
|
|
719
|
+
**`logosphere-toast` Properties**
|
|
720
|
+
|
|
721
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
722
|
+
|----------|-----|-----------|---------|
|
|
723
|
+
| `type` | `"info" \| "success" \| "warning" \| "danger"` | `"info"` | Ikon/renk tipi |
|
|
724
|
+
| `title` | `string` | `""` | Başlık |
|
|
725
|
+
| `text` | `string` | `""` | Açıklama metni |
|
|
726
|
+
| `icon` | `string` | `""` | Özel ikon adı |
|
|
727
|
+
| `closeable` | `boolean` | `true` | Manuel kapatma butonu |
|
|
728
|
+
| `duration` | `number` | `6000` | Otomatik kapanma süresi (ms) |
|
|
729
|
+
| `autoDismiss` | `boolean` | `true` | Otomatik kapat |
|
|
730
|
+
| `action` | `ToastActionConfig` | — | Aksiyon butonu konfigürasyonu |
|
|
731
|
+
|
|
732
|
+
**Events:** `toast-close` → `detail: { reason: "manual" | "auto" }`
|
|
733
|
+
|
|
734
|
+
**`logosphere-toast-container`** — HTML'e ekle, sonra `ToastService` ile kullan:
|
|
735
|
+
|
|
736
|
+
```html
|
|
737
|
+
<!-- Sayfa başına bir kere ekle -->
|
|
738
|
+
<logosphere-toast-container></logosphere-toast-container>
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
```ts
|
|
742
|
+
import { ToastService } from "@logosphere-ui/core";
|
|
743
|
+
|
|
744
|
+
// Kullanım
|
|
745
|
+
ToastService.success("Başarılı", "Kayıt oluşturuldu.");
|
|
746
|
+
ToastService.danger("Hata", "Bir sorun oluştu.");
|
|
747
|
+
ToastService.warning("Uyarı", "Dikkat ediniz.");
|
|
748
|
+
ToastService.info("Bilgi", "Güncelleme mevcut.");
|
|
749
|
+
|
|
750
|
+
// Özel seçenekler
|
|
751
|
+
ToastService.show({
|
|
752
|
+
type: "success",
|
|
753
|
+
title: "Dosya yüklendi",
|
|
754
|
+
text: "belge.pdf başarıyla yüklendi.",
|
|
755
|
+
duration: 4000,
|
|
756
|
+
autoDismiss: true,
|
|
757
|
+
});
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
---
|
|
761
|
+
|
|
762
|
+
### `<logosphere-tab>`
|
|
763
|
+
|
|
764
|
+
Sekme gezinmesi; lazy yükleme desteği.
|
|
765
|
+
|
|
766
|
+
**Properties**
|
|
767
|
+
|
|
768
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
769
|
+
|----------|-----|-----------|---------|
|
|
770
|
+
| `tabs` | `TabItem[]` | `[]` | Sekme konfigürasyonu |
|
|
771
|
+
| `activeTab` | `string` | `""` | Aktif sekme id'si |
|
|
772
|
+
| `lazy` | `boolean` | `true` | İçerikleri lazy yükle |
|
|
773
|
+
| `variant` | `"default" \| "card"` | `"default"` | Görünüm |
|
|
774
|
+
|
|
775
|
+
**`TabItem` yapısı:**
|
|
776
|
+
|
|
777
|
+
```ts
|
|
778
|
+
interface TabItem {
|
|
779
|
+
id: string;
|
|
780
|
+
label: string;
|
|
781
|
+
disabled?: boolean;
|
|
782
|
+
icon?: string; // ui-icon adı
|
|
783
|
+
}
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
**Events:** `tab-change` → `detail: { oldTab, newTab }`
|
|
787
|
+
|
|
788
|
+
**Slots:** Her sekme için `panel-${tab.id}` adlı slot
|
|
789
|
+
|
|
790
|
+
```html
|
|
791
|
+
<logosphere-tab
|
|
792
|
+
.tabs=${[
|
|
793
|
+
{ id: "genel", label: "Genel", icon: "uil-info-circle" },
|
|
794
|
+
{ id: "guvenlik", label: "Güvenlik", icon: "uil-check-circle" },
|
|
795
|
+
{ id: "fatura", label: "Fatura", disabled: true }
|
|
796
|
+
]}
|
|
797
|
+
activeTab="genel"
|
|
798
|
+
>
|
|
799
|
+
<div slot="panel-genel">
|
|
800
|
+
<logosphere-input label="Ad Soyad"></logosphere-input>
|
|
801
|
+
</div>
|
|
802
|
+
<div slot="panel-guvenlik">
|
|
803
|
+
<logosphere-input type="password" label="Mevcut Şifre"></logosphere-input>
|
|
804
|
+
</div>
|
|
805
|
+
</logosphere-tab>
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
---
|
|
809
|
+
|
|
810
|
+
### `<logosphere-leftmenu>`
|
|
811
|
+
|
|
812
|
+
Daraltılabilir kenar çubuğu; data-driven menü ağacı, arama, logo slotları.
|
|
813
|
+
|
|
814
|
+
**Properties**
|
|
815
|
+
|
|
816
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
817
|
+
|----------|-----|-----------|---------|
|
|
818
|
+
| `open` | `boolean` | `false` | Genişletilmiş mi (reflect) |
|
|
819
|
+
| `openWidth` | `number` | `248` | Açık genişlik (px) |
|
|
820
|
+
| `storageKey` | `string` | `"logosphere-leftmenu-state"` | localStorage anahtarı |
|
|
821
|
+
| `items` | `LeftMenuEntry[]` | `[]` | Menü verisi (attribute değil, `.items=${...}`) |
|
|
822
|
+
| `leading` | `boolean` | `true` | Derinlik göstergeleri (bullet / 2px çizgi); menü açıkken geçerli |
|
|
823
|
+
| `defaultExpandedIds` | `string[]` | `[]` | İlk render'da açık node id'leri |
|
|
824
|
+
|
|
825
|
+
**Events:** `item-click` → `detail: { item }`, `width-change` → `detail: { width }`, `toggle-change` → `detail: { open, width, openWidth, closedWidth }`
|
|
826
|
+
|
|
827
|
+
**Slots:** `logo-open`, `toggle-closed`, `custom-open`, `custom-closed`, `icon-<itemId>` (özel ikon — `iconName` yoksa)
|
|
828
|
+
|
|
829
|
+
**Veri modeli:**
|
|
830
|
+
|
|
831
|
+
```ts
|
|
832
|
+
interface MenuBadge {
|
|
833
|
+
text: string;
|
|
834
|
+
variant?: "default" | "primary" | "success" | "warning" | "danger" | "info" | "purple";
|
|
835
|
+
size?: "default" | "small";
|
|
836
|
+
isRound?: boolean;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
interface LeftMenuItem {
|
|
840
|
+
id: string;
|
|
841
|
+
label: string;
|
|
842
|
+
iconName?: string; // dahili ui-icon; yoksa slot="icon-${id}" kullanılır
|
|
843
|
+
badges?: MenuBadge[];
|
|
844
|
+
active?: boolean;
|
|
845
|
+
disabled?: boolean;
|
|
846
|
+
children?: LeftMenuItem[];
|
|
847
|
+
data?: unknown;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
interface LeftMenuGroup {
|
|
851
|
+
id: string;
|
|
852
|
+
label?: string;
|
|
853
|
+
items: LeftMenuItem[];
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
type LeftMenuEntry = LeftMenuItem | LeftMenuGroup;
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
> **Gruplama:** `.items` dizisine doğrudan `LeftMenuItem` veya `LeftMenuGroup` koy. Grup objesinde `items` alanı vardır; düz item'da `children` alt menü içindir. Ardışık düz item'lar otomatik tek başlıksız grupta toplanır. Gruplar arasında ince border ayraç vardır.
|
|
860
|
+
|
|
861
|
+
```html
|
|
862
|
+
<logosphere-leftmenu open .items=${[
|
|
863
|
+
{
|
|
864
|
+
id: "genel", label: "Genel",
|
|
865
|
+
items: [
|
|
866
|
+
{ id: "home", label: "Ana Sayfa", iconName: "uil-home", active: true },
|
|
867
|
+
{ id: "search", label: "Arama", iconName: "uil-search" }
|
|
868
|
+
]
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
id: "yonetim", label: "Yönetim",
|
|
872
|
+
items: [
|
|
873
|
+
{
|
|
874
|
+
id: "reports", label: "Raporlar",
|
|
875
|
+
badges: [
|
|
876
|
+
{ text: "New", variant: "success", size: "small" },
|
|
877
|
+
{ text: "12", variant: "primary", size: "small", isRound: true }
|
|
878
|
+
]
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
id: "users", label: "Kullanıcılar",
|
|
882
|
+
children: [
|
|
883
|
+
{ id: "users-list", label: "Liste" },
|
|
884
|
+
{ id: "users-create", label: "Yeni Ekle" }
|
|
885
|
+
]
|
|
886
|
+
}
|
|
887
|
+
]
|
|
888
|
+
}
|
|
889
|
+
]}>
|
|
890
|
+
<img slot="logo-open" src="/logo-full.svg" alt="Logo" />
|
|
891
|
+
<img slot="toggle-closed" src="/logo-icon.svg" alt="L" />
|
|
892
|
+
|
|
893
|
+
<!-- iconName yoksa: React/Angular kendi ikon bileşenini basar -->
|
|
894
|
+
<svg slot="icon-reports" width="16" height="16">...</svg>
|
|
895
|
+
</logosphere-leftmenu>
|
|
896
|
+
```
|
|
897
|
+
|
|
898
|
+
---
|
|
899
|
+
|
|
900
|
+
### `<logosphere-tree-menu>`
|
|
901
|
+
|
|
902
|
+
Özyinelemeli ağaç menü (veri tabanlı).
|
|
903
|
+
|
|
904
|
+
**Properties**
|
|
905
|
+
|
|
906
|
+
| Property | Tip | Varsayılan | Açıklama |
|
|
907
|
+
|----------|-----|-----------|---------|
|
|
908
|
+
| `items` | `TreeMenuItem[]` | — | Ağaç verisi (attribute değil, `.items=${...}`) |
|
|
909
|
+
| `expandedIds` | `string[]` | `[]` | Açık düğüm id'leri |
|
|
910
|
+
| `expandOnLabelClick` | `boolean` | `true` | Etikete tıklayınca aç/kapa |
|
|
911
|
+
| `chevronPosition` | `"left" \| "right"` | `"left"` | Ok konumu |
|
|
912
|
+
| `showLabels` | `boolean` | `true` | Etiketleri göster |
|
|
913
|
+
| `leading` | `boolean` | `true` | Derinlik göstergeleri (seviye 2: bullet, seviye 3: 2px çizgi; seviye 1 ikon kalır) |
|
|
914
|
+
| `iconSize` | `number` | `16` | İkon boyutu |
|
|
915
|
+
|
|
916
|
+
**`TreeMenuItem` yapısı:**
|
|
917
|
+
|
|
918
|
+
```ts
|
|
919
|
+
interface TreeMenuItem {
|
|
920
|
+
id: string;
|
|
921
|
+
label: string;
|
|
922
|
+
iconName?: string; // dahili ui-icon; yoksa slot="icon-${id}"
|
|
923
|
+
badges?: MenuBadge[];
|
|
924
|
+
children?: TreeMenuItem[];
|
|
925
|
+
disabled?: boolean;
|
|
926
|
+
active?: boolean;
|
|
927
|
+
data?: unknown;
|
|
928
|
+
}
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
**Events:** `toggle`, `item-click`, `node-click` — her biri `detail: { item, ... }`
|
|
932
|
+
|
|
933
|
+
```html
|
|
934
|
+
<logosphere-tree-menu
|
|
935
|
+
.items=${[
|
|
936
|
+
{
|
|
937
|
+
id: "1", label: "Belgeler",
|
|
938
|
+
children: [
|
|
939
|
+
{ id: "1-1", label: "Raporlar" },
|
|
940
|
+
{ id: "1-2", label: "Sözleşmeler" }
|
|
941
|
+
]
|
|
942
|
+
},
|
|
943
|
+
{ id: "2", label: "Resimler" }
|
|
944
|
+
]}
|
|
945
|
+
></logosphere-tree-menu>
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
---
|
|
949
|
+
|
|
950
|
+
### `<ui-icon>`
|
|
951
|
+
|
|
952
|
+
SVG ikon bileşeni. `icon-map.ts`'deki kayıtlı ikonları isimle render eder.
|
|
953
|
+
|
|
954
|
+
**Properties**
|
|
955
|
+
|
|
956
|
+
| Property | Tip | Açıklama |
|
|
957
|
+
|----------|-----|---------|
|
|
958
|
+
| `name` | `string` | İkon adı (aşağıdaki tabloya bak) |
|
|
959
|
+
| `size` | `number \| string` | Piksel boyutu (varsayılan: `16`) |
|
|
960
|
+
|
|
961
|
+
**Mevcut İkon İsimleri**
|
|
962
|
+
|
|
963
|
+
| İkon Adı | Kullanım Yeri |
|
|
964
|
+
|----------|--------------|
|
|
965
|
+
| `uil-times` | Kapatma/temizle |
|
|
966
|
+
| `uil-clock` | Saat/zaman |
|
|
967
|
+
| `uil-check` | Onay |
|
|
968
|
+
| `uil-check-circle` | Başarı |
|
|
969
|
+
| `uil-calendar` | Takvim |
|
|
970
|
+
| `uil-calendar-alt` | Takvim (alternatif) |
|
|
971
|
+
| `uil-arrow-left` | Sol ok |
|
|
972
|
+
| `uil-arrow-right` | Sağ ok |
|
|
973
|
+
| `uil-arrow-up` | Yukarı ok |
|
|
974
|
+
| `uil-arrow-down` | Aşağı ok |
|
|
975
|
+
| `uil-trash` | Silme |
|
|
976
|
+
| `uil-compress-alt` | Küçült |
|
|
977
|
+
| `uil-expand-alt` | Büyüt |
|
|
978
|
+
| `uil-copy` | Kopyala |
|
|
979
|
+
| `uil-thumbs-up` | Beğeni |
|
|
980
|
+
| `uil-thumbs-down` | Beğenmeme |
|
|
981
|
+
| `uil-arrow-circle-right` | Gönder |
|
|
982
|
+
| `uil-eye` | Göster |
|
|
983
|
+
| `uil-eye-slash` | Gizle |
|
|
984
|
+
| `uil-search` | Arama |
|
|
985
|
+
| `uil-left-arrow-to-left` | Sola sabitle |
|
|
986
|
+
| `uil-right-arrow-to-right` | Sağa sabitle |
|
|
987
|
+
| `uil-pin` | Sabitle |
|
|
988
|
+
| `uil-exclamation-triangle` | Uyarı |
|
|
989
|
+
| `uil-exclamation-octagon` | Hata |
|
|
990
|
+
| `uil-info-circle` | Bilgi |
|
|
991
|
+
| `uil-angle-up` | Yukarı köşeli |
|
|
992
|
+
| `uil-angle-down` | Aşağı köşeli |
|
|
993
|
+
|
|
994
|
+
```html
|
|
995
|
+
<ui-icon name="uil-check" size="20"></ui-icon>
|
|
996
|
+
<ui-icon name="uil-trash" size="16"></ui-icon>
|
|
997
|
+
```
|
|
998
|
+
|
|
999
|
+
---
|
|
1000
|
+
|
|
1001
|
+
## Sayfa Katmanları: Örnek Kompozisyonlar
|
|
1002
|
+
|
|
1003
|
+
### Giriş Sayfası (Login Form)
|
|
1004
|
+
|
|
1005
|
+
```html
|
|
1006
|
+
<div style="min-height:100vh; display:flex; align-items:center; justify-content:center; background:var(--color-body-bg)">
|
|
1007
|
+
<logosphere-card title="Giriş Yap" description="Hesabınıza erişin" style="width:400px">
|
|
1008
|
+
<div style="display:flex; flex-direction:column; gap:16px">
|
|
1009
|
+
<logosphere-input
|
|
1010
|
+
type="email"
|
|
1011
|
+
label="E-posta"
|
|
1012
|
+
placeholder="ornek@sirket.com"
|
|
1013
|
+
required
|
|
1014
|
+
></logosphere-input>
|
|
1015
|
+
|
|
1016
|
+
<logosphere-input
|
|
1017
|
+
type="password"
|
|
1018
|
+
label="Şifre"
|
|
1019
|
+
required
|
|
1020
|
+
></logosphere-input>
|
|
1021
|
+
|
|
1022
|
+
<logosphere-checkbox label="Beni hatırla" value="remember"></logosphere-checkbox>
|
|
1023
|
+
|
|
1024
|
+
<logosphere-button style="width:100%">Giriş Yap</logosphere-button>
|
|
1025
|
+
</div>
|
|
1026
|
+
</logosphere-card>
|
|
1027
|
+
</div>
|
|
1028
|
+
```
|
|
1029
|
+
|
|
1030
|
+
---
|
|
1031
|
+
|
|
1032
|
+
### Filtreli Liste Sayfası (Drawer filtreli)
|
|
1033
|
+
|
|
1034
|
+
```html
|
|
1035
|
+
<!-- Üst çubuk -->
|
|
1036
|
+
<div style="display:flex; gap:12px; align-items:center; padding:16px">
|
|
1037
|
+
<logosphere-input placeholder="Ara..." style="flex:1">
|
|
1038
|
+
<ui-icon slot="prefix" name="uil-search" size="16"></ui-icon>
|
|
1039
|
+
</logosphere-input>
|
|
1040
|
+
|
|
1041
|
+
<logosphere-drawer title="Filtreler" position="right">
|
|
1042
|
+
<logosphere-button slot="trigger" variant="outline">Filtre</logosphere-button>
|
|
1043
|
+
|
|
1044
|
+
<div style="display:flex; flex-direction:column; gap:12px; padding:16px">
|
|
1045
|
+
<logosphere-combobox label="Durum" .items=${statusItems}></logosphere-combobox>
|
|
1046
|
+
<logosphere-combobox label="Kategori" .items=${categoryItems} multiple filterable></logosphere-combobox>
|
|
1047
|
+
<logosphere-datepicker label="Tarih Aralığı" .rangeMode=${true}></logosphere-datepicker>
|
|
1048
|
+
<logosphere-button style="width:100%">Uygula</logosphere-button>
|
|
1049
|
+
</div>
|
|
1050
|
+
</logosphere-drawer>
|
|
1051
|
+
</div>
|
|
1052
|
+
```
|
|
1053
|
+
|
|
1054
|
+
---
|
|
1055
|
+
|
|
1056
|
+
### Ayarlar Sayfası (Tab'lı form)
|
|
1057
|
+
|
|
1058
|
+
```html
|
|
1059
|
+
<logosphere-tab
|
|
1060
|
+
.tabs=${[
|
|
1061
|
+
{ id: "profil", label: "Profil" },
|
|
1062
|
+
{ id: "hesap", label: "Hesap" },
|
|
1063
|
+
{ id: "bildirim", label: "Bildirimler" }
|
|
1064
|
+
]}
|
|
1065
|
+
activeTab="profil"
|
|
1066
|
+
>
|
|
1067
|
+
<div slot="panel-profil" style="display:flex; flex-direction:column; gap:16px; padding:16px">
|
|
1068
|
+
<logosphere-input label="Ad" placeholder="Adınız"></logosphere-input>
|
|
1069
|
+
<logosphere-input label="Soyad" placeholder="Soyadınız"></logosphere-input>
|
|
1070
|
+
<logosphere-input type="email" label="E-posta"></logosphere-input>
|
|
1071
|
+
<logosphere-textarea label="Biyografi" maxlength="300"></logosphere-textarea>
|
|
1072
|
+
<logosphere-button>Kaydet</logosphere-button>
|
|
1073
|
+
</div>
|
|
1074
|
+
|
|
1075
|
+
<div slot="panel-hesap" style="display:flex; flex-direction:column; gap:16px; padding:16px">
|
|
1076
|
+
<logosphere-input type="password" label="Mevcut Şifre"></logosphere-input>
|
|
1077
|
+
<logosphere-input type="password" label="Yeni Şifre"></logosphere-input>
|
|
1078
|
+
<logosphere-input type="password" label="Şifreyi Onayla"></logosphere-input>
|
|
1079
|
+
<logosphere-button theme="danger">Şifreyi Değiştir</logosphere-button>
|
|
1080
|
+
</div>
|
|
1081
|
+
|
|
1082
|
+
<div slot="panel-bildirim" style="display:flex; flex-direction:column; gap:12px; padding:16px">
|
|
1083
|
+
<logosphere-checkbox type="switch" label="E-posta bildirimleri" checked></logosphere-checkbox>
|
|
1084
|
+
<logosphere-checkbox type="switch" label="SMS bildirimleri"></logosphere-checkbox>
|
|
1085
|
+
<logosphere-checkbox type="switch" label="Tarayıcı bildirimleri"></logosphere-checkbox>
|
|
1086
|
+
</div>
|
|
1087
|
+
</logosphere-tab>
|
|
1088
|
+
```
|
|
1089
|
+
|
|
1090
|
+
---
|
|
1091
|
+
|
|
1092
|
+
### Admin Paneli Layout (Sol menü + içerik)
|
|
1093
|
+
|
|
1094
|
+
```html
|
|
1095
|
+
<div style="display:flex; height:100vh; overflow:hidden">
|
|
1096
|
+
<!-- Kenar çubuğu -->
|
|
1097
|
+
<logosphere-leftmenu open style="flex-shrink:0" .items=${[
|
|
1098
|
+
{ id: "dashboard", label: "Panel", iconName: "uil-info-circle", active: true },
|
|
1099
|
+
{ id: "users", label: "Kullanıcılar", iconName: "uil-check-circle" },
|
|
1100
|
+
{ id: "reports", label: "Raporlar", iconName: "uil-calendar" }
|
|
1101
|
+
]}>
|
|
1102
|
+
<img slot="logo-open" src="/logo.svg" alt="Logo" style="height:32px"/>
|
|
1103
|
+
<img slot="toggle-closed" src="/icon.svg" alt="L" style="height:32px"/>
|
|
1104
|
+
</logosphere-leftmenu>
|
|
1105
|
+
|
|
1106
|
+
<!-- Ana içerik -->
|
|
1107
|
+
<main style="flex:1; overflow:auto; padding:24px">
|
|
1108
|
+
<logosphere-breadcrumb
|
|
1109
|
+
.items=${[{ label: "Panel", href: "/" }, { label: "Kullanıcılar", active: true }]}
|
|
1110
|
+
></logosphere-breadcrumb>
|
|
1111
|
+
|
|
1112
|
+
<!-- İçerik buraya -->
|
|
1113
|
+
</main>
|
|
1114
|
+
</div>
|
|
1115
|
+
|
|
1116
|
+
<!-- Toast container (sayfa başında bir kere) -->
|
|
1117
|
+
<logosphere-toast-container></logosphere-toast-container>
|
|
1118
|
+
```
|
|
1119
|
+
|
|
1120
|
+
---
|
|
1121
|
+
|
|
1122
|
+
### Silme Onay Modalı
|
|
1123
|
+
|
|
1124
|
+
```html
|
|
1125
|
+
<logosphere-modal id="delete-modal" title="Kaydı Sil" showClose closeOnEsc>
|
|
1126
|
+
<p>Bu kaydı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.</p>
|
|
1127
|
+
|
|
1128
|
+
<div slot="footer" style="display:flex; gap:8px; justify-content:flex-end">
|
|
1129
|
+
<logosphere-button
|
|
1130
|
+
variant="outline"
|
|
1131
|
+
onclick="document.getElementById('delete-modal').closeModal()"
|
|
1132
|
+
>İptal</logosphere-button>
|
|
1133
|
+
<logosphere-button theme="danger" id="confirm-delete">Evet, Sil</logosphere-button>
|
|
1134
|
+
</div>
|
|
1135
|
+
</logosphere-modal>
|
|
1136
|
+
|
|
1137
|
+
<script>
|
|
1138
|
+
document.getElementById("confirm-delete").addEventListener("click", () => {
|
|
1139
|
+
// silme işlemi
|
|
1140
|
+
ToastService.success("Silindi", "Kayıt başarıyla silindi.");
|
|
1141
|
+
document.getElementById("delete-modal").closeModal();
|
|
1142
|
+
});
|
|
1143
|
+
</script>
|
|
1144
|
+
```
|
|
1145
|
+
|
|
1146
|
+
---
|
|
1147
|
+
|
|
1148
|
+
## Design Tokens (CSS Değişkenleri)
|
|
1149
|
+
|
|
1150
|
+
Bileşenler bu token'ları kullanır; tema özelleştirmek için `:root` üzerinde override et.
|
|
1151
|
+
|
|
1152
|
+
```css
|
|
1153
|
+
:root {
|
|
1154
|
+
/* Renkler */
|
|
1155
|
+
--color-primary: #your-brand;
|
|
1156
|
+
--color-body-bg: #ffffff;
|
|
1157
|
+
--color-body-bg-hover: #f5f5f5;
|
|
1158
|
+
--color-body-text: #1a1a1a;
|
|
1159
|
+
--color-secondary: #6b7280;
|
|
1160
|
+
--color-tertiary: #9ca3af;
|
|
1161
|
+
--color-border: #e5e7eb;
|
|
1162
|
+
|
|
1163
|
+
/* Durum renkleri */
|
|
1164
|
+
--color-success: #22c55e;
|
|
1165
|
+
--color-warning: #f59e0b;
|
|
1166
|
+
--color-danger: #ef4444;
|
|
1167
|
+
--color-info: #3b82f6;
|
|
1168
|
+
|
|
1169
|
+
/* Tipografi */
|
|
1170
|
+
--font-family-base: "Inter", sans-serif;
|
|
1171
|
+
--font-size-sm: 0.875rem; /* 14px */
|
|
1172
|
+
--font-size-base: 1rem; /* 16px */
|
|
1173
|
+
--font-weight-regular: 400;
|
|
1174
|
+
--font-weight-medium: 500;
|
|
1175
|
+
--font-weight-semibold: 600;
|
|
1176
|
+
|
|
1177
|
+
/* Spacing */
|
|
1178
|
+
--spacing-1: 0.25rem; /* 4px */
|
|
1179
|
+
--spacing-2: 0.5rem; /* 8px */
|
|
1180
|
+
--spacing-3: 0.75rem; /* 12px */
|
|
1181
|
+
--spacing-4: 1rem; /* 16px */
|
|
1182
|
+
--spacing-5: 1.25rem; /* 20px */
|
|
1183
|
+
--spacing-6: 1.5rem; /* 24px */
|
|
1184
|
+
|
|
1185
|
+
/* Border radius */
|
|
1186
|
+
--radius-sm: 0.25rem; /* 4px */
|
|
1187
|
+
--radius-base: 0.5rem; /* 8px */
|
|
1188
|
+
--radius-md: 0.75rem; /* 12px */
|
|
1189
|
+
--radius-full: 9999px;
|
|
1190
|
+
|
|
1191
|
+
/* Gölge */
|
|
1192
|
+
--shadow-sm: 0 1px 3px rgba(0,0,0,0.1);
|
|
1193
|
+
--shadow-md: 0px 4px 8px -2px rgba(0,0,0,0.1);
|
|
1194
|
+
|
|
1195
|
+
/* Geçiş */
|
|
1196
|
+
--transition-speed-fast: 150ms;
|
|
1197
|
+
--transition-timing: ease;
|
|
1198
|
+
|
|
1199
|
+
/* Z-index */
|
|
1200
|
+
--z-index-dropdown: 1000;
|
|
1201
|
+
--z-index-modal: 1050;
|
|
1202
|
+
--z-index-toast: 1100;
|
|
1203
|
+
}
|
|
1204
|
+
```
|