tamga-ui 0.1.1 → 0.2.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 (48) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +83 -91
  3. package/dist/blocks/count-row.d.ts +3 -3
  4. package/dist/blocks/count-row.d.ts.map +1 -1
  5. package/dist/blocks/filter-bar.d.ts +13 -13
  6. package/dist/blocks/filter-bar.d.ts.map +1 -1
  7. package/dist/blocks/save-bar.d.ts +3 -3
  8. package/dist/blocks/save-bar.d.ts.map +1 -1
  9. package/dist/components/chrome.d.ts +54 -3
  10. package/dist/components/chrome.d.ts.map +1 -1
  11. package/dist/components/chrome.js +43 -2
  12. package/dist/components/primitives.d.ts +32 -2
  13. package/dist/components/primitives.d.ts.map +1 -1
  14. package/dist/components/primitives.js +11 -4
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/kit.css +45 -0
  19. package/dist/lib/color.d.ts +31 -11
  20. package/dist/lib/color.d.ts.map +1 -1
  21. package/dist/lib/color.js +40 -18
  22. package/dist/lib/palette.d.ts +38 -19
  23. package/dist/lib/palette.d.ts.map +1 -1
  24. package/dist/lib/palette.js +45 -33
  25. package/dist/patterns/app-shell.d.ts +22 -6
  26. package/dist/patterns/app-shell.d.ts.map +1 -1
  27. package/dist/patterns/app-shell.js +13 -4
  28. package/dist/patterns/auth-template.d.ts +9 -6
  29. package/dist/patterns/auth-template.d.ts.map +1 -1
  30. package/dist/patterns/detail-template.d.ts +5 -5
  31. package/dist/patterns/detail-template.d.ts.map +1 -1
  32. package/dist/patterns/index.d.ts +1 -1
  33. package/dist/patterns/index.d.ts.map +1 -1
  34. package/dist/patterns/index.js +5 -1
  35. package/dist/patterns/list-template.d.ts +6 -6
  36. package/dist/patterns/list-template.d.ts.map +1 -1
  37. package/dist/patterns/overview-template.d.ts +3 -3
  38. package/dist/patterns/overview-template.d.ts.map +1 -1
  39. package/dist/patterns/public-template.d.ts +3 -3
  40. package/dist/patterns/public-template.d.ts.map +1 -1
  41. package/dist/patterns/settings-template.d.ts +3 -3
  42. package/dist/patterns/settings-template.d.ts.map +1 -1
  43. package/dist/patterns/shared.d.ts +3 -3
  44. package/dist/patterns/shared.d.ts.map +1 -1
  45. package/dist/patterns/wizard-template.d.ts +1 -1
  46. package/dist/patterns/wizard-template.d.ts.map +1 -1
  47. package/dist/patterns/wizard-template.js +2 -9
  48. package/package.json +3 -2
@@ -2,7 +2,9 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useState } from "react";
4
4
  import { cn } from "../lib/cn.js";
5
+ import { Avatar } from "./avatar.js";
5
6
  import { Icon } from "./icon.js";
7
+ import { Select } from "./primitives.js";
6
8
  import { Switch } from "./switch.js";
7
9
  import { ThemeDark, ThemeLight } from "./icons.js";
8
10
  /**
@@ -65,10 +67,22 @@ export function ThemeToggle({ labels, variant = "icon", storageKey = "tamga-them
65
67
  document.documentElement.classList.toggle("dark", next);
66
68
  write(storageKey, next ? "dark" : "light");
67
69
  }
70
+ if (variant === "select") {
71
+ /* DURUM SÖZCÜKLERİ ŞART, ve verilmediyse bu bir hata. Sessizce eylem
72
+ sözcüklerine düşmek, kutuda kendi tersini yazan bir kontrol üretirdi. */
73
+ if (!("light" in labels)) {
74
+ throw new Error('ThemeToggle variant="select" için labels {light, dark} olmalı');
75
+ }
76
+ return (_jsx(Select, { options: [labels.light, labels.dark], value: dark ? labels.dark : labels.light, onChange: (v) => {
77
+ const next = v === labels.dark;
78
+ if (next !== dark)
79
+ toggle();
80
+ }, placeholder: labels.light, "aria-label": labels.light + " / " + labels.dark, className: cn("w-28", className) }));
81
+ }
68
82
  if (variant === "switch") {
69
- return (_jsxs("span", { className: cn("flex items-center gap-2", className), children: [_jsx(Icon, { icon: ThemeLight, size: "xs", "aria-hidden": true, className: dark ? "text-ink-faint" : "text-ink" }), _jsx(Switch, { on: dark, onChange: toggle, label: dark ? labels.toLight : labels.toDark }), _jsx(Icon, { icon: ThemeDark, size: "xs", "aria-hidden": true, className: dark ? "text-ink" : "text-ink-faint" })] }));
83
+ return (_jsxs("span", { className: cn("flex items-center gap-2", className), children: [_jsx(Icon, { icon: ThemeLight, size: "xs", "aria-hidden": true, className: dark ? "text-ink-faint" : "text-ink" }), _jsx(Switch, { on: dark, onChange: toggle, label: "toLight" in labels ? (dark ? labels.toLight : labels.toDark) : "" }), _jsx(Icon, { icon: ThemeDark, size: "xs", "aria-hidden": true, className: dark ? "text-ink" : "text-ink-faint" })] }));
70
84
  }
