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