@mesgflow/ui-kit 0.6.0 → 0.7.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.
Files changed (199) hide show
  1. package/README.md +56 -5
  2. package/fesm2022/mesgflow-ui-kit-accordion.mjs +3 -2
  3. package/fesm2022/mesgflow-ui-kit-accordion.mjs.map +1 -1
  4. package/fesm2022/mesgflow-ui-kit-agenda.mjs +208 -0
  5. package/fesm2022/mesgflow-ui-kit-agenda.mjs.map +1 -0
  6. package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs +37 -0
  7. package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs.map +1 -0
  8. package/fesm2022/mesgflow-ui-kit-blocks.mjs +207 -0
  9. package/fesm2022/mesgflow-ui-kit-blocks.mjs.map +1 -0
  10. package/fesm2022/mesgflow-ui-kit-box-input.mjs +2 -2
  11. package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -1
  12. package/fesm2022/mesgflow-ui-kit-button.mjs +188 -242
  13. package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -1
  14. package/fesm2022/mesgflow-ui-kit-card.mjs +37 -16
  15. package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -1
  16. package/fesm2022/mesgflow-ui-kit-carousel.mjs +308 -0
  17. package/fesm2022/mesgflow-ui-kit-carousel.mjs.map +1 -0
  18. package/fesm2022/mesgflow-ui-kit-checkbox.mjs +16 -21
  19. package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -1
  20. package/fesm2022/mesgflow-ui-kit-chip.mjs +2 -2
  21. package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -1
  22. package/fesm2022/mesgflow-ui-kit-code-block.mjs +9 -5
  23. package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -1
  24. package/fesm2022/mesgflow-ui-kit-color-picker.mjs +6 -4
  25. package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -1
  26. package/fesm2022/mesgflow-ui-kit-combobox.mjs +145 -65
  27. package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -1
  28. package/fesm2022/mesgflow-ui-kit-context-menu.mjs +4 -6
  29. package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -1
  30. package/fesm2022/mesgflow-ui-kit-core.mjs +441 -128
  31. package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -1
  32. package/fesm2022/mesgflow-ui-kit-countdown.mjs +149 -0
  33. package/fesm2022/mesgflow-ui-kit-countdown.mjs.map +1 -0
  34. package/fesm2022/mesgflow-ui-kit-date-picker.mjs +131 -10
  35. package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -1
  36. package/fesm2022/mesgflow-ui-kit-dialog.mjs +117 -34
  37. package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -1
  38. package/fesm2022/mesgflow-ui-kit-drawer.mjs +109 -0
  39. package/fesm2022/mesgflow-ui-kit-drawer.mjs.map +1 -0
  40. package/fesm2022/mesgflow-ui-kit-dropzone.mjs +3 -3
  41. package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -1
  42. package/fesm2022/mesgflow-ui-kit-field.mjs +53 -12
  43. package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -1
  44. package/fesm2022/mesgflow-ui-kit-file-upload.mjs +356 -0
  45. package/fesm2022/mesgflow-ui-kit-file-upload.mjs.map +1 -0
  46. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +131 -0
  47. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -1
  48. package/fesm2022/mesgflow-ui-kit-icon.mjs +6 -1
  49. package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -1
  50. package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs +371 -0
  51. package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs.map +1 -0
  52. package/fesm2022/mesgflow-ui-kit-inline-edit.mjs +279 -0
  53. package/fesm2022/mesgflow-ui-kit-inline-edit.mjs.map +1 -0
  54. package/fesm2022/mesgflow-ui-kit-input.mjs +147 -4
  55. package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -1
  56. package/fesm2022/mesgflow-ui-kit-lightbox.mjs +299 -0
  57. package/fesm2022/mesgflow-ui-kit-lightbox.mjs.map +1 -0
  58. package/fesm2022/mesgflow-ui-kit-link.mjs +2 -2
  59. package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -1
  60. package/fesm2022/mesgflow-ui-kit-listbox.mjs +151 -0
  61. package/fesm2022/mesgflow-ui-kit-listbox.mjs.map +1 -0
  62. package/fesm2022/mesgflow-ui-kit-mention.mjs +283 -0
  63. package/fesm2022/mesgflow-ui-kit-mention.mjs.map +1 -0
  64. package/fesm2022/mesgflow-ui-kit-menu.mjs +169 -5
  65. package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -1
  66. package/fesm2022/mesgflow-ui-kit-nav-menu.mjs +276 -0
  67. package/fesm2022/mesgflow-ui-kit-nav-menu.mjs.map +1 -0
  68. package/fesm2022/mesgflow-ui-kit-notification-center.mjs +281 -0
  69. package/fesm2022/mesgflow-ui-kit-notification-center.mjs.map +1 -0
  70. package/fesm2022/mesgflow-ui-kit-number-input.mjs +7 -4
  71. package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -1
  72. package/fesm2022/mesgflow-ui-kit-pagination.mjs +4 -3
  73. package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -1
  74. package/fesm2022/mesgflow-ui-kit-password-input.mjs +7 -2
  75. package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -1
  76. package/fesm2022/mesgflow-ui-kit-popover.mjs +9 -49
  77. package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -1
  78. package/fesm2022/mesgflow-ui-kit-progress.mjs +162 -21
  79. package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -1
  80. package/fesm2022/mesgflow-ui-kit-radio.mjs +4 -6
  81. package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -1
  82. package/fesm2022/mesgflow-ui-kit-rating.mjs +2 -2
  83. package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -1
  84. package/fesm2022/mesgflow-ui-kit-search-input.mjs +9 -5
  85. package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -1
  86. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +12 -8
  87. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -1
  88. package/fesm2022/mesgflow-ui-kit-select.mjs +3 -2
  89. package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -1
  90. package/fesm2022/mesgflow-ui-kit-sidebar.mjs +16 -13
  91. package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -1
  92. package/fesm2022/mesgflow-ui-kit-skeleton.mjs +4 -3
  93. package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -1
  94. package/fesm2022/mesgflow-ui-kit-slider.mjs +250 -3
  95. package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -1
  96. package/fesm2022/mesgflow-ui-kit-sortable.mjs +526 -0
  97. package/fesm2022/mesgflow-ui-kit-sortable.mjs.map +1 -0
  98. package/fesm2022/mesgflow-ui-kit-spinner.mjs +42 -13
  99. package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -1
  100. package/fesm2022/mesgflow-ui-kit-split-button.mjs +205 -0
  101. package/fesm2022/mesgflow-ui-kit-split-button.mjs.map +1 -0
  102. package/fesm2022/mesgflow-ui-kit-splitter.mjs +210 -3
  103. package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -1
  104. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +11 -4
  105. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -1
  106. package/fesm2022/mesgflow-ui-kit-stepper.mjs +167 -60
  107. package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -1
  108. package/fesm2022/mesgflow-ui-kit-switch.mjs +2 -2
  109. package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -1
  110. package/fesm2022/mesgflow-ui-kit-table.mjs +16 -10
  111. package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -1
  112. package/fesm2022/mesgflow-ui-kit-tabs.mjs +410 -169
  113. package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -1
  114. package/fesm2022/mesgflow-ui-kit-tag-input.mjs +7 -2
  115. package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -1
  116. package/fesm2022/mesgflow-ui-kit-theming.mjs +4 -4
  117. package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -1
  118. package/fesm2022/mesgflow-ui-kit-time-picker.mjs +3 -3
  119. package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -1
  120. package/fesm2022/mesgflow-ui-kit-toast.mjs +113 -30
  121. package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -1
  122. package/fesm2022/mesgflow-ui-kit-toggle.mjs +3 -2
  123. package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -1
  124. package/fesm2022/mesgflow-ui-kit-toolbar.mjs +4 -2
  125. package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -1
  126. package/fesm2022/mesgflow-ui-kit-tooltip.mjs +73 -50
  127. package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -1
  128. package/fesm2022/mesgflow-ui-kit-tour.mjs +8 -20
  129. package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -1
  130. package/fesm2022/mesgflow-ui-kit-transfer-list.mjs +288 -0
  131. package/fesm2022/mesgflow-ui-kit-transfer-list.mjs.map +1 -0
  132. package/fesm2022/mesgflow-ui-kit-tree.mjs +1 -1
  133. package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -1
  134. package/fesm2022/mesgflow-ui-kit-virtual-list.mjs +109 -0
  135. package/fesm2022/mesgflow-ui-kit-virtual-list.mjs.map +1 -0
  136. package/fesm2022/mesgflow-ui-kit.mjs +92 -12836
  137. package/fesm2022/mesgflow-ui-kit.mjs.map +1 -1
  138. package/package.json +87 -3
  139. package/schematics/collection.json +10 -0
  140. package/schematics/migration.json +10 -0
  141. package/schematics/migrations/v0-7.cjs +70 -0
  142. package/schematics/ng-add/index.cjs +234 -0
  143. package/schematics/ng-add/schema.json +43 -0
  144. package/tokens/color.css +96 -0
  145. package/tokens/controls.css +145 -0
  146. package/tokens/elevation.css +62 -6
  147. package/tokens/motion.css +304 -66
  148. package/tokens/radius.css +14 -0
  149. package/tokens.css +1 -0
  150. package/tokens.json +1583 -0
  151. package/types/mesgflow-ui-kit-agenda.d.ts +49 -0
  152. package/types/mesgflow-ui-kit-aspect-ratio.d.ts +18 -0
  153. package/types/mesgflow-ui-kit-blocks.d.ts +128 -0
  154. package/types/mesgflow-ui-kit-button.d.ts +23 -38
  155. package/types/mesgflow-ui-kit-card.d.ts +26 -16
  156. package/types/mesgflow-ui-kit-carousel.d.ts +51 -0
  157. package/types/mesgflow-ui-kit-checkbox.d.ts +8 -5
  158. package/types/mesgflow-ui-kit-code-block.d.ts +4 -1
  159. package/types/mesgflow-ui-kit-combobox.d.ts +47 -22
  160. package/types/mesgflow-ui-kit-core.d.ts +271 -21
  161. package/types/mesgflow-ui-kit-countdown.d.ts +47 -0
  162. package/types/mesgflow-ui-kit-date-picker.d.ts +31 -1
  163. package/types/mesgflow-ui-kit-dialog.d.ts +29 -6
  164. package/types/mesgflow-ui-kit-drawer.d.ts +45 -0
  165. package/types/mesgflow-ui-kit-field.d.ts +17 -8
  166. package/types/mesgflow-ui-kit-file-upload.d.ts +64 -0
  167. package/types/mesgflow-ui-kit-hover-card.d.ts +2 -2
  168. package/types/mesgflow-ui-kit-icons-lucide.d.ts +27 -0
  169. package/types/mesgflow-ui-kit-inline-edit.d.ts +42 -0
  170. package/types/mesgflow-ui-kit-input.d.ts +64 -2
  171. package/types/mesgflow-ui-kit-lightbox.d.ts +54 -0
  172. package/types/mesgflow-ui-kit-listbox.d.ts +30 -0
  173. package/types/mesgflow-ui-kit-mention.d.ts +59 -0
  174. package/types/mesgflow-ui-kit-menu.d.ts +41 -2
  175. package/types/mesgflow-ui-kit-nav-menu.d.ts +58 -0
  176. package/types/mesgflow-ui-kit-notification-center.d.ts +41 -0
  177. package/types/mesgflow-ui-kit-number-input.d.ts +3 -1
  178. package/types/mesgflow-ui-kit-password-input.d.ts +3 -1
  179. package/types/mesgflow-ui-kit-popover.d.ts +13 -5
  180. package/types/mesgflow-ui-kit-progress.d.ts +33 -12
  181. package/types/mesgflow-ui-kit-radio.d.ts +2 -2
  182. package/types/mesgflow-ui-kit-search-input.d.ts +3 -1
  183. package/types/mesgflow-ui-kit-segmented-control.d.ts +4 -0
  184. package/types/mesgflow-ui-kit-sidebar.d.ts +1 -1
  185. package/types/mesgflow-ui-kit-slider.d.ts +60 -1
  186. package/types/mesgflow-ui-kit-sortable.d.ts +103 -0
  187. package/types/mesgflow-ui-kit-spinner.d.ts +5 -8
  188. package/types/mesgflow-ui-kit-split-button.d.ts +47 -0
  189. package/types/mesgflow-ui-kit-splitter.d.ts +64 -1
  190. package/types/mesgflow-ui-kit-stat-tile.d.ts +3 -0
  191. package/types/mesgflow-ui-kit-stepper.d.ts +54 -32
  192. package/types/mesgflow-ui-kit-table.d.ts +2 -0
  193. package/types/mesgflow-ui-kit-tabs.d.ts +193 -93
  194. package/types/mesgflow-ui-kit-tag-input.d.ts +3 -1
  195. package/types/mesgflow-ui-kit-toast.d.ts +48 -22
  196. package/types/mesgflow-ui-kit-tooltip.d.ts +15 -12
  197. package/types/mesgflow-ui-kit-transfer-list.d.ts +34 -0
  198. package/types/mesgflow-ui-kit-virtual-list.d.ts +35 -0
  199. package/types/mesgflow-ui-kit.d.ts +87 -5444
