tamga-ui 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/dist/components/overlay.d.ts +10 -1
- package/dist/components/overlay.d.ts.map +1 -1
- package/dist/components/overlay.js +52 -6
- package/dist/components/primitives.d.ts +10 -1
- package/dist/components/primitives.d.ts.map +1 -1
- package/dist/components/primitives.js +2 -2
- package/dist/fonts.css +1 -1
- package/dist/kit.css +49 -1
- package/dist/patterns/detail-template.d.ts +11 -1
- package/dist/patterns/detail-template.d.ts.map +1 -1
- package/dist/patterns/detail-template.js +2 -2
- package/dist/styles.css +1 -1
- package/dist/theme.css +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,53 @@ Versions follow [semver](https://semver.org/). Through `0.x`, breaking changes m
|
|
|
5
5
|
|
|
6
6
|
> 🇹🇷 Türkçe için [tamga.org.tr/tr](https://tamga.org.tr/tr).
|
|
7
7
|
|
|
8
|
+
## 0.13.0
|
|
9
|
+
|
|
10
|
+
> The tooltip can carry a sentence, stays on the screen, and opens on a tap; a detail page
|
|
11
|
+
> can say its object's state under the title.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **`DetailTemplate` `status`** · a place under the identity line, before the tabs, for the
|
|
16
|
+
object's state right now ("running", "shipped", "overdue"). The template keeps only the
|
|
17
|
+
place and the 8px above it; what goes in is the product's (a `StatusChip`, a short line, a
|
|
18
|
+
link). It stands on every tab, because the header does. Without it nothing is drawn.
|
|
19
|
+
|
|
20
|
+
- **`Tooltip` `wrap`** · breaks a sentence into lines at 288px (the Popover's width) instead
|
|
21
|
+
of one line across the screen. Off by default: a tooltip is still a one-line label.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- **`Tooltip` stays inside the viewport.** Near the screen's edge the bubble slides in until
|
|
26
|
+
16px is left; the arrow keeps pointing at the trigger.
|
|
27
|
+
- **`Tooltip` opens on a tap.** On a touch screen a tap opens it and a tap elsewhere closes
|
|
28
|
+
it. Before, the `pointerleave` at the end of a tap closed it before it opened, and iOS
|
|
29
|
+
Safari does not focus a tapped button, so on a phone it could not be opened at all.
|
|
30
|
+
|
|
31
|
+
## 0.12.0
|
|
32
|
+
|
|
33
|
+
> The detail page's title is the page title; the alert has a page-level look.
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
- **`Alert` `look="banner"`** · the page-level status box at the top of an object's page
|
|
38
|
+
("the store is down", "running", "in maintenance"): the card's 1.5px strong edge and
|
|
39
|
+
4px hard shadow, a 44px tile with the `md` glyph, a display-face title (`--text-display-sm`,
|
|
40
|
+
extrabold), body copy at `--text-body`, 18/20px padding. The action and the dismiss sit on
|
|
41
|
+
the tile's centre. At 390px the action drops under the text (the text column keeps at least
|
|
42
|
+
9rem) instead of squeezing the title into a five-letter column. `inline` stays the default and is unchanged: without `look` the markup
|
|
43
|
+
and the CSS are what they were. Shown in six tones on the docs page.
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
- **`DetailTemplate` draws its title as `PageBand` does**: an `h1` in the display face
|
|
48
|
+
(`--text-display-sm`, extrabold), the breadcrumb 6px above, the subtitle 6px below at body
|
|
49
|
+
size in the soft ink. It was an `h2` at `--text-title` semibold with a small faint subtitle,
|
|
50
|
+
so a list page's title was big and bold and an object's name small and thin; a detail page
|
|
51
|
+
had no `h1` at all. This enlarges every detail title in every product using the template,
|
|
52
|
+
on purpose: they all carried the same inconsistency. A long title (a hostname) breaks
|
|
53
|
+
inside the box at 390px.
|
|
54
|
+
|
|
8
55
|
## 0.11.0
|
|
9
56
|
|
|
10
57
|
> Group controls carry their own error line; the breadcrumb is a label line.
|
|
@@ -119,7 +119,7 @@ declare const placements: {
|
|
|
119
119
|
*
|
|
120
120
|
* Gerekçe: docs/gerekce/07-katman-ve-diyalog.md
|
|
121
121
|
*/
|
|
122
|
-
export declare function Tooltip({ label, placement, delay, bind, children, ...rest }: {
|
|
122
|
+
export declare function Tooltip({ label, placement, delay, bind, wrap, children, ...rest }: {
|
|
123
123
|
label: string;
|
|
124
124
|
placement?: keyof typeof placements;
|
|
125
125
|
/**
|
|
@@ -140,6 +140,15 @@ export declare function Tooltip({ label, placement, delay, bind, children, ...re
|
|
|
140
140
|
* ekran okuyucu metni iki kez okuyor · bir kez ad, bir kez açıklama olarak.
|
|
141
141
|
*/
|
|
142
142
|
bind?: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Lets a sentence break into lines at 288px (the Popover's width) instead of running as one
|
|
145
|
+
* line across the screen. A tooltip is a label; turn this on only when the explanation
|
|
146
|
+
* really is a sentence (why a status reads as it does). TR: Bir cümlenin tek satır olarak
|
|
147
|
+
* ekranı boydan boya geçmesi yerine 288px'te (Popover'ın genişliği) satır kırmasını sağlar.
|
|
148
|
+
* İpucu bir etikettir; yalnız açıklama gerçekten bir cümleyse aç (bir durumun neden öyle
|
|
149
|
+
* okunduğu gibi).
|
|
150
|
+
*/
|
|
151
|
+
wrap?: boolean;
|
|
143
152
|
children: React.ReactNode;
|
|
144
153
|
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
145
154
|
[k: `data-${string}`]: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/components/overlay.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/components/overlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { cloneElement, isValidElement, useCallback, useEffect, useId, useRef, useState } from "react";
|
|
3
|
+
import { cloneElement, isValidElement, useCallback, useEffect, useId, useLayoutEffect, useRef, useState } from "react";
|
|
4
4
|
import { toneOf } from "./tone.js";
|
|
5
5
|
import { Icon } from "./icon.js";
|
|
6
6
|
import { cn } from "../lib/cn.js";
|
|
@@ -103,9 +103,13 @@ const arrows = {
|
|
|
103
103
|
*
|
|
104
104
|
* Gerekçe: docs/gerekce/07-katman-ve-diyalog.md
|
|
105
105
|
*/
|
|
106
|
-
export function Tooltip({ label, placement = "bottom", delay = 400, bind = true, children, ...rest }) {
|
|
106
|
+
export function Tooltip({ label, placement = "bottom", delay = 400, bind = true, wrap = false, children, ...rest }) {
|
|
107
107
|
const sarmal = useRef(null);
|
|
108
|
+
const kabarcik = useRef(null);
|
|
108
109
|
const [konum, setKonum] = useState(null);
|
|
110
|
+
/* Kabarcığın görüntü alanına sığmak için yatayda kaydığı mesafe; ok kaymıyor,
|
|
111
|
+
tetikleyiciyi göstermeye devam ediyor. */
|
|
112
|
+
const [kayma, setKayma] = useState(0);
|
|
109
113
|
const id = useId();
|
|
110
114
|
const bekleyen = useRef(null);
|
|
111
115
|
const olc = useCallback(() => {
|
|
@@ -149,6 +153,23 @@ export function Tooltip({ label, placement = "bottom", delay = 400, bind = true,
|
|
|
149
153
|
if (bekleyen.current !== null)
|
|
150
154
|
clearTimeout(bekleyen.current);
|
|
151
155
|
}, []);
|
|
156
|
+
/* EKRANA SIĞ. Ortalanan kabarcık, kenara yakın bir tetikleyicide görüntü
|
|
157
|
+
alanından taşıyordu (390px'te 288px'lik bir cümle). Açılınca ölçülüyor ve
|
|
158
|
+
kenara 16px kalacak kadar içeri itiliyor. */
|
|
159
|
+
useLayoutEffect(() => {
|
|
160
|
+
const el = kabarcik.current;
|
|
161
|
+
if (!konum || !el || placement === "left" || placement === "right") {
|
|
162
|
+
setKayma(0);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const r = el.getBoundingClientRect();
|
|
166
|
+
const pay = 16;
|
|
167
|
+
const solaTasma = pay - (r.left - kayma);
|
|
168
|
+
const sagaTasma = r.right - kayma - (document.documentElement.clientWidth - pay);
|
|
169
|
+
setKayma(solaTasma > 0 ? solaTasma : sagaTasma > 0 ? -sagaTasma : 0);
|
|
170
|
+
// kayma ölçümün sonucu, girdisi değil: onu izlemek döngü kurar.
|
|
171
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
172
|
+
}, [konum, placement]);
|
|
152
173
|
/* Kaydırma ya da yeniden boyutlanma ipucunun altından tetikleyiciyi çekiyor;
|
|
153
174
|
o an kapanması, yanlış yerde durmasından iyi. */
|
|
154
175
|
useEffect(() => {
|
|
@@ -158,29 +179,50 @@ export function Tooltip({ label, placement = "bottom", delay = 400, bind = true,
|
|
|
158
179
|
biri için bir engel · ve odak tetikleyicide kaldığı için başka çıkışı
|
|
159
180
|
yok. */
|
|
160
181
|
const esc = (e) => e.key === "Escape" && kapat();
|
|
182
|
+
/* Dokunmatikte fare çekilmiyor: kabarcık başka yere dokununca kapanıyor. */
|
|
183
|
+
const disari = (e) => {
|
|
184
|
+
if (!sarmal.current?.contains(e.target))
|
|
185
|
+
kapat();
|
|
186
|
+
};
|
|
161
187
|
window.addEventListener("scroll", kapat, true);
|
|
162
188
|
window.addEventListener("resize", kapat);
|
|
163
189
|
document.addEventListener("keydown", esc);
|
|
190
|
+
document.addEventListener("pointerdown", disari);
|
|
164
191
|
return () => {
|
|
165
192
|
window.removeEventListener("scroll", kapat, true);
|
|
166
193
|
window.removeEventListener("resize", kapat);
|
|
167
194
|
document.removeEventListener("keydown", esc);
|
|
195
|
+
document.removeEventListener("pointerdown", disari);
|
|
168
196
|
};
|
|
169
197
|
}, [konum, kapat]);
|
|
198
|
+
/* DOKUNMA AÇIYOR. Telefonda "üstüne gelmek" yok: iOS Safari dokunulan
|
|
199
|
+
düğmeye odak da vermiyor, ve dokunuşun sonundaki `pointerleave` kabarcığı
|
|
200
|
+
açılmadan kapatıyordu. Dokunuş aç/kapa, fareninkiler dokunuşta yok sayılıyor. */
|
|
201
|
+
const dokunus = useCallback((e) => {
|
|
202
|
+
if (e.pointerType !== "touch")
|
|
203
|
+
return;
|
|
204
|
+
if (konum)
|
|
205
|
+
kapat();
|
|
206
|
+
else
|
|
207
|
+
olc();
|
|
208
|
+
}, [konum, kapat, olc]);
|
|
170
209
|
const kaydirma = {
|
|
171
210
|
top: "translate(-50%, -100%)",
|
|
172
211
|
bottom: "translate(-50%, 0)",
|
|
173
212
|
left: "translate(-100%, -50%)",
|
|
174
213
|
right: "translate(0, -50%)",
|
|
175
214
|
};
|
|
176
|
-
return (_jsxs("span", { ...dataProps(rest), ref: sarmal, className: "relative inline-flex", onPointerEnter: gecikmeliAc, onPointerLeave: kapat, onFocusCapture: olc, onBlurCapture: kapat, children: [bind ? (_jsx("span", { id: id, className: "sr-only", children: label })) : null, bind && isValidElement(children)
|
|
215
|
+
return (_jsxs("span", { ...dataProps(rest), ref: sarmal, className: "relative inline-flex", onPointerEnter: (e) => e.pointerType !== "touch" && gecikmeliAc(), onPointerLeave: (e) => e.pointerType !== "touch" && kapat(), onPointerDown: dokunus, onFocusCapture: olc, onBlurCapture: kapat, children: [bind ? (_jsx("span", { id: id, className: "sr-only", children: label })) : null, bind && isValidElement(children)
|
|
177
216
|
? cloneElement(children, {
|
|
178
217
|
"aria-describedby": id,
|
|
179
218
|
})
|
|
180
|
-
: children, konum && (_jsxs("span", { "aria-hidden": true, className: "pointer-events-none fixed z-40
|
|
181
|
-
left: konum.left,
|
|
219
|
+
: children, konum && (_jsxs("span", { ref: kabarcik, "aria-hidden": true, className: cn("pointer-events-none fixed z-40 px-2 py-1 text-small", wrap ? "whitespace-normal leading-relaxed" : "whitespace-nowrap"), style: {
|
|
220
|
+
left: konum.left + kayma,
|
|
182
221
|
top: konum.top,
|
|
183
222
|
transform: kaydirma[placement],
|
|
223
|
+
/* 288px Popover'ın genişliği; dar ekranda iki yanda 16px kalıyor. */
|
|
224
|
+
maxWidth: wrap ? "min(18rem, calc(100vw - 2rem))" : undefined,
|
|
225
|
+
width: wrap ? "max-content" : undefined,
|
|
184
226
|
background: "var(--color-ink)",
|
|
185
227
|
color: "var(--color-page)",
|
|
186
228
|
/* KENDİ KENARI VAR. Kenarsız koyu bir kutu, koyu temada sayfadan
|
|
@@ -188,7 +230,11 @@ export function Tooltip({ label, placement = "bottom", delay = 400, bind = true,
|
|
|
188
230
|
da koyu kaldığı için sınır her ikisinde de duruyor. */
|
|
189
231
|
border: "1.5px solid var(--color-edge-strong)",
|
|
190
232
|
borderRadius: "calc(var(--radius) - 1px)",
|
|
191
|
-
}, children: [label, _jsx("span", { "aria-hidden": true, className: "absolute block", style: {
|
|
233
|
+
}, children: [label, _jsx("span", { "aria-hidden": true, className: "absolute block", style: {
|
|
234
|
+
background: "var(--color-ink)",
|
|
235
|
+
...arrows[placement],
|
|
236
|
+
...(kayma ? { marginLeft: -6 - kayma } : null),
|
|
237
|
+
} })] }))] }));
|
|
192
238
|
}
|
|
193
239
|
export function Toast({ tone = "neutral", title, description, action, onDismiss, dismissLabel, duration, ...rest }) {
|
|
194
240
|
/* ÜSTÜNE GELİNCE SAYAÇ DURUYOR. Okumak için üstüne gelen kişiden bildirimi
|
|
@@ -56,8 +56,17 @@ export declare function Beacon({ live, label, look, state, edged, severity, ...r
|
|
|
56
56
|
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
57
57
|
[k: `data-${string}`]: unknown;
|
|
58
58
|
}): import("react").JSX.Element;
|
|
59
|
-
export declare function Alert({ state, title, icon, children, action, onDismiss, dismissLabel, ...rest }: {
|
|
59
|
+
export declare function Alert({ state, look, title, icon, children, action, onDismiss, dismissLabel, ...rest }: {
|
|
60
60
|
state?: Tone;
|
|
61
|
+
/**
|
|
62
|
+
* `inline` (default) the quiet box inside a page. `banner` the page-level status box at the
|
|
63
|
+
* top of an object's page ("the store is down", "running", "in maintenance"): the card's
|
|
64
|
+
* strong edge and hard shadow, a 44px tile, a display-face title, body copy at body size.
|
|
65
|
+
* TR: `inline` (varsayılan) sayfanın içindeki sessiz kutu. `banner` bir nesnenin sayfasının
|
|
66
|
+
* en üstündeki sayfa düzeyinde durum kutusu ("mağaza erişilemiyor", "çalışıyor", "bakımda"):
|
|
67
|
+
* kartın koyu kenarı ve sert gölgesi, 44px karo, gösterim yüzüyle başlık, gövde boyunda metin.
|
|
68
|
+
*/
|
|
69
|
+
look?: "inline" | "banner";
|
|
61
70
|
title: string;
|
|
62
71
|
/**
|
|
63
72
|
* Called when the reader dismisses it. Given, a close control appears at the end of the row.
|
|
@@ -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;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAW5C,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQvC,wBAAgB,SAAS,CAAC,EACxB,QAAgB,EAChB,IAAc,EACd,KAAK,EACL,GAAG,IAAI,EACR,EAAE;IACD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAoBA;AAED,yFAAyF;AACzF,wBAAgB,MAAM,CAAC,EACrB,IAAW,EACX,KAAK,EACL,IAAc,EACd,KAAiB,EACjB,KAAa,EACb,QAAa,EACb,GAAG,IAAI,EACR,EAAE;IACD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,IAAI,CAAC;IACb;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+BAiBA;AAcD,wBAAgB,KAAK,CAAC,EACpB,KAAiB,EACjB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,GAAG,IAAI,EACR,EAAE;IACD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,yIAAyI;IACzI,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,mEAAmE;IACnE,CAAC,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CAChC,+
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/components/primitives.tsx"],"names":[],"mappings":"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"}
|
|
@@ -51,9 +51,9 @@ const TON_GLIFI = {
|
|
|
51
51
|
elevated: Warning,
|
|
52
52
|
danger: Failure,
|
|
53
53
|
};
|
|
54
|
-
export function Alert({ state = "caution", title, icon, children, action, onDismiss, dismissLabel, ...rest }) {
|
|
54
|
+
export function Alert({ state = "caution", look = "inline", title, icon, children, action, onDismiss, dismissLabel, ...rest }) {
|
|
55
55
|
const h = toneOf(state);
|
|
56
|
-
return (_jsxs("div", { ...dataProps(rest), className: "tamga-alert", "data-body": children ? "true" : undefined, style: state === "neutral" ? undefined : { background: h.bg }, role: "status", children: [_jsx("span", { "aria-hidden": true, className: "tamga-alert-tile", style: { background: h.mark, color: h.markInk }, children: _jsx(Icon, { icon: icon ?? TON_GLIFI[state], size: "sm", weight: "fill" }) }), _jsxs("div", { className: "
|
|
56
|
+
return (_jsxs("div", { ...dataProps(rest), className: "tamga-alert", "data-look": look === "banner" ? "banner" : undefined, "data-body": children ? "true" : undefined, style: state === "neutral" ? undefined : { background: h.bg }, role: "status", children: [_jsx("span", { "aria-hidden": true, className: "tamga-alert-tile", style: { background: h.mark, color: h.markInk }, children: _jsx(Icon, { icon: icon ?? TON_GLIFI[state], size: look === "banner" ? "md" : "sm", weight: "fill" }) }), _jsxs("div", { className: "tamga-alert-metin", children: [_jsx("p", { className: "tamga-alert-baslik text-ink", children: title }), children ? (_jsx("div", { className: "tamga-alert-govde mt-1 leading-relaxed text-ink-soft", children: children })) : null] }), action ? _jsx("div", { className: "tamga-alert-eylem", children: action }) : null, onDismiss ? (_jsx("button", { type: "button", className: "tamga-icon-btn tamga-icon-btn-sm tamga-icon-btn-ghost tamga-alert-kapat", "aria-label": dismissLabel, onClick: onDismiss, children: _jsx(Icon, { icon: Close, size: "xs" }) })) : null] }));
|
|
57
57
|
}
|
|
58
58
|
export function Breadcrumb({ items, label, ...rest }) {
|
|
59
59
|
return (_jsx("nav", { ...dataProps(rest), "aria-label": label, children: _jsx("ol", { className: "tamga-crumb", children: items.map((item, i) => {
|
package/dist/fonts.css
CHANGED
package/dist/kit.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! tamga-ui 0.
|
|
1
|
+
/*! tamga-ui 0.13.0 · MIT · https://tamga.org.tr */
|
|
2
2
|
:root {
|
|
3
3
|
|
|
4
4
|
--overlay-gap: 8px;
|
|
@@ -3681,9 +3681,18 @@
|
|
|
3681
3681
|
}
|
|
3682
3682
|
|
|
3683
3683
|
.tamga-alert-baslik {
|
|
3684
|
+
font-size: var(--text-body);
|
|
3685
|
+
font-weight: var(--weight-body);
|
|
3684
3686
|
margin-top: calc((28px - 1lh) / 2);
|
|
3685
3687
|
overflow-wrap: anywhere;
|
|
3686
3688
|
}
|
|
3689
|
+
.tamga-alert-govde {
|
|
3690
|
+
font-size: var(--text-small);
|
|
3691
|
+
}
|
|
3692
|
+
.tamga-alert-metin {
|
|
3693
|
+
flex: 1;
|
|
3694
|
+
min-width: 0;
|
|
3695
|
+
}
|
|
3687
3696
|
|
|
3688
3697
|
.tamga-alert[data-body] > .tamga-alert-tile {
|
|
3689
3698
|
margin-top: 2px;
|
|
@@ -3695,6 +3704,45 @@
|
|
|
3695
3704
|
margin-top: -1px;
|
|
3696
3705
|
}
|
|
3697
3706
|
|
|
3707
|
+
.tamga-alert[data-look="banner"] {
|
|
3708
|
+
border: 1.5px solid var(--color-edge-strong);
|
|
3709
|
+
border-radius: var(--radius-card);
|
|
3710
|
+
box-shadow: 4px 4px 0 var(--color-edge-strong);
|
|
3711
|
+
flex-wrap: wrap;
|
|
3712
|
+
gap: 16px;
|
|
3713
|
+
padding: 18px 20px;
|
|
3714
|
+
}
|
|
3715
|
+
|
|
3716
|
+
.tamga-alert[data-look="banner"] > .tamga-alert-metin {
|
|
3717
|
+
flex: 1 1 9rem;
|
|
3718
|
+
min-width: 9rem;
|
|
3719
|
+
}
|
|
3720
|
+
.tamga-alert[data-look="banner"] > .tamga-alert-metin + .tamga-alert-eylem,
|
|
3721
|
+
.tamga-alert[data-look="banner"] > .tamga-alert-metin + .tamga-alert-kapat {
|
|
3722
|
+
margin-left: auto;
|
|
3723
|
+
}
|
|
3724
|
+
.tamga-alert[data-look="banner"] > .tamga-alert-tile {
|
|
3725
|
+
border-radius: var(--radius-btn);
|
|
3726
|
+
height: 44px;
|
|
3727
|
+
width: 44px;
|
|
3728
|
+
}
|
|
3729
|
+
.tamga-alert[data-look="banner"] .tamga-alert-baslik {
|
|
3730
|
+
font-family: var(--font-display);
|
|
3731
|
+
font-size: var(--text-display-sm);
|
|
3732
|
+
font-weight: var(--weight-display);
|
|
3733
|
+
line-height: 1.2;
|
|
3734
|
+
margin-top: calc((44px - 1lh) / 2);
|
|
3735
|
+
}
|
|
3736
|
+
.tamga-alert[data-look="banner"] .tamga-alert-govde {
|
|
3737
|
+
font-size: var(--text-body);
|
|
3738
|
+
}
|
|
3739
|
+
.tamga-alert[data-look="banner"] > .tamga-alert-eylem {
|
|
3740
|
+
margin-top: 6px;
|
|
3741
|
+
}
|
|
3742
|
+
.tamga-alert[data-look="banner"] > .tamga-alert-kapat {
|
|
3743
|
+
margin-top: 7px;
|
|
3744
|
+
}
|
|
3745
|
+
|
|
3698
3746
|
.tamga-count-dot {
|
|
3699
3747
|
display: block;
|
|
3700
3748
|
width: 10px;
|
|
@@ -23,6 +23,16 @@ export type DetailTemplateProps = {
|
|
|
23
23
|
title: string;
|
|
24
24
|
/** Under the title: the object's identity line. TR: Başlığın altı: nesnenin kimlik satırı. */
|
|
25
25
|
subtitle?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Under the identity line: the object's state right now ("running", "shipped", "overdue"). The
|
|
28
|
+
* template keeps only its place and the 8px above it; what goes in is the product's (a
|
|
29
|
+
* `StatusChip`, a short line, a link), so a redesign of the line never touches the kit. On every
|
|
30
|
+
* tab, because the header is. TR: Kimlik satırının altı: nesnenin şu anki hâli ("çalışıyor",
|
|
31
|
+
* "kargoda", "gecikti"). Şablon yalnız yerini ve üstündeki 8px'i tutar; içi ürünündür (bir
|
|
32
|
+
* `StatusChip`, kısa bir satır, bir bağlantı), yani satırın yeniden tasarımı kite dokunmaz. Her
|
|
33
|
+
* sekmede, çünkü başlık her sekmede.
|
|
34
|
+
*/
|
|
35
|
+
status?: ReactNode;
|
|
26
36
|
actions?: ReactNode;
|
|
27
37
|
/**
|
|
28
38
|
* Sekmeler. VERİLMEZSE ŞERİT ÇİZİLMİYOR, ve bu bir kolaylık değil bir
|
|
@@ -48,5 +58,5 @@ export type DetailTemplateProps = {
|
|
|
48
58
|
/** The body of the open tab. The template does not know which tab it is, and must not. TR: Açık sekmenin gövdesi. Şablon hangi sekme olduğunu bilmiyor, bilmemeli. */
|
|
49
59
|
children?: ReactNode;
|
|
50
60
|
};
|
|
51
|
-
export declare function DetailTemplate({ breadcrumb, title, subtitle, actions, tabs, activeTab, state, error, linkComponent: Link, labels, children, }: DetailTemplateProps): import("react").JSX.Element;
|
|
61
|
+
export declare function DetailTemplate({ breadcrumb, title, subtitle, status, actions, tabs, activeTab, state, error, linkComponent: Link, labels, children, }: DetailTemplateProps): import("react").JSX.Element;
|
|
52
62
|
//# sourceMappingURL=detail-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detail-template.d.ts","sourceRoot":"","sources":["../../src/patterns/detail-template.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG;IACtB,+GAA+G;IAC/G,GAAG,EAAE,MAAM,CAAC;IACZ,wKAAwK;IACxK,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,0JAA0J;IAC1J,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW,CAAC;IAE5E,sKAAsK;IACtK,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,KAAK,EACL,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,KAAe,EACf,KAAK,EACL,aAAa,EAAE,IAAgB,EAC/B,MAAM,EACN,QAAQ,GACT,EAAE,mBAAmB,+
|
|
1
|
+
{"version":3,"file":"detail-template.d.ts","sourceRoot":"","sources":["../../src/patterns/detail-template.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG;IACtB,+GAA+G;IAC/G,GAAG,EAAE,MAAM,CAAC;IACZ,wKAAwK;IACxK,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,0JAA0J;IAC1J,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW,CAAC;IAE5E,sKAAsK;IACtK,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,IAAI,EACJ,SAAS,EACT,KAAe,EACf,KAAK,EACL,aAAa,EAAE,IAAgB,EAC/B,MAAM,EACN,QAAQ,GACT,EAAE,mBAAmB,+BAuDrB"}
|
|
@@ -3,8 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { Breadcrumb } from "../components/primitives.js";
|
|
4
4
|
import { SkeletonPanel } from "../components/skeleton.js";
|
|
5
5
|
import { Busy, ErrorSlot, PlainLink, } from "./shared.js";
|
|
6
|
-
export function DetailTemplate({ breadcrumb, title, subtitle, actions, tabs, activeTab, state = "ready", error, linkComponent: Link = PlainLink, labels, children, }) {
|
|
7
|
-
return (_jsxs("div", { className: "flex min-h-0 flex-col", "data-detail-state": state, children: [_jsxs("div", { className: "tamga-gutter flex flex-wrap items-start gap-4 pt-4", children: [_jsxs("div", { className: "min-w-0", children: [_jsx(Breadcrumb, { label: labels.breadcrumb, items: breadcrumb }), _jsx("
|
|
6
|
+
export function DetailTemplate({ breadcrumb, title, subtitle, status, actions, tabs, activeTab, state = "ready", error, linkComponent: Link = PlainLink, labels, children, }) {
|
|
7
|
+
return (_jsxs("div", { className: "flex min-h-0 flex-col", "data-detail-state": state, children: [_jsxs("div", { className: "tamga-gutter flex flex-wrap items-start gap-4 pt-4", children: [_jsxs("div", { className: "min-w-0 flex-1 basis-65", children: [_jsx("div", { className: "mb-1.5", children: _jsx(Breadcrumb, { label: labels.breadcrumb, items: breadcrumb }) }), _jsx("h1", { className: "font-display text-display-sm leading-tight font-extrabold break-words text-ink", children: title }), subtitle ? _jsx("p", { className: "mt-1.5 text-body text-ink-soft", children: subtitle }) : null, status ? _jsx("div", { className: "mt-2", "data-detail-status": true, children: status }) : null] }), actions ? _jsx("div", { className: "ml-auto flex flex-wrap items-center gap-2", children: actions }) : null] }), tabs && tabs.length > 0 ? (_jsx("nav", { "aria-label": labels.tabs, className: "tamga-gutter mt-4 flex gap-6 border-b border-line", children: tabs.map((tab) => {
|
|
8
8
|
const current = tab.key === activeTab;
|
|
9
9
|
return (_jsx(Link, { href: tab.href, className: "tamga-tab", "data-active": current, "data-tab": tab.key, "aria-current": current ? "page" : undefined, children: tab.label }, tab.key));
|
|
10
10
|
}) })) : null, _jsxs("div", { className: "tamga-gutter min-h-0 flex-1 py-6", children: [state === "loading" ? (_jsx(Busy, { label: labels.loading, children: _jsx(SkeletonPanel, {}) })) : null, state === "error" ? _jsx(ErrorSlot, { error: error, labels: labels }) : null, state === "ready" ? children : null] })] }));
|
package/dist/styles.css
CHANGED
package/dist/theme.css
CHANGED