@mesgflow/ui-kit 0.6.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/LICENSE +21 -0
- package/README.md +200 -0
- package/fesm2022/mesgflow-ui-kit-accordion.mjs +75 -0
- package/fesm2022/mesgflow-ui-kit-accordion.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-alert.mjs +165 -0
- package/fesm2022/mesgflow-ui-kit-alert.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-avatar-group.mjs +88 -0
- package/fesm2022/mesgflow-ui-kit-avatar-group.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-avatar.mjs +123 -0
- package/fesm2022/mesgflow-ui-kit-avatar.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-badge.mjs +68 -0
- package/fesm2022/mesgflow-ui-kit-badge.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-banner.mjs +111 -0
- package/fesm2022/mesgflow-ui-kit-banner.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-box-input.mjs +78 -0
- package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-brand.mjs +120 -0
- package/fesm2022/mesgflow-ui-kit-brand.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs +84 -0
- package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-button-group.mjs +37 -0
- package/fesm2022/mesgflow-ui-kit-button-group.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-button.mjs +359 -0
- package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-card.mjs +128 -0
- package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-chart.mjs +538 -0
- package/fesm2022/mesgflow-ui-kit-chart.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs +45 -0
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-chip.mjs +123 -0
- package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-code-block.mjs +71 -0
- package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-collapsible.mjs +89 -0
- package/fesm2022/mesgflow-ui-kit-collapsible.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs +210 -0
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-combobox.mjs +181 -0
- package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-command.mjs +491 -0
- package/fesm2022/mesgflow-ui-kit-command.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs +92 -0
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-copy-button.mjs +167 -0
- package/fesm2022/mesgflow-ui-kit-copy-button.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-core.mjs +624 -0
- package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs +643 -0
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-description-list.mjs +76 -0
- package/fesm2022/mesgflow-ui-kit-description-list.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-dialog.mjs +700 -0
- package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-divider.mjs +62 -0
- package/fesm2022/mesgflow-ui-kit-divider.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs +126 -0
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-empty-state.mjs +70 -0
- package/fesm2022/mesgflow-ui-kit-empty-state.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-field.mjs +42 -0
- package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-hover-card.mjs +171 -0
- package/fesm2022/mesgflow-ui-kit-hover-card.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +258 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-icon.mjs +174 -0
- package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-input.mjs +448 -0
- package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-kbd.mjs +24 -0
- package/fesm2022/mesgflow-ui-kit-kbd.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-link.mjs +48 -0
- package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-menu.mjs +105 -0
- package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-number-input.mjs +153 -0
- package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-otp-input.mjs +164 -0
- package/fesm2022/mesgflow-ui-kit-otp-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-page-header.mjs +83 -0
- package/fesm2022/mesgflow-ui-kit-page-header.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-pagination.mjs +99 -0
- package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-password-input.mjs +120 -0
- package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-popover.mjs +213 -0
- package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-progress.mjs +82 -0
- package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-radio.mjs +123 -0
- package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-rating.mjs +116 -0
- package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +84 -0
- package/fesm2022/mesgflow-ui-kit-scroll-area.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-search-input.mjs +154 -0
- package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +95 -0
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-select.mjs +227 -0
- package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs +449 -0
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs +74 -0
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-slider.mjs +179 -0
- package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-spinner.mjs +67 -0
- package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-splitter.mjs +97 -0
- package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +98 -0
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-stepper.mjs +133 -0
- package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-switch.mjs +73 -0
- package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-table.mjs +1783 -0
- package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tabs.mjs +569 -0
- package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs +138 -0
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +53 -0
- package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-theming.mjs +1016 -0
- package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs +138 -0
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-timeline.mjs +91 -0
- package/fesm2022/mesgflow-ui-kit-timeline.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-toast.mjs +202 -0
- package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-toggle.mjs +243 -0
- package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs +99 -0
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs +160 -0
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tour.mjs +272 -0
- package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tree-select.mjs +177 -0
- package/fesm2022/mesgflow-ui-kit-tree-select.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tree.mjs +82 -0
- package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit.mjs +12851 -0
- package/fesm2022/mesgflow-ui-kit.mjs.map +1 -0
- package/package.json +374 -0
- package/preset.css +20 -0
- package/tokens/color.css +693 -0
- package/tokens/contrast.css +68 -0
- package/tokens/elevation.css +68 -0
- package/tokens/motion.css +277 -0
- package/tokens/radius.css +69 -0
- package/tokens/typography.css +127 -0
- package/tokens.css +41 -0
- package/types/mesgflow-ui-kit-accordion.d.ts +42 -0
- package/types/mesgflow-ui-kit-alert.d.ts +60 -0
- package/types/mesgflow-ui-kit-avatar-group.d.ts +28 -0
- package/types/mesgflow-ui-kit-avatar.d.ts +23 -0
- package/types/mesgflow-ui-kit-badge.d.ts +39 -0
- package/types/mesgflow-ui-kit-banner.d.ts +42 -0
- package/types/mesgflow-ui-kit-box-input.d.ts +45 -0
- package/types/mesgflow-ui-kit-brand.d.ts +48 -0
- package/types/mesgflow-ui-kit-breadcrumb.d.ts +26 -0
- package/types/mesgflow-ui-kit-button-group.d.ts +17 -0
- package/types/mesgflow-ui-kit-button.d.ts +75 -0
- package/types/mesgflow-ui-kit-card.d.ts +71 -0
- package/types/mesgflow-ui-kit-chart.d.ts +242 -0
- package/types/mesgflow-ui-kit-checkbox.d.ts +17 -0
- package/types/mesgflow-ui-kit-chip.d.ts +46 -0
- package/types/mesgflow-ui-kit-code-block.d.ts +56 -0
- package/types/mesgflow-ui-kit-collapsible.d.ts +39 -0
- package/types/mesgflow-ui-kit-color-picker.d.ts +78 -0
- package/types/mesgflow-ui-kit-combobox.d.ts +74 -0
- package/types/mesgflow-ui-kit-command.d.ts +185 -0
- package/types/mesgflow-ui-kit-context-menu.d.ts +40 -0
- package/types/mesgflow-ui-kit-copy-button.d.ts +47 -0
- package/types/mesgflow-ui-kit-core.d.ts +508 -0
- package/types/mesgflow-ui-kit-date-picker.d.ts +215 -0
- package/types/mesgflow-ui-kit-description-list.d.ts +23 -0
- package/types/mesgflow-ui-kit-dialog.d.ts +342 -0
- package/types/mesgflow-ui-kit-divider.d.ts +23 -0
- package/types/mesgflow-ui-kit-dropzone.d.ts +47 -0
- package/types/mesgflow-ui-kit-empty-state.d.ts +18 -0
- package/types/mesgflow-ui-kit-field.d.ts +26 -0
- package/types/mesgflow-ui-kit-hover-card.d.ts +52 -0
- package/types/mesgflow-ui-kit-i18n-tr.d.ts +14 -0
- package/types/mesgflow-ui-kit-icon.d.ts +76 -0
- package/types/mesgflow-ui-kit-input.d.ts +186 -0
- package/types/mesgflow-ui-kit-kbd.d.ts +9 -0
- package/types/mesgflow-ui-kit-link.d.ts +20 -0
- package/types/mesgflow-ui-kit-menu.d.ts +53 -0
- package/types/mesgflow-ui-kit-number-input.d.ts +55 -0
- package/types/mesgflow-ui-kit-otp-input.d.ts +44 -0
- package/types/mesgflow-ui-kit-page-header.d.ts +31 -0
- package/types/mesgflow-ui-kit-pagination.d.ts +50 -0
- package/types/mesgflow-ui-kit-password-input.d.ts +33 -0
- package/types/mesgflow-ui-kit-popover.d.ts +62 -0
- package/types/mesgflow-ui-kit-progress.d.ts +32 -0
- package/types/mesgflow-ui-kit-radio.d.ts +59 -0
- package/types/mesgflow-ui-kit-rating.d.ts +56 -0
- package/types/mesgflow-ui-kit-scroll-area.d.ts +27 -0
- package/types/mesgflow-ui-kit-search-input.d.ts +72 -0
- package/types/mesgflow-ui-kit-segmented-control.d.ts +54 -0
- package/types/mesgflow-ui-kit-select.d.ts +89 -0
- package/types/mesgflow-ui-kit-sidebar.d.ts +224 -0
- package/types/mesgflow-ui-kit-skeleton.d.ts +29 -0
- package/types/mesgflow-ui-kit-slider.d.ts +40 -0
- package/types/mesgflow-ui-kit-spinner.d.ts +31 -0
- package/types/mesgflow-ui-kit-splitter.d.ts +40 -0
- package/types/mesgflow-ui-kit-stat-tile.d.ts +54 -0
- package/types/mesgflow-ui-kit-stepper.d.ts +48 -0
- package/types/mesgflow-ui-kit-switch.d.ts +34 -0
- package/types/mesgflow-ui-kit-table.d.ts +805 -0
- package/types/mesgflow-ui-kit-tabs.d.ts +269 -0
- package/types/mesgflow-ui-kit-tag-input.d.ts +33 -0
- package/types/mesgflow-ui-kit-theme-switcher.d.ts +27 -0
- package/types/mesgflow-ui-kit-theming.d.ts +745 -0
- package/types/mesgflow-ui-kit-time-picker.d.ts +54 -0
- package/types/mesgflow-ui-kit-timeline.d.ts +27 -0
- package/types/mesgflow-ui-kit-toast.d.ts +94 -0
- package/types/mesgflow-ui-kit-toggle.d.ts +110 -0
- package/types/mesgflow-ui-kit-toolbar.d.ts +52 -0
- package/types/mesgflow-ui-kit-tooltip.d.ts +55 -0
- package/types/mesgflow-ui-kit-tour.d.ts +66 -0
- package/types/mesgflow-ui-kit-tree-select.d.ts +65 -0
- package/types/mesgflow-ui-kit-tree.d.ts +44 -0
- package/types/mesgflow-ui-kit.d.ts +5444 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import * as i1 from '@angular/aria/accordion';
|
|
3
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* `<mf-accordion multiExpandable><mf-accordion-item summary="...">...</mf-accordion-item></mf-accordion>`
|
|
7
|
+
*
|
|
8
|
+
* Salt bir kapsayıcı — ARIA/klavye/genişletme-modu mantığı `@angular/aria/accordion`'ın
|
|
9
|
+
* `AccordionGroup` pattern'inden `hostDirectives` ile ödünç alınıyor (bkz.
|
|
10
|
+
* `tabs.ts`'teki AYNI desen). `multiExpandable`/`disabled` girdileri
|
|
11
|
+
* `hostDirectives`'in `inputs` listesiyle dışarı açıldı.
|
|
12
|
+
*/
|
|
13
|
+
declare class Accordion {
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Accordion, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<Accordion, "mf-accordion", ["mfAccordion"], {}, {}, never, ["*"], true, [{ directive: typeof i1.AccordionGroup; inputs: { "multiExpandable": "multiExpandable"; "disabled": "disabled"; }; outputs: {}; }]>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* `<mf-accordion-item summary="Genel">İçerik…</mf-accordion-item>` —
|
|
20
|
+
* `mf-accordion` içine konur. `ngAccordionTrigger`/`ngAccordionPanel`/
|
|
21
|
+
* `ngAccordionContent` (`@angular/aria/accordion`) doğrudan bu component'in
|
|
22
|
+
* KENDİ template'inde kullanılıyor (`hostDirectives` DEĞİL — `Tab`'ın aksine
|
|
23
|
+
* trigger butonu ve panel div'i İKİ AYRI DOM elemanı, tek host'a sığmıyor;
|
|
24
|
+
* bkz. `Select`'in `cdkOverlayOrigin`/`cdkConnectedOverlay`'i kendi
|
|
25
|
+
* template'inde birleştirme deseniyle AYNI gerekçe).
|
|
26
|
+
*
|
|
27
|
+
* İçerik `ngAccordionContent` sayesinde LAZY — panel ilk açılana kadar hiç
|
|
28
|
+
* oluşturulmaz.
|
|
29
|
+
*/
|
|
30
|
+
declare class AccordionItem {
|
|
31
|
+
readonly summary: i0.InputSignal<string>;
|
|
32
|
+
readonly disabled: i0.InputSignal<boolean>;
|
|
33
|
+
protected readonly triggerClasses: i0.Signal<string>;
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AccordionItem, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AccordionItem, "mf-accordion-item", never, { "summary": { "alias": "summary"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
declare const accordionTriggerVariants: (props?: ({
|
|
39
|
+
disabled?: boolean | null | undefined;
|
|
40
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
41
|
+
|
|
42
|
+
export { Accordion, AccordionItem, accordionTriggerVariants };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { MfTone } from '@mesgflow/ui-kit/core';
|
|
3
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
4
|
+
import { VariantProps } from 'class-variance-authority';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* `<mf-alert tone="danger" title="Kayıt başarısız">Ağ bağlantısı koptu.</mf-alert>`
|
|
8
|
+
*
|
|
9
|
+
* İçerik (gövde metni) `<ng-content />` ile projekte edilir. İkon ayrı bir
|
|
10
|
+
* content-projection SLOT'u DEĞİL — `icon` girdisi (bkz. `ConfirmDialog`'un
|
|
11
|
+
* aynı deseni, `dialog/confirm-dialog.ts`): tone'a göre makul bir varsayılanı
|
|
12
|
+
* var, tüketici farklı bir Material Symbol adı geçebilir ya da `icon=""` ile
|
|
13
|
+
* tamamen kapatabilir. Gerçek content-slot algılaması (`@ContentChild` +
|
|
14
|
+
* "sağlandı mı" kontrolü) bu basit vakada gereksiz karmaşıklık.
|
|
15
|
+
*
|
|
16
|
+
* `role`: `danger`/`warning` kullanıcının DİKKATİNİ kesmesi gereken durumlar
|
|
17
|
+
* — `role="alert"` (assertive, ekran okuyucu anında keser). Diğer tonlar
|
|
18
|
+
* `role="status"` (polite, mevcut anonsu beklemeden araya girmez).
|
|
19
|
+
*/
|
|
20
|
+
declare class Alert {
|
|
21
|
+
readonly tone: _angular_core.InputSignal<MfTone>;
|
|
22
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
23
|
+
/** `null` (varsayılan) → `tone`'a göre otomatik ikon. Boş string (`''`) → ikon YOK. Başka bir Material Symbol adı → onu kullan. */
|
|
24
|
+
readonly icon: _angular_core.InputSignal<string | null>;
|
|
25
|
+
readonly dismissible: _angular_core.InputSignal<boolean>;
|
|
26
|
+
readonly dismissLabel: _angular_core.InputSignal<string | undefined>;
|
|
27
|
+
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
28
|
+
private readonly injectedLabels;
|
|
29
|
+
protected readonly effectiveDismissLabel: _angular_core.Signal<string>;
|
|
30
|
+
protected readonly containerClasses: _angular_core.Signal<string>;
|
|
31
|
+
protected readonly role: _angular_core.Signal<"alert" | "status">;
|
|
32
|
+
protected readonly iconName: _angular_core.Signal<string>;
|
|
33
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Alert, never>;
|
|
34
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Alert, "mf-alert", ["mfAlert"], { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissLabel": { "alias": "dismissLabel"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*"], true, never>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Badge/Chip/Avatar/StatTile ile AYNI "tonal işaret" dili (bkz.
|
|
39
|
+
* badge.variants.ts'teki gerekçe) — rol token'ı `bg-X-tint text-X-tint-fg`
|
|
40
|
+
* (`color-mix()` ile rampanın kendi basamağının %12 alfası; light çapa 600,
|
|
41
|
+
* dark çapa 400 — "Deep Emerald & Slate v2" spec'inin "Soft Tinting"
|
|
42
|
+
* tekniği). Alert her türlü zeminin üstüne (kart, sayfa, panel) oturabiliyor
|
|
43
|
+
* — `color-mix` sayesinde her zeminde AYRI ayrı doğru karışıyor, eski "düz
|
|
44
|
+
* basamak çifti" (`bg-X-50 dark:bg-X-900`) döneminde zeminden bağımsız
|
|
45
|
+
* garantili kontrast İÇİN gerekliydi, artık `check:contrast` dört yüzeyde
|
|
46
|
+
* (surface/canvas/overlay/surface-alt) `color-mix` sonucunu doğruluyor.
|
|
47
|
+
*
|
|
48
|
+
* Kenarlık `border-X/30` — Button'ın `outlined` görünümüyle AYNI dil (renkli-
|
|
49
|
+
* şeffaf çizgi, düz gri DEĞİL); primary `border-accent/30` kullanır (kendi
|
|
50
|
+
* `X-tint` token'ı yok, `accent`/`primary-tint` çifti aynı işi görür). Geniş
|
|
51
|
+
* bir banner için sadece dolgu yetersiz kalıyordu (kenar tanımı olmadan
|
|
52
|
+
* sayfa zeminiyle karışıyordu, `Badge`'in küçük pilinde bu sorun yoktu).
|
|
53
|
+
*/
|
|
54
|
+
declare const alertVariants: (props?: ({
|
|
55
|
+
tone?: "neutral" | "primary" | "success" | "warning" | "danger" | "info" | "help" | null | undefined;
|
|
56
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
57
|
+
type AlertTone = VariantProps<typeof alertVariants>['tone'];
|
|
58
|
+
|
|
59
|
+
export { Alert, alertVariants };
|
|
60
|
+
export type { AlertTone };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
interface AvatarGroupItem {
|
|
4
|
+
name: string;
|
|
5
|
+
src?: string | null;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* `<mf-avatar-group [items]="teamMembers" [max]="5" />` — üst üste binen
|
|
9
|
+
* (`-space-x-2` + `ring-2 ring-surface` her avatarı komşusundan ayırır)
|
|
10
|
+
* bir avatar yığını. `max`'ı aşan üyeler tek bir "+N" göstergesine
|
|
11
|
+
* TOPLANIR (tıklanabilir değil — sadece özet; tam listeyi göstermek
|
|
12
|
+
* çağıranın kendi tooltip/popover'ına bırakılır).
|
|
13
|
+
*/
|
|
14
|
+
declare class AvatarGroup {
|
|
15
|
+
readonly items: _angular_core.InputSignal<AvatarGroupItem[]>;
|
|
16
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
17
|
+
readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
|
|
18
|
+
private readonly avatarGroupLabels;
|
|
19
|
+
protected readonly effectiveOverflowLabel: _angular_core.Signal<string>;
|
|
20
|
+
protected readonly visible: _angular_core.Signal<AvatarGroupItem[]>;
|
|
21
|
+
protected readonly overflowCount: _angular_core.Signal<number>;
|
|
22
|
+
protected readonly overflowClasses: _angular_core.Signal<string>;
|
|
23
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarGroup, never>;
|
|
24
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarGroup, "mf-avatar-group", ["mfAvatarGroup"], { "items": { "alias": "items"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { AvatarGroup };
|
|
28
|
+
export type { AvatarGroupItem };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { MfTone } from '@mesgflow/ui-kit/core';
|
|
3
|
+
|
|
4
|
+
type AvatarTone = MfTone;
|
|
5
|
+
declare class Avatar {
|
|
6
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
7
|
+
readonly src: _angular_core.InputSignal<string | null>;
|
|
8
|
+
readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
|
|
9
|
+
readonly shape: _angular_core.InputSignal<"round" | "square">;
|
|
10
|
+
/** Her isim için sabit, farklı bir renk (ör. tenant switcher listesi) — `tone` verilmişse yoksayılır. */
|
|
11
|
+
readonly colorful: _angular_core.InputSignal<boolean>;
|
|
12
|
+
/** İsimden bağımsız, hep AYNI sabit renk (ör. tek bir kullanıcının kendi profili) — `colorful`'dan öncelikli. */
|
|
13
|
+
readonly tone: _angular_core.InputSignal<MfTone | null>;
|
|
14
|
+
protected readonly shapeClasses: _angular_core.Signal<"rounded-md" | "rounded-full">;
|
|
15
|
+
protected readonly colorClasses: _angular_core.Signal<string>;
|
|
16
|
+
protected readonly initials: _angular_core.Signal<string>;
|
|
17
|
+
protected readonly sizeClasses: _angular_core.Signal<string>;
|
|
18
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Avatar, never>;
|
|
19
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Avatar, "mf-avatar", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "colorful": { "alias": "colorful"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { Avatar };
|
|
23
|
+
export type { AvatarTone };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
/** `<span mfBadge tone="success">Aktif</span>` */
|
|
6
|
+
declare class Badge {
|
|
7
|
+
readonly tone: _angular_core.InputSignal<"neutral" | "primary" | "success" | "warning" | "danger" | "info" | "help" | null | undefined>;
|
|
8
|
+
readonly size: _angular_core.InputSignal<"sm" | "md" | null | undefined>;
|
|
9
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
10
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Badge, never>;
|
|
11
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Badge, "span[mfBadge]", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Kullanıcının beğendiği bir Artifact'teki `.pill` deseni birebir uyarlandı:
|
|
16
|
+
* mono + büyük harf + geniş harf aralığı + `currentColor` nokta göstergesi
|
|
17
|
+
* (`before:`). Bu bileşenin kendisi bu tazelemenin imza motiflerinden biri
|
|
18
|
+
* ("mono mikro-etiket") — `text-eyebrow` token'ı (tokens/typography.css)
|
|
19
|
+
* TAM OLARAK bu dili konuşmak için var (kalın ağırlık + geniş tracking bir
|
|
20
|
+
* arada); font-weight/letter-spacing'i elle tekrar YAZMAK yerine doğrudan
|
|
21
|
+
* o token kullanılıyor (bkz. plan Faz 1d — sm/md artık FONT BOYUTUNDA değil,
|
|
22
|
+
* sadece dolguda ayrışıyor, ikisi de aynı mikro-etiket ölçeğini paylaşıyor).
|
|
23
|
+
*
|
|
24
|
+
* Renkli tonlar rol token'ı `bg-X-tint text-X-tint-fg` kullanır — spec'in
|
|
25
|
+
* "Soft Tinting" tekniği: `color-mix()` ile rampanın kendi basamağının %12
|
|
26
|
+
* alfası (light çapa 600, dark çapa 400), metin rampanın 800/400 basamağı.
|
|
27
|
+
* Rozet her türlü zeminin (kart, tablo satırı, toolbar) üstüne oturabiliyor —
|
|
28
|
+
* `color-mix` her zeminde AYRI karışıp `check:contrast`'ta dört yüzeyde de
|
|
29
|
+
* doğrulanıyor (bkz. projects/ui-kit/README.md "Token mimarisi").
|
|
30
|
+
*/
|
|
31
|
+
declare const badgeVariants: (props?: ({
|
|
32
|
+
tone?: "neutral" | "primary" | "success" | "warning" | "danger" | "info" | "help" | null | undefined;
|
|
33
|
+
size?: "sm" | "md" | null | undefined;
|
|
34
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
35
|
+
type BadgeTone = VariantProps<typeof badgeVariants>['tone'];
|
|
36
|
+
type BadgeSize = VariantProps<typeof badgeVariants>['size'];
|
|
37
|
+
|
|
38
|
+
export { Badge, badgeVariants };
|
|
39
|
+
export type { BadgeSize, BadgeTone };
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
type BannerAppearance = 'tint' | 'fill';
|
|
6
|
+
/**
|
|
7
|
+
* `<mf-banner tone="primary" appearance="fill" icon="campaign" dismissible dismissKey="v0.5">
|
|
8
|
+
* Yeni sürüm yayında. <a href="/changelog">Neler değişti?</a>
|
|
9
|
+
* <button mfButton size="sm" action>Güncelle</button>
|
|
10
|
+
* </mf-banner>`
|
|
11
|
+
*
|
|
12
|
+
* Sayfanın/bölümün üst kenarında tam genişlik duyuru şeridi — `Alert`'ten farkı: kart değil
|
|
13
|
+
* kenardan kenara şerit, alt kenarlık; `fill` görünümü marka/durum rengiyle dolu. İçerideki
|
|
14
|
+
* bağlantılar metin rengini devralır ve altı çizilir (dolu zeminde `mfLink`'in marka rengi
|
|
15
|
+
* kontrastı bozardı). Eylem düğmesi `[action]` slotuna.
|
|
16
|
+
*
|
|
17
|
+
* `dismissKey` verilirse kapatma bu tarayıcıda hatırlanır (`localStorage`) — duyuru bir daha
|
|
18
|
+
* gösterilmez; depolama erişilemezse (gizli pencere) sessizce yalnızca oturumluk kapanır.
|
|
19
|
+
* Varsayılan olarak `role` YOK (statik duyuru); sonradan beliren, duyurulması gereken bir
|
|
20
|
+
* şerit için `announce` → `role="status"`.
|
|
21
|
+
*/
|
|
22
|
+
declare class Banner {
|
|
23
|
+
readonly tone: _angular_core.InputSignal<MfTone>;
|
|
24
|
+
readonly appearance: _angular_core.InputSignal<BannerAppearance>;
|
|
25
|
+
readonly icon: _angular_core.InputSignal<string | null>;
|
|
26
|
+
readonly align: _angular_core.InputSignal<"start" | "center">;
|
|
27
|
+
readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
28
|
+
/** Kalıcı kapatma anahtarı — değiştirmek (ör. sürüm) duyuruyu yeniden gösterir. */
|
|
29
|
+
readonly dismissKey: _angular_core.InputSignal<string | undefined>;
|
|
30
|
+
readonly announce: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
31
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
32
|
+
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
33
|
+
protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfAlertLabels>;
|
|
34
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
35
|
+
constructor();
|
|
36
|
+
protected dismiss(): void;
|
|
37
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Banner, never>;
|
|
38
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Banner, "mf-banner", ["mfBanner"], { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissKey": { "alias": "dismissKey"; "required": false; "isSignal": true; }; "announce": { "alias": "announce"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "dismissed": "dismissed"; }, never, ["*", "[action]"], true, never>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { Banner };
|
|
42
|
+
export type { BannerAppearance };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
+
import { ValueAccessorBase } from '@mesgflow/ui-kit/core';
|
|
4
|
+
|
|
5
|
+
interface BoxValue {
|
|
6
|
+
top: number;
|
|
7
|
+
right: number;
|
|
8
|
+
bottom: number;
|
|
9
|
+
left: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* `<mf-box-input [(value)]="padding" unit="px" />` — 4 kenar (padding/
|
|
13
|
+
* margin/border) kutu-model girdisi. Bağlantılı mod (varsayılan AÇIK): tek
|
|
14
|
+
* input değiştirmek dördünü BİRDEN değiştirir — zincir ikonuna tıklayınca
|
|
15
|
+
* kenarlar bağımsızlaşır (kenarı ayırırken mevcut `top` değeri dördüne
|
|
16
|
+
* BASILMAZ — sadece tekrar bağlarken senkronlanır). `NumberInput` üstüne
|
|
17
|
+
* kompoze edilmiş bir COMPONENT (gerçek iç yapı — bkz. README "Directive mi,
|
|
18
|
+
* component mi?").
|
|
19
|
+
*/
|
|
20
|
+
declare class BoxInput extends ValueAccessorBase<BoxValue> implements ControlValueAccessor {
|
|
21
|
+
readonly value: _angular_core.ModelSignal<BoxValue>;
|
|
22
|
+
readonly unit: _angular_core.InputSignal<string>;
|
|
23
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
24
|
+
readonly max: _angular_core.InputSignal<number | null>;
|
|
25
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
26
|
+
protected readonly linked: _angular_core.WritableSignal<boolean>;
|
|
27
|
+
protected readonly sides: (keyof BoxValue)[];
|
|
28
|
+
private readonly boxInputLabels;
|
|
29
|
+
protected readonly sideLabels: _angular_core.Signal<{
|
|
30
|
+
top: string;
|
|
31
|
+
right: string;
|
|
32
|
+
bottom: string;
|
|
33
|
+
left: string;
|
|
34
|
+
}>;
|
|
35
|
+
protected readonly linkToggleTitle: _angular_core.Signal<string>;
|
|
36
|
+
writeValue(value: BoxValue): void;
|
|
37
|
+
protected sideValue(side: keyof BoxValue): number;
|
|
38
|
+
protected setSide(side: keyof BoxValue, next: number | null): void;
|
|
39
|
+
protected toggleLinked(): void;
|
|
40
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BoxInput, never>;
|
|
41
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BoxInput, "mf-box-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { BoxInput };
|
|
45
|
+
export type { BoxValue };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `<mf-brand [name]="i18n().auth.layout.brandName" />`
|
|
5
|
+
*
|
|
6
|
+
* Marka işareti TEK kaynağa indirildi — daha önce üç ayrı yerde üç farklı
|
|
7
|
+
* şey vardı: auth masaüstü panelinde sabit kodlu "MF", mobil auth bloğunda
|
|
8
|
+
* ve layout sidebar'ında sabit kodlu "N", sidebar'da ayrıca `bg-teal-600`
|
|
9
|
+
* (eski marka rengi, köşeli/`rounded-*` olmayan bir kare). İşaret artık
|
|
10
|
+
* `name()`'in İLK HARFİNDEN türetiliyor — `brandName` çevirisi değişse bile
|
|
11
|
+
* bir daha asenkron/bayat kalamaz.
|
|
12
|
+
*
|
|
13
|
+
* `labelTone="auto"` (varsayılan) isim metnini moda-duyarlı `text-fg` ile
|
|
14
|
+
* boyar — ama auth-layout'un sol paneli gibi TEMADAN BAĞIMSIZ hep koyu kalan
|
|
15
|
+
* zeminlerde bu YANLIŞ: light modda `text-fg` koyu metne döner, koyu panel
|
|
16
|
+
* üstünde görünmez olur (gerçek bug, tarayıcıda yakalandı). O bağlamlarda
|
|
17
|
+
* `labelTone="light"` ver — sabit beyaz metin, moddan bağımsız. Simetrik
|
|
18
|
+
* olarak `labelTone="dark"` — sabit koyu (`primary-900`) metin, TEMADAN
|
|
19
|
+
* BAĞIMSIZ hep AÇIK kalan zeminler için (`appearance="brand-light"` sidebar
|
|
20
|
+
* gibi): `auto` orada da YANLIŞ olurdu — dark site modunda `text-fg` açık
|
|
21
|
+
* renge döner, ki zemin (primary-100) hep açık kaldığından metin kaybolurdu.
|
|
22
|
+
*
|
|
23
|
+
* İşaret zemini `bg-accent-fill` — Sidebar `appearance="brand"` içine
|
|
24
|
+
* (`[brand]` slotu ile) projelendiğinde bu artık primary-900'e (kök
|
|
25
|
+
* sidebar'la AYNI zemin) denk düşer, işaret kaybolurdu. `group-data-
|
|
26
|
+
* [appearance=brand]/sidebar:` varyantı (özgüllük 0,2,0, `bg-accent-fill`in
|
|
27
|
+
* 0,1,0'ını İKİ MODDA da yener) o bağlamda primary-400 (`#10b981`) + ink
|
|
28
|
+
* (`primary-950`, ≈6.9:1) zeminine geçer — Sidebar'ın kendi `data-appearance`
|
|
29
|
+
* attribute'una bağlı, `Brand`'e yeni bir input EKLENMEDEN.
|
|
30
|
+
*
|
|
31
|
+
* `appearance="brand-light"` (kök primary-100, İKİ modda da AYNI) için AYRI
|
|
32
|
+
* bir override GEREKİR — DARK site modunda `bg-accent-fill` primary-400'e
|
|
33
|
+
* kayıyor, primary-100 zemine karşı sadece 2.15:1 (AA altı, neredeyse
|
|
34
|
+
* kaybolur). Sabit koyu blok + beyaz metin (`primary-900`/`white`) — bu,
|
|
35
|
+
* LIGHT site modunda zaten `bg-accent-fill`in verdiği sonuçla (primary-900)
|
|
36
|
+
* ÖRTÜŞÜYOR, sadece dark site modundaki tutarsızlığı gideriyor.
|
|
37
|
+
*/
|
|
38
|
+
declare class Brand {
|
|
39
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
40
|
+
readonly size: _angular_core.InputSignal<"sm" | "md">;
|
|
41
|
+
readonly showLabel: _angular_core.InputSignal<boolean>;
|
|
42
|
+
readonly labelTone: _angular_core.InputSignal<"auto" | "light" | "dark">;
|
|
43
|
+
protected readonly mark: _angular_core.Signal<string>;
|
|
44
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Brand, never>;
|
|
45
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Brand, "mf-brand", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "labelTone": { "alias": "labelTone"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { Brand };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
interface BreadcrumbItem {
|
|
4
|
+
label: string;
|
|
5
|
+
href?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* `<mf-breadcrumb [items]="[{label: 'Ayarlar', href: '/ayarlar'}, {label: 'Ekip'}]" />`
|
|
9
|
+
*
|
|
10
|
+
* SON öğe (mevcut sayfa) `href` verilse BİLE bağlantı OLARAK render
|
|
11
|
+
* EDİLMEZ — WAI-ARIA breadcrumb deseninin önerdiği gibi düz metin +
|
|
12
|
+
* `aria-current="page"`. Host `role="navigation"` taşır (`nav` etiketi
|
|
13
|
+
* DEĞİL — `mf-breadcrumb` özel bir eleman, ama landmark semantiği aynı
|
|
14
|
+
* şekilde çalışır).
|
|
15
|
+
*/
|
|
16
|
+
declare class Breadcrumb {
|
|
17
|
+
readonly items: _angular_core.InputSignal<BreadcrumbItem[]>;
|
|
18
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
19
|
+
private readonly injectedLabels;
|
|
20
|
+
protected readonly effectiveAriaLabel: _angular_core.Signal<string>;
|
|
21
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Breadcrumb, never>;
|
|
22
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Breadcrumb, "mf-breadcrumb", ["mfBreadcrumb"], { "items": { "alias": "items"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { Breadcrumb };
|
|
26
|
+
export type { BreadcrumbItem };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `<mf-button-group><button mfButton appearance="outlined">A</button>...</mf-button-group>`
|
|
5
|
+
* — bitişik butonları TEK bir segment şeridi gibi birleştirir: iç köşeler
|
|
6
|
+
* kare, kenarlıklar 1px çakışır (`-ms-px`), hover/odaklı buton `z-10` ile
|
|
7
|
+
* komşusunun üstüne çıkar (çakışan kenarlık kesilmesin diye). En anlamlısı
|
|
8
|
+
* `appearance="outlined"` butonlarla — dolu/düz-metin butonlarda zaten
|
|
9
|
+
* görünür kenarlık yok, sadece aralarındaki boşluk kapanır.
|
|
10
|
+
*/
|
|
11
|
+
declare class ButtonGroup {
|
|
12
|
+
readonly ariaLabel: i0.InputSignal<string>;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonGroup, never>;
|
|
14
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ButtonGroup, "mf-button-group", ["mfButtonGroup"], { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { ButtonGroup };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* `<button mfButton>`/`<a mfButton>` — selector native elemanın KENDİSİNİ
|
|
7
|
+
* hedefler (`button[mfButton], a[mfButton]`), bir SARMALAYICI etiket
|
|
8
|
+
* (`<mf-button>`) DEĞİL (bkz. `projects/ui-kit/README.md` "Directive mi,
|
|
9
|
+
* component mi?") — bu yüzden tüketicinin `class="..."` ile verdiği static
|
|
10
|
+
* class GENE doğrudan gerçek native elemana düşer, eskiden directive'ken
|
|
11
|
+
* olduğu gibi (host'ta kalıp içe düşmeme sorunu YOK). Directive'ten
|
|
12
|
+
* component'e yükseltilmenin TEK sebebi: `loading`'i gerçek bir
|
|
13
|
+
* `<mf-spinner>`'a, `iconStart`/`iconEnd`'i gerçek ikon element'lerine
|
|
14
|
+
* bağlayabilmek için bir ŞABLONA ihtiyaç duyulması — tüketicinin kendi
|
|
15
|
+
* içeriği `<ng-content />` ile AYNEN korunur.
|
|
16
|
+
*
|
|
17
|
+
* `tone` (renk) × `appearance` (dolu/kenarlıklı/düz-metin) bağımsız iki
|
|
18
|
+
* girdi — ör. `tone="danger" appearance="text" size="icon"` sadece ikon
|
|
19
|
+
* gösteren, kenarlıksız bir sil butonu için.
|
|
20
|
+
*/
|
|
21
|
+
declare class Button {
|
|
22
|
+
readonly tone: _angular_core.InputSignal<"primary" | "neutral" | "success" | "warning" | "danger" | "info" | "help" | null | undefined>;
|
|
23
|
+
readonly appearance: _angular_core.InputSignal<"filled" | "outlined" | "text" | null | undefined>;
|
|
24
|
+
readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "icon" | null | undefined>;
|
|
25
|
+
/** Sadece `size="icon"`'da etkili — bkz. button.variants.ts. */
|
|
26
|
+
readonly shape: _angular_core.InputSignal<"round" | "square" | null | undefined>;
|
|
27
|
+
/** Native <button> varsayılan type="submit" sürprizini önlemek için — <a>'da yok sayılır. */
|
|
28
|
+
readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
|
|
29
|
+
/**
|
|
30
|
+
* `true` iken içeriğin (`<ng-content />`) ÖNÜNE `<mf-spinner size="xs" />`
|
|
31
|
+
* eklenir — `iconStart` varsa YERİNE geçer, etiket metni görünür KALIR
|
|
32
|
+
* (buton "Kaydet" yazıp yanında dönen bir gösterge taşır, metin
|
|
33
|
+
* kaybolmaz). `disabled`'ı KENDİLİĞİNDEN yönetmez — tüketici
|
|
34
|
+
* `[disabled]="loading() || ..."` ile kendi bağlar.
|
|
35
|
+
*/
|
|
36
|
+
readonly loading: _angular_core.InputSignal<boolean>;
|
|
37
|
+
/** Material Symbol adı (bkz. `Icon`) — içeriğin ÖNÜNE eklenir. `loading=true` iken spinner onun YERİNE geçer. */
|
|
38
|
+
readonly iconStart: _angular_core.InputSignal<string>;
|
|
39
|
+
/** Material Symbol adı — içeriğin ARDINA eklenir. `loading=true` iken GİZLENİR (tek bir dönen gösterge yeterli — `iconStart` ile aynı ilke). */
|
|
40
|
+
readonly iconEnd: _angular_core.InputSignal<string>;
|
|
41
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
42
|
+
protected readonly nativeType: _angular_core.Signal<"button" | "submit" | "reset">;
|
|
43
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Button, never>;
|
|
44
|
+
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
|
+
}
|
|
46
|
+
|
|
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
|
+
declare const buttonVariants: (props?: ({
|
|
62
|
+
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;
|
|
65
|
+
shape?: "round" | "square" | null | undefined;
|
|
66
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
67
|
+
type ButtonTone = VariantProps<typeof buttonVariants>['tone'];
|
|
68
|
+
/** @deprecated `ButtonTone` kullan — `severity` girdisi `tone`'a taşındı (bkz. plan Faz 1a). */
|
|
69
|
+
type ButtonSeverity = ButtonTone;
|
|
70
|
+
type ButtonAppearance = VariantProps<typeof buttonVariants>['appearance'];
|
|
71
|
+
type ButtonSize = VariantProps<typeof buttonVariants>['size'];
|
|
72
|
+
type ButtonShape = VariantProps<typeof buttonVariants>['shape'];
|
|
73
|
+
|
|
74
|
+
export { Button, buttonVariants };
|
|
75
|
+
export type { ButtonAppearance, ButtonSeverity, ButtonShape, ButtonSize, ButtonTone };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
/** `<div mfCard padding="md" [interactive]="true">...</div>` — `interactive` tıklanabilir/navigasyona giden kartlar için hover'da hafif bir yükselme ekler. */
|
|
6
|
+
declare class Card {
|
|
7
|
+
readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | null | undefined>;
|
|
8
|
+
readonly interactive: _angular_core.InputSignal<boolean | null | undefined>;
|
|
9
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
10
|
+
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
|
+
}
|
|
13
|
+
|
|
14
|
+
/** `<div mfCardBody>...</div>` — bkz. `CardHeader`'ın JSDoc'u. */
|
|
15
|
+
declare class CardBody {
|
|
16
|
+
readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | null | undefined>;
|
|
17
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
18
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardBody, never>;
|
|
19
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CardBody, "[mfCardBody]", never, { "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* `<div mfCardFooter bordered>...</div>` — bkz. `CardHeader`'ın JSDoc'u.
|
|
24
|
+
* Aksiyon düğmeleri için sağa yaslanmış bir satır varsayar (`justify-end`).
|
|
25
|
+
*/
|
|
26
|
+
declare class CardFooter {
|
|
27
|
+
readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | null | undefined>;
|
|
28
|
+
readonly bordered: _angular_core.InputSignal<boolean>;
|
|
29
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
30
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardFooter, never>;
|
|
31
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CardFooter, "[mfCardFooter]", never, { "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* `<div mfCard padding="none"><div mfCardHeader bordered>...</div>...</div>`
|
|
36
|
+
* — bkz. `cardSectionPadding`'in JSDoc'u (dış `mfCard`'ın `padding="none"`
|
|
37
|
+
* olması beklenir). `bordered` alttaki içerikten ayıran bir `border-b` ekler
|
|
38
|
+
* — tek başlık kartlarında (alt parça yok) gereksiz, o yüzden varsayılan `false`.
|
|
39
|
+
*/
|
|
40
|
+
declare class CardHeader {
|
|
41
|
+
readonly padding: _angular_core.InputSignal<"none" | "sm" | "md" | null | undefined>;
|
|
42
|
+
readonly bordered: _angular_core.InputSignal<boolean>;
|
|
43
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
44
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardHeader, never>;
|
|
45
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CardHeader, "[mfCardHeader]", never, { "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* BORDER-FIRST (2026-09 Deep Emerald geçişi, kullanıcı kararıyla önceki
|
|
50
|
+
* "light modda kenarlıksız, sadece gölge" ilkesinin YERİNE geçti): iki modda
|
|
51
|
+
* da `border-hairline` (color.css — %8-12 opak marka-tonlu 1px çizgi),
|
|
52
|
+
* gölge YOK. `interactive` kartlarda hover'da hafif bir yükselme hâlâ
|
|
53
|
+
* `shadow-2` ile veriliyor — bu artık istisna, varsayılan durum gölgesiz.
|
|
54
|
+
*/
|
|
55
|
+
declare const cardVariants: (props?: ({
|
|
56
|
+
padding?: "none" | "sm" | "md" | null | undefined;
|
|
57
|
+
interactive?: boolean | null | undefined;
|
|
58
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
59
|
+
type CardPadding = VariantProps<typeof cardVariants>['padding'];
|
|
60
|
+
type CardInteractive = VariantProps<typeof cardVariants>['interactive'];
|
|
61
|
+
/**
|
|
62
|
+
* `CardHeader`/`CardBody`/`CardFooter`'ın paylaştığı dolgu ölçeği — `Card`'ın
|
|
63
|
+
* kendi `padding` ekseniyle AYNI üç basamak. Alt parçalar kullanılırken dış
|
|
64
|
+
* `mfCard`'ın `padding="none"` olması BEKLENİR (aksi halde dolgu iki katmanda
|
|
65
|
+
* çakışır) — bu, çağıranın sorumluluğunda (bkz. `Field`'ın `for`/id
|
|
66
|
+
* eşleşmesiyle aynı desen, `field.ts`'teki not).
|
|
67
|
+
*/
|
|
68
|
+
declare const cardSectionPadding: Record<NonNullable<CardPadding>, string>;
|
|
69
|
+
|
|
70
|
+
export { Card, CardBody, CardFooter, CardHeader, cardSectionPadding, cardVariants };
|
|
71
|
+
export type { CardInteractive, CardPadding };
|