@mesgflow/ui-kit 0.7.0 → 0.9.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/fesm2022/mesgflow-ui-kit-accordion.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-agenda.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-alert.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs +3 -3
- 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 +16 -16
- package/fesm2022/mesgflow-ui-kit-blocks.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-box-input.mjs +3 -3
- 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 +3 -3
- package/fesm2022/mesgflow-ui-kit-card.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-carousel.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-chart.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-chip.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-code-block.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-collapsible.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-combobox.mjs +4 -4
- 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 +3 -3
- package/fesm2022/mesgflow-ui-kit-copy-button.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-core.mjs +9 -4
- package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-countdown.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-description-list.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-dialog.mjs +197 -34
- 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 +4 -4
- package/fesm2022/mesgflow-ui-kit-drawer.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-empty-state.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-field.mjs +38 -7
- package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-file-upload.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-hover-card.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +4 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-icon.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-inline-edit.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-input.mjs +21 -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 +9 -9
- package/fesm2022/mesgflow-ui-kit-link.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-listbox.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-mention.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-menu.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-nav-menu.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-notification-center.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-number-input.mjs +3 -3
- 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 +3 -3
- package/fesm2022/mesgflow-ui-kit-password-input.mjs +47 -71
- package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-popover.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-progress.mjs +3 -3
- 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 +6 -6
- package/fesm2022/mesgflow-ui-kit-rating.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-search-input.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +34 -22
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-select.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-slider.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-sortable.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-spinner.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-split-button.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-splitter.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-stepper.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-switch.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-table.mjs +21 -21
- package/fesm2022/mesgflow-ui-kit-tabs.mjs +27 -27
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-theming.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-timeline.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-toast.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-toggle.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-tour.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-transfer-list.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-tree-select.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-tree.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-virtual-list.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit.mjs +1 -0
- package/fesm2022/mesgflow-ui-kit.mjs.map +1 -1
- package/package.json +5 -1
- package/tokens.json +1583 -1583
- package/types/mesgflow-ui-kit-command.d.ts +2 -2
- package/types/mesgflow-ui-kit-core.d.ts +10 -2
- package/types/mesgflow-ui-kit-dialog.d.ts +97 -12
- package/types/mesgflow-ui-kit-field.d.ts +24 -2
- package/types/mesgflow-ui-kit-input.d.ts +2 -0
- package/types/mesgflow-ui-kit-password-input.d.ts +43 -6
- package/types/mesgflow-ui-kit-qr-code.d.ts +160 -0
- package/types/mesgflow-ui-kit-segmented-control.d.ts +19 -11
- package/types/mesgflow-ui-kit.d.ts +1 -0
|
@@ -15,10 +15,10 @@ import { cva } from 'class-variance-authority';
|
|
|
15
15
|
* `hostDirectives`'in `inputs` listesiyle dışarı açıldı.
|
|
16
16
|
*/
|
|
17
17
|
class Accordion {
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
19
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Accordion, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: Accordion, isStandalone: true, selector: "mf-accordion", host: { classAttribute: "block divide-y divide-border overflow-hidden rounded-lg border border-border" }, exportAs: ["mfAccordion"], hostDirectives: [{ directive: i1.AccordionGroup, inputs: ["multiExpandable", "multiExpandable", "disabled", "disabled"] }], ngImport: i0, template: '<ng-content />', isInline: true });
|
|
20
20
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Accordion, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
23
|
args: [{
|
|
24
24
|
selector: 'mf-accordion',
|
|
@@ -60,10 +60,10 @@ class AccordionItem {
|
|
|
60
60
|
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
61
61
|
triggerClasses = computed(() => cn(accordionTriggerVariants({ disabled: this.disabled() })), /* @ts-ignore */
|
|
62
62
|
...(ngDevMode ? [{ debugName: "triggerClasses" }] : /* istanbul ignore next */ []));
|
|
63
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
64
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.
|
|
63
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: AccordionItem, isStandalone: true, selector: "mf-accordion-item", inputs: { summary: { classPropertyName: "summary", publicName: "summary", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, ngImport: i0, template: "<h3 class=\"contents\">\r\n <button\r\n type=\"button\"\r\n ngAccordionTrigger\r\n #trigger=\"ngAccordionTrigger\"\r\n [panel]=\"panel\"\r\n [disabled]=\"disabled()\"\r\n [class]=\"triggerClasses()\"\r\n >\r\n <span class=\"truncate\">{{ summary() }}</span>\r\n <span\r\n mfIcon\r\n [size]=\"18\"\r\n class=\"shrink-0 text-fg-subtle transition-transform duration-fast\"\r\n [class.rotate-180]=\"trigger.expanded()\"\r\n >expand_more</span\r\n >\r\n </button>\r\n</h3>\r\n<!--\r\n `preserveContent` \u2014 i\u00E7erik ilk a\u00E7\u0131l\u0131\u015Ftan SONRA DOM'da kal\u0131c\u0131 olur (bkz.\r\n `@angular/aria`'n\u0131n `DeferredContentAware`/`DeferredContent` \u00E7ifti, panel\r\n varsay\u0131lan\u0131: her kapan\u0131\u015Fta view `destroy()` edilir). Grid-rows ge\u00E7i\u015Finin\r\n (a\u015Fa\u011F\u0131da) animasyonu bir \u015Feyi KISALTMASI i\u00E7in i\u00E7eri\u011Fin h\u00E2l\u00E2 orada olmas\u0131\r\n gerekiyor \u2014 hi\u00E7 a\u00E7\u0131lmam\u0131\u015F bir panel yine de hi\u00E7 render ED\u0130LMEZ (lazy\r\n davran\u0131\u015F korunuyor), sadece \"en az bir kez a\u00E7\u0131lm\u0131\u015F\" panel art\u0131k kapan\u0131\u015Fta\r\n yok edilmiyor.\r\n-->\r\n<div\r\n ngAccordionPanel\r\n #panel=\"ngAccordionPanel\"\r\n [preserveContent]=\"true\"\r\n class=\"grid transition-[grid-template-rows] duration-base ease-emphasis\"\r\n [style.grid-template-rows]=\"trigger.expanded() ? '1fr' : '0fr'\"\r\n>\r\n <div class=\"min-h-0 overflow-hidden\">\r\n <ng-template ngAccordionContent>\r\n <div class=\"px-3 pb-3 text-sm text-fg-subtle\">\r\n <ng-content />\r\n </div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: AccordionTrigger, selector: "[ngAccordionTrigger]", inputs: ["panel", "id", "disabled", "expanded"], outputs: ["expandedChange"], exportAs: ["ngAccordionTrigger"] }, { kind: "directive", type: AccordionPanel, selector: "[ngAccordionPanel]", inputs: ["id"], exportAs: ["ngAccordionPanel"] }, { kind: "directive", type: AccordionContent, selector: "ng-template[ngAccordionContent]" }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }] });
|
|
65
65
|
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AccordionItem, decorators: [{
|
|
67
67
|
type: Component,
|
|
68
68
|
args: [{ selector: 'mf-accordion-item', imports: [AccordionTrigger, AccordionPanel, AccordionContent, Icon], host: { class: 'block' }, template: "<h3 class=\"contents\">\r\n <button\r\n type=\"button\"\r\n ngAccordionTrigger\r\n #trigger=\"ngAccordionTrigger\"\r\n [panel]=\"panel\"\r\n [disabled]=\"disabled()\"\r\n [class]=\"triggerClasses()\"\r\n >\r\n <span class=\"truncate\">{{ summary() }}</span>\r\n <span\r\n mfIcon\r\n [size]=\"18\"\r\n class=\"shrink-0 text-fg-subtle transition-transform duration-fast\"\r\n [class.rotate-180]=\"trigger.expanded()\"\r\n >expand_more</span\r\n >\r\n </button>\r\n</h3>\r\n<!--\r\n `preserveContent` \u2014 i\u00E7erik ilk a\u00E7\u0131l\u0131\u015Ftan SONRA DOM'da kal\u0131c\u0131 olur (bkz.\r\n `@angular/aria`'n\u0131n `DeferredContentAware`/`DeferredContent` \u00E7ifti, panel\r\n varsay\u0131lan\u0131: her kapan\u0131\u015Fta view `destroy()` edilir). Grid-rows ge\u00E7i\u015Finin\r\n (a\u015Fa\u011F\u0131da) animasyonu bir \u015Feyi KISALTMASI i\u00E7in i\u00E7eri\u011Fin h\u00E2l\u00E2 orada olmas\u0131\r\n gerekiyor \u2014 hi\u00E7 a\u00E7\u0131lmam\u0131\u015F bir panel yine de hi\u00E7 render ED\u0130LMEZ (lazy\r\n davran\u0131\u015F korunuyor), sadece \"en az bir kez a\u00E7\u0131lm\u0131\u015F\" panel art\u0131k kapan\u0131\u015Fta\r\n yok edilmiyor.\r\n-->\r\n<div\r\n ngAccordionPanel\r\n #panel=\"ngAccordionPanel\"\r\n [preserveContent]=\"true\"\r\n class=\"grid transition-[grid-template-rows] duration-base ease-emphasis\"\r\n [style.grid-template-rows]=\"trigger.expanded() ? '1fr' : '0fr'\"\r\n>\r\n <div class=\"min-h-0 overflow-hidden\">\r\n <ng-template ngAccordionContent>\r\n <div class=\"px-3 pb-3 text-sm text-fg-subtle\">\r\n <ng-content />\r\n </div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n" }]
|
|
69
69
|
}], propDecorators: { summary: [{ type: i0.Input, args: [{ isSignal: true, alias: "summary", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
@@ -76,8 +76,8 @@ class Agenda {
|
|
|
76
76
|
const start = format(event.start, 'p', { locale });
|
|
77
77
|
return event.end ? `${start} – ${format(event.end, 'p', { locale })}` : start;
|
|
78
78
|
}
|
|
79
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
80
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
79
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Agenda, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Agenda, isStandalone: true, selector: "mf-agenda", inputs: { events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: true, transformFunction: null }, from: { classPropertyName: "from", publicName: "from", isSignal: true, isRequired: false, transformFunction: null }, days: { classPropertyName: "days", publicName: "days", isSignal: true, isRequired: false, transformFunction: null }, showEmptyDays: { classPropertyName: "showEmptyDays", publicName: "showEmptyDays", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { eventClick: "eventClick" }, host: { classAttribute: "block" }, exportAs: ["mfAgenda"], ngImport: i0, template: `
|
|
81
81
|
@if (groups().length) {
|
|
82
82
|
<div class="flex flex-col gap-5">
|
|
83
83
|
@for (day of groups(); track day.key) {
|
|
@@ -134,7 +134,7 @@ class Agenda {
|
|
|
134
134
|
}
|
|
135
135
|
`, isInline: true, dependencies: [{ kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }] });
|
|
136
136
|
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Agenda, decorators: [{
|
|
138
138
|
type: Component,
|
|
139
139
|
args: [{
|
|
140
140
|
selector: 'mf-agenda',
|
|
@@ -85,8 +85,8 @@ class Alert {
|
|
|
85
85
|
...(ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []));
|
|
86
86
|
iconName = computed(() => this.icon() ?? DEFAULT_ICON[this.tone()], /* @ts-ignore */
|
|
87
87
|
...(ngDevMode ? [{ debugName: "iconName" }] : /* istanbul ignore next */ []));
|
|
88
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
89
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
88
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Alert, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
89
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Alert, isStandalone: true, selector: "mf-alert", inputs: { tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, dismissLabel: { classPropertyName: "dismissLabel", publicName: "dismissLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismissed: "dismissed" }, host: { classAttribute: "block" }, exportAs: ["mfAlert"], ngImport: i0, template: `
|
|
90
90
|
<div [class]="containerClasses()" [attr.role]="role()">
|
|
91
91
|
@if (iconName()) {
|
|
92
92
|
<span mfIcon [size]="20" class="mt-0.5 shrink-0">{{ iconName() }}</span>
|
|
@@ -117,7 +117,7 @@ class Alert {
|
|
|
117
117
|
</div>
|
|
118
118
|
`, 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"] }] });
|
|
119
119
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Alert, decorators: [{
|
|
121
121
|
type: Component,
|
|
122
122
|
args: [{
|
|
123
123
|
selector: 'mf-alert',
|
|
@@ -14,10 +14,10 @@ class AspectRatio {
|
|
|
14
14
|
...(ngDevMode ? [{ debugName: "mfAspectRatio" }] : /* istanbul ignore next */ []));
|
|
15
15
|
ratio = computed(() => String(this.mfAspectRatio() || 1), /* @ts-ignore */
|
|
16
16
|
...(ngDevMode ? [{ debugName: "ratio" }] : /* istanbul ignore next */ []));
|
|
17
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
18
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AspectRatio, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
18
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: AspectRatio, isStandalone: true, selector: "[mfAspectRatio]", inputs: { mfAspectRatio: { classPropertyName: "mfAspectRatio", publicName: "mfAspectRatio", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.aspect-ratio": "ratio()" }, classAttribute: "relative block overflow-hidden bg-surface-sunken [&>img]:absolute [&>img]:inset-0 [&>img]:h-full [&>img]:w-full [&>img]:object-cover [&>video]:absolute [&>video]:inset-0 [&>video]:h-full [&>video]:w-full [&>video]:object-cover [&>iframe]:absolute [&>iframe]:inset-0 [&>iframe]:h-full [&>iframe]:w-full" }, exportAs: ["mfAspectRatio"], ngImport: i0 });
|
|
19
19
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AspectRatio, decorators: [{
|
|
21
21
|
type: Directive,
|
|
22
22
|
args: [{
|
|
23
23
|
selector: '[mfAspectRatio]',
|
|
@@ -32,8 +32,8 @@ class AvatarGroup {
|
|
|
32
32
|
...(ngDevMode ? [{ debugName: "overflowCount" }] : /* istanbul ignore next */ []));
|
|
33
33
|
overflowClasses = computed(() => cn('inline-flex items-center justify-center rounded-full bg-surface-alt font-medium text-fg-muted ring-2 ring-surface', SIZE_CLASSES[this.size()]), /* @ts-ignore */
|
|
34
34
|
...(ngDevMode ? [{ debugName: "overflowClasses" }] : /* istanbul ignore next */ []));
|
|
35
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
36
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
35
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AvatarGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: AvatarGroup, isStandalone: true, selector: "mf-avatar-group", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "flex items-center -space-x-2" }, exportAs: ["mfAvatarGroup"], ngImport: i0, template: `
|
|
37
37
|
@for (item of visible(); track item.name) {
|
|
38
38
|
<mf-avatar
|
|
39
39
|
[name]="item.name"
|
|
@@ -52,7 +52,7 @@ class AvatarGroup {
|
|
|
52
52
|
}
|
|
53
53
|
`, isInline: true, dependencies: [{ kind: "component", type: Avatar, selector: "mf-avatar", inputs: ["name", "src", "size", "shape", "colorful", "tone"] }] });
|
|
54
54
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AvatarGroup, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
57
|
args: [{
|
|
58
58
|
selector: 'mf-avatar-group',
|
|
@@ -69,8 +69,8 @@ class Avatar {
|
|
|
69
69
|
...(ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []));
|
|
70
70
|
sizeClasses = computed(() => ({ sm: 'h-7 w-7 text-xs', md: 'h-9 w-9 text-sm', lg: 'h-12 w-12 text-base' })[this.size()], /* @ts-ignore */
|
|
71
71
|
...(ngDevMode ? [{ debugName: "sizeClasses" }] : /* istanbul ignore next */ []));
|
|
72
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
73
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Avatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Avatar, isStandalone: true, selector: "mf-avatar", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, colorful: { classPropertyName: "colorful", publicName: "colorful", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "inline-flex" }, ngImport: i0, template: `
|
|
74
74
|
@if (src(); as url) {
|
|
75
75
|
<img [src]="url" [alt]="name()" [class]="shapeClasses() + ' object-cover ' + sizeClasses()" />
|
|
76
76
|
} @else {
|
|
@@ -89,7 +89,7 @@ class Avatar {
|
|
|
89
89
|
}
|
|
90
90
|
`, isInline: true });
|
|
91
91
|
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Avatar, decorators: [{
|
|
93
93
|
type: Component,
|
|
94
94
|
args: [{
|
|
95
95
|
selector: 'mf-avatar',
|
|
@@ -49,10 +49,10 @@ class Badge {
|
|
|
49
49
|
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
50
50
|
classes = computed(() => cn(badgeVariants({ tone: this.tone(), size: this.size() })), /* @ts-ignore */
|
|
51
51
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
52
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
53
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.
|
|
52
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Badge, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
53
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: Badge, isStandalone: true, selector: "span[mfBadge]", inputs: { tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0 });
|
|
54
54
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Badge, decorators: [{
|
|
56
56
|
type: Directive,
|
|
57
57
|
args: [{
|
|
58
58
|
selector: 'span[mfBadge]',
|
|
@@ -76,10 +76,10 @@ class Banner {
|
|
|
76
76
|
this.open.set(false);
|
|
77
77
|
this.dismissed.emit();
|
|
78
78
|
}
|
|
79
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
80
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
79
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Banner, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Banner, isStandalone: true, selector: "mf-banner", inputs: { tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, dismissKey: { classPropertyName: "dismissKey", publicName: "dismissKey", isSignal: true, isRequired: false, transformFunction: null }, announce: { classPropertyName: "announce", publicName: "announce", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", dismissed: "dismissed" }, host: { properties: { "class": "hostClasses()", "attr.role": "announce() ? 'status' : null" } }, exportAs: ["mfBanner"], ngImport: i0, template: "<div\r\n class=\"mx-auto flex min-h-11 flex-wrap items-center gap-x-3 gap-y-2 px-4 py-2\"\r\n [class.justify-center]=\"align() === 'center'\"\r\n>\r\n @if (icon()) {\r\n <span mfIcon [size]=\"18\" class=\"shrink-0\">{{ icon() }}</span>\r\n }\r\n <div\r\n class=\"min-w-0\"\r\n [class.flex-1]=\"align() === 'start'\"\r\n [class.text-center]=\"align() === 'center'\"\r\n >\r\n <ng-content />\r\n </div>\r\n <ng-content select=\"[action]\" />\r\n @if (dismissible()) {\r\n <button\r\n type=\"button\"\r\n class=\"-me-2 inline-flex size-8 shrink-0 cursor-pointer appearance-none items-center justify-center rounded-md border-0 bg-transparent text-current transition-colors duration-fast ease-emphasis hover:bg-current/10 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-current\"\r\n [attr.aria-label]=\"labels().dismiss\"\r\n (click)=\"dismiss()\"\r\n >\r\n <span mfIcon [size]=\"18\">close</span>\r\n </button>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }] });
|
|
81
81
|
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Banner, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
84
|
args: [{ selector: 'mf-banner', exportAs: 'mfBanner', imports: [Icon], host: {
|
|
85
85
|
'[class]': 'hostClasses()',
|
|
@@ -17,10 +17,10 @@ const EMAIL$1 = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
|
17
17
|
* içinde e-posta formunun üstünde, ayırıcıyla birlikte gösterilir.
|
|
18
18
|
*/
|
|
19
19
|
class AuthProviders {
|
|
20
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
21
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AuthProviders, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
21
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: AuthProviders, isStandalone: true, selector: "[mfAuthProviders]", host: { classAttribute: "grid gap-2 @xs:grid-cols-2" }, ngImport: i0 });
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AuthProviders, decorators: [{
|
|
24
24
|
type: Directive,
|
|
25
25
|
args: [{ selector: '[mfAuthProviders]', host: { class: 'grid gap-2 @xs:grid-cols-2' } }]
|
|
26
26
|
}] });
|
|
@@ -91,12 +91,12 @@ class AuthCard {
|
|
|
91
91
|
remember: this.showRemember() && this.remember(),
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
95
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
94
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AuthCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: AuthCard, isStandalone: true, selector: "mf-auth-card", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, showRemember: { classPropertyName: "showRemember", publicName: "showRemember", isSignal: true, isRequired: false, transformFunction: null }, showForgotPassword: { classPropertyName: "showForgotPassword", publicName: "showForgotPassword", isSignal: true, isRequired: false, transformFunction: null }, showSignUp: { classPropertyName: "showSignUp", publicName: "showSignUp", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { signIn: "signIn", forgotPassword: "forgotPassword", signUp: "signUp", errorDismissed: "errorDismissed" }, host: { classAttribute: "@container block w-full max-w-sm" }, queries: [{ propertyName: "providers", first: true, predicate: AuthProviders, descendants: true, isSignal: true }], exportAs: ["mfAuthCard"], ngImport: i0, template: "<form class=\"flex flex-col gap-5\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n @if (error()) {\r\n <mf-alert\r\n tone=\"danger\"\r\n [title]=\"labels().errorTitle\"\r\n [dismissible]=\"true\"\r\n (dismissed)=\"errorDismissed.emit()\"\r\n >{{ error() }}</mf-alert\r\n >\r\n }\r\n\r\n @if (providers()) {\r\n <ng-content select=\"[mfAuthProviders]\" />\r\n <mf-divider [label]=\"labels().divider\" />\r\n }\r\n\r\n <mf-field [label]=\"labels().email\" [for]=\"ids.email\" [error]=\"emailError()\" [required]=\"true\">\r\n <input\r\n mfInput\r\n [id]=\"ids.email\"\r\n type=\"email\"\r\n autocomplete=\"email\"\r\n [placeholder]=\"labels().emailPlaceholder\"\r\n [value]=\"email()\"\r\n [hasError]=\"!!emailError()\"\r\n (input)=\"email.set($any($event.target).value)\"\r\n />\r\n </mf-field>\r\n\r\n <div class=\"flex flex-col gap-1.5\">\r\n <div class=\"flex items-center justify-between gap-3\">\r\n <label [for]=\"ids.password\" class=\"text-label text-fg-muted\">{{ labels().password }}</label>\r\n @if (showForgotPassword()) {\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"xs\" (click)=\"forgotPassword.emit()\">\r\n {{ labels().forgotPassword }}\r\n </button>\r\n }\r\n </div>\r\n <mf-password-input\r\n [inputId]=\"ids.password\"\r\n name=\"password\"\r\n autocomplete=\"current-password\"\r\n [required]=\"true\"\r\n [(value)]=\"password\"\r\n [fullWidth]=\"true\"\r\n [hasError]=\"!!passwordError()\"\r\n />\r\n @if (passwordError(); as message) {\r\n <p class=\"text-sm text-danger\" aria-live=\"polite\">{{ message }}</p>\r\n }\r\n </div>\r\n\r\n @if (showRemember()) {\r\n <label class=\"flex items-center gap-2 text-sm text-fg-muted\">\r\n <input\r\n type=\"checkbox\"\r\n mfCheckbox\r\n [checked]=\"remember()\"\r\n (change)=\"remember.set($any($event.target).checked)\"\r\n />\r\n {{ labels().remember }}\r\n </label>\r\n }\r\n\r\n <button mfButton type=\"submit\" size=\"lg\" [loading]=\"loading()\">{{ labels().submit }}</button>\r\n\r\n @if (showSignUp()) {\r\n <p class=\"text-center text-sm text-fg-muted\">\r\n {{ labels().noAccount }}\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"sm\" (click)=\"signUp.emit()\">\r\n {{ labels().signUp }}\r\n </button>\r\n </p>\r\n }\r\n</form>\r\n", dependencies: [{ kind: "component", type: Alert, selector: "mf-alert", inputs: ["tone", "title", "icon", "dismissible", "dismissLabel"], outputs: ["dismissed"], exportAs: ["mfAlert"] }, { kind: "component", type: Button, selector: "button[mfButton], a[mfButton]", inputs: ["tone", "appearance", "size", "shape", "type", "loading", "iconStart", "iconEnd"], exportAs: ["mfButton"] }, { kind: "directive", type: Checkbox, selector: "input[type=checkbox][mfCheckbox]", inputs: ["size", "indeterminate"] }, { kind: "component", type: Divider, selector: "mf-divider", inputs: ["orientation", "label"], exportAs: ["mfDivider"] }, { kind: "component", type: Field, selector: "mf-field", inputs: ["label", "for", "hint", "error", "required", "grow"] }, { kind: "directive", type: Input, selector: "input[mfInput]:not([type=checkbox]):not([type=radio]), textarea[mfInput]", inputs: ["size", "hasError", "autosize", "minRows", "maxRows"] }, { kind: "component", type: PasswordInput, selector: "mf-password-input", inputs: ["value", "size", "placeholder", "disabled", "hasError", "inputId", "ariaLabel", "fullWidth", "showLabel", "hideLabel", "autocomplete", "name", "required", "readonly"], outputs: ["valueChange"], exportAs: ["mfPasswordInput"] }] });
|
|
96
96
|
}
|
|
97
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: AuthCard, decorators: [{
|
|
98
98
|
type: Component,
|
|
99
|
-
args: [{ selector: 'mf-auth-card', exportAs: 'mfAuthCard', imports: [Alert, Button, Checkbox, Divider, Field, Input, PasswordInput], host: { class: '@container block w-full max-w-sm' }, template: "<form class=\"flex flex-col gap-5\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n @if (error()) {\r\n <mf-alert\r\n tone=\"danger\"\r\n [title]=\"labels().errorTitle\"\r\n [dismissible]=\"true\"\r\n (dismissed)=\"errorDismissed.emit()\"\r\n >{{ error() }}</mf-alert\r\n >\r\n }\r\n\r\n @if (providers()) {\r\n <ng-content select=\"[mfAuthProviders]\" />\r\n <mf-divider [label]=\"labels().divider\" />\r\n }\r\n\r\n <mf-field [label]=\"labels().email\" [for]=\"ids.email\" [error]=\"emailError()\" [required]=\"true\">\r\n <input\r\n mfInput\r\n [id]=\"ids.email\"\r\n type=\"email\"\r\n autocomplete=\"email\"\r\n [placeholder]=\"labels().emailPlaceholder\"\r\n [value]=\"email()\"\r\n [hasError]=\"!!emailError()\"\r\n (input)=\"email.set($any($event.target).value)\"\r\n />\r\n </mf-field>\r\n\r\n <div class=\"flex flex-col gap-1.5\">\r\n <div class=\"flex items-center justify-between gap-3\">\r\n <label [for]=\"ids.password\" class=\"text-label text-fg-muted\">{{ labels().password }}</label>\r\n @if (showForgotPassword()) {\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"xs\" (click)=\"forgotPassword.emit()\">\r\n {{ labels().forgotPassword }}\r\n </button>\r\n }\r\n </div>\r\n <mf-password-input\r\n [inputId]=\"ids.password\"\r\n [(value)]=\"password\"\r\n [fullWidth]=\"true\"\r\n [hasError]=\"!!passwordError()\"\r\n />\r\n @if (passwordError(); as message) {\r\n <p class=\"text-sm text-danger\" aria-live=\"polite\">{{ message }}</p>\r\n }\r\n </div>\r\n\r\n @if (showRemember()) {\r\n <label class=\"flex items-center gap-2 text-sm text-fg-muted\">\r\n <input\r\n type=\"checkbox\"\r\n mfCheckbox\r\n [checked]=\"remember()\"\r\n (change)=\"remember.set($any($event.target).checked)\"\r\n />\r\n {{ labels().remember }}\r\n </label>\r\n }\r\n\r\n <button mfButton type=\"submit\" size=\"lg\" [loading]=\"loading()\">{{ labels().submit }}</button>\r\n\r\n @if (showSignUp()) {\r\n <p class=\"text-center text-sm text-fg-muted\">\r\n {{ labels().noAccount }}\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"sm\" (click)=\"signUp.emit()\">\r\n {{ labels().signUp }}\r\n </button>\r\n </p>\r\n }\r\n</form>\r\n" }]
|
|
99
|
+
args: [{ selector: 'mf-auth-card', exportAs: 'mfAuthCard', imports: [Alert, Button, Checkbox, Divider, Field, Input, PasswordInput], host: { class: '@container block w-full max-w-sm' }, template: "<form class=\"flex flex-col gap-5\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n @if (error()) {\r\n <mf-alert\r\n tone=\"danger\"\r\n [title]=\"labels().errorTitle\"\r\n [dismissible]=\"true\"\r\n (dismissed)=\"errorDismissed.emit()\"\r\n >{{ error() }}</mf-alert\r\n >\r\n }\r\n\r\n @if (providers()) {\r\n <ng-content select=\"[mfAuthProviders]\" />\r\n <mf-divider [label]=\"labels().divider\" />\r\n }\r\n\r\n <mf-field [label]=\"labels().email\" [for]=\"ids.email\" [error]=\"emailError()\" [required]=\"true\">\r\n <input\r\n mfInput\r\n [id]=\"ids.email\"\r\n type=\"email\"\r\n autocomplete=\"email\"\r\n [placeholder]=\"labels().emailPlaceholder\"\r\n [value]=\"email()\"\r\n [hasError]=\"!!emailError()\"\r\n (input)=\"email.set($any($event.target).value)\"\r\n />\r\n </mf-field>\r\n\r\n <div class=\"flex flex-col gap-1.5\">\r\n <div class=\"flex items-center justify-between gap-3\">\r\n <label [for]=\"ids.password\" class=\"text-label text-fg-muted\">{{ labels().password }}</label>\r\n @if (showForgotPassword()) {\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"xs\" (click)=\"forgotPassword.emit()\">\r\n {{ labels().forgotPassword }}\r\n </button>\r\n }\r\n </div>\r\n <mf-password-input\r\n [inputId]=\"ids.password\"\r\n name=\"password\"\r\n autocomplete=\"current-password\"\r\n [required]=\"true\"\r\n [(value)]=\"password\"\r\n [fullWidth]=\"true\"\r\n [hasError]=\"!!passwordError()\"\r\n />\r\n @if (passwordError(); as message) {\r\n <p class=\"text-sm text-danger\" aria-live=\"polite\">{{ message }}</p>\r\n }\r\n </div>\r\n\r\n @if (showRemember()) {\r\n <label class=\"flex items-center gap-2 text-sm text-fg-muted\">\r\n <input\r\n type=\"checkbox\"\r\n mfCheckbox\r\n [checked]=\"remember()\"\r\n (change)=\"remember.set($any($event.target).checked)\"\r\n />\r\n {{ labels().remember }}\r\n </label>\r\n }\r\n\r\n <button mfButton type=\"submit\" size=\"lg\" [loading]=\"loading()\">{{ labels().submit }}</button>\r\n\r\n @if (showSignUp()) {\r\n <p class=\"text-center text-sm text-fg-muted\">\r\n {{ labels().noAccount }}\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"sm\" (click)=\"signUp.emit()\">\r\n {{ labels().signUp }}\r\n </button>\r\n </p>\r\n }\r\n</form>\r\n" }]
|
|
100
100
|
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], showRemember: [{ type: i0.Input, args: [{ isSignal: true, alias: "showRemember", required: false }] }], showForgotPassword: [{ type: i0.Input, args: [{ isSignal: true, alias: "showForgotPassword", required: false }] }], showSignUp: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSignUp", required: false }] }], signIn: [{ type: i0.Output, args: ["signIn"] }], forgotPassword: [{ type: i0.Output, args: ["forgotPassword"] }], signUp: [{ type: i0.Output, args: ["signUp"] }], errorDismissed: [{ type: i0.Output, args: ["errorDismissed"] }], providers: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AuthProviders), { isSignal: true }] }] } });
|
|
101
101
|
|
|
102
102
|
const EMAIL = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -152,20 +152,20 @@ class InviteMembers {
|
|
|
152
152
|
this.emails.set([]);
|
|
153
153
|
this.submitted.set(false);
|
|
154
154
|
}
|
|
155
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
156
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.
|
|
155
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: InviteMembers, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
156
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: InviteMembers, isStandalone: true, selector: "mf-invite-members", inputs: { roles: { classPropertyName: "roles", publicName: "roles", isSignal: true, isRequired: true, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { invite: "invite" }, host: { classAttribute: "@container block" }, exportAs: ["mfInviteMembers"], ngImport: i0, template: "<form class=\"flex flex-col gap-4\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title-sm text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-3 @lg:flex-row @lg:items-start\">\r\n <mf-field\r\n class=\"min-w-0 flex-1\"\r\n [label]=\"labels().emails\"\r\n [for]=\"ids.emails\"\r\n [error]=\"error()\"\r\n [required]=\"true\"\r\n >\r\n <mf-tag-input\r\n [inputId]=\"ids.emails\"\r\n [(value)]=\"emails\"\r\n [placeholder]=\"labels().emailsPlaceholder\"\r\n [hasError]=\"!!error()\"\r\n [fullWidth]=\"true\"\r\n [unique]=\"true\"\r\n />\r\n </mf-field>\r\n <mf-field class=\"@lg:w-44\" [label]=\"labels().role\">\r\n <mf-select [ariaLabel]=\"labels().role\" [options]=\"roles()\" [(value)]=\"role\" />\r\n </mf-field>\r\n </div>\r\n\r\n <div class=\"flex justify-end\">\r\n <button mfButton type=\"submit\" iconStart=\"send\" [loading]=\"loading()\">\r\n {{ labels().submit }}\r\n </button>\r\n </div>\r\n</form>\r\n", dependencies: [{ kind: "component", type: Button, selector: "button[mfButton], a[mfButton]", inputs: ["tone", "appearance", "size", "shape", "type", "loading", "iconStart", "iconEnd"], exportAs: ["mfButton"] }, { kind: "component", type: Field, selector: "mf-field", inputs: ["label", "for", "hint", "error", "required", "grow"] }, { kind: "component", type: Select, selector: "mf-select", inputs: ["options", "value", "multiple", "values", "maxVisibleChips", "placeholder", "disabled", "size", "hasError", "ariaLabel"], outputs: ["valueChange", "valuesChange"], exportAs: ["mfSelect"] }, { kind: "component", type: TagInput, selector: "mf-tag-input", inputs: ["value", "placeholder", "disabled", "hasError", "inputId", "ariaLabel", "fullWidth", "removeLabel", "unique"], outputs: ["valueChange"], exportAs: ["mfTagInput"] }] });
|
|
157
157
|
}
|
|
158
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: InviteMembers, decorators: [{
|
|
159
159
|
type: Component,
|
|
160
160
|
args: [{ selector: 'mf-invite-members', exportAs: 'mfInviteMembers', imports: [Button, Field, Select, TagInput], host: { class: '@container block' }, template: "<form class=\"flex flex-col gap-4\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title-sm text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-3 @lg:flex-row @lg:items-start\">\r\n <mf-field\r\n class=\"min-w-0 flex-1\"\r\n [label]=\"labels().emails\"\r\n [for]=\"ids.emails\"\r\n [error]=\"error()\"\r\n [required]=\"true\"\r\n >\r\n <mf-tag-input\r\n [inputId]=\"ids.emails\"\r\n [(value)]=\"emails\"\r\n [placeholder]=\"labels().emailsPlaceholder\"\r\n [hasError]=\"!!error()\"\r\n [fullWidth]=\"true\"\r\n [unique]=\"true\"\r\n />\r\n </mf-field>\r\n <mf-field class=\"@lg:w-44\" [label]=\"labels().role\">\r\n <mf-select [ariaLabel]=\"labels().role\" [options]=\"roles()\" [(value)]=\"role\" />\r\n </mf-field>\r\n </div>\r\n\r\n <div class=\"flex justify-end\">\r\n <button mfButton type=\"submit\" iconStart=\"send\" [loading]=\"loading()\">\r\n {{ labels().submit }}\r\n </button>\r\n </div>\r\n</form>\r\n" }]
|
|
161
161
|
}], propDecorators: { roles: [{ type: i0.Input, args: [{ isSignal: true, alias: "roles", required: true }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], invite: [{ type: i0.Output, args: ["invite"] }] } });
|
|
162
162
|
|
|
163
163
|
/** `mf-settings-section`'ın alt eylem şeridi — sönük zemin, sağa hizalı düğmeler. */
|
|
164
164
|
class SettingsActions {
|
|
165
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
166
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.
|
|
165
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SettingsActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
166
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: SettingsActions, isStandalone: true, selector: "[mfSettingsActions]", host: { classAttribute: "flex flex-wrap items-center justify-end gap-2 border-t border-hairline bg-surface-sunken px-5 py-3" }, ngImport: i0 });
|
|
167
167
|
}
|
|
168
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SettingsActions, decorators: [{
|
|
169
169
|
type: Directive,
|
|
170
170
|
args: [{
|
|
171
171
|
selector: '[mfSettingsActions]',
|
|
@@ -191,10 +191,10 @@ class SettingsSection {
|
|
|
191
191
|
description = input(/* @ts-ignore */
|
|
192
192
|
...(ngDevMode ? [undefined, { debugName: "description" }] : /* istanbul ignore next */ []));
|
|
193
193
|
headingId = nextId('mf-settings-heading');
|
|
194
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
195
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
194
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SettingsSection, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
195
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SettingsSection, isStandalone: true, selector: "mf-settings-section", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "@container block" }, exportAs: ["mfSettingsSection"], ngImport: i0, template: "<section\r\n [attr.aria-labelledby]=\"headingId\"\r\n class=\"grid gap-4 @3xl:grid-cols-[16rem_1fr] @3xl:gap-10\"\r\n>\r\n <div>\r\n <h2 [id]=\"headingId\" class=\"font-display text-title-sm text-fg\">{{ heading() }}</h2>\r\n @if (description()) {\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() }}</p>\r\n }\r\n </div>\r\n <div class=\"overflow-hidden rounded-xl border border-hairline bg-surface\">\r\n <div class=\"flex flex-col gap-5 p-5 @md:p-6\"><ng-content /></div>\r\n <ng-content select=\"[mfSettingsActions]\" />\r\n </div>\r\n</section>\r\n" });
|
|
196
196
|
}
|
|
197
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SettingsSection, decorators: [{
|
|
198
198
|
type: Component,
|
|
199
199
|
args: [{ selector: 'mf-settings-section', exportAs: 'mfSettingsSection', host: { class: '@container block' }, template: "<section\r\n [attr.aria-labelledby]=\"headingId\"\r\n class=\"grid gap-4 @3xl:grid-cols-[16rem_1fr] @3xl:gap-10\"\r\n>\r\n <div>\r\n <h2 [id]=\"headingId\" class=\"font-display text-title-sm text-fg\">{{ heading() }}</h2>\r\n @if (description()) {\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() }}</p>\r\n }\r\n </div>\r\n <div class=\"overflow-hidden rounded-xl border border-hairline bg-surface\">\r\n <div class=\"flex flex-col gap-5 p-5 @md:p-6\"><ng-content /></div>\r\n <ng-content select=\"[mfSettingsActions]\" />\r\n </div>\r\n</section>\r\n" }]
|
|
200
200
|
}], propDecorators: { heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesgflow-ui-kit-blocks.mjs","sources":["../../../projects/ui-kit/blocks/auth-card.ts","../../../projects/ui-kit/blocks/auth-card.html","../../../projects/ui-kit/blocks/invite-members.ts","../../../projects/ui-kit/blocks/invite-members.html","../../../projects/ui-kit/blocks/settings-section.ts","../../../projects/ui-kit/blocks/settings-section.html","../../../projects/ui-kit/blocks/mesgflow-ui-kit-blocks.ts"],"sourcesContent":["import {\r\n Component,\r\n Directive,\r\n booleanAttribute,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { Alert } from '@mesgflow/ui-kit/alert';\r\nimport { Button } from '@mesgflow/ui-kit/button';\r\nimport { Checkbox } from '@mesgflow/ui-kit/checkbox';\r\nimport { MF_AUTH_CARD_LABELS, nextId } from '@mesgflow/ui-kit/core';\r\nimport { Divider } from '@mesgflow/ui-kit/divider';\r\nimport { Field } from '@mesgflow/ui-kit/field';\r\nimport { Input } from '@mesgflow/ui-kit/input';\r\nimport { PasswordInput } from '@mesgflow/ui-kit/password-input';\r\n\r\nexport interface AuthCredentials {\r\n email: string;\r\n password: string;\r\n remember: boolean;\r\n}\r\n\r\nconst EMAIL = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n\r\n/**\r\n * `<div mfAuthProviders>…GitHub/Google düğmeleri…</div>` — `mf-auth-card`\r\n * içinde e-posta formunun üstünde, ayırıcıyla birlikte gösterilir.\r\n */\r\n@Directive({ selector: '[mfAuthProviders]', host: { class: 'grid gap-2 @xs:grid-cols-2' } })\r\nexport class AuthProviders {}\r\n\r\n/**\r\n * `<mf-auth-card [loading]=\"busy()\" [error]=\"err()\" (signIn)=\"login($event)\" (forgotPassword)=\"…\" (signUp)=\"…\" />`\r\n *\r\n * Kullanıma hazır giriş kartı (Login bloğunun tüketilebilir hâli): başlık,\r\n * isteğe bağlı sosyal sağlayıcı slotu (`[mfAuthProviders]`), e-posta +\r\n * parola (göster/gizle), \"beni hatırla\", gönder ve kayıt bağlantısı.\r\n *\r\n * - Doğrulama yerleşik: boş/geçersiz e-posta ve boş parola alanın altında\r\n * (`mf-field`, `aria-invalid` + `aria-describedby`) gösterilir; `signIn`\r\n * yalnızca geçerli değerlerle yayılır.\r\n * - Sunucu hatası `error` girdisiyle üstte bir `role=\"alert\"` uyarısı olur.\r\n * - Tüm metinler `MfLabels.authCard` — `title`/`description` girdileri\r\n * yalnızca bu örnek için ezer.\r\n * - Kapsayıcı sorgusuyla (`@container`) dar yerlerde tek sütun.\r\n */\r\n@Component({\r\n selector: 'mf-auth-card',\r\n exportAs: 'mfAuthCard',\r\n imports: [Alert, Button, Checkbox, Divider, Field, Input, PasswordInput],\r\n host: { class: '@container block w-full max-w-sm' },\r\n templateUrl: './auth-card.html',\r\n})\r\nexport class AuthCard {\r\n readonly title = input<string>();\r\n readonly description = input<string>();\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n /** Sunucudan dönen hata metni — boşsa uyarı gösterilmez. */\r\n readonly error = input<string | null>(null);\r\n readonly showRemember = input(true, { transform: booleanAttribute });\r\n /** `false` ise \"parolamı unuttum\" bağlantısı gizlenir. */\r\n readonly showForgotPassword = input(true, { transform: booleanAttribute });\r\n /** `false` ise alttaki kayıt satırı gizlenir. */\r\n readonly showSignUp = input(true, { transform: booleanAttribute });\r\n\r\n readonly signIn = output<AuthCredentials>();\r\n readonly forgotPassword = output<void>();\r\n readonly signUp = output<void>();\r\n readonly errorDismissed = output<void>();\r\n\r\n protected readonly labels = inject(MF_AUTH_CARD_LABELS);\r\n protected readonly ids = { email: nextId('mf-auth-email'), password: nextId('mf-auth-password') };\r\n protected readonly providers = contentChild(AuthProviders);\r\n\r\n protected readonly email = signal('');\r\n protected readonly password = signal('');\r\n protected readonly remember = signal(true);\r\n protected readonly submitted = signal(false);\r\n\r\n protected readonly emailError = computed(() => {\r\n if (!this.submitted()) return undefined;\r\n const value = this.email().trim();\r\n if (!value) return this.labels().emailRequired;\r\n return EMAIL.test(value) ? undefined : this.labels().emailInvalid;\r\n });\r\n protected readonly passwordError = computed(() =>\r\n this.submitted() && !this.password() ? this.labels().passwordRequired : undefined,\r\n );\r\n\r\n protected submit(event: Event): void {\r\n event.preventDefault();\r\n this.submitted.set(true);\r\n if (this.emailError() || this.passwordError() || this.loading()) return;\r\n this.signIn.emit({\r\n email: this.email().trim(),\r\n password: this.password(),\r\n remember: this.showRemember() && this.remember(),\r\n });\r\n }\r\n}\r\n","<form class=\"flex flex-col gap-5\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n @if (error()) {\r\n <mf-alert\r\n tone=\"danger\"\r\n [title]=\"labels().errorTitle\"\r\n [dismissible]=\"true\"\r\n (dismissed)=\"errorDismissed.emit()\"\r\n >{{ error() }}</mf-alert\r\n >\r\n }\r\n\r\n @if (providers()) {\r\n <ng-content select=\"[mfAuthProviders]\" />\r\n <mf-divider [label]=\"labels().divider\" />\r\n }\r\n\r\n <mf-field [label]=\"labels().email\" [for]=\"ids.email\" [error]=\"emailError()\" [required]=\"true\">\r\n <input\r\n mfInput\r\n [id]=\"ids.email\"\r\n type=\"email\"\r\n autocomplete=\"email\"\r\n [placeholder]=\"labels().emailPlaceholder\"\r\n [value]=\"email()\"\r\n [hasError]=\"!!emailError()\"\r\n (input)=\"email.set($any($event.target).value)\"\r\n />\r\n </mf-field>\r\n\r\n <div class=\"flex flex-col gap-1.5\">\r\n <div class=\"flex items-center justify-between gap-3\">\r\n <label [for]=\"ids.password\" class=\"text-label text-fg-muted\">{{ labels().password }}</label>\r\n @if (showForgotPassword()) {\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"xs\" (click)=\"forgotPassword.emit()\">\r\n {{ labels().forgotPassword }}\r\n </button>\r\n }\r\n </div>\r\n <mf-password-input\r\n [inputId]=\"ids.password\"\r\n [(value)]=\"password\"\r\n [fullWidth]=\"true\"\r\n [hasError]=\"!!passwordError()\"\r\n />\r\n @if (passwordError(); as message) {\r\n <p class=\"text-sm text-danger\" aria-live=\"polite\">{{ message }}</p>\r\n }\r\n </div>\r\n\r\n @if (showRemember()) {\r\n <label class=\"flex items-center gap-2 text-sm text-fg-muted\">\r\n <input\r\n type=\"checkbox\"\r\n mfCheckbox\r\n [checked]=\"remember()\"\r\n (change)=\"remember.set($any($event.target).checked)\"\r\n />\r\n {{ labels().remember }}\r\n </label>\r\n }\r\n\r\n <button mfButton type=\"submit\" size=\"lg\" [loading]=\"loading()\">{{ labels().submit }}</button>\r\n\r\n @if (showSignUp()) {\r\n <p class=\"text-center text-sm text-fg-muted\">\r\n {{ labels().noAccount }}\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"sm\" (click)=\"signUp.emit()\">\r\n {{ labels().signUp }}\r\n </button>\r\n </p>\r\n }\r\n</form>\r\n","import {\r\n Component,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n linkedSignal,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { Button } from '@mesgflow/ui-kit/button';\r\nimport { MF_INVITE_MEMBERS_LABELS, nextId } from '@mesgflow/ui-kit/core';\r\nimport { Field } from '@mesgflow/ui-kit/field';\r\nimport { Select, type SelectOption } from '@mesgflow/ui-kit/select';\r\nimport { TagInput } from '@mesgflow/ui-kit/tag-input';\r\n\r\nexport interface MemberInvite<R = string> {\r\n emails: string[];\r\n role: R;\r\n}\r\n\r\nconst EMAIL = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n\r\n/**\r\n * `<mf-invite-members [roles]=\"roles\" [loading]=\"sending()\" (invite)=\"send($event)\" />`\r\n *\r\n * Ekip daveti formu (Invite bloğunun tüketilebilir hâli): etiketli e-posta\r\n * girişi (Enter/virgül ile birden çok adres), rol seçimi ve gönder. Geçersiz\r\n * adresler gönderimde listelenir; `invite` yalnızca geçerli adreslerle yayılır\r\n * ve başarılıysa tüketici `reset()` çağırabilir.\r\n *\r\n * Metinler `MfLabels.inviteMembers`; `roles` tüketicinin alanıdır (ör.\r\n * Yönetici/Düzenleyici/Görüntüleyici). Varsayılan rol listenin ilkidir.\r\n */\r\n@Component({\r\n selector: 'mf-invite-members',\r\n exportAs: 'mfInviteMembers',\r\n imports: [Button, Field, Select, TagInput],\r\n host: { class: '@container block' },\r\n templateUrl: './invite-members.html',\r\n})\r\nexport class InviteMembers<R = string> {\r\n readonly roles = input.required<SelectOption<R>[]>();\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly title = input<string>();\r\n readonly description = input<string>();\r\n\r\n readonly invite = output<MemberInvite<R>>();\r\n\r\n protected readonly labels = inject(MF_INVITE_MEMBERS_LABELS);\r\n protected readonly ids = { emails: nextId('mf-invite-emails'), role: nextId('mf-invite-role') };\r\n protected readonly emails = signal<string[]>([]);\r\n protected readonly role = linkedSignal<R | null>(() => this.roles()[0]?.value ?? null);\r\n protected readonly submitted = signal(false);\r\n\r\n protected readonly invalid = computed(() => this.emails().filter((e) => !EMAIL.test(e.trim())));\r\n protected readonly error = computed(() => {\r\n if (!this.submitted()) return undefined;\r\n if (!this.emails().length) return this.labels().emailsRequired;\r\n const bad = this.invalid();\r\n return bad.length ? this.labels().invalidEmails.replace('{emails}', bad.join(', ')) : undefined;\r\n });\r\n\r\n protected submit(event: Event): void {\r\n event.preventDefault();\r\n this.submitted.set(true);\r\n const role = this.role();\r\n if (this.error() || role === null || this.loading()) return;\r\n this.invite.emit({ emails: this.emails().map((e) => e.trim()), role });\r\n }\r\n\r\n /** Başarılı gönderimden sonra formu boşaltır. */\r\n reset(): void {\r\n this.emails.set([]);\r\n this.submitted.set(false);\r\n }\r\n}\r\n","<form class=\"flex flex-col gap-4\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title-sm text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-3 @lg:flex-row @lg:items-start\">\r\n <mf-field\r\n class=\"min-w-0 flex-1\"\r\n [label]=\"labels().emails\"\r\n [for]=\"ids.emails\"\r\n [error]=\"error()\"\r\n [required]=\"true\"\r\n >\r\n <mf-tag-input\r\n [inputId]=\"ids.emails\"\r\n [(value)]=\"emails\"\r\n [placeholder]=\"labels().emailsPlaceholder\"\r\n [hasError]=\"!!error()\"\r\n [fullWidth]=\"true\"\r\n [unique]=\"true\"\r\n />\r\n </mf-field>\r\n <mf-field class=\"@lg:w-44\" [label]=\"labels().role\">\r\n <mf-select [ariaLabel]=\"labels().role\" [options]=\"roles()\" [(value)]=\"role\" />\r\n </mf-field>\r\n </div>\r\n\r\n <div class=\"flex justify-end\">\r\n <button mfButton type=\"submit\" iconStart=\"send\" [loading]=\"loading()\">\r\n {{ labels().submit }}\r\n </button>\r\n </div>\r\n</form>\r\n","import { Component, Directive, input } from '@angular/core';\r\nimport { nextId } from '@mesgflow/ui-kit/core';\r\n\r\n/** `mf-settings-section`'ın alt eylem şeridi — sönük zemin, sağa hizalı düğmeler. */\r\n@Directive({\r\n selector: '[mfSettingsActions]',\r\n host: {\r\n class:\r\n 'flex flex-wrap items-center justify-end gap-2 border-t border-hairline bg-surface-sunken px-5 py-3',\r\n },\r\n})\r\nexport class SettingsActions {}\r\n\r\n/**\r\n * `<mf-settings-section heading=\"Profil\" description=\"Herkese görünen bilgiler.\">\r\n * …alanlar…\r\n * <div mfSettingsActions><button mfButton>Kaydet</button></div>\r\n * </mf-settings-section>`\r\n *\r\n * Ayarlar sayfalarının iki sütunlu bölüm düzeni (Settings bloğundan): solda\r\n * başlık + açıklama, sağda kart içinde alanlar, altta isteğe bağlı eylem\r\n * şeridi. Dar kapsayıcıda tek sütuna iner (`@container`). Bölüm başlığıyla\r\n * adlandırılmış bir `<section>`; metnin tamamı tüketiciden gelir.\r\n */\r\n@Component({\r\n selector: 'mf-settings-section',\r\n exportAs: 'mfSettingsSection',\r\n host: { class: '@container block' },\r\n templateUrl: './settings-section.html',\r\n})\r\nexport class SettingsSection {\r\n readonly heading = input.required<string>();\r\n readonly description = input<string>();\r\n protected readonly headingId = nextId('mf-settings-heading');\r\n}\r\n","<section\r\n [attr.aria-labelledby]=\"headingId\"\r\n class=\"grid gap-4 @3xl:grid-cols-[16rem_1fr] @3xl:gap-10\"\r\n>\r\n <div>\r\n <h2 [id]=\"headingId\" class=\"font-display text-title-sm text-fg\">{{ heading() }}</h2>\r\n @if (description()) {\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() }}</p>\r\n }\r\n </div>\r\n <div class=\"overflow-hidden rounded-xl border border-hairline bg-surface\">\r\n <div class=\"flex flex-col gap-5 p-5 @md:p-6\"><ng-content /></div>\r\n <ng-content select=\"[mfSettingsActions]\" />\r\n </div>\r\n</section>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EMAIL"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mesgflow-ui-kit-blocks.mjs","sources":["../../../projects/ui-kit/blocks/auth-card.ts","../../../projects/ui-kit/blocks/auth-card.html","../../../projects/ui-kit/blocks/invite-members.ts","../../../projects/ui-kit/blocks/invite-members.html","../../../projects/ui-kit/blocks/settings-section.ts","../../../projects/ui-kit/blocks/settings-section.html","../../../projects/ui-kit/blocks/mesgflow-ui-kit-blocks.ts"],"sourcesContent":["import {\r\n Component,\r\n Directive,\r\n booleanAttribute,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { Alert } from '@mesgflow/ui-kit/alert';\r\nimport { Button } from '@mesgflow/ui-kit/button';\r\nimport { Checkbox } from '@mesgflow/ui-kit/checkbox';\r\nimport { MF_AUTH_CARD_LABELS, nextId } from '@mesgflow/ui-kit/core';\r\nimport { Divider } from '@mesgflow/ui-kit/divider';\r\nimport { Field } from '@mesgflow/ui-kit/field';\r\nimport { Input } from '@mesgflow/ui-kit/input';\r\nimport { PasswordInput } from '@mesgflow/ui-kit/password-input';\r\n\r\nexport interface AuthCredentials {\r\n email: string;\r\n password: string;\r\n remember: boolean;\r\n}\r\n\r\nconst EMAIL = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n\r\n/**\r\n * `<div mfAuthProviders>…GitHub/Google düğmeleri…</div>` — `mf-auth-card`\r\n * içinde e-posta formunun üstünde, ayırıcıyla birlikte gösterilir.\r\n */\r\n@Directive({ selector: '[mfAuthProviders]', host: { class: 'grid gap-2 @xs:grid-cols-2' } })\r\nexport class AuthProviders {}\r\n\r\n/**\r\n * `<mf-auth-card [loading]=\"busy()\" [error]=\"err()\" (signIn)=\"login($event)\" (forgotPassword)=\"…\" (signUp)=\"…\" />`\r\n *\r\n * Kullanıma hazır giriş kartı (Login bloğunun tüketilebilir hâli): başlık,\r\n * isteğe bağlı sosyal sağlayıcı slotu (`[mfAuthProviders]`), e-posta +\r\n * parola (göster/gizle), \"beni hatırla\", gönder ve kayıt bağlantısı.\r\n *\r\n * - Doğrulama yerleşik: boş/geçersiz e-posta ve boş parola alanın altında\r\n * (`mf-field`, `aria-invalid` + `aria-describedby`) gösterilir; `signIn`\r\n * yalnızca geçerli değerlerle yayılır.\r\n * - Sunucu hatası `error` girdisiyle üstte bir `role=\"alert\"` uyarısı olur.\r\n * - Tüm metinler `MfLabels.authCard` — `title`/`description` girdileri\r\n * yalnızca bu örnek için ezer.\r\n * - Kapsayıcı sorgusuyla (`@container`) dar yerlerde tek sütun.\r\n */\r\n@Component({\r\n selector: 'mf-auth-card',\r\n exportAs: 'mfAuthCard',\r\n imports: [Alert, Button, Checkbox, Divider, Field, Input, PasswordInput],\r\n host: { class: '@container block w-full max-w-sm' },\r\n templateUrl: './auth-card.html',\r\n})\r\nexport class AuthCard {\r\n readonly title = input<string>();\r\n readonly description = input<string>();\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n /** Sunucudan dönen hata metni — boşsa uyarı gösterilmez. */\r\n readonly error = input<string | null>(null);\r\n readonly showRemember = input(true, { transform: booleanAttribute });\r\n /** `false` ise \"parolamı unuttum\" bağlantısı gizlenir. */\r\n readonly showForgotPassword = input(true, { transform: booleanAttribute });\r\n /** `false` ise alttaki kayıt satırı gizlenir. */\r\n readonly showSignUp = input(true, { transform: booleanAttribute });\r\n\r\n readonly signIn = output<AuthCredentials>();\r\n readonly forgotPassword = output<void>();\r\n readonly signUp = output<void>();\r\n readonly errorDismissed = output<void>();\r\n\r\n protected readonly labels = inject(MF_AUTH_CARD_LABELS);\r\n protected readonly ids = { email: nextId('mf-auth-email'), password: nextId('mf-auth-password') };\r\n protected readonly providers = contentChild(AuthProviders);\r\n\r\n protected readonly email = signal('');\r\n protected readonly password = signal('');\r\n protected readonly remember = signal(true);\r\n protected readonly submitted = signal(false);\r\n\r\n protected readonly emailError = computed(() => {\r\n if (!this.submitted()) return undefined;\r\n const value = this.email().trim();\r\n if (!value) return this.labels().emailRequired;\r\n return EMAIL.test(value) ? undefined : this.labels().emailInvalid;\r\n });\r\n protected readonly passwordError = computed(() =>\r\n this.submitted() && !this.password() ? this.labels().passwordRequired : undefined,\r\n );\r\n\r\n protected submit(event: Event): void {\r\n event.preventDefault();\r\n this.submitted.set(true);\r\n if (this.emailError() || this.passwordError() || this.loading()) return;\r\n this.signIn.emit({\r\n email: this.email().trim(),\r\n password: this.password(),\r\n remember: this.showRemember() && this.remember(),\r\n });\r\n }\r\n}\r\n","<form class=\"flex flex-col gap-5\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n @if (error()) {\r\n <mf-alert\r\n tone=\"danger\"\r\n [title]=\"labels().errorTitle\"\r\n [dismissible]=\"true\"\r\n (dismissed)=\"errorDismissed.emit()\"\r\n >{{ error() }}</mf-alert\r\n >\r\n }\r\n\r\n @if (providers()) {\r\n <ng-content select=\"[mfAuthProviders]\" />\r\n <mf-divider [label]=\"labels().divider\" />\r\n }\r\n\r\n <mf-field [label]=\"labels().email\" [for]=\"ids.email\" [error]=\"emailError()\" [required]=\"true\">\r\n <input\r\n mfInput\r\n [id]=\"ids.email\"\r\n type=\"email\"\r\n autocomplete=\"email\"\r\n [placeholder]=\"labels().emailPlaceholder\"\r\n [value]=\"email()\"\r\n [hasError]=\"!!emailError()\"\r\n (input)=\"email.set($any($event.target).value)\"\r\n />\r\n </mf-field>\r\n\r\n <div class=\"flex flex-col gap-1.5\">\r\n <div class=\"flex items-center justify-between gap-3\">\r\n <label [for]=\"ids.password\" class=\"text-label text-fg-muted\">{{ labels().password }}</label>\r\n @if (showForgotPassword()) {\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"xs\" (click)=\"forgotPassword.emit()\">\r\n {{ labels().forgotPassword }}\r\n </button>\r\n }\r\n </div>\r\n <mf-password-input\r\n [inputId]=\"ids.password\"\r\n name=\"password\"\r\n autocomplete=\"current-password\"\r\n [required]=\"true\"\r\n [(value)]=\"password\"\r\n [fullWidth]=\"true\"\r\n [hasError]=\"!!passwordError()\"\r\n />\r\n @if (passwordError(); as message) {\r\n <p class=\"text-sm text-danger\" aria-live=\"polite\">{{ message }}</p>\r\n }\r\n </div>\r\n\r\n @if (showRemember()) {\r\n <label class=\"flex items-center gap-2 text-sm text-fg-muted\">\r\n <input\r\n type=\"checkbox\"\r\n mfCheckbox\r\n [checked]=\"remember()\"\r\n (change)=\"remember.set($any($event.target).checked)\"\r\n />\r\n {{ labels().remember }}\r\n </label>\r\n }\r\n\r\n <button mfButton type=\"submit\" size=\"lg\" [loading]=\"loading()\">{{ labels().submit }}</button>\r\n\r\n @if (showSignUp()) {\r\n <p class=\"text-center text-sm text-fg-muted\">\r\n {{ labels().noAccount }}\r\n <button mfButton type=\"button\" appearance=\"link\" size=\"sm\" (click)=\"signUp.emit()\">\r\n {{ labels().signUp }}\r\n </button>\r\n </p>\r\n }\r\n</form>\r\n","import {\r\n Component,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n linkedSignal,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { Button } from '@mesgflow/ui-kit/button';\r\nimport { MF_INVITE_MEMBERS_LABELS, nextId } from '@mesgflow/ui-kit/core';\r\nimport { Field } from '@mesgflow/ui-kit/field';\r\nimport { Select, type SelectOption } from '@mesgflow/ui-kit/select';\r\nimport { TagInput } from '@mesgflow/ui-kit/tag-input';\r\n\r\nexport interface MemberInvite<R = string> {\r\n emails: string[];\r\n role: R;\r\n}\r\n\r\nconst EMAIL = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n\r\n/**\r\n * `<mf-invite-members [roles]=\"roles\" [loading]=\"sending()\" (invite)=\"send($event)\" />`\r\n *\r\n * Ekip daveti formu (Invite bloğunun tüketilebilir hâli): etiketli e-posta\r\n * girişi (Enter/virgül ile birden çok adres), rol seçimi ve gönder. Geçersiz\r\n * adresler gönderimde listelenir; `invite` yalnızca geçerli adreslerle yayılır\r\n * ve başarılıysa tüketici `reset()` çağırabilir.\r\n *\r\n * Metinler `MfLabels.inviteMembers`; `roles` tüketicinin alanıdır (ör.\r\n * Yönetici/Düzenleyici/Görüntüleyici). Varsayılan rol listenin ilkidir.\r\n */\r\n@Component({\r\n selector: 'mf-invite-members',\r\n exportAs: 'mfInviteMembers',\r\n imports: [Button, Field, Select, TagInput],\r\n host: { class: '@container block' },\r\n templateUrl: './invite-members.html',\r\n})\r\nexport class InviteMembers<R = string> {\r\n readonly roles = input.required<SelectOption<R>[]>();\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n readonly title = input<string>();\r\n readonly description = input<string>();\r\n\r\n readonly invite = output<MemberInvite<R>>();\r\n\r\n protected readonly labels = inject(MF_INVITE_MEMBERS_LABELS);\r\n protected readonly ids = { emails: nextId('mf-invite-emails'), role: nextId('mf-invite-role') };\r\n protected readonly emails = signal<string[]>([]);\r\n protected readonly role = linkedSignal<R | null>(() => this.roles()[0]?.value ?? null);\r\n protected readonly submitted = signal(false);\r\n\r\n protected readonly invalid = computed(() => this.emails().filter((e) => !EMAIL.test(e.trim())));\r\n protected readonly error = computed(() => {\r\n if (!this.submitted()) return undefined;\r\n if (!this.emails().length) return this.labels().emailsRequired;\r\n const bad = this.invalid();\r\n return bad.length ? this.labels().invalidEmails.replace('{emails}', bad.join(', ')) : undefined;\r\n });\r\n\r\n protected submit(event: Event): void {\r\n event.preventDefault();\r\n this.submitted.set(true);\r\n const role = this.role();\r\n if (this.error() || role === null || this.loading()) return;\r\n this.invite.emit({ emails: this.emails().map((e) => e.trim()), role });\r\n }\r\n\r\n /** Başarılı gönderimden sonra formu boşaltır. */\r\n reset(): void {\r\n this.emails.set([]);\r\n this.submitted.set(false);\r\n }\r\n}\r\n","<form class=\"flex flex-col gap-4\" novalidate (submit)=\"submit($event)\">\r\n <div>\r\n <h2 class=\"font-display text-title-sm text-fg\">{{ title() ?? labels().title }}</h2>\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() ?? labels().description }}</p>\r\n </div>\r\n\r\n <div class=\"flex flex-col gap-3 @lg:flex-row @lg:items-start\">\r\n <mf-field\r\n class=\"min-w-0 flex-1\"\r\n [label]=\"labels().emails\"\r\n [for]=\"ids.emails\"\r\n [error]=\"error()\"\r\n [required]=\"true\"\r\n >\r\n <mf-tag-input\r\n [inputId]=\"ids.emails\"\r\n [(value)]=\"emails\"\r\n [placeholder]=\"labels().emailsPlaceholder\"\r\n [hasError]=\"!!error()\"\r\n [fullWidth]=\"true\"\r\n [unique]=\"true\"\r\n />\r\n </mf-field>\r\n <mf-field class=\"@lg:w-44\" [label]=\"labels().role\">\r\n <mf-select [ariaLabel]=\"labels().role\" [options]=\"roles()\" [(value)]=\"role\" />\r\n </mf-field>\r\n </div>\r\n\r\n <div class=\"flex justify-end\">\r\n <button mfButton type=\"submit\" iconStart=\"send\" [loading]=\"loading()\">\r\n {{ labels().submit }}\r\n </button>\r\n </div>\r\n</form>\r\n","import { Component, Directive, input } from '@angular/core';\r\nimport { nextId } from '@mesgflow/ui-kit/core';\r\n\r\n/** `mf-settings-section`'ın alt eylem şeridi — sönük zemin, sağa hizalı düğmeler. */\r\n@Directive({\r\n selector: '[mfSettingsActions]',\r\n host: {\r\n class:\r\n 'flex flex-wrap items-center justify-end gap-2 border-t border-hairline bg-surface-sunken px-5 py-3',\r\n },\r\n})\r\nexport class SettingsActions {}\r\n\r\n/**\r\n * `<mf-settings-section heading=\"Profil\" description=\"Herkese görünen bilgiler.\">\r\n * …alanlar…\r\n * <div mfSettingsActions><button mfButton>Kaydet</button></div>\r\n * </mf-settings-section>`\r\n *\r\n * Ayarlar sayfalarının iki sütunlu bölüm düzeni (Settings bloğundan): solda\r\n * başlık + açıklama, sağda kart içinde alanlar, altta isteğe bağlı eylem\r\n * şeridi. Dar kapsayıcıda tek sütuna iner (`@container`). Bölüm başlığıyla\r\n * adlandırılmış bir `<section>`; metnin tamamı tüketiciden gelir.\r\n */\r\n@Component({\r\n selector: 'mf-settings-section',\r\n exportAs: 'mfSettingsSection',\r\n host: { class: '@container block' },\r\n templateUrl: './settings-section.html',\r\n})\r\nexport class SettingsSection {\r\n readonly heading = input.required<string>();\r\n readonly description = input<string>();\r\n protected readonly headingId = nextId('mf-settings-heading');\r\n}\r\n","<section\r\n [attr.aria-labelledby]=\"headingId\"\r\n class=\"grid gap-4 @3xl:grid-cols-[16rem_1fr] @3xl:gap-10\"\r\n>\r\n <div>\r\n <h2 [id]=\"headingId\" class=\"font-display text-title-sm text-fg\">{{ heading() }}</h2>\r\n @if (description()) {\r\n <p class=\"mt-1 text-sm text-fg-muted\">{{ description() }}</p>\r\n }\r\n </div>\r\n <div class=\"overflow-hidden rounded-xl border border-hairline bg-surface\">\r\n <div class=\"flex flex-col gap-5 p-5 @md:p-6\"><ng-content /></div>\r\n <ng-content select=\"[mfSettingsActions]\" />\r\n </div>\r\n</section>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EMAIL"],"mappings":"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"}
|
|
@@ -62,10 +62,10 @@ class BoxInput extends ValueAccessorBase {
|
|
|
62
62
|
this.onChange(this.value());
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
65
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: BoxInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: BoxInput, isStandalone: true, selector: "mf-box-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "block" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BoxInput), multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"inline-flex items-end gap-1.5\">\r\n @for (side of sides; track side) {\r\n <div class=\"flex flex-col items-center gap-1\">\r\n <span class=\"text-xs text-fg-subtle\">{{ sideLabels()[side] }}</span>\r\n <mf-number-input\r\n class=\"w-20\"\r\n [value]=\"sideValue(side)\"\r\n (valueChange)=\"setSide(side, $event)\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [unit]=\"unit()\"\r\n [ariaLabel]=\"sideLabels()[side]\"\r\n [disabled]=\"disabled()\"\r\n />\r\n </div>\r\n }\r\n <button\r\n type=\"button\"\r\n class=\"mb-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-border bg-surface text-fg-subtle transition-colors duration-fast ease-emphasis hover:bg-state-hover focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring disabled:pointer-events-none disabled:opacity-50\"\r\n [class.text-accent]=\"linked()\"\r\n [class.border-accent]=\"linked()\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"toggleLinked()\"\r\n [attr.aria-pressed]=\"linked()\"\r\n [attr.title]=\"linkToggleTitle()\"\r\n >\r\n <span mfIcon [size]=\"16\">{{ linked() ? 'link' : 'link_off' }}</span>\r\n </button>\r\n</div>\r\n", dependencies: [{ kind: "component", type: NumberInput, selector: "mf-number-input", inputs: ["value", "min", "max", "step", "unit", "disabled", "hasError", "inputId", "ariaLabel"], outputs: ["valueChange"], exportAs: ["mfNumberInput"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }] });
|
|
67
67
|
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: BoxInput, decorators: [{
|
|
69
69
|
type: Component,
|
|
70
70
|
args: [{ selector: 'mf-box-input', imports: [NumberInput, Icon], host: { class: 'block' }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BoxInput), multi: true }], template: "<div class=\"inline-flex items-end gap-1.5\">\r\n @for (side of sides; track side) {\r\n <div class=\"flex flex-col items-center gap-1\">\r\n <span class=\"text-xs text-fg-subtle\">{{ sideLabels()[side] }}</span>\r\n <mf-number-input\r\n class=\"w-20\"\r\n [value]=\"sideValue(side)\"\r\n (valueChange)=\"setSide(side, $event)\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [unit]=\"unit()\"\r\n [ariaLabel]=\"sideLabels()[side]\"\r\n [disabled]=\"disabled()\"\r\n />\r\n </div>\r\n }\r\n <button\r\n type=\"button\"\r\n class=\"mb-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-border bg-surface text-fg-subtle transition-colors duration-fast ease-emphasis hover:bg-state-hover focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring disabled:pointer-events-none disabled:opacity-50\"\r\n [class.text-accent]=\"linked()\"\r\n [class.border-accent]=\"linked()\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"toggleLinked()\"\r\n [attr.aria-pressed]=\"linked()\"\r\n [attr.title]=\"linkToggleTitle()\"\r\n >\r\n <span mfIcon [size]=\"16\">{{ linked() ? 'link' : 'link_off' }}</span>\r\n </button>\r\n</div>\r\n" }]
|
|
71
71
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], unit: [{ type: i0.Input, args: [{ isSignal: true, alias: "unit", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
@@ -47,8 +47,8 @@ class Brand {
|
|
|
47
47
|
...(ngDevMode ? [{ debugName: "labelTone" }] : /* istanbul ignore next */ []));
|
|
48
48
|
mark = computed(() => this.name().trim().slice(0, 1).toUpperCase() || '?', /* @ts-ignore */
|
|
49
49
|
...(ngDevMode ? [{ debugName: "mark" }] : /* istanbul ignore next */ []));
|
|
50
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
51
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
50
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Brand, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Brand, isStandalone: true, selector: "mf-brand", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, showLabel: { classPropertyName: "showLabel", publicName: "showLabel", isSignal: true, isRequired: false, transformFunction: null }, labelTone: { classPropertyName: "labelTone", publicName: "labelTone", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
52
52
|
<span class="inline-flex items-center gap-2">
|
|
53
53
|
<span
|
|
54
54
|
[class]="
|
|
@@ -77,7 +77,7 @@ class Brand {
|
|
|
77
77
|
</span>
|
|
78
78
|
`, isInline: true });
|
|
79
79
|
}
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Brand, decorators: [{
|
|
81
81
|
type: Component,
|
|
82
82
|
args: [{
|
|
83
83
|
selector: 'mf-brand',
|
|
@@ -21,8 +21,8 @@ class Breadcrumb {
|
|
|
21
21
|
injectedLabels = inject(MF_BREADCRUMB_LABELS);
|
|
22
22
|
effectiveAriaLabel = computed(() => this.ariaLabel() ?? this.injectedLabels().ariaLabel, /* @ts-ignore */
|
|
23
23
|
...(ngDevMode ? [{ debugName: "effectiveAriaLabel" }] : /* istanbul ignore next */ []));
|
|
24
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
25
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Breadcrumb, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Breadcrumb, isStandalone: true, selector: "mf-breadcrumb", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "navigation" }, properties: { "attr.aria-label": "effectiveAriaLabel()" } }, exportAs: ["mfBreadcrumb"], ngImport: i0, template: `
|
|
26
26
|
<ol class="flex flex-wrap items-center gap-1.5 text-sm text-fg-muted">
|
|
27
27
|
@for (item of items(); track item.label; let last = $last) {
|
|
28
28
|
<li class="flex items-center gap-1.5">
|
|
@@ -43,7 +43,7 @@ class Breadcrumb {
|
|
|
43
43
|
</ol>
|
|
44
44
|
`, isInline: true, dependencies: [{ kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "directive", type: Link, selector: "a[mfLink]", inputs: ["tone", "underline"] }] });
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Breadcrumb, decorators: [{
|
|
47
47
|
type: Component,
|
|
48
48
|
args: [{
|
|
49
49
|
selector: 'mf-breadcrumb',
|
|
@@ -12,10 +12,10 @@ import { input, Component } from '@angular/core';
|
|
|
12
12
|
class ButtonGroup {
|
|
13
13
|
ariaLabel = input('', /* @ts-ignore */
|
|
14
14
|
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
15
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
16
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.
|
|
15
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: ButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: ButtonGroup, isStandalone: true, selector: "mf-button-group", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group" }, properties: { "attr.aria-label": "ariaLabel() || null" }, classAttribute: "inline-flex [&>*]:rounded-none [&>*:first-child]:rounded-s-md [&>*:last-child]:rounded-e-md [&>*:not(:first-child)]:-ms-px [&>*:focus-visible]:z-10 [&>*:hover]:z-10" }, exportAs: ["mfButtonGroup"], ngImport: i0, template: '<ng-content />', isInline: true });
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: ButtonGroup, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
20
|
args: [{
|
|
21
21
|
selector: 'mf-button-group',
|