71
- return (_jsx("button", { type: "button", onClick: toggle, className: cn("tamga-icon-btn", className), "aria-label": dark ? labels.toLight : labels.toDark, children: _jsx(Icon, { icon: dark ? ThemeLight : ThemeDark, size: "sm" }) }));
85
+ return (_jsx("button", { type: "button", onClick: toggle, className: cn("tamga-icon-btn", className), "aria-label": "toLight" in labels ? (dark ? labels.toLight : labels.toDark) : undefined, children: _jsx(Icon, { icon: dark ? ThemeLight : ThemeDark, size: "sm" }) }));
72
86
  }
73
87
  /**
74
88
  * Dil değiştirici.
@@ -105,3 +119,30 @@ export function LocaleSwitcher({ locales, current, onChange, label, className, }
105
119
  export function LogoTile({ name, src, size = "base", className, }) {
106
120
  return (_jsx("span", { className: cn("tamga-logo-tile", size === "sm" && "tamga-logo-tile-sm", className), children: src ? (_jsx("img", { src: src, alt: "", className: "h-full w-full object-contain p-1.5" })) : (_jsx("span", { "aria-hidden": true, className: "font-mono text-subhead font-semibold text-ink-faint", children: name.trim().charAt(0).toLocaleUpperCase() })) }));
107
121
  }
122
+ /**
123
+ * Şeridin sağ ucundaki hesap düğmesi.
124
+ *
125
+ * NEDEN BİR BİLEŞEN, VE SAYARAK. İki panelde de aynı şey elle kuruldu:
126
+ * `<button className="tamga-icon-btn"><Avatar bare …/></button>`. `Avatar`ın
127
+ * `bare` prop'u tam bu iş için var ve JSDoc'u bunu anlatıyor, ama bulunmadı;
128
+ * ikinci kurulumda avatar kendi çerçevesiyle kondu ve şeritteki öteki
129
+ * kontrollerden farklı boyda durdu. Bulunmayan bir prop, olmayan proptur.
130
+ *
131
+ * ÖLÇÜ ŞERİDİN ÖLÇÜSÜ. Kare `--control` (40px), yani tema anahtarı ve öteki
132
+ * simge düğmeleriyle birebir aynı. Bir araç çubuğunda yükseklik tek karardır;
133
+ * tek bir kontrolün farklı durması bütün şeridi hizasız gösteriyor.
134
+ *
135
+ * FOTOĞRAF YOKSA BAŞ HARFLER: `Avatar` zaten öyle davranıyor, ve bir hesabın
136
+ * fotoğrafı olmaması normal hâl.
137
+ */
138
+ export function AccountButton({ name, src, label, onClick, href, linkComponent: Link, className, }) {
139
+ const ic = (_jsx(Avatar, { name: name, src: src, size: 38, bare: true }));
140
+ const sinif = cn("tamga-icon-btn overflow-hidden p-0", className);
141
+ if (href && Link) {
142
+ return (_jsx(Link, { href: href, "aria-label": label, className: sinif, children: ic }));
143
+ }
144
+ if (href) {
145
+ return (_jsx("a", { href: href, "aria-label": label, className: sinif, children: ic }));
146
+ }
147
+ return (_jsx("button", { type: "button", onClick: onClick, "aria-label": label, className: sinif, children: ic }));
148
+ }
@@ -38,7 +38,7 @@ export declare function Field({ label, description, error, children, htmlFor, }:
38
38
  htmlFor?: string;
39
39
  }): import("react").JSX.Element;
40
40
  /** A plain select: the same overlay as the searchable one, without the search. */
