@mesgflow/ui-kit 0.7.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 (108) hide show
  1. package/fesm2022/mesgflow-ui-kit-accordion.mjs +6 -6
  2. package/fesm2022/mesgflow-ui-kit-agenda.mjs +3 -3
  3. package/fesm2022/mesgflow-ui-kit-alert.mjs +3 -3
  4. package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs +3 -3
  5. package/fesm2022/mesgflow-ui-kit-avatar-group.mjs +3 -3
  6. package/fesm2022/mesgflow-ui-kit-avatar.mjs +3 -3
  7. package/fesm2022/mesgflow-ui-kit-badge.mjs +3 -3
  8. package/fesm2022/mesgflow-ui-kit-banner.mjs +3 -3
  9. package/fesm2022/mesgflow-ui-kit-blocks.mjs +16 -16
  10. package/fesm2022/mesgflow-ui-kit-blocks.mjs.map +1 -1
  11. package/fesm2022/mesgflow-ui-kit-box-input.mjs +3 -3
  12. package/fesm2022/mesgflow-ui-kit-brand.mjs +3 -3
  13. package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs +3 -3
  14. package/fesm2022/mesgflow-ui-kit-button-group.mjs +3 -3
  15. package/fesm2022/mesgflow-ui-kit-button.mjs +3 -3
  16. package/fesm2022/mesgflow-ui-kit-card.mjs +12 -12
  17. package/fesm2022/mesgflow-ui-kit-carousel.mjs +3 -3
  18. package/fesm2022/mesgflow-ui-kit-chart.mjs +12 -12
  19. package/fesm2022/mesgflow-ui-kit-checkbox.mjs +3 -3
  20. package/fesm2022/mesgflow-ui-kit-chip.mjs +3 -3
  21. package/fesm2022/mesgflow-ui-kit-code-block.mjs +3 -3
  22. package/fesm2022/mesgflow-ui-kit-collapsible.mjs +9 -9
  23. package/fesm2022/mesgflow-ui-kit-color-picker.mjs +3 -3
  24. package/fesm2022/mesgflow-ui-kit-combobox.mjs +3 -3
  25. package/fesm2022/mesgflow-ui-kit-command.mjs +15 -16
  26. package/fesm2022/mesgflow-ui-kit-command.mjs.map +1 -1
  27. package/fesm2022/mesgflow-ui-kit-context-menu.mjs +3 -3
  28. package/fesm2022/mesgflow-ui-kit-copy-button.mjs +6 -6
  29. package/fesm2022/mesgflow-ui-kit-core.mjs +9 -4
  30. package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -1
  31. package/fesm2022/mesgflow-ui-kit-countdown.mjs +3 -3
  32. package/fesm2022/mesgflow-ui-kit-date-picker.mjs +12 -12
  33. package/fesm2022/mesgflow-ui-kit-description-list.mjs +3 -3
  34. package/fesm2022/mesgflow-ui-kit-dialog.mjs +197 -34
  35. package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -1
  36. package/fesm2022/mesgflow-ui-kit-divider.mjs +3 -3
  37. package/fesm2022/mesgflow-ui-kit-drawer.mjs +4 -4
  38. package/fesm2022/mesgflow-ui-kit-drawer.mjs.map +1 -1
  39. package/fesm2022/mesgflow-ui-kit-dropzone.mjs +3 -3
  40. package/fesm2022/mesgflow-ui-kit-empty-state.mjs +3 -3
  41. package/fesm2022/mesgflow-ui-kit-field.mjs +3 -3
  42. package/fesm2022/mesgflow-ui-kit-file-upload.mjs +3 -3
  43. package/fesm2022/mesgflow-ui-kit-hover-card.mjs +6 -6
  44. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +4 -0
  45. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -1
  46. package/fesm2022/mesgflow-ui-kit-icon.mjs +3 -3
  47. package/fesm2022/mesgflow-ui-kit-inline-edit.mjs +3 -3
  48. package/fesm2022/mesgflow-ui-kit-input.mjs +18 -18
  49. package/fesm2022/mesgflow-ui-kit-kbd.mjs +3 -3
  50. package/fesm2022/mesgflow-ui-kit-lightbox.mjs +9 -9
  51. package/fesm2022/mesgflow-ui-kit-link.mjs +3 -3
  52. package/fesm2022/mesgflow-ui-kit-listbox.mjs +3 -3
  53. package/fesm2022/mesgflow-ui-kit-mention.mjs +6 -6
  54. package/fesm2022/mesgflow-ui-kit-menu.mjs +12 -12
  55. package/fesm2022/mesgflow-ui-kit-nav-menu.mjs +3 -3
  56. package/fesm2022/mesgflow-ui-kit-notification-center.mjs +3 -3
  57. package/fesm2022/mesgflow-ui-kit-number-input.mjs +3 -3
  58. package/fesm2022/mesgflow-ui-kit-otp-input.mjs +3 -3
  59. package/fesm2022/mesgflow-ui-kit-page-header.mjs +6 -6
  60. package/fesm2022/mesgflow-ui-kit-pagination.mjs +3 -3
  61. package/fesm2022/mesgflow-ui-kit-password-input.mjs +35 -70
  62. package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -1
  63. package/fesm2022/mesgflow-ui-kit-popover.mjs +3 -3
  64. package/fesm2022/mesgflow-ui-kit-progress.mjs +3 -3
  65. package/fesm2022/mesgflow-ui-kit-qr-code.mjs +766 -0
  66. package/fesm2022/mesgflow-ui-kit-qr-code.mjs.map +1 -0
  67. package/fesm2022/mesgflow-ui-kit-radio.mjs +6 -6
  68. package/fesm2022/mesgflow-ui-kit-rating.mjs +3 -3
  69. package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +3 -3
  70. package/fesm2022/mesgflow-ui-kit-search-input.mjs +3 -3
  71. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +3 -3
  72. package/fesm2022/mesgflow-ui-kit-select.mjs +3 -3
  73. package/fesm2022/mesgflow-ui-kit-sidebar.mjs +12 -12
  74. package/fesm2022/mesgflow-ui-kit-skeleton.mjs +3 -3
  75. package/fesm2022/mesgflow-ui-kit-slider.mjs +6 -6
  76. package/fesm2022/mesgflow-ui-kit-sortable.mjs +6 -6
  77. package/fesm2022/mesgflow-ui-kit-spinner.mjs +3 -3
  78. package/fesm2022/mesgflow-ui-kit-split-button.mjs +3 -3
  79. package/fesm2022/mesgflow-ui-kit-splitter.mjs +12 -12
  80. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +3 -3
  81. package/fesm2022/mesgflow-ui-kit-stepper.mjs +6 -6
  82. package/fesm2022/mesgflow-ui-kit-switch.mjs +3 -3
  83. package/fesm2022/mesgflow-ui-kit-table.mjs +21 -21
  84. package/fesm2022/mesgflow-ui-kit-tabs.mjs +27 -27
  85. package/fesm2022/mesgflow-ui-kit-tag-input.mjs +3 -3
  86. package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +3 -3
  87. package/fesm2022/mesgflow-ui-kit-theming.mjs +3 -3
  88. package/fesm2022/mesgflow-ui-kit-time-picker.mjs +3 -3
  89. package/fesm2022/mesgflow-ui-kit-timeline.mjs +3 -3
  90. package/fesm2022/mesgflow-ui-kit-toast.mjs +6 -6
  91. package/fesm2022/mesgflow-ui-kit-toggle.mjs +9 -9
  92. package/fesm2022/mesgflow-ui-kit-toolbar.mjs +9 -9
  93. package/fesm2022/mesgflow-ui-kit-tooltip.mjs +3 -3
  94. package/fesm2022/mesgflow-ui-kit-tour.mjs +9 -9
  95. package/fesm2022/mesgflow-ui-kit-transfer-list.mjs +3 -3
  96. package/fesm2022/mesgflow-ui-kit-tree-select.mjs +3 -3
  97. package/fesm2022/mesgflow-ui-kit-tree.mjs +3 -3
  98. package/fesm2022/mesgflow-ui-kit-virtual-list.mjs +3 -3
  99. package/fesm2022/mesgflow-ui-kit.mjs +1 -0
  100. package/fesm2022/mesgflow-ui-kit.mjs.map +1 -1
  101. package/package.json +5 -1
  102. package/tokens.json +1 -1
  103. package/types/mesgflow-ui-kit-command.d.ts +2 -2
  104. package/types/mesgflow-ui-kit-core.d.ts +10 -2
  105. package/types/mesgflow-ui-kit-dialog.d.ts +97 -12
  106. package/types/mesgflow-ui-kit-password-input.d.ts +33 -5
  107. package/types/mesgflow-ui-kit-qr-code.d.ts +160 -0
  108. package/types/mesgflow-ui-kit.d.ts +1 -0
@@ -63,10 +63,10 @@ class TourCard {
63
63
  this.host.nativeElement.querySelector('[role="dialog"]')?.focus();
64
64
  });
65
65
  }
