@mesgflow/ui-kit 0.6.0
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/LICENSE +21 -0
- package/README.md +200 -0
- package/fesm2022/mesgflow-ui-kit-accordion.mjs +75 -0
- package/fesm2022/mesgflow-ui-kit-accordion.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-alert.mjs +165 -0
- package/fesm2022/mesgflow-ui-kit-alert.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-avatar-group.mjs +88 -0
- package/fesm2022/mesgflow-ui-kit-avatar-group.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-avatar.mjs +123 -0
- package/fesm2022/mesgflow-ui-kit-avatar.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-badge.mjs +68 -0
- package/fesm2022/mesgflow-ui-kit-badge.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-banner.mjs +111 -0
- package/fesm2022/mesgflow-ui-kit-banner.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-box-input.mjs +78 -0
- package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-brand.mjs +120 -0
- package/fesm2022/mesgflow-ui-kit-brand.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs +84 -0
- package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-button-group.mjs +37 -0
- package/fesm2022/mesgflow-ui-kit-button-group.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-button.mjs +359 -0
- package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-card.mjs +128 -0
- package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-chart.mjs +538 -0
- package/fesm2022/mesgflow-ui-kit-chart.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs +45 -0
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-chip.mjs +123 -0
- package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-code-block.mjs +71 -0
- package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-collapsible.mjs +89 -0
- package/fesm2022/mesgflow-ui-kit-collapsible.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs +210 -0
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-combobox.mjs +181 -0
- package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-command.mjs +491 -0
- package/fesm2022/mesgflow-ui-kit-command.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs +92 -0
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-copy-button.mjs +167 -0
- package/fesm2022/mesgflow-ui-kit-copy-button.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-core.mjs +624 -0
- package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs +643 -0
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-description-list.mjs +76 -0
- package/fesm2022/mesgflow-ui-kit-description-list.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-dialog.mjs +700 -0
- package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-divider.mjs +62 -0
- package/fesm2022/mesgflow-ui-kit-divider.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs +126 -0
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-empty-state.mjs +70 -0
- package/fesm2022/mesgflow-ui-kit-empty-state.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-field.mjs +42 -0
- package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-hover-card.mjs +171 -0
- package/fesm2022/mesgflow-ui-kit-hover-card.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +258 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-icon.mjs +174 -0
- package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-input.mjs +448 -0
- package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-kbd.mjs +24 -0
- package/fesm2022/mesgflow-ui-kit-kbd.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-link.mjs +48 -0
- package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-menu.mjs +105 -0
- package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-number-input.mjs +153 -0
- package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-otp-input.mjs +164 -0
- package/fesm2022/mesgflow-ui-kit-otp-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-page-header.mjs +83 -0
- package/fesm2022/mesgflow-ui-kit-page-header.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-pagination.mjs +99 -0
- package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-password-input.mjs +120 -0
- package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-popover.mjs +213 -0
- package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-progress.mjs +82 -0
- package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-radio.mjs +123 -0
- package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-rating.mjs +116 -0
- package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +84 -0
- package/fesm2022/mesgflow-ui-kit-scroll-area.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-search-input.mjs +154 -0
- package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +95 -0
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-select.mjs +227 -0
- package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs +449 -0
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs +74 -0
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-slider.mjs +179 -0
- package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-spinner.mjs +67 -0
- package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-splitter.mjs +97 -0
- package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +98 -0
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-stepper.mjs +133 -0
- package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-switch.mjs +73 -0
- package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-table.mjs +1783 -0
- package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tabs.mjs +569 -0
- package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs +138 -0
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +53 -0
- package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-theming.mjs +1016 -0
- package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs +138 -0
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-timeline.mjs +91 -0
- package/fesm2022/mesgflow-ui-kit-timeline.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-toast.mjs +202 -0
- package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-toggle.mjs +243 -0
- package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs +99 -0
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs +160 -0
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tour.mjs +272 -0
- package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tree-select.mjs +177 -0
- package/fesm2022/mesgflow-ui-kit-tree-select.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tree.mjs +82 -0
- package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit.mjs +12851 -0
- package/fesm2022/mesgflow-ui-kit.mjs.map +1 -0
- package/package.json +374 -0
- package/preset.css +20 -0
- package/tokens/color.css +693 -0
- package/tokens/contrast.css +68 -0
- package/tokens/elevation.css +68 -0
- package/tokens/motion.css +277 -0
- package/tokens/radius.css +69 -0
- package/tokens/typography.css +127 -0
- package/tokens.css +41 -0
- package/types/mesgflow-ui-kit-accordion.d.ts +42 -0
- package/types/mesgflow-ui-kit-alert.d.ts +60 -0
- package/types/mesgflow-ui-kit-avatar-group.d.ts +28 -0
- package/types/mesgflow-ui-kit-avatar.d.ts +23 -0
- package/types/mesgflow-ui-kit-badge.d.ts +39 -0
- package/types/mesgflow-ui-kit-banner.d.ts +42 -0
- package/types/mesgflow-ui-kit-box-input.d.ts +45 -0
- package/types/mesgflow-ui-kit-brand.d.ts +48 -0
- package/types/mesgflow-ui-kit-breadcrumb.d.ts +26 -0
- package/types/mesgflow-ui-kit-button-group.d.ts +17 -0
- package/types/mesgflow-ui-kit-button.d.ts +75 -0
- package/types/mesgflow-ui-kit-card.d.ts +71 -0
- package/types/mesgflow-ui-kit-chart.d.ts +242 -0
- package/types/mesgflow-ui-kit-checkbox.d.ts +17 -0
- package/types/mesgflow-ui-kit-chip.d.ts +46 -0
- package/types/mesgflow-ui-kit-code-block.d.ts +56 -0
- package/types/mesgflow-ui-kit-collapsible.d.ts +39 -0
- package/types/mesgflow-ui-kit-color-picker.d.ts +78 -0
- package/types/mesgflow-ui-kit-combobox.d.ts +74 -0
- package/types/mesgflow-ui-kit-command.d.ts +185 -0
- package/types/mesgflow-ui-kit-context-menu.d.ts +40 -0
- package/types/mesgflow-ui-kit-copy-button.d.ts +47 -0
- package/types/mesgflow-ui-kit-core.d.ts +508 -0
- package/types/mesgflow-ui-kit-date-picker.d.ts +215 -0
- package/types/mesgflow-ui-kit-description-list.d.ts +23 -0
- package/types/mesgflow-ui-kit-dialog.d.ts +342 -0
- package/types/mesgflow-ui-kit-divider.d.ts +23 -0
- package/types/mesgflow-ui-kit-dropzone.d.ts +47 -0
- package/types/mesgflow-ui-kit-empty-state.d.ts +18 -0
- package/types/mesgflow-ui-kit-field.d.ts +26 -0
- package/types/mesgflow-ui-kit-hover-card.d.ts +52 -0
- package/types/mesgflow-ui-kit-i18n-tr.d.ts +14 -0
- package/types/mesgflow-ui-kit-icon.d.ts +76 -0
- package/types/mesgflow-ui-kit-input.d.ts +186 -0
- package/types/mesgflow-ui-kit-kbd.d.ts +9 -0
- package/types/mesgflow-ui-kit-link.d.ts +20 -0
- package/types/mesgflow-ui-kit-menu.d.ts +53 -0
- package/types/mesgflow-ui-kit-number-input.d.ts +55 -0
- package/types/mesgflow-ui-kit-otp-input.d.ts +44 -0
- package/types/mesgflow-ui-kit-page-header.d.ts +31 -0
- package/types/mesgflow-ui-kit-pagination.d.ts +50 -0
- package/types/mesgflow-ui-kit-password-input.d.ts +33 -0
- package/types/mesgflow-ui-kit-popover.d.ts +62 -0
- package/types/mesgflow-ui-kit-progress.d.ts +32 -0
- package/types/mesgflow-ui-kit-radio.d.ts +59 -0
- package/types/mesgflow-ui-kit-rating.d.ts +56 -0
- package/types/mesgflow-ui-kit-scroll-area.d.ts +27 -0
- package/types/mesgflow-ui-kit-search-input.d.ts +72 -0
- package/types/mesgflow-ui-kit-segmented-control.d.ts +54 -0
- package/types/mesgflow-ui-kit-select.d.ts +89 -0
- package/types/mesgflow-ui-kit-sidebar.d.ts +224 -0
- package/types/mesgflow-ui-kit-skeleton.d.ts +29 -0
- package/types/mesgflow-ui-kit-slider.d.ts +40 -0
- package/types/mesgflow-ui-kit-spinner.d.ts +31 -0
- package/types/mesgflow-ui-kit-splitter.d.ts +40 -0
- package/types/mesgflow-ui-kit-stat-tile.d.ts +54 -0
- package/types/mesgflow-ui-kit-stepper.d.ts +48 -0
- package/types/mesgflow-ui-kit-switch.d.ts +34 -0
- package/types/mesgflow-ui-kit-table.d.ts +805 -0
- package/types/mesgflow-ui-kit-tabs.d.ts +269 -0
- package/types/mesgflow-ui-kit-tag-input.d.ts +33 -0
- package/types/mesgflow-ui-kit-theme-switcher.d.ts +27 -0
- package/types/mesgflow-ui-kit-theming.d.ts +745 -0
- package/types/mesgflow-ui-kit-time-picker.d.ts +54 -0
- package/types/mesgflow-ui-kit-timeline.d.ts +27 -0
- package/types/mesgflow-ui-kit-toast.d.ts +94 -0
- package/types/mesgflow-ui-kit-toggle.d.ts +110 -0
- package/types/mesgflow-ui-kit-toolbar.d.ts +52 -0
- package/types/mesgflow-ui-kit-tooltip.d.ts +55 -0
- package/types/mesgflow-ui-kit-tour.d.ts +66 -0
- package/types/mesgflow-ui-kit-tree-select.d.ts +65 -0
- package/types/mesgflow-ui-kit-tree.d.ts +44 -0
- package/types/mesgflow-ui-kit.d.ts +5444 -0
package/tokens/color.css
ADDED
|
@@ -0,0 +1,693 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* mesgflow — renk token'ları: ham rampalar, rol katmanı (light/dark takas),
|
|
3
|
+
* seçim rengi. Dark mode class tabanlı (`.dark`) — bkz. kök `tokens.css`
|
|
4
|
+
* doc yorumu, kurulum notları orada.
|
|
5
|
+
*
|
|
6
|
+
* `@custom-variant dark` BURADA — bu dosya `tokens.css`'in ilk import'u,
|
|
7
|
+
* `dark:` varyantı geri kalan token dosyalarında (motion/elevation) da
|
|
8
|
+
* kullanılmadan önce tanımlanmış olması gerekiyor.
|
|
9
|
+
*
|
|
10
|
+
* `.light` — koyu bir sayfanın İÇİNDE açık bir ada (veya tersi: açık sayfada
|
|
11
|
+
* `.dark` koyu bir hero bölümü) kurmak için. Rol katmanının `:root` bloğu
|
|
12
|
+
* `.light`'a da uygulanır; `dark:` varyantı `.dark .light` altında
|
|
13
|
+
* DEVRE DIŞI kalır. Tek seviye iç içe geçme desteklenir (koyu → açık ada);
|
|
14
|
+
* daha derin zincirler (koyu → açık → koyu) desteklenmez.
|
|
15
|
+
*/
|
|
16
|
+
@custom-variant dark (&:where(.dark, .dark *):not(:where(.dark .light, .dark .light *)));
|
|
17
|
+
|
|
18
|
+
/* Cam yüzeyler (core/recipes.ts glassSurface, dialog/toast) bu varyantla düz yüzeye düşer — bkz. "Cam yüzeyler" dokümanı. */
|
|
19
|
+
@custom-variant reduced-transparency (@media (prefers-reduced-transparency: reduce));
|
|
20
|
+
|
|
21
|
+
@theme static {
|
|
22
|
+
/*
|
|
23
|
+
* ─────────────────────────────────────────────────────────────────────
|
|
24
|
+
* RENK — HAM RAMPALAR (11 basamak) — HEPSİ elle taşınan hex
|
|
25
|
+
* ─────────────────────────────────────────────────────────────────────
|
|
26
|
+
* 2026-09 "Deep Emerald & Slate v2": kullanıcının verdiği bir light+dark
|
|
27
|
+
* tasarım spesifikasyonundaki hex'ler ÇAPA alınıp aradaki basamaklar OKLCH
|
|
28
|
+
* uzayında interpolasyonla dolduruldu (L/C/H ayrı ayrı lerp — ton geçişleri
|
|
29
|
+
* pürüzsüz, hiçbir basamakta L monotonikliği bozulmuyor). success/warning/
|
|
30
|
+
* danger/info/help artık primary'nin kroma bütçesine elle akort edilmiş
|
|
31
|
+
* DEĞİL — spec'in kendi (Tailwind-stok-benzeri) hex'lerine sadık.
|
|
32
|
+
*
|
|
33
|
+
* Eski "deep-fill/bright-fill" rampa TÜRÜ ayrımı KALKTI — her rampada
|
|
34
|
+
* basamak SAYISININ anlamı artık sabit ve tekdüze (rol katmanına bkz.):
|
|
35
|
+
* 100 = spec'in "Background Tint" çapası (rozet/tonal işaretin altında
|
|
36
|
+
* yatan referans — doğrudan bir rol token'ı değil, gösterim/
|
|
37
|
+
* interpolasyon çapası).
|
|
38
|
+
* 400 = spec'in DARK "Hex"i — dark modda metin/ikon VE dolu blok.
|
|
39
|
+
* 600 = spec'in LIGHT "Hex"i — light modda ikon/kenarlık, tonal işaretin
|
|
40
|
+
* alfa-karışım çapası, ve (danger/help/success/warning için) dolu
|
|
41
|
+
* blok.
|
|
42
|
+
* 700 = light METİN (success/warning/info — 600 beyaz zeminde/dolu blok
|
|
43
|
+
* üstünde AA'yı geçmiyor) ve/veya hover basamağı.
|
|
44
|
+
* 800 = spec'in "Text" değeri — tonal işaretin (tint) üstündeki metin.
|
|
45
|
+
* `check:contrast` (scripts/check-contrast.mjs) bu roller üstünden AA'yı
|
|
46
|
+
* doğrular; script `color.css`'in KENDİSİNİ okur, drift riski yok.
|
|
47
|
+
*
|
|
48
|
+
* Success hue kararı (2026-09 premium turu, kullanıcı onayıyla): spec'in
|
|
49
|
+
* zümrüt success'i (~163°) dark modda primary-400 ile BİREBİR aynı hex'ti
|
|
50
|
+
* (`#10b981`) — birincil CTA ile "başarılı" rozeti ayırt edilemiyordu. Rampa
|
|
51
|
+
* OKLCH'de her basamağın L ve C'si KORUNARAK hue ~163° → 148°'e (zümrütten
|
|
52
|
+
* yeşile) döndürüldü: aynı algısal ağırlık, ayrı bir anlam rengi. Primary
|
|
53
|
+
* (~163-174°) zümrüt/teal'de kalır.
|
|
54
|
+
*
|
|
55
|
+
* `@theme static`: kullanılmayan basamaklar da `:root`'a yazılsın —
|
|
56
|
+
* showcase'in Renkler sayfası `--color-<ramp>-<basamak>` adını runtime'da
|
|
57
|
+
* `getComputedStyle` ile okuyor, Tailwind'in kaynak tarayıcısı böyle bir
|
|
58
|
+
* kullanımı GÖREMEZ (sadece gerçek utility class'larını arar).
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
/*
|
|
62
|
+
* Primary — "Deep Emerald". 50-300/800-950 önceki turdan (hue ~174°)
|
|
63
|
+
* korunur; 400/500/700 spec'in dark/dark-hover/light-hover hex'lerine
|
|
64
|
+
* (`#10b981`/`#059669`/`#0a4335`) çekildi. 600 = `#004d40` (metin/ikon/
|
|
65
|
+
* kenarlık "accent" rolü VE checkbox/radio `accent-color`'ı — DEĞİŞMEDİ).
|
|
66
|
+
* 900 = `#062c22` — artık LIGHT modun dolu blok basamağı (`--mf-accent-fill`,
|
|
67
|
+
* kullanıcı kararı: spec'in "Forest Emerald" CTA'sı). 2026-09 ilk turda
|
|
68
|
+
* Deep Jade'den (hue ~155°) geçilmişti; bu v2 tur aynı ailede kalıp sadece
|
|
69
|
+
* 400/500/700'ü spec'e taşıdı.
|
|
70
|
+
*/
|
|
71
|
+
--color-primary-50: #eef9f5;
|
|
72
|
+
--color-primary-100: #d9f2ea;
|
|
73
|
+
--color-primary-200: #b4e6d6;
|
|
74
|
+
--color-primary-300: #81d0ba;
|
|
75
|
+
--color-primary-400: #10b981;
|
|
76
|
+
--color-primary-500: #059669;
|
|
77
|
+
--color-primary-600: #004d40;
|
|
78
|
+
--color-primary-700: #0a4335;
|
|
79
|
+
--color-primary-800: #05362b;
|
|
80
|
+
--color-primary-900: #062c22;
|
|
81
|
+
--color-primary-950: #061d17;
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* Nötr — "Emerald Slate": her basamak marka hue'sunda (~170°), kroma
|
|
85
|
+
* ≤0.02 — algılanabilir bir "yeşil" DEĞİL, markayla aynı sıcaklıkta bir
|
|
86
|
+
* slate (kural ilk turda KULLANICI KARARIYLA "nötrler asla yeşile kaymaz"
|
|
87
|
+
* ilkesinin yerine geçti). v2 turda 200/300 ve koyu merdiven (700-975)
|
|
88
|
+
* spec'in "Porselen" (light) ve "Dumanlı Zümrüt-Siyah" (dark) hedeflerine
|
|
89
|
+
* yeniden ayarlandı — dark canvas artık `#0b1311`, kart `#121e1b`,
|
|
90
|
+
* kenarlık `#233530` (spec'in kendi hex'leri, sadece marka hue'suna göre
|
|
91
|
+
* küçük bir kroma düzeltmesiyle). `check:contrast` nötr metin çiftlerini
|
|
92
|
+
* doğrular.
|
|
93
|
+
*/
|
|
94
|
+
--color-neutral-50: #f6f8f7;
|
|
95
|
+
--color-neutral-100: #f4f6f5;
|
|
96
|
+
--color-neutral-200: #e8ecea;
|
|
97
|
+
--color-neutral-300: #d8e0dc;
|
|
98
|
+
--color-neutral-400: #b4bfbb;
|
|
99
|
+
--color-neutral-500: #86948f;
|
|
100
|
+
--color-neutral-600: #5e6d67;
|
|
101
|
+
--color-neutral-700: #40504b;
|
|
102
|
+
--color-neutral-800: #233530;
|
|
103
|
+
--color-neutral-850: #192723;
|
|
104
|
+
--color-neutral-900: #121e1b;
|
|
105
|
+
--color-neutral-950: #0b1311;
|
|
106
|
+
--color-neutral-975: #070e0c;
|
|
107
|
+
|
|
108
|
+
/* Success — yeşil (hue 148°), spec'in zümrüt rampasının L/C'si korunarak döndürüldü — bkz. üstteki doktrin notu. */
|
|
109
|
+
--color-success-50: #eefcef;
|
|
110
|
+
--color-success-100: #d9f9dc;
|
|
111
|
+
--color-success-200: #b5ebbc;
|
|
112
|
+
--color-success-300: #91dd9c;
|
|
113
|
+
--color-success-400: #68cf7b;
|
|
114
|
+
--color-success-500: #52b666;
|
|
115
|
+
--color-success-600: #419351;
|
|
116
|
+
--color-success-700: #357642;
|
|
117
|
+
--color-success-800: #2b5d34;
|
|
118
|
+
--color-success-900: #1d4725;
|
|
119
|
+
--color-success-950: #123218;
|
|
120
|
+
|
|
121
|
+
/* Warning — spec'in amber'i. */
|
|
122
|
+
--color-warning-50: #fffae6;
|
|
123
|
+
--color-warning-100: #fef3c7;
|
|
124
|
+
--color-warning-200: #f8da94;
|
|
125
|
+
--color-warning-300: #f6be5f;
|
|
126
|
+
--color-warning-400: #f59e0b;
|
|
127
|
+
--color-warning-500: #e78a05;
|
|
128
|
+
--color-warning-600: #d97706;
|
|
129
|
+
/*
|
|
130
|
+
* 700 spec'in `#B45309`si YERİNE elle bir tık koyulaştırıldı (`#a64b08`) —
|
|
131
|
+
* `#B45309` nötr-200 (`surface-alt`) üstünde 4.21:1 ölçüldü (AA altı,
|
|
132
|
+
* `check:contrast` bu yüzeyi de tarıyor); `#a64b08` 4.5:1+ geçiyor.
|
|
133
|
+
*/
|
|
134
|
+
--color-warning-700: #a64b08;
|
|
135
|
+
--color-warning-800: #92400e;
|
|
136
|
+
--color-warning-900: #762e00;
|
|
137
|
+
--color-warning-950: #572101;
|
|
138
|
+
|
|
139
|
+
/* Danger — spec'in "Muted Ruby/Yakut"ı. */
|
|
140
|
+
--color-danger-50: #fef5f5;
|
|
141
|
+
--color-danger-100: #fde8e8;
|
|
142
|
+
--color-danger-200: #f8c2c1;
|
|
143
|
+
--color-danger-300: #f09b9a;
|
|
144
|
+
/*
|
|
145
|
+
* 400 spec'in `#E57373`si YERİNE elle bir tık koyulaştırıldı (`#e87878`) —
|
|
146
|
+
* dark modda overlay/surface-alt üstündeki %12 tint karışımında metin
|
|
147
|
+
* rengi olarak kullanılınca 4.42:1 ölçüldü (AA altı); `#e87878` geçiyor.
|
|
148
|
+
*/
|
|
149
|
+
--color-danger-400: #e87878;
|
|
150
|
+
--color-danger-500: #d65453;
|
|
151
|
+
--color-danger-600: #c53030;
|
|
152
|
+
--color-danger-700: #b02626;
|
|
153
|
+
--color-danger-800: #9b1c1c;
|
|
154
|
+
--color-danger-900: #7c080d;
|
|
155
|
+
--color-danger-950: #5a0407;
|
|
156
|
+
|
|
157
|
+
/* Info — spec'in "Buz Mavisi/Slate Blue"si. */
|
|
158
|
+
--color-info-50: #f1f9ff;
|
|
159
|
+
--color-info-100: #e0f2fe;
|
|
160
|
+
--color-info-200: #b2e1fe;
|
|
161
|
+
--color-info-300: #7ecffc;
|
|
162
|
+
--color-info-400: #38bdf8;
|
|
163
|
+
--color-info-500: #20a0e0;
|
|
164
|
+
--color-info-600: #0284c7;
|
|
165
|
+
--color-info-700: #0369a1;
|
|
166
|
+
--color-info-800: #075985;
|
|
167
|
+
--color-info-900: #00446a;
|
|
168
|
+
--color-info-950: #00304c;
|
|
169
|
+
|
|
170
|
+
/*
|
|
171
|
+
* Help — YENİ rampa, spec'in "Ametist Moru" (AI önerileri/onboarding/
|
|
172
|
+
* yardım tooltip'leri). `MfTone`'a `help` üyesi olarak eklendi (bkz.
|
|
173
|
+
* core/types.ts).
|
|
174
|
+
*/
|
|
175
|
+
--color-help-50: #f7f5ff;
|
|
176
|
+
--color-help-100: #ede9fe;
|
|
177
|
+
--color-help-200: #d5cafe;
|
|
178
|
+
--color-help-300: #bdabfd;
|
|
179
|
+
--color-help-400: #a78bfa;
|
|
180
|
+
/*
|
|
181
|
+
* 500 spec'te yok (interpolasyon ara basamağıydı) — mürekkep metinle
|
|
182
|
+
* (`#04110d`) 4.48:1 ölçüldüğü için elle bir tık açıldı (`#9370f2`).
|
|
183
|
+
*/
|
|
184
|
+
--color-help-500: #9370f2;
|
|
185
|
+
--color-help-600: #6d28d9;
|
|
186
|
+
--color-help-700: #6424c7;
|
|
187
|
+
--color-help-800: #5b21b6;
|
|
188
|
+
--color-help-900: #460b93;
|
|
189
|
+
--color-help-950: #31046b;
|
|
190
|
+
|
|
191
|
+
/*
|
|
192
|
+
* ─────────────────────────────────────────────────────────────────────
|
|
193
|
+
* GERİYE DÖNÜK UYUMLULUK — eski marka/semantic token ismi.
|
|
194
|
+
* `--color-*-dark`/`--color-dark-*` "dark: ikizi" ailesi Faz 1d'de
|
|
195
|
+
* KALDIRILDI (bu depoda hiçbir tüketicisi yoktu, bkz. plan — BREAKING,
|
|
196
|
+
* 0.2.0): rol katmanı (`--mf-*`, aşağıda) zaten AYNI amaca hizmet ediyor
|
|
197
|
+
* ve `dark:` ikizi YAZDIRMIYOR, bu takma adlar sadece kafa karıştıran bir
|
|
198
|
+
* ikinci yol sunuyordu.
|
|
199
|
+
*/
|
|
200
|
+
--color-primary: var(--color-primary-600);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/*
|
|
204
|
+
* ───────────────────────────────────────────────────────────────────────
|
|
205
|
+
* ROL KATMANI — runtime'da MODA GÖRE TAKAS OLAN token'lar
|
|
206
|
+
* ───────────────────────────────────────────────────────────────────────
|
|
207
|
+
* `@theme inline`, değeri derleme zamanında sabitlemek yerine var(--mf-*)
|
|
208
|
+
* referansı olarak bırakır — aşağıdaki :root/.dark bloklarında TEK bir CSS
|
|
209
|
+
* custom property değişimiyle bütün utility'ler (bg-surface, text-fg, ...)
|
|
210
|
+
* doğru moda geçer. Template'lerde `bg-X dark:bg-X-dark` İKİLİSİ tamamen
|
|
211
|
+
* gereksizleşir — `bg-surface` iki modda da doğru sonucu verir.
|
|
212
|
+
*
|
|
213
|
+
* success/warning/danger/info/help RAMPALARI yukarıdaki `@theme` bloğunda
|
|
214
|
+
* (elle hex) — burada SADECE moda göre takas olan rol token'ları.
|
|
215
|
+
*
|
|
216
|
+
* Her semantik ton (success/warning/danger/info/help) BEŞLİ bir rol seti
|
|
217
|
+
* taşır — v2'nin ana yeniliği, eski "bileşen doğrudan `bg-X-600 dark:bg-X-900`
|
|
218
|
+
* yazar" deseninin yerine geçti:
|
|
219
|
+
* `--mf-X` metin/ikon/kenarlık rolü (Button outlined/text, Link, Spinner, Timeline)
|
|
220
|
+
* `--mf-X-fill` dolu blok zemini (filled Button, vb.)
|
|
221
|
+
* `--mf-X-fill-hover` dolu blok hover zemini
|
|
222
|
+
* `--mf-X-fill-fg` dolu blok ÜSTÜNDEKİ metin (moda göre beyaz/mürekkep değişir)
|
|
223
|
+
* `--mf-X-tint` tonal işaret zemini (badge/chip/alert/seçili satır/aktif nav) —
|
|
224
|
+
* `color-mix()` ile rampanın kendi basamağının %12 alfası, MOD-TAKASLI çapa
|
|
225
|
+
* (light 600 / dark 400 — spec'in "Soft Tinting" tekniği)
|
|
226
|
+
* `--mf-X-tint-fg` tonal işaret ÜSTÜNDEKİ metin
|
|
227
|
+
*/
|
|
228
|
+
@theme inline {
|
|
229
|
+
--color-help: var(--mf-help);
|
|
230
|
+
--color-success: var(--mf-success);
|
|
231
|
+
--color-warning: var(--mf-warning);
|
|
232
|
+
--color-danger: var(--mf-danger);
|
|
233
|
+
--color-info: var(--mf-info);
|
|
234
|
+
|
|
235
|
+
/* Yüzey merdiveni */
|
|
236
|
+
--color-canvas: var(--mf-canvas);
|
|
237
|
+
--color-surface: var(--mf-surface);
|
|
238
|
+
--color-surface-alt: var(--mf-surface-alt);
|
|
239
|
+
--color-chrome: var(--mf-chrome);
|
|
240
|
+
--color-surface-sunken: var(--mf-surface-sunken);
|
|
241
|
+
--color-surface-active: var(--mf-surface-active);
|
|
242
|
+
--color-overlay: var(--mf-overlay);
|
|
243
|
+
/* Ters yüzey — koyu-üstünde-açık (light) / açık-üstünde-koyu (dark), tooltip gibi "her zaman zıt" yüzeyler için. Artık literal spec değerleri (primary-900 DEĞİL). */
|
|
244
|
+
--color-surface-inverse: var(--mf-surface-inverse);
|
|
245
|
+
/* Cam yüzey — Dialog/Sheet/Drawer/Toast paneli + showcase sabit üst çubuğu; bkz. core/recipes.ts glassSurface. */
|
|
246
|
+
--color-glass: var(--mf-glass);
|
|
247
|
+
|
|
248
|
+
/* Kenarlık — `line` eski/yaygın isim, `border` ile AYNI anlamı taşıyor */
|
|
249
|
+
--color-line: var(--color-border);
|
|
250
|
+
--color-border-subtle: var(--mf-border-subtle);
|
|
251
|
+
--color-border: var(--mf-border);
|
|
252
|
+
--color-border-strong: var(--mf-border-strong);
|
|
253
|
+
/* İnce çizgi (border-first depth) — kapsayıcılar (card/table/toolbar) gölge YERİNE bunu kullanır, alfa tabanlı: her zeminde çalışır. */
|
|
254
|
+
--color-hairline: var(--mf-hairline);
|
|
255
|
+
|
|
256
|
+
/*
|
|
257
|
+
* Durum katmanı (state layer) — hover/pressed/selected için ZEMİNDEN
|
|
258
|
+
* BAĞIMSIZ alfa örtüler: `bg-state-hover` renkli, görsel veya cam bir
|
|
259
|
+
* yüzeyin üstünde de doğru koyulaşır/açılır (opak `bg-surface-alt`
|
|
260
|
+
* yalnızca kendi zemininde doğru görünür). Metin rengi `fg` tabanlı.
|
|
261
|
+
*/
|
|
262
|
+
--color-state-hover: var(--mf-state-hover);
|
|
263
|
+
--color-state-pressed: var(--mf-state-pressed);
|
|
264
|
+
--color-state-selected: var(--mf-state-selected);
|
|
265
|
+
|
|
266
|
+
/*
|
|
267
|
+
* ─────────────────────────────────────────────────────────────────────
|
|
268
|
+
* GRAFİK — üç iş, üç skala (dataviz metodu; değerler rol bloklarında,
|
|
269
|
+
* iki mod AYRI SEÇİLMİŞ basamaklar — otomatik ters çevirme DEĞİL):
|
|
270
|
+
* chart-1..8 KATEGORİK (kimlik) — SABİT sırayla atanır, ASLA döngüye
|
|
271
|
+
* girmez; 9. seri "Diğer"e (`chart-other`) katlanır.
|
|
272
|
+
* chart-seq-1..5 SIRALI (büyüklük) — tek hue (zümrüt), açık→koyu;
|
|
273
|
+
* dark'ta çapa ters (düşük değer zemine yakın koyu).
|
|
274
|
+
* chart-div-1..5 IRAKSAK (kutup) — turuncu ↔ nötr gri ↔ mavi.
|
|
275
|
+
* Durum (iyi/uyarı/kritik) için AYRI grafik rengi YOK — kitin success/
|
|
276
|
+
* warning/danger rolleri kullanılır, HER ZAMAN ikon+etiketle.
|
|
277
|
+
* Grafik renkleri METİN için KULLANILMAZ — etiket/değer/lejant metni fg/
|
|
278
|
+
* fg-muted taşır, renkli işaret (nokta/çizgi) yanında durur.
|
|
279
|
+
*/
|
|
280
|
+
--color-chart-1: var(--mf-chart-1);
|
|
281
|
+
--color-chart-2: var(--mf-chart-2);
|
|
282
|
+
--color-chart-3: var(--mf-chart-3);
|
|
283
|
+
--color-chart-4: var(--mf-chart-4);
|
|
284
|
+
--color-chart-5: var(--mf-chart-5);
|
|
285
|
+
--color-chart-6: var(--mf-chart-6);
|
|
286
|
+
--color-chart-7: var(--mf-chart-7);
|
|
287
|
+
--color-chart-8: var(--mf-chart-8);
|
|
288
|
+
--color-chart-other: var(--mf-chart-other);
|
|
289
|
+
--color-chart-seq-1: var(--mf-chart-seq-1);
|
|
290
|
+
--color-chart-seq-2: var(--mf-chart-seq-2);
|
|
291
|
+
--color-chart-seq-3: var(--mf-chart-seq-3);
|
|
292
|
+
--color-chart-seq-4: var(--mf-chart-seq-4);
|
|
293
|
+
--color-chart-seq-5: var(--mf-chart-seq-5);
|
|
294
|
+
--color-chart-div-1: var(--mf-chart-div-1);
|
|
295
|
+
--color-chart-div-2: var(--mf-chart-div-2);
|
|
296
|
+
--color-chart-div-3: var(--mf-chart-div-3);
|
|
297
|
+
--color-chart-div-4: var(--mf-chart-div-4);
|
|
298
|
+
--color-chart-div-5: var(--mf-chart-div-5);
|
|
299
|
+
|
|
300
|
+
/* Metin */
|
|
301
|
+
--color-fg: var(--mf-fg);
|
|
302
|
+
--color-fg-muted: var(--mf-fg-muted);
|
|
303
|
+
--color-fg-subtle: var(--mf-fg-subtle);
|
|
304
|
+
--color-fg-on-accent: var(--mf-fg-on-accent);
|
|
305
|
+
--color-fg-inverse: var(--mf-fg-inverse);
|
|
306
|
+
/* Geriye dönük takma adlar — artık kendi X-fill-fg rolüne işaret ediyor (aşağıya bkz.), yeni kod bunları KULLANMAZ. */
|
|
307
|
+
--color-fg-on-success: var(--mf-fg-on-success);
|
|
308
|
+
--color-fg-on-warning: var(--mf-fg-on-warning);
|
|
309
|
+
|
|
310
|
+
/* Marka rolü (metin/kenarlık/ikon bağlamında) */
|
|
311
|
+
--color-accent: var(--mf-accent);
|
|
312
|
+
--color-accent-strong: var(--mf-accent-strong);
|
|
313
|
+
--color-focus-ring: var(--mf-focus-ring);
|
|
314
|
+
/*
|
|
315
|
+
* Dolu blok rolü — LIGHT'ta artık primary-900 (`#062c22`, spec'in "Forest
|
|
316
|
+
* Emerald" CTA'sı — kullanıcı kararı), DARK'ta primary-400 (`#10b981`,
|
|
317
|
+
* spec'in canlı zümrüt CTA'sı) + `--mf-fg-on-accent` DARK'ta mürekkep
|
|
318
|
+
* (beyaz metin `#10B981` üstünde 2.54:1, AA altı — kullanıcı kararı: canlı
|
|
319
|
+
* blok + koyu metin tercih edildi). `applyMfTheme({accent})` bu üç satırı
|
|
320
|
+
* da yazar (bkz. theming/apply.ts) — tüketici aksanının HER İKİ yarısı da
|
|
321
|
+
* ayrı ayrı `fgOnAccent()` ile hesaplanır.
|
|
322
|
+
*/
|
|
323
|
+
--color-accent-fill: var(--mf-accent-fill);
|
|
324
|
+
--color-accent-fill-hover: var(--mf-accent-fill-hover);
|
|
325
|
+
/* Primary'nin KENDİ tonal işareti (Progress/Dropzone track, seçili satır/hücre vb.) — X-tint ile aynı desen. */
|
|
326
|
+
--color-primary-tint: var(--mf-primary-tint);
|
|
327
|
+
--color-primary-tint-fg: var(--mf-primary-tint-fg);
|
|
328
|
+
|
|
329
|
+
/* "Secondary" (spec) — nötr dolu buton/rozet zemini, `bg-surface-alt`'tan AYRI: spec'in kendi hex'leri, moda göre takas olur. */
|
|
330
|
+
--color-neutral-fill: var(--mf-neutral-fill);
|
|
331
|
+
--color-neutral-fill-hover: var(--mf-neutral-fill-hover);
|
|
332
|
+
--color-neutral-fill-fg: var(--mf-neutral-fill-fg);
|
|
333
|
+
|
|
334
|
+
/* Semantik beşli — success/warning/danger/info/help ortak deseni (üstteki doktrin yorumuna bkz.). */
|
|
335
|
+
--color-success-fill: var(--mf-success-fill);
|
|
336
|
+
--color-success-fill-hover: var(--mf-success-fill-hover);
|
|
337
|
+
--color-success-fill-fg: var(--mf-success-fill-fg);
|
|
338
|
+
--color-success-tint: var(--mf-success-tint);
|
|
339
|
+
--color-success-tint-fg: var(--mf-success-tint-fg);
|
|
340
|
+
|
|
341
|
+
--color-warning-fill: var(--mf-warning-fill);
|
|
342
|
+
--color-warning-fill-hover: var(--mf-warning-fill-hover);
|
|
343
|
+
--color-warning-fill-fg: var(--mf-warning-fill-fg);
|
|
344
|
+
--color-warning-tint: var(--mf-warning-tint);
|
|
345
|
+
--color-warning-tint-fg: var(--mf-warning-tint-fg);
|
|
346
|
+
|
|
347
|
+
--color-danger-fill: var(--mf-danger-fill);
|
|
348
|
+
--color-danger-fill-hover: var(--mf-danger-fill-hover);
|
|
349
|
+
--color-danger-fill-fg: var(--mf-danger-fill-fg);
|
|
350
|
+
--color-danger-tint: var(--mf-danger-tint);
|
|
351
|
+
--color-danger-tint-fg: var(--mf-danger-tint-fg);
|
|
352
|
+
|
|
353
|
+
--color-info-fill: var(--mf-info-fill);
|
|
354
|
+
--color-info-fill-hover: var(--mf-info-fill-hover);
|
|
355
|
+
--color-info-fill-fg: var(--mf-info-fill-fg);
|
|
356
|
+
--color-info-tint: var(--mf-info-tint);
|
|
357
|
+
--color-info-tint-fg: var(--mf-info-tint-fg);
|
|
358
|
+
|
|
359
|
+
--color-help-fill: var(--mf-help-fill);
|
|
360
|
+
--color-help-fill-hover: var(--mf-help-fill-hover);
|
|
361
|
+
--color-help-fill-fg: var(--mf-help-fill-fg);
|
|
362
|
+
--color-help-tint: var(--mf-help-tint);
|
|
363
|
+
--color-help-tint-fg: var(--mf-help-tint-fg);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
@layer base {
|
|
367
|
+
/*
|
|
368
|
+
* `.light` — koyu sayfa içindeki açık ada (bkz. dosya başındaki
|
|
369
|
+
* `@custom-variant dark` notu). Ada kendi zeminini/metnini almak için
|
|
370
|
+
* `bg-canvas text-fg` (veya `bg-surface`) class'ını da taşımalı — değişkenler
|
|
371
|
+
* yeniden tanımlanır ama `body`'nin zemini adaya kendiliğinden inmez.
|
|
372
|
+
*/
|
|
373
|
+
:root,
|
|
374
|
+
.light {
|
|
375
|
+
/*
|
|
376
|
+
* Native form kontrolleri (checkbox/radio/date input) ve scrollbar bu
|
|
377
|
+
* ipucu olmadan dark modda bile tarayıcının varsayılan (genelde beyaz/
|
|
378
|
+
* açık) chrome'unu çiziyordu — `accent-color` (Checkbox'ta zaten
|
|
379
|
+
* kullanılıyor) rengi belirler ama `color-scheme` alttaki tüm native UI
|
|
380
|
+
* kromunu moda uyduran asıl mekanizma.
|
|
381
|
+
*/
|
|
382
|
+
color-scheme: light;
|
|
383
|
+
|
|
384
|
+
/* Native scrollbar (Firefox/Chromium standart özellikleri) — ince + rol token'ıyla tema-uyumlu, sistem varsayılanı yerine. */
|
|
385
|
+
scrollbar-width: thin;
|
|
386
|
+
scrollbar-color: var(--mf-border-strong) transparent;
|
|
387
|
+
|
|
388
|
+
--mf-canvas: var(--color-neutral-100);
|
|
389
|
+
--mf-surface: #ffffff;
|
|
390
|
+
--mf-surface-alt: var(--color-neutral-200);
|
|
391
|
+
--mf-chrome: #ffffff;
|
|
392
|
+
--mf-surface-sunken: var(--color-neutral-50);
|
|
393
|
+
--mf-surface-active: var(--color-neutral-300);
|
|
394
|
+
--mf-overlay: #ffffff;
|
|
395
|
+
/* Ters yüzey (tooltip vb.) — spec'in "Contrast/Inverse" çifti, literal. */
|
|
396
|
+
--mf-surface-inverse: #04110d;
|
|
397
|
+
/* Mikro glassmorphism — dialog/sheet/drawer/toast paneli + sabit üst çubuk; %82 opak beyaz, backdrop-blur ile birlikte kullanılır (bkz. core/recipes.ts glassSurface). */
|
|
398
|
+
--mf-glass: rgba(255, 255, 255, 0.82);
|
|
399
|
+
|
|
400
|
+
--mf-border-subtle: var(--color-neutral-200);
|
|
401
|
+
--mf-border: var(--color-neutral-300);
|
|
402
|
+
--mf-border-strong: var(--color-neutral-400);
|
|
403
|
+
/* Border-first depth — alfa marka-tonlu çizgi, gölge YERİNE kapsayıcı kenarlığı (bkz. elevation.css doktrin notu). rgba(11,61,36,.16) beyaz üstünde TAM spec'in `#D8E0DC`sine karışır. */
|
|
404
|
+
--mf-hairline: rgba(11, 61, 36, 0.16);
|
|
405
|
+
|
|
406
|
+
/* Durum katmanı — `--mf-fg` (#0a1c17) tabanlı alfa örtüler. */
|
|
407
|
+
--mf-state-hover: rgba(10, 28, 23, 0.05);
|
|
408
|
+
--mf-state-pressed: rgba(10, 28, 23, 0.09);
|
|
409
|
+
--mf-state-selected: rgba(10, 28, 23, 0.07);
|
|
410
|
+
|
|
411
|
+
/* Spec literalleri (Porselen zemin üstünde "mat baskı" hissi — nötr-600/900 basamağı yerine elle). */
|
|
412
|
+
--mf-fg: #0a1c17;
|
|
413
|
+
--mf-fg-muted: #4a5d56;
|
|
414
|
+
--mf-fg-subtle: var(--color-neutral-500);
|
|
415
|
+
--mf-fg-on-accent: #ffffff;
|
|
416
|
+
--mf-fg-inverse: #f8fafc;
|
|
417
|
+
|
|
418
|
+
--mf-accent: var(--color-primary-600);
|
|
419
|
+
--mf-accent-strong: var(--color-primary-700);
|
|
420
|
+
--mf-focus-ring: var(--color-primary-600);
|
|
421
|
+
/* Dolu blok — LIGHT'ta 900 (`#062c22`, beyaz metinle 15:1) — kullanıcı kararı, bkz. rol katmanı doktrin yorumu. Hover 700. */
|
|
422
|
+
--mf-accent-fill: var(--color-primary-900);
|
|
423
|
+
--mf-accent-fill-hover: var(--color-primary-700);
|
|
424
|
+
/* Primary'nin kendi tonal işareti — X-tint ile aynı `color-mix` deseni, çapa LIGHT'ta 600. */
|
|
425
|
+
--mf-primary-tint: color-mix(in srgb, var(--color-primary-600) 12%, transparent);
|
|
426
|
+
--mf-primary-tint-fg: var(--color-primary-800);
|
|
427
|
+
|
|
428
|
+
/* "Secondary" — spec'in kendi hex'leri (nötr rampadan BAĞIMSIZ, `bg-surface-alt`'la karıştırılmaz). */
|
|
429
|
+
--mf-neutral-fill: #e2e8e5;
|
|
430
|
+
--mf-neutral-fill-hover: #d1dcd7;
|
|
431
|
+
--mf-neutral-fill-fg: #1c2825;
|
|
432
|
+
|
|
433
|
+
/*
|
|
434
|
+
* Semantik metin/ikon rolü — success/warning/info 700 (600 beyaz/dolu
|
|
435
|
+
* blok üstünde AA'yı geçmiyor), danger/help 600 (spec'in Hex'i doğrudan
|
|
436
|
+
* yeterli).
|
|
437
|
+
*/
|
|
438
|
+
--mf-success: var(--color-success-700);
|
|
439
|
+
--mf-warning: var(--color-warning-700);
|
|
440
|
+
--mf-danger: var(--color-danger-600);
|
|
441
|
+
--mf-info: var(--color-info-700);
|
|
442
|
+
--mf-help: var(--color-help-600);
|
|
443
|
+
|
|
444
|
+
/*
|
|
445
|
+
* Dolu blok beşlisi — danger/help/info "her zaman koyu/doygun blok +
|
|
446
|
+
* beyaz metin" (deep-fill mirası); success/warning "doğal olarak açık
|
|
447
|
+
* yaşayan" blok + HER ZAMAN mürekkep metin (bright-fill mirası, ama artık
|
|
448
|
+
* ayrı bir "tür" değil, sadece bu üç token'ın farklı değeri).
|
|
449
|
+
*/
|
|
450
|
+
--mf-success-fill: var(--color-success-600);
|
|
451
|
+
--mf-success-fill-hover: var(--color-success-500);
|
|
452
|
+
--mf-success-fill-fg: #04110d;
|
|
453
|
+
|
|
454
|
+
--mf-warning-fill: var(--color-warning-600);
|
|
455
|
+
--mf-warning-fill-hover: var(--color-warning-500);
|
|
456
|
+
--mf-warning-fill-fg: #04110d;
|
|
457
|
+
|
|
458
|
+
--mf-danger-fill: var(--color-danger-600);
|
|
459
|
+
--mf-danger-fill-hover: var(--color-danger-700);
|
|
460
|
+
--mf-danger-fill-fg: #ffffff;
|
|
461
|
+
|
|
462
|
+
/* info 600 hem dolu blok hem metin olarak AA'yı geçmiyor (4.1:1) — fill de 700'e taşındı. */
|
|
463
|
+
--mf-info-fill: var(--color-info-700);
|
|
464
|
+
--mf-info-fill-hover: var(--color-info-800);
|
|
465
|
+
--mf-info-fill-fg: #ffffff;
|
|
466
|
+
|
|
467
|
+
--mf-help-fill: var(--color-help-600);
|
|
468
|
+
--mf-help-fill-hover: var(--color-help-700);
|
|
469
|
+
--mf-help-fill-fg: #ffffff;
|
|
470
|
+
|
|
471
|
+
/*
|
|
472
|
+
* Tonal işaret ("Soft Tinting", spec) — rampanın kendi LIGHT çapası
|
|
473
|
+
* (600) üstünde %12 alfa `color-mix`, metin rampanın 800 basamağı.
|
|
474
|
+
* Opaklık burada BİLİNÇLİ (eski "düz basamak çifti, opaklık DEĞİL"
|
|
475
|
+
* kuralının tersine çevrilmesi) — spec'in tekniği zaten budur, ve
|
|
476
|
+
* `color-mix` her zeminde (surface/canvas/overlay/surface-alt) ayrı ayrı
|
|
477
|
+
* karışıp `check:contrast`'ta dördü de doğrulanıyor.
|
|
478
|
+
*/
|
|
479
|
+
--mf-success-tint: color-mix(in srgb, var(--color-success-600) 12%, transparent);
|
|
480
|
+
--mf-success-tint-fg: var(--color-success-800);
|
|
481
|
+
--mf-warning-tint: color-mix(in srgb, var(--color-warning-600) 12%, transparent);
|
|
482
|
+
--mf-warning-tint-fg: var(--color-warning-800);
|
|
483
|
+
--mf-danger-tint: color-mix(in srgb, var(--color-danger-600) 12%, transparent);
|
|
484
|
+
--mf-danger-tint-fg: var(--color-danger-800);
|
|
485
|
+
--mf-info-tint: color-mix(in srgb, var(--color-info-600) 12%, transparent);
|
|
486
|
+
--mf-info-tint-fg: var(--color-info-800);
|
|
487
|
+
--mf-help-tint: color-mix(in srgb, var(--color-help-600) 12%, transparent);
|
|
488
|
+
--mf-help-tint-fg: var(--color-help-800);
|
|
489
|
+
|
|
490
|
+
/* Geriye dönük takma adlar — yeni kod `success-fill-fg`/`warning-fill-fg` kullanır. */
|
|
491
|
+
--mf-fg-on-success: var(--mf-success-fill-fg);
|
|
492
|
+
--mf-fg-on-warning: var(--mf-warning-fill-fg);
|
|
493
|
+
|
|
494
|
+
/*
|
|
495
|
+
* Grafik — kategorik 8 slot (emerald · blue · orange · violet · lime ·
|
|
496
|
+
* sky · amber · pink). Sıra CVD güvenlik mekanizmasıdır, DEĞİŞTİRMEYİN:
|
|
497
|
+
* dataviz `validate_palette.js` ile #fff yüzeye karşı doğrulandı — bant
|
|
498
|
+
* L 0.43–0.77, kroma ≥0.10, en kötü KOMŞU CVD ΔE 13.8 (hedef ≥8), normal
|
|
499
|
+
* görüş ΔE 17.8 (taban ≥15), 8/8 ≥3:1. İlk 3 slot tüm-çiftler (saçılım/
|
|
500
|
+
* küçük çoklular) testini de geçer (ΔE 8.1) — o formlarda en fazla 3 seri.
|
|
501
|
+
* Slot değerleri ARAMAYLA seçildi (9 aday aileden, geçen 632 sıralama
|
|
502
|
+
* arasından en yüksek komşu ayrımı) — elle "güzelleştirmeyin", yeniden
|
|
503
|
+
* doğrulayın. Tema motoru `roles.light['chart-N']` ile ezebilir.
|
|
504
|
+
*/
|
|
505
|
+
--mf-chart-1: #078968;
|
|
506
|
+
--mf-chart-2: #3370c7;
|
|
507
|
+
--mf-chart-3: #c85c2e;
|
|
508
|
+
--mf-chart-4: #7a53b4;
|
|
509
|
+
--mf-chart-5: #6f8d2a;
|
|
510
|
+
--mf-chart-6: #068db6;
|
|
511
|
+
--mf-chart-7: #b87501;
|
|
512
|
+
--mf-chart-8: #bb4e7f;
|
|
513
|
+
/* "Diğer" — 9. ve sonraki seriler buraya katlanır. Renksiz olduğu için geri planda okunur; 500 canvas üstünde 2.91:1 kalıyordu, 600 ≥3:1. */
|
|
514
|
+
--mf-chart-other: var(--color-neutral-600);
|
|
515
|
+
/* Sıralı — zümrüt, açık→koyu; 2-5 ordinal kullanımda da (≥2:1) geçer, 1 "sıfıra yakın" olarak zemine çekilebilir. */
|
|
516
|
+
--mf-chart-seq-1: #bfe9d8;
|
|
517
|
+
--mf-chart-seq-2: #75c4a6;
|
|
518
|
+
--mf-chart-seq-3: #2fa984;
|
|
519
|
+
--mf-chart-seq-4: #068262;
|
|
520
|
+
--mf-chart-seq-5: #035b44;
|
|
521
|
+
/* Iraksak — 1-2 turuncu kol, 3 nötr orta nokta (renk YOK), 4-5 mavi kol. */
|
|
522
|
+
--mf-chart-div-1: #ac430e;
|
|
523
|
+
--mf-chart-div-2: #dda189;
|
|
524
|
+
--mf-chart-div-3: var(--color-neutral-200);
|
|
525
|
+
--mf-chart-div-4: #96b3de;
|
|
526
|
+
--mf-chart-div-5: #2460b7;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
/*
|
|
530
|
+
* Dark modda "chrome en koyu, içerik daha açık" kuralı (975 → 950 → 900
|
|
531
|
+
* → 850, dört gerçek kademe). Gölgeler neredeyse kısılıyor — derinlik
|
|
532
|
+
* artık kademe FARKINDAN geliyor, ışıktan değil.
|
|
533
|
+
*/
|
|
534
|
+
.dark {
|
|
535
|
+
color-scheme: dark;
|
|
536
|
+
|
|
537
|
+
--mf-canvas: var(--color-neutral-950);
|
|
538
|
+
--mf-surface: var(--color-neutral-900);
|
|
539
|
+
--mf-surface-alt: var(--color-neutral-850);
|
|
540
|
+
--mf-chrome: var(--color-neutral-975);
|
|
541
|
+
--mf-surface-sunken: var(--color-neutral-950);
|
|
542
|
+
--mf-surface-active: var(--color-neutral-800);
|
|
543
|
+
--mf-overlay: var(--color-neutral-850);
|
|
544
|
+
--mf-surface-inverse: #f8fafc;
|
|
545
|
+
/* Retinted — yeni surface-900 (`#121e1b`) tabanlı %78 opak zümrüt-siyah. */
|
|
546
|
+
--mf-glass: rgba(18, 30, 27, 0.78);
|
|
547
|
+
|
|
548
|
+
--mf-border-subtle: var(--color-neutral-900);
|
|
549
|
+
--mf-border: var(--color-neutral-800);
|
|
550
|
+
--mf-border-strong: var(--color-neutral-700);
|
|
551
|
+
/* rgba(103,145,132,.2) yeni surface-900 (`#121e1b`) üstünde TAM spec'in `#233530`sine karışır. */
|
|
552
|
+
--mf-hairline: rgba(103, 145, 132, 0.2);
|
|
553
|
+
|
|
554
|
+
/* Durum katmanı — `--mf-fg` (#ecf3f0) tabanlı; koyu zeminde aynı algısal ağırlık için alfa bir tık yüksek. */
|
|
555
|
+
--mf-state-hover: rgba(236, 243, 240, 0.06);
|
|
556
|
+
--mf-state-pressed: rgba(236, 243, 240, 0.11);
|
|
557
|
+
--mf-state-selected: rgba(236, 243, 240, 0.08);
|
|
558
|
+
|
|
559
|
+
--mf-fg: #ecf3f0;
|
|
560
|
+
--mf-fg-muted: #8a9e97;
|
|
561
|
+
/*
|
|
562
|
+
* neutral-500 (light'takiyle aynı basamak) koyu zeminde fazla parlak/
|
|
563
|
+
* okunaklı kalıyordu — placeholder gibi "en düşük vurgulu" metnin dark
|
|
564
|
+
* modda görsel ağırlığı korunsun diye bir basamak koyulaştırıldı.
|
|
565
|
+
*/
|
|
566
|
+
--mf-fg-subtle: var(--color-neutral-600);
|
|
567
|
+
/* Dolu blok DARK'ta beyaz DEĞİL mürekkep (`#04110D`) — primary-400 (`#10B981`) üstünde beyaz sadece 2.54:1 (AA altı), kullanıcı kararı. */
|
|
568
|
+
--mf-fg-on-accent: #04110d;
|
|
569
|
+
--mf-fg-inverse: #04110d;
|
|
570
|
+
|
|
571
|
+
--mf-accent: var(--color-primary-400);
|
|
572
|
+
--mf-accent-strong: var(--color-primary-300);
|
|
573
|
+
--mf-focus-ring: var(--color-primary-400);
|
|
574
|
+
/* Dolu blok — DARK'ta primary-400 (`#10b981`, spec'in canlı zümrüt CTA'sı), hover 500. */
|
|
575
|
+
--mf-accent-fill: var(--color-primary-400);
|
|
576
|
+
--mf-accent-fill-hover: var(--color-primary-500);
|
|
577
|
+
/* Tint çapası DARK'ta 400 (mod-takaslı — spec'in dark Hex'i). */
|
|
578
|
+
--mf-primary-tint: color-mix(in srgb, var(--color-primary-400) 12%, transparent);
|
|
579
|
+
--mf-primary-tint-fg: var(--color-primary-400);
|
|
580
|
+
|
|
581
|
+
--mf-neutral-fill: #526660;
|
|
582
|
+
--mf-neutral-fill-hover: #637b74;
|
|
583
|
+
--mf-neutral-fill-fg: #ffffff;
|
|
584
|
+
|
|
585
|
+
/* Dark'ta beş rampa da AYNI basamakta metin/ikon: 400. */
|
|
586
|
+
--mf-success: var(--color-success-400);
|
|
587
|
+
--mf-warning: var(--color-warning-400);
|
|
588
|
+
--mf-danger: var(--color-danger-400);
|
|
589
|
+
--mf-info: var(--color-info-400);
|
|
590
|
+
--mf-help: var(--color-help-400);
|
|
591
|
+
|
|
592
|
+
/*
|
|
593
|
+
* Dolu blok beşlisi DARK'ta hepsi AYNI desende: 400 zemin + 500 hover +
|
|
594
|
+
* mürekkep metin — spec'in beş rengi de (`#10B981`/`#34D399`/`#F59E0B`/
|
|
595
|
+
* `#E57373`/`#38BDF8`/`#A78BFA`) beyaz metinle AA'yı geçmiyor (1.9–3.0:1).
|
|
596
|
+
*/
|
|
597
|
+
--mf-success-fill: var(--color-success-400);
|
|
598
|
+
--mf-success-fill-hover: var(--color-success-500);
|
|
599
|
+
--mf-success-fill-fg: #04110d;
|
|
600
|
+
|
|
601
|
+
--mf-warning-fill: var(--color-warning-400);
|
|
602
|
+
--mf-warning-fill-hover: var(--color-warning-500);
|
|
603
|
+
--mf-warning-fill-fg: #04110d;
|
|
604
|
+
|
|
605
|
+
--mf-danger-fill: var(--color-danger-400);
|
|
606
|
+
--mf-danger-fill-hover: var(--color-danger-500);
|
|
607
|
+
--mf-danger-fill-fg: #04110d;
|
|
608
|
+
|
|
609
|
+
--mf-info-fill: var(--color-info-400);
|
|
610
|
+
--mf-info-fill-hover: var(--color-info-500);
|
|
611
|
+
--mf-info-fill-fg: #04110d;
|
|
612
|
+
|
|
613
|
+
--mf-help-fill: var(--color-help-400);
|
|
614
|
+
--mf-help-fill-hover: var(--color-help-500);
|
|
615
|
+
--mf-help-fill-fg: #04110d;
|
|
616
|
+
|
|
617
|
+
/* Tonal işaret DARK'ta çapa 400 (spec'in dark Hex'i), metin de 400 (zeminle aynı basamak — "Parlak mat metin" spec tarifi). */
|
|
618
|
+
--mf-success-tint: color-mix(in srgb, var(--color-success-400) 12%, transparent);
|
|
619
|
+
--mf-success-tint-fg: var(--color-success-400);
|
|
620
|
+
--mf-warning-tint: color-mix(in srgb, var(--color-warning-400) 12%, transparent);
|
|
621
|
+
--mf-warning-tint-fg: var(--color-warning-400);
|
|
622
|
+
--mf-danger-tint: color-mix(in srgb, var(--color-danger-400) 12%, transparent);
|
|
623
|
+
--mf-danger-tint-fg: var(--color-danger-400);
|
|
624
|
+
--mf-info-tint: color-mix(in srgb, var(--color-info-400) 12%, transparent);
|
|
625
|
+
--mf-info-tint-fg: var(--color-info-400);
|
|
626
|
+
--mf-help-tint: color-mix(in srgb, var(--color-help-400) 12%, transparent);
|
|
627
|
+
--mf-help-tint-fg: var(--color-help-400);
|
|
628
|
+
|
|
629
|
+
--mf-fg-on-success: var(--mf-success-fill-fg);
|
|
630
|
+
--mf-fg-on-warning: var(--mf-warning-fill-fg);
|
|
631
|
+
|
|
632
|
+
/* Grafik — AYNI 8 hue, koyu yüzey (#121e1b) için ayrı seçilmiş basamaklar: bant L 0.48–0.67, komşu CVD ΔE 13.6, normal 17.6, 8/8 ≥3:1, ilk 3 tüm-çiftler ΔE 9.3. */
|
|
633
|
+
--mf-chart-1: #15ab83;
|
|
634
|
+
--mf-chart-2: #4e8ce6;
|
|
635
|
+
--mf-chart-3: #dc6e41;
|
|
636
|
+
--mf-chart-4: #9b74d9;
|
|
637
|
+
--mf-chart-5: #80a03e;
|
|
638
|
+
--mf-chart-6: #24a0cc;
|
|
639
|
+
--mf-chart-7: #c8800d;
|
|
640
|
+
--mf-chart-8: #d76797;
|
|
641
|
+
--mf-chart-other: var(--color-neutral-600);
|
|
642
|
+
/* Sıralı — dark'ta çapa ters: düşük değer zemine yakın koyu, yüksek değer parlak. */
|
|
643
|
+
--mf-chart-seq-1: #0f4232;
|
|
644
|
+
--mf-chart-seq-2: #04654c;
|
|
645
|
+
--mf-chart-seq-3: #078968;
|
|
646
|
+
--mf-chart-seq-4: #37b08a;
|
|
647
|
+
--mf-chart-seq-5: #81d1b3;
|
|
648
|
+
--mf-chart-div-1: #dc6e41;
|
|
649
|
+
--mf-chart-div-2: #7d4833;
|
|
650
|
+
--mf-chart-div-3: #2b3d38;
|
|
651
|
+
--mf-chart-div-4: #3f597f;
|
|
652
|
+
--mf-chart-div-5: #5992e7;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/*
|
|
656
|
+
* Marka rengiyle tutarlı metin seçimi (varsayılan mavi tarayıcı vurgusu
|
|
657
|
+
* yerine) — düz rampa basamağı (badge/avatar/ray ile aynı "kalıcı tonal
|
|
658
|
+
* işaret" dili, opaklık DEĞİL): seçim her zeminde garantili kontrastlı.
|
|
659
|
+
*/
|
|
660
|
+
::selection {
|
|
661
|
+
background-color: var(--color-primary-200);
|
|
662
|
+
color: var(--color-primary-950);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.dark ::selection {
|
|
666
|
+
background-color: var(--color-primary-800);
|
|
667
|
+
color: var(--color-primary-50);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
.dark .light ::selection {
|
|
671
|
+
background-color: var(--color-primary-200);
|
|
672
|
+
color: var(--color-primary-950);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/*
|
|
676
|
+
* Geniş gam (Display P3) — zümrüt, sRGB'nin en çok kırptığı renk ailesi.
|
|
677
|
+
* P3 ekranlarda markanın canlı basamakları (dark modun dolu bloğu/metni ve
|
|
678
|
+
* glow) AYNI OKLCH açıklığında, daha yüksek kromayla çizilir. L sabit
|
|
679
|
+
* tutulduğu için kontrast korunur; hesap sRGB hex'lerinin kontrastıyla
|
|
680
|
+
* karşılaştırılarak doğrulandı: mürekkep üstünde 7.59→7.75, 5.11→5.21,
|
|
681
|
+
* 9.90→10.16 (artış, düşüş yok). Kroma, P3 gam sınırının %85'inde tutuldu.
|
|
682
|
+
* `check:contrast` sRGB hex'lerini doğrular — bu blok yalnızca
|
|
683
|
+
* kontrastı ARTIRAN bir üst katman. `applyMfTheme({accent})` inline style
|
|
684
|
+
* yazdığı için tüketici markası bu bloğu her zaman ezer.
|
|
685
|
+
*/
|
|
686
|
+
@media (color-gamut: p3) {
|
|
687
|
+
:root {
|
|
688
|
+
--color-primary-400: oklch(69.6% 0.198 162.5);
|
|
689
|
+
--color-primary-500: oklch(59.6% 0.169 163.2);
|
|
690
|
+
--color-success-400: oklch(77.2% 0.23 148);
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
}
|