@@ -0,0 +1,49 @@
1
+ import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
2
+ import { MfTone } from '@mesgflow/ui-kit/core';
3
+ import * as _angular_core from '@angular/core';
4
+
5
+ interface AgendaEvent {
6
+ id: string;
7
+ title: string;
8
+ start: Date;
9
+ end?: Date;
10
+ allDay?: boolean;
11
+ location?: string;
12
+ tone?: MfTone;
13
+ }
14
+ interface AgendaDay {
15
+ key: string;
16
+ date: Date;
17
+ label: string;
18
+ sublabel: string;
19
+ events: AgendaEvent[];
20
+ }
21
+ /**
22
+ * `<mf-agenda [events]="events" [days]="7" (eventClick)="open($event)" />`
23
+ *
24
+ * Günlere gruplanmış etkinlik listesi (takvim "ajanda" görünümü) — yaklaşan
25
+ * yayınlar, toplantılar, kampanya takvimi. Gün başlıkları "Bugün/Yarın" ya da
26
+ * yerel ayarlı tarih (`MF_DATE_LOCALE`); saatler yerel biçimde; boş günler
27
+ * `showEmptyDays` ile gösterilir. Her gün bir `<section>` + başlık, etkinlikler
28
+ * odaklanabilir düğmeler.
29
+ */
30
+ declare class Agenda {
31
+ readonly events: _angular_core.InputSignal<AgendaEvent[]>;
32
+ /** Başlangıç günü — varsayılan bugün. */
33
+ readonly from: _angular_core.InputSignal<Date>;
34
+ /** Kaç gün gösterilsin. */
35
+ readonly days: _angular_core.InputSignal<number>;
36
+ /** Etkinliksiz günleri de göster. */
37
+ readonly showEmptyDays: _angular_core.InputSignal<boolean>;
38
+ readonly eventClick: _angular_core.OutputEmitterRef<AgendaEvent>;
39
+ protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfAgendaLabels>;
40
+ private readonly locale;
41
+ protected readonly groups: _angular_core.Signal<AgendaDay[]>;
42
+ protected bar(event: AgendaEvent): string;
43
+ protected timeText(event: AgendaEvent): string;
44
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Agenda, never>;
45
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Agenda, "mf-agenda", ["mfAgenda"], { "events": { "alias": "events"; "required": true; "isSignal": true; }; "from": { "alias": "from"; "required": false; "isSignal": true; }; "days": { "alias": "days"; "required": false; "isSignal": true; }; "showEmptyDays": { "alias": "showEmptyDays"; "required": false; "isSignal": true; }; }, { "eventClick": "eventClick"; }, never, never, true, never>;
46
+ }
47
+
48
+ export { Agenda };
49
+ export type { AgendaEvent };
@@ -0,0 +1,18 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * `<div [mfAspectRatio]="16 / 9"><img src="…" alt="…" /></div>`
5
+ *
6
+ * Kutuyu sabit en-boy oranında tutar (native `aspect-ratio`); içindeki
7
+ * görsel/video kutuyu kaplar (`object-fit: cover`). Yüklenme sırasında
8
+ * düzen kaymasını (CLS) önler. `rounded` ile köşe yarıçapı token'ı.
9
+ */
10
+ declare class AspectRatio {
11
+ /** Genişlik / yükseklik — `16 / 9`, `1`, `4 / 3`. */
12
+ readonly mfAspectRatio: _angular_core.InputSignal<number>;
13
+ protected readonly ratio: _angular_core.Signal<string>;
14
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AspectRatio, never>;
15
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AspectRatio, "[mfAspectRatio]", ["mfAspectRatio"], { "mfAspectRatio": { "alias": "mfAspectRatio"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16
+ }
17
+
18
+ export { AspectRatio };
@@ -0,0 +1,128 @@
1
+ import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
2
+ import * as _angular_core from '@angular/core';
3
+ import { SelectOption } from '@mesgflow/ui-kit/select';
4
+
5
+ interface AuthCredentials {
6
+ email: string;
7
+ password: string;
8
+ remember: boolean;
9
+ }
10
+ /**
11
+ * `<div mfAuthProviders>…GitHub/Google düğmeleri…</div>` — `mf-auth-card`
12
+ * içinde e-posta formunun üstünde, ayırıcıyla birlikte gösterilir.
13
+ */
14
+ declare class AuthProviders {
15
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthProviders, never>;
16
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AuthProviders, "[mfAuthProviders]", never, {}, {}, never, never, true, never>;
17
+ }
18
+ /**
19
+ * `<mf-auth-card [loading]="busy()" [error]="err()" (signIn)="login($event)" (forgotPassword)="…" (signUp)="…" />`
20
+ *
21
+ * Kullanıma hazır giriş kartı (Login bloğunun tüketilebilir hâli): başlık,
22
+ * isteğe bağlı sosyal sağlayıcı slotu (`[mfAuthProviders]`), e-posta +
23
+ * parola (göster/gizle), "beni hatırla", gönder ve kayıt bağlantısı.
24
+ *
25
+ * - Doğrulama yerleşik: boş/geçersiz e-posta ve boş parola alanın altında
26
+ * (`mf-field`, `aria-invalid` + `aria-describedby`) gösterilir; `signIn`
27
+ * yalnızca geçerli değerlerle yayılır.
28
+ * - Sunucu hatası `error` girdisiyle üstte bir `role="alert"` uyarısı olur.
29
+ * - Tüm metinler `MfLabels.authCard` — `title`/`description` girdileri
30
+ * yalnızca bu örnek için ezer.
31
+ * - Kapsayıcı sorgusuyla (`@container`) dar yerlerde tek sütun.
32
+ */
33
+ declare class AuthCard {
34
+ readonly title: _angular_core.InputSignal<string | undefined>;
35
+ readonly description: _angular_core.InputSignal<string | undefined>;
36
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
37
+ /** Sunucudan dönen hata metni — boşsa uyarı gösterilmez. */
38
+ readonly error: _angular_core.InputSignal<string | null>;
39
+ readonly showRemember: _angular_core.InputSignalWithTransform<boolean, unknown>;
40
+ /** `false` ise "parolamı unuttum" bağlantısı gizlenir. */
41
+ readonly showForgotPassword: _angular_core.InputSignalWithTransform<boolean, unknown>;
42
+ /** `false` ise alttaki kayıt satırı gizlenir. */
43
+ readonly showSignUp: _angular_core.InputSignalWithTransform<boolean, unknown>;
44
+ readonly signIn: _angular_core.OutputEmitterRef<AuthCredentials>;
45
+ readonly forgotPassword: _angular_core.OutputEmitterRef<void>;
46
+ readonly signUp: _angular_core.OutputEmitterRef<void>;
47
+ readonly errorDismissed: _angular_core.OutputEmitterRef<void>;
48
+ protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfAuthCardLabels>;
49
+ protected readonly ids: {
50
+ email: string;
51
+ password: string;
52
+ };
53
+ protected readonly providers: _angular_core.Signal<AuthProviders | undefined>;
54
+ protected readonly email: _angular_core.WritableSignal<string>;
55
+ protected readonly password: _angular_core.WritableSignal<string>;
56
+ protected readonly remember: _angular_core.WritableSignal<boolean>;
57
+ protected readonly submitted: _angular_core.WritableSignal<boolean>;
58
+ protected readonly emailError: _angular_core.Signal<string | undefined>;
59
+ protected readonly passwordError: _angular_core.Signal<string | undefined>;
60
+ protected submit(event: Event): void;
61
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthCard, never>;
62
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuthCard, "mf-auth-card", ["mfAuthCard"], { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "showRemember": { "alias": "showRemember"; "required": false; "isSignal": true; }; "showForgotPassword": { "alias": "showForgotPassword"; "required": false; "isSignal": true; }; "showSignUp": { "alias": "showSignUp"; "required": false; "isSignal": true; }; }, { "signIn": "signIn"; "forgotPassword": "forgotPassword"; "signUp": "signUp"; "errorDismissed": "errorDismissed"; }, ["providers"], ["[mfAuthProviders]"], true, never>;
63
+ }
64
+
65
+ interface MemberInvite<R = string> {
66
+ emails: string[];
67
+ role: R;
68
+ }
69
+ /**
70
+ * `<mf-invite-members [roles]="roles" [loading]="sending()" (invite)="send($event)" />`
71
+ *
72
+ * Ekip daveti formu (Invite bloğunun tüketilebilir hâli): etiketli e-posta
73
+ * girişi (Enter/virgül ile birden çok adres), rol seçimi ve gönder. Geçersiz
74
+ * adresler gönderimde listelenir; `invite` yalnızca geçerli adreslerle yayılır
75
+ * ve başarılıysa tüketici `reset()` çağırabilir.
76
+ *
77
+ * Metinler `MfLabels.inviteMembers`; `roles` tüketicinin alanıdır (ör.
78
+ * Yönetici/Düzenleyici/Görüntüleyici). Varsayılan rol listenin ilkidir.
79
+ */
80
+ declare class InviteMembers<R = string> {
81
+ readonly roles: _angular_core.InputSignal<SelectOption<R>[]>;
82
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
83
+ readonly title: _angular_core.InputSignal<string | undefined>;
84
+ readonly description: _angular_core.InputSignal<string | undefined>;
85
+ readonly invite: _angular_core.OutputEmitterRef<MemberInvite<R>>;
86
+ protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfInviteMembersLabels>;
87
+ protected readonly ids: {
88
+ emails: string;
89
+ role: string;
90
+ };
91
+ protected readonly emails: _angular_core.WritableSignal<string[]>;
92
+ protected readonly role: _angular_core.WritableSignal<R | null>;
93
+ protected readonly submitted: _angular_core.WritableSignal<boolean>;
94
+ protected readonly invalid: _angular_core.Signal<string[]>;
95
+ protected readonly error: _angular_core.Signal<string | undefined>;
96
+ protected submit(event: Event): void;
97
+ /** Başarılı gönderimden sonra formu boşaltır. */
98
+ reset(): void;
99
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InviteMembers<any>, never>;
100
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InviteMembers<any>, "mf-invite-members", ["mfInviteMembers"], { "roles": { "alias": "roles"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, { "invite": "invite"; }, never, never, true, never>;
101
+ }
102
+
103
+ /** `mf-settings-section`'ın alt eylem şeridi — sönük zemin, sağa hizalı düğmeler. */
104
+ declare class SettingsActions {
105
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingsActions, never>;
106
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SettingsActions, "[mfSettingsActions]", never, {}, {}, never, never, true, never>;
107
+ }
108
+ /**
109
+ * `<mf-settings-section heading="Profil" description="Herkese görünen bilgiler.">
110
+ * …alanlar…
111
+ * <div mfSettingsActions><button mfButton>Kaydet</button></div>
112
+ * </mf-settings-section>`
113
+ *
114
+ * Ayarlar sayfalarının iki sütunlu bölüm düzeni (Settings bloğundan): solda
115
+ * başlık + açıklama, sağda kart içinde alanlar, altta isteğe bağlı eylem
116
+ * şeridi. Dar kapsayıcıda tek sütuna iner (`@container`). Bölüm başlığıyla
117
+ * adlandırılmış bir `<section>`; metnin tamamı tüketiciden gelir.
118
+ */
119
+ declare class SettingsSection {
120
+ readonly heading: _angular_core.InputSignal<string>;
121
+ readonly description: _angular_core.InputSignal<string | undefined>;
122
+ protected readonly headingId: string;
123
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingsSection, never>;
124
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SettingsSection, "mf-settings-section", ["mfSettingsSection"], { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[mfSettingsActions]"], true, never>;
125
+ }
126
+
127
+ export { AuthCard, AuthProviders, InviteMembers, SettingsActions, SettingsSection };
128
+ export type { AuthCredentials, MemberInvite };
@@ -5,67 +5,52 @@ import { VariantProps } from 'class-variance-authority';
5
5
  /**
6
6
  * `<button mfButton>`/`<a mfButton>` — selector native elemanın KENDİSİNİ
7
7
  * hedefler (`button[mfButton], a[mfButton]`), bir SARMALAYICI etiket
8
- * (`<mf-button>`) DEĞİL (bkz. `projects/ui-kit/README.md` "Directive mi,
9
- * component mi?") — bu yüzden tüketicinin `class="..."` ile verdiği static
10
- * class GENE doğrudan gerçek native elemana düşer, eskiden directive'ken
11
- * olduğu gibi (host'ta kalıp içe düşmeme sorunu YOK). Directive'ten
12
- * component'e yükseltilmenin TEK sebebi: `loading`'i gerçek bir
13
- * `<mf-spinner>`'a, `iconStart`/`iconEnd`'i gerçek ikon element'lerine
14
- * bağlayabilmek için bir ŞABLONA ihtiyaç duyulması — tüketicinin kendi
15
- * içeriği `<ng-content />` ile AYNEN korunur.
8
+ * (`<mf-button>`) DEĞİL — tüketicinin `class="..."` ile verdiği static
9
+ * class doğrudan gerçek native elemana düşer. Component olmasının TEK
10
+ * sebebi: `loading`'i gerçek bir `<mf-spinner>`'a, `iconStart`/`iconEnd`'i
11
+ * gerçek ikon element'lerine bağlayabilmek için bir ŞABLONA ihtiyaç duyması.
16
12
  *
17
- * `tone` (renk) × `appearance` (dolu/kenarlıklı/düz-metin) bağımsız iki
18
- * girdi — ör. `tone="danger" appearance="text" size="icon"` sadece ikon
19
- * gösteren, kenarlıksız bir sil butonu için.
13
+ * `tone` (renk) × `appearance` (filled/soft/outlined/ghost/text/link) ×
14
+ * `size` (xs…xl, icon-sm/icon/icon-lg) bağımsız eksenler.
15
+ *
16
+ * Mikro-etkileşimler: basınca `scale(0.98)` (yumuşak geçişli), `iconEnd`
17
+ * hover'da 2px ileri kayar (RTL'de geri), loading genişliği korur.
20
18
  */
21
19
  declare class Button {
22
20
  readonly tone: _angular_core.InputSignal<"primary" | "neutral" | "success" | "warning" | "danger" | "info" | "help" | null | undefined>;
23
- readonly appearance: _angular_core.InputSignal<"filled" | "outlined" | "text" | null | undefined>;
24
- readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "icon" | null | undefined>;
25
- /** Sadece `size="icon"`'da etkili — bkz. button.variants.ts. */
21
+ readonly appearance: _angular_core.InputSignal<"filled" | "soft" | "outlined" | "ghost" | "text" | "link" | null | undefined>;
22
+ readonly size: _angular_core.InputSignal<"xs" | "sm" | "md" | "lg" | "xl" | "icon-sm" | "icon" | "icon-lg" | null | undefined>;
23
+ /** Sadece ikon boyutlarında (`icon-sm`/`icon`/`icon-lg`) etkili — bkz. button.variants.ts. */
26
24
  readonly shape: _angular_core.InputSignal<"round" | "square" | null | undefined>;
27
25
  /** Native <button> varsayılan type="submit" sürprizini önlemek için — <a>'da yok sayılır. */
28
26
  readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
29
27
  /**
30
- * `true` iken içeriğin (`<ng-content />`) ÖNÜNE `<mf-spinner size="xs" />`
31
- * eklenir — `iconStart` varsa YERİNE geçer, etiket metni görünür KALIR
32
- * (buton "Kaydet" yazıp yanında dönen bir gösterge taşır, metin
33
- * kaybolmaz). `disabled`'ı KENDİLİĞİNDEN yönetmez — tüketici
34
- * `[disabled]="loading() || ..."` ile kendi bağlar.
28
+ * `true` iken: `iconStart` varsa spinner onun YERİNE geçer (metin görünür
29
+ * kalır); yoksa spinner ortaya biner ve içerik saydamlaşır — iki durumda da
30
+ * buton genişliği DEĞİŞMEZ. `disabled`'ı KENDİLİĞİNDEN yönetmez —
31
+ * tüketici `[disabled]="loading() || ..."` ile kendi bağlar.
35
32
  */
36
33
  readonly loading: _angular_core.InputSignal<boolean>;
37
- /** Material Symbol adı (bkz. `Icon`) — içeriğin ÖNÜNE eklenir. `loading=true` iken spinner onun YERİNE geçer. */
34
+ /** İkon adı (bkz. `Icon`) — içeriğin ÖNÜNE eklenir. `loading=true` iken spinner onun YERİNE geçer. */
38
35
  readonly iconStart: _angular_core.InputSignal<string>;
39
- /** Material Symbol adı — içeriğin ARDINA eklenir. `loading=true` iken GİZLENİR (tek bir dönen gösterge yeterli — `iconStart` ile aynı ilke). */
36
+ /** İkon adı — içeriğin ARDINA eklenir, hover'da ileri kayar. `loading=true` iken GİZLENİR. */
40
37
  readonly iconEnd: _angular_core.InputSignal<string>;
41
38
  protected readonly classes: _angular_core.Signal<string>;
42
39
  protected readonly nativeType: _angular_core.Signal<"button" | "submit" | "reset">;
40
+ protected readonly iconPx: _angular_core.Signal<number>;
41
+ protected readonly contentClass: _angular_core.Signal<string>;
43
42
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Button, never>;
44
43
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<Button, "button[mfButton], a[mfButton]", ["mfButton"], { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "iconStart": { "alias": "iconStart"; "required": false; "isSignal": true; }; "iconEnd": { "alias": "iconEnd"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
45
44
  }
46
45
 
47
- /**
48
- * İki bağımsız eksen: `tone` (anlamsal renk, bkz. `MfTone`) × `appearance`
49
- * (dolu/kenarlıklı/düz-metin). Her kombinasyon
50
- * `compoundVariants`'ta açık — okunabilirlik netlik demek, kısayola kaçma.
51
- *
52
- * Gloss/iç-highlight YOK — 2 kez reddedildi.
53
- * `outlined` kenarlığı bilinçli olarak jenerik gri DEĞİL, rengin kendisinin
54
- * düşük opaklıklı hali (`border-accent/30` gibi) — düz gri çizgi "90'lar
55
- * form elemanı" hissi veriyordu, renkli-şeffaf kenarlık modern/kasıtlı durur.
56
- * Bu opaklık artık TEK bir class'ta iki modu birden doğru veriyor: `accent`/
57
- * `success`/`warning`/`danger`/`info` çıplak isimleri `styles.css`'te
58
- * moda göre takas olan rol token'ları (600 basamağı light, 400 basamağı
59
- * dark) — `dark:` ikizi yazmaya gerek YOK.
60
- */
61
46
  declare const buttonVariants: (props?: ({
62
47
  tone?: "primary" | "neutral" | "success" | "warning" | "danger" | "info" | "help" | null | undefined;
63
- appearance?: "filled" | "outlined" | "text" | null | undefined;
64
- size?: "sm" | "md" | "lg" | "icon" | null | undefined;
48
+ appearance?: "filled" | "soft" | "outlined" | "ghost" | "text" | "link" | null | undefined;
49
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "icon-sm" | "icon" | "icon-lg" | null | undefined;
65
50
  shape?: "round" | "square" | null | undefined;
66
51
  } & class_variance_authority_types.ClassProp) | undefined) => string;
67
52
  type ButtonTone = VariantProps<typeof buttonVariants>['tone'];
68
- /** @deprecated `ButtonTone` kullan — `severity` girdisi `tone`'a taşındı (bkz. plan Faz 1a). */
53
+ /** @deprecated `ButtonTone` kullan — `severity` girdisi `tone`'a taşındı. */
69
54
  type ButtonSeverity = ButtonTone;
70
55
  type ButtonAppearance = VariantProps<typeof buttonVariants>['appearance'];
71
56
  type ButtonSize = VariantProps<typeof buttonVariants>['size'];
@@ -4,16 +4,17 @@ import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  /** `<div mfCard padding="md" [interactive]="true">...</div>` — `interactive` tıklanabilir/navigasyona giden kartlar için hover'da hafif bir yükselme ekler. */
6
6
  declare class Card {
7
- readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | null | undefined>;
7
+ readonly appearance: _angular_core.InputSignal<"outline" | "elevated" | "sunken" | "glass" | null | undefined>;
8
+ readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | "lg" | null | undefined>;
8
9
  readonly interactive: _angular_core.InputSignal<boolean | null | undefined>;
9
10
  protected readonly classes: _angular_core.Signal<string>;
10
11
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Card, never>;
11
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Card, "[mfCard]", never, { "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Card, "[mfCard]", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
13
  }
13
14
 
14
15
  /** `<div mfCardBody>...</div>` — bkz. `CardHeader`'ın JSDoc'u. */
15
16
  declare class CardBody {
16
- readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | null | undefined>;
17
+ readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | "lg" | null | undefined>;
17
18
  protected readonly classes: _angular_core.Signal<string>;
18
19
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardBody, never>;
19
20
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CardBody, "[mfCardBody]", never, { "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -24,7 +25,7 @@ declare class CardBody {
24
25
  * Aksiyon düğmeleri için sağa yaslanmış bir satır varsayar (`justify-end`).
25
26
  */
26
27
  declare class CardFooter {
27
- readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | null | undefined>;
28
+ readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | "lg" | null | undefined>;
28
29
  readonly bordered: _angular_core.InputSignal<boolean>;
29
30
  protected readonly classes: _angular_core.Signal<string>;
30
31
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardFooter, never>;
@@ -38,7 +39,7 @@ declare class CardFooter {
38
39
  * — tek başlık kartlarında (alt parça yok) gereksiz, o yüzden varsayılan `false`.
39
40
  */
40
41
  declare class CardHeader {
41
- readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | null | undefined>;
42
+ readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | "lg" | null | undefined>;
42
43
  readonly bordered: _angular_core.InputSignal<boolean>;
43
44
  protected readonly classes: _angular_core.Signal<string>;
44
45
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardHeader, never>;
@@ -46,26 +47,35 @@ declare class CardHeader {
46
47
  }
47
48
 
48
49
  /**
49
- * BORDER-FIRST (2026-09 Deep Emerald geçişi, kullanıcı kararıyla önceki
50
- * "light modda kenarlıksız, sadece gölge" ilkesinin YERİNE geçti): iki modda
51
- * da `border-hairline` (color.css — %8-12 opak marka-tonlu 1px çizgi),
52
- * gölge YOK. `interactive` kartlarda hover'da hafif bir yükselme hâlâ
53
- * `shadow-2` ile veriliyor — bu artık istisna, varsayılan durum gölgesiz.
50
+ * BORDER-FIRST: iki modda da `border-hairline` (color.css — %8-12 opak
51
+ * marka-tonlu 1px çizgi), gölge YOK — varsayılan `appearance="outline"`.
52
+ *
53
+ * `appearance` (v0.7):
54
+ * - `outline` — varsayılan, hairline + `surface`.
55
+ * - `elevated` — hafif temas gölgesi + koyu modda üst-kenar ışığı; bir
56
+ * sayfada ÖNE çıkması gereken tek kart (fiyat planı, özet).
57
+ * - `sunken` — içeri gömülü (`surface-sunken`), kart içindeki alt bölge.
58
+ * - `glass` — yarı saydam + blur (hero üstü, görsel zemin üstü kartlar);
59
+ * `reduced-transparency`'de düz yüzeye düşer.
60
+ *
61
+ * `interactive` — tıklanabilir kartlar: `hover-lift` (motion.css; yalnızca
62
+ * gerçek hover'lı cihazlarda 2px yükselme + overlay gölgesi) + kenarlık
63
+ * koyulaşır.
54
64
  */
55
65
  declare const cardVariants: (props?: ({
56
- padding?: "none" | "sm" | "md" | null | undefined;
66
+ appearance?: "outline" | "elevated" | "sunken" | "glass" | null | undefined;
67
+ padding?: "none" | "sm" | "md" | "lg" | null | undefined;
57
68
  interactive?: boolean | null | undefined;
58
69
  } & class_variance_authority_types.ClassProp) | undefined) => string;
70
+ type CardAppearance = VariantProps<typeof cardVariants>['appearance'];
59
71
  type CardPadding = VariantProps<typeof cardVariants>['padding'];
60
72
  type CardInteractive = VariantProps<typeof cardVariants>['interactive'];
61
73
  /**
62
74
  * `CardHeader`/`CardBody`/`CardFooter`'ın paylaştığı dolgu ölçeği — `Card`'ın
63
- * kendi `padding` ekseniyle AYNI üç basamak. Alt parçalar kullanılırken dış
64
- * `mfCard`'ın `padding="none"` olması BEKLENİR (aksi halde dolgu iki katmanda
65
- * çakışır) — bu, çağıranın sorumluluğunda (bkz. `Field`'ın `for`/id
66
- * eşleşmesiyle aynı desen, `field.ts`'teki not).
75
+ * kendi `padding` ekseniyle AYNI basamaklar. Alt parçalar kullanılırken dış
76
+ * `mfCard`'ın `padding="none"` olması BEKLENİR.
67
77
  */
68
78
  declare const cardSectionPadding: Record<NonNullable<CardPadding>, string>;
69
79
 
70
80
  export { Card, CardBody, CardFooter, CardHeader, cardSectionPadding, cardVariants };
71
- export type { CardInteractive, CardPadding };
81
+ export type { CardAppearance, CardInteractive, CardPadding };
@@ -0,0 +1,51 @@
1
+ import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
2
+ import * as _angular_core from '@angular/core';
3
+ import { TemplateRef } from '@angular/core';
4
+
5
+ /**
6
+ * `<mf-carousel [items]="slides" [perView]="1" autoplay>
7
+ * <ng-template let-slide>…</ng-template>
8
+ * </mf-carousel>`
9
+ *
10
+ * Yerel kaydırma + `scroll-snap` üstüne kurulu karusel — dokunma/trackpad
11
+ * kaydırması tarayıcının kendisi (akıcı, ataletli), düğmeler ve noktalar
12
+ * `scrollTo` ile gezinir. WAI-ARIA APG "Carousel":
13
+ * - Kök `role="region"` + `aria-roledescription="carousel"`, slaytlar
14
+ * `role="group"` + `aria-roledescription="slide"` + "{i} / {n}" adı.
15
+ * - Otomatik oynatma üzerine gelince/odaklanınca DURUR, açık bir
16
+ * Durdur/Oynat düğmesi vardır (WCAG 2.2.2); azaltılmış harekette başlamaz.
17
+ * - ←/→ (karusel odaktayken) önceki/sonraki.
18
+ */
19
+ declare class Carousel<T> {
20
+ readonly items: _angular_core.InputSignal<readonly T[]>;
21
+ /** Görünürdeki slayt sayısı. */
22
+ readonly perView: _angular_core.InputSignal<number>;
23
+ readonly gap: _angular_core.InputSignal<number>;
24
+ readonly loop: _angular_core.InputSignalWithTransform<boolean, unknown>;
25
+ readonly autoplay: _angular_core.InputSignalWithTransform<boolean, unknown>;
26
+ /** ms */
27
+ readonly interval: _angular_core.InputSignal<number>;
28
+ readonly ariaLabel: _angular_core.InputSignal<string>;
29
+ /** Geçerli sayfa (ilk görünür slayt). */
30
+ readonly index: _angular_core.ModelSignal<number>;
31
+ protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfCarouselLabels>;
32
+ protected readonly template: _angular_core.Signal<TemplateRef<any> | undefined>;
33
+ private readonly track;
34
+ protected readonly hovering: _angular_core.WritableSignal<boolean>;
35
+ protected readonly focusWithin: _angular_core.WritableSignal<boolean>;
36
+ protected readonly userPaused: _angular_core.WritableSignal<boolean>;
37
+ protected readonly playing: _angular_core.Signal<boolean>;
38
+ protected readonly pages: _angular_core.Signal<number[]>;
39
+ protected readonly slideBasis: _angular_core.Signal<string>;
40
+ constructor();
41
+ protected slideLabel(i: number): string;
42
+ goTo(page: number): void;
43
+ step(delta: number, wrap?: boolean): void;
44
+ protected onArrow(event: Event, delta: number): void;
45
+ /** Kullanıcı elle kaydırınca geçerli sayfayı güncelle. */
46
+ protected onScroll(): void;
47
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Carousel<any>, never>;
48
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Carousel<any>, "mf-carousel", ["mfCarousel"], { "items": { "alias": "items"; "required": true; "isSignal": true; }; "perView": { "alias": "perView"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; }, { "index": "indexChange"; }, ["template"], never, true, never>;
49
+ }
50
+
51
+ export { Carousel };
@@ -2,16 +2,19 @@ import * as _angular_core from '@angular/core';
2
2
  import { MfSize } from '@mesgflow/ui-kit/core';
3
3
 
4
4
  /**
5
- * `<input type="checkbox" mfCheckbox">` — `accent-color` (modern tarayıcı
6
- * desteği) native checkbox'ın kendi tik/kutu görselini renklendiriyor, ayrı
7
- * bir cva şemasına gerek yok (Switch'in aksine burada özel track+thumb
8
- * görseli istemiyoruz, native checkbox görünümü + marka rengi yeterli).
5
+ * `<input type="checkbox" mfCheckbox [indeterminate]="some()">` — native
6
+ * `<input>` kalır (klavye/form/erişilebilirlik ağacı değişmez), görsel katman
7
+ * `mf-check` utility'si (styles/tokens/controls.css): rol token'lı kutu,
8
+ * yay eğrisiyle büyüyen işaret, `indeterminate` çizgisi, hover'da marka
9
+ * kenarlığı, basınca hafif küçülme.
9
10
  */
10
11
  declare class Checkbox {
11
12
  readonly size: _angular_core.InputSignal<MfSize>;
13
+ /** "Kısmen seçili" (ör. tablo başlığındaki tümünü-seç) — native `indeterminate` özelliğine yazılır, `aria-checked="mixed"` tarayıcı tarafından anons edilir. */
14
+ readonly indeterminate: _angular_core.InputSignal<boolean>;
12
15
  protected readonly classes: _angular_core.Signal<string>;
13
16
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Checkbox, never>;
14
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Checkbox, "input[type=checkbox][mfCheckbox]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
17
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Checkbox, "input[type=checkbox][mfCheckbox]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
18
  }
16
19
 
17
20
  export { Checkbox };
@@ -26,6 +26,9 @@ declare class CodeBlock {
26
26
  readonly copyable: _angular_core.InputSignalWithTransform<boolean, unknown>;
27
27
  /** Kaydırma alanının azami yüksekliği (CSS uzunluğu, ör. `'20rem'`); verilmezse sınırsız. */
28
28
  readonly maxHeight: _angular_core.InputSignal<string | undefined>;
29
+ /** `false` — kenarlık/köşe yarıçapı olmadan, bir kartın/panelin İÇİNE gömülü (sekmeli demo panelleri). */
30
+ readonly bordered: _angular_core.InputSignalWithTransform<boolean, unknown>;
31
+ protected readonly figureClasses: _angular_core.Signal<string>;
29
32
  private readonly highlighter;
30
33
  private readonly labels;
31
34
  protected readonly hasHeader: _angular_core.Signal<boolean>;
@@ -36,7 +39,7 @@ declare class CodeBlock {
36
39
  protected readonly wraps: _angular_core.Signal<boolean>;
37
40
  protected readonly preClasses: _angular_core.Signal<string>;
38
41
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeBlock, never>;
39
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeBlock, "mf-code-block", ["mfCodeBlock"], { "code": { "alias": "code"; "required": true; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "lineNumbers": { "alias": "lineNumbers"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "copyable": { "alias": "copyable"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
42
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeBlock, "mf-code-block", ["mfCodeBlock"], { "code": { "alias": "code"; "required": true; "isSignal": true; }; "language": { "alias": "language"; "required": false; "isSignal": true; }; "filename": { "alias": "filename"; "required": false; "isSignal": true; }; "lineNumbers": { "alias": "lineNumbers"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "copyable": { "alias": "copyable"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
40
43
  }
41
44
 
42
45
  /**
@@ -8,54 +8,79 @@ import { VariantProps } from 'class-variance-authority';
8
8
  interface ComboboxOption<T> {
9
9
  label: string;
10
10
  value: T;
11
+ /** İkincil satır (e-posta, açıklama) — aramaya da dahildir. */
12
+ description?: string;
13
+ disabled?: boolean;
11
14
  }
15
+ /** Listede gösterilen satır — gerçek bir seçenek ya da "oluştur" satırı. */
16
+ type Row<T> = {
17
+ kind: 'option';
18
+ option: ComboboxOption<T>;
19
+ } | {
20
+ kind: 'create';
21
+ query: string;
22
+ };
12
23
  /**
13
- * `<mf-combobox [options]="opts" [(value)]="chosen" placeholder="Ara..." />`
24
+ * `<mf-combobox [options]="opts" [(value)]="chosen" />` — filtrelenebilir tekli seçim.
25
+ * `<mf-combobox multiple [options]="opts" [(values)]="tags" creatable (create)="add($event)" />`
26
+ * — çoklu seçim (çipler), isteğe bağlı "oluştur" satırı.
14
27
  *
15
- * `Select`'in (bkz. select.ts) genişletilmiş hâli — filtrelenebilir/typeahead
16
- * seçim. `@angular/aria/combobox` + `@angular/aria/listbox` zincirini
17
- * KULLANMADI, bilinçli bir tercih: o zincir kendi popup pozisyonlamasını
18
- * taşımıyor (headless), `Select`'in ZATEN kanıtlanmış CDK Overlay + elle ARIA
19
- * deseni (highlighted index, `role="listbox"`/`role="option"`) buraya
20
- * genişletmek, dört ayrı directive'i (Combobox/ComboboxPopup/ComboboxWidget/
21
- * Listbox/Option) doğru sırayla bağlamaktan daha az riskli.
28
+ * ARIA 1.2 combobox deseni: input `role="combobox"` + `aria-controls` (listbox)
29
+ * + `aria-activedescendant` (vurgulanan satır; odak input'ta kalır). Çoklu
30
+ * modda listbox `aria-multiselectable`, seçim sonrası panel AÇIK kalır ve
31
+ * sorgu temizlenir; boş sorguda Backspace son çipi kaldırır.
22
32
  *
23
- * `(mousedown)="$event.preventDefault()"` seçenek satırında ZORUNLU —
24
- * aksi halde input'un `blur`'ı `click`'ten ÖNCE tetiklenip paneli kapatır
25
- * (klasik combobox tuzağı).
33
+ * `(mousedown)="$event.preventDefault()"` seçenek satırında ZORUNLU — aksi
34
+ * halde input'un `blur`'ı `click`'ten ÖNCE tetiklenip paneli kapatır.
26
35
  */
27
36
  declare class Combobox<T> implements ControlValueAccessor {
28
37
  readonly options: _angular_core.InputSignal<ComboboxOption<T>[]>;
29
38
  readonly value: _angular_core.ModelSignal<T | null>;
39
+ /** Çoklu modda seçili değerler. */
40
+ readonly values: _angular_core.ModelSignal<T[]>;
41
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
42
+ /** Sorgu hiçbir etiketle birebir eşleşmezse listenin sonunda "oluştur" satırı. */
43
+ readonly creatable: _angular_core.InputSignalWithTransform<boolean, unknown>;
30
44
  readonly placeholder: _angular_core.InputSignal<string | undefined>;
31
- readonly disabled: _angular_core.InputSignal<boolean>;
45
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
32
46
  readonly size: _angular_core.InputSignal<MfSize>;
33
- readonly hasError: _angular_core.InputSignal<boolean>;
47
+ readonly hasError: _angular_core.InputSignalWithTransform<boolean, unknown>;
34
48
  readonly ariaLabel: _angular_core.InputSignal<string>;
49
+ /** Harici `<label for>` / `mf-field for` için input id'si. */
50
+ readonly inputId: _angular_core.InputSignal<string | undefined>;
51
+ /** "Oluştur" satırı seçildi — tüketici seçeneği ekleyip seçer. */
52
+ readonly create: _angular_core.OutputEmitterRef<string>;
35
53
  private onChange;
36
54
  private onTouched;
37
- protected readonly comboboxLabels: _angular_core.Signal<_mesgflow_ui_kit_core.MfComboboxLabels>;
55
+ protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfComboboxLabels>;
38
56
  protected readonly effectivePlaceholder: _angular_core.Signal<string>;
57
+ private readonly inputEl;
39
58
  protected readonly open: _angular_core.WritableSignal<boolean>;
40
59
  protected readonly query: _angular_core.WritableSignal<string>;
41
60
  protected readonly highlighted: _angular_core.WritableSignal<number>;
42
- protected readonly triggerClasses: _angular_core.Signal<string>;
43
- /** ARIA 1.2 combobox deseni: input'un `aria-controls`'ü panel listbox'ına işaret etmeli. */
44
61
  protected readonly listboxId: string;
62
+ protected readonly optionIdPrefix: string;
63
+ protected readonly triggerClasses: _angular_core.Signal<string>;
45
64
  protected readonly selectedLabel: _angular_core.Signal<string>;
46
- protected readonly filteredOptions: _angular_core.Signal<ComboboxOption<T>[]>;
47
- writeValue(value: T | null): void;
48
- registerOnChange(fn: (value: T | null) => void): void;
65
+ protected readonly selectedOptions: _angular_core.Signal<ComboboxOption<T>[]>;
66
+ protected readonly rows: _angular_core.Signal<Row<T>[]>;
67
+ protected readonly activeDescendant: _angular_core.Signal<string | null>;
68
+ protected createLabel(query: string): string;
69
+ protected removeLabel(label: string): string;
70
+ writeValue(value: T | T[] | null): void;
71
+ registerOnChange(fn: (value: T | T[] | null) => void): void;
49
72
  registerOnTouched(fn: () => void): void;
50
73
  protected onFocus(): void;
74
+ protected focusInput(): void;
51
75
  protected onQueryInput(raw: string): void;
52
- protected select(option: ComboboxOption<T>): void;
76
+ protected choose(row: Row<T>): void;
77
+ protected removeValue(value: T): void;
53
78
  protected close(): void;
54
79
  protected isSelected(option: ComboboxOption<T>): boolean;
55
- protected optionClasses(option: ComboboxOption<T>, index: number): string;
80
+ protected rowClasses(row: Row<T>, index: number): string;
56
81
  protected onKeydown(event: KeyboardEvent): void;
57
82
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Combobox<any>, never>;
58
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Combobox<any>, "mf-combobox", ["mfCombobox"], { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
83
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Combobox<any>, "mf-combobox", ["mfCombobox"], { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "creatable": { "alias": "creatable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "values": "valuesChange"; "create": "create"; }, never, never, true, never>;
59
84
  }
60
85
 
61
86
  /** `Select`'in trigger/option görsel diliyle AYNI — bkz. select.variants.ts / `core/recipes.ts`. */