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.
Files changed (127) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/dist/components/advanced-input.d.ts +16 -4
  3. package/dist/components/advanced-input.d.ts.map +1 -1
  4. package/dist/components/advanced-input.js +10 -8
  5. package/dist/components/appearance.d.ts +9 -3
  6. package/dist/components/appearance.d.ts.map +1 -1
  7. package/dist/components/appearance.js +7 -6
  8. package/dist/components/avatar.d.ts +6 -2
  9. package/dist/components/avatar.d.ts.map +1 -1
  10. package/dist/components/avatar.js +5 -4
  11. package/dist/components/badge.d.ts +9 -3
  12. package/dist/components/badge.d.ts.map +1 -1
  13. package/dist/components/badge.js +7 -6
  14. package/dist/components/bar.d.ts +3 -1
  15. package/dist/components/bar.d.ts.map +1 -1
  16. package/dist/components/bar.js +3 -2
  17. package/dist/components/chart.d.ts +3 -1
  18. package/dist/components/chart.d.ts.map +1 -1
  19. package/dist/components/chart.js +3 -2
  20. package/dist/components/checkbox.d.ts +3 -1
  21. package/dist/components/checkbox.d.ts.map +1 -1
  22. package/dist/components/checkbox.js +3 -2
  23. package/dist/components/chrome.d.ts +12 -4
  24. package/dist/components/chrome.d.ts.map +1 -1
  25. package/dist/components/chrome.js +9 -8
  26. package/dist/components/combobox.d.ts +3 -1
  27. package/dist/components/combobox.d.ts.map +1 -1
  28. package/dist/components/combobox.js +3 -2
  29. package/dist/components/data-table.d.ts +9 -3
  30. package/dist/components/data-table.d.ts.map +1 -1
  31. package/dist/components/data-table.js +7 -6
  32. package/dist/components/date-picker.d.ts +6 -2
  33. package/dist/components/date-picker.d.ts.map +1 -1
  34. package/dist/components/date-picker.js +5 -4
  35. package/dist/components/disclosure.d.ts +5 -2
  36. package/dist/components/disclosure.d.ts.map +1 -1
  37. package/dist/components/disclosure.js +5 -4
  38. package/dist/components/display.d.ts +43 -10
  39. package/dist/components/display.d.ts.map +1 -1
  40. package/dist/components/display.js +19 -16
  41. package/dist/components/empty-state.d.ts +15 -5
  42. package/dist/components/empty-state.d.ts.map +1 -1
  43. package/dist/components/empty-state.js +11 -10
  44. package/dist/components/error-state.d.ts +3 -1
  45. package/dist/components/error-state.d.ts.map +1 -1
  46. package/dist/components/error-state.js +3 -2
  47. package/dist/components/file-upload.d.ts +3 -1
  48. package/dist/components/file-upload.d.ts.map +1 -1
  49. package/dist/components/file-upload.js +3 -2
  50. package/dist/components/gauge.d.ts +4 -2
  51. package/dist/components/gauge.d.ts.map +1 -1
  52. package/dist/components/gauge.js +5 -4
  53. package/dist/components/layout.d.ts +11 -5
  54. package/dist/components/layout.d.ts.map +1 -1
  55. package/dist/components/layout.js +12 -10
  56. package/dist/components/log-view.d.ts +3 -1
  57. package/dist/components/log-view.d.ts.map +1 -1
  58. package/dist/components/log-view.js +3 -2
  59. package/dist/components/number-input.d.ts +3 -1
  60. package/dist/components/number-input.d.ts.map +1 -1
  61. package/dist/components/number-input.js +3 -2
  62. package/dist/components/overlay.d.ts +18 -6
  63. package/dist/components/overlay.d.ts.map +1 -1
  64. package/dist/components/overlay.js +13 -12
  65. package/dist/components/pagination.d.ts +3 -1
  66. package/dist/components/pagination.d.ts.map +1 -1
  67. package/dist/components/pagination.js +3 -2
  68. package/dist/components/pie.d.ts +3 -1
  69. package/dist/components/pie.d.ts.map +1 -1
  70. package/dist/components/pie.js +3 -2
  71. package/dist/components/primitives.d.ts +20 -7
  72. package/dist/components/primitives.d.ts.map +1 -1
  73. package/dist/components/primitives.js +15 -14
  74. package/dist/components/progress.d.ts +3 -6
  75. package/dist/components/progress.d.ts.map +1 -1
  76. package/dist/components/progress.js +3 -2
  77. package/dist/components/radio-group.d.ts +16 -1
  78. package/dist/components/radio-group.d.ts.map +1 -1
  79. package/dist/components/radio-group.js +4 -3
  80. package/dist/components/rich-text.d.ts +3 -1
  81. package/dist/components/rich-text.d.ts.map +1 -1
  82. package/dist/components/rich-text.js +3 -2
  83. package/dist/components/section.d.ts +3 -1
  84. package/dist/components/section.d.ts.map +1 -1
  85. package/dist/components/section.js +3 -2
  86. package/dist/components/skeleton.d.ts +25 -14
  87. package/dist/components/skeleton.d.ts.map +1 -1
  88. package/dist/components/skeleton.js +24 -18
  89. package/dist/components/slider.d.ts +3 -1
  90. package/dist/components/slider.d.ts.map +1 -1
  91. package/dist/components/slider.js +3 -2
  92. package/dist/components/spinner.d.ts +2 -1
  93. package/dist/components/spinner.d.ts.map +1 -1
  94. package/dist/components/spinner.js +3 -2
  95. package/dist/components/square-picker.d.ts +3 -1
  96. package/dist/components/square-picker.d.ts.map +1 -1
  97. package/dist/components/square-picker.js +3 -2
  98. package/dist/components/stacked-bar.d.ts +3 -1
  99. package/dist/components/stacked-bar.d.ts.map +1 -1
  100. package/dist/components/stacked-bar.js +3 -2
  101. package/dist/components/surface.d.ts +13 -5
  102. package/dist/components/surface.d.ts.map +1 -1
  103. package/dist/components/surface.js +11 -10
  104. package/dist/components/switch.d.ts +3 -1
  105. package/dist/components/switch.d.ts.map +1 -1
  106. package/dist/components/switch.js +3 -2
  107. package/dist/components/tabs.d.ts +3 -1
  108. package/dist/components/tabs.d.ts.map +1 -1
  109. package/dist/components/tabs.js +3 -2
  110. package/dist/components/timeline-strip.d.ts +3 -1
  111. package/dist/components/timeline-strip.d.ts.map +1 -1
  112. package/dist/components/timeline-strip.js +3 -2
  113. package/dist/components/tree-select.d.ts +3 -1
  114. package/dist/components/tree-select.d.ts.map +1 -1
  115. package/dist/components/tree-select.js +3 -2
  116. package/dist/index.d.ts +1 -1
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/kit.css +65 -1
  119. package/dist/lib/data-props.d.ts +20 -0
  120. package/dist/lib/data-props.d.ts.map +1 -0
  121. package/dist/lib/data-props.js +25 -0
  122. package/dist/patterns/wizard-template.d.ts +11 -5
  123. package/dist/patterns/wizard-template.d.ts.map +1 -1
  124. package/dist/patterns/wizard-template.js +1 -1
  125. package/dist/styles.css +1 -1
  126. package/dist/theme.css +1 -1
  127. 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?: string;
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;AAGtD;;;;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,GACV,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;CACpB,+BAWA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAa,EACb,IAAI,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,GACT,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;CACrB,+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,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAUA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,QAAgB,EAChB,SAAS,EACT,QAAQ,EACR,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,CAAC,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;CAClH,+BAUA"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/components/layout.tsx"],"names":[],"mappings":"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"}
@@ -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ış bağlantı yönlendiriciden geçmiyor: uygulamanın dışına çıkan bir adres
138
- istemci yönlendirmesiyle açılamaz, ve denemek sessizce bir sekme kaybettirir. */
139
- return Router && !external ? _jsx(Router, { ...shared, children: children }) : _jsx("a", { ...shared, children: children });
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":"AAIA,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,GACV,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;CACpB,+BAmDA"}
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":"AAOA;;;;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,GACV,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;CACpB,+BAoFA"}
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":"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"}
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":"AAMA;;;;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,GACV,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;CACpB,+BA8DA"}
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
@@ -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":"AAKA;;;;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,GACV,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;CACpB,+BAwJA"}
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"}
@@ -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