@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
|
@@ -0,0 +1,745 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken, Provider } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
type RampStep = '50' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '950';
|
|
5
|
+
type AccentRamp = Record<RampStep, string>;
|
|
6
|
+
declare const RAMP_STEPS: readonly RampStep[];
|
|
7
|
+
/**
|
|
8
|
+
* `hex` bir accent'in "600 basamağı" gibi ele alınır (kitin kendi kuralı,
|
|
9
|
+
* bkz. `color.css` "Her rampada basamak 600 = LIGHT modda dolu/etkileşimli
|
|
10
|
+
* kullanım" notu) — girdinin hue'su + kroma karakteri korunur, tüm 11
|
|
11
|
+
* basamak `LIGHTNESS_BY_STEP`/`CHROMA_MULTIPLIER_BY_STEP` sabit eğrisiyle
|
|
12
|
+
* YENİDEN üretilir (girdinin TAM OLARAK 600'e denk gelen bir L'de olması
|
|
13
|
+
* ŞART DEĞİL — ör. çok açık bir hex verilse bile 950 basamağı yine
|
|
14
|
+
* "neredeyse siyah" çıkar, ramp her zaman tutarlı).
|
|
15
|
+
*
|
|
16
|
+
* @throws girdi `#rgb`/`#rrggbb` değilse.
|
|
17
|
+
*/
|
|
18
|
+
declare function createAccentRamp(hex: string): AccentRamp;
|
|
19
|
+
/**
|
|
20
|
+
* Bir rampa basamağının üstüne binecek metin rengi — `#ffffff` veya kitin
|
|
21
|
+
* `--mf-surface-inverse`'i (`#04110d`, `color.css`) arasından HANGİSİ WCAG
|
|
22
|
+
* kontrastı daha yüksekse. `theming/apply.ts`'teki `accentRoleLines()` bunu
|
|
23
|
+
* `ramp['600']` (LIGHT yarı) VE `ramp['400']` (DARK yarı) için AYRI AYRI
|
|
24
|
+
* çağırır — accent-fill artık İKİ basamak kullanıyor (kitin varsayılanında
|
|
25
|
+
* 900/400, tüketici aksanlarında 600/400), genelde çok farklı parlaklıkta,
|
|
26
|
+
* her biri kendi doğru metin rengini WCAG hesabıyla (sabit varsayım DEĞİL)
|
|
27
|
+
* bulur.
|
|
28
|
+
*/
|
|
29
|
+
declare function fgOnAccent(accentHex: string): string;
|
|
30
|
+
/** `ramp`'in `600` basamağının kontrast oranını (beyaz metne karşı) döner — `ramp.spec.ts`/tüketici sağlık kontrolü için. */
|
|
31
|
+
declare function accentContrastWithWhite(ramp: AccentRamp): number;
|
|
32
|
+
|
|
33
|
+
type RadiusScale = 'sharp' | 'default' | 'soft';
|
|
34
|
+
/** Kontrol yüksekliği merdiveni (sm/md/lg): `compact` 28/32/36px, `default` 32/36/40px, `comfortable` 36/40/44px — bkz. `radius.css` `--control-h-*`. */
|
|
35
|
+
type MfDensity = 'compact' | 'default' | 'comfortable';
|
|
36
|
+
type NeutralTint = 'cool' | 'neutral' | 'warm';
|
|
37
|
+
/**
|
|
38
|
+
* Nötr rampa 13 basamaklı (`850`/`975` DAHİL) — diğer altı rampanın (primary/
|
|
39
|
+
* success/warning/danger/info/help) 11 basamaklık `RampStep`'inden AYRI bir
|
|
40
|
+
* tip (bkz. `color.css` "RENK — HAM RAMPALAR" notu, `NEUTRAL_STEPS` — `apply.ts`).
|
|
41
|
+
*/
|
|
42
|
+
declare const MF_NEUTRAL_RAMP_STEPS: readonly ["50", "100", "200", "300", "400", "500", "600", "700", "800", "850", "900", "950", "975"];
|
|
43
|
+
type MfNeutralRampStep = (typeof MF_NEUTRAL_RAMP_STEPS)[number];
|
|
44
|
+
/** `ramps.<tone>` altında elle geçilebilen altı 11-basamaklı rampa — `neutral` (13 basamak) AYRI ele alınır. */
|
|
45
|
+
declare const MF_RAMP_TONES: readonly ["primary", "success", "warning", "danger", "info", "help"];
|
|
46
|
+
type MfRampTone = (typeof MF_RAMP_TONES)[number];
|
|
47
|
+
/**
|
|
48
|
+
* `color.css`'in rol katmanındaki, bir RAMPA basamağına `var()` İLE
|
|
49
|
+
* BAĞLI OLMAYAN (yani `ramps.*` override'ıyla OTOMATİK takip ETMEYEN) TEK
|
|
50
|
+
* TEK yazılmış literal token'lar — `accent`/`ramps.*` DIŞINDA kalan, marka
|
|
51
|
+
* beyaz etiketlemesi için hâlâ ayarlanabilir olması gereken son katman.
|
|
52
|
+
* (`--mf-accent`, `--mf-success-fill`, `--mf-success-tint` vb. BURADA YOK —
|
|
53
|
+
* hepsi zaten `ramps.primary`/`ramps.success` override'ıyla otomatik
|
|
54
|
+
* güncellenir, bkz. `color.css`'teki `var(--color-X-NNN)` referansları.)
|
|
55
|
+
*/
|
|
56
|
+
declare const MF_ROLE_TOKENS: readonly ["surface", "chrome", "overlay", "surface-inverse", "glass", "fg", "fg-muted", "fg-on-accent", "fg-inverse", "hairline", "neutral-fill", "neutral-fill-hover", "neutral-fill-fg", "success-fill-fg", "warning-fill-fg", "danger-fill-fg", "info-fill-fg", "help-fill-fg", "chart-1", "chart-2", "chart-3", "chart-4", "chart-5", "chart-6", "chart-7", "chart-8", "chart-other"];
|
|
57
|
+
type MfRoleToken = (typeof MF_ROLE_TOKENS)[number];
|
|
58
|
+
/**
|
|
59
|
+
* Tam beyaz etiket tema tanımı — `applyMfTheme()`/`exportMfThemeCss()`'e
|
|
60
|
+
* verilir. HER alan OPSİYONEL; hiçbiri verilmezse kit kendi "Deep Emerald &
|
|
61
|
+
* Slate" varsayılanında kalır (bkz. `applyMfTheme` doc'u). Sadece VERİLEN
|
|
62
|
+
* alanlar `applyMfTheme`'de INLINE STYLE olarak YAZILIR — bir "tüm token
|
|
63
|
+
* dökümü" ÜRETİLMEZ/GEREKMEZ, bu yüzden kitin CSS kaynağıyla asla senkron
|
|
64
|
+
* DIŞI kalamaz (delta-only, bkz. dosya üstündeki mimari not).
|
|
65
|
+
*
|
|
66
|
+
* - `accent`/`radiusScale`/`neutralTint` — mevcut kısayollar (bkz. `apply.ts`).
|
|
67
|
+
* - `density` — kit genelinde kontrol yüksekliği (Button/Input/Select/...).
|
|
68
|
+
* Bir alt ağaç için `data-density="compact"` özniteliği de aynı işi yapar.
|
|
69
|
+
* - `ramps` — bir tonun TÜM basamaklarını (ya da bir kısmını) ELLE verir.
|
|
70
|
+
* `ramps.primary` verilirse `accent` kısayolunu (aynı çağrıda) EZER — TAM
|
|
71
|
+
* kontrol isteyen tüketiciler için. Bir tonun rampasını değiştirmek O
|
|
72
|
+
* tonun TÜM türetilmiş rol token'larını (`--mf-X`, `--mf-X-fill`,
|
|
73
|
+
* `--mf-X-tint` vb.) OTOMATİK günceller — `color.css`'in rol katmanı
|
|
74
|
+
* zaten `var(--color-X-NNN)` ile bu rampaya BAĞLI (bkz. dosya üstündeki
|
|
75
|
+
* `MfRoleToken` notu). Bu, TEK bir alanla ("ramps.danger") beş türetilmiş
|
|
76
|
+
* token'ı BİRDEN doğru şekilde güncelleyen ASIL güç kaynağı.
|
|
77
|
+
* - `roles` — rampaya BAĞLI OLMAYAN literal token'lar (bkz. `MfRoleToken`).
|
|
78
|
+
* `light`/`dark` AYRI verilir; SADECE biri verilirse İKİ modda da AYNI
|
|
79
|
+
* değer kullanılır (basit/öngörülebilir davranış — hangi modda olduğunu
|
|
80
|
+
* PROBE etmek yerine).
|
|
81
|
+
* - `fonts`/`radius` — moddan BAĞIMSIZ, düz değer.
|
|
82
|
+
*/
|
|
83
|
+
interface MfThemeJson {
|
|
84
|
+
/** Doküman/editör amaçlı — JSON Schema referansı (bkz. `schema.ts`). Kit tarafından OKUNMAZ. */
|
|
85
|
+
$schema?: string;
|
|
86
|
+
/** İnsan-okur isim (ör. "Acme Kurumsal") — kit tarafından OKUNMAZ, sadece bir tema seçici/listesi için. */
|
|
87
|
+
name?: string;
|
|
88
|
+
accent?: string | null;
|
|
89
|
+
radiusScale?: RadiusScale;
|
|
90
|
+
density?: MfDensity;
|
|
91
|
+
neutralTint?: NeutralTint;
|
|
92
|
+
ramps?: Partial<Record<MfRampTone, Partial<Record<RampStep, string>>>> & {
|
|
93
|
+
neutral?: Partial<Record<MfNeutralRampStep, string>>;
|
|
94
|
+
};
|
|
95
|
+
roles?: {
|
|
96
|
+
light?: Partial<Record<MfRoleToken, string>>;
|
|
97
|
+
dark?: Partial<Record<MfRoleToken, string>>;
|
|
98
|
+
};
|
|
99
|
+
fonts?: {
|
|
100
|
+
sans?: string;
|
|
101
|
+
display?: string;
|
|
102
|
+
mono?: string;
|
|
103
|
+
};
|
|
104
|
+
radius?: Partial<Record<'xs' | 'sm' | 'md' | 'lg' | 'xl', string>>;
|
|
105
|
+
}
|
|
106
|
+
/** `MfThemeJson`'ın eski adı — `applyMfTheme({accent, radiusScale, neutralTint})` şeklindeki MEVCUT çağrılar (kısayol alt kümesi) hâlâ geçerli, bu takma ad SADECE geriye dönük TİP uyumluluğu için. */
|
|
107
|
+
type MfThemeConfig = MfThemeJson;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* `MfThemeJson`'ı CSS custom property'leri olarak `target`'a (varsayılan
|
|
111
|
+
* `document.documentElement`) YAZAR — sayfa YENİDEN YÜKLENMEDEN, hiçbir
|
|
112
|
+
* bileşen dosyasına dokunmadan tüm kit anında yeni temaya geçer. Bunun
|
|
113
|
+
* mümkün olmasının nedeni: Tailwind v4'ün ürettiği utility'ler (`bg-primary-600`,
|
|
114
|
+
* `rounded-md`, ...) derleme zamanında SABİT bir değere değil, doğrudan
|
|
115
|
+
* `var(--color-primary-600)`/`var(--radius-md)` REFERANSINA derleniyor (bkz.
|
|
116
|
+
* `docs/tr/mimari.md` "Token mimarisi") — CSS cascade'de bu satırlar
|
|
117
|
+
* `@theme`'in KENDİ tanımından SONRA (inline stil her zaman kazanır)
|
|
118
|
+
* çalıştığı için token'lar üzerinden TÜM bileşenler güncellenir. SADECE
|
|
119
|
+
* `config`'te VERİLEN alanlar yazılır ("delta-only") — bu fonksiyon kitin
|
|
120
|
+
* TÜM varsayılan token setini bilmek/üretmek ZORUNDA DEĞİL, bu yüzden
|
|
121
|
+
* kitin CSS kaynağıyla asla senkron dışı kalamaz.
|
|
122
|
+
*
|
|
123
|
+
* - `accent` verilirse: `createAccentRamp()` ile 11 basamaklı `--color-primary-*`
|
|
124
|
+
* YENİDEN üretilir + `accentRoleLines()` (`--mf-fg-on-accent`/`-accent-fill`/
|
|
125
|
+
* `-accent-fill-hover`, `light-dark()` literal değerleri — bkz. altta).
|
|
126
|
+
* `:root`/`.dark` bunları zaten `var()` ile referans aldığı için (bkz.
|
|
127
|
+
* `color.css` rol katmanı) `--mf-accent`/`--mf-accent-strong`/`--mf-focus-ring`/
|
|
128
|
+
* `--mf-primary-tint(-fg)` AYRICA yazılmaz — otomatik takip eder.
|
|
129
|
+
* - `accent: null` verilirse: yukarıdaki override'ların HEPSİ temizlenir, kit
|
|
130
|
+
* `color.css`'teki varsayılan "Deep Emerald" rampasına döner.
|
|
131
|
+
* - `ramps.primary` verilirse (`accent`'i EZER — aynı çağrıda ikisi de
|
|
132
|
+
* verilirse `ramps.primary` kazanır): basamak başına TAM kontrol, kısmi
|
|
133
|
+
* olabilir (`resolvedPrimaryRamp` ile O ANKİ değerlerle birleştirilir).
|
|
134
|
+
* - `ramps.success`/`warning`/`danger`/`info`/`help`/`neutral` verilirse:
|
|
135
|
+
* verilen basamaklar DOĞRUDAN yazılır — bu tonların TÜM türetilmiş rol
|
|
136
|
+
* token'ları (`--mf-X`, `--mf-X-fill`, `--mf-X-tint` vb.) `color.css`'te
|
|
137
|
+
* zaten `var(--color-X-NNN)` ile bu rampaya bağlı, OTOMATİK güncellenir.
|
|
138
|
+
* - `roles.light`/`roles.dark` verilirse: rampaya BAĞLI OLMAYAN literal
|
|
139
|
+
* token'lar (bkz. `MfRoleToken`) `light-dark()` ile yazılır.
|
|
140
|
+
* - `fonts`/`radius` verilirse: moddan bağımsız düz değerler yazılır —
|
|
141
|
+
* `radius` `radiusScale`'İN ÜSTÜNE (aynı çağrıda ikisi de verilirse SONRA
|
|
142
|
+
* uygulanır) basamak-bazlı ince ayar sağlar.
|
|
143
|
+
* - `radiusScale` verilirse: `--radius-{xs,sm,md,lg,xl}` nested ölçeği
|
|
144
|
+
* KORUYARAK (bkz. `radius.css` doktrini) birlikte küçülür/büyür.
|
|
145
|
+
* - `density` verilirse: `--control-h-{sm,md,lg}` merdiveni yazılır — tüm
|
|
146
|
+
* kontroller (Button/Input/Select/...) aynı hizada birlikte büyür/küçülür.
|
|
147
|
+
* - `neutralTint` verilirse: 13 basamaklı `--color-neutral-*` rampası ÇOK
|
|
148
|
+
* düşük oranda (bkz. `color-math.ts` `mixHex`) soğuk/sıcak bir tona kayar
|
|
149
|
+
* — `ramps.neutral` AYNI ÇAĞRIDA verildiyse ONUN ÜSTÜNE uygulanır (bu
|
|
150
|
+
* fonksiyondaki sıra: ramps → neutralTint).
|
|
151
|
+
*
|
|
152
|
+
* SSR güvenli — `document` yoksa no-op.
|
|
153
|
+
*/
|
|
154
|
+
declare function applyMfTheme(config: MfThemeJson, target?: HTMLElement): void;
|
|
155
|
+
/**
|
|
156
|
+
* `applyMfTheme()`'in YAZABİLECEĞİ HER inline override'ı temizler — bir
|
|
157
|
+
* tema özelleştiricideki "Varsayılana sıfırla" düğmesi için `accent: null`'ın
|
|
158
|
+
* genişletilmiş hali (o SADECE accent'i temizlerdi). Kit `color.css`'teki
|
|
159
|
+
* varsayılanlara TAMAMEN geri döner.
|
|
160
|
+
*/
|
|
161
|
+
declare function resetMfTheme(target?: HTMLElement): void;
|
|
162
|
+
/**
|
|
163
|
+
* `applyMfTheme` ile AYNI hesaplamayı yapar ama runtime'da uygulamak yerine
|
|
164
|
+
* yapıştırılabilir bir `{ selector } { ... }` bloğu (varsayılan `:root`)
|
|
165
|
+
* döner — tüketici build-time'da kendi `styles.css`'ine ekleyebilir (docs
|
|
166
|
+
* sitesindeki tema özelleştiricinin "CSS'i kopyala" düğmesi bunu kullanır).
|
|
167
|
+
* `roles.*` İÇİN de (runtime'daki AYNI `light-dark()` deseni) tek blokla
|
|
168
|
+
* hem açık hem koyu mod kapsanır, AYRI bir `.dark` bloğu GEREKMEZ. `ramps.
|
|
169
|
+
* primary` KISMİ verilip 400/500/600/700'ün TAMAMI yoksa `--mf-accent-fill`
|
|
170
|
+
* vb. satırlar (canlı DOM'dan O ANKİ değeri okuyamadığı için) ATLANIR — bu
|
|
171
|
+
* durumda `applyMfTheme`'i (runtime, `resolvedPrimaryRamp` ile tamamlar)
|
|
172
|
+
* tercih edin. `neutralTint` BURADA desteklenmez — mevcut nötr değerleri
|
|
173
|
+
* okumak için canlı bir DOM/`getComputedStyle` gerekir, statik bir string
|
|
174
|
+
* üretici bunu bilemez (tüketici tint'i kendi `applyMfTheme()` çağrısıyla
|
|
175
|
+
* runtime'da uygulamalı).
|
|
176
|
+
*/
|
|
177
|
+
declare function exportMfThemeCss(config: Omit<MfThemeJson, 'neutralTint'>, options?: {
|
|
178
|
+
selector?: string;
|
|
179
|
+
}): string;
|
|
180
|
+
|
|
181
|
+
type MfThemeIssueSeverity = 'error' | 'warning';
|
|
182
|
+
interface MfThemeIssue {
|
|
183
|
+
/** Hangi alanı işaret ediyor — ör. `"ramps.danger.600"`, `"accent"`. */
|
|
184
|
+
path: string;
|
|
185
|
+
message: string;
|
|
186
|
+
severity: MfThemeIssueSeverity;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* `MfThemeJson`'ı iki açıdan denetler:
|
|
190
|
+
*
|
|
191
|
+
* 1. Her hex alanının GEÇERLİ bir `#rgb`/`#rrggbb` olup olmadığı.
|
|
192
|
+
* 2. `ramps.<tone>['600']` (kitin "dolu blok" LIGHT çapası, bkz. `color.css`
|
|
193
|
+
* rol katmanı doktrini — `X-fill-fg` her zaman `#ffffff` ya da mürekkep
|
|
194
|
+
* `#04110d`'den seçilir) verilen bir ton için NE beyaz NE mürekkep
|
|
195
|
+
* üstünde WCAG AA (4.5:1) sağlayan okunaklı bir metin rengi bulunup
|
|
196
|
+
* bulunamadığı — ikisi de başarısızsa bu basamak "çok orta tonlu", dolu
|
|
197
|
+
* blok üstünde okunaklı metin GARANTİSİ yok demektir. `accent` (`ramps.
|
|
198
|
+
* primary`/`createAccentRamp` + `fgOnAccent`) BU KONTROLE İHTİYAÇ
|
|
199
|
+
* DUYMAZ — `pickForeground` HER ZAMAN iki adaydan daha iyisini seçtiği
|
|
200
|
+
* için kontrast garantisi İNŞA GEREĞİ var (bkz. `apply.ts`
|
|
201
|
+
* `accentRoleLines`).
|
|
202
|
+
*
|
|
203
|
+
* Şema/yapı hatalarını (bilinmeyen alan vb.) DENETLEMEZ — TypeScript
|
|
204
|
+
* derleme zamanında zaten yakalar; `MfThemeJson` harici bir kaynaktan (ör.
|
|
205
|
+
* `JSON.parse`, bir tema dosyası yükleme formu) geliyorsa bu fonksiyon
|
|
206
|
+
* SADECE değer-düzeyi sorunları (geçersiz hex, düşük kontrast) yakalar.
|
|
207
|
+
*/
|
|
208
|
+
declare function validateMfTheme(theme: MfThemeJson): MfThemeIssue[];
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* `MfThemeJson`'ın JSON Schema (2020-12) tanımı — IDE otomatik tamamlama
|
|
212
|
+
* (`"$schema"` alanı) ve harici doğrulayıcılar (ajv vb.) için. Düz bir JS
|
|
213
|
+
* nesnesi olarak dışa açılıyor — kitin sıfır çalışma zamanı bağımlılığı
|
|
214
|
+
* ilkesi gereği (bkz. `projects/ui-kit/README.md` "Bağımlılık politikası")
|
|
215
|
+
* hiçbir şema doğrulama KÜTÜPHANESİ KULLANILMIYOR/GEREKTİRİLMİYOR; asıl
|
|
216
|
+
* DEĞER-düzeyi doğrulama (geçerli hex, WCAG kontrastı) `validateMfTheme()`
|
|
217
|
+
* (bkz. `validate.ts`) tarafında, bu şema SADECE YAPISAL/tip doğrulaması
|
|
218
|
+
* içindir — `@mesgflow/email-core`'un `EMAIL_DOCUMENT_JSON_SCHEMA`'sıyla
|
|
219
|
+
* AYNI desen.
|
|
220
|
+
*/
|
|
221
|
+
declare const MF_THEME_JSON_SCHEMA: {
|
|
222
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
223
|
+
readonly $id: "https://hurdenizyener.github.io/mesgflow-ui-kit/schema/theme.json";
|
|
224
|
+
readonly title: "MesgFlow ui theme";
|
|
225
|
+
readonly description: "Tam beyaz etiket tema tanımı — applyMfTheme()/exportMfThemeCss()e verilir. Her alan opsiyonel.";
|
|
226
|
+
readonly type: "object";
|
|
227
|
+
readonly additionalProperties: false;
|
|
228
|
+
readonly properties: {
|
|
229
|
+
readonly $schema: {
|
|
230
|
+
readonly type: "string";
|
|
231
|
+
};
|
|
232
|
+
readonly name: {
|
|
233
|
+
readonly type: "string";
|
|
234
|
+
};
|
|
235
|
+
readonly accent: {
|
|
236
|
+
readonly oneOf: readonly [{
|
|
237
|
+
readonly type: "string";
|
|
238
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
239
|
+
}, {
|
|
240
|
+
readonly type: "null";
|
|
241
|
+
}];
|
|
242
|
+
};
|
|
243
|
+
readonly radiusScale: {
|
|
244
|
+
readonly enum: readonly ["sharp", "default", "soft"];
|
|
245
|
+
};
|
|
246
|
+
readonly density: {
|
|
247
|
+
readonly enum: readonly ["compact", "default", "comfortable"];
|
|
248
|
+
};
|
|
249
|
+
readonly neutralTint: {
|
|
250
|
+
readonly enum: readonly ["cool", "neutral", "warm"];
|
|
251
|
+
};
|
|
252
|
+
readonly ramps: {
|
|
253
|
+
readonly type: "object";
|
|
254
|
+
readonly additionalProperties: false;
|
|
255
|
+
readonly properties: {
|
|
256
|
+
readonly primary: {
|
|
257
|
+
readonly type: "object";
|
|
258
|
+
readonly additionalProperties: false;
|
|
259
|
+
readonly properties: {
|
|
260
|
+
readonly '50': {
|
|
261
|
+
readonly type: "string";
|
|
262
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
263
|
+
};
|
|
264
|
+
readonly '100': {
|
|
265
|
+
readonly type: "string";
|
|
266
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
267
|
+
};
|
|
268
|
+
readonly '200': {
|
|
269
|
+
readonly type: "string";
|
|
270
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
271
|
+
};
|
|
272
|
+
readonly '300': {
|
|
273
|
+
readonly type: "string";
|
|
274
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
275
|
+
};
|
|
276
|
+
readonly '400': {
|
|
277
|
+
readonly type: "string";
|
|
278
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
279
|
+
};
|
|
280
|
+
readonly '500': {
|
|
281
|
+
readonly type: "string";
|
|
282
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
283
|
+
};
|
|
284
|
+
readonly '600': {
|
|
285
|
+
readonly type: "string";
|
|
286
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
287
|
+
};
|
|
288
|
+
readonly '700': {
|
|
289
|
+
readonly type: "string";
|
|
290
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
291
|
+
};
|
|
292
|
+
readonly '800': {
|
|
293
|
+
readonly type: "string";
|
|
294
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
295
|
+
};
|
|
296
|
+
readonly '900': {
|
|
297
|
+
readonly type: "string";
|
|
298
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
299
|
+
};
|
|
300
|
+
readonly '950': {
|
|
301
|
+
readonly type: "string";
|
|
302
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
303
|
+
};
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
readonly success: {
|
|
307
|
+
readonly type: "object";
|
|
308
|
+
readonly additionalProperties: false;
|
|
309
|
+
readonly properties: {
|
|
310
|
+
readonly '50': {
|
|
311
|
+
readonly type: "string";
|
|
312
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
313
|
+
};
|
|
314
|
+
readonly '100': {
|
|
315
|
+
readonly type: "string";
|
|
316
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
317
|
+
};
|
|
318
|
+
readonly '200': {
|
|
319
|
+
readonly type: "string";
|
|
320
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
321
|
+
};
|
|
322
|
+
readonly '300': {
|
|
323
|
+
readonly type: "string";
|
|
324
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
325
|
+
};
|
|
326
|
+
readonly '400': {
|
|
327
|
+
readonly type: "string";
|
|
328
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
329
|
+
};
|
|
330
|
+
readonly '500': {
|
|
331
|
+
readonly type: "string";
|
|
332
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
333
|
+
};
|
|
334
|
+
readonly '600': {
|
|
335
|
+
readonly type: "string";
|
|
336
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
337
|
+
};
|
|
338
|
+
readonly '700': {
|
|
339
|
+
readonly type: "string";
|
|
340
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
341
|
+
};
|
|
342
|
+
readonly '800': {
|
|
343
|
+
readonly type: "string";
|
|
344
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
345
|
+
};
|
|
346
|
+
readonly '900': {
|
|
347
|
+
readonly type: "string";
|
|
348
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
349
|
+
};
|
|
350
|
+
readonly '950': {
|
|
351
|
+
readonly type: "string";
|
|
352
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
353
|
+
};
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
readonly warning: {
|
|
357
|
+
readonly type: "object";
|
|
358
|
+
readonly additionalProperties: false;
|
|
359
|
+
readonly properties: {
|
|
360
|
+
readonly '50': {
|
|
361
|
+
readonly type: "string";
|
|
362
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
363
|
+
};
|
|
364
|
+
readonly '100': {
|
|
365
|
+
readonly type: "string";
|
|
366
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
367
|
+
};
|
|
368
|
+
readonly '200': {
|
|
369
|
+
readonly type: "string";
|
|
370
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
371
|
+
};
|
|
372
|
+
readonly '300': {
|
|
373
|
+
readonly type: "string";
|
|
374
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
375
|
+
};
|
|
376
|
+
readonly '400': {
|
|
377
|
+
readonly type: "string";
|
|
378
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
379
|
+
};
|
|
380
|
+
readonly '500': {
|
|
381
|
+
readonly type: "string";
|
|
382
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
383
|
+
};
|
|
384
|
+
readonly '600': {
|
|
385
|
+
readonly type: "string";
|
|
386
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
387
|
+
};
|
|
388
|
+
readonly '700': {
|
|
389
|
+
readonly type: "string";
|
|
390
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
391
|
+
};
|
|
392
|
+
readonly '800': {
|
|
393
|
+
readonly type: "string";
|
|
394
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
395
|
+
};
|
|
396
|
+
readonly '900': {
|
|
397
|
+
readonly type: "string";
|
|
398
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
399
|
+
};
|
|
400
|
+
readonly '950': {
|
|
401
|
+
readonly type: "string";
|
|
402
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
403
|
+
};
|
|
404
|
+
};
|
|
405
|
+
};
|
|
406
|
+
readonly danger: {
|
|
407
|
+
readonly type: "object";
|
|
408
|
+
readonly additionalProperties: false;
|
|
409
|
+
readonly properties: {
|
|
410
|
+
readonly '50': {
|
|
411
|
+
readonly type: "string";
|
|
412
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
413
|
+
};
|
|
414
|
+
readonly '100': {
|
|
415
|
+
readonly type: "string";
|
|
416
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
417
|
+
};
|
|
418
|
+
readonly '200': {
|
|
419
|
+
readonly type: "string";
|
|
420
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
421
|
+
};
|
|
422
|
+
readonly '300': {
|
|
423
|
+
readonly type: "string";
|
|
424
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
425
|
+
};
|
|
426
|
+
readonly '400': {
|
|
427
|
+
readonly type: "string";
|
|
428
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
429
|
+
};
|
|
430
|
+
readonly '500': {
|
|
431
|
+
readonly type: "string";
|
|
432
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
433
|
+
};
|
|
434
|
+
readonly '600': {
|
|
435
|
+
readonly type: "string";
|
|
436
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
437
|
+
};
|
|
438
|
+
readonly '700': {
|
|
439
|
+
readonly type: "string";
|
|
440
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
441
|
+
};
|
|
442
|
+
readonly '800': {
|
|
443
|
+
readonly type: "string";
|
|
444
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
445
|
+
};
|
|
446
|
+
readonly '900': {
|
|
447
|
+
readonly type: "string";
|
|
448
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
449
|
+
};
|
|
450
|
+
readonly '950': {
|
|
451
|
+
readonly type: "string";
|
|
452
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
453
|
+
};
|
|
454
|
+
};
|
|
455
|
+
};
|
|
456
|
+
readonly info: {
|
|
457
|
+
readonly type: "object";
|
|
458
|
+
readonly additionalProperties: false;
|
|
459
|
+
readonly properties: {
|
|
460
|
+
readonly '50': {
|
|
461
|
+
readonly type: "string";
|
|
462
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
463
|
+
};
|
|
464
|
+
readonly '100': {
|
|
465
|
+
readonly type: "string";
|
|
466
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
467
|
+
};
|
|
468
|
+
readonly '200': {
|
|
469
|
+
readonly type: "string";
|
|
470
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
471
|
+
};
|
|
472
|
+
readonly '300': {
|
|
473
|
+
readonly type: "string";
|
|
474
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
475
|
+
};
|
|
476
|
+
readonly '400': {
|
|
477
|
+
readonly type: "string";
|
|
478
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
479
|
+
};
|
|
480
|
+
readonly '500': {
|
|
481
|
+
readonly type: "string";
|
|
482
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
483
|
+
};
|
|
484
|
+
readonly '600': {
|
|
485
|
+
readonly type: "string";
|
|
486
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
487
|
+
};
|
|
488
|
+
readonly '700': {
|
|
489
|
+
readonly type: "string";
|
|
490
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
491
|
+
};
|
|
492
|
+
readonly '800': {
|
|
493
|
+
readonly type: "string";
|
|
494
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
495
|
+
};
|
|
496
|
+
readonly '900': {
|
|
497
|
+
readonly type: "string";
|
|
498
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
499
|
+
};
|
|
500
|
+
readonly '950': {
|
|
501
|
+
readonly type: "string";
|
|
502
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
503
|
+
};
|
|
504
|
+
};
|
|
505
|
+
};
|
|
506
|
+
readonly help: {
|
|
507
|
+
readonly type: "object";
|
|
508
|
+
readonly additionalProperties: false;
|
|
509
|
+
readonly properties: {
|
|
510
|
+
readonly '50': {
|
|
511
|
+
readonly type: "string";
|
|
512
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
513
|
+
};
|
|
514
|
+
readonly '100': {
|
|
515
|
+
readonly type: "string";
|
|
516
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
517
|
+
};
|
|
518
|
+
readonly '200': {
|
|
519
|
+
readonly type: "string";
|
|
520
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
521
|
+
};
|
|
522
|
+
readonly '300': {
|
|
523
|
+
readonly type: "string";
|
|
524
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
525
|
+
};
|
|
526
|
+
readonly '400': {
|
|
527
|
+
readonly type: "string";
|
|
528
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
529
|
+
};
|
|
530
|
+
readonly '500': {
|
|
531
|
+
readonly type: "string";
|
|
532
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
533
|
+
};
|
|
534
|
+
readonly '600': {
|
|
535
|
+
readonly type: "string";
|
|
536
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
537
|
+
};
|
|
538
|
+
readonly '700': {
|
|
539
|
+
readonly type: "string";
|
|
540
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
541
|
+
};
|
|
542
|
+
readonly '800': {
|
|
543
|
+
readonly type: "string";
|
|
544
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
545
|
+
};
|
|
546
|
+
readonly '900': {
|
|
547
|
+
readonly type: "string";
|
|
548
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
549
|
+
};
|
|
550
|
+
readonly '950': {
|
|
551
|
+
readonly type: "string";
|
|
552
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
553
|
+
};
|
|
554
|
+
};
|
|
555
|
+
};
|
|
556
|
+
readonly neutral: {
|
|
557
|
+
readonly type: "object";
|
|
558
|
+
readonly additionalProperties: false;
|
|
559
|
+
readonly properties: {
|
|
560
|
+
readonly '850': {
|
|
561
|
+
readonly type: "string";
|
|
562
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
563
|
+
};
|
|
564
|
+
readonly '975': {
|
|
565
|
+
readonly type: "string";
|
|
566
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
567
|
+
};
|
|
568
|
+
readonly '50': {
|
|
569
|
+
readonly type: "string";
|
|
570
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
571
|
+
};
|
|
572
|
+
readonly '100': {
|
|
573
|
+
readonly type: "string";
|
|
574
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
575
|
+
};
|
|
576
|
+
readonly '200': {
|
|
577
|
+
readonly type: "string";
|
|
578
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
579
|
+
};
|
|
580
|
+
readonly '300': {
|
|
581
|
+
readonly type: "string";
|
|
582
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
583
|
+
};
|
|
584
|
+
readonly '400': {
|
|
585
|
+
readonly type: "string";
|
|
586
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
587
|
+
};
|
|
588
|
+
readonly '500': {
|
|
589
|
+
readonly type: "string";
|
|
590
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
591
|
+
};
|
|
592
|
+
readonly '600': {
|
|
593
|
+
readonly type: "string";
|
|
594
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
595
|
+
};
|
|
596
|
+
readonly '700': {
|
|
597
|
+
readonly type: "string";
|
|
598
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
599
|
+
};
|
|
600
|
+
readonly '800': {
|
|
601
|
+
readonly type: "string";
|
|
602
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
603
|
+
};
|
|
604
|
+
readonly '900': {
|
|
605
|
+
readonly type: "string";
|
|
606
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
607
|
+
};
|
|
608
|
+
readonly '950': {
|
|
609
|
+
readonly type: "string";
|
|
610
|
+
readonly pattern: "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$";
|
|
611
|
+
};
|
|
612
|
+
};
|
|
613
|
+
};
|
|
614
|
+
};
|
|
615
|
+
};
|
|
616
|
+
readonly roles: {
|
|
617
|
+
readonly type: "object";
|
|
618
|
+
readonly additionalProperties: false;
|
|
619
|
+
readonly properties: {
|
|
620
|
+
readonly light: {
|
|
621
|
+
readonly type: "object";
|
|
622
|
+
readonly additionalProperties: false;
|
|
623
|
+
readonly properties: {
|
|
624
|
+
[k: string]: {
|
|
625
|
+
type: string;
|
|
626
|
+
};
|
|
627
|
+
};
|
|
628
|
+
};
|
|
629
|
+
readonly dark: {
|
|
630
|
+
readonly type: "object";
|
|
631
|
+
readonly additionalProperties: false;
|
|
632
|
+
readonly properties: {
|
|
633
|
+
[k: string]: {
|
|
634
|
+
type: string;
|
|
635
|
+
};
|
|
636
|
+
};
|
|
637
|
+
};
|
|
638
|
+
};
|
|
639
|
+
};
|
|
640
|
+
readonly fonts: {
|
|
641
|
+
readonly type: "object";
|
|
642
|
+
readonly additionalProperties: false;
|
|
643
|
+
readonly properties: {
|
|
644
|
+
readonly sans: {
|
|
645
|
+
readonly type: "string";
|
|
646
|
+
};
|
|
647
|
+
readonly display: {
|
|
648
|
+
readonly type: "string";
|
|
649
|
+
};
|
|
650
|
+
readonly mono: {
|
|
651
|
+
readonly type: "string";
|
|
652
|
+
};
|
|
653
|
+
};
|
|
654
|
+
};
|
|
655
|
+
readonly radius: {
|
|
656
|
+
readonly type: "object";
|
|
657
|
+
readonly additionalProperties: false;
|
|
658
|
+
readonly properties: {
|
|
659
|
+
readonly xs: {
|
|
660
|
+
readonly type: "string";
|
|
661
|
+
};
|
|
662
|
+
readonly sm: {
|
|
663
|
+
readonly type: "string";
|
|
664
|
+
};
|
|
665
|
+
readonly md: {
|
|
666
|
+
readonly type: "string";
|
|
667
|
+
};
|
|
668
|
+
readonly lg: {
|
|
669
|
+
readonly type: "string";
|
|
670
|
+
};
|
|
671
|
+
readonly xl: {
|
|
672
|
+
readonly type: "string";
|
|
673
|
+
};
|
|
674
|
+
};
|
|
675
|
+
};
|
|
676
|
+
};
|
|
677
|
+
};
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* Tema değişikliğini (`.dark` toggle'ı, `applyMfTheme()` çağrısı vb.) View
|
|
681
|
+
* Transitions API ile yumuşak bir çapraz geçişe sarar — sayfa her token'ı
|
|
682
|
+
* tek tek `transition` etmek yerine eski/yeni ekran görüntüsü arasında TEK
|
|
683
|
+
* bir kompozit geçiş yapar (yüzlerce `transition-colors`'ın aynı anda ve
|
|
684
|
+
* farklı sürelerle kayması yerine).
|
|
685
|
+
*
|
|
686
|
+
* `update` HER ZAMAN çağrılır — sadece NASIL çağrıldığı değişir. Geçiş
|
|
687
|
+
* atlanıp `update` doğrudan (senkron) çalıştırılır:
|
|
688
|
+
* - SSR / `document` yok,
|
|
689
|
+
* - tarayıcı `startViewTransition` desteklemiyor,
|
|
690
|
+
* - kullanıcı `prefers-reduced-motion: reduce` istiyor.
|
|
691
|
+
*
|
|
692
|
+
* ```ts
|
|
693
|
+
* transitionMfTheme(() => document.documentElement.classList.toggle('dark'));
|
|
694
|
+
* ```
|
|
695
|
+
*/
|
|
696
|
+
declare function transitionMfTheme(update: () => void): void;
|
|
697
|
+
|
|
698
|
+
type MfColorMode = 'light' | 'dark' | 'system';
|
|
699
|
+
interface MfColorModeConfig {
|
|
700
|
+
/** `localStorage` anahtarı — `colorModeInitScript()` ile AYNI olmalı. */
|
|
701
|
+
storageKey: string;
|
|
702
|
+
/** Tercih kaydı yokken. */
|
|
703
|
+
defaultMode: MfColorMode;
|
|
704
|
+
}
|
|
705
|
+
declare const MF_COLOR_MODE_CONFIG: InjectionToken<MfColorModeConfig>;
|
|
706
|
+
/** `providers: [provideMfColorMode({ storageKey: 'app-theme' })]` */
|
|
707
|
+
declare function provideMfColorMode(config: Partial<MfColorModeConfig>): Provider;
|
|
708
|
+
/**
|
|
709
|
+
* Açık / koyu / sistem modu — kitin TEK kaynağı (`<mf-theme-switcher>` bunu kullanır; kendi
|
|
710
|
+
* anahtarınızla da doğrudan enjekte edebilirsiniz).
|
|
711
|
+
*
|
|
712
|
+
* - `mode`: kullanıcının seçimi (kalıcı, `localStorage`); `resolved`: gerçekte uygulanan
|
|
713
|
+
* `light`/`dark` — `system`'de işletim sistemi tercihini CANLI izler.
|
|
714
|
+
* - Uygulama: kökte `.dark` sınıfı + `color-scheme` (yerel kaydırma çubukları ve form
|
|
715
|
+
* kontrolleri de temaya uyar); değişim `transitionMfTheme` ile yumuşak (azaltılmış harekette
|
|
716
|
+
* anında). Sınıf zaten doğruysa (ilk boyamada `colorModeInitScript` uyguladı) dokunulmaz.
|
|
717
|
+
* - Depolama/`matchMedia` yoksa (gizli pencere, SSR, test) sessizce varsayılana düşer.
|
|
718
|
+
*/
|
|
719
|
+
declare class MfColorModeService {
|
|
720
|
+
private readonly config;
|
|
721
|
+
private readonly document;
|
|
722
|
+
private readonly media;
|
|
723
|
+
private readonly systemDark;
|
|
724
|
+
readonly mode: _angular_core.WritableSignal<MfColorMode>;
|
|
725
|
+
readonly resolved: _angular_core.Signal<"light" | "dark">;
|
|
726
|
+
constructor();
|
|
727
|
+
setMode(mode: MfColorMode): void;
|
|
728
|
+
/** light → dark → system → light (tek düğmeli değiştirici için). */
|
|
729
|
+
cycle(): void;
|
|
730
|
+
private readStored;
|
|
731
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfColorModeService, never>;
|
|
732
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* `index.html` `<head>`'ine satır içi konacak betik — Angular yüklenmeden ÖNCE `.dark`'ı uygular,
|
|
736
|
+
* koyu modda beyaz flaşı önler. Anahtar ve varsayılan servisle AYNI olmalı.
|
|
737
|
+
*
|
|
738
|
+
* ```html
|
|
739
|
+
* <script>/* colorModeInitScript('app-theme') çıktısı *\/</script>
|
|
740
|
+
* ```
|
|
741
|
+
*/
|
|
742
|
+
declare function colorModeInitScript(storageKey?: string, defaultMode?: MfColorMode): string;
|
|
743
|
+
|
|
744
|
+
export { MF_COLOR_MODE_CONFIG, MF_NEUTRAL_RAMP_STEPS, MF_RAMP_TONES, MF_ROLE_TOKENS, MF_THEME_JSON_SCHEMA, MfColorModeService, RAMP_STEPS, accentContrastWithWhite, applyMfTheme, colorModeInitScript, createAccentRamp, exportMfThemeCss, fgOnAccent, provideMfColorMode, resetMfTheme, transitionMfTheme, validateMfTheme };
|
|
745
|
+
export type { AccentRamp, MfColorMode, MfColorModeConfig, MfDensity, MfNeutralRampStep, MfRampTone, MfRoleToken, MfThemeConfig, MfThemeIssue, MfThemeIssueSeverity, MfThemeJson, NeutralTint, RadiusScale, RampStep };
|