@mesgflow/ui-kit 0.6.0 → 0.8.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 (227) hide show
  1. package/README.md +56 -5
  2. package/fesm2022/mesgflow-ui-kit-accordion.mjs +9 -8
  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-alert.mjs +3 -3
  7. package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs +37 -0
  8. package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs.map +1 -0
  9. package/fesm2022/mesgflow-ui-kit-avatar-group.mjs +3 -3
  10. package/fesm2022/mesgflow-ui-kit-avatar.mjs +3 -3
  11. package/fesm2022/mesgflow-ui-kit-badge.mjs +3 -3
  12. package/fesm2022/mesgflow-ui-kit-banner.mjs +3 -3
  13. package/fesm2022/mesgflow-ui-kit-blocks.mjs +207 -0
  14. package/fesm2022/mesgflow-ui-kit-blocks.mjs.map +1 -0
  15. package/fesm2022/mesgflow-ui-kit-box-input.mjs +4 -4
  16. package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -1
  17. package/fesm2022/mesgflow-ui-kit-brand.mjs +3 -3
  18. package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs +3 -3
  19. package/fesm2022/mesgflow-ui-kit-button-group.mjs +3 -3
  20. package/fesm2022/mesgflow-ui-kit-button.mjs +190 -244
  21. package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -1
  22. package/fesm2022/mesgflow-ui-kit-card.mjs +48 -27
  23. package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -1
  24. package/fesm2022/mesgflow-ui-kit-carousel.mjs +308 -0
  25. package/fesm2022/mesgflow-ui-kit-carousel.mjs.map +1 -0
  26. package/fesm2022/mesgflow-ui-kit-chart.mjs +12 -12
  27. package/fesm2022/mesgflow-ui-kit-checkbox.mjs +18 -23
  28. package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -1
  29. package/fesm2022/mesgflow-ui-kit-chip.mjs +5 -5
  30. package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -1
  31. package/fesm2022/mesgflow-ui-kit-code-block.mjs +11 -7
  32. package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -1
  33. package/fesm2022/mesgflow-ui-kit-collapsible.mjs +9 -9
  34. package/fesm2022/mesgflow-ui-kit-color-picker.mjs +9 -7
  35. package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -1
  36. package/fesm2022/mesgflow-ui-kit-combobox.mjs +147 -67
  37. package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -1
  38. package/fesm2022/mesgflow-ui-kit-command.mjs +15 -16
  39. package/fesm2022/mesgflow-ui-kit-command.mjs.map +1 -1
  40. package/fesm2022/mesgflow-ui-kit-context-menu.mjs +7 -9
  41. package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -1
  42. package/fesm2022/mesgflow-ui-kit-copy-button.mjs +6 -6
  43. package/fesm2022/mesgflow-ui-kit-core.mjs +446 -128
  44. package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -1
  45. package/fesm2022/mesgflow-ui-kit-countdown.mjs +149 -0
  46. package/fesm2022/mesgflow-ui-kit-countdown.mjs.map +1 -0
  47. package/fesm2022/mesgflow-ui-kit-date-picker.mjs +140 -19
  48. package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -1
  49. package/fesm2022/mesgflow-ui-kit-description-list.mjs +3 -3
  50. package/fesm2022/mesgflow-ui-kit-dialog.mjs +310 -64
  51. package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -1
  52. package/fesm2022/mesgflow-ui-kit-divider.mjs +3 -3
  53. package/fesm2022/mesgflow-ui-kit-drawer.mjs +109 -0
  54. package/fesm2022/mesgflow-ui-kit-drawer.mjs.map +1 -0
  55. package/fesm2022/mesgflow-ui-kit-dropzone.mjs +6 -6
  56. package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -1
  57. package/fesm2022/mesgflow-ui-kit-empty-state.mjs +3 -3
  58. package/fesm2022/mesgflow-ui-kit-field.mjs +55 -14
  59. package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -1
  60. package/fesm2022/mesgflow-ui-kit-file-upload.mjs +356 -0
  61. package/fesm2022/mesgflow-ui-kit-file-upload.mjs.map +1 -0
  62. package/fesm2022/mesgflow-ui-kit-hover-card.mjs +6 -6
  63. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +135 -0
  64. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -1
  65. package/fesm2022/mesgflow-ui-kit-icon.mjs +8 -3
  66. package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -1
  67. package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs +371 -0
  68. package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs.map +1 -0
  69. package/fesm2022/mesgflow-ui-kit-inline-edit.mjs +279 -0
  70. package/fesm2022/mesgflow-ui-kit-inline-edit.mjs.map +1 -0
  71. package/fesm2022/mesgflow-ui-kit-input.mjs +162 -19
  72. package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -1
  73. package/fesm2022/mesgflow-ui-kit-kbd.mjs +3 -3
  74. package/fesm2022/mesgflow-ui-kit-lightbox.mjs +299 -0
  75. package/fesm2022/mesgflow-ui-kit-lightbox.mjs.map +1 -0
  76. package/fesm2022/mesgflow-ui-kit-link.mjs +5 -5
  77. package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -1
  78. package/fesm2022/mesgflow-ui-kit-listbox.mjs +151 -0
  79. package/fesm2022/mesgflow-ui-kit-listbox.mjs.map +1 -0
  80. package/fesm2022/mesgflow-ui-kit-mention.mjs +283 -0
  81. package/fesm2022/mesgflow-ui-kit-mention.mjs.map +1 -0
  82. package/fesm2022/mesgflow-ui-kit-menu.mjs +178 -14
  83. package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -1
  84. package/fesm2022/mesgflow-ui-kit-nav-menu.mjs +276 -0
  85. package/fesm2022/mesgflow-ui-kit-nav-menu.mjs.map +1 -0
  86. package/fesm2022/mesgflow-ui-kit-notification-center.mjs +281 -0
  87. package/fesm2022/mesgflow-ui-kit-notification-center.mjs.map +1 -0
  88. package/fesm2022/mesgflow-ui-kit-number-input.mjs +9 -6
  89. package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -1
  90. package/fesm2022/mesgflow-ui-kit-otp-input.mjs +3 -3
  91. package/fesm2022/mesgflow-ui-kit-page-header.mjs +6 -6
  92. package/fesm2022/mesgflow-ui-kit-pagination.mjs +7 -6
  93. package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -1
  94. package/fesm2022/mesgflow-ui-kit-password-input.mjs +38 -68
  95. package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -1
  96. package/fesm2022/mesgflow-ui-kit-popover.mjs +12 -52
  97. package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -1
  98. package/fesm2022/mesgflow-ui-kit-progress.mjs +164 -23
  99. package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -1
  100. package/fesm2022/mesgflow-ui-kit-qr-code.mjs +766 -0
  101. package/fesm2022/mesgflow-ui-kit-qr-code.mjs.map +1 -0
  102. package/fesm2022/mesgflow-ui-kit-radio.mjs +10 -12
  103. package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -1
  104. package/fesm2022/mesgflow-ui-kit-rating.mjs +4 -4
  105. package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -1
  106. package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +3 -3
  107. package/fesm2022/mesgflow-ui-kit-search-input.mjs +11 -7
  108. package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -1
  109. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +15 -11
  110. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -1
  111. package/fesm2022/mesgflow-ui-kit-select.mjs +6 -5
  112. package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -1
  113. package/fesm2022/mesgflow-ui-kit-sidebar.mjs +24 -21
  114. package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -1
  115. package/fesm2022/mesgflow-ui-kit-skeleton.mjs +6 -5
  116. package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -1
  117. package/fesm2022/mesgflow-ui-kit-slider.mjs +253 -6
  118. package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -1
  119. package/fesm2022/mesgflow-ui-kit-sortable.mjs +526 -0
  120. package/fesm2022/mesgflow-ui-kit-sortable.mjs.map +1 -0
  121. package/fesm2022/mesgflow-ui-kit-spinner.mjs +44 -15
  122. package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -1
  123. package/fesm2022/mesgflow-ui-kit-split-button.mjs +205 -0
  124. package/fesm2022/mesgflow-ui-kit-split-button.mjs.map +1 -0
  125. package/fesm2022/mesgflow-ui-kit-splitter.mjs +213 -6
  126. package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -1
  127. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +13 -6
  128. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -1
  129. package/fesm2022/mesgflow-ui-kit-stepper.mjs +171 -64
  130. package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -1
  131. package/fesm2022/mesgflow-ui-kit-switch.mjs +4 -4
  132. package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -1
  133. package/fesm2022/mesgflow-ui-kit-table.mjs +34 -28
  134. package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -1
  135. package/fesm2022/mesgflow-ui-kit-tabs.mjs +421 -180
  136. package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -1
  137. package/fesm2022/mesgflow-ui-kit-tag-input.mjs +9 -4
  138. package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -1
  139. package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +3 -3
  140. package/fesm2022/mesgflow-ui-kit-theming.mjs +7 -7
  141. package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -1
  142. package/fesm2022/mesgflow-ui-kit-time-picker.mjs +6 -6
  143. package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -1
  144. package/fesm2022/mesgflow-ui-kit-timeline.mjs +3 -3
  145. package/fesm2022/mesgflow-ui-kit-toast.mjs +118 -35
  146. package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -1
  147. package/fesm2022/mesgflow-ui-kit-toggle.mjs +12 -11
  148. package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -1
  149. package/fesm2022/mesgflow-ui-kit-toolbar.mjs +13 -11
  150. package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -1
  151. package/fesm2022/mesgflow-ui-kit-tooltip.mjs +76 -53
  152. package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -1
  153. package/fesm2022/mesgflow-ui-kit-tour.mjs +17 -29
  154. package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -1
  155. package/fesm2022/mesgflow-ui-kit-transfer-list.mjs +288 -0
  156. package/fesm2022/mesgflow-ui-kit-transfer-list.mjs.map +1 -0
  157. package/fesm2022/mesgflow-ui-kit-tree-select.mjs +3 -3
  158. package/fesm2022/mesgflow-ui-kit-tree.mjs +4 -4
  159. package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -1
  160. package/fesm2022/mesgflow-ui-kit-virtual-list.mjs +109 -0
  161. package/fesm2022/mesgflow-ui-kit-virtual-list.mjs.map +1 -0
  162. package/fesm2022/mesgflow-ui-kit.mjs +93 -12836
  163. package/fesm2022/mesgflow-ui-kit.mjs.map +1 -1
  164. package/package.json +91 -3
  165. package/schematics/collection.json +10 -0
  166. package/schematics/migration.json +10 -0
  167. package/schematics/migrations/v0-7.cjs +70 -0
  168. package/schematics/ng-add/index.cjs +234 -0
  169. package/schematics/ng-add/schema.json +43 -0
  170. package/tokens/color.css +96 -0
  171. package/tokens/controls.css +145 -0
  172. package/tokens/elevation.css +62 -6
  173. package/tokens/motion.css +304 -66
  174. package/tokens/radius.css +14 -0
  175. package/tokens.css +1 -0
  176. package/tokens.json +1583 -0
  177. package/types/mesgflow-ui-kit-agenda.d.ts +49 -0
  178. package/types/mesgflow-ui-kit-aspect-ratio.d.ts +18 -0
  179. package/types/mesgflow-ui-kit-blocks.d.ts +128 -0
  180. package/types/mesgflow-ui-kit-button.d.ts +23 -38
  181. package/types/mesgflow-ui-kit-card.d.ts +26 -16
  182. package/types/mesgflow-ui-kit-carousel.d.ts +51 -0
  183. package/types/mesgflow-ui-kit-checkbox.d.ts +8 -5
  184. package/types/mesgflow-ui-kit-code-block.d.ts +4 -1
  185. package/types/mesgflow-ui-kit-combobox.d.ts +47 -22
  186. package/types/mesgflow-ui-kit-command.d.ts +2 -2
  187. package/types/mesgflow-ui-kit-core.d.ts +279 -21
  188. package/types/mesgflow-ui-kit-countdown.d.ts +47 -0
  189. package/types/mesgflow-ui-kit-date-picker.d.ts +31 -1
  190. package/types/mesgflow-ui-kit-dialog.d.ts +122 -14
  191. package/types/mesgflow-ui-kit-drawer.d.ts +45 -0
  192. package/types/mesgflow-ui-kit-field.d.ts +17 -8
  193. package/types/mesgflow-ui-kit-file-upload.d.ts +64 -0
  194. package/types/mesgflow-ui-kit-hover-card.d.ts +2 -2
  195. package/types/mesgflow-ui-kit-icons-lucide.d.ts +27 -0
  196. package/types/mesgflow-ui-kit-inline-edit.d.ts +42 -0
  197. package/types/mesgflow-ui-kit-input.d.ts +64 -2
  198. package/types/mesgflow-ui-kit-lightbox.d.ts +54 -0
  199. package/types/mesgflow-ui-kit-listbox.d.ts +30 -0
  200. package/types/mesgflow-ui-kit-mention.d.ts +59 -0
  201. package/types/mesgflow-ui-kit-menu.d.ts +41 -2
  202. package/types/mesgflow-ui-kit-nav-menu.d.ts +58 -0
  203. package/types/mesgflow-ui-kit-notification-center.d.ts +41 -0
  204. package/types/mesgflow-ui-kit-number-input.d.ts +3 -1
  205. package/types/mesgflow-ui-kit-password-input.d.ts +35 -5
  206. package/types/mesgflow-ui-kit-popover.d.ts +13 -5
  207. package/types/mesgflow-ui-kit-progress.d.ts +33 -12
  208. package/types/mesgflow-ui-kit-qr-code.d.ts +160 -0
  209. package/types/mesgflow-ui-kit-radio.d.ts +2 -2
  210. package/types/mesgflow-ui-kit-search-input.d.ts +3 -1
  211. package/types/mesgflow-ui-kit-segmented-control.d.ts +4 -0
  212. package/types/mesgflow-ui-kit-sidebar.d.ts +1 -1
  213. package/types/mesgflow-ui-kit-slider.d.ts +60 -1
  214. package/types/mesgflow-ui-kit-sortable.d.ts +103 -0
  215. package/types/mesgflow-ui-kit-spinner.d.ts +5 -8
  216. package/types/mesgflow-ui-kit-split-button.d.ts +47 -0
  217. package/types/mesgflow-ui-kit-splitter.d.ts +64 -1
  218. package/types/mesgflow-ui-kit-stat-tile.d.ts +3 -0
  219. package/types/mesgflow-ui-kit-stepper.d.ts +54 -32
  220. package/types/mesgflow-ui-kit-table.d.ts +2 -0
  221. package/types/mesgflow-ui-kit-tabs.d.ts +193 -93
  222. package/types/mesgflow-ui-kit-tag-input.d.ts +3 -1
  223. package/types/mesgflow-ui-kit-toast.d.ts +48 -22
  224. package/types/mesgflow-ui-kit-tooltip.d.ts +15 -12
  225. package/types/mesgflow-ui-kit-transfer-list.d.ts +34 -0
  226. package/types/mesgflow-ui-kit-virtual-list.d.ts +35 -0
  227. package/types/mesgflow-ui-kit.d.ts +88 -5444
