tamga-ui 0.3.1 → 0.4.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/CHANGELOG.md +99 -0
- package/dist/components/advanced-input.d.ts +16 -4
- package/dist/components/advanced-input.d.ts.map +1 -1
- package/dist/components/advanced-input.js +10 -8
- package/dist/components/appearance.d.ts +9 -3
- package/dist/components/appearance.d.ts.map +1 -1
- package/dist/components/appearance.js +7 -6
- package/dist/components/avatar.d.ts +6 -2
- package/dist/components/avatar.d.ts.map +1 -1
- package/dist/components/avatar.js +5 -4
- package/dist/components/badge.d.ts +9 -3
- package/dist/components/badge.d.ts.map +1 -1
- package/dist/components/badge.js +7 -6
- package/dist/components/bar.d.ts +3 -1
- package/dist/components/bar.d.ts.map +1 -1
- package/dist/components/bar.js +3 -2
- package/dist/components/chart.d.ts +3 -1
- package/dist/components/chart.d.ts.map +1 -1
- package/dist/components/chart.js +3 -2
- package/dist/components/checkbox.d.ts +3 -1
- package/dist/components/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox.js +3 -2
- package/dist/components/chrome.d.ts +12 -4
- package/dist/components/chrome.d.ts.map +1 -1
- package/dist/components/chrome.js +9 -8
- package/dist/components/combobox.d.ts +3 -1
- package/dist/components/combobox.d.ts.map +1 -1
- package/dist/components/combobox.js +3 -2
- package/dist/components/data-table.d.ts +9 -3
- package/dist/components/data-table.d.ts.map +1 -1
- package/dist/components/data-table.js +7 -6
- package/dist/components/date-picker.d.ts +6 -2
- package/dist/components/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker.js +5 -4
- package/dist/components/disclosure.d.ts +5 -2
- package/dist/components/disclosure.d.ts.map +1 -1
- package/dist/components/disclosure.js +5 -4
- package/dist/components/display.d.ts +43 -10
- package/dist/components/display.d.ts.map +1 -1
- package/dist/components/display.js +19 -16
- package/dist/components/empty-state.d.ts +15 -5
- package/dist/components/empty-state.d.ts.map +1 -1
- package/dist/components/empty-state.js +11 -10
- package/dist/components/error-state.d.ts +3 -1
- package/dist/components/error-state.d.ts.map +1 -1
- package/dist/components/error-state.js +3 -2
- package/dist/components/file-upload.d.ts +3 -1
- package/dist/components/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload.js +3 -2
- package/dist/components/gauge.d.ts +4 -2
- package/dist/components/gauge.d.ts.map +1 -1
- package/dist/components/gauge.js +5 -4
- package/dist/components/layout.d.ts +11 -5
- package/dist/components/layout.d.ts.map +1 -1
- package/dist/components/layout.js +12 -10
- package/dist/components/log-view.d.ts +3 -1
- package/dist/components/log-view.d.ts.map +1 -1
- package/dist/components/log-view.js +3 -2
- package/dist/components/number-input.d.ts +3 -1
- package/dist/components/number-input.d.ts.map +1 -1
- package/dist/components/number-input.js +3 -2
- package/dist/components/overlay.d.ts +18 -6
- package/dist/components/overlay.d.ts.map +1 -1
- package/dist/components/overlay.js +13 -12
- package/dist/components/pagination.d.ts +3 -1
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/pagination.js +3 -2
- package/dist/components/pie.d.ts +3 -1
- package/dist/components/pie.d.ts.map +1 -1
- package/dist/components/pie.js +3 -2
- package/dist/components/primitives.d.ts +20 -7
- package/dist/components/primitives.d.ts.map +1 -1
- package/dist/components/primitives.js +15 -14
- package/dist/components/progress.d.ts +3 -6
- package/dist/components/progress.d.ts.map +1 -1
- package/dist/components/progress.js +3 -2
- package/dist/components/radio-group.d.ts +16 -1
- package/dist/components/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group.js +4 -3
- package/dist/components/rich-text.d.ts +3 -1
- package/dist/components/rich-text.d.ts.map +1 -1
- package/dist/components/rich-text.js +3 -2
- package/dist/components/section.d.ts +3 -1
- package/dist/components/section.d.ts.map +1 -1
- package/dist/components/section.js +3 -2
- package/dist/components/skeleton.d.ts +25 -14
- package/dist/components/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton.js +24 -18
- package/dist/components/slider.d.ts +3 -1
- package/dist/components/slider.d.ts.map +1 -1
- package/dist/components/slider.js +3 -2
- package/dist/components/spinner.d.ts +2 -1
- package/dist/components/spinner.d.ts.map +1 -1
- package/dist/components/spinner.js +3 -2
- package/dist/components/square-picker.d.ts +3 -1
- package/dist/components/square-picker.d.ts.map +1 -1
- package/dist/components/square-picker.js +3 -2
- package/dist/components/stacked-bar.d.ts +3 -1
- package/dist/components/stacked-bar.d.ts.map +1 -1
- package/dist/components/stacked-bar.js +3 -2
- package/dist/components/surface.d.ts +13 -5
- package/dist/components/surface.d.ts.map +1 -1
- package/dist/components/surface.js +11 -10
- package/dist/components/switch.d.ts +3 -1
- package/dist/components/switch.d.ts.map +1 -1
- package/dist/components/switch.js +3 -2
- package/dist/components/tabs.d.ts +3 -1
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +3 -2
- package/dist/components/timeline-strip.d.ts +3 -1
- package/dist/components/timeline-strip.d.ts.map +1 -1
- package/dist/components/timeline-strip.js +3 -2
- package/dist/components/tree-select.d.ts +3 -1
- package/dist/components/tree-select.d.ts.map +1 -1
- package/dist/components/tree-select.js +3 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/kit.css +65 -1
- package/dist/lib/data-props.d.ts +20 -0
- package/dist/lib/data-props.d.ts.map +1 -0
- package/dist/lib/data-props.js +25 -0
- package/dist/patterns/wizard-template.d.ts +11 -5
- package/dist/patterns/wizard-template.d.ts.map +1 -1
- package/dist/patterns/wizard-template.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme.css +1 -1
- package/package.json +1 -1
|
@@ -53,12 +53,14 @@ export declare function Rise({ delay, className, children, ...props }: React.Com
|
|
|
53
53
|
* arka arkaya okurdu — "Kaydet Kaydediliyor" — ve hangisinin geçerli olduğu
|
|
54
54
|
* anlaşılmazdı.
|
|
55
55
|
*/
|
|
56
|
-
export declare function Swap({ showing, a, b, className, }: {
|
|
56
|
+
export declare function Swap({ showing, a, b, className, ...rest }: {
|
|
57
57
|
/** Which side is visible: `"a"` or `"b"`. TR: Hangi taraf görünür: `"a"` ya da `"b"`. */
|
|
58
58
|
showing: "a" | "b";
|
|
59
59
|
a: ReactNode;
|
|
60
60
|
b: ReactNode;
|
|
61
61
|
className?: string;
|
|
62
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
63
|
+
[k: `data-${string}`]: unknown;
|
|
62
64
|
}): import("react").JSX.Element;
|
|
63
65
|
/**
|
|
64
66
|
* Liste satırı — tablo olmayan listeler için.
|
|
@@ -71,12 +73,14 @@ export declare function Swap({ showing, a, b, className, }: {
|
|
|
71
73
|
* ikisi de yoksa düz bir satır kalır. Bu ayrım önemli: tıklanabilir bir
|
|
72
74
|
* `<div>` klavyeyle erişilemez ve ekran okuyucuya hiçbir şey söylemez.
|
|
73
75
|
*/
|
|
74
|
-
export declare function ListRow({ size, href, onClick, className, children, }: {
|
|
76
|
+
export declare function ListRow({ size, href, onClick, className, children, ...rest }: {
|
|
75
77
|
size?: "base" | "sm";
|
|
76
78
|
href?: string;
|
|
77
79
|
onClick?: () => void;
|
|
78
80
|
className?: string;
|
|
79
81
|
children: ReactNode;
|
|
82
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
83
|
+
[k: `data-${string}`]: unknown;
|
|
80
84
|
}): import("react").JSX.Element;
|
|
81
85
|
/**
|
|
82
86
|
* İçinde bir panel AÇILAN tablo hücresi.
|
|
@@ -105,11 +109,13 @@ export declare function CellActions({ className, children, align, ...props }: Om
|
|
|
105
109
|
* Eylem SAĞA yaslı ve başlığın taban çizgisinde. Başka yere koyan bir başlık
|
|
106
110
|
* altındaki listeden kopmuş görünüyor — bu bir tercih değil, ölçülmüş bir şey.
|
|
107
111
|
*/
|
|
108
|
-
export declare function PageBand({ title, subtitle, actions, className, }: {
|
|
112
|
+
export declare function PageBand({ title, subtitle, actions, className, ...rest }: {
|
|
109
113
|
title: string;
|
|
110
114
|
subtitle?: string;
|
|
111
115
|
actions?: ReactNode;
|
|
112
116
|
className?: string;
|
|
117
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
118
|
+
[k: `data-${string}`]: unknown;
|
|
113
119
|
}): import("react").JSX.Element;
|
|
114
120
|
/**
|
|
115
121
|
* Gezinen bağlantı.
|
|
@@ -127,7 +133,7 @@ export declare function PageBand({ title, subtitle, actions, className, }: {
|
|
|
127
133
|
* olmadan açılan sayfa `window.opener` üzerinden seninkini yönlendirebilir —
|
|
128
134
|
* eski ve hâlâ geçerli bir açık.
|
|
129
135
|
*/
|
|
130
|
-
export declare function Link({ external, className, children, linkComponent: Router, ...props }: React.ComponentProps<"a"> & {
|
|
136
|
+
export declare function Link({ external, className, children, href, linkComponent: Router, ...props }: React.ComponentProps<"a"> & {
|
|
131
137
|
external?: boolean;
|
|
132
138
|
/**
|
|
133
139
|
* The router's link, so an in-app link does not reload the page. TR: Yönlendiricinin
|
|
@@ -137,7 +143,7 @@ export declare function Link({ external, className, children, linkComponent: Rou
|
|
|
137
143
|
* dışına çıkan bir adres istemci yönlendirmesiyle açılamaz.
|
|
138
144
|
*/
|
|
139
145
|
linkComponent?: ComponentType<{
|
|
140
|
-
href
|
|
146
|
+
href: string;
|
|
141
147
|
className?: string;
|
|
142
148
|
children?: ReactNode;
|
|
143
149
|
[k: string]: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/components/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/components/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItD;;;;GAIG;AAEH;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EACtB,MAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,+BAMpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,+BAYjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,EACnB,KAAS,EACT,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,+BAUlD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,EACnB,OAAO,EACP,CAAC,EACD,CAAC,EACD,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD,yFAAyF;IACzF,OAAO,EAAE,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC,EAAE,SAAS,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAWA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAa,EACb,IAAI,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAiBA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,QAAQ,EACR,KAAa,EACb,GAAG,KAAK,EAGT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,+BAWzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAUA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,QAAgB,EAChB,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;CACjH,+BAmBA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { dataProps } from "../lib/data-props.js";
|
|
3
4
|
/**
|
|
4
5
|
* Sınıfı olan ama bileşeni olmayan şeyler.
|
|
5
6
|
*
|
|
@@ -54,8 +55,8 @@ export function Rise({ delay = 0, className, children, ...props }) {
|
|
|
54
55
|
* arka arkaya okurdu — "Kaydet Kaydediliyor" — ve hangisinin geçerli olduğu
|
|
55
56
|
* anlaşılmazdı.
|
|
56
57
|
*/
|
|
57
|
-
export function Swap({ showing, a, b, className, }) {
|
|
58
|
-
return (_jsxs("span", { className: cn("tamga-swap", className), children: [_jsx("span", { "data-hidden": showing !== "a", "aria-hidden": showing !== "a", children: a }), _jsx("span", { "data-hidden": showing !== "b", "aria-hidden": showing !== "b", children: b })] }));
|
|
58
|
+
export function Swap({ showing, a, b, className, ...rest }) {
|
|
59
|
+
return (_jsxs("span", { ...dataProps(rest), className: cn("tamga-swap", className), children: [_jsx("span", { "data-hidden": showing !== "a", "aria-hidden": showing !== "a", children: a }), _jsx("span", { "data-hidden": showing !== "b", "aria-hidden": showing !== "b", children: b })] }));
|
|
59
60
|
}
|
|
60
61
|
/**
|
|
61
62
|
* Liste satırı — tablo olmayan listeler için.
|
|
@@ -68,10 +69,10 @@ export function Swap({ showing, a, b, className, }) {
|
|
|
68
69
|
* ikisi de yoksa düz bir satır kalır. Bu ayrım önemli: tıklanabilir bir
|
|
69
70
|
* `<div>` klavyeyle erişilemez ve ekran okuyucuya hiçbir şey söylemez.
|
|
70
71
|
*/
|
|
71
|
-
export function ListRow({ size = "base", href, onClick, className, children, }) {
|
|
72
|
+
export function ListRow({ size = "base", href, onClick, className, children, ...rest }) {
|
|
72
73
|
const cls = cn("tamga-list-row", size === "sm" && "tamga-list-row-sm", className);
|
|
73
74
|
if (href) {
|
|
74
|
-
return (_jsx("a", { href: href, className: cls, children: children }));
|
|
75
|
+
return (_jsx("a", { ...dataProps(rest), href: href, className: cls, children: children }));
|
|
75
76
|
}
|
|
76
77
|
if (onClick) {
|
|
77
78
|
return (_jsx("button", { type: "button", onClick: onClick, className: cn(cls, "w-full text-left"), children: children }));
|
|
@@ -108,8 +109,8 @@ export function CellActions({ className, children, align = "end", ...props
|
|
|
108
109
|
* Eylem SAĞA yaslı ve başlığın taban çizgisinde. Başka yere koyan bir başlık
|
|
109
110
|
* altındaki listeden kopmuş görünüyor — bu bir tercih değil, ölçülmüş bir şey.
|
|
110
111
|
*/
|
|
111
|
-
export function PageBand({ title, subtitle, actions, className, }) {
|
|
112
|
-
return (_jsxs("div", { className: cn("tamga-section tamga-gutter flex flex-wrap items-center gap-4 py-4", className), children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "text-title font-semibold text-ink", children: title }), subtitle ? _jsx("p", { className: "text-small text-ink-faint", children: subtitle }) : null] }), actions ? _jsx("div", { className: "ml-auto flex flex-wrap items-center gap-2", children: actions }) : null] }));
|
|
112
|
+
export function PageBand({ title, subtitle, actions, className, ...rest }) {
|
|
113
|
+
return (_jsxs("div", { ...dataProps(rest), className: cn("tamga-section tamga-gutter flex flex-wrap items-center gap-4 py-4", className), children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "text-title font-semibold text-ink", children: title }), subtitle ? _jsx("p", { className: "text-small text-ink-faint", children: subtitle }) : null] }), actions ? _jsx("div", { className: "ml-auto flex flex-wrap items-center gap-2", children: actions }) : null] }));
|
|
113
114
|
}
|
|
114
115
|
/**
|
|
115
116
|
* Gezinen bağlantı.
|
|
@@ -127,14 +128,15 @@ export function PageBand({ title, subtitle, actions, className, }) {
|
|
|
127
128
|
* olmadan açılan sayfa `window.opener` üzerinden seninkini yönlendirebilir —
|
|
128
129
|
* eski ve hâlâ geçerli bir açık.
|
|
129
130
|
*/
|
|
130
|
-
export function Link({ external = false, className, children, linkComponent: Router, ...props }) {
|
|
131
|
+
export function Link({ external = false, className, children, href, linkComponent: Router, ...props }) {
|
|
131
132
|
const shared = {
|
|
132
133
|
className: cn("tamga-link", className),
|
|
133
134
|
target: external ? "_blank" : undefined,
|
|
134
135
|
rel: external ? "noopener noreferrer" : undefined,
|
|
135
136
|
...props,
|
|
136
137
|
};
|
|
137
|
-
/* Dış
|
|
138
|
-
istemci yönlendirmesiyle açılamaz
|
|
139
|
-
|
|
138
|
+
/* YÖNLENDİRİCİ İKİ DURUMDA DEVREDE DEĞİL. Dış bağlantıda, çünkü uygulamanın dışına çıkan bir
|
|
139
|
+
adres istemci yönlendirmesiyle açılamaz ve denemek sessizce bir sekme kaybettirir. Ve adres
|
|
140
|
+
hiç yokken, çünkü yönlendiricinin bağlantısı adressiz çağrılamaz — `<a>` çağrılabilir. */
|
|
141
|
+
return Router && !external && href !== undefined ? (_jsx(Router, { ...shared, href: href, children: children })) : (_jsx("a", { ...shared, href: href, children: children }));
|
|
140
142
|
}
|
|
@@ -14,7 +14,7 @@ export type LogLine = {
|
|
|
14
14
|
text: string;
|
|
15
15
|
tone?: Tone;
|
|
16
16
|
};
|
|
17
|
-
export declare function LogView({ lines, label, height, follow, wrap, className, }: {
|
|
17
|
+
export declare function LogView({ lines, label, height, follow, wrap, className, ...rest }: {
|
|
18
18
|
lines: readonly LogLine[];
|
|
19
19
|
/**
|
|
20
20
|
* The region's name; it shows in the landmark list for keyboard navigation. TR: Bölgenin adı;
|
|
@@ -30,5 +30,7 @@ export declare function LogView({ lines, label, height, follow, wrap, className,
|
|
|
30
30
|
*/
|
|
31
31
|
wrap?: boolean;
|
|
32
32
|
className?: string;
|
|
33
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
34
|
+
[k: `data-${string}`]: unknown;
|
|
33
35
|
}): import("react").JSX.Element;
|
|
34
36
|
//# sourceMappingURL=log-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-view.d.ts","sourceRoot":"","sources":["../../src/components/log-view.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log-view.d.ts","sourceRoot":"","sources":["../../src/components/log-view.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;GAIG;AAEH,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,KAAK,EACL,MAAY,EACZ,MAAa,EACb,IAAY,EACZ,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAoDA"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useRef } from "react";
|
|
4
4
|
import { cn } from "../lib/cn.js";
|
|
5
|
+
import { dataProps } from "../lib/data-props.js";
|
|
5
6
|
import { toneOf } from "./tone.js";
|
|
6
|
-
export function LogView({ lines, label, height = 320, follow = true, wrap = false, className, }) {
|
|
7
|
+
export function LogView({ lines, label, height = 320, follow = true, wrap = false, className, ...rest }) {
|
|
7
8
|
const box = useRef(null);
|
|
8
9
|
useEffect(() => {
|
|
9
10
|
if (!follow)
|
|
@@ -19,7 +20,7 @@ export function LogView({ lines, label, height = 320, follow = true, wrap = fals
|
|
|
19
20
|
if (atBottom)
|
|
20
21
|
el.scrollTop = el.scrollHeight;
|
|
21
22
|
}, [lines, follow]);
|
|
22
|
-
return (_jsx("div", { ref: box, className: cn("tamga-surface overflow-y-auto p-3 font-mono text-caption", className), style: { height },
|
|
23
|
+
return (_jsx("div", { ...dataProps(rest), ref: box, className: cn("tamga-surface overflow-y-auto p-3 font-mono text-caption", className), style: { height },
|
|
23
24
|
/* `log` rolü: ekran okuyucu bunu bir günlük olarak tanır ve — kritik
|
|
24
25
|
olarak — `aria-live` OLMADAN sessiz kalır. Akan bir bölgeyi
|
|
25
26
|
duyurmak sesli okuyucuyu boğar; kullanıcı isterse kendisi okur. */
|
|
@@ -7,7 +7,7 @@ export declare function NumberInput({ value, onChange, min, max, step,
|
|
|
7
7
|
/** Değerin sonuna yapışan birim: "₺", "kg", "%" */
|
|
8
8
|
suffix, disabled, invalid, full,
|
|
9
9
|
/** Artır/azalt düğmelerinin erişilebilir adları. Kit çeviri çekmez. */
|
|
10
|
-
labels, className, }: {
|
|
10
|
+
labels, className, ...rest }: {
|
|
11
11
|
value: number | null;
|
|
12
12
|
onChange?: (next: number | null) => void;
|
|
13
13
|
min?: number;
|
|
@@ -22,5 +22,7 @@ labels, className, }: {
|
|
|
22
22
|
decrease: string;
|
|
23
23
|
};
|
|
24
24
|
className?: string;
|
|
25
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
26
|
+
[k: `data-${string}`]: unknown;
|
|
25
27
|
}): import("react").JSX.Element;
|
|
26
28
|
//# sourceMappingURL=number-input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-input.d.ts","sourceRoot":"","sources":["../../src/components/number-input.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"number-input.d.ts","sourceRoot":"","sources":["../../src/components/number-input.tsx"],"names":[],"mappings":"AAQA;;;;GAIG;AAEH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,EACH,IAAQ;AACR,mDAAmD;AACnD,MAAM,EACN,QAAgB,EAChB,OAAe,EACf,IAAY;AACZ,uEAAuE;AACvE,MAAM,EACN,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAoFA"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useId } from "react";
|
|
4
4
|
import { cn } from "../lib/cn.js";
|
|
5
|
+
import { dataProps } from "../lib/data-props.js";
|
|
5
6
|
import { Icon } from "./icon.js";
|
|
6
7
|
import { CaretDown } from "./icons.js";
|
|
7
8
|
/**
|
|
@@ -13,7 +14,7 @@ export function NumberInput({ value, onChange, min, max, step = 1,
|
|
|
13
14
|
/** Değerin sonuna yapışan birim: "₺", "kg", "%" */
|
|
14
15
|
suffix, disabled = false, invalid = false, full = false,
|
|
15
16
|
/** Artır/azalt düğmelerinin erişilebilir adları. Kit çeviri çekmez. */
|
|
16
|
-
labels, className, }) {
|
|
17
|
+
labels, className, ...rest }) {
|
|
17
18
|
const id = useId();
|
|
18
19
|
const clamp = (n) => {
|
|
19
20
|
if (min !== undefined && n < min)
|
|
@@ -33,7 +34,7 @@ labels, className, }) {
|
|
|
33
34
|
};
|
|
34
35
|
const atMin = min !== undefined && value !== null && value <= min;
|
|
35
36
|
const atMax = max !== undefined && value !== null && value >= max;
|
|
36
|
-
return (_jsxs("span", { className: cn("relative inline-flex items-center", full && "w-full", className), children: [_jsx("input", { id: id, type: "text", inputMode: "decimal", value: value ?? "", disabled: disabled, "aria-invalid": invalid || undefined, onChange: (e) => {
|
|
37
|
+
return (_jsxs("span", { ...dataProps(rest), className: cn("relative inline-flex items-center", full && "w-full", className), children: [_jsx("input", { id: id, type: "text", inputMode: "decimal", value: value ?? "", disabled: disabled, "aria-invalid": invalid || undefined, onChange: (e) => {
|
|
37
38
|
const raw = e.target.value.replace(",", ".").trim();
|
|
38
39
|
if (raw === "")
|
|
39
40
|
return onChange?.(null);
|
|
@@ -23,7 +23,7 @@ export type MenuItem = {
|
|
|
23
23
|
kind: "label";
|
|
24
24
|
label: string;
|
|
25
25
|
};
|
|
26
|
-
export declare function DropdownMenu({ trigger, items, align, width, loading, loadingRows, openOnHover, }: {
|
|
26
|
+
export declare function DropdownMenu({ trigger, items, align, width, loading, loadingRows, openOnHover, ...rest }: {
|
|
27
27
|
trigger: React.ReactNode;
|
|
28
28
|
items: MenuItem[];
|
|
29
29
|
align?: "start" | "end";
|
|
@@ -57,8 +57,10 @@ export declare function DropdownMenu({ trigger, items, align, width, loading, lo
|
|
|
57
57
|
* değil; 4'te bırakılmış bir liste, tasarım kararı gibi görünen bir hatadır.
|
|
58
58
|
*/
|
|
59
59
|
loadingRows?: number;
|
|
60
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
61
|
+
[k: `data-${string}`]: unknown;
|
|
60
62
|
}): import("react").JSX.Element;
|
|
61
|
-
export declare function Popover({ trigger, title, children, footer, width, align, loading, loadingBlock, closeLabel, }: {
|
|
63
|
+
export declare function Popover({ trigger, title, children, footer, width, align, loading, loadingBlock, closeLabel, ...rest }: {
|
|
62
64
|
trigger: React.ReactNode;
|
|
63
65
|
title?: string;
|
|
64
66
|
/**
|
|
@@ -80,6 +82,8 @@ export declare function Popover({ trigger, title, children, footer, width, align
|
|
|
80
82
|
* gövdesi bir blokla açılıyorsa o baştaki bloğun yüksekliği
|
|
81
83
|
*/
|
|
82
84
|
loadingBlock?: number;
|
|
85
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
86
|
+
[k: `data-${string}`]: unknown;
|
|
83
87
|
}): import("react").JSX.Element;
|
|
84
88
|
declare const placements: {
|
|
85
89
|
readonly top: "bottom-[var(--overlay-above)] left-1/2 -translate-x-1/2";
|
|
@@ -104,13 +108,15 @@ declare const placements: {
|
|
|
104
108
|
* hizalanmasının yolu yok. Ölçüm yalnız ipucu açılırken yapılıyor: kapalıyken
|
|
105
109
|
* hiçbir maliyeti yok.
|
|
106
110
|
*/
|
|
107
|
-
export declare function Tooltip({ label, placement, children, }: {
|
|
111
|
+
export declare function Tooltip({ label, placement, children, ...rest }: {
|
|
108
112
|
label: string;
|
|
109
113
|
placement?: keyof typeof placements;
|
|
110
114
|
children: React.ReactNode;
|
|
115
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
116
|
+
[k: `data-${string}`]: unknown;
|
|
111
117
|
}): import("react").JSX.Element;
|
|
112
118
|
export type ToastTone = Tone;
|
|
113
|
-
export declare function Toast({ tone, title, description, action, onDismiss, dismissLabel, }: {
|
|
119
|
+
export declare function Toast({ tone, title, description, action, onDismiss, dismissLabel, ...rest }: {
|
|
114
120
|
tone?: ToastTone;
|
|
115
121
|
title: string;
|
|
116
122
|
description?: string;
|
|
@@ -121,6 +127,8 @@ export declare function Toast({ tone, title, description, action, onDismiss, dis
|
|
|
121
127
|
* Kapatma kontrolünün erişilebilir adı, çağıran veriyor (docs/08 kural 5).
|
|
122
128
|
*/
|
|
123
129
|
dismissLabel: string;
|
|
130
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
131
|
+
[k: `data-${string}`]: unknown;
|
|
124
132
|
}): import("react").JSX.Element;
|
|
125
133
|
/**
|
|
126
134
|
* Where toasts land. Top-right is the default: it is the one corner that
|
|
@@ -132,9 +140,11 @@ declare const corners: {
|
|
|
132
140
|
readonly "bottom-right": "bottom-6 right-6 items-end";
|
|
133
141
|
readonly "bottom-left": "bottom-6 left-6 items-start";
|
|
134
142
|
};
|
|
135
|
-
export declare function ToastViewport({ position, children, }: {
|
|
143
|
+
export declare function ToastViewport({ position, children, ...rest }: {
|
|
136
144
|
position?: keyof typeof corners;
|
|
137
145
|
children: React.ReactNode;
|
|
146
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
147
|
+
[k: `data-${string}`]: unknown;
|
|
138
148
|
}): import("react").JSX.Element;
|
|
139
149
|
/**
|
|
140
150
|
* The modal shell. Hooks cannot run behind an early return, so the trap lives
|
|
@@ -220,7 +230,7 @@ export declare function ConfirmDialog({ open, onClose, onConfirm, title, childre
|
|
|
220
230
|
*/
|
|
221
231
|
confirmDisabled?: boolean;
|
|
222
232
|
}): import("react").JSX.Element;
|
|
223
|
-
export declare function Dialog({ open, onClose, title, children, footer, loading, closeLabel, size, }: {
|
|
233
|
+
export declare function Dialog({ open, onClose, title, children, footer, loading, closeLabel, size, ...rest }: {
|
|
224
234
|
open: boolean;
|
|
225
235
|
onClose: () => void;
|
|
226
236
|
title: string;
|
|
@@ -243,6 +253,8 @@ export declare function Dialog({ open, onClose, title, children, footer, loading
|
|
|
243
253
|
* tuval).
|
|
244
254
|
*/
|
|
245
255
|
size?: DialogSize;
|
|
256
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
257
|
+
[k: `data-${string}`]: unknown;
|
|
246
258
|
}): import("react").JSX.Element;
|
|
247
259
|
export {};
|
|
248
260
|
//# sourceMappingURL=overlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/components/overlay.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/components/overlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { useCallback, useEffect, useRef, useState } from "react";
|
|
|
4
4
|
import { toneOf } from "./tone.js";
|
|
5
5
|
import { Icon } from "./icon.js";
|
|
6
6
|
import { cn } from "../lib/cn.js";
|
|
7
|
+
import { dataProps } from "../lib/data-props.js";
|
|
7
8
|
import { Close } from "./icons.js";
|
|
8
9
|
import { SkeletonOptions, SkeletonPanel } from "./skeleton.js";
|
|
9
10
|
import { Button } from "./button.js";
|
|
@@ -35,7 +36,7 @@ function useDismiss(open, close) {
|
|
|
35
36
|
}, [open, close]);
|
|
36
37
|
return box;
|
|
37
38
|
}
|
|
38
|
-
export function DropdownMenu({ trigger, items, align = "start", width = 200, loading = false, loadingRows = 4, openOnHover = false, }) {
|
|
39
|
+
export function DropdownMenu({ trigger, items, align = "start", width = 200, loading = false, loadingRows = 4, openOnHover = false, ...rest }) {
|
|
39
40
|
const [open, setOpen] = useState(false);
|
|
40
41
|
const box = useDismiss(open, () => setOpen(false));
|
|
41
42
|
const close = useCallback(() => setOpen(false), []);
|
|
@@ -58,7 +59,7 @@ export function DropdownMenu({ trigger, items, align = "start", width = 200, loa
|
|
|
58
59
|
}
|
|
59
60
|
}, []);
|
|
60
61
|
useEffect(() => () => kapatmayiIptal(), [kapatmayiIptal]);
|
|
61
|
-
return (_jsxs("div", { ref: box, className: "relative inline-flex", onPointerEnter: openOnHover
|
|
62
|
+
return (_jsxs("div", { ...dataProps(rest), ref: box, className: "relative inline-flex", onPointerEnter: openOnHover
|
|
62
63
|
? (e) => {
|
|
63
64
|
/* YALNIZ FARE. Dokunmatik bir ekranda `pointerenter` dokunmayla
|
|
64
65
|
birlikte geliyor ve hemen ardından gelen `click` menüyü kapatıyor:
|
|
@@ -86,10 +87,10 @@ export function DropdownMenu({ trigger, items, align = "start", width = 200, loa
|
|
|
86
87
|
})] }))] }));
|
|
87
88
|
}
|
|
88
89
|
/* --------------------------- popover --------------------------- */
|
|
89
|
-
export function Popover({ trigger, title, children, footer, width = 288, align = "start", loading = false, loadingBlock, closeLabel, }) {
|
|
90
|
+
export function Popover({ trigger, title, children, footer, width = 288, align = "start", loading = false, loadingBlock, closeLabel, ...rest }) {
|
|
90
91
|
const [open, setOpen] = useState(false);
|
|
91
92
|
const box = useDismiss(open, () => setOpen(false));
|
|
92
|
-
return (_jsxs("div", { ref: box, className: "relative inline-flex", children: [_jsx("span", { onClick: () => setOpen((o) => !o), children: trigger }), open && (_jsxs("div", { className: "tamga-overlay absolute top-[var(--overlay-below)] z-40", style: { width, [align === "end" ? "right" : "left"]: 0 }, "aria-busy": loading || undefined, children: [title ? (_jsxs("div", { className: "tamga-head tamga-gutter tamga-section", children: [_jsx("h4", { className: "text-control font-semibold", children: title }), _jsx(MiniButton, { className: "ml-auto", "aria-label": closeLabel, onClick: () => setOpen(false), children: _jsx(Icon, { icon: Close, size: "xs" }) })] })) : null, _jsx("div", { className: "tamga-gutter py-4 text-small leading-relaxed", children: loading ? _jsx(SkeletonPanel, { lines: 3, block: loadingBlock }) : children }), footer ? (_jsx("div", { className: "tamga-gutter flex justify-end gap-2 border-t border-line py-3", children: footer })) : null] }))] }));
|
|
93
|
+
return (_jsxs("div", { ...dataProps(rest), ref: box, className: "relative inline-flex", children: [_jsx("span", { onClick: () => setOpen((o) => !o), children: trigger }), open && (_jsxs("div", { className: "tamga-overlay absolute top-[var(--overlay-below)] z-40", style: { width, [align === "end" ? "right" : "left"]: 0 }, "aria-busy": loading || undefined, children: [title ? (_jsxs("div", { className: "tamga-head tamga-gutter tamga-section", children: [_jsx("h4", { className: "text-control font-semibold", children: title }), _jsx(MiniButton, { className: "ml-auto", "aria-label": closeLabel, onClick: () => setOpen(false), children: _jsx(Icon, { icon: Close, size: "xs" }) })] })) : null, _jsx("div", { className: "tamga-gutter py-4 text-small leading-relaxed", children: loading ? _jsx(SkeletonPanel, { lines: 3, block: loadingBlock }) : children }), footer ? (_jsx("div", { className: "tamga-gutter flex justify-end gap-2 border-t border-line py-3", children: footer })) : null] }))] }));
|
|
93
94
|
}
|
|
94
95
|
/* --------------------------- tooltip --------------------------- */
|
|
95
96
|
const placements = {
|
|
@@ -140,7 +141,7 @@ const arrows = {
|
|
|
140
141
|
* hizalanmasının yolu yok. Ölçüm yalnız ipucu açılırken yapılıyor: kapalıyken
|
|
141
142
|
* hiçbir maliyeti yok.
|
|
142
143
|
*/
|
|
143
|
-
export function Tooltip({ label, placement = "bottom", children, }) {
|
|
144
|
+
export function Tooltip({ label, placement = "bottom", children, ...rest }) {
|
|
144
145
|
const sarmal = useRef(null);
|
|
145
146
|
const [konum, setKonum] = useState(null);
|
|
146
147
|
const olc = useCallback(() => {
|
|
@@ -176,7 +177,7 @@ export function Tooltip({ label, placement = "bottom", children, }) {
|
|
|
176
177
|
left: "translate(-100%, -50%)",
|
|
177
178
|
right: "translate(0, -50%)",
|
|
178
179
|
};
|
|
179
|
-
return (_jsxs("span", { ref: sarmal, className: "relative inline-flex", onPointerEnter: olc, onPointerLeave: kapat, onFocusCapture: olc, onBlurCapture: kapat, children: [children, konum && (_jsxs("span", { role: "tooltip", className: "pointer-events-none fixed z-40 whitespace-nowrap px-2 py-1 text-small", style: {
|
|
180
|
+
return (_jsxs("span", { ...dataProps(rest), ref: sarmal, className: "relative inline-flex", onPointerEnter: olc, onPointerLeave: kapat, onFocusCapture: olc, onBlurCapture: kapat, children: [children, konum && (_jsxs("span", { role: "tooltip", className: "pointer-events-none fixed z-40 whitespace-nowrap px-2 py-1 text-small", style: {
|
|
180
181
|
left: konum.left,
|
|
181
182
|
top: konum.top,
|
|
182
183
|
transform: kaydirma[placement],
|
|
@@ -185,9 +186,9 @@ export function Tooltip({ label, placement = "bottom", children, }) {
|
|
|
185
186
|
borderRadius: "var(--radius-ctl)",
|
|
186
187
|
}, children: [label, _jsx("span", { "aria-hidden": true, className: "absolute block", style: { background: "var(--color-ink)", ...arrows[placement] } })] }))] }));
|
|
187
188
|
}
|
|
188
|
-
export function Toast({ tone = "neutral", title, description, action, onDismiss, dismissLabel, }) {
|
|
189
|
+
export function Toast({ tone = "neutral", title, description, action, onDismiss, dismissLabel, ...rest }) {
|
|
189
190
|
const mark = tone === "neutral" ? "var(--color-ink)" : toneOf(tone).mark;
|
|
190
|
-
return (_jsxs("div", { role: "status", className: "tamga-toast tamga-overlay flex w-80 items-start gap-4 p-4", style: { animation: "tamga-toast-in var(--duration-base) var(--ease-standard) both" }, children: [_jsx("span", { className: "mt-1 size-2.5 shrink-0", style: { background: mark } }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-body font-medium text-ink", children: title }), description ? (_jsx("p", { className: "mt-1 text-small leading-relaxed text-ink-faint", children: description })) : null, action ? _jsx("div", { className: "mt-3", children: action }) : null] }), onDismiss ? (_jsx(MiniButton, { onClick: onDismiss, "aria-label": dismissLabel, children: _jsx(Icon, { icon: Close, size: "xs" }) })) : null] }));
|
|
191
|
+
return (_jsxs("div", { ...dataProps(rest), role: "status", className: "tamga-toast tamga-overlay flex w-80 items-start gap-4 p-4", style: { animation: "tamga-toast-in var(--duration-base) var(--ease-standard) both" }, children: [_jsx("span", { className: "mt-1 size-2.5 shrink-0", style: { background: mark } }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-body font-medium text-ink", children: title }), description ? (_jsx("p", { className: "mt-1 text-small leading-relaxed text-ink-faint", children: description })) : null, action ? _jsx("div", { className: "mt-3", children: action }) : null] }), onDismiss ? (_jsx(MiniButton, { onClick: onDismiss, "aria-label": dismissLabel, children: _jsx(Icon, { icon: Close, size: "xs" }) })) : null] }));
|
|
191
192
|
}
|
|
192
193
|
/**
|
|
193
194
|
* Where toasts land. Top-right is the default: it is the one corner that
|
|
@@ -199,8 +200,8 @@ const corners = {
|
|
|
199
200
|
"bottom-right": "bottom-6 right-6 items-end",
|
|
200
201
|
"bottom-left": "bottom-6 left-6 items-start",
|
|
201
202
|
};
|
|
202
|
-
export function ToastViewport({ position = "top-right", children, }) {
|
|
203
|
-
return (_jsx("div", { className: `pointer-events-none fixed z-50 flex flex-col gap-2 ${corners[position]}`, children: _jsx("div", { className: "pointer-events-auto flex flex-col gap-2", children: children }) }));
|
|
203
|
+
export function ToastViewport({ position = "top-right", children, ...rest }) {
|
|
204
|
+
return (_jsx("div", { ...dataProps(rest), className: `pointer-events-none fixed z-50 flex flex-col gap-2 ${corners[position]}`, children: _jsx("div", { className: "pointer-events-auto flex flex-col gap-2", children: children }) }));
|
|
204
205
|
}
|
|
205
206
|
/* ---------------------------- dialog --------------------------- */
|
|
206
207
|
/**
|
|
@@ -271,6 +272,6 @@ function DialogShell({ open, onClose, loading, label, size = "md", children, })
|
|
|
271
272
|
export function ConfirmDialog({ open, onClose, onConfirm, title, children, confirmLabel, cancelLabel, closeLabel, tone = "danger", busy = false, confirmDisabled = false, }) {
|
|
272
273
|
return (_jsx(Dialog, { open: open, onClose: onClose, title: title, closeLabel: closeLabel, footer: _jsxs(_Fragment, { children: [_jsx(Button, { type: "button", onClick: onClose, disabled: busy, "data-autofocus": true, children: cancelLabel }), _jsx(Button, { variant: tone, onClick: onConfirm, disabled: busy || confirmDisabled, children: confirmLabel })] }), children: children }));
|
|
273
274
|
}
|
|
274
|
-
export function Dialog({ open, onClose, title, children, footer, loading = false, closeLabel, size = "md", }) {
|
|
275
|
-
return (_jsxs(DialogShell, { open: open, onClose: onClose, loading: loading, label: title, size: size, children: [_jsxs("div", { className: "tamga-head tamga-gutter tamga-section", children: [_jsx("h3", { className: "text-subhead font-semibold", children: title }), _jsx(MiniButton, { onClick: onClose, "aria-label": closeLabel, className: "ml-auto", children: _jsx(Icon, { icon: Close, size: "xs" }) })] }), _jsx("div", { className: cn("tamga-gutter py-6 text-body leading-relaxed", size === "full" && "min-h-0 flex-1 overflow-y-auto"), children: loading ? _jsx(SkeletonPanel, { lines: 4 }) : children }), footer ? (_jsx("div", { className: "tamga-gutter flex justify-end gap-2 border-t border-line py-4", children: footer })) : null] }));
|
|
275
|
+
export function Dialog({ open, onClose, title, children, footer, loading = false, closeLabel, size = "md", ...rest }) {
|
|
276
|
+
return (_jsxs(DialogShell, { open: open, onClose: onClose, loading: loading, label: title, size: size, children: [_jsxs("div", { ...dataProps(rest), className: "tamga-head tamga-gutter tamga-section", children: [_jsx("h3", { className: "text-subhead font-semibold", children: title }), _jsx(MiniButton, { onClick: onClose, "aria-label": closeLabel, className: "ml-auto", children: _jsx(Icon, { icon: Close, size: "xs" }) })] }), _jsx("div", { className: cn("tamga-gutter py-6 text-body leading-relaxed", size === "full" && "min-h-0 flex-1 overflow-y-auto"), children: loading ? _jsx(SkeletonPanel, { lines: 4 }) : children }), footer ? (_jsx("div", { className: "tamga-gutter flex justify-end gap-2 border-t border-line py-4", children: footer })) : null] }));
|
|
276
277
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
/** Gösterilecek numaraları hesaplar. `null` = kısaltma. */
|
|
7
7
|
export declare function pageWindow(page: number, pages: number, span?: number): (number | null)[];
|
|
8
|
-
export declare function Pagination({ page, pageSize, total, onChange, labels, span, className, }: {
|
|
8
|
+
export declare function Pagination({ page, pageSize, total, onChange, labels, span, className, ...rest }: {
|
|
9
9
|
/** Starts at 1. TR: 1'den başlar. */
|
|
10
10
|
page: number;
|
|
11
11
|
pageSize: number;
|
|
@@ -34,5 +34,7 @@ export declare function Pagination({ page, pageSize, total, onChange, labels, sp
|
|
|
34
34
|
summary?: (from: number, to: number, total: number) => string;
|
|
35
35
|
};
|
|
36
36
|
className?: string;
|
|
37
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
38
|
+
[k: `data-${string}`]: unknown;
|
|
37
39
|
}): import("react").JSX.Element;
|
|
38
40
|
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAOA;;;;GAIG;AAEH,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAiBnF;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;KAC/D,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BA8DA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { cn } from "../lib/cn.js";
|
|
4
|
+
import { dataProps } from "../lib/data-props.js";
|
|
4
5
|
import { Icon } from "./icon.js";
|
|
5
6
|
import { CaretLeft, CaretRight } from "./icons.js";
|
|
6
7
|
/**
|
|
@@ -29,13 +30,13 @@ export function pageWindow(page, pages, span = 1) {
|
|
|
29
30
|
out.push(pages);
|
|
30
31
|
return out;
|
|
31
32
|
}
|
|
32
|
-
export function Pagination({ page, pageSize, total, onChange, labels, span = 1, className, }) {
|
|
33
|
+
export function Pagination({ page, pageSize, total, onChange, labels, span = 1, className, ...rest }) {
|
|
33
34
|
const pages = total !== undefined ? Math.max(1, Math.ceil(total / pageSize)) : undefined;
|
|
34
35
|
const canPrev = page > 1;
|
|
35
36
|
const canNext = pages === undefined ? true : page < pages;
|
|
36
37
|
const from = (page - 1) * pageSize + 1;
|
|
37
38
|
const to = total !== undefined ? Math.min(page * pageSize, total) : page * pageSize;
|
|
38
|
-
return (_jsxs("nav", { className: cn("flex flex-wrap items-center gap-3", className), "aria-label": labels.page(page), children: [total !== undefined && labels.summary ? (_jsx("span", { className: "tamga-label tabular-nums", children: labels.summary(from, to, total) })) : null, _jsxs("span", { className: "ml-auto flex items-center gap-1.5", children: [_jsx("button", { type: "button", className: "tamga-icon-btn shrink-0", "aria-label": labels.previous, disabled: !canPrev, onClick: () => canPrev && onChange?.(page - 1), children: _jsx(Icon, { icon: CaretLeft, size: "sm" }) }), pages !== undefined
|
|
39
|
+
return (_jsxs("nav", { ...dataProps(rest), className: cn("flex flex-wrap items-center gap-3", className), "aria-label": labels.page(page), children: [total !== undefined && labels.summary ? (_jsx("span", { className: "tamga-label tabular-nums", children: labels.summary(from, to, total) })) : null, _jsxs("span", { className: "ml-auto flex items-center gap-1.5", children: [_jsx("button", { type: "button", className: "tamga-icon-btn shrink-0", "aria-label": labels.previous, disabled: !canPrev, onClick: () => canPrev && onChange?.(page - 1), children: _jsx(Icon, { icon: CaretLeft, size: "sm" }) }), pages !== undefined
|
|
39
40
|
? pageWindow(page, pages, span).map((n, i) => n === null ? (_jsx("span", { className: "px-1 text-small text-ink-faint", "aria-hidden": true, children: "\u2026" }, `gap-${i}`)) : (_jsx("button", { type: "button",
|
|
40
41
|
/* Seçili sayfa DOLGU almaz: "buradasın" bir eylem değildir
|
|
41
42
|
(Yasa 2). Gerekçesi `.tamga-page`'in üstünde — bu satır
|
package/dist/components/pie.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type PieSlice = {
|
|
|
7
7
|
label: string;
|
|
8
8
|
value: number;
|
|
9
9
|
};
|
|
10
|
-
export declare function PieChart({ slices, total, totalLabel, formatValue, inner, size, className, }: {
|
|
10
|
+
export declare function PieChart({ slices, total, totalLabel, formatValue, inner, size, className, ...rest }: {
|
|
11
11
|
/**
|
|
12
12
|
* Five slices at most: more does not read, and a chart that does not read is wrong
|
|
13
13
|
* information. TR: En çok beş dilim: fazlası okunmuyor, ve okunmayan bir grafik yanlış
|
|
@@ -36,5 +36,7 @@ export declare function PieChart({ slices, total, totalLabel, formatValue, inner
|
|
|
36
36
|
inner?: number;
|
|
37
37
|
size?: number;
|
|
38
38
|
className?: string;
|
|
39
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
40
|
+
[k: `data-${string}`]: unknown;
|
|
39
41
|
}): import("react").JSX.Element;
|
|
40
42
|
//# sourceMappingURL=pie.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pie.d.ts","sourceRoot":"","sources":["../../src/components/pie.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pie.d.ts","sourceRoot":"","sources":["../../src/components/pie.tsx"],"names":[],"mappings":"AAMA;;;;GAIG;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,KAAK,EACL,UAAU,EACV,WAAoB,EACpB,KAAY,EACZ,IAAU,EACV,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD;;;;OAIG;IACH,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC5B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAwJA"}
|
package/dist/components/pie.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useId, useState } from "react";
|
|
4
4
|
import { cn } from "../lib/cn.js";
|
|
5
|
+
import { dataProps } from "../lib/data-props.js";
|
|
5
6
|
const R = 100;
|
|
6
7
|
/** Kutup koordinatından kartezyene; 0° saat 12 yönü. */
|
|
7
8
|
function nokta(aci, yaricap) {
|
|
8
9
|
const rad = ((aci - 90) * Math.PI) / 180;
|
|
9
10
|
return [R + yaricap * Math.cos(rad), R + yaricap * Math.sin(rad)];
|
|
10
11
|
}
|
|
11
|
-
export function PieChart({ slices, total, totalLabel, formatValue = String, inner = 0.58, size = 200, className, }) {
|
|
12
|
+
export function PieChart({ slices, total, totalLabel, formatValue = String, inner = 0.58, size = 200, className, ...rest }) {
|
|
12
13
|
const id = useId();
|
|
13
14
|
/* Üzerinde durulan dilimin indeksi. Grafik ile legend AYNI durumu paylaşıyor:
|
|
14
15
|
legend satırına gelmek dilimi, dilime gelmek legend satırını vurguluyor.
|
|
@@ -25,7 +26,7 @@ export function PieChart({ slices, total, totalLabel, formatValue = String, inne
|
|
|
25
26
|
aci = son;
|
|
26
27
|
return { ...s, pay, bas, son, renk: `var(--color-chart-${(i % 5) + 1})` };
|
|
27
28
|
});
|
|
28
|
-
return (_jsxs("div", { className: cn("flex flex-wrap items-center gap-6", className), children: [_jsxs("svg", {
|
|
29
|
+
return (_jsxs("div", { ...dataProps(rest), className: cn("flex flex-wrap items-center gap-6", className), children: [_jsxs("svg", {
|
|
29
30
|
/* `viewBox` dilimin dışarı taşan halini de kapsıyor: üzerine gelinen
|
|
30
31
|
dilim 6 birim dışarı kayıyor, ve kutu büyümezse kırpılıyor. */
|
|
31
32
|
viewBox: `-8 -8 ${R * 2 + 16} ${R * 2 + 16}`, width: size, height: size, className: "shrink-0 overflow-visible", role: "img", "aria-labelledby": id, onMouseLeave: () => setUzerinde(null), children: [_jsx("title", { id: id, children: parcalar
|