41
- export declare function Select({ options, value, onChange, placeholder, loading, loadingRows, className, }: {
41
+ export declare function Select({ options, value, onChange, placeholder, loading, loadingRows, "aria-label": ariaLabel, className, }: {
42
42
  options: string[];
43
43
  value?: string;
44
44
  onChange?: (v: string) => void;
@@ -71,17 +71,47 @@ export declare function Select({ options, value, onChange, placeholder, loading,
71
71
  * hatadır.
72
72
  */
73
73
  loadingRows?: number;
74
+ /**
75
+ * Accessible name when the control has no visible label. TR: Görünür etiketi
76
+ * olmayan kontrolün erişilebilir adı.
77
+ *
78
+ * WHY IT EXISTS. Inside a `Field` the label is already wired and this is not
79
+ * needed. But a select can also sit alone in a toolbar (a language picker, a
80
+ * page-size chooser) where there is no room for a label, and there it was
81
+ * announced as just "button": a screen reader user heard the current value
82
+ * and no clue what changing it would do. TR: NEDEN VAR. Bir `Field` içinde
83
+ * etiket zaten bağlı ve bu gerekmiyor. Ama bir seçim kutusu bir araç
84
+ * çubuğunda tek başına da durabiliyor (dil seçici, sayfa boyu) ve orada
85
+ * etikete yer yok; o hâliyle yalnız "düğme" diye duyuruluyordu: ekran
86
+ * okuyucu kullanıcısı o anki değeri duyuyor, değiştirince ne olacağına dair
87
+ * hiçbir şey duymuyordu.
88
+ */
89
+ "aria-label"?: string;
74
90
  /** Genişlik ve konum çağıranın. Varsayılan `w-56`; `w-full` verildiğinde
75
91
  * tailwind-merge onu ezer, yani kontrol kabına uyar. */
76
92
  className?: string;
77
93
  }): import("react").JSX.Element;
78
94
  /** Side panel. Overlay plane, so it carries the 6px offset and a scrim. */
79
- export declare function Sheet({ open, onClose, title, children, footer, loading, closeLabel, }: {
95
+ export declare function Sheet({ open, onClose, title, children, footer, loading, closeLabel, side, }: {
80
96
  open: boolean;
81
97
  onClose: () => void;
82
98
  title: string;
83
99
  children: React.ReactNode;
84
100
  footer?: React.ReactNode;
101
+ /**
102
+ * Which edge the panel enters from. TR: Panelin hangi kenardan girdiği.
103
+ *
104
+ * NOT A TASTE, A MEANING. `end` is for detail about the thing you were
105
+ * looking at: it opens beside the record, on the side the eye already ended
106
+ * on. `start` is for NAVIGATION, because a menu lives on the left in every
107
+ * panel this kit builds, and a menu that slides in from the opposite side
108
+ * reads as a different kind of thing. TR: Zevk değil, ANLAM. `end` bakılan
109
+ * şeyin ayrıntısı için: kaydın yanında, gözün zaten bittiği tarafta
110
+ * açılıyor. `start` GEZİNME için, çünkü bu kitin kurduğu her panelde menü
111
+ * solda yaşıyor, ve ters taraftan giren bir menü başka bir şey gibi
112
+ * okunuyor.
113
+ */
114
+ side?: "start" | "end";
85
115
  /**
86
116
  * Accessible name for the close control, supplied by the caller (docs/08 rule 5). TR: Kapatma
87
117
  * kontrolünün erişilebilir adı, çağıran veriyor (docs/08 kural 5).
@@ -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,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;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;6DACyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAyEA;AAED,2EAA2E;AAC3E,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAe,EACf,UAAU,GACX,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;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,sCA2CA"}
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;;;;;;;;;;;;;;;;;OAiBG;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"}
@@ -38,7 +38,7 @@ export function Field({ label, description, error, children, htmlFor, }) {
38
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] }));
39
39
  }
40
40
  /** 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, className, }) {
41
+ export function Select({ options, value, onChange, placeholder, loading = false, loadingRows = 4, "aria-label": ariaLabel, className, }) {
42
42
  const [open, setOpen] = useState(false);
43
43
  const [inner, setInner] = useState(value ?? "");
44
44
  const box = useRef(null);
@@ -56,14 +56,14 @@ export function Select({ options, value, onChange, placeholder, loading = false,
56
56
  document.addEventListener("mousedown", away);
57
57
  return () => document.removeEventListener("mousedown", away);
58
58
  }, [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, 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: () => {
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
60
  setInner(o);
61
61
  onChange?.(o);
62
62
  setOpen(false);
63
63
  }, children: [o, o === current && _jsx(Icon, { icon: Check, size: "xs", weight: "bold", className: "ml-auto" })] }, o)))] }))] }));
64
64
  }
65
65
  /** 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, }) {
66
+ export function Sheet({ open, onClose, title, children, footer, loading = false, closeLabel, side = "end", }) {
67
67
  /* the trap has to be called before any early return, so the hook lives here
68
68
  and the null is returned after it */
69
69
  const panel = useFocusTrap(open);
@@ -77,5 +77,12 @@ export function Sheet({ open, onClose, title, children, footer, loading = false,
77
77
  }, [open, onClose]);
78
78
  if (!open)
79
79
  return null;
80
- return (_jsxs("div", { className: "fixed inset-0 z-50 flex 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, className: "tamga-overlay relative z-10 flex h-full w-full max-w-md flex-col", style: { borderRadius: 0 }, "aria-busy": loading || undefined, 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: "tamga-gutter min-h-0 flex-1 overflow-y-auto py-6", children: loading ? _jsx(SkeletonPanel, { lines: 5, block: 120 }) : children }), footer ? (_jsx("div", { className: "tamga-gutter flex justify-end gap-2 border-t border-line py-4", children: footer })) : 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
+ /* PANEL KAYARAK GİRİYOR, VE GİRDİĞİ KENARDAN.
82
+ Animasyonsuz hâli bir kare içinde beliriyordu: nereden geldiği,
83
+ dolayısıyla nereye geri gideceği okunmuyordu. Kayma yönü `side` ile
84
+ aynı; ters yönden kayan bir panel, kapatma hareketini de ters
85
+ öğretiyor. `prefers-reduced-motion` açıksa kayma yok, panel yerinde
86
+ beliriyor. */
87
+ className: cn("tamga-overlay relative z-10 flex h-full w-full max-w-md flex-col", side === "start" ? "tamga-sheet-start" : "tamga-sheet-end"), style: { borderRadius: 0 }, "aria-busy": loading || undefined, 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: "tamga-gutter min-h-0 flex-1 overflow-y-auto py-6", children: loading ? _jsx(SkeletonPanel, { lines: 5, block: 120 }) : children }), footer ? (_jsx("div", { className: "tamga-gutter flex justify-end gap-2 border-t border-line py-4", children: footer })) : null] })] }));
81
88
  }
package/dist/index.d.ts CHANGED
@@ -40,7 +40,7 @@ export { ErrorState } from "./components/error-state.js";
40
40
  export { LiveScope, useLiveClaim } from "./components/live-scope.js";
41
41
  export { Skeleton, SkeletonText, SkeletonRows, SkeletonKpi, SkeletonCard, SkeletonTable, SkeletonOptions, SkeletonPanel, SkeletonPageBand, } from "./components/skeleton.js";
42
42
  export { Surface, ScrollX, Rise, Swap, ListRow, CellActions, PageBand, Link, } from "./components/layout.js";
43
- export { ThemeToggle, LocaleSwitcher, LogoTile } from "./components/chrome.js";
43
+ export { ThemeToggle, LocaleSwitcher, LogoTile, AccountButton } from "./components/chrome.js";
44
44
  export { RailLink } from "./components/rail-link.js";
45
45
  export { Slider } from "./components/slider.js";
46
46
  export { Accordion, Collapsible } from "./components/disclosure.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -53,7 +53,7 @@ export { Skeleton, SkeletonText, SkeletonRows, SkeletonKpi, SkeletonCard, Skelet
53
53
  * Buradan aşağısı, sınıfı olup bileşeni olmayan şeylerin kapandığı yer.
54
54
  * Gerekçesi `components/layout.tsx`'in başında. */
55
55
  export { Surface, ScrollX, Rise, Swap, ListRow, CellActions, PageBand, Link, } from "./components/layout.js";
56
- export { ThemeToggle, LocaleSwitcher, LogoTile } from "./components/chrome.js";
56
+ export { ThemeToggle, LocaleSwitcher, LogoTile, AccountButton } from "./components/chrome.js";
57
57
  export { RailLink } from "./components/rail-link.js";
58
58
  export { Slider } from "./components/slider.js";
59
59
  /* --- açılır bölümler --------------------------------------------------- */
package/dist/kit.css CHANGED
@@ -1659,6 +1659,14 @@
1659
1659
  .tamga-table tbody tr[data-selected="true"] td:first-child {
1660
1660
  box-shadow: inset 2px 0 0 var(--color-accent-line);
1661
1661
  }
1662
+ /* SEÇİLİ SATIR İKİ ADLA GELEBİLİYOR, VE BİRİ BOYANMIYORDU.
1663
+ `SettingsTemplate` menüsündeki açık bölümü `data-active` ile işaretliyor
1664
+ (bir GEZİNME satırı: hangi sayfadasın), liste satırları ise `data-selected`
1665
+ ile (bir SEÇİM: hangi kayıtları işaretledin). İkisi farklı anlam ama aynı
1666
+ görünüm, ve kural yalnız ikincisi için yazılmıştı: ayarlar menüsünde
1667
+ hangi bölümde olduğun hiç görünmüyordu. Hiçbir şey patlamadı, çünkü
1668
+ tarayıcı bilmediği bir nitelik seçicisini sessizce atlıyor. */
1669
+ .tamga-list-row[data-active="true"],
1662
1670
  .tamga-list-row[data-selected="true"] {
1663
1671
  background: var(--color-accent-bg);
1664
1672
  box-shadow: inset 2px 0 0 var(--color-accent-line);
@@ -1668,6 +1676,10 @@
1668
1676
  color: var(--color-accent-line);
1669
1677
  font-weight: 500;
1670
1678
  text-underline-offset: 3px;
1679
+ /* `<a href>` pointer'ı tarayıcıdan alır; `href`siz bir `<a>`, bir `<span>`
1680
+ ya da link gibi görünen bir `<button>` almaz ve imleç `auto` kalır. Sınıf
1681
+ kendi imlecini söylemeli. */
1682
+ cursor: pointer;
1671
1683
  }
1672
1684
  .tamga-link:hover {
1673
1685
  text-decoration: underline;
@@ -1791,6 +1803,15 @@
1791
1803
  }
1792
1804
  }