66
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TourCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
67
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: TourCard, isStandalone: true, selector: "mf-tour-card", ngImport: i0, template: "<div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n tabindex=\"-1\"\r\n cdkTrapFocus\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"contentId\"\r\n class=\"w-[min(20rem,calc(100vw-2rem))] animate-overlay-in rounded-xl border border-hairline bg-overlay p-4 shadow-3 outline-none\"\r\n (keydown.escape)=\"run.skip()\"\r\n>\r\n <div class=\"flex items-center justify-between gap-2\">\r\n <span class=\"font-mono text-eyebrow text-help uppercase tabular-nums\">\r\n {{ run.index() + 1 }} {{ labels().stepOf }} {{ run.steps.length }}\r\n </span>\r\n <button\r\n type=\"button\"\r\n class=\"-me-1.5 inline-flex size-7 cursor-pointer appearance-none items-center justify-center rounded-md border-0 bg-transparent text-fg-subtle transition-colors duration-fast ease-emphasis hover:bg-state-hover hover:text-fg focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\r\n [attr.aria-label]=\"labels().skip\"\r\n (click)=\"run.skip()\"\r\n >\r\n <span mfIcon [size]=\"16\">close</span>\r\n </button>\r\n </div>\r\n\r\n <h2 [id]=\"titleId\" class=\"mt-1.5 font-display text-base font-semibold text-fg\">\r\n {{ run.step().title }}\r\n </h2>\r\n <p [id]=\"contentId\" class=\"mt-1 text-sm text-fg-muted\">{{ run.step().content }}</p>\r\n\r\n <div class=\"mt-4 flex items-center gap-2\">\r\n <!-- \u0130lerleme: ad\u0131m ba\u015F\u0131na bir \u00E7izgi; salt g\u00F6rsel, say\u0131 zaten yukar\u0131da. -->\r\n <div class=\"flex flex-1 items-center gap-1\" aria-hidden=\"true\">\r\n @for (step of run.steps; track $index) {\r\n <span\r\n class=\"h-1 flex-1 rounded-full transition-colors duration-base ease-emphasis\"\r\n [class]=\"$index <= run.index() ? 'bg-help' : 'bg-surface-alt'\"\r\n ></span>\r\n }\r\n </div>\r\n @if (!run.isFirst()) {\r\n <button\r\n mfButton\r\n appearance=\"text\"\r\n tone=\"neutral\"\r\n size=\"sm\"\r\n type=\"button\"\r\n (click)=\"run.back()\"\r\n >\r\n {{ labels().back }}\r\n </button>\r\n }\r\n <button mfButton tone=\"help\" size=\"sm\" type=\"button\" (click)=\"run.next()\">\r\n {{ run.isLast() ? labels().done : labels().next }}\r\n </button>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: Button, selector: "button[mfButton], a[mfButton]", inputs: ["tone", "appearance", "size", "shape", "type", "loading", "iconStart", "iconEnd"], exportAs: ["mfButton"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }] });
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TourCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
67
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: TourCard, isStandalone: true, selector: "mf-tour-card", ngImport: i0, template: "<div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n tabindex=\"-1\"\r\n cdkTrapFocus\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"contentId\"\r\n class=\"w-[min(20rem,calc(100vw-2rem))] animate-overlay-in rounded-xl border border-hairline bg-overlay p-4 shadow-3 outline-none\"\r\n (keydown.escape)=\"run.skip()\"\r\n>\r\n <div class=\"flex items-center justify-between gap-2\">\r\n <span class=\"font-mono text-eyebrow text-help uppercase tabular-nums\">\r\n {{ run.index() + 1 }} {{ labels().stepOf }} {{ run.steps.length }}\r\n </span>\r\n <button\r\n type=\"button\"\r\n class=\"-me-1.5 inline-flex size-7 cursor-pointer appearance-none items-center justify-center rounded-md border-0 bg-transparent text-fg-subtle transition-colors duration-fast ease-emphasis hover:bg-state-hover hover:text-fg focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\r\n [attr.aria-label]=\"labels().skip\"\r\n (click)=\"run.skip()\"\r\n >\r\n <span mfIcon [size]=\"16\">close</span>\r\n </button>\r\n </div>\r\n\r\n <h2 [id]=\"titleId\" class=\"mt-1.5 font-display text-base font-semibold text-fg\">\r\n {{ run.step().title }}\r\n </h2>\r\n <p [id]=\"contentId\" class=\"mt-1 text-sm text-fg-muted\">{{ run.step().content }}</p>\r\n\r\n <div class=\"mt-4 flex items-center gap-2\">\r\n <!-- \u0130lerleme: ad\u0131m ba\u015F\u0131na bir \u00E7izgi; salt g\u00F6rsel, say\u0131 zaten yukar\u0131da. -->\r\n <div class=\"flex flex-1 items-center gap-1\" aria-hidden=\"true\">\r\n @for (step of run.steps; track $index) {\r\n <span\r\n class=\"h-1 flex-1 rounded-full transition-colors duration-base ease-emphasis\"\r\n [class]=\"$index <= run.index() ? 'bg-help' : 'bg-surface-alt'\"\r\n ></span>\r\n }\r\n </div>\r\n @if (!run.isFirst()) {\r\n <button\r\n mfButton\r\n appearance=\"text\"\r\n tone=\"neutral\"\r\n size=\"sm\"\r\n type=\"button\"\r\n (click)=\"run.back()\"\r\n >\r\n {{ labels().back }}\r\n </button>\r\n }\r\n <button mfButton tone=\"help\" size=\"sm\" type=\"button\" (click)=\"run.next()\">\r\n {{ run.isLast() ? labels().done : labels().next }}\r\n </button>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: Button, selector: "button[mfButton], a[mfButton]", inputs: ["tone", "appearance", "size", "shape", "type", "loading", "iconStart", "iconEnd"], exportAs: ["mfButton"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }] });
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TourCard, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TourCard, decorators: [{
70
70
  type: Component,
71
71
  args: [{ selector: 'mf-tour-card', imports: [A11yModule, Button, Icon], template: "<div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n tabindex=\"-1\"\r\n cdkTrapFocus\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"contentId\"\r\n class=\"w-[min(20rem,calc(100vw-2rem))] animate-overlay-in rounded-xl border border-hairline bg-overlay p-4 shadow-3 outline-none\"\r\n (keydown.escape)=\"run.skip()\"\r\n>\r\n <div class=\"flex items-center justify-between gap-2\">\r\n <span class=\"font-mono text-eyebrow text-help uppercase tabular-nums\">\r\n {{ run.index() + 1 }} {{ labels().stepOf }} {{ run.steps.length }}\r\n </span>\r\n <button\r\n type=\"button\"\r\n class=\"-me-1.5 inline-flex size-7 cursor-pointer appearance-none items-center justify-center rounded-md border-0 bg-transparent text-fg-subtle transition-colors duration-fast ease-emphasis hover:bg-state-hover hover:text-fg focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring\"\r\n [attr.aria-label]=\"labels().skip\"\r\n (click)=\"run.skip()\"\r\n >\r\n <span mfIcon [size]=\"16\">close</span>\r\n </button>\r\n </div>\r\n\r\n <h2 [id]=\"titleId\" class=\"mt-1.5 font-display text-base font-semibold text-fg\">\r\n {{ run.step().title }}\r\n </h2>\r\n <p [id]=\"contentId\" class=\"mt-1 text-sm text-fg-muted\">{{ run.step().content }}</p>\r\n\r\n <div class=\"mt-4 flex items-center gap-2\">\r\n <!-- \u0130lerleme: ad\u0131m ba\u015F\u0131na bir \u00E7izgi; salt g\u00F6rsel, say\u0131 zaten yukar\u0131da. -->\r\n <div class=\"flex flex-1 items-center gap-1\" aria-hidden=\"true\">\r\n @for (step of run.steps; track $index) {\r\n <span\r\n class=\"h-1 flex-1 rounded-full transition-colors duration-base ease-emphasis\"\r\n [class]=\"$index <= run.index() ? 'bg-help' : 'bg-surface-alt'\"\r\n ></span>\r\n }\r\n </div>\r\n @if (!run.isFirst()) {\r\n <button\r\n mfButton\r\n appearance=\"text\"\r\n tone=\"neutral\"\r\n size=\"sm\"\r\n type=\"button\"\r\n (click)=\"run.back()\"\r\n >\r\n {{ labels().back }}\r\n </button>\r\n }\r\n <button mfButton tone=\"help\" size=\"sm\" type=\"button\" (click)=\"run.next()\">\r\n {{ run.isLast() ? labels().done : labels().next }}\r\n </button>\r\n </div>\r\n</div>\r\n" }]
72
72
  }], ctorParameters: () => [] });
@@ -81,8 +81,8 @@ const SCRIM = 'color-mix(in srgb, var(--color-neutral-975) 55%, transparent)';
81
81
  class TourSpotlight {
82
82
  run = inject(TourRun);
83
83
  scrim = SCRIM;
84
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TourSpotlight, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: TourSpotlight, isStandalone: true, selector: "mf-tour-spotlight", host: { classAttribute: "fixed inset-0 block" }, ngImport: i0, template: `
84
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TourSpotlight, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: TourSpotlight, isStandalone: true, selector: "mf-tour-spotlight", host: { classAttribute: "fixed inset-0 block" }, ngImport: i0, template: `
86
86
  @if (run.rect(); as rect) {
87
87
  <div class="absolute inset-0" aria-hidden="true"></div>
88
88
  <div
@@ -99,7 +99,7 @@ class TourSpotlight {
99
99
  }
100
100
  `, isInline: true });
101
101
  }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TourSpotlight, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TourSpotlight, decorators: [{
103
103
  type: Component,
104
104
  args: [{
105
105
  selector: 'mf-tour-spotlight',
@@ -238,10 +238,10 @@ class TourService {
238
238
  });
239
239
  return this.active;
240
240
  }
241
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TourService, deps: [], target: i0.ɵɵFactoryTarget.Service });
242
- static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.6", ngImport: i0, type: TourService });
241
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TourService, deps: [], target: i0.ɵɵFactoryTarget.Service });
242
+ static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.7", ngImport: i0, type: TourService });
243
243
  }
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TourService, decorators: [{
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TourService, decorators: [{
245
245
  type: Service
246
246
  }] });
247
247
  function resolveTarget(target, doc) {
@@ -74,8 +74,8 @@ class TransferList {
74
74
  }
75
75
  this.checked.set({ left: [], right: [] });
76
76
  }
77
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TransferList, deps: [], target: i0.ɵɵFactoryTarget.Component });
78
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: TransferList, isStandalone: true, selector: "mf-transfer-list", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "grid gap-3 sm:grid-cols-[1fr_auto_1fr] sm:items-stretch" }, exportAs: ["mfTransferList"], ngImport: i0, template: `
77
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TransferList, deps: [], target: i0.ɵɵFactoryTarget.Component });
78
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: TransferList, isStandalone: true, selector: "mf-transfer-list", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "grid gap-3 sm:grid-cols-[1fr_auto_1fr] sm:items-stretch" }, exportAs: ["mfTransferList"], ngImport: i0, template: `
79
79
  @for (side of sides; track side) {
80
80
  @if (side === 'right') {
81
81
  <div class="flex flex-row items-center justify-center gap-1.5 sm:flex-col">
@@ -173,7 +173,7 @@ class TransferList {
173
173
  }
174
174
  `, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mfButton], a[mfButton]", inputs: ["tone", "appearance", "size", "shape", "type", "loading", "iconStart", "iconEnd"], exportAs: ["mfButton"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "component", type: Listbox, selector: "mf-listbox", inputs: ["options", "value", "multi", "disabled", "ariaLabel"], outputs: ["valueChange"], exportAs: ["mfListbox"] }] });
