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
@@ -1,10 +1,11 @@
1
1
  import type { Tone } from "./tone.js";
2
2
  export { Spinner } from "./spinner.js";
3
- export declare function Separator({ vertical }: {
3
+ export declare function Separator({ vertical, ...rest }: {
4
4
  vertical?: boolean;
5
+ [k: `data-${string}`]: unknown;
5
6
  }): import("react").JSX.Element;
6
7
  /** Running is not a deviation, so the live mark stays neutral — the pulse carries it. */
7
- export declare function Beacon({ live, label, severity, }: {
8
+ export declare function Beacon({ live, label, severity, ...rest }: {
8
9
  live?: boolean;
9
10
  label?: string;
10
11
  /**
@@ -12,14 +13,18 @@ export declare function Beacon({ live, label, severity, }: {
12
13
  * işaret hiçbir şeye üstün gelmez; yarışması için ona bir sıra verin
13
14
  */
14
15
  severity?: number | null;
16
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
17
+ [k: `data-${string}`]: unknown;
15
18
  }): import("react").JSX.Element;
16
- export declare function Alert({ state, title, children, action, }: {
19
+ export declare function Alert({ state, title, children, action, ...rest }: {
17
20
  state?: Tone;
18
21
  title: string;
19
22
  children?: React.ReactNode;
20
23
  action?: React.ReactNode;
24
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
25
+ [k: `data-${string}`]: unknown;
21
26
  }): import("react").JSX.Element;
22
- export declare function Breadcrumb({ items, label, }: {
27
+ export declare function Breadcrumb({ items, label, ...rest }: {
23
28
  items: {
24
29
  label: string;
25
30
  href?: string;
@@ -29,16 +34,20 @@ export declare function Breadcrumb({ items, label, }: {
29
34
  * Spinner'daki nota bakın.
30
35
  */
31
36
  label: string;
37
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
38
+ [k: `data-${string}`]: unknown;
32
39
  }): import("react").JSX.Element;
33
- export declare function Field({ label, description, error, children, htmlFor, }: {
40
+ export declare function Field({ label, description, error, children, htmlFor, ...rest }: {
34
41
  label: string;
35
42
  description?: string;
36
43
  error?: string;
37
44
  children: React.ReactNode;
38
45
  htmlFor?: string;
46
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
47
+ [k: `data-${string}`]: unknown;
39
48
  }): import("react").JSX.Element;
40
49
  /** A plain select: the same overlay as the searchable one, without the search. */
41
- export declare function Select({ options, value, onChange, placeholder, loading, loadingRows, "aria-label": ariaLabel, className, }: {
50
+ export declare function Select({ options, value, onChange, placeholder, loading, loadingRows, "aria-label": ariaLabel, className, ...rest }: {
42
51
  options: string[];
43
52
  value?: string;
44
53
  onChange?: (v: string) => void;
@@ -81,9 +90,11 @@ export declare function Select({ options, value, onChange, placeholder, loading,
81
90
  /** Genişlik ve konum çağıranın. Varsayılan `w-56`; `w-full` verildiğinde
82
91
  * tailwind-merge onu ezer, yani kontrol kabına uyar. */
83
92
  className?: string;
93
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
94
+ [k: `data-${string}`]: unknown;
84
95
  }): import("react").JSX.Element;
85
96
  /** Side panel. Overlay plane, so it carries the 6px offset and a scrim. */
86
- export declare function Sheet({ open, onClose, title, children, footer, loading, closeLabel, side, }: {
97
+ export declare function Sheet({ open, onClose, title, children, footer, loading, closeLabel, side, ...rest }: {
87
98
  open: boolean;
88
99
  onClose: () => void;
89
100
  title: string;
@@ -113,5 +124,7 @@ export declare function Sheet({ open, onClose, title, children, footer, loading,
113
124
  * henüz gelmedi; panel bir dönen simge göstermek yerine şeklini koruyor
114
125
  */
115
126
  loading?: boolean;
127
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
128
+ [k: `data-${string}`]: unknown;
116
129
  }): import("react").JSX.Element | null;
117
130
  //# sourceMappingURL=primitives.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/components/primitives.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAWtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQvC,wBAAgB,SAAS,CAAC,EAAE,QAAgB,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,+BAErE;AAED,yFAAyF;AACzF,wBAAgB,MAAM,CAAC,EACrB,IAAW,EACX,KAAK,EACL,QAAa,GACd,EAAE;IACD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,+BAQA;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAiB,EACjB,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE;IACD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B,+BAoBA;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,GACN,EAAE;IACD,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,+BA0BA;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,+BAgBA;AAED,kFAAkF;AAClF,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,EACX,OAAe,EACf,WAAe,EACf,YAAY,EAAE,SAAS,EACvB,SAAS,GACV,EAAE;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;6DACyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BA0EA;AAED,2EAA2E;AAC3E,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAe,EACf,UAAU,EACV,IAAY,GACb,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,sCAoDA"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/components/primitives.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { CaretRight, Check, Close } from "./icons.js";
7
7
  import { SkeletonOptions, SkeletonPanel } from "./skeleton.js";
8
8
  import { useScrollLock } from "../lib/scroll-lock.js";
9
9
  import { cn } from "../lib/cn.js";
10
+ import { dataProps } from "../lib/data-props.js";
10
11
  import { useFocusTrap, useListKeys } from "./a11y.js";
11
12
  import { useLiveClaim } from "./live-scope.js";
12
13
  import { Button, MiniButton } from "./button.js";
@@ -16,29 +17,29 @@ export { Spinner } from "./spinner.js";
16
17
  * idea — if a component here needs a rule that Foundations does not
17
18
  * already state, the rule is missing, not the component.
18
19
  * ------------------------------------------------------------------ */
19
- export function Separator({ vertical = false }) {
20
- return _jsx("span", { className: vertical ? "tamga-rule-v" : "tamga-rule-h", role: "separator" });
20
+ export function Separator({ vertical = false, ...rest }) {
21
+ return _jsx("span", { ...dataProps(rest), className: vertical ? "tamga-rule-v" : "tamga-rule-h", role: "separator" });
21
22
  }
22
23
  /** Running is not a deviation, so the live mark stays neutral — the pulse carries it. */
23
- export function Beacon({ live = true, label, severity = 50, }) {
24
+ export function Beacon({ live = true, label, severity = 50, ...rest }) {
24
25
  const pulses = useLiveClaim(live ? severity : null);
25
- return (_jsxs("span", { className: "inline-flex items-center gap-2", children: [_jsx("span", { className: "tamga-beacon", "data-live": pulses }), label ? _jsx("span", { className: "text-small text-ink-faint", children: label }) : null] }));
26
+ return (_jsxs("span", { ...dataProps(rest), className: "inline-flex items-center gap-2", children: [_jsx("span", { className: "tamga-beacon", "data-live": pulses }), label ? _jsx("span", { className: "text-small text-ink-faint", children: label }) : null] }));
26
27
  }
27
- export function Alert({ state = "caution", title, children, action, }) {
28
+ export function Alert({ state = "caution", title, children, action, ...rest }) {
28
29
  const h = toneOf(state);
29
- return (_jsxs("div", { className: "tamga-alert", style: { borderLeftColor: h.mark }, role: "status", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-body font-medium text-ink", children: title }), children ? (_jsx("div", { className: "mt-1 text-small leading-relaxed text-ink-soft", children: children })) : null] }), action ? _jsx("div", { className: "shrink-0", children: action }) : null] }));
30
+ return (_jsxs("div", { ...dataProps(rest), className: "tamga-alert", style: { borderLeftColor: h.mark }, role: "status", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-body font-medium text-ink", children: title }), children ? (_jsx("div", { className: "mt-1 text-small leading-relaxed text-ink-soft", children: children })) : null] }), action ? _jsx("div", { className: "shrink-0", children: action }) : null] }));
30
31
  }
31
- export function Breadcrumb({ items, label, }) {
32
- return (_jsx("nav", { "aria-label": label, children: _jsx("ol", { className: "flex flex-wrap items-center gap-2 text-body", children: items.map((item, i) => {
32
+ export function Breadcrumb({ items, label, ...rest }) {
33
+ return (_jsx("nav", { ...dataProps(rest), "aria-label": label, children: _jsx("ol", { className: "flex flex-wrap items-center gap-2 text-body", children: items.map((item, i) => {
33
34
  const last = i === items.length - 1;
34
35
  return (_jsxs("li", { className: "flex items-center gap-2", children: [last ? (_jsx("span", { "aria-current": "page", className: "font-medium text-ink", children: item.label })) : (_jsx("a", { href: item.href ?? "#", className: "tamga-link", children: item.label })), last ? null : (_jsx(Icon, { icon: CaretRight, size: "xs", weight: "bold", className: "text-ink-faint" }))] }, item.label));
35
36
  }) }) }));
36
37
  }
37
- export function Field({ label, description, error, children, htmlFor, }) {
38
- return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("label", { htmlFor: htmlFor, className: "text-small font-medium text-ink", children: label }), children, error ? (_jsx("p", { className: "text-small", style: { color: toneOf("danger").fg }, children: error })) : description ? (_jsx("p", { className: "text-small text-ink-faint", children: description })) : null] }));
38
+ export function Field({ label, description, error, children, htmlFor, ...rest }) {
39
+ return (_jsxs("div", { ...dataProps(rest), className: "flex flex-col gap-2", children: [_jsx("label", { htmlFor: htmlFor, className: "text-small font-medium text-ink", children: label }), children, error ? (_jsx("p", { className: "text-small", style: { color: toneOf("danger").fg }, children: error })) : description ? (_jsx("p", { className: "text-small text-ink-faint", children: description })) : null] }));
39
40
  }
40
41
  /** A plain select: the same overlay as the searchable one, without the search. */
41
- export function Select({ options, value, onChange, placeholder, loading = false, loadingRows = 4, "aria-label": ariaLabel, className, }) {
42
+ export function Select({ options, value, onChange, placeholder, loading = false, loadingRows = 4, "aria-label": ariaLabel, className, ...rest }) {
42
43
  const [open, setOpen] = useState(false);
43
44
  const [inner, setInner] = useState(value ?? "");
44
45
  const box = useRef(null);
@@ -56,14 +57,14 @@ export function Select({ options, value, onChange, placeholder, loading = false,
56
57
  document.addEventListener("mousedown", away);
57
58
  return () => document.removeEventListener("mousedown", away);
58
59
  }, [open]);
59
- return (_jsxs("div", { ref: box, className: cn("relative w-56", className), children: [_jsxs(Button, { full: true, className: "justify-between", "aria-haspopup": "listbox", "aria-expanded": open, "aria-label": ariaLabel, onClick: () => setOpen((o) => !o), children: [_jsx("span", { className: cn("min-w-0 truncate", current ? "" : "text-ink-faint"), children: current || placeholder }), _jsx(Icon, { icon: CaretRight, size: "xs", className: "shrink-0 rotate-90" })] }), open && (_jsxs("div", { ref: list, role: "listbox", className: "tamga-overlay absolute left-0 top-[var(--overlay-below)] z-40 w-full overflow-hidden py-1", "aria-busy": loading || undefined, children: [loading && _jsx(SkeletonOptions, { rows: loadingRows }), !loading && options.map((o) => (_jsxs("button", { role: "option", "aria-selected": o === current, "data-tamga-option": true, className: "tamga-option", "data-selected": o === current, onClick: () => {
60
+ return (_jsxs("div", { ...dataProps(rest), ref: box, className: cn("relative w-56", className), children: [_jsxs(Button, { full: true, className: "justify-between", "aria-haspopup": "listbox", "aria-expanded": open, "aria-label": ariaLabel, onClick: () => setOpen((o) => !o), children: [_jsx("span", { className: cn("min-w-0 truncate", current ? "" : "text-ink-faint"), children: current || placeholder }), _jsx(Icon, { icon: CaretRight, size: "xs", className: "shrink-0 rotate-90" })] }), open && (_jsxs("div", { ref: list, role: "listbox", className: "tamga-overlay absolute left-0 top-[var(--overlay-below)] z-40 w-full overflow-hidden py-1", "aria-busy": loading || undefined, children: [loading && _jsx(SkeletonOptions, { rows: loadingRows }), !loading && options.map((o) => (_jsxs("button", { role: "option", "aria-selected": o === current, "data-tamga-option": true, className: "tamga-option", "data-selected": o === current, onClick: () => {
60
61
  setInner(o);
61
62
  onChange?.(o);
62
63
  setOpen(false);
63
64
  }, children: [o, o === current && _jsx(Icon, { icon: Check, size: "xs", weight: "bold", className: "ml-auto" })] }, o)))] }))] }));
64
65
  }
65
66
  /** Side panel. Overlay plane, so it carries the 6px offset and a scrim. */
66
- export function Sheet({ open, onClose, title, children, footer, loading = false, closeLabel, side = "end", }) {
67
+ export function Sheet({ open, onClose, title, children, footer, loading = false, closeLabel, side = "end", ...rest }) {
67
68
  /* the trap has to be called before any early return, so the hook lives here
68
69
  and the null is returned after it */
69
70
  const panel = useFocusTrap(open);
@@ -77,7 +78,7 @@ export function Sheet({ open, onClose, title, children, footer, loading = false,
77
78
  }, [open, onClose]);
78
79
  if (!open)
79
80
  return null;
80
- return (_jsxs("div", { className: cn("fixed inset-0 z-50 flex", side === "start" ? "justify-start" : "justify-end"), children: [_jsx("div", { className: "tamga-scrim absolute inset-0", "aria-hidden": true, onClick: onClose }), _jsxs("aside", { ref: panel, role: "dialog", "aria-modal": true, "aria-label": title,
81
+ return (_jsxs("div", { ...dataProps(rest), className: cn("fixed inset-0 z-50 flex", side === "start" ? "justify-start" : "justify-end"), children: [_jsx("div", { className: "tamga-scrim absolute inset-0", "aria-hidden": true, onClick: onClose }), _jsxs("aside", { ref: panel, role: "dialog", "aria-modal": true, "aria-label": title,
81
82
  /* PANEL KAYARAK GİRİYOR, VE GİRDİĞİ KENARDAN.
82
83
  Animasyonsuz hâli bir kare içinde beliriyordu: nereden geldiği,
83
84
  dolayısıyla nereye geri gideceği okunmuyordu. Kayma yönü `side` ile
@@ -1,9 +1,4 @@
1
- /**
2
- * Progress — an instrument scale.
3
- *
4
- * Gerekçe: docs/gerekce/03-grafik-ve-olcum.md
5
- */
6
- export declare function Progress({ value, label, showScale, ariaLabel, className, }: {
1
+ export declare function Progress({ value, label, showScale, ariaLabel, className, ...rest }: {
7
2
  /**
8
3
  * 0–100; clamped, so a bad number cannot paint outside the track TR: 0–100; sınırlanıyor,
9
4
  * yani kötü bir sayı yolun dışına boyayamıyor
@@ -25,5 +20,7 @@ export declare function Progress({ value, label, showScale, ariaLabel, className
25
20
  */
26
21
  ariaLabel?: string;
27
22
  className?: string;
23
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
24
+ [k: `data-${string}`]: unknown;
28
25
  }): import("react").JSX.Element;
29
26
  //# sourceMappingURL=progress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,SAAiB,EACjB,SAAS,EACT,SAAc,GACf,EAAE;IACD;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BA4CA"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AASA,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,SAAiB,EACjB,SAAS,EACT,SAAc,EACd,GAAG,IAAI,EACR,EAAE;IACD;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BA4CA"}
@@ -1,13 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { dataProps } from "../lib/data-props.js";
2
3
  /**
3
4
  * Progress — an instrument scale.
4
5
  *
5
6
  * Gerekçe: docs/gerekce/03-grafik-ve-olcum.md
6
7
  */
7
8
  const TICKS = [10, 20, 30, 40, 50, 60, 70, 80, 90];
8
- export function Progress({ value, label, showScale = false, ariaLabel, className = "", }) {
9
+ export function Progress({ value, label, showScale = false, ariaLabel, className = "", ...rest }) {
9
10
  const pct = Math.max(0, Math.min(100, value));
10
- return (_jsxs("div", { className: className, children: [_jsxs("div", { className: "tamga-progress", role: "progressbar", "aria-valuenow": Math.round(pct), "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": label ?? ariaLabel ?? "Progress", children: [_jsx("div", { className: "tamga-progress-fill", style: { width: `${pct}%` } }), TICKS.map((t) => (_jsx("span", { "aria-hidden": true, className: "tamga-progress-tick", style: {
11
+ return (_jsxs("div", { ...dataProps(rest), className: className, children: [_jsxs("div", { className: "tamga-progress", role: "progressbar", "aria-valuenow": Math.round(pct), "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": label ?? ariaLabel ?? "Progress", children: [_jsx("div", { className: "tamga-progress-fill", style: { width: `${pct}%` } }), TICKS.map((t) => (_jsx("span", { "aria-hidden": true, className: "tamga-progress-tick", style: {
11
12
  left: `${t}%`,
12
13
  /* a tick over the fill has to cut out of it, not sit on it */
13
14
  background: t <= pct ? "var(--color-page)" : "var(--color-tick)",
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- export declare function RadioGroup<T extends string>({ options, value, onChange, label, disabled, className, }: {
2
+ export declare function RadioGroup<T extends string>({ options, value, onChange, label, look, disabled, className, ...rest }: {
3
3
  options: readonly {
4
4
  value: T;
5
5
  label: ReactNode;
@@ -11,7 +11,22 @@ export declare function RadioGroup<T extends string>({ options, value, onChange,
11
11
  * adı: "hangi seçeneklerden biri" sorusunun cevabı.
12
12
  */
13
13
  label: string;
14
+ /**
15
+ * The shell each option is drawn in. TR: Her seçeneğin çizildiği kabuk.
16
+ *
17
+ * `list` alt alta, işaret ve etiket; `chip` yan yana sarılan küçük kabuklar; `card` ikinci bir
18
+ * satır taşıyacak kadar yer veren bir kart yüzeyi.
19
+ *
20
+ * Değişen yalnız kabuk: `role="radiogroup"`, `role="radio"`, `aria-checked` ve klavye davranışı
21
+ * üçünde de aynı. Seçili kabuk çerçeve ve sert offset alıyor, dolgu değil (Yasa 2).
22
+ *
23
+ * İkinci satır `label`in içine yazılıyor; ayrı bir `hint` alanı yok, çünkü etiket zaten
24
+ * `ReactNode` ve yalnız tek bir kabukta anlamı olan bir prop props tablosunda herkese görünürdü.
25
+ */
26
+ look?: "list" | "chip" | "card";
14
27
  disabled?: boolean;
15
28
  className?: string;
29
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
30
+ [k: `data-${string}`]: unknown;
16
31
  }): import("react").JSX.Element;
17
32
  //# sourceMappingURL=radio-group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAC3C,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAgB,EAChB,SAAS,GACV,EAAE;IACD,OAAO,EAAE,SAAS;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BA6BA"}
1
+ {"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvC,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAC3C,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAa,EACb,QAAgB,EAChB,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD,OAAO,EAAE,SAAS;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAkDA"}
@@ -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 { OFF } from "./control-base.js";
5
6
  /* ---------------------------------------------------------------- *
6
7
  * RadioGroup — akranlar arasından TEK seçim.
@@ -8,8 +9,8 @@ import { OFF } from "./control-base.js";
8
9
  * Grubun kendisi `role="radiogroup"`, satırlar `role="radio"`. İkisi birden
9
10
  * olmadan ekran okuyucu "üç ayrı düğme" duyurur, "üç seçenekten biri" değil.
10
11
  * ---------------------------------------------------------------- */
11
- export function RadioGroup({ options, value, onChange, label, disabled = false, className, }) {
12
- return (_jsx("div", { role: "radiogroup", "aria-label": label, className: cn("flex flex-col gap-2", className), children: options.map((o) => (_jsxs("button", { type: "button", role: "radio", "aria-checked": value === o.value, "aria-disabled": disabled || undefined, onClick: () => !disabled && onChange?.(o.value),
12
+ export function RadioGroup({ options, value, onChange, label, look = "list", disabled = false, className, ...rest }) {
13
+ return (_jsx("div", { ...dataProps(rest), role: "radiogroup", "aria-label": label, "data-look": look, className: cn(look === "list" ? "flex flex-col gap-2" : "flex flex-wrap gap-2", look === "card" && "sm:grid sm:grid-cols-3", className), children: options.map((o) => (_jsxs("button", { type: "button", role: "radio", "aria-checked": value === o.value, "aria-disabled": disabled || undefined, onClick: () => !disabled && onChange?.(o.value),
13
14
  /* ÜSTTEN HİZALI VE TAM GENİŞLİK, ve ikisi de iki satırlık bir
14
15
  seçenek yüzünden değişti.
15
16
  `items-center` tek satırlık etiketlerde doğru duruyordu; altına
@@ -19,5 +20,5 @@ export function RadioGroup({ options, value, onChange, label, disabled = false,
19
20
  erkenden sarıyor ve seçenekler farklı genişliklerde tırtıklı bir
20
21
  sütun oluşturuyordu. Tam genişlik hepsini aynı sol kenara ve aynı
21
22
  sarma noktasına oturtuyor. */
22
- className: "flex w-full items-start gap-2 text-left text-body", style: disabled ? OFF : undefined, children: [_jsx("span", { className: "tamga-radio tamga-choice-mark", "data-checked": value === o.value }), _jsx("span", { className: "min-w-0 flex-1", children: o.label })] }, o.value))) }));
23
+ className: cn("text-body", look === "list" && "flex w-full items-start gap-2 text-left", look === "chip" && "tamga-choice-chip", look === "card" && "tamga-choice-card"), style: disabled ? OFF : undefined, children: [_jsx("span", { className: cn("tamga-radio", look !== "chip" && "tamga-choice-mark"), "data-checked": value === o.value }), _jsx("span", { className: "min-w-0 flex-1", children: o.label })] }, o.value))) }));
23
24
  }
@@ -4,7 +4,7 @@
4
4
  * Gerekçe: docs/gerekce/01-form-ve-girdi.md
5
5
  */
6
6
  export type RichTextFormat = "bold" | "italic" | "link" | "h3" | "h4" | "h5" | "ul" | "ol";
7
- export declare function RichText({ value, onChange, allow, labels, ariaLabel, rows, disabled, className, }: {
7
+ export declare function RichText({ value, onChange, allow, labels, ariaLabel, rows, disabled, className, ...rest }: {
8
8
  /**
9
9
  * HTML. The kit does not sanitise it: which tags are valid is the product's rule. TR: HTML.
10
10
  * Kit onu temizlemez: hangi etiketin geçerli olduğu ürünün kuralı.
@@ -47,5 +47,7 @@ export declare function RichText({ value, onChange, allow, labels, ariaLabel, ro
47
47
  rows?: number;
48
48
  disabled?: boolean;
49
49
  className?: string;
50
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
51
+ [k: `data-${string}`]: unknown;
50
52
  }): import("react").JSX.Element;
51
53
  //# sourceMappingURL=rich-text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../../src/components/rich-text.tsx"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAuB3F,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,IAAS,EACT,QAAQ,EACR,SAAS,GACV,EAAE;IACD;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;;;;;OAKG;IACH,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BA2LA"}
1
+ {"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../../src/components/rich-text.tsx"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAuB3F,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,IAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;;;;;OAKG;IACH,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BA2LA"}
@@ -2,6 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useState } 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 { Bold, BulletList, Check, Close, Italic, Link, NumberedList } from "./icons.js";
7
8
  const KOMUTLAR = {
@@ -21,7 +22,7 @@ const SIMGELER = {
21
22
  ul: BulletList,
22
23
  ol: NumberedList,
23
24
  };
24
- export function RichText({ value, onChange, allow, labels, ariaLabel, rows = 10, disabled, className, }) {
25
+ export function RichText({ value, onChange, allow, labels, ariaLabel, rows = 10, disabled, className, ...rest }) {
25
26
  const alan = useRef(null);
26
27
  const [aktif, setAktif] = useState({});
27
28
  const [baglantiAcik, setBaglantiAcik] = useState(false);
@@ -125,7 +126,7 @@ export function RichText({ value, onChange, allow, labels, ariaLabel, rows = 10,
125
126
  setAdres("");
126
127
  yayinla();
127
128
  }
128
- return (_jsxs("div", { className: cn("tamga-editor", disabled && "tamga-editor-disabled", className), children: [_jsx("div", { className: "tamga-editor-bar", role: "toolbar", "aria-label": ariaLabel, children: allow.map((f) => {
129
+ return (_jsxs("div", { ...dataProps(rest), className: cn("tamga-editor", disabled && "tamga-editor-disabled", className), children: [_jsx("div", { className: "tamga-editor-bar", role: "toolbar", "aria-label": ariaLabel, children: allow.map((f) => {
129
130
  const simge = SIMGELER[f];
130
131
  return (_jsx("button", { type: "button", disabled: disabled, title: labels[f], "aria-label": labels[f], "aria-pressed": KOMUTLAR[f].command === "createLink" ? undefined : (aktif[f] ?? false), "data-on": aktif[f] || undefined,
131
132
  /* `mousedown`ta engelleniyor: tıklama odağı alandan almazsa
@@ -2,7 +2,7 @@
2
2
  * A card header. It carries the card's own left line and is closed by the
3
3
  * single rule weight used everywhere else.
4
4
  */
5
- export declare function SectionHead({ title, meta, mono, action, }: {
5
+ export declare function SectionHead({ title, meta, mono, action, ...rest }: {
6
6
  title: string;
7
7
  meta?: string;
8
8
  /**
@@ -11,5 +11,7 @@ export declare function SectionHead({ title, meta, mono, action, }: {
11
11
  */
12
12
  mono?: boolean;
13
13
  action?: React.ReactNode;
14
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
15
+ [k: `data-${string}`]: unknown;
14
16
  }): import("react").JSX.Element;
15
17
  //# sourceMappingURL=section.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../src/components/section.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,IAAI,EACJ,IAAY,EACZ,MAAM,GACP,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B,+BAUA"}
1
+ {"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../src/components/section.tsx"],"names":[],"mappings":"AACA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,IAAI,EACJ,IAAY,EACZ,MAAM,EACN,GAAG,IAAI,EACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAUA"}
@@ -1,8 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { dataProps } from "../lib/data-props.js";
2
3
  /**
3
4
  * A card header. It carries the card's own left line and is closed by the
4
5
  * single rule weight used everywhere else.
5
6
  */
6
- export function SectionHead({ title, meta, mono = false, action, }) {
7
- return (_jsxs("div", { className: "tamga-head tamga-gutter tamga-section", children: [_jsx("h3", { className: `text-subhead font-semibold ${mono ? "font-mono text-control font-bold" : ""}`, children: title }), meta ? _jsx("span", { className: "tamga-label", children: meta }) : null, action ? _jsx("div", { className: "ml-auto flex items-center gap-2", children: action }) : null] }));
7
+ export function SectionHead({ title, meta, mono = false, action, ...rest }) {
8
+ return (_jsxs("div", { ...dataProps(rest), className: "tamga-head tamga-gutter tamga-section", children: [_jsx("h3", { className: `text-subhead font-semibold ${mono ? "font-mono text-control font-bold" : ""}`, children: title }), meta ? _jsx("span", { className: "tamga-label", children: meta }) : null, action ? _jsx("div", { className: "ml-auto flex items-center gap-2", children: action }) : null] }));
8
9
  }
@@ -1,25 +1,26 @@
1
- /**
2
- * Skeletons.
3
- *
4
- * Gerekçe: docs/gerekce/04-bos-ve-hata.md
5
- */
6
- export declare function Skeleton({ className, index, style, }: {
1
+ export declare function Skeleton({ className, index, style, ...rest }: {
7
2
  className?: string;
8
3
  index?: number;
9
4
  style?: React.CSSProperties;
5
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
6
+ [k: `data-${string}`]: unknown;
10
7
  }): import("react").JSX.Element;
11
8
  /** Paragraph copy. The last line is always short — real text ends mid-line. */
12
- export declare function SkeletonText({ lines, className, }: {
9
+ export declare function SkeletonText({ lines, className, ...rest }: {
13
10
  lines?: number;
14
11
  className?: string;
12
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
13
+ [k: `data-${string}`]: unknown;
15
14
  }): import("react").JSX.Element;
16
15
  /**
17
16
  * A list row. Mirrors `.tamga-list-row` exactly, including the 56px height, so the
18
17
  * skeleton list and the real list are the same object with the text removed.
19
18
  */
20
- export declare function SkeletonRows({ rows, dense, }: {
19
+ export declare function SkeletonRows({ rows, dense, ...rest }: {
21
20
  rows?: number;
22
21
  dense?: boolean;
22
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
23
+ [k: `data-${string}`]: unknown;
23
24
  }): import("react").JSX.Element;
24
25
  /**
25
26
  * The KPI tile: icon tile, label, big number.
@@ -29,18 +30,23 @@ export declare function SkeletonRows({ rows, dense, }: {
29
30
  * bir iskeletin tek işi o zıplamayı önlemek. Bu yüzden ikisi aynı sınıfı
30
31
  * (`tamga-kpi`) paylaşıyor: kalıp bir yerde değişince ikisi birden değişiyor.
31
32
  */
32
- export declare function SkeletonKpi({ index }: {
33
+ export declare function SkeletonKpi({ index, ...rest }: {
33
34
  index?: number;
35
+ [k: `data-${string}`]: unknown;
34
36
  }): import("react").JSX.Element;
35
37
  /** A card with a section head and a body area of a given height. */
36
- export declare function SkeletonCard({ height, title, }: {
38
+ export declare function SkeletonCard({ height, title, ...rest }: {
37
39
  height?: number;
38
40
  title?: boolean;
41
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
42
+ [k: `data-${string}`]: unknown;
39
43
  }): import("react").JSX.Element;
40
44
  /** A table: header rule plus n body rows across the given column widths. */
41
- export declare function SkeletonTable({ rows, cols, }: {
45
+ export declare function SkeletonTable({ rows, cols, ...rest }: {
42
46
  rows?: number;
43
47
  cols?: string[];
48
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
49
+ [k: `data-${string}`]: unknown;
44
50
  }): import("react").JSX.Element;
45
51
  /**
46
52
  * Panel contents.
@@ -52,18 +58,23 @@ export declare function SkeletonTable({ rows, cols, }: {
52
58
  *
53
59
  * Matches `.tamga-option` — 40px tall, 16px side padding, icon slot then label.
54
60
  */
55
- export declare function SkeletonOptions({ rows }: {
61
+ export declare function SkeletonOptions({ rows, ...rest }: {
56
62
  rows?: number;
63
+ [k: `data-${string}`]: unknown;
57
64
  }): import("react").JSX.Element;
58
65
  /** Free-form panel body — popover, dialog, sheet. */
59
- export declare function SkeletonPanel({ lines, block, }: {
66
+ export declare function SkeletonPanel({ lines, block, ...rest }: {
60
67
  lines?: number;
61
68
  /**
62
69
  * height of a leading block (a chart, a map, an avatar row) if the panel has one TR: panelde
63
70
  * varsa baştaki bloğun (bir grafik, bir harita, bir avatar satırı) yüksekliği
64
71
  */
65
72
  block?: number;
73
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
74
+ [k: `data-${string}`]: unknown;
66
75
  }): import("react").JSX.Element;
67
76
  /** Page band: title, subtitle, and the actions that sit on the right. */
68
- export declare function SkeletonPageBand(): import("react").JSX.Element;
77
+ export declare function SkeletonPageBand({ ...rest }: {
78
+ [k: `data-${string}`]: unknown;
79
+ }): import("react").JSX.Element;
69
80
  //# sourceMappingURL=skeleton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,wBAAgB,QAAQ,CAAC,EACvB,SAAc,EACd,KAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,+BAIA;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,EAC3B,KAAS,EACT,SAAc,GACf,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAcA;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAQ,EACR,KAAa,GACd,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,+BAiBA;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAS,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,+BAU5D;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,EAC3B,MAAY,EACZ,KAAY,GACb,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,+BAiBA;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,EAC5B,IAAQ,EACR,IAAgD,GACjD,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,+BA8BA;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAAE,IAAQ,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAgB9D;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,EAC5B,KAAS,EACT,KAAK,GACN,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,+BAOA;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,gCAa/B"}
1
+ {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"AAcA,wBAAgB,QAAQ,CAAC,EACvB,SAAc,EACd,KAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAIA;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,EAC3B,KAAS,EACT,SAAc,EACd,GAAG,IAAI,EACR,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAcA;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAQ,EACR,KAAa,EACb,GAAG,IAAI,EACR,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAkBA;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAS,EAAE,GAAG,IAAI,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAA;CAAE,+BAUrG;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,EAC3B,MAAY,EACZ,KAAY,EACZ,GAAG,IAAI,EACR,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAiBA;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,EAC5B,IAAQ,EACR,IAAgD,EAChD,GAAG,IAAI,EACR,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BA8BA;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAAE,IAAQ,EAAE,GAAG,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAA;CAAE,+BAgBvG;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,EAC5B,KAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAOA;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE;IAAE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAA;CAAE,+BAa/E"}
@@ -1,4 +1,6 @@
1
+ import { createElement as _createElement } from "react";
1
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { dataProps } from "../lib/data-props.js";
2
4
  /**
3
5
  * Skeletons.
4
6
  *
@@ -9,20 +11,24 @@ const MAX_STEPS = 6;
9
11
  function delay(i = 0) {
10
12
  return { ["--tamga-delay"]: `${(i % MAX_STEPS) * STEP}ms` };
11
13
  }
12
- export function Skeleton({ className = "", index = 0, style, }) {
13
- return (_jsx("span", { className: `tamga-skeleton block ${className}`, style: { ...delay(index), ...style } }));
14
+ export function Skeleton({ className = "", index = 0, style, ...rest }) {
15
+ return (_jsx("span", { ...dataProps(rest), className: `tamga-skeleton block ${className}`, style: { ...delay(index), ...style } }));
14
16
  }
15
17
  /** Paragraph copy. The last line is always short — real text ends mid-line. */
16
- export function SkeletonText({ lines = 3, className = "", }) {
18
+ export function SkeletonText({ lines = 3, className = "", ...rest }) {
17
19
  const widths = ["100%", "96%", "92%", "98%"];
18
- return (_jsx("span", { className: `flex flex-col gap-2 ${className}`, children: Array.from({ length: lines }, (_, i) => (_jsx(Skeleton, { index: i, className: "h-3", style: { width: i === lines - 1 ? "62%" : widths[i % widths.length] } }, i))) }));
20
+ return (_jsx("span", { ...dataProps(rest), className: `flex flex-col gap-2 ${className}`, children: Array.from({ length: lines }, (_, i) => (_jsx(Skeleton, { index: i, className: "h-3", style: { width: i === lines - 1 ? "62%" : widths[i % widths.length] } }, i))) }));
19
21
  }
20
22
  /**
21
23
  * A list row. Mirrors `.tamga-list-row` exactly, including the 56px height, so the
22
24
  * skeleton list and the real list are the same object with the text removed.
23
25
  */
24
- export function SkeletonRows({ rows = 5, dense = false, }) {
25
- return (_jsx(_Fragment, { children: Array.from({ length: rows }, (_, i) => (_jsxs("div", { className: `tamga-list-row ${dense ? "tamga-list-row-sm" : ""}`, "aria-hidden": true, children: [_jsx(Skeleton, { index: i, className: "size-2.5 shrink-0" }), _jsx(Skeleton, { index: i, className: "h-3 w-40 shrink-0" }), _jsx(Skeleton, { index: i, className: "h-3 min-w-0 flex-1 max-w-28" }), _jsx(Skeleton, { index: i, className: "ml-auto h-3 w-14 shrink-0" })] }, i))) }));
26
+ export function SkeletonRows({ rows = 5, dense = false, ...rest }) {
27
+ return (_jsx(_Fragment, { children: Array.from({ length: rows }, (_, i) => (_createElement("div", { ...dataProps(rest), key: i, className: `tamga-list-row ${dense ? "tamga-list-row-sm" : ""}`, "aria-hidden": true },
28
+ _jsx(Skeleton, { index: i, className: "size-2.5 shrink-0" }),
29
+ _jsx(Skeleton, { index: i, className: "h-3 w-40 shrink-0" }),
30
+ _jsx(Skeleton, { index: i, className: "h-3 min-w-0 flex-1 max-w-28" }),
31
+ _jsx(Skeleton, { index: i, className: "ml-auto h-3 w-14 shrink-0" })))) }));
26
32
  }
27
33
  /**
28
34
  * The KPI tile: icon tile, label, big number.
@@ -32,16 +38,16 @@ export function SkeletonRows({ rows = 5, dense = false, }) {
32
38
  * bir iskeletin tek işi o zıplamayı önlemek. Bu yüzden ikisi aynı sınıfı
33
39
  * (`tamga-kpi`) paylaşıyor: kalıp bir yerde değişince ikisi birden değişiyor.
34
40
  */
35
- export function SkeletonKpi({ index = 0 }) {
36
- return (_jsxs("section", { className: "tamga-kpi", "aria-hidden": true, children: [_jsx(Skeleton, { index: index, className: "size-10 shrink-0" }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx(Skeleton, { index: index + 1, className: "h-2.5 w-20" }), _jsx(Skeleton, { index: index + 2, className: "mt-2 h-7 w-24" })] })] }));
41
+ export function SkeletonKpi({ index = 0, ...rest }) {
42
+ return (_jsxs("section", { ...dataProps(rest), className: "tamga-kpi", "aria-hidden": true, children: [_jsx(Skeleton, { index: index, className: "size-10 shrink-0" }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx(Skeleton, { index: index + 1, className: "h-2.5 w-20" }), _jsx(Skeleton, { index: index + 2, className: "mt-2 h-7 w-24" })] })] }));
37
43
  }
38
44
  /** A card with a section head and a body area of a given height. */
39
- export function SkeletonCard({ height = 220, title = true, }) {
40
- return (_jsxs("section", { className: "tamga-card flex min-w-0 flex-col", "aria-hidden": true, children: [title ? (_jsxs("div", { className: "tamga-head tamga-section tamga-gutter flex flex-nowrap items-center gap-3", children: [_jsx(Skeleton, { className: "h-3.5 w-32 shrink-0" }), _jsx(Skeleton, { index: 1, className: "h-2.5 min-w-0 flex-1 max-w-20" }), _jsx(Skeleton, { index: 2, className: "ml-auto h-6 w-20 shrink-0" })] })) : null, _jsx("div", { className: "tamga-gutter flex-1 py-5", children: _jsx(Skeleton, { index: 3, className: "w-full", style: { height } }) })] }));
45
+ export function SkeletonCard({ height = 220, title = true, ...rest }) {
46
+ return (_jsxs("section", { ...dataProps(rest), className: "tamga-card flex min-w-0 flex-col", "aria-hidden": true, children: [title ? (_jsxs("div", { className: "tamga-head tamga-section tamga-gutter flex flex-nowrap items-center gap-3", children: [_jsx(Skeleton, { className: "h-3.5 w-32 shrink-0" }), _jsx(Skeleton, { index: 1, className: "h-2.5 min-w-0 flex-1 max-w-20" }), _jsx(Skeleton, { index: 2, className: "ml-auto h-6 w-20 shrink-0" })] })) : null, _jsx("div", { className: "tamga-gutter flex-1 py-5", children: _jsx(Skeleton, { index: 3, className: "w-full", style: { height } }) })] }));
41
47
  }
42
48
  /** A table: header rule plus n body rows across the given column widths. */
43
- export function SkeletonTable({ rows = 6, cols = ["12rem", "5rem", "6rem", "4rem", "5rem"], }) {
44
- return (_jsxs("div", { className: "tamga-card overflow-hidden", "aria-hidden": true, children: [_jsx("div", { className: "tamga-head tamga-section tamga-gutter flex flex-nowrap items-center gap-6", children: cols.map((w, i) => (_jsx(Skeleton, { index: i, className: "h-2.5 min-w-0 flex-1", style: { maxWidth: w } }, i))) }), Array.from({ length: rows }, (_, r) => (_jsx("div", { className: "tamga-list-row flex flex-nowrap items-center gap-6", children: cols.map((w, i) => (_jsx(Skeleton, { index: r + i, className: "h-3 min-w-0 flex-1", style: { maxWidth: w } }, i))) }, r)))] }));
49
+ export function SkeletonTable({ rows = 6, cols = ["12rem", "5rem", "6rem", "4rem", "5rem"], ...rest }) {
50
+ return (_jsxs("div", { ...dataProps(rest), className: "tamga-card overflow-hidden", "aria-hidden": true, children: [_jsx("div", { className: "tamga-head tamga-section tamga-gutter flex flex-nowrap items-center gap-6", children: cols.map((w, i) => (_jsx(Skeleton, { index: i, className: "h-2.5 min-w-0 flex-1", style: { maxWidth: w } }, i))) }), Array.from({ length: rows }, (_, r) => (_jsx("div", { className: "tamga-list-row flex flex-nowrap items-center gap-6", children: cols.map((w, i) => (_jsx(Skeleton, { index: r + i, className: "h-3 min-w-0 flex-1", style: { maxWidth: w } }, i))) }, r)))] }));
45
51
  }
46
52
  /**
47
53
  * Panel contents.
@@ -53,15 +59,15 @@ export function SkeletonTable({ rows = 6, cols = ["12rem", "5rem", "6rem", "4rem
53
59
  *
54
60
  * Matches `.tamga-option` — 40px tall, 16px side padding, icon slot then label.
55
61
  */
56
- export function SkeletonOptions({ rows = 4 }) {
62
+ export function SkeletonOptions({ rows = 4, ...rest }) {
57
63
  const widths = ["68%", "84%", "56%", "76%", "64%"];
58
- return (_jsx("div", { className: "py-1", "aria-hidden": true, children: Array.from({ length: rows }, (_, i) => (_jsxs("div", { className: "flex h-10 items-center gap-2 px-4", children: [_jsx(Skeleton, { index: i, className: "size-4 shrink-0" }), _jsx(Skeleton, { index: i, className: "h-3 min-w-0 flex-1", style: { maxWidth: widths[i % widths.length] } })] }, i))) }));
64
+ return (_jsx("div", { ...dataProps(rest), className: "py-1", "aria-hidden": true, children: Array.from({ length: rows }, (_, i) => (_jsxs("div", { className: "flex h-10 items-center gap-2 px-4", children: [_jsx(Skeleton, { index: i, className: "size-4 shrink-0" }), _jsx(Skeleton, { index: i, className: "h-3 min-w-0 flex-1", style: { maxWidth: widths[i % widths.length] } })] }, i))) }));
59
65
  }
60
66
  /** Free-form panel body — popover, dialog, sheet. */
61
- export function SkeletonPanel({ lines = 3, block, }) {
62
- return (_jsxs("div", { className: "flex flex-col gap-3", "aria-hidden": true, children: [block ? _jsx(Skeleton, { className: "w-full", style: { height: block } }) : null, _jsx(SkeletonText, { lines: lines })] }));
67
+ export function SkeletonPanel({ lines = 3, block, ...rest }) {
68
+ return (_jsxs("div", { ...dataProps(rest), className: "flex flex-col gap-3", "aria-hidden": true, children: [block ? _jsx(Skeleton, { className: "w-full", style: { height: block } }) : null, _jsx(SkeletonText, { lines: lines })] }));
63
69
  }
64
70
  /** Page band: title, subtitle, and the actions that sit on the right. */
65
- export function SkeletonPageBand() {
66
- return (_jsxs("div", { className: "tamga-section tamga-gutter flex flex-wrap items-center gap-4 py-4", "aria-hidden": true, children: [_jsxs("div", { className: "min-w-0", children: [_jsx(Skeleton, { className: "h-4 w-40" }), _jsx(Skeleton, { index: 1, className: "mt-2 h-2.5 w-64" })] }), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [_jsx(Skeleton, { index: 2, className: "h-10 w-32" }), _jsx(Skeleton, { index: 3, className: "h-10 w-36" })] })] }));
71
+ export function SkeletonPageBand({ ...rest }) {
72
+ return (_jsxs("div", { ...dataProps(rest), className: "tamga-section tamga-gutter flex flex-wrap items-center gap-4 py-4", "aria-hidden": true, children: [_jsxs("div", { className: "min-w-0", children: [_jsx(Skeleton, { className: "h-4 w-40" }), _jsx(Skeleton, { index: 1, className: "mt-2 h-2.5 w-64" })] }), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [_jsx(Skeleton, { index: 2, className: "h-10 w-32" }), _jsx(Skeleton, { index: 3, className: "h-10 w-36" })] })] }));
67
73
  }
@@ -4,7 +4,7 @@
4
4
  * Gerekçe: docs/gerekce/01-form-ve-girdi.md
5
5
  */
6
6
  /** Kaydırıcı. */
7
- export declare function Slider({ value, onChange, min, max, step, label, suffix, className, }: {
7
+ export declare function Slider({ value, onChange, min, max, step, label, suffix, className, ...rest }: {
8
8
  value: number;
9
9
  onChange: (next: number) => void;
10
10
  min?: number;
@@ -14,5 +14,7 @@ export declare function Slider({ value, onChange, min, max, step, label, suffix,
14
14
  /** The unit beside the value: "%", "ms", "₺". TR: Değerin yanındaki birim: "%", "ms", "₺". */
15
15
  suffix?: string;
16
16
  className?: string;
17
+ /** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
18
+ [k: `data-${string}`]: unknown;
17
19
  }): import("react").JSX.Element;
18
20
  //# sourceMappingURL=slider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,iBAAiB;AACjB,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,GAAO,EACP,GAAS,EACT,IAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAuBA"}
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH,iBAAiB;AACjB,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,GAAO,EACP,GAAS,EACT,IAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,GAAG,IAAI,EACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAuBA"}