1793
1805
 
1806
+ /* Çekmece kenardan kayarak girer; yön `side` ile aynı olmak zorunda, yoksa
1807
+ kapatma hareketi ters öğretilir. Gerekçe: /docs/sheet */
1808
+ .tamga-sheet-start {
1809
+ animation: tamga-sheet-start var(--duration-base) var(--ease-standard);
1810
+ }
1811
+ .tamga-sheet-end {
1812
+ animation: tamga-sheet-end var(--duration-base) var(--ease-standard);
1813
+ }
1814
+
1794
1815
  .tamga-label {
1795
1816
  font-size: var(--text-caption);
1796
1817
  font-weight: 500;
@@ -2105,6 +2126,24 @@
2105
2126
  }
2106
2127
  }
2107
2128
 
2129
+ @keyframes tamga-sheet-start {
2130
+ from {
2131
+ transform: translateX(-100%);
2132
+ }
2133
+ to {
2134
+ transform: none;
2135
+ }
2136
+ }
2137
+
2138
+ @keyframes tamga-sheet-end {
2139
+ from {
2140
+ transform: translateX(100%);
2141
+ }
2142
+ to {
2143
+ transform: none;
2144
+ }
2145
+ }
2146
+
2108
2147
  @keyframes tamga-bar {
2109
2148
  0%,
2110
2149
  100% {
@@ -2185,6 +2224,12 @@
2185
2224
  .tamga-toast {
2186
2225
  animation: none;
2187
2226
  }
2227
+ /* Duran bir çekmece yine de AÇIK olmalı: kayma gidiyor, panel yerinde
2228
+ beliriyor. */
2229
+ .tamga-sheet-start,
2230
+ .tamga-sheet-end {
2231
+ animation: none;
2232
+ }
2188
2233
  /* a stopped spinner must still be a visible mark, never an empty box */
2189
2234
  .tamga-spin-part {
2190
2235
  animation: none !important;
@@ -18,7 +18,7 @@ export type Oklch = {
18
18
  h: number;
19
19
  };
20
20
  /** `#abc` ya da `#aabbcc`. Kısa biçim de sayılıyor, boşluk sayılmıyor. */
21
- export declare const gecerliHex: (v: string) => boolean;
21
+ export declare const isHex: (v: string) => boolean;
22
22
  /**
23
23
  * Hex → RGB, GEÇERSİZ GİRDİDE FIRLATARAK.
24
24
  *
@@ -28,23 +28,23 @@ export declare const gecerliHex: (v: string) => boolean;
28
28
  * sebebi rengin kendisinde aranıyor.
29
29
  *
30
30
  * Kit KATI, çağıran toleranslı: yarım yazılmış bir kodun ne anlama geldiği
31
- * ekranın kararı (bkz. `gecerliHex`).
31
+ * ekranın kararı (bkz. `isHex`).
32
32
  */
33
- export declare function hexRgb(hex: string): [number, number, number];
34
- export declare const rgbHex: (r: number, g: number, b: number) => string;
33
+ export declare function hexToRgb(hex: string): [number, number, number];
34
+ export declare const rgbToHex: (r: number, g: number, b: number) => string;
35
35
  /** WCAG bağıl parlaklık. Metin kontrastı bununla ölçülüyor. */
36
- export declare function parlaklik(hex: string): number;
36
+ export declare function luminance(hex: string): number;
37
37
  /** WCAG kontrast oranı. AA metin eşiği 4.5. */
38
- export declare function oran(a: string, b: string): number;
38
+ export declare function contrast(a: string, b: string): number;
39
39
  /**
40
40
  * CIE L* · algısal açıklık.
41
41
  *
42
42
  * İki YÜZEYİN ayrı okunup okunmadığı bununla ölçülüyor; kontrast oranı metin
43
43
  * içindir, yüzey için değil. Bir kartın kenarı sayfadan ΔL* ≥ 10 ayrı olmalı.
44
44
  */
45
- export declare function acikligi(hex: string): number;
46
- export declare const dL: (a: string, b: string) => number;
47
- export declare function hexOklch(hex: string): Oklch;
45
+ export declare function lightness(hex: string): number;
46
+ export declare const deltaL: (a: string, b: string) => number;
47
+ export declare function hexToOklch(hex: string): Oklch;
48
48
  /**
49
49
  * OKLCH → hex, GAMUT DIŞINA TAŞMADAN.
50
50
  *
@@ -53,7 +53,7 @@ export declare function hexOklch(hex: string): Oklch;
53
53
  * doyum (C) ikili aramayla sığana kadar düşürülüyor; ton ve açıklık korunuyor,
54
54
  * yalnız canlılık gerektiği kadar azalıyor.
55
55
  */
56
- export declare function oklchHex({ l, c, h }: Oklch): string;
56
+ export declare function oklchToHex({ l, c, h }: Oklch): string;
57
57
  /**
58
58
  * Verilen ton ve doyumda, HEDEF ORANI tutturan açıklığı arar.
59
59
  *
@@ -64,5 +64,25 @@ export declare function oklchHex({ l, c, h }: Oklch): string;
64
64
  * `yon` "koyulaş" (-1) ya da "açıl" (+1): koyu temada aynı hedef ters yönden
65
65
  * yakalanıyor.
66
66
  */
67
- export declare function oranaGoreAcikligi(taban: Oklch, karsi: string, hedef: number, yon: -1 | 1): Oklch;
67
+ export declare function lightnessForContrast(taban: Oklch, karsi: string, hedef: number, yon: -1 | 1): Oklch;
68
+ /** @deprecated `isHex` kullan. 0.3.0'da kaldırılacak. */
69
+ export declare const gecerliHex: typeof isHex;
70
+ /** @deprecated `hexToRgb` kullan. 0.3.0'da kaldırılacak. */
71
+ export declare const hexRgb: typeof hexToRgb;
72
+ /** @deprecated `rgbToHex` kullan. 0.3.0'da kaldırılacak. */
73
+ export declare const rgbHex: typeof rgbToHex;
74
+ /** @deprecated `luminance` kullan. 0.3.0'da kaldırılacak. */
75
+ export declare const parlaklik: typeof luminance;
76
+ /** @deprecated `contrast` kullan. 0.3.0'da kaldırılacak. */
77
+ export declare const oran: typeof contrast;
78
+ /** @deprecated `lightness` kullan. 0.3.0'da kaldırılacak. */
79
+ export declare const acikligi: typeof lightness;
80
+ /** @deprecated `deltaL` kullan. 0.3.0'da kaldırılacak. */
81
+ export declare const dL: typeof deltaL;
82
+ /** @deprecated `hexToOklch` kullan. 0.3.0'da kaldırılacak. */
83
+ export declare const hexOklch: typeof hexToOklch;
84
+ /** @deprecated `oklchToHex` kullan. 0.3.0'da kaldırılacak. */
85
+ export declare const oklchHex: typeof oklchToHex;
86
+ /** @deprecated `lightnessForContrast` kullan. 0.3.0'da kaldırılacak. */
87
+ export declare const oranaGoreAcikligi: typeof lightnessForContrast;
68
88
  //# sourceMappingURL=color.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/lib/color.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKxD,0EAA0E;AAC1E,eAAO,MAAM,UAAU,MAAO,MAAM,KAAG,OAA0D,CAAC;AAElG;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAM5D;AAGD,eAAO,MAAM,MAAM,MAAO,MAAM,KAAK,MAAM,KAAK,MAAM,WACuB,CAAC;AAE9E,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,+CAA+C;AAC/C,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,eAAO,MAAM,EAAE,MAAO,MAAM,KAAK,MAAM,WAAwC,CAAC;AAIhF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAiB3C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CA6BnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GACV,KAAK,CAQP"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/lib/color.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKxD,0EAA0E;AAC1E,eAAO,MAAM,KAAK,MAAO,MAAM,KAAG,OAA0D,CAAC;AAE7F;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAM9D;AAGD,eAAO,MAAM,QAAQ,MAAO,MAAM,KAAK,MAAM,KAAK,MAAM,WACqB,CAAC;AAE9E,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,eAAO,MAAM,MAAM,MAAO,MAAM,KAAK,MAAM,WAA0C,CAAC;AAItF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAiB7C;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CA6BrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GACV,KAAK,CAQP;AAKD,yDAAyD;AACzD,eAAO,MAAM,UAAU,cAAQ,CAAC;AAChC,4DAA4D;AAC5D,eAAO,MAAM,MAAM,iBAAW,CAAC;AAC/B,4DAA4D;AAC5D,eAAO,MAAM,MAAM,iBAAW,CAAC;AAC/B,6DAA6D;AAC7D,eAAO,MAAM,SAAS,kBAAY,CAAC;AACnC,4DAA4D;AAC5D,eAAO,MAAM,IAAI,iBAAW,CAAC;AAC7B,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,kBAAY,CAAC;AAClC,0DAA0D;AAC1D,eAAO,MAAM,EAAE,eAAS,CAAC;AACzB,8DAA8D;AAC9D,eAAO,MAAM,QAAQ,mBAAa,CAAC;AACnC,8DAA8D;AAC9D,eAAO,MAAM,QAAQ,mBAAa,CAAC;AACnC,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,6BAAuB,CAAC"}
package/dist/lib/color.js CHANGED
@@ -15,7 +15,7 @@
15
15
  const srgbDoğrusal = (v) => (v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4);
16
16
  const doğrusalSrgb = (v) => (v <= 0.0031308 ? v * 12.92 : 1.055 * v ** (1 / 2.4) - 0.055);
17
17
  /** `#abc` ya da `#aabbcc`. Kısa biçim de sayılıyor, boşluk sayılmıyor. */
18
- export const gecerliHex = (v) => /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.test(v.trim());
18
+ export const isHex = (v) => /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.test(v.trim());
19
19
  /**
20
20
  * Hex → RGB, GEÇERSİZ GİRDİDE FIRLATARAK.
21
21
  *
@@ -25,10 +25,10 @@ export const gecerliHex = (v) => /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.test(v.trim())
25
25
  * sebebi rengin kendisinde aranıyor.
26
26
  *
27
27
  * Kit KATI, çağıran toleranslı: yarım yazılmış bir kodun ne anlama geldiği
28
- * ekranın kararı (bkz. `gecerliHex`).
28
+ * ekranın kararı (bkz. `isHex`).
29
29
  */
30
- export function hexRgb(hex) {
31
- if (!gecerliHex(hex))
30
+ export function hexToRgb(hex) {
31
+ if (!isHex(hex))
32
32
  throw new Error(`Geçersiz hex: ${JSON.stringify(hex)}`);
33
33
  const s = hex.trim().replace("#", "");
34
34
  const t = s.length === 3 ? [...s].map((c) => c + c).join("") : s;
@@ -36,15 +36,15 @@ export function hexRgb(hex) {
36
36
  return [(n >> 16) & 255, (n >> 8) & 255, n & 255];
37
37
  }
38
38
  const kanal = (v) => Math.max(0, Math.min(255, Math.round(v * 255)));
39
- export const rgbHex = (r, g, b) => "#" + [r, g, b].map((v) => kanal(v).toString(16).padStart(2, "0")).join("");
39
+ export const rgbToHex = (r, g, b) => "#" + [r, g, b].map((v) => kanal(v).toString(16).padStart(2, "0")).join("");
40
40
  /** WCAG bağıl parlaklık. Metin kontrastı bununla ölçülüyor. */
41
- export function parlaklik(hex) {
42
- const [r, g, b] = hexRgb(hex).map((v) => srgbDoğrusal(v / 255));
41
+ export function luminance(hex) {
42
+ const [r, g, b] = hexToRgb(hex).map((v) => srgbDoğrusal(v / 255));
43
43
  return 0.2126 * r + 0.7152 * g + 0.0722 * b;
44
44
  }
45
45
  /** WCAG kontrast oranı. AA metin eşiği 4.5. */
46
- export function oran(a, b) {
47
- const [ust, alt] = [parlaklik(a), parlaklik(b)].sort((x, y) => y - x);
46
+ export function contrast(a, b) {
47
+ const [ust, alt] = [luminance(a), luminance(b)].sort((x, y) => y - x);
48
48
  return (ust + 0.05) / (alt + 0.05);
49
49
  }
50
50
  /**
@@ -53,14 +53,14 @@ export function oran(a, b) {
53
53
  * İki YÜZEYİN ayrı okunup okunmadığı bununla ölçülüyor; kontrast oranı metin
54
54
  * içindir, yüzey için değil. Bir kartın kenarı sayfadan ΔL* ≥ 10 ayrı olmalı.
55
55
  */
56
- export function acikligi(hex) {
57
- const y = parlaklik(hex);
56
+ export function lightness(hex) {
57
+ const y = luminance(hex);
58
58
  return y > 216 / 24389 ? 116 * Math.cbrt(y) - 16 : (y * 24389) / 27;
59
59
  }
60
- export const dL = (a, b) => Math.abs(acikligi(a) - acikligi(b));
60
+ export const deltaL = (a, b) => Math.abs(lightness(a) - lightness(b));
61
61
  /* ---- OKLab ---- */
62
- export function hexOklch(hex) {
63
- const [r8, g8, b8] = hexRgb(hex);
62
+ export function hexToOklch(hex) {
63
+ const [r8, g8, b8] = hexToRgb(hex);
64
64
  const r = srgbDoğrusal(r8 / 255);
65
65
  const g = srgbDoğrusal(g8 / 255);
66
66
  const b = srgbDoğrusal(b8 / 255);
@@ -82,7 +82,7 @@ export function hexOklch(hex) {
82
82
  * doyum (C) ikili aramayla sığana kadar düşürülüyor; ton ve açıklık korunuyor,
83
83
  * yalnız canlılık gerektiği kadar azalıyor.
84
84
  */
85
- export function oklchHex({ l, c, h }) {
85
+ export function oklchToHex({ l, c, h }) {
86
86
  const dene = (kroma) => {
87
87
  const hr = (h * Math.PI) / 180;
88
88
  const A = Math.cos(hr) * kroma;
@@ -110,7 +110,7 @@ export function oklchHex({ l, c, h }) {
110
110
  }
111
111
  rgb = dene(alt);
112
112
  }
113
- return rgbHex(...rgb);
113
+ return rgbToHex(...rgb);
114
114
  }
115
115
  /**
116
116
  * Verilen ton ve doyumda, HEDEF ORANI tutturan açıklığı arar.
@@ -122,13 +122,35 @@ export function oklchHex({ l, c, h }) {
122
122
  * `yon` "koyulaş" (-1) ya da "açıl" (+1): koyu temada aynı hedef ters yönden
123
123
  * yakalanıyor.
124
124
  */
125
- export function oranaGoreAcikligi(taban, karsi, hedef, yon) {
125
+ export function lightnessForContrast(taban, karsi, hedef, yon) {
126
126
  let en = { ...taban };
127
127
  for (let i = 0; i < 60; i++) {
128
128
  const aday = { ...taban, l: Math.max(0.02, Math.min(0.99, taban.l + yon * 0.01 * i)) };
129
129
  en = aday;
130
- if (oran(oklchHex(aday), karsi) >= hedef)
130
+ if (contrast(oklchToHex(aday), karsi) >= hedef)
131
131
  break;
132
132
  }
133
133
  return en;
134
134
  }
135
+ /* Eski Türkçe adlar, 0.3.0'a kadar. SİLME: 0.1.1 npm'de yayında ve bu adları
136
+ kullanan bir tüketici var. Gerekçe: ADR-0001. */
137
+ /** @deprecated `isHex` kullan. 0.3.0'da kaldırılacak. */
138
+ export const gecerliHex = isHex;
139
+ /** @deprecated `hexToRgb` kullan. 0.3.0'da kaldırılacak. */
140
+ export const hexRgb = hexToRgb;
141
+ /** @deprecated `rgbToHex` kullan. 0.3.0'da kaldırılacak. */
142
+ export const rgbHex = rgbToHex;
143
+ /** @deprecated `luminance` kullan. 0.3.0'da kaldırılacak. */
144
+ export const parlaklik = luminance;
145
+ /** @deprecated `contrast` kullan. 0.3.0'da kaldırılacak. */
146
+ export const oran = contrast;
147
+ /** @deprecated `lightness` kullan. 0.3.0'da kaldırılacak. */
148
+ export const acikligi = lightness;
149
+ /** @deprecated `deltaL` kullan. 0.3.0'da kaldırılacak. */
150
+ export const dL = deltaL;
151
+ /** @deprecated `hexToOklch` kullan. 0.3.0'da kaldırılacak. */
152
+ export const hexOklch = hexToOklch;
153
+ /** @deprecated `oklchToHex` kullan. 0.3.0'da kaldırılacak. */
154
+ export const oklchHex = oklchToHex;
155
+ /** @deprecated `lightnessForContrast` kullan. 0.3.0'da kaldırılacak. */
156
+ export const oranaGoreAcikligi = lightnessForContrast;
@@ -1,4 +1,4 @@
1
- import { acikligi, dL, gecerliHex, oran } from "./color.js";
1
+ import { lightness, deltaL, isHex, contrast } from "./color.js";
2
2
  /**
3
3
  * Tek bir marka renginden iki temalık palet.
4
4
  *
@@ -17,7 +17,7 @@ import { acikligi, dL, gecerliHex, oran } from "./color.js";
17
17
  * `check-token-contrast` ile aynı aritmetikten geçiyor (bkz. `lib/color.ts`).
18
18
  */
19
19
  /** Bir temanın üreteceği token'lar. Adlar `theme.css`'teki kit ailesiyle birebir. */
20
- export type Palet = {
20
+ export type Palette = {
21
21
  page: string;
22
22
  shell: string;
23
23
  hover: string;
@@ -42,24 +42,27 @@ export type Palet = {
42
42
  navHover: string;
43
43
  navHoverBg: string;
44
44
  };
45
- export type PaletCifti = {
46
- light: Palet;
47
- dark: Palet;
45
+ export type PalettePair = {
46
+ light: Palette;
47
+ dark: Palette;
48
48
  };
49
49
  /**
50
50
  * Bir marka renginden iki tema.
51
51
  *
52
52
  * Geçersiz bir kodda FIRLATIYOR, sessizce griye düşmüyor: yarım yazılmış bir
53
- * hex'in ne anlama geldiğine çağıran karar veriyor (`gecerliHex`).
53
+ * hex'in ne anlama geldiğine çağıran karar veriyor (`isHex`).
54
54
  */
55
- export declare function paletUret(markaHex: string): PaletCifti;
56
- export { gecerliHex };
57
- export type Olcum = {
58
- ad: string;
59
- tur: "oran" | "dL";
60
- deger: number;
61
- esik: number;
62
- gecti: boolean;
55
+ export declare function makePalette(markaHex: string): PalettePair;
56
+ export { isHex };
57
+ /** Tek bir kontrast ölçümü. */
58
+ export type Measurement = {
59
+ /** Neyin neye karşı ölçüldüğü: "ink · page". */
60
+ name: string;
61
+ /** `contrast` WCAG oranı, `deltaL` açıklık farkı. */
62
+ kind: "contrast" | "deltaL";
63
+ value: number;
64
+ threshold: number;
65
+ passed: boolean;
63
66
  };
64
67
  /**
65
68
  * Üretilen paleti `check-token-contrast` ile AYNI eşiklerden geçirir.
@@ -68,17 +71,33 @@ export type Olcum = {
68
71
  * yarın bir ton için yanlış olur. Marka rengi değiştiğinde bu liste yeniden
69
72
  * koşuyor, ve geçmeyen bir palet build'i kırıyor.
70
73
  */
71
- export declare function paletiOlc(p: Palet): Olcum[];
74
+ export declare function measurePalette(p: Palette): Measurement[];
72
75
  /**
73
76
  * Bir paleti CSS değişkeni sözlüğüne çevirir: `{ "--color-accent": "#..." }`.
74
77
  *
75
- * NEDEN `paletCss` YETMİYOR: o bir STİL SAYFASI dizgisi üretiyor (`:root { … }`),
78
+ * NEDEN `paletteCss` YETMİYOR: o bir STİL SAYFASI dizgisi üretiyor (`:root { … }`),
76
79
  * ve bir stil sayfası ancak belgenin tamamına uygulanabiliyor. Bir paleti tek
77
80
  * bir kutuya uygulamak (bir önizleme, bir tema seçici) ya da köke çalışma
78
81
  * zamanında yazmak için gereken şey bir SÖZLÜK. Simge adları kalıtsal olduğu
79
82
  * için bir kutuya yazılan palet, içindeki her bileşeni birlikte döndürüyor.
80
83
  */
81
- export declare function paletStili(p: Palet): Record<string, string>;
82
- export declare function paletCss(cift: PaletCifti): string;
83
- export { acikligi, dL, oran };
84
+ export declare function paletteVars(p: Palette): Record<string, string>;
85
+ export declare function paletteCss(cift: PalettePair): string;
86
+ export { lightness, deltaL, contrast };
87
+ /** @deprecated `makePalette` kullan. 0.3.0'da kaldırılacak. */
88
+ export declare const paletUret: typeof makePalette;
89
+ /** @deprecated `measurePalette` kullan. 0.3.0'da kaldırılacak. */
90
+ export declare const paletiOlc: typeof measurePalette;
91
+ /** @deprecated `paletteVars` kullan. 0.3.0'da kaldırılacak. */
92
+ export declare const paletStili: typeof paletteVars;
93
+ /** @deprecated `paletteCss` kullan. 0.3.0'da kaldırılacak. */
94
+ export declare const paletCss: typeof paletteCss;
95
+ /** @deprecated `Palette` kullan. 0.3.0'da kaldırılacak. */
96
+ export type Palet = Palette;
97
+ /** @deprecated `PalettePair` kullan. 0.3.0'da kaldırılacak. */
98
+ export type PaletCifti = PalettePair;
99
+ /** @deprecated `Measurement` kullan. 0.3.0'da kaldırılacak. */
100
+ export type Olcum = Measurement;
101
+ /** @deprecated `isHex` kullan (tamga-ui/palette üzerinden). 0.3.0'da kaldırılacak. */
102
+ export { gecerliHex, hexRgb, rgbHex, parlaklik, oran, acikligi, dL, hexOklch, oklchHex, oranaGoreAcikligi } from "./color.js";
84
103
  //# sourceMappingURL=palette.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/lib/palette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAsB,IAAI,EAAc,MAAM,YAAY,CAAC;AAE5F;;;;;;;;;;;;;;;;GAgBG;AAEH,qFAAqF;AACrF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAqHvD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAItD;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AAItB,MAAM,MAAM,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpG;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAsB3C;AAwBD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI3D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAMjD;AAED,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/lib/palette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAA0B,QAAQ,EAAc,MAAM,YAAY,CAAC;AAEpG;;;;;;;;;;;;;;;;GAgBG;AAEH,qFAAqF;AACrF,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAqH5D;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAIzD;AAED,OAAO,EAAE,KAAK,EAAE,CAAC;AAIjB,+BAA+B;AAC/B,MAAM,MAAM,WAAW,GAAG;IACxB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,CAsBxD;AAwBD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAMpD;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAKvC,+DAA+D;AAC/D,eAAO,MAAM,SAAS,oBAAc,CAAC;AACrC,kEAAkE;AAClE,eAAO,MAAM,SAAS,uBAAiB,CAAC;AACxC,+DAA+D;AAC/D,eAAO,MAAM,UAAU,oBAAc,CAAC;AACtC,8DAA8D;AAC9D,eAAO,MAAM,QAAQ,mBAAa,CAAC;AACnC,2DAA2D;AAC3D,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC;AAC5B,+DAA+D;AAC/D,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AACrC,+DAA+D;AAC/D,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC;AAChC,sFAAsF;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}