175
175
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TransferList, decorators: [{
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TransferList, decorators: [{
177
177
  type: Component,
178
178
  args: [{
179
179
  selector: 'mf-transfer-list',
@@ -157,12 +157,12 @@ class TreeSelect extends ValueAccessorBase {
157
157
  setDisabledState(disabled) {
158
158
  this.formDisabled.set(disabled);
159
159
  }
160
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TreeSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
161
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: TreeSelect, isStandalone: true, selector: "mf-tree-select", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleChips: { classPropertyName: "maxVisibleChips", publicName: "maxVisibleChips", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "block" }, providers: [
160
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TreeSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
161
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: TreeSelect, isStandalone: true, selector: "mf-tree-select", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleChips: { classPropertyName: "maxVisibleChips", publicName: "maxVisibleChips", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "block" }, providers: [
162
162
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TreeSelect), multi: true },
163
163
  ], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }], exportAs: ["mfTreeSelect"], usesInheritance: true, ngImport: i0, template: "<button\r\n #trigger\r\n type=\"button\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n [class]=\"triggerClasses()\"\r\n [disabled]=\"isDisabled()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n [attr.aria-expanded]=\"open()\"\r\n aria-haspopup=\"tree\"\r\n (click)=\"toggle()\"\r\n (keydown)=\"onTriggerKeydown($event)\"\r\n>\r\n @if (selectedLabels().length === 0) {\r\n <span class=\"truncate text-fg-subtle\">{{ effectivePlaceholder() }}</span>\r\n } @else if (multi()) {\r\n <span class=\"flex min-w-0 flex-1 flex-wrap items-center gap-1\">\r\n @for (label of visibleChips(); track label) {\r\n <mf-chip size=\"sm\">{{ label }}</mf-chip>\r\n }\r\n @if (overflowCount() > 0) {\r\n <mf-chip size=\"sm\">+{{ overflowCount() }}</mf-chip>\r\n }\r\n </span>\r\n } @else {\r\n <span class=\"truncate\">{{ selectedLabels()[0] }}</span>\r\n }\r\n <span mfIcon [size]=\"18\" class=\"shrink-0 text-fg-subtle\">unfold_more</span>\r\n</button>\r\n\r\n<mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"open()\"\r\n placement=\"bottom-start\"\r\n padding=\"sm\"\r\n [matchTriggerWidth]=\"true\"\r\n (closed)=\"close(true)\"\r\n>\r\n <div #panel class=\"flex max-h-80 flex-col gap-1\">\r\n @if (searchable()) {\r\n <input\r\n mfInput\r\n size=\"sm\"\r\n type=\"search\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"labels().searchPlaceholder\"\r\n [attr.aria-label]=\"labels().searchPlaceholder\"\r\n [value]=\"query()\"\r\n (input)=\"query.set($any($event.target).value)\"\r\n />\r\n }\r\n <div class=\"min-h-0 overflow-y-auto\">\r\n @if (visibleNodes().length === 0) {\r\n <p class=\"px-2.5 py-6 text-center text-sm text-fg-subtle\" role=\"status\">\r\n {{ labels().noResults }}\r\n </p>\r\n } @else {\r\n <mf-tree\r\n [nodes]=\"visibleNodes()\"\r\n [value]=\"value()\"\r\n (valueChange)=\"onTreeValue($event)\"\r\n [multi]=\"multi()\"\r\n [expandAll]=\"searching()\"\r\n [ariaLabel]=\"ariaLabel() || effectivePlaceholder()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n</mf-popover>\r\n", dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: Chip, selector: "mf-chip", inputs: ["tone", "size", "selected", "disabled", "removable", "removeLabel"], outputs: ["removed"], exportAs: ["mfChip"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "directive", type: Input, selector: "input[mfInput]:not([type=checkbox]):not([type=radio]), textarea[mfInput]", inputs: ["size", "hasError", "autosize", "minRows", "maxRows"] }, { kind: "component", type: Popover, selector: "mf-popover", inputs: ["origin", "open", "placement", "padding", "hasBackdrop", "matchTriggerWidth", "panelClass"], outputs: ["openChange", "closed"], exportAs: ["mfPopover"] }, { kind: "component", type: Tree, selector: "mf-tree", inputs: ["nodes", "value", "multi", "ariaLabel", "expandAll"], outputs: ["valueChange"], exportAs: ["mfTree"] }] });
164
164
  }
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: TreeSelect, decorators: [{
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: TreeSelect, decorators: [{
166
166
  type: Component,
167
167
  args: [{ selector: 'mf-tree-select', exportAs: 'mfTreeSelect', imports: [OverlayModule, Chip, Icon, Input, Popover, Tree], host: { class: 'block' }, providers: [
168
168
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TreeSelect), multi: true },
@@ -66,10 +66,10 @@ class Tree extends ValueAccessorBase {
66
66
  rowClasses(selected, disabled) {
67
67
  return cn(treeRowVariants({ selected: !!selected, disabled }));
68
68
  }
69
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: Tree, deps: [], target: i0.ɵɵFactoryTarget.Component });
70
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: Tree, isStandalone: true, selector: "mf-tree", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, expandAll: { classPropertyName: "expandAll", publicName: "expandAll", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "block" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Tree), multi: true }], exportAs: ["mfTree"], usesInheritance: true, ngImport: i0, template: "<ul\r\n ngTree\r\n #treeRef=\"ngTree\"\r\n [(value)]=\"value\"\r\n [multi]=\"multi()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n class=\"text-sm\"\r\n>\r\n <ng-template\r\n [ngTemplateOutlet]=\"treeNodes\"\r\n [ngTemplateOutletContext]=\"{ $implicit: nodes(), parent: treeRef }\"\r\n />\r\n</ul>\r\n\r\n<ng-template #treeNodes let-nodes let-parent=\"parent\">\r\n @for (node of nodes; track node.id) {\r\n <li\r\n ngTreeItem\r\n #item=\"ngTreeItem\"\r\n [parent]=\"parent\"\r\n [value]=\"node.value\"\r\n [label]=\"node.label\"\r\n [disabled]=\"!!node.disabled\"\r\n [expanded]=\"expandAll()\"\r\n >\r\n <span\r\n [class]=\"rowClasses(item.selected(), !!node.disabled)\"\r\n [style.padding-inline-start.px]=\"item.level() * 16\"\r\n >\r\n @if (node.children && node.children.length > 0) {\r\n <span\r\n mfIcon\r\n [size]=\"16\"\r\n class=\"shrink-0 transition-transform duration-fast rtl:-scale-x-100\"\r\n [class.rotate-90]=\"item.expanded()\"\r\n [class.rtl:-rotate-90]=\"item.expanded()\"\r\n >chevron_right</span\r\n >\r\n } @else {\r\n <span class=\"w-4 shrink-0\" aria-hidden=\"true\"></span>\r\n }\r\n <span class=\"truncate\">{{ node.label }}</span>\r\n </span>\r\n @if (node.children && node.children.length > 0) {\r\n <ul role=\"group\">\r\n <ng-template ngTreeItemGroup [ownedBy]=\"item\" #group=\"ngTreeItemGroup\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"treeNodes\"\r\n [ngTemplateOutletContext]=\"{ $implicit: node.children, parent: group }\"\r\n />\r\n </ng-template>\r\n </ul>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: Tree$1, selector: "[ngTree]", inputs: ["id", "orientation", "multi", "disabled", "selectionMode", "focusMode", "wrap", "softDisabled", "typeaheadDelay", "tabindex", "value", "nav", "currentType"], outputs: ["valueChange"], exportAs: ["ngTree"] }, { kind: "directive", type: TreeItem, selector: "[ngTreeItem]", inputs: ["id", "value", "parent", "disabled", "selectable", "expanded", "label"], outputs: ["expandedChange"], exportAs: ["ngTreeItem"] }, { kind: "directive", type: TreeItemGroup, selector: "ng-template[ngTreeItemGroup]", inputs: ["ownedBy"], exportAs: ["ngTreeItemGroup"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }] });
69
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Tree, deps: [], target: i0.ɵɵFactoryTarget.Component });
70
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Tree, isStandalone: true, selector: "mf-tree", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, expandAll: { classPropertyName: "expandAll", publicName: "expandAll", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "block" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Tree), multi: true }], exportAs: ["mfTree"], usesInheritance: true, ngImport: i0, template: "<ul\r\n ngTree\r\n #treeRef=\"ngTree\"\r\n [(value)]=\"value\"\r\n [multi]=\"multi()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n class=\"text-sm\"\r\n>\r\n <ng-template\r\n [ngTemplateOutlet]=\"treeNodes\"\r\n [ngTemplateOutletContext]=\"{ $implicit: nodes(), parent: treeRef }\"\r\n />\r\n</ul>\r\n\r\n<ng-template #treeNodes let-nodes let-parent=\"parent\">\r\n @for (node of nodes; track node.id) {\r\n <li\r\n ngTreeItem\r\n #item=\"ngTreeItem\"\r\n [parent]=\"parent\"\r\n [value]=\"node.value\"\r\n [label]=\"node.label\"\r\n [disabled]=\"!!node.disabled\"\r\n [expanded]=\"expandAll()\"\r\n >\r\n <span\r\n [class]=\"rowClasses(item.selected(), !!node.disabled)\"\r\n [style.padding-inline-start.px]=\"item.level() * 16\"\r\n >\r\n @if (node.children && node.children.length > 0) {\r\n <span\r\n mfIcon\r\n [size]=\"16\"\r\n class=\"shrink-0 transition-transform duration-fast rtl:-scale-x-100\"\r\n [class.rotate-90]=\"item.expanded()\"\r\n [class.rtl:-rotate-90]=\"item.expanded()\"\r\n >chevron_right</span\r\n >\r\n } @else {\r\n <span class=\"w-4 shrink-0\" aria-hidden=\"true\"></span>\r\n }\r\n <span class=\"truncate\">{{ node.label }}</span>\r\n </span>\r\n @if (node.children && node.children.length > 0) {\r\n <ul role=\"group\">\r\n <ng-template ngTreeItemGroup [ownedBy]=\"item\" #group=\"ngTreeItemGroup\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"treeNodes\"\r\n [ngTemplateOutletContext]=\"{ $implicit: node.children, parent: group }\"\r\n />\r\n </ng-template>\r\n </ul>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: Tree$1, selector: "[ngTree]", inputs: ["id", "orientation", "multi", "disabled", "selectionMode", "focusMode", "wrap", "softDisabled", "typeaheadDelay", "tabindex", "value", "nav", "currentType"], outputs: ["valueChange"], exportAs: ["ngTree"] }, { kind: "directive", type: TreeItem, selector: "[ngTreeItem]", inputs: ["id", "value", "parent", "disabled", "selectable", "expanded", "label"], outputs: ["expandedChange"], exportAs: ["ngTreeItem"] }, { kind: "directive", type: TreeItemGroup, selector: "ng-template[ngTreeItemGroup]", inputs: ["ownedBy"], exportAs: ["ngTreeItemGroup"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }] });
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: Tree, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Tree, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: 'mf-tree', exportAs: 'mfTree', host: { class: 'block' }, imports: [Tree$1, TreeItem, TreeItemGroup, NgTemplateOutlet, Icon], providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Tree), multi: true }], template: "<ul\r\n ngTree\r\n #treeRef=\"ngTree\"\r\n [(value)]=\"value\"\r\n [multi]=\"multi()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n class=\"text-sm\"\r\n>\r\n <ng-template\r\n [ngTemplateOutlet]=\"treeNodes\"\r\n [ngTemplateOutletContext]=\"{ $implicit: nodes(), parent: treeRef }\"\r\n />\r\n</ul>\r\n\r\n<ng-template #treeNodes let-nodes let-parent=\"parent\">\r\n @for (node of nodes; track node.id) {\r\n <li\r\n ngTreeItem\r\n #item=\"ngTreeItem\"\r\n [parent]=\"parent\"\r\n [value]=\"node.value\"\r\n [label]=\"node.label\"\r\n [disabled]=\"!!node.disabled\"\r\n [expanded]=\"expandAll()\"\r\n >\r\n <span\r\n [class]=\"rowClasses(item.selected(), !!node.disabled)\"\r\n [style.padding-inline-start.px]=\"item.level() * 16\"\r\n >\r\n @if (node.children && node.children.length > 0) {\r\n <span\r\n mfIcon\r\n [size]=\"16\"\r\n class=\"shrink-0 transition-transform duration-fast rtl:-scale-x-100\"\r\n [class.rotate-90]=\"item.expanded()\"\r\n [class.rtl:-rotate-90]=\"item.expanded()\"\r\n >chevron_right</span\r\n >\r\n } @else {\r\n <span class=\"w-4 shrink-0\" aria-hidden=\"true\"></span>\r\n }\r\n <span class=\"truncate\">{{ node.label }}</span>\r\n </span>\r\n @if (node.children && node.children.length > 0) {\r\n <ul role=\"group\">\r\n <ng-template ngTreeItemGroup [ownedBy]=\"item\" #group=\"ngTreeItemGroup\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"treeNodes\"\r\n [ngTemplateOutletContext]=\"{ $implicit: node.children, parent: group }\"\r\n />\r\n </ng-template>\r\n </ul>\r\n }\r\n </li>\r\n }\r\n</ng-template>\r\n" }]
75
75
  }], ctorParameters: () => [], propDecorators: { nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], multi: [{ type: i0.Input, args: [{ isSignal: true, alias: "multi", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], expandAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandAll", required: false }] }] } });
@@ -39,8 +39,8 @@ class VirtualList {
39
39
  scrollToIndex(index, behavior = 'smooth') {
40
40
  this.viewport().scrollToIndex(index, behavior);
41
41
  }
42
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: VirtualList, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.6", type: VirtualList, isStandalone: true, selector: "mf-virtual-list", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, itemSize: { classPropertyName: "itemSize", publicName: "itemSize", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { indexChange: "indexChange" }, host: { classAttribute: "block" }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true, isSignal: true }], exportAs: ["mfVirtualList"], ngImport: i0, template: `
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: VirtualList, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.7", type: VirtualList, isStandalone: true, selector: "mf-virtual-list", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, itemSize: { classPropertyName: "itemSize", publicName: "itemSize", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { indexChange: "indexChange" }, host: { classAttribute: "block" }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true, isSignal: true }], exportAs: ["mfVirtualList"], ngImport: i0, template: `
44
44
  <cdk-virtual-scroll-viewport
45
45
  [itemSize]="itemSize()"
46
46
  [style.height]="height()"
@@ -66,7 +66,7 @@ class VirtualList {
66
66
  </cdk-virtual-scroll-viewport>
67
67
  `, isInline: true, dependencies: [{ kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
68
68
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: VirtualList, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: VirtualList, decorators: [{
70
70
  type: Component,
71
71
  args: [{
72
72
  selector: 'mf-virtual-list',
@@ -54,6 +54,7 @@ export * from '@mesgflow/ui-kit/pagination';
54
54
  export * from '@mesgflow/ui-kit/password-input';
55
55
  export * from '@mesgflow/ui-kit/popover';
56
56
  export * from '@mesgflow/ui-kit/progress';
57
+ export * from '@mesgflow/ui-kit/qr-code';
57
58
  export * from '@mesgflow/ui-kit/radio';
58
59
  export * from '@mesgflow/ui-kit/rating';
59
60
  export * from '@mesgflow/ui-kit/scroll-area';
@@ -1 +1 @@
1
- {"version":3,"file":"mesgflow-ui-kit.mjs","sources":["../../../projects/ui-kit/index.ts","../../../projects/ui-kit/mesgflow-ui-kit.ts"],"sourcesContent":["/*\r\n * Public API Surface of @mesgflow/ui-kit — birincil giriş noktası.\r\n *\r\n * Her satır bir ikincil giriş noktasının (`@mesgflow/ui-kit/<klasör>`) kendi\r\n * `index.ts` barrel'ını yeniden dışa verir — tüketici `import { Button }\r\n * from '@mesgflow/ui-kit'` yazmaya devam eder, ama isterse `import { Button }\r\n * from '@mesgflow/ui-kit/button'` ile yalnız o girişi de çekebilir (bkz.\r\n * `@angular/cdk`'nin `./overlay`/`./a11y` deseni).\r\n */\r\n\r\n// Yeniden dışa aktarımlar PAKET YOLUYLA (`@mesgflow/ui-kit/<entry>`), göreli `./<entry>` DEĞİL:\r\n// göreli yolda ng-packagr her entry'nin kodunu birincil FESM'e İKİNCİ KEZ gömüyordu (1.3 MB,\r\n// ayrı sınıf/InjectionToken kimlikleri — `provideMesgflowUi` barrel'dan, bileşen `/button`'dan\r\n// gelince etiketler bileşene ulaşmıyordu). `check:size`'ın `(barrel)` bütçesi bunu korur.\r\n// icons-lucide BİLEREK birincil barrel'da YOK — opsiyonel veri seti, import edilmezse pakete girmez.\r\nexport * from '@mesgflow/ui-kit/core';\r\nexport * from '@mesgflow/ui-kit/accordion';\r\nexport * from '@mesgflow/ui-kit/agenda';\r\nexport * from '@mesgflow/ui-kit/alert';\r\nexport * from '@mesgflow/ui-kit/aspect-ratio';\r\nexport * from '@mesgflow/ui-kit/avatar-group';\r\nexport * from '@mesgflow/ui-kit/avatar';\r\nexport * from '@mesgflow/ui-kit/badge';\r\nexport * from '@mesgflow/ui-kit/blocks';\r\nexport * from '@mesgflow/ui-kit/banner';\r\nexport * from '@mesgflow/ui-kit/box-input';\r\nexport * from '@mesgflow/ui-kit/brand';\r\nexport * from '@mesgflow/ui-kit/breadcrumb';\r\nexport * from '@mesgflow/ui-kit/button-group';\r\nexport * from '@mesgflow/ui-kit/button';\r\nexport * from '@mesgflow/ui-kit/card';\r\nexport * from '@mesgflow/ui-kit/carousel';\r\nexport * from '@mesgflow/ui-kit/chart';\r\nexport * from '@mesgflow/ui-kit/checkbox';\r\nexport * from '@mesgflow/ui-kit/chip';\r\nexport * from '@mesgflow/ui-kit/code-block';\r\nexport * from '@mesgflow/ui-kit/collapsible';\r\nexport * from '@mesgflow/ui-kit/color-picker';\r\nexport * from '@mesgflow/ui-kit/combobox';\r\nexport * from '@mesgflow/ui-kit/command';\r\nexport * from '@mesgflow/ui-kit/context-menu';\r\nexport * from '@mesgflow/ui-kit/copy-button';\r\nexport * from '@mesgflow/ui-kit/countdown';\r\nexport * from '@mesgflow/ui-kit/date-picker';\r\nexport * from '@mesgflow/ui-kit/description-list';\r\nexport * from '@mesgflow/ui-kit/dialog';\r\nexport * from '@mesgflow/ui-kit/divider';\r\nexport * from '@mesgflow/ui-kit/drawer';\r\nexport * from '@mesgflow/ui-kit/dropzone';\r\nexport * from '@mesgflow/ui-kit/empty-state';\r\nexport * from '@mesgflow/ui-kit/field';\r\nexport * from '@mesgflow/ui-kit/file-upload';\r\nexport * from '@mesgflow/ui-kit/hover-card';\r\nexport * from '@mesgflow/ui-kit/icon';\r\nexport * from '@mesgflow/ui-kit/inline-edit';\r\nexport * from '@mesgflow/ui-kit/input';\r\nexport * from '@mesgflow/ui-kit/kbd';\r\nexport * from '@mesgflow/ui-kit/lightbox';\r\nexport * from '@mesgflow/ui-kit/link';\r\nexport * from '@mesgflow/ui-kit/listbox';\r\nexport * from '@mesgflow/ui-kit/mention';\r\nexport * from '@mesgflow/ui-kit/menu';\r\nexport * from '@mesgflow/ui-kit/nav-menu';\r\nexport * from '@mesgflow/ui-kit/notification-center';\r\nexport * from '@mesgflow/ui-kit/number-input';\r\nexport * from '@mesgflow/ui-kit/otp-input';\r\nexport * from '@mesgflow/ui-kit/page-header';\r\nexport * from '@mesgflow/ui-kit/pagination';\r\nexport * from '@mesgflow/ui-kit/password-input';\r\nexport * from '@mesgflow/ui-kit/popover';\r\nexport * from '@mesgflow/ui-kit/progress';\r\nexport * from '@mesgflow/ui-kit/radio';\r\nexport * from '@mesgflow/ui-kit/rating';\r\nexport * from '@mesgflow/ui-kit/scroll-area';\r\nexport * from '@mesgflow/ui-kit/search-input';\r\nexport * from '@mesgflow/ui-kit/segmented-control';\r\nexport * from '@mesgflow/ui-kit/select';\r\nexport * from '@mesgflow/ui-kit/sidebar';\r\nexport * from '@mesgflow/ui-kit/skeleton';\r\nexport * from '@mesgflow/ui-kit/slider';\r\nexport * from '@mesgflow/ui-kit/sortable';\r\nexport * from '@mesgflow/ui-kit/spinner';\r\nexport * from '@mesgflow/ui-kit/split-button';\r\nexport * from '@mesgflow/ui-kit/splitter';\r\nexport * from '@mesgflow/ui-kit/stat-tile';\r\nexport * from '@mesgflow/ui-kit/stepper';\r\nexport * from '@mesgflow/ui-kit/switch';\r\nexport * from '@mesgflow/ui-kit/table';\r\nexport * from '@mesgflow/ui-kit/tabs';\r\nexport * from '@mesgflow/ui-kit/tag-input';\r\nexport * from '@mesgflow/ui-kit/theme-switcher';\r\nexport * from '@mesgflow/ui-kit/time-picker';\r\nexport * from '@mesgflow/ui-kit/timeline';\r\nexport * from '@mesgflow/ui-kit/toast';\r\nexport * from '@mesgflow/ui-kit/toggle';\r\nexport * from '@mesgflow/ui-kit/toolbar';\r\nexport * from '@mesgflow/ui-kit/tooltip';\r\nexport * from '@mesgflow/ui-kit/tour';\r\nexport * from '@mesgflow/ui-kit/transfer-list';\r\nexport * from '@mesgflow/ui-kit/tree-select';\r\nexport * from '@mesgflow/ui-kit/tree';\r\nexport * from '@mesgflow/ui-kit/virtual-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;AAQG;AAEH;AACA;AACA;AACA;AACA;;ACdA;;AAEG"}
1
+ {"version":3,"file":"mesgflow-ui-kit.mjs","sources":["../../../projects/ui-kit/index.ts","../../../projects/ui-kit/mesgflow-ui-kit.ts"],"sourcesContent":["/*\r\n * Public API Surface of @mesgflow/ui-kit — birincil giriş noktası.\r\n *\r\n * Her satır bir ikincil giriş noktasının (`@mesgflow/ui-kit/<klasör>`) kendi\r\n * `index.ts` barrel'ını yeniden dışa verir — tüketici `import { Button }\r\n * from '@mesgflow/ui-kit'` yazmaya devam eder, ama isterse `import { Button }\r\n * from '@mesgflow/ui-kit/button'` ile yalnız o girişi de çekebilir (bkz.\r\n * `@angular/cdk`'nin `./overlay`/`./a11y` deseni).\r\n */\r\n\r\n// Yeniden dışa aktarımlar PAKET YOLUYLA (`@mesgflow/ui-kit/<entry>`), göreli `./<entry>` DEĞİL:\r\n// göreli yolda ng-packagr her entry'nin kodunu birincil FESM'e İKİNCİ KEZ gömüyordu (1.3 MB,\r\n// ayrı sınıf/InjectionToken kimlikleri — `provideMesgflowUi` barrel'dan, bileşen `/button`'dan\r\n// gelince etiketler bileşene ulaşmıyordu). `check:size`'ın `(barrel)` bütçesi bunu korur.\r\n// icons-lucide BİLEREK birincil barrel'da YOK — opsiyonel veri seti, import edilmezse pakete girmez.\r\nexport * from '@mesgflow/ui-kit/core';\r\nexport * from '@mesgflow/ui-kit/accordion';\r\nexport * from '@mesgflow/ui-kit/agenda';\r\nexport * from '@mesgflow/ui-kit/alert';\r\nexport * from '@mesgflow/ui-kit/aspect-ratio';\r\nexport * from '@mesgflow/ui-kit/avatar-group';\r\nexport * from '@mesgflow/ui-kit/avatar';\r\nexport * from '@mesgflow/ui-kit/badge';\r\nexport * from '@mesgflow/ui-kit/blocks';\r\nexport * from '@mesgflow/ui-kit/banner';\r\nexport * from '@mesgflow/ui-kit/box-input';\r\nexport * from '@mesgflow/ui-kit/brand';\r\nexport * from '@mesgflow/ui-kit/breadcrumb';\r\nexport * from '@mesgflow/ui-kit/button-group';\r\nexport * from '@mesgflow/ui-kit/button';\r\nexport * from '@mesgflow/ui-kit/card';\r\nexport * from '@mesgflow/ui-kit/carousel';\r\nexport * from '@mesgflow/ui-kit/chart';\r\nexport * from '@mesgflow/ui-kit/checkbox';\r\nexport * from '@mesgflow/ui-kit/chip';\r\nexport * from '@mesgflow/ui-kit/code-block';\r\nexport * from '@mesgflow/ui-kit/collapsible';\r\nexport * from '@mesgflow/ui-kit/color-picker';\r\nexport * from '@mesgflow/ui-kit/combobox';\r\nexport * from '@mesgflow/ui-kit/command';\r\nexport * from '@mesgflow/ui-kit/context-menu';\r\nexport * from '@mesgflow/ui-kit/copy-button';\r\nexport * from '@mesgflow/ui-kit/countdown';\r\nexport * from '@mesgflow/ui-kit/date-picker';\r\nexport * from '@mesgflow/ui-kit/description-list';\r\nexport * from '@mesgflow/ui-kit/dialog';\r\nexport * from '@mesgflow/ui-kit/divider';\r\nexport * from '@mesgflow/ui-kit/drawer';\r\nexport * from '@mesgflow/ui-kit/dropzone';\r\nexport * from '@mesgflow/ui-kit/empty-state';\r\nexport * from '@mesgflow/ui-kit/field';\r\nexport * from '@mesgflow/ui-kit/file-upload';\r\nexport * from '@mesgflow/ui-kit/hover-card';\r\nexport * from '@mesgflow/ui-kit/icon';\r\nexport * from '@mesgflow/ui-kit/inline-edit';\r\nexport * from '@mesgflow/ui-kit/input';\r\nexport * from '@mesgflow/ui-kit/kbd';\r\nexport * from '@mesgflow/ui-kit/lightbox';\r\nexport * from '@mesgflow/ui-kit/link';\r\nexport * from '@mesgflow/ui-kit/listbox';\r\nexport * from '@mesgflow/ui-kit/mention';\r\nexport * from '@mesgflow/ui-kit/menu';\r\nexport * from '@mesgflow/ui-kit/nav-menu';\r\nexport * from '@mesgflow/ui-kit/notification-center';\r\nexport * from '@mesgflow/ui-kit/number-input';\r\nexport * from '@mesgflow/ui-kit/otp-input';\r\nexport * from '@mesgflow/ui-kit/page-header';\r\nexport * from '@mesgflow/ui-kit/pagination';\r\nexport * from '@mesgflow/ui-kit/password-input';\r\nexport * from '@mesgflow/ui-kit/popover';\r\nexport * from '@mesgflow/ui-kit/progress';\r\nexport * from '@mesgflow/ui-kit/qr-code';\r\nexport * from '@mesgflow/ui-kit/radio';\r\nexport * from '@mesgflow/ui-kit/rating';\r\nexport * from '@mesgflow/ui-kit/scroll-area';\r\nexport * from '@mesgflow/ui-kit/search-input';\r\nexport * from '@mesgflow/ui-kit/segmented-control';\r\nexport * from '@mesgflow/ui-kit/select';\r\nexport * from '@mesgflow/ui-kit/sidebar';\r\nexport * from '@mesgflow/ui-kit/skeleton';\r\nexport * from '@mesgflow/ui-kit/slider';\r\nexport * from '@mesgflow/ui-kit/sortable';\r\nexport * from '@mesgflow/ui-kit/spinner';\r\nexport * from '@mesgflow/ui-kit/split-button';\r\nexport * from '@mesgflow/ui-kit/splitter';\r\nexport * from '@mesgflow/ui-kit/stat-tile';\r\nexport * from '@mesgflow/ui-kit/stepper';\r\nexport * from '@mesgflow/ui-kit/switch';\r\nexport * from '@mesgflow/ui-kit/table';\r\nexport * from '@mesgflow/ui-kit/tabs';\r\nexport * from '@mesgflow/ui-kit/tag-input';\r\nexport * from '@mesgflow/ui-kit/theme-switcher';\r\nexport * from '@mesgflow/ui-kit/time-picker';\r\nexport * from '@mesgflow/ui-kit/timeline';\r\nexport * from '@mesgflow/ui-kit/toast';\r\nexport * from '@mesgflow/ui-kit/toggle';\r\nexport * from '@mesgflow/ui-kit/toolbar';\r\nexport * from '@mesgflow/ui-kit/tooltip';\r\nexport * from '@mesgflow/ui-kit/tour';\r\nexport * from '@mesgflow/ui-kit/transfer-list';\r\nexport * from '@mesgflow/ui-kit/tree-select';\r\nexport * from '@mesgflow/ui-kit/tree';\r\nexport * from '@mesgflow/ui-kit/virtual-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;AAQG;AAEH;AACA;AACA;AACA;AACA;;ACdA;;AAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mesgflow/ui-kit",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Independent Angular component kit (button, select, dialog, table, sidebar, and more) built on a Tailwind v4 design token system. See README.md for setup and prerequisites.",
5
5
  "license": "MIT",
6
6
  "author": "Hurdeniz YENER",
@@ -323,6 +323,10 @@
323
323
  "types": "./types/mesgflow-ui-kit-progress.d.ts",
324
324
  "default": "./fesm2022/mesgflow-ui-kit-progress.mjs"
325
325
  },
326
+ "./qr-code": {
327
+ "types": "./types/mesgflow-ui-kit-qr-code.d.ts",
328
+ "default": "./fesm2022/mesgflow-ui-kit-qr-code.mjs"
329
+ },
326
330
  "./radio": {
327
331
  "types": "./types/mesgflow-ui-kit-radio.d.ts",
328
332
  "default": "./fesm2022/mesgflow-ui-kit-radio.mjs"
package/tokens.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "$description": "@mesgflow/ui-kit 0.6.0 design tokens (W3C DTCG). Generated from projects/ui-kit/styles/tokens/*.css by scripts/export-tokens.mjs — do not edit.",
2
+ "$description": "@mesgflow/ui-kit 0.7.0 design tokens (W3C DTCG). Generated from projects/ui-kit/styles/tokens/*.css by scripts/export-tokens.mjs — do not edit.",
3
3
  "primitives": {
4
4
  "color": {
5
5
  "primary": {
@@ -1,7 +1,7 @@
1
1
  import * as _mesgflow_ui_kit_command from '@mesgflow/ui-kit/command';
2
2
  import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
3
3
  import * as _angular_core from '@angular/core';
4
- import { DialogRef } from '@angular/cdk/dialog';
4
+ import * as _mesgflow_ui_kit_dialog from '@mesgflow/ui-kit/dialog';
5
5
 
6
6
  /** `mf-command`'ın tek öğesi — `data` tüketicinin kendi yükü (rota, eylem kimliği vb.). */
7
7
  interface MfCommandItem<T = unknown> {
@@ -125,7 +125,7 @@ interface CommandPaletteData<T = unknown> {
125
125
  */
126
126
  declare class CommandPalette<T = unknown> {
127
127
  protected readonly data: CommandPaletteData<T>;
128
- protected readonly ref: DialogRef<MfCommandItem<T>, CommandPalette<T>>;
128
+ protected readonly ref: _mesgflow_ui_kit_dialog.MfDialogRef<MfCommandItem<T>, CommandPalette<T>>;
129
129
  /** `DialogService` çıkış animasyonu turu — `Dialog`'un aynı reaktif sınıfı (bkz. dialog.service.ts). */
130
130
  private readonly surface;
131
131
  protected readonly closing: _angular_core.Signal<boolean>;
@@ -384,6 +384,12 @@ interface MfPasswordInputLabels {
384
384
  show: string;
385
385
  hide: string;
386
386
  }
387
+ interface MfQrCodeLabels {
388
+ /** `role="img"` için varsayılan erişilebilir ad. */
389
+ ariaLabel: string;
390
+ /** İçerik seçilen hata düzeltme seviyesiyle sığmadığında. */
391
+ error: string;
392
+ }
387
393
  interface MfChipLabels {
388
394
  remove: string;
389
395
  }
@@ -622,6 +628,7 @@ interface MfLabels {
622
628
  stepper: MfStepperLabels;
623
629
  progress: MfProgressLabels;
624
630
  passwordInput: MfPasswordInputLabels;
631
+ qrCode: MfQrCodeLabels;
625
632
  chip: MfChipLabels;
626
633
  alert: MfAlertLabels;
627
634
  breadcrumb: MfBreadcrumbLabels;
@@ -696,6 +703,7 @@ declare const MF_OTP_INPUT_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.M
696
703
  declare const MF_STEPPER_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfStepperLabels>>;
697
704
  declare const MF_PROGRESS_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfProgressLabels>>;
698
705
  declare const MF_PASSWORD_INPUT_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfPasswordInputLabels>>;
706
+ declare const MF_QR_CODE_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfQrCodeLabels>>;
699
707
  declare const MF_CHIP_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfChipLabels>>;
700
708
  declare const MF_ALERT_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfAlertLabels>>;
701
709
  declare const MF_BREADCRUMB_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfBreadcrumbLabels>>;
@@ -754,5 +762,5 @@ interface ProvideMesgflowUiOptions {
754
762
  */
755
763
  declare function provideMesgflowUi(options?: ProvideMesgflowUiOptions): EnvironmentProviders;
756
764
 
757
- export { MF_AGENDA_LABELS, MF_ALERT_LABELS, MF_AUTH_CARD_LABELS, MF_AVATAR_GROUP_LABELS, MF_BOX_INPUT_LABELS, MF_BREADCRUMB_LABELS, MF_CAROUSEL_LABELS, MF_CHARACTER_COUNT_LABELS, MF_CHART_LABELS, MF_CHIP_LABELS, MF_COLOR_PICKER_LABELS, MF_COMBOBOX_LABELS, MF_COMMAND_LABELS, MF_COMMON_LABELS, MF_COPY_LABELS, MF_COUNTDOWN_LABELS, MF_DATE_LOCALE, MF_DATE_PICKER_LABELS, MF_DIALOG_LABELS, MF_DROPZONE_LABELS, MF_FILE_UPLOAD_LABELS, MF_INLINE_EDIT_LABELS, MF_INVITE_MEMBERS_LABELS, MF_LABELS, MF_LIGHTBOX_LABELS, MF_MENTION_LABELS, MF_NOTIFICATION_CENTER_LABELS, MF_OTP_INPUT_LABELS, MF_PAGINATION_LABELS, MF_PANEL_GROUP_LABELS, MF_PASSWORD_INPUT_LABELS, MF_PROGRESS_LABELS, MF_RATING_LABELS, MF_SEARCH_INPUT_LABELS, MF_SELECT_LABELS, MF_SIDEBAR_LABELS, MF_SLIDER_LABELS, MF_SORTABLE_LABELS, MF_SPLIT_BUTTON_LABELS, MF_STAT_TILE_LABELS, MF_STEPPER_LABELS, MF_TABLE_LABELS, MF_TABS_LABELS, MF_THEME_SWITCHER_LABELS, MF_TIME_PICKER_LABELS, MF_TOAST_LABELS, MF_TOUR_LABELS, MF_TRANSFER_LIST_LABELS, MF_TREE_SELECT_LABELS, SlidingIndicator, ValueAccessorBase, cn, containerSurface, controlSize, controlSurface, disabledRecipe, errorRecipe, exitDurationMs, focusRecipe, glassSurface, inlineStartRatio, isRtl, mergeLabels, mfLabelsEn, nextId, overlayPositions, overlaySurface, parseCssDuration, pointerPositions, prefersReducedMotion, pressRecipe, provideMesgflowUi, scrollFromInlineStart, transitionRecipe };
758
- export type { DeepPartial, MfAgendaLabels, MfAlertLabels, MfAuthCardLabels, MfAvatarGroupLabels, MfBoxInputLabels, MfBreadcrumbLabels, MfCarouselLabels, MfCharacterCountLabels, MfChartLabels, MfChipLabels, MfColorPickerLabels, MfComboboxLabels, MfCommandLabels, MfCommonLabels, MfControlSize, MfCopyLabels, MfCountdownLabels, MfDatePickerLabels, MfDialogLabels, MfDropzoneLabels, MfFileUploadLabels, MfInlineEditLabels, MfInviteMembersLabels, MfLabels, MfLightboxLabels, MfMentionLabels, MfNotificationCenterLabels, MfOtpInputLabels, MfPaginationLabels, MfPanelGroupLabels, MfPasswordInputLabels, MfPlacement, MfProgressLabels, MfRatingLabels, MfSearchInputLabels, MfSelectLabels, MfSidebarLabels, MfSize, MfSliderLabels, MfSortableLabels, MfSplitButtonLabels, MfStatTileLabels, MfStepperLabels, MfTableFilterLabels, MfTableFilterOperatorLabels, MfTableLabels, MfTablePaginationLabels, MfTabsLabels, MfThemeSwitcherLabels, MfTimePickerLabels, MfToastLabels, MfTone, MfTourLabels, MfTransferListLabels, MfTreeSelectLabels, ProvideMesgflowUiOptions, SlidingIndicatorAxis };
765
+ export { MF_AGENDA_LABELS, MF_ALERT_LABELS, MF_AUTH_CARD_LABELS, MF_AVATAR_GROUP_LABELS, MF_BOX_INPUT_LABELS, MF_BREADCRUMB_LABELS, MF_CAROUSEL_LABELS, MF_CHARACTER_COUNT_LABELS, MF_CHART_LABELS, MF_CHIP_LABELS, MF_COLOR_PICKER_LABELS, MF_COMBOBOX_LABELS, MF_COMMAND_LABELS, MF_COMMON_LABELS, MF_COPY_LABELS, MF_COUNTDOWN_LABELS, MF_DATE_LOCALE, MF_DATE_PICKER_LABELS, MF_DIALOG_LABELS, MF_DROPZONE_LABELS, MF_FILE_UPLOAD_LABELS, MF_INLINE_EDIT_LABELS, MF_INVITE_MEMBERS_LABELS, MF_LABELS, MF_LIGHTBOX_LABELS, MF_MENTION_LABELS, MF_NOTIFICATION_CENTER_LABELS, MF_OTP_INPUT_LABELS, MF_PAGINATION_LABELS, MF_PANEL_GROUP_LABELS, MF_PASSWORD_INPUT_LABELS, MF_PROGRESS_LABELS, MF_QR_CODE_LABELS, MF_RATING_LABELS, MF_SEARCH_INPUT_LABELS, MF_SELECT_LABELS, MF_SIDEBAR_LABELS, MF_SLIDER_LABELS, MF_SORTABLE_LABELS, MF_SPLIT_BUTTON_LABELS, MF_STAT_TILE_LABELS, MF_STEPPER_LABELS, MF_TABLE_LABELS, MF_TABS_LABELS, MF_THEME_SWITCHER_LABELS, MF_TIME_PICKER_LABELS, MF_TOAST_LABELS, MF_TOUR_LABELS, MF_TRANSFER_LIST_LABELS, MF_TREE_SELECT_LABELS, SlidingIndicator, ValueAccessorBase, cn, containerSurface, controlSize, controlSurface, disabledRecipe, errorRecipe, exitDurationMs, focusRecipe, glassSurface, inlineStartRatio, isRtl, mergeLabels, mfLabelsEn, nextId, overlayPositions, overlaySurface, parseCssDuration, pointerPositions, prefersReducedMotion, pressRecipe, provideMesgflowUi, scrollFromInlineStart, transitionRecipe };
766
+ export type { DeepPartial, MfAgendaLabels, MfAlertLabels, MfAuthCardLabels, MfAvatarGroupLabels, MfBoxInputLabels, MfBreadcrumbLabels, MfCarouselLabels, MfCharacterCountLabels, MfChartLabels, MfChipLabels, MfColorPickerLabels, MfComboboxLabels, MfCommandLabels, MfCommonLabels, MfControlSize, MfCopyLabels, MfCountdownLabels, MfDatePickerLabels, MfDialogLabels, MfDropzoneLabels, MfFileUploadLabels, MfInlineEditLabels, MfInviteMembersLabels, MfLabels, MfLightboxLabels, MfMentionLabels, MfNotificationCenterLabels, MfOtpInputLabels, MfPaginationLabels, MfPanelGroupLabels, MfPasswordInputLabels, MfPlacement, MfProgressLabels, MfQrCodeLabels, MfRatingLabels, MfSearchInputLabels, MfSelectLabels, MfSidebarLabels, MfSize, MfSliderLabels, MfSortableLabels, MfSplitButtonLabels, MfStatTileLabels, MfStepperLabels, MfTableFilterLabels, MfTableFilterOperatorLabels, MfTableLabels, MfTablePaginationLabels, MfTabsLabels, MfThemeSwitcherLabels, MfTimePickerLabels, MfToastLabels, MfTone, MfTourLabels, MfTransferListLabels, MfTreeSelectLabels, ProvideMesgflowUiOptions, SlidingIndicatorAxis };
@@ -1,8 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef } from '@angular/core';
2
+ import { Signal, ComponentRef, TemplateRef } from '@angular/core';
3
3
  import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
4
4
  import * as i1 from '@angular/cdk/drag-drop';
5
5
  import { DialogRef } from '@angular/cdk/dialog';
6
+ import { OverlayRef } from '@angular/cdk/overlay';
7
+ import { Observable } from 'rxjs';
6
8
  import { ComponentType } from '@angular/cdk/portal';
7
9
  import * as class_variance_authority_types from 'class-variance-authority/types';
8
10
  import { VariantProps } from 'class-variance-authority';
@@ -160,9 +162,20 @@ declare class Dialog {
160
162
  * kuralının uygulama noktası: dialog gövdesi + içerik aynı anda kaymaz.
161
163
  */
162
164
  readonly fillBody: _angular_core.InputSignal<boolean>;
165
+ /**
166
+ * `true` (varsayılan): kapat (X) düğmesi `close` olayını yayınladıktan SONRA
167
+ * dialog'u kendisi de kapatır (`MfDialogRef.close()` — idempotent, tüketicinin
168
+ * `(close)` handler'ında sonuçla yaptığı kapanış önce davranır ve kazanır).
169
+ * `false`: yalnızca `close` yayınlanır — kapanışı tamamen tüketici yönetir.
170
+ */
171
+ readonly autoClose: _angular_core.InputSignalWithTransform<boolean, unknown>;
163
172
  readonly close: _angular_core.OutputEmitterRef<void>;
164
173
  protected readonly surface: DialogSurface;
165
174
  protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfDialogLabels>;
175
+ /** Görünür başlığın id'si — CDK konteynerinin `aria-labelledby`'ı buna bağlanır. */
176
+ protected readonly titleId: string;
177
+ private readonly mfRef;
178
+ private readonly cdkRef;
166
179
  private readonly elementRef;
167
180
  private readonly cdkDrag;
168
181
  private readonly scrollBody;
@@ -184,6 +197,8 @@ declare class Dialog {
184
197
  protected readonly headerBorder: _angular_core.Signal<boolean>;
185
198
  protected readonly footerBorder: _angular_core.Signal<boolean>;
186
199
  constructor();
200
+ /** Kapat (X): önce `close` olayı (tüketici sonuçla kapatabilsin), sonra — `autoClose` ise — ref'in kendisi. */
201
+ protected onDismiss(): void;
187
202
  protected updateScrollShadow(): void;
188
203
  /**
189
204
  * Ctrl/Cmd+Enter — tek yerde çözülür, her form bedava kazanır. Kaydet düğmesi
@@ -194,9 +209,72 @@ declare class Dialog {
194
209
  */
195
210
  protected requestSubmit(): void;
196
211
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Dialog, never>;
197
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Dialog, "mf-dialog", ["mfDialog"], { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fillBody": { "alias": "fillBody"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, ["[dialog-header]", "*", "[dialog-footer]"], true, [{ directive: typeof i1.CdkDrag; inputs: {}; outputs: {}; }]>;
212
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Dialog, "mf-dialog", ["mfDialog"], { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fillBody": { "alias": "fillBody"; "required": false; "isSignal": true; }; "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, ["[dialog-header]", "*", "[dialog-footer]"], true, [{ directive: typeof i1.CdkDrag; inputs: {}; outputs: {}; }]>;
198
213
  }
199
214
 
215
+ /** `open` → (`close()` çağrıldı, çıkış animasyonu oynuyor) `closing` → (dispose edildi) `closed`. */
216
+ type DialogState = 'open' | 'closing' | 'closed';
217
+ /**
218
+ * `DialogService.open()`/`openDrawer()`'ın döndürdüğü, kite ait dialog referansı.
219
+ *
220
+ * CDK `DialogRef`'in günlük kullanılan yüzeyini (`close`, `closed`,
221
+ * `componentInstance`, `disableClose`, `backdropClick`, `keydownEvents` …)
222
+ * birebir DELEGE eder — yani eski `ref.closed.subscribe(...)` kodu aynen derlenir.
223
+ * Üstüne kitin kendi dünyasını ekler:
224
+ *
225
+ * - `afterClosed()` — `await` edilebilir sonuç (çıkış animasyonu BİTTİKTEN sonra çözülür).
226
+ * - `state` — `'open' | 'closing' | 'closed'` signal'i (şablonda/`computed`'ta okunur).
227
+ * - `surface` — boyut/maximize/kirli-form durumuna tipli erişim (`setSize`, `toggleMaximize`,
228
+ * `registerDirty`, `markClean` kısayolları).
229
+ * - `cdk` — ham CDK referansı (kaçış kapısı; ör. `updatePosition()`).
230
+ *
231
+ * `close()` İDEMPOTENT'tir: çıkış animasyonu sürerken ya da kirli-form onayı
232
+ * açıkken gelen ek çağrılar yok sayılır (bkz. `dialog.service.ts` `closePredicate`).
233
+ *
234
+ * İçerik component'i içinde `injectDialogRef<Sonuç>()` ile alınır.
235
+ */
236
+ declare class MfDialogRef<R = unknown, C = unknown> {
237
+ readonly cdk: DialogRef<R, C>;
238
+ readonly surface: DialogSurface;
239
+ readonly closed: Observable<R | undefined>;
240
+ readonly backdropClick: Observable<MouseEvent>;
241
+ readonly keydownEvents: Observable<KeyboardEvent>;
242
+ readonly outsidePointerEvents: Observable<MouseEvent>;
243
+ readonly overlayRef: OverlayRef;
244
+ readonly id: string;
245
+ private readonly isClosed;
246
+ private readonly result;
247
+ /** Dialog'un yaşam döngüsü — `closing` çıkış animasyonu boyunca. */
248
+ readonly state: Signal<DialogState>;
249
+ constructor(cdk: DialogRef<R, C>, surface: DialogSurface);
250
+ /** Açılan component örneği (şablonla açıldıysa ve kapandıktan sonra `null`). */
251
+ get componentInstance(): C | null;
252
+ get componentRef(): ComponentRef<C> | null;
253
+ /** `true` iken ESC/backdrop kapatmaz; programatik `close()` yine çalışır. */
254
+ get disableClose(): boolean | undefined;
255
+ set disableClose(value: boolean | undefined);
256
+ /** Dialog'u (çıkış animasyonu + kirli-form koruması üzerinden) kapatır. İdempotent. */
257
+ close(result?: R): void;
258
+ /** Kapanış tamamlandığında (animasyon dahil) sonuçla çözülür; ESC/backdrop'ta `undefined`. */
259
+ afterClosed(): Promise<R | undefined>;
260
+ /** Açıkken genişlik basamağını değiştirir (`sm`…`xl`, `full`). */
261
+ setSize(size: DialogSize): void;
262
+ toggleMaximize(): void;
263
+ /** Kirli-form sorusunu kaydeder — ESC/backdrop/X kapanışında `true` dönerse onay sorulur. */
264
+ registerDirty(check: () => boolean): void;
265
+ /** Başarılı kayıttan hemen önce — sonraki `close()` kirli-form onayı sormaz. */
266
+ markClean(): void;
267
+ }
268
+ /**
269
+ * `DIALOG_DATA`'nın kite ait adı — AYNI token nesnesi, CDK'dan ayrıca import
270
+ * etmeye gerek kalmasın diye. `inject(MF_DIALOG_DATA)` ≡ `injectDialogData()`.
271
+ */
272
+ declare const MF_DIALOG_DATA: _angular_core.InjectionToken<any>;
273
+ /** İçerik component'inde `DialogService.open(..., { data })` ile geçilen veriyi okur. */
274
+ declare function injectDialogData<D>(): D;
275
+ /** İçerik component'inde kendi dialog referansını alır — `ref.close(sonuç)`. */
276
+ declare function injectDialogRef<R = unknown, C = unknown>(): MfDialogRef<R, C>;
277
+
200
278
  /**
201
279
  * `<button mfDialogResizeHandle [ariaLabel]="...">` — `Dialog`'un (dialog.ts)
202
280
  * sağ-alt köşesinde, `DialogSurface.customSize`'ı besleyen serbest boyutlandırma
@@ -231,9 +309,10 @@ declare class DialogResizeHandle {
231
309
  * engelleme davranışının TAMAMI CDK'dan geliyor, burada TEKRAR YAZILMADI — bkz.
232
310
  * projects/ui-kit/README.md "a11y checklist" bölümündeki "elle yazmak son çare" ilkesi).
233
311
  *
234
- * İçerik component'i (tüketicinin kendi form component'i, ör. `ConfirmDialog`) `@angular/cdk/dialog`'un
235
- * KENDİ `DIALOG_DATA`/`DialogRef` token'larını doğrudan `inject()` eder — ekstra bir
236
- * sarmalayıcı token'a gerek yok. Boyut/placement/maximize/drag/resize/sheet durumu
312
+ * `open()` kite ait `MfDialogRef` döndürür (CDK `DialogRef` yüzeyini delege eder +
313
+ * `afterClosed()`/`state`/`surface`). İçerik component'i `injectDialogRef()`/
314
+ * `injectDialogData()` (bkz. dialog-ref.ts) kullanır — CDK'nın kendi `DialogRef`/
315
+ * `DIALOG_DATA` token'larını inject etmek de çalışmaya devam eder. Boyut/placement/maximize/drag/resize/sheet durumu
237
316
  * `DialogSurface` (bkz. o dosya) üzerinden, `providers` ile o dialog'un injector'ına
238
317
  * verilir — `Dialog` (dialog.ts) bunu DI'dan okuyarak render eder.
239
318
  *
@@ -250,7 +329,9 @@ declare class DialogResizeHandle {
250
329
  * kendi reaktif `animate-dialog-out`/`animate-sheet-out`/`animate-drawer-out` class'ıyla
251
330
  * görsel olarak kapanır), ikinci çağrıda (zaten `closing()===true`) gerçek `dispose()`'a
252
331
  * izin veriyoruz. ESC/backdrop/programatik `dialogRef.close(...)` HEPSİ bu predicate'ten
253
- * geçtiği için davranış tekdüze. `prefers-reduced-motion` gecikmeyi tamamen atlıyor —
332
+ * geçtiği için davranış tekdüze. Animasyon sürerken gelen EK `close()` çağrıları
333
+ * yok sayılır (`disposeArmed` yalnızca zamanlayıcı tarafından kurulur) — X düğmesi +
334
+ * tüketicinin `(close)` handler'ı aynı anda kapatsa bile animasyon kesilmez. `prefers-reduced-motion` gecikmeyi tamamen atlıyor —
254
335
  * AMA kirli-form kontrolünden SONRA: koruma reduced-motion kullanıcılarında da çalışmalı.
255
336
  *
256
337
  * **Kirli form koruması**: `surface.isDirty()` `true` dönerse kapanış iptal edilip
@@ -271,7 +352,7 @@ declare class DialogService {
271
352
  * Bir component'i ya da bir `TemplateRef'i açar (şablon yolu `<mf-drawer>` gibi
272
353
  * bildirimsel sarmalayıcılar içindir — şablonun injector'ı da `DialogSurface'i görür).
273
354
  */
274
- open<R = void, D = undefined, C = unknown>(component: ComponentType<C> | TemplateRef<C>, options?: DialogOptions<D>): DialogRef<R, C>;
355
+ open<R = void, D = undefined, C = unknown>(component: ComponentType<C> | TemplateRef<C>, options?: DialogOptions<D>): MfDialogRef<R, C>;
275
356
  /**
276
357
  * Kayıt oluştur/düzenle formlarının TEK açılış noktası — sağdan drawer.
277
358
  * `maximizable` bilerek zorla kapatılıyor: drawer zaten tam yükseklik, büyütme
@@ -283,7 +364,7 @@ declare class DialogService {
283
364
  */
284
365
  openDrawer<R = void, D = undefined, C = unknown>(component: ComponentType<C>, options?: Omit<DialogOptions<D>, 'placement'> & {
285
366
  placement?: Exclude<DialogPlacement, 'center'>;
286
- }): DialogRef<R, C>;
367
+ }): MfDialogRef<R, C>;
287
368
  /** `Promise<boolean>` döner — `if (await dialog.confirm(...))` çağıran taraf için `.subscribe()` zincirinden daha sade. */
288
369
  confirm(data: ConfirmDialogData): Promise<boolean>;
289
370
  /**
@@ -298,8 +379,12 @@ declare class DialogService {
298
379
  * kaldırıldı).
299
380
  */
300
381
  confirmDiscard(): Promise<boolean>;
301
- /** Tüketici bir ref'i kapatmadan ÖNCE kirli mi diye sormak istiyorsa — kendi `closePredicate`'inin async akışıyla yarışmamak için `DialogSurface`'e doğrudan erişim. */
302
- getSurface(ref: DialogRef<any, any>): DialogSurface | undefined;
382
+ /**
383
+ * Tüketici bir ref'i kapatmadan ÖNCE kirli mi diye sormak istiyorsa — kendi `closePredicate`'inin
384
+ * async akışıyla yarışmamak için `DialogSurface`'e doğrudan erişim. `MfDialogRef` için
385
+ * `ref.surface` tercih edilir; ham CDK ref'i (ör. içerikte inject edilen) de kabul edilir.
386
+ */
387
+ getSurface(ref: DialogRef<any, any> | MfDialogRef<any, any>): DialogSurface | undefined;
303
388
  /** `confirm()`'in silme kısayolu — `tone:'danger'` + varsayılan "Sil" etiketi. */
304
389
  confirmDelete(data: Omit<ConfirmDialogData, 'tone'>): Promise<boolean>;
305
390
  /** Tek butonlu bilgilendirme modu — sonuç önemsiz olduğu için `Promise<void>` döner. */
@@ -361,5 +446,5 @@ declare const dialogVariants: (props?: ({
361
446
  } & class_variance_authority_types.ClassProp) | undefined) => string;
362
447
  type DialogVariants = VariantProps<typeof dialogVariants>;
363
448
 
364
- export { ConfirmDialog, Dialog, DialogResizeHandle, DialogService, DialogSurface, dialogVariants };
365
- export type { ConfirmDialogData, ConfirmTone, DialogCustomSize, DialogOptions, DialogPlacement, DialogSize, DialogVariants, DrawerSide };
449
+ export { ConfirmDialog, Dialog, DialogResizeHandle, DialogService, DialogSurface, MF_DIALOG_DATA, MfDialogRef, dialogVariants, injectDialogData, injectDialogRef };
450
+ export type { ConfirmDialogData, ConfirmTone, DialogCustomSize, DialogOptions, DialogPlacement, DialogSize, DialogState, DialogVariants, DrawerSide };
@@ -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,27 +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>;
18
35
  /** İç `<input>`'un id'si — harici bir `<label for>` / `mf-field for` ile ilişkilendirmek için. */
19
36
  readonly inputId: _angular_core.InputSignal<string | undefined>;
20
37
  readonly ariaLabel: _angular_core.InputSignal<string>;
21
- readonly fullWidth: _angular_core.InputSignal<boolean>;
38
+ readonly fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
22
39
  readonly showLabel: _angular_core.InputSignal<string | undefined>;
23
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>;
24
47
  private readonly passwordLabels;
25
48
  protected readonly effectiveShowLabel: _angular_core.Signal<string>;
26
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>;
27
53
  protected readonly visible: _angular_core.WritableSignal<boolean>;
28
- writeValue(value: string): void;
54
+ writeValue(value: string | null): void;
55
+ setDisabledState(disabled: boolean): void;
29
56
  protected toggle(): void;
30
57
  protected onInput(raw: string): void;
31
58
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasswordInput, never>;
32
- 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; }; }, { "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>;
33
60
  }
34
61
 
35
62
  export { PasswordInput };
63
+ export type { PasswordAutocomplete };