@@ -0,0 +1,30 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ interface ListboxOption<V> {
4
+ label: string;
5
+ value: V;
6
+ description?: string;
7
+ icon?: string;
8
+ disabled?: boolean;
9
+ }
10
+ /**
11
+ * `<mf-listbox [options]="plans" [(value)]="chosen" ariaLabel="Plan" />`
12
+ *
13
+ * Her zaman görünür seçim listesi (açılır olmayan Select) — ayar panelleri,
14
+ * filtre kenar çubukları, iki sütunlu seçiciler. `@angular/aria/listbox`:
15
+ * ↑/↓, Home/End, typeahead, Shift+ok ile aralık (çoklu), `aria-activedescendant`.
16
+ *
17
+ * `value` her zaman bir DİZİ (aria listbox sözleşmesi); tekli modda tek öğeli.
18
+ */
19
+ declare class Listbox<V> {
20
+ readonly options: _angular_core.InputSignal<ListboxOption<V>[]>;
21
+ readonly value: _angular_core.ModelSignal<V[]>;
22
+ readonly multi: _angular_core.InputSignalWithTransform<boolean, unknown>;
23
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
24
+ readonly ariaLabel: _angular_core.InputSignal<string>;
25
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Listbox<any>, never>;
26
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Listbox<any>, "mf-listbox", ["mfListbox"], { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
27
+ }
28
+
29
+ export { Listbox };
30
+ export type { ListboxOption };
@@ -0,0 +1,59 @@
1
+ import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
2
+ import * as _angular_core from '@angular/core';
3
+
4
+ interface MentionItem {
5
+ label: string;
6
+ value: string;
7
+ description?: string;
8
+ }
9
+ /** İmlecin öğeye göre piksel konumu — gizli bir "ayna" div ile ölçülür. */
10
+ declare function caretCoordinates(el: HTMLTextAreaElement | HTMLInputElement, position: number): {
11
+ top: number;
12
+ left: number;
13
+ height: number;
14
+ };
15
+ /** Öneri paneli — `mfMention` direktifi açar. */
16
+ declare class MentionPanel {
17
+ readonly items: _angular_core.InputSignal<MentionItem[]>;
18
+ readonly active: _angular_core.InputSignal<number>;
19
+ readonly listId: _angular_core.InputSignal<string>;
20
+ readonly pick: _angular_core.OutputEmitterRef<MentionItem>;
21
+ protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfMentionLabels>;
22
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MentionPanel, never>;
23
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MentionPanel, "mf-mention-panel", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "listId": { "alias": "listId"; "required": false; "isSignal": true; }; }, { "pick": "pick"; }, never, never, true, never>;
24
+ }
25
+ /**
26
+ * `<textarea mfInput [mfMention]="people" (mentionAdd)="notify($event)"></textarea>`
27
+ *
28
+ * `@` (ya da `trigger`) yazınca imlecin hemen altında filtrelenmiş öneriler
29
+ * açar; ↑/↓ gezinir, Enter/Tab seçer, Escape kapatır. Seçim `@Ad ` olarak
30
+ * metne eklenir ve `mentionAdd` yayar. Erişilebilirlik: `aria-autocomplete`,
31
+ * `aria-controls` ve vurgulanan öneri için `aria-activedescendant` (odak
32
+ * metin alanında kalır).
33
+ */
34
+ declare class Mention {
35
+ readonly mfMention: _angular_core.InputSignal<MentionItem[]>;
36
+ readonly trigger: _angular_core.InputSignal<string>;
37
+ readonly mentionAdd: _angular_core.OutputEmitterRef<MentionItem>;
38
+ protected readonly listId: string;
39
+ private readonly el;
40
+ private readonly overlay;
41
+ private ref;
42
+ private panel;
43
+ private readonly query;
44
+ private queryStart;
45
+ protected readonly active: _angular_core.WritableSignal<number>;
46
+ protected readonly isOpen: _angular_core.Signal<boolean>;
47
+ protected readonly filtered: _angular_core.Signal<MentionItem[]>;
48
+ constructor();
49
+ protected onInput(): void;
50
+ protected onKeydown(e: Event): void;
51
+ close(): void;
52
+ private insert;
53
+ private render;
54
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Mention, never>;
55
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Mention, "textarea[mfMention], input[mfMention]", ["mfMention"], { "mfMention": { "alias": "mfMention"; "required": true; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; }, { "mentionAdd": "mentionAdd"; }, never, never, true, never>;
56
+ }
57
+
58
+ export { Mention, MentionPanel, caretCoordinates };
59
+ export type { MentionItem };
@@ -1,7 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import * as i1 from '@angular/aria/menu';
3
+ import { Menu as Menu$1 } from '@angular/aria/menu';
3
4
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
5
  import { VariantProps } from 'class-variance-authority';
6
+ import * as _angular_cdk_overlay from '@angular/cdk/overlay';
5
7
 
6
8
  /**
7
9
  * `<mf-menu #menu="ngMenu" (itemSelected)="onSelect($event)"><button mfMenuItem value="a">A</button></mf-menu>`
@@ -49,5 +51,42 @@ declare const menuItemVariants: (props?: ({
49
51
  } & class_variance_authority_types.ClassProp) | undefined) => string;
50
52
  type MenuItemActive = VariantProps<typeof menuItemVariants>['active'];
51
53
 
52
- export { Menu, MenuItem, MenuTrigger, menuItemVariants };
53
- export type { MenuItemActive };
54
+ interface MenubarAction<V = string> {
55
+ label: string;
56
+ value: V;
57
+ icon?: string;
58
+ /** Görsel kısayol ipucu (ör. `Ctrl+S`) — kısayolu KAYDETMEZ, yalnızca gösterir. */
59
+ shortcut?: string;
60
+ disabled?: boolean;
61
+ danger?: boolean;
62
+ /** Bu öğeden SONRA ayırıcı çizgi. */
63
+ separatorAfter?: boolean;
64
+ }
65
+ interface MenubarMenu<V = string> {
66
+ label: string;
67
+ items: MenubarAction<V>[];
68
+ }
69
+ /**
70
+ * `<mf-menubar [menus]="menus" (itemSelect)="run($event)" ariaLabel="Editör" />`
71
+ *
72
+ * Masaüstü uygulama tarzı kalıcı menü çubuğu (Dosya · Düzen · Görünüm) —
73
+ * WAI-ARIA APG "Menubar": `@angular/aria/menu`'nün `ngMenuBar`/`ngMenu`
74
+ * desenleri. Klavye: ←/→ üst menüler arası (açık menü eşlik eder), ↓/Enter
75
+ * açar, ↑/↓ öğeler, typeahead, Escape kapatır ve odağı çubuğa döndürür.
76
+ *
77
+ * Alt menüler CDK bağlı overlay'lerinde; çubuğa ilk odak/hover'da bir kez
78
+ * render edilir (`rendered`), görünürlüğü `ngMenu`'nün `data-visible`'ı yönetir.
79
+ */
80
+ declare class Menubar<V = string> {
81
+ readonly menus: i0.InputSignal<MenubarMenu<V>[]>;
82
+ readonly ariaLabel: i0.InputSignal<string>;
83
+ readonly itemSelect: i0.OutputEmitterRef<V>;
84
+ protected readonly rendered: i0.WritableSignal<boolean>;
85
+ protected readonly submenus: i0.Signal<readonly Menu$1<V>[]>;
86
+ protected readonly positions: _angular_cdk_overlay.ConnectedPosition[];
87
+ static ɵfac: i0.ɵɵFactoryDeclaration<Menubar<any>, never>;
88
+ static ɵcmp: i0.ɵɵComponentDeclaration<Menubar<any>, "mf-menubar", ["mfMenubar"], { "menus": { "alias": "menus"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, never, true, never>;
89
+ }
90
+
91
+ export { Menu, MenuItem, MenuTrigger, Menubar, menuItemVariants };
92
+ export type { MenuItemActive, MenubarAction, MenubarMenu };
@@ -0,0 +1,58 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ interface NavMenuLink {
4
+ label: string;
5
+ href: string;
6
+ description?: string;
7
+ icon?: string;
8
+ }
9
+ interface NavMenuItem {
10
+ label: string;
11
+ /** Alt panel yoksa doğrudan bağlantı. */
12
+ href?: string;
13
+ links?: NavMenuLink[];
14
+ /** Panelin yan tarafındaki vurgulu kart (yeni özellik, duyuru). */
15
+ featured?: NavMenuLink;
16
+ }
17
+ /**
18
+ * `<mf-nav-menu [items]="nav" ariaLabel="Ana gezinme" (linkClick)="go($event)" />`
19
+ *
20
+ * Pazarlama/site başlığı gezinmesi — WAI-ARIA APG "Disclosure Navigation
21
+ * Menu" (bilerek `role="menu"` DEĞİL: site gezinmesi bağlantılardır, menü
22
+ * uygulama komutlarıdır). Üst düğmeler `aria-expanded` + `aria-controls`;
23
+ * paneller ızgara bağlantılar + isteğe bağlı vurgulu kart.
24
+ *
25
+ * - Fare: üzerine gelince kısa gecikmeyle açılır, ayrılınca kapanır.
26
+ * - Klavye: Enter/Boşluk aç/kapa, Escape kapatır ve odağı düğmeye döndürür,
27
+ * odak gezinmeden çıkınca panel kapanır.
28
+ * - `linkClick`: yönlendirici kullanan uygulamalar için (orta tık/yeni sekme
29
+ * için `href` korunur; `event.preventDefault()` tüketicidedir).
30
+ */
31
+ declare class NavMenu {
32
+ readonly items: _angular_core.InputSignal<NavMenuItem[]>;
33
+ readonly ariaLabel: _angular_core.InputSignal<string>;
34
+ /** ms — fare ile açılma gecikmesi. */
35
+ readonly hoverDelay: _angular_core.InputSignal<number>;
36
+ readonly linkClick: _angular_core.OutputEmitterRef<{
37
+ link: NavMenuLink;
38
+ event: MouseEvent;
39
+ }>;
40
+ protected readonly baseId: string;
41
+ protected readonly open: _angular_core.WritableSignal<number | null>;
42
+ private readonly host;
43
+ private timer?;
44
+ protected readonly anyOpen: _angular_core.Signal<boolean>;
45
+ constructor();
46
+ protected panelWidth(item: NavMenuItem): string;
47
+ protected toggle(i: number): void;
48
+ protected hoverOpen(i: number): void;
49
+ protected hoverClose(): void;
50
+ protected onFocusOut(event: FocusEvent): void;
51
+ protected closeAndFocus(): void;
52
+ protected onLink(event: MouseEvent, link: NavMenuLink): void;
53
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavMenu, never>;
54
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavMenu, "mf-nav-menu", ["mfNavMenu"], { "items": { "alias": "items"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hoverDelay": { "alias": "hoverDelay"; "required": false; "isSignal": true; }; }, { "linkClick": "linkClick"; }, never, never, true, never>;
55
+ }
56
+
57
+ export { NavMenu };
58
+ export type { NavMenuItem, NavMenuLink };
@@ -0,0 +1,41 @@
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 NotificationItem {
6
+ id: string;
7
+ title: string;
8
+ body?: string;
9
+ /** Görünen zaman metni ("2 dk önce") — biçimleme tüketicide. */
10
+ time: string;
11
+ read?: boolean;
12
+ /** Avatar için ad; yoksa `icon` gösterilir. */
13
+ actor?: string;
14
+ icon?: string;
15
+ tone?: MfTone;
16
+ }
17
+ /**
18
+ * `<mf-notification-center [(notifications)]="inbox" (itemClick)="open($event)" (viewAll)="go()" />`
19
+ *
20
+ * Başlıktaki zil + açılır gelen kutusu: okunmamış sayacı (99+), "tümünü
21
+ * okundu işaretle", okunmamış/okunmuş sekmesi, boş durum. Bir öğeye tıklamak
22
+ * onu okundu yapar ve `itemClick` yayar. Tetikleyicinin erişilebilir adı
23
+ * okunmamış sayısını içerir; liste `role="list"`.
24
+ */
25
+ declare class NotificationCenter {
26
+ readonly notifications: _angular_core.ModelSignal<NotificationItem[]>;
27
+ readonly itemClick: _angular_core.OutputEmitterRef<NotificationItem>;
28
+ readonly viewAll: _angular_core.OutputEmitterRef<void>;
29
+ protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfNotificationCenterLabels>;
30
+ protected readonly open: _angular_core.WritableSignal<boolean>;
31
+ protected readonly unread: _angular_core.Signal<number>;
32
+ protected readonly triggerLabel: _angular_core.Signal<string>;
33
+ protected toneBg(n: NotificationItem): string;
34
+ markAllRead(): void;
35
+ protected select(n: NotificationItem): void;
36
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationCenter, never>;
37
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotificationCenter, "mf-notification-center", ["mfNotificationCenter"], { "notifications": { "alias": "notifications"; "required": false; "isSignal": true; }; }, { "notifications": "notificationsChange"; "itemClick": "itemClick"; "viewAll": "viewAll"; }, never, never, true, never>;
38
+ }
39
+
40
+ export { NotificationCenter };
41
+ export type { NotificationItem };
@@ -29,6 +29,8 @@ declare class NumberInput implements ControlValueAccessor {
29
29
  readonly unit: _angular_core.InputSignal<string>;
30
30
  readonly disabled: _angular_core.InputSignal<boolean>;
31
31
  readonly hasError: _angular_core.InputSignal<boolean>;
32
+ /** İç `<input>`'un id'si — harici bir `<label for>` / `mf-field for` ile ilişkilendirmek için. */
33
+ readonly inputId: _angular_core.InputSignal<string | undefined>;
32
34
  readonly ariaLabel: _angular_core.InputSignal<string>;
33
35
  private onChange;
34
36
  private onTouched;
@@ -49,7 +51,7 @@ declare class NumberInput implements ControlValueAccessor {
49
51
  protected onUnitPointerMove(event: PointerEvent): void;
50
52
  protected onUnitPointerUp(event: PointerEvent): void;
51
53
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberInput, never>;
52
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberInput, "mf-number-input", ["mfNumberInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
54
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberInput, "mf-number-input", ["mfNumberInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
53
55
  }
54
56
 
55
57
  export { NumberInput };
@@ -2,6 +2,16 @@ import * as _angular_core from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import { ValueAccessorBase } from '@mesgflow/ui-kit/core';
4
4
 
5
+ /**
6
+ * Parola alanının `autocomplete` ipucu — parola yöneticileri/tarayıcı bunu okur:
7
+ * - `current-password` (varsayılan): giriş formu — kayıtlı parolayı doldurur.
8
+ * - `new-password`: kayıt/parola değiştirme — güçlü parola ÖNERİR, eskisini doldurmaz
9
+ * (hem "yeni" hem "tekrar" alanında kullanılır).
10
+ * - `off`: modern tarayıcılar parola alanlarında çoğunlukla YOK SAYAR — sadece
11
+ * gerçekten tek kullanımlık alanlarda (ör. API anahtarı onayı) kullanın.
12
+ * - Diğer geçerli token dizileri de kabul edilir (ör. `section-billing current-password`).
13
+ */
14
+ type PasswordAutocomplete = 'current-password' | 'new-password' | 'off' | (string & {});
5
15
  /**
6
16
  * `<mf-password-input [(value)]="password" />` — `InputGroup` üstüne kompoze
7
17
  * edilmiş, sağda göster/gizle düğmesi taşıyan parola alanı (emsal:
@@ -9,25 +19,45 @@ import { ValueAccessorBase } from '@mesgflow/ui-kit/core';
9
19
  * kullanma deseni). `type="password"`/`"text"` arasında geçiş SADECE
10
20
  * görünürlük içindir — değer her zaman `value` model'inde düz metin olarak
11
21
  * tutulur.
22
+ *
23
+ * Parola yöneticisi uyumu: `autocomplete` (varsayılan `current-password`) ve
24
+ * `name` iç `<input>`'a iletilir; `autocapitalize="off"`/`spellcheck="false"`
25
+ * sabit — parola görünür moda (`type="text"`) geçtiğinde de mobil klavye büyük
26
+ * harfe çevirmez, yazım denetimi parolayı bir sözlük servisine göndermez.
27
+ * Signal Forms `[formField]` bağlandığında `name`/`required`/`readonly`/`disabled`
28
+ * alan durumundan OTOMATİK doldurulur.
12
29
  */
13
30
  declare class PasswordInput extends ValueAccessorBase<string> implements ControlValueAccessor {
14
31
  readonly value: _angular_core.ModelSignal<string>;
15
32
  readonly placeholder: _angular_core.InputSignal<string>;
16
- readonly disabled: _angular_core.InputSignal<boolean>;
17
- readonly hasError: _angular_core.InputSignal<boolean>;
33
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
34
+ readonly hasError: _angular_core.InputSignalWithTransform<boolean, unknown>;
35
+ /** İç `<input>`'un id'si — harici bir `<label for>` / `mf-field for` ile ilişkilendirmek için. */
36
+ readonly inputId: _angular_core.InputSignal<string | undefined>;
18
37
  readonly ariaLabel: _angular_core.InputSignal<string>;
19
- readonly fullWidth: _angular_core.InputSignal<boolean>;
38
+ readonly fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
20
39
  readonly showLabel: _angular_core.InputSignal<string | undefined>;
21
40
  readonly hideLabel: _angular_core.InputSignal<string | undefined>;
41
+ /** Parola yöneticisi ipucu — bkz. `PasswordAutocomplete`. */
42
+ readonly autocomplete: _angular_core.InputSignal<PasswordAutocomplete>;
43
+ /** İç `<input>`'un `name`'i — form gönderimi ve parola yöneticilerinin alanı tanıması için. */
44
+ readonly name: _angular_core.InputSignal<string | undefined>;
45
+ readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
46
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
22
47
  private readonly passwordLabels;
23
48
  protected readonly effectiveShowLabel: _angular_core.Signal<string>;
24
49
  protected readonly effectiveHideLabel: _angular_core.Signal<string>;
50
+ /** Reactive Forms `control.disable()` — `disabled` girdisiyle VEYA'lanır. */
51
+ private readonly formDisabled;
52
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
25
53
  protected readonly visible: _angular_core.WritableSignal<boolean>;
26
- writeValue(value: string): void;
54
+ writeValue(value: string | null): void;
55
+ setDisabledState(disabled: boolean): void;
27
56
  protected toggle(): void;
28
57
  protected onInput(raw: string): void;
29
58
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasswordInput, never>;
30
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordInput, "mf-password-input", ["mfPasswordInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
59
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordInput, "mf-password-input", ["mfPasswordInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
31
60
  }
32
61
 
33
62
  export { PasswordInput };
63
+ export type { PasswordAutocomplete };
@@ -1,9 +1,17 @@
1
+ import * as _angular_cdk_overlay from '@angular/cdk/overlay';
2
+ import { CdkOverlayOrigin } from '@angular/cdk/overlay';
1
3
  import * as _angular_core from '@angular/core';
2
- import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
4
+ import { MfPlacement } from '@mesgflow/ui-kit/core';
3
5
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
6
  import { VariantProps } from 'class-variance-authority';
5
7
 
6
- type PopoverPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'top' | 'bottom' | 'left' | 'right' | 'right-start';
8
+ /**
9
+ * Tüm `MfPlacement` değerleri — `left`/`right` MANTIKSAL (RTL'de çevrilir).
10
+ * `right-start`: tetikleyicinin ÜSTÜYLE hizalı (Sidebar daraltılmış nav
11
+ * flyout'u gibi çok satırlı panellerde `right`in dikey ortalaması paneli
12
+ * beklenmedik yönde kaydırır), 8px boşlukla.
13
+ */
14
+ type PopoverPlacement = MfPlacement;
7
15
  /**
8
16
  * `<button cdkOverlayOrigin #trigger="cdkOverlayOrigin" (click)="open.set(true)">...</button>`
9
17
  * `<mf-popover [origin]="trigger" [(open)]="open">...içerik (ng-content)...</mf-popover>`
@@ -23,7 +31,7 @@ type PopoverPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'
23
31
  declare class Popover {
24
32
  readonly origin: _angular_core.InputSignal<CdkOverlayOrigin>;
25
33
  readonly open: _angular_core.ModelSignal<boolean>;
26
- readonly placement: _angular_core.InputSignal<PopoverPlacement>;
34
+ readonly placement: _angular_core.InputSignal<MfPlacement>;
27
35
  readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | "lg" | null | undefined>;
28
36
  /** Backdrop şeffaf ama TIKLANABİLİR — dışarı tıklayınca kapanması için var, görsel karartma YOK. */
29
37
  readonly hasBackdrop: _angular_core.InputSignal<boolean>;
@@ -36,7 +44,7 @@ declare class Popover {
36
44
  * yazabilir — ör. `Select`'in bir seçenek tıklamasında `this.open.set(false)`
37
45
  * çağırması). `attached()` ise CDK'ya bağlanan GERÇEK durum: `open()`
38
46
  * `false`'a düştüğünde panel ANINDA kaldırılmaz, `closing` işaretlenip
39
- * `animate-overlay-out` oynatılır, `EXIT_MS` sonra `attached` da `false`
47
+ * `animate-overlay-out` oynatılır, `exitDurationMs()` sonra `attached` da `false`
40
48
  * olur. Bu ikili, `DialogService.open()`'daki `closePredicate` gecikmesiyle
41
49
  * AYNI doktrini CDK Overlay tarafında uyguluyor (CDK'nın `cdkConnectedOverlay`'i
42
50
  * Dialog'un aksine bir "kapanışı ertele" kancası SUNMUYOR, bu yüzden
@@ -45,7 +53,7 @@ declare class Popover {
45
53
  protected readonly attached: _angular_core.WritableSignal<boolean>;
46
54
  protected readonly closing: _angular_core.WritableSignal<boolean>;
47
55
  private exitTimer?;
48
- protected readonly positions: _angular_core.Signal<ConnectedPosition[]>;
56
+ protected readonly positions: _angular_core.Signal<_angular_cdk_overlay.ConnectedPosition[]>;
49
57
  protected readonly classes: _angular_core.Signal<string>;
50
58
  constructor();
51
59
  protected close(): void;
@@ -1,32 +1,53 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { MfTone } from '@mesgflow/ui-kit/core';
2
3
  import * as class_variance_authority_types from 'class-variance-authority/types';
3
4
  import { VariantProps } from 'class-variance-authority';
4
5
 
6
+ type ProgressVariant = 'linear' | 'ring';
7
+ type ProgressTone = Exclude<MfTone, 'neutral'>;
5
8
  /**
6
- * `<mf-progress [value]="42" />` (belirlenmiş) veya `<mf-progress
7
- * indeterminate />` (belirsiz — yükleme/tarama gibi süresi bilinmeyen
8
- * işlemler). `animate-progress-slide` keyframe'i `Table`'ın `showStaleOverlay`
9
- * şeridiyle AYNI (tokens.css'te tek tanım, bkz. table.html) — iki yerde ayrı
10
- * ayrı animasyon TANIMLANMADI.
9
+ * `<mf-progress [value]="42" />` · `<mf-progress indeterminate />` ·
10
+ * `<mf-progress variant="ring" [value]="72" showValue />`
11
+ *
12
+ * - `linear` (varsayılan): ince çubuk; belirsiz modda kayan şerit
13
+ * (`animate-progress-slide`, Table'ın yenileme göstergesiyle aynı).
14
+ * - `ring`: dairesel gösterge — `stroke-dashoffset` geçişiyle akıcı dolar,
15
+ * belirsiz modda döner (`animate-spin-slow`). `showValue` ortada yüzdeyi yazar.
16
+ * - `tone`: dolgu rengi (kota uyarısı, hata vb.).
17
+ *
18
+ * `role="progressbar"` + `aria-valuenow` (belirsizde yazılmaz) host'ta.
11
19
  */
12
20
  declare class Progress {
13
21
  readonly value: _angular_core.InputSignal<number>;
14
- readonly indeterminate: _angular_core.InputSignal<boolean>;
15
- readonly size: _angular_core.InputSignal<"sm" | "md" | null | undefined>;
16
- /** `role="progressbar"` için ARIA gerektirdiği erişilebilir ad — bağlamına göre (ör. "Loading", "File upload") override edilmeli; verilmezse `MF_PROGRESS_LABELS`. */
22
+ readonly indeterminate: _angular_core.InputSignalWithTransform<boolean, unknown>;
23
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | null | undefined>;
24
+ readonly variant: _angular_core.InputSignal<ProgressVariant>;
25
+ readonly tone: _angular_core.InputSignal<ProgressTone>;
26
+ /** Yalnızca `ring`: ortada yüzde metni. */
27
+ readonly showValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
28
+ /** `role="progressbar"` için erişilebilir ad — verilmezse `MF_PROGRESS_LABELS`. */
17
29
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
18
30
  private readonly progressLabels;
19
31
  protected readonly effectiveAriaLabel: _angular_core.Signal<string>;
20
32
  protected readonly clampedValue: _angular_core.Signal<number>;
21
- protected readonly trackClasses: _angular_core.Signal<string>;
33
+ protected readonly ring: _angular_core.Signal<{
34
+ size: number;
35
+ stroke: number;
36
+ }>;
37
+ protected readonly radius: _angular_core.Signal<number>;
38
+ protected readonly circumference: _angular_core.Signal<number>;
39
+ protected readonly dashOffset: _angular_core.Signal<number>;
40
+ protected readonly ringToneClass: _angular_core.Signal<string>;
41
+ protected readonly barToneClass: _angular_core.Signal<string>;
42
+ protected readonly hostClasses: _angular_core.Signal<string>;
22
43
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Progress, never>;
23
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Progress, "mf-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
44
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Progress, "mf-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
24
45
  }
25
46
 
26
47
  declare const progressTrackVariants: (props?: ({
27
- size?: "sm" | "md" | null | undefined;
48
+ size?: "sm" | "md" | "lg" | null | undefined;
28
49
  } & class_variance_authority_types.ClassProp) | undefined) => string;
29
50
  type ProgressSize = VariantProps<typeof progressTrackVariants>['size'];
30
51
 
31
52
  export { Progress, progressTrackVariants };
32
- export type { ProgressSize };
53
+ export type { ProgressSize, ProgressTone, ProgressVariant };
@@ -0,0 +1,160 @@
1
+ import * as _mesgflow_ui_kit_qr_code from '@mesgflow/ui-kit/qr-code';
2
+ import * as _angular_core from '@angular/core';
3
+
4
+ /** Hata düzeltme seviyesi — kurtarılabilir hasar oranı: L ~%7, M ~%15, Q ~%25, H ~%30. */
5
+ type QrEcc = 'L' | 'M' | 'Q' | 'H';
6
+ interface QrEncodeOptions {
7
+ /** Varsayılan `'M'`. */
8
+ ecc?: QrEcc;
9
+ /** 1–40, varsayılan 1. */
10
+ minVersion?: number;
11
+ /** 1–40, varsayılan 40. */
12
+ maxVersion?: number;
13
+ /**
14
+ * Seçilen sürüm (boyut) büyümeden daha yüksek bir hata düzeltme seviyesi sığıyorsa
15
+ * onu kullanır — aynı boyutta bedava dayanıklılık. Varsayılan `true`.
16
+ */
17
+ boostEcc?: boolean;
18
+ }
19
+ interface QrMatrix {
20
+ /** Modül cinsinden kenar (21–177) — sessiz bölge (quiet zone) HARİÇ. */
21
+ readonly size: number;
22
+ /** 1–40. */
23
+ readonly version: number;
24
+ /** Gerçekte kullanılan seviye (`boostEcc` ile istenenden yüksek olabilir). */
25
+ readonly ecc: QrEcc;
26
+ readonly mask: number;
27
+ /** `modules[y][x]` — `true` koyu modül. */
28
+ readonly modules: readonly (readonly boolean[])[];
29
+ /** `isFunction[y][x]` — finder/timing/alignment/format/version modülü (veri değil). */
30
+ readonly isFunction: readonly (readonly boolean[])[];
31
+ }
32
+ /** İçerik, `maxVersion` ve seçilen `ecc` ile sığmıyor. */
33
+ declare class QrCapacityError extends Error {
34
+ constructor();
35
+ }
36
+ /**
37
+ * Metni (UTF-8; tamamen rakamsa numeric, büyük harf/rakam/` $%*+-./:` ise
38
+ * alphanumeric kip) ya da ham baytları bir QR matrisine kodlar. En küçük uygun
39
+ * sürümü ve en düşük cezalı maskeyi seçer.
40
+ *
41
+ * @throws {QrCapacityError} içerik sığmıyorsa.
42
+ */
43
+ declare function encodeQr(data: string | Uint8Array, options?: QrEncodeOptions): QrMatrix;
44
+
45
+ /** Veri modüllerinin çizim biçimi. */
46
+ type QrModuleShape = 'square' | 'rounded' | 'dots';
47
+ /** Üç köşedeki konum (finder) desenlerinin biçimi. */
48
+ type QrFinderShape = 'square' | 'rounded';
49
+ interface QrGeometry {
50
+ /** Modül cinsinden QR kenarı (sessiz bölge hariç). */
51
+ readonly size: number;
52
+ /** Veri + timing + alignment modülleri — tek `<path>` (tek path = komşu modüller arasında AA dikişi yok). */
53
+ readonly dataPath: string;
54
+ /** Finder dış halkaları (`fill-rule="evenodd"`). */
55
+ readonly finderOuterPath: string;
56
+ /** Finder iç 3×3 gözleri. */
57
+ readonly finderInnerPath: string;
58
+ /** Logo için boşaltılan kare (modül); logo yoksa 0. */
59
+ readonly excavated: number;
60
+ }
61
+ /**
62
+ * Logo için merkezde boşaltılacak kare kenarı (modül). QR kenarıyla aynı
63
+ * paritede (tek) tutulur ki kare tam ortalansın; oran 0–0.3 arası kırpılır
64
+ * (H seviyesi ~%30 hasarı kurtarır — alan olarak 0.3² ≈ %9, güvenli pay).
65
+ */
66
+ declare function excavationSize(size: number, ratio: number): number;
67
+ /** Kodlanmış matrisi saf SVG yol dizelerine çevirir — DOM'suz, `computed()` içinde çağrılır. */
68
+ declare function qrGeometry(matrix: QrMatrix, shape: QrModuleShape, finder: QrFinderShape, logoRatio: number): QrGeometry;
69
+ interface QrSvgStringOptions {
70
+ /** Sessiz bölge (modül), varsayılan 4 — baskı/dışa aktarım için standart. */
71
+ margin?: number;
72
+ /** Piksel kenar, varsayılan 256. */
73
+ pixelSize?: number;
74
+ foreground?: string;
75
+ background?: string;
76
+ }
77
+ /** Bağımsız bir `<svg>` belgesi (indirme/paylaşım için) — logo katmanı HTML olduğu için dahil DEĞİL. */
78
+ declare function qrSvgString(geometry: QrGeometry, options?: QrSvgStringOptions): string;
79
+
80
+ /**
81
+ * `<mf-qr-code data="…"><img mfQrCodeLogo src="logo.svg" alt="" /></mf-qr-code>` —
82
+ * QR'ın ortasına yerleştirilen logo. Varlığı hata düzeltmeyi otomatik `H`'ye
83
+ * yükseltir ve altındaki modülleri boşaltır. Dekoratif olduğu için `alt=""`
84
+ * önerilir — erişilebilir ad `mf-qr-code`'un kendi `aria-label`'ındadır.
85
+ */
86
+ declare class QrCodeLogo {
87
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<QrCodeLogo, never>;
88
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<QrCodeLogo, "[mfQrCodeLogo]", never, {}, {}, never, never, true, never>;
89
+ }
90
+ /**
91
+ * `<mf-qr-code data="https://mesgflow.dev" />`
92
+ *
93
+ * Saf SVG QR kod — kodlayıcı kitin içinde (`qr-encoder.ts`, Nayuki portu), ek
94
+ * bağımlılık yok; tüm geometri `computed()` ile üretilir, DOM API'si
95
+ * kullanılmaz (SSR güvenli).
96
+ *
97
+ * - `shape`: `square` (klasik) · `rounded` (akışkan, komşu modüllerle birleşen) · `dots`.
98
+ * - `finder`: köşe desenleri `square` / `rounded`.
99
+ * - `ecc`: L/M/Q/H — logo varsa otomatik `H`. Aynı boyutta daha yüksek seviye
100
+ * sığıyorsa zaten yükseltilir (`boostEcc`).
101
+ * - `margin`: sessiz bölge (modül). Okuyucular ≥ 2 ister; baskı için 4.
102
+ * - Logo: `[mfQrCodeLogo]` içerik (bkz. `QrCodeLogo`).
103
+ * - `toSvgString()`: indirme/paylaşım için bağımsız SVG.
104
+ *
105
+ * Renk: varsayılan beyaz kart üstünde siyah modül — BİLİNÇLİ ham renk istisnası:
106
+ * kameralar koyu-üstünde-açık (ters) QR'ı güvenilir okuyamaz, bu yüzden koyu temada
107
+ * da açık kart kalır. `foreground`/`background` (herhangi bir CSS rengi, `var(--…)`
108
+ * dahil) ile değiştirilir — satır içi stil olduğu için sınıf sırası çakışması yok;
109
+ * modüller `currentColor`, logo kutusu zemini miras alır. Koyu modül / açık zemin ve
110
+ * yeterli kontrast (≥ ~4:1) korunmalı.
111
+ *
112
+ * İçerik sığmazsa hata fırlatmaz: yerinde erişilebilir bir hata durumu çizer ve
113
+ * `encoded` çıkışı `null` yayar.
114
+ */
115
+ declare class QrCode {
116
+ /** Kodlanacak içerik (URL, metin, `WIFI:…`, `mailto:` vb.). */
117
+ readonly data: _angular_core.InputSignal<string>;
118
+ /** Piksel kenar (sessiz bölge dahil). */
119
+ readonly size: _angular_core.InputSignalWithTransform<number, unknown>;
120
+ readonly ecc: _angular_core.InputSignal<QrEcc>;
121
+ /** Sessiz bölge, modül cinsinden. */
122
+ readonly margin: _angular_core.InputSignalWithTransform<number, unknown>;
123
+ readonly shape: _angular_core.InputSignal<QrModuleShape>;
124
+ readonly finder: _angular_core.InputSignal<QrFinderShape>;
125
+ /** Logo karesinin QR kenarına oranı (0–0.3); yalnızca `[mfQrCodeLogo]` varken etkili. */
126
+ readonly logoSize: _angular_core.InputSignalWithTransform<number, unknown>;
127
+ /** Modül rengi (CSS rengi). Verilmezse siyah. */
128
+ readonly foreground: _angular_core.InputSignal<string | undefined>;
129
+ /** Zemin rengi (CSS rengi). Verilmezse beyaz. */
130
+ readonly background: _angular_core.InputSignal<string | undefined>;
131
+ /** `role="img"` erişilebilir adı — verilmezse `MF_QR_CODE_LABELS.ariaLabel`. İçeriği anlatan bir ad önerilir. */
132
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
133
+ /** Her yeniden kodlamada matris (hata durumunda `null`). */
134
+ readonly encoded: _angular_core.OutputEmitterRef<QrMatrix | null>;
135
+ private readonly labels;
136
+ private readonly logo;
137
+ protected readonly hasLogo: _angular_core.Signal<boolean>;
138
+ protected readonly effectiveEcc: _angular_core.Signal<QrEcc>;
139
+ protected readonly matrix: _angular_core.Signal<QrMatrix | null>;
140
+ protected readonly geometry: _angular_core.Signal<_mesgflow_ui_kit_qr_code.QrGeometry | null>;
141
+ protected readonly quietZone: _angular_core.Signal<number>;
142
+ protected readonly viewBox: _angular_core.Signal<string>;
143
+ /** Logo kutusunun piksel kenarı — boşaltılan karenin ekrandaki karşılığı. */
144
+ protected readonly logoBoxPx: _angular_core.Signal<number>;
145
+ protected readonly crisp: _angular_core.Signal<boolean>;
146
+ protected readonly effectiveAriaLabel: _angular_core.Signal<string>;
147
+ protected readonly hostClasses: _angular_core.Signal<string>;
148
+ constructor();
149
+ /**
150
+ * Bağımsız SVG belgesi — logo katmanı dahil DEĞİL. İçerik sığmıyorsa `null`.
151
+ * Renkler verilmezse `foreground`/`background` girdileri (onlar da yoksa siyah/beyaz);
152
+ * `var(--…)` gibi bağlama bağlı değerler dışa aktarımda çözülmez — somut renk geçin.
153
+ */
154
+ toSvgString(options?: QrSvgStringOptions): string | null;
155
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<QrCode, never>;
156
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<QrCode, "mf-qr-code", ["mfQrCode"], { "data": { "alias": "data"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ecc": { "alias": "ecc"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "finder": { "alias": "finder"; "required": false; "isSignal": true; }; "logoSize": { "alias": "logoSize"; "required": false; "isSignal": true; }; "foreground": { "alias": "foreground"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "encoded": "encoded"; }, ["logo"], ["[mfQrCodeLogo]"], true, never>;
157
+ }
158
+
159
+ export { QrCapacityError, QrCode, QrCodeLogo, encodeQr, excavationSize, qrGeometry, qrSvgString };
160
+ export type { QrEcc, QrEncodeOptions, QrFinderShape, QrGeometry, QrMatrix, QrModuleShape, QrSvgStringOptions };
@@ -39,8 +39,8 @@ declare class RadioGroup<T = unknown> implements ControlValueAccessor {
39
39
 
40
40
  /**
41
41
  * `<input type="radio" mfRadio [value]="'pro'" />` — `Checkbox` (bkz.
42
- * checkbox.ts) ile AYNI "native accent-color" deseni, `rounded-full` dışında
43
- * fark yok. Bir `mf-radio-group` ATASI ZORUNLU — `name`/`checked`/`disabled`
42
+ * checkbox.ts) ile AYNI desen — native input + `mf-radio` görsel katmanı
43
+ * (styles/tokens/controls.css, yay eğrisiyle büyüyen nokta). Bir `mf-radio-group` ATASI ZORUNLU — `name`/`checked`/`disabled`
44
44
  * DI ile ondan okunur (bkz. `radio-group.ts`'in JSDoc'u); grup dışında
45
45
  * kullanılırsa `inject(RadioGroup)` hata fırlatır (fail-fast).
46
46
  */