tamga-ui 0.2.0 → 0.3.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 +86 -0
- package/dist/components/appearance.d.ts +78 -0
- package/dist/components/appearance.d.ts.map +1 -0
- package/dist/components/appearance.js +73 -0
- package/dist/components/chrome.d.ts +11 -1
- package/dist/components/chrome.d.ts.map +1 -1
- package/dist/components/chrome.js +19 -6
- package/dist/components/error-state.d.ts +7 -14
- package/dist/components/error-state.d.ts.map +1 -1
- package/dist/components/overlay.d.ts +7 -16
- package/dist/components/overlay.d.ts.map +1 -1
- package/dist/components/primitives.d.ts +7 -16
- package/dist/components/primitives.d.ts.map +1 -1
- package/dist/components/rail-link.d.ts +22 -2
- package/dist/components/rail-link.d.ts.map +1 -1
- package/dist/components/rail-link.js +12 -9
- package/dist/components/square-picker.d.ts +41 -0
- package/dist/components/square-picker.d.ts.map +1 -0
- package/dist/components/square-picker.js +90 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/kit.css +237 -729
- package/dist/lib/color.d.ts +0 -20
- package/dist/lib/color.d.ts.map +1 -1
- package/dist/lib/color.js +0 -22
- package/dist/lib/image.d.ts +46 -0
- package/dist/lib/image.d.ts.map +1 -0
- package/dist/lib/image.js +95 -0
- package/dist/lib/palette.d.ts +0 -16
- package/dist/lib/palette.d.ts.map +1 -1
- package/dist/lib/palette.js +0 -12
- package/dist/patterns/app-shell.d.ts.map +1 -1
- package/dist/patterns/app-shell.js +2 -12
- package/dist/patterns/appearance-template.d.ts +105 -0
- package/dist/patterns/appearance-template.d.ts.map +1 -0
- package/dist/patterns/appearance-template.js +23 -0
- package/dist/patterns/index.d.ts +1 -0
- package/dist/patterns/index.d.ts.map +1 -1
- package/dist/patterns/index.js +1 -0
- package/dist/patterns/settings-template.d.ts +12 -1
- package/dist/patterns/settings-template.d.ts.map +1 -1
- package/dist/patterns/settings-template.js +2 -2
- package/dist/patterns/shared.d.ts +1 -1
- package/dist/patterns/shared.d.ts.map +1 -1
- package/dist/styles.css +1 -3
- package/dist/theme.css +127 -483
- package/package.json +4 -1
package/dist/lib/color.d.ts
CHANGED
|
@@ -65,24 +65,4 @@ export declare function oklchToHex({ l, c, h }: Oklch): string;
|
|
|
65
65
|
* yakalanıyor.
|
|
66
66
|
*/
|
|
67
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;
|
|
88
68
|
//# sourceMappingURL=color.d.ts.map
|
package/dist/lib/color.d.ts.map
CHANGED
|
@@ -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,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
|
|
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"}
|
package/dist/lib/color.js
CHANGED
|
@@ -132,25 +132,3 @@ export function lightnessForContrast(taban, karsi, hedef, yon) {
|
|
|
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;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turning an uploaded file into something a panel can carry.
|
|
3
|
+
*
|
|
4
|
+
* NO LIBRARY, and none is needed: a `<canvas>` and `drawImage`.
|
|
5
|
+
*
|
|
6
|
+
* A DATA URI, NOT AN OBJECT URL. `URL.createObjectURL` dies with the tab, so a
|
|
7
|
+
* logo chosen today would be gone tomorrow. A data URI survives in storage and
|
|
8
|
+
* goes straight into `<img src>`. When a server arrives this file becomes an
|
|
9
|
+
* upload call and nothing else changes: screens already hold a STRING and do
|
|
10
|
+
* not care whether it is a data URI or an `https://` address.
|
|
11
|
+
*
|
|
12
|
+
* WHY IT IS RESIZED. `localStorage` holds about 5 MB per browser and a phone
|
|
13
|
+
* photo alone is 4 MB. Writing one unresized throws `QuotaExceeded`, and the
|
|
14
|
+
* thing that gets lost may not be the logo but whatever else was being saved
|
|
15
|
+
* at that moment.
|
|
16
|
+
*
|
|
17
|
+
* THE RATIO IS KEPT, NOTHING IS CROPPED. Cropping to fit a square is the most
|
|
18
|
+
* common and most silent mistake: the logo looks fine and its edge is gone.
|
|
19
|
+
* The long side is pulled to the limit, the short side follows.
|
|
20
|
+
*
|
|
21
|
+
* PNG, NOT JPEG. Logos are flat and transparent; JPEG turns transparency into
|
|
22
|
+
* solid black and rings the edges.
|
|
23
|
+
*/
|
|
24
|
+
export type ImageError = "type" | "size" | "unreadable";
|
|
25
|
+
export declare const IMAGE_ACCEPT = "image/png,image/jpeg,image/svg+xml,image/webp";
|
|
26
|
+
/**
|
|
27
|
+
* Resizes so the longest side is `maxEdge` pixels and returns a data URI.
|
|
28
|
+
*
|
|
29
|
+
* SVG PASSES THROUGH UNTOUCHED. Drawing a vector onto a canvas and writing PNG
|
|
30
|
+
* stops it being scalable: a logo baked at 512px is blurry on a 4K screen. SVG
|
|
31
|
+
* is already small and already sharp at every size.
|
|
32
|
+
*/
|
|
33
|
+
export declare function prepareImage(file: File, maxEdge: number): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Cuts a SQUARE piece out of an image: for a mark or a profile photo.
|
|
36
|
+
*
|
|
37
|
+
* `area` is given in RATIOS (0 to 1), not in the image's own pixels, because
|
|
38
|
+
* the picker runs on a preview whose scale changes from screen to screen. A
|
|
39
|
+
* ratio points at the same place at every scale.
|
|
40
|
+
*/
|
|
41
|
+
export declare function cropSquare(source: string, area: {
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
size: number;
|
|
45
|
+
}, maxEdge: number): Promise<string>;
|
|
46
|
+
//# sourceMappingURL=image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/lib/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;AAKxD,eAAO,MAAM,YAAY,kDAAkD,CAAC;AAE5E;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB/E;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAcjB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turning an uploaded file into something a panel can carry.
|
|
3
|
+
*
|
|
4
|
+
* NO LIBRARY, and none is needed: a `<canvas>` and `drawImage`.
|
|
5
|
+
*
|
|
6
|
+
* A DATA URI, NOT AN OBJECT URL. `URL.createObjectURL` dies with the tab, so a
|
|
7
|
+
* logo chosen today would be gone tomorrow. A data URI survives in storage and
|
|
8
|
+
* goes straight into `<img src>`. When a server arrives this file becomes an
|
|
9
|
+
* upload call and nothing else changes: screens already hold a STRING and do
|
|
10
|
+
* not care whether it is a data URI or an `https://` address.
|
|
11
|
+
*
|
|
12
|
+
* WHY IT IS RESIZED. `localStorage` holds about 5 MB per browser and a phone
|
|
13
|
+
* photo alone is 4 MB. Writing one unresized throws `QuotaExceeded`, and the
|
|
14
|
+
* thing that gets lost may not be the logo but whatever else was being saved
|
|
15
|
+
* at that moment.
|
|
16
|
+
*
|
|
17
|
+
* THE RATIO IS KEPT, NOTHING IS CROPPED. Cropping to fit a square is the most
|
|
18
|
+
* common and most silent mistake: the logo looks fine and its edge is gone.
|
|
19
|
+
* The long side is pulled to the limit, the short side follows.
|
|
20
|
+
*
|
|
21
|
+
* PNG, NOT JPEG. Logos are flat and transparent; JPEG turns transparency into
|
|
22
|
+
* solid black and rings the edges.
|
|
23
|
+
*/
|
|
24
|
+
/** Raw file limit, before resizing. Over 8 MB is not a logo, it is an accident. */
|
|
25
|
+
const RAW_LIMIT = 8 * 1024 * 1024;
|
|
26
|
+
export const IMAGE_ACCEPT = "image/png,image/jpeg,image/svg+xml,image/webp";
|
|
27
|
+
/**
|
|
28
|
+
* Resizes so the longest side is `maxEdge` pixels and returns a data URI.
|
|
29
|
+
*
|
|
30
|
+
* SVG PASSES THROUGH UNTOUCHED. Drawing a vector onto a canvas and writing PNG
|
|
31
|
+
* stops it being scalable: a logo baked at 512px is blurry on a 4K screen. SVG
|
|
32
|
+
* is already small and already sharp at every size.
|
|
33
|
+
*/
|
|
34
|
+
export async function prepareImage(file, maxEdge) {
|
|
35
|
+
if (!file.type.startsWith("image/"))
|
|
36
|
+
throw new Error("type");
|
|
37
|
+
if (file.size > RAW_LIMIT)
|
|
38
|
+
throw new Error("size");
|
|
39
|
+
const raw = await readFile(file);
|
|
40
|
+
if (file.type === "image/svg+xml")
|
|
41
|
+
return raw;
|
|
42
|
+
const image = await loadImage(raw);
|
|
43
|
+
const scale = Math.min(1, maxEdge / Math.max(image.width, image.height));
|
|
44
|
+
if (scale >= 1)
|
|
45
|
+
return raw;
|
|
46
|
+
const canvas = document.createElement("canvas");
|
|
47
|
+
canvas.width = Math.round(image.width * scale);
|
|
48
|
+
canvas.height = Math.round(image.height * scale);
|
|
49
|
+
const ctx = canvas.getContext("2d");
|
|
50
|
+
if (!ctx)
|
|
51
|
+
return raw;
|
|
52
|
+
/* The browser's own smoothing: better than a hand-written resampler, and free. */
|
|
53
|
+
ctx.imageSmoothingQuality = "high";
|
|
54
|
+
ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
|
|
55
|
+
return canvas.toDataURL("image/png");
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Cuts a SQUARE piece out of an image: for a mark or a profile photo.
|
|
59
|
+
*
|
|
60
|
+
* `area` is given in RATIOS (0 to 1), not in the image's own pixels, because
|
|
61
|
+
* the picker runs on a preview whose scale changes from screen to screen. A
|
|
62
|
+
* ratio points at the same place at every scale.
|
|
63
|
+
*/
|
|
64
|
+
export async function cropSquare(source, area, maxEdge) {
|
|
65
|
+
const image = await loadImage(source);
|
|
66
|
+
/* The square is measured against the SHORT side: a 350x65 logo can hold a
|
|
67
|
+
square of at most 65px. Measured against the long side the frame would
|
|
68
|
+
fall outside the image. */
|
|
69
|
+
const edge = Math.min(image.width, image.height) * area.size;
|
|
70
|
+
const canvas = document.createElement("canvas");
|
|
71
|
+
canvas.width = maxEdge;
|
|
72
|
+
canvas.height = maxEdge;
|
|
73
|
+
const ctx = canvas.getContext("2d");
|
|
74
|
+
if (!ctx)
|
|
75
|
+
return source;
|
|
76
|
+
ctx.imageSmoothingQuality = "high";
|
|
77
|
+
ctx.drawImage(image, area.x * image.width, area.y * image.height, edge, edge, 0, 0, maxEdge, maxEdge);
|
|
78
|
+
return canvas.toDataURL("image/png");
|
|
79
|
+
}
|
|
80
|
+
function readFile(file) {
|
|
81
|
+
return new Promise((resolve, reject) => {
|
|
82
|
+
const reader = new FileReader();
|
|
83
|
+
reader.onload = () => resolve(String(reader.result));
|
|
84
|
+
reader.onerror = () => reject(new Error("unreadable"));
|
|
85
|
+
reader.readAsDataURL(file);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function loadImage(src) {
|
|
89
|
+
return new Promise((resolve, reject) => {
|
|
90
|
+
const img = new Image();
|
|
91
|
+
img.onload = () => resolve(img);
|
|
92
|
+
img.onerror = () => reject(new Error("unreadable"));
|
|
93
|
+
img.src = src;
|
|
94
|
+
});
|
|
95
|
+
}
|
package/dist/lib/palette.d.ts
CHANGED
|
@@ -84,20 +84,4 @@ export declare function measurePalette(p: Palette): Measurement[];
|
|
|
84
84
|
export declare function paletteVars(p: Palette): Record<string, string>;
|
|
85
85
|
export declare function paletteCss(cift: PalettePair): string;
|
|
86
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";
|
|
103
87
|
//# 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,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
|
|
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"}
|
package/dist/lib/palette.js
CHANGED
|
@@ -191,15 +191,3 @@ export function paletteCss(cift) {
|
|
|
191
191
|
return `:root {\n${blok(cift.light)}\n}\n\n.dark {\n${blok(cift.dark)}\n}\n`;
|
|
192
192
|
}
|
|
193
193
|
export { lightness, deltaL, contrast };
|
|
194
|
-
/* Eski Türkçe adlar, 0.3.0'a kadar. SİLME: 0.1.1 npm'de yayında ve bu adları
|
|
195
|
-
kullanan bir tüketici var. */
|
|
196
|
-
/** @deprecated `makePalette` kullan. 0.3.0'da kaldırılacak. */
|
|
197
|
-
export const paletUret = makePalette;
|
|
198
|
-
/** @deprecated `measurePalette` kullan. 0.3.0'da kaldırılacak. */
|
|
199
|
-
export const paletiOlc = measurePalette;
|
|
200
|
-
/** @deprecated `paletteVars` kullan. 0.3.0'da kaldırılacak. */
|
|
201
|
-
export const paletStili = paletteVars;
|
|
202
|
-
/** @deprecated `paletteCss` kullan. 0.3.0'da kaldırılacak. */
|
|
203
|
-
export const paletCss = paletteCss;
|
|
204
|
-
/** @deprecated `isHex` kullan (tamga-ui/palette üzerinden). 0.3.0'da kaldırılacak. */
|
|
205
|
-
export { gecerliHex, hexRgb, rgbHex, parlaklik, oran, acikligi, dL, hexOklch, oklchHex, oranaGoreAcikligi } from "./color.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../src/patterns/app-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,wKAAwK;IACxK,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,wJAAwJ;IACxJ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzB,mGAAmG;IACnG,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,uIAAuI;IACvI,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,GAAG,EACH,UAAU,EACV,IAAe,EACf,MAAM,EACN,UAAU,EACV,aAAa,EAAE,IAAgB,EAC/B,MAAM,EACN,QAAQ,GACT,EAAE,aAAa,+
|
|
1
|
+
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../src/patterns/app-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,wKAAwK;IACxK,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,wJAAwJ;IACxJ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzB,mGAAmG;IACnG,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,uIAAuI;IACvI,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,GAAG,EACH,UAAU,EACV,IAAe,EACf,MAAM,EACN,UAAU,EACV,aAAa,EAAE,IAAgB,EAC/B,MAAM,EACN,QAAQ,GACT,EAAE,aAAa,+BAuEf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Icon } from "../components/icon.js";
|
|
4
|
-
import {
|
|
4
|
+
import { RailLink } from "../components/rail-link.js";
|
|
5
5
|
import { PlainLink } from "./shared.js";
|
|
6
6
|
export function AppShell({ brand, nav, activePath, rail = "narrow", topbar, railFooter, linkComponent: Link = PlainLink, labels, children, }) {
|
|
7
7
|
/* Bir giriş kendi alt ağacına sahip: `/urunler`, `/urunler/42/fotograflar`
|
|
@@ -9,15 +9,5 @@ export function AppShell({ brand, nav, activePath, rail = "narrow", topbar, rail
|
|
|
9
9
|
altındaki her rotayı yutar. */
|
|
10
10
|
const isCurrent = (href) => href === "/" ? activePath === href : activePath === href || activePath.startsWith(`${href}/`);
|
|
11
11
|
const wide = rail === "wide";
|
|
12
|
-
return (_jsxs("div", { className: "flex h-dvh w-full overflow-hidden bg-shell text-ink-soft", children: [_jsxs("aside", { className: `flex shrink-0 flex-col gap-2 bg-shell py-4 ${wide ? "w-60 px-3" : "w-20 items-center px-1"}`, "data-rail": rail, children: [brand ? (_jsxs(_Fragment, { children: [_jsx("span", { "aria-label": labels.home, className: `mb-2 flex h-10 shrink-0 items-center text-ink ${wide ? "px-2" : "w-10 justify-center"}`, children: brand }), _jsx("span", { className: `h-0 w-6 border-t border-line ${wide ? "ml-2" : ""}` })] })) : null, _jsx("nav", { "aria-label": labels.primaryNav, className: `tamga-rail-scroll flex w-full flex-1 flex-col gap-2 py-1 ${wide ? "" : "items-center"}`, children: nav.map((entry) => {
|
|
13
|
-
const current = isCurrent(entry.href);
|
|
14
|
-
const link = (_jsxs(Link, { href: entry.href, "aria-label": wide ? undefined : entry.label, "aria-current": current ? "page" : undefined, "data-active": current, "data-nav": entry.key, className: "tamga-rail-link", children: [_jsx(Icon, { icon: entry.icon, size: "base" }), wide ? _jsx("span", { className: "min-w-0 truncate", children: entry.label }) : null] }, entry.key));
|
|
15
|
-
/* DAR RAYDA KİTİN İPUCU, `title` DEĞİL.
|
|
16
|
-
Burada `title={entry.label}` vardı: tarayıcının kendi gecikmeli
|
|
17
|
-
gri balonu. Kullanan kişi bunu "ipucu yok" diye okuyor, çünkü
|
|
18
|
-
kitin her yerdeki ipucu başka türlü görünüyor ve hemen çıkıyor.
|
|
19
|
-
Geniş rayda etiket zaten yazılı; orada ipucu aynı sözcüğü ikinci
|
|
20
|
-
kez söylemek olurdu. */
|
|
21
|
-
return wide ? (link) : (_jsx(Tooltip, { label: entry.label, placement: "right", children: link }, entry.key));
|
|
22
|
-
}) }), railFooter ? _jsx("div", { className: "shrink-0", children: railFooter }) : null] }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("header", { className: "tamga-gutter flex items-center gap-4 py-4", children: topbar }), _jsx("div", { className: "min-h-0 flex-1 overflow-hidden pr-4 pb-4", children: _jsx("main", { className: "tamga-surface h-full min-h-0 overflow-y-auto", children: children }) })] })] }));
|
|
12
|
+
return (_jsxs("div", { className: "flex h-dvh w-full overflow-hidden bg-shell text-ink-soft", children: [_jsxs("aside", { className: `flex shrink-0 flex-col gap-2 bg-shell py-4 ${wide ? "w-60 px-3" : "w-20 items-center px-1"}`, "data-rail": rail, children: [brand ? (_jsxs(_Fragment, { children: [_jsx("span", { "aria-label": labels.home, className: `mb-2 flex h-10 shrink-0 items-center text-ink ${wide ? "px-2" : "w-10 justify-center"}`, children: brand }), _jsx("span", { className: `h-0 w-6 border-t border-line ${wide ? "ml-2" : ""}` })] })) : null, _jsx("nav", { "aria-label": labels.primaryNav, className: `tamga-rail-scroll flex w-full flex-1 flex-col gap-2 py-1 ${wide ? "" : "items-center"}`, children: nav.map((entry) => (_jsx(RailLink, { href: entry.href, label: entry.label, active: isCurrent(entry.href), showLabel: wide, linkComponent: Link, "data-nav": entry.key, children: _jsx(Icon, { icon: entry.icon, size: "base" }) }, entry.key))) }), railFooter ? _jsx("div", { className: "shrink-0", children: railFooter }) : null] }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("header", { className: "tamga-gutter flex items-center gap-4 py-4", children: topbar }), _jsx("div", { className: "min-h-0 flex-1 overflow-hidden pr-4 pb-4", children: _jsx("main", { className: "tamga-surface h-full min-h-0 overflow-y-auto", children: children }) })] })] }));
|
|
23
13
|
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type SwatchOption, type ThemeChoice } from "../components/appearance.js";
|
|
3
|
+
/**
|
|
4
|
+
* The Appearance screen: logo, mark, brand colour, theme, sidebar.
|
|
5
|
+
*
|
|
6
|
+
* WHY A WHOLE SCREEN AND NOT FIVE PARTS. Every panel grows an appearance
|
|
7
|
+
* setting, and the kit not giving one is why two products drew their own hex
|
|
8
|
+
* box. Handing over the parts would not have fixed it: each product arranges
|
|
9
|
+
* them differently and they drift apart again, which is the thing this layer
|
|
10
|
+
* exists to prevent (ADR-0004).
|
|
11
|
+
*
|
|
12
|
+
* IT STORES NOTHING. `value` comes in, `onChange` goes out, `onSave` belongs
|
|
13
|
+
* to the caller. Where the preference lives (session, account, browser) is a
|
|
14
|
+
* product decision and a template that learns it stops being a template.
|
|
15
|
+
*
|
|
16
|
+
* THE PALETTE IS NOT APPLIED HERE EITHER. This screen reports the chosen
|
|
17
|
+
* colour; turning it into tokens is `makePalette` plus `paletteVars`, and the
|
|
18
|
+
* product decides when that happens, because the product owns the root
|
|
19
|
+
* element.
|
|
20
|
+
*/
|
|
21
|
+
export type Appearance = {
|
|
22
|
+
brand: string;
|
|
23
|
+
theme: ThemeChoice;
|
|
24
|
+
/** `free` means each user decides. TR: `free`, her kullanıcı kendi seçer demek. */
|
|
25
|
+
rail: "narrow" | "wide" | "free";
|
|
26
|
+
logo: string | null;
|
|
27
|
+
mark: string | null;
|
|
28
|
+
};
|
|
29
|
+
export type AppearanceLabels = {
|
|
30
|
+
title: string;
|
|
31
|
+
description: string;
|
|
32
|
+
logo: {
|
|
33
|
+
title: string;
|
|
34
|
+
description: string;
|
|
35
|
+
field: ImageLabels;
|
|
36
|
+
pickMark: string;
|
|
37
|
+
};
|
|
38
|
+
mark: {
|
|
39
|
+
title: string;
|
|
40
|
+
description: string;
|
|
41
|
+
field: ImageLabels;
|
|
42
|
+
fallbackNote: string;
|
|
43
|
+
};
|
|
44
|
+
brand: {
|
|
45
|
+
title: string;
|
|
46
|
+
description: string;
|
|
47
|
+
swatches: readonly SwatchOption[];
|
|
48
|
+
custom: string;
|
|
49
|
+
};
|
|
50
|
+
theme: {
|
|
51
|
+
title: string;
|
|
52
|
+
description: string;
|
|
53
|
+
light: string;
|
|
54
|
+
dark: string;
|
|
55
|
+
system: string;
|
|
56
|
+
group: string;
|
|
57
|
+
};
|
|
58
|
+
rail: {
|
|
59
|
+
title: string;
|
|
60
|
+
description: string;
|
|
61
|
+
narrow: string;
|
|
62
|
+
wide: string;
|
|
63
|
+
free: string;
|
|
64
|
+
group: string;
|
|
65
|
+
};
|
|
66
|
+
picker: {
|
|
67
|
+
title: string;
|
|
68
|
+
hint: string;
|
|
69
|
+
size: string;
|
|
70
|
+
cancel: string;
|
|
71
|
+
confirm: string;
|
|
72
|
+
close: string;
|
|
73
|
+
};
|
|
74
|
+
save: string;
|
|
75
|
+
saving: string;
|
|
76
|
+
reset: string;
|
|
77
|
+
clean: string;
|
|
78
|
+
dirty: string;
|
|
79
|
+
};
|
|
80
|
+
type ImageLabels = {
|
|
81
|
+
name: string;
|
|
82
|
+
upload: string;
|
|
83
|
+
replace: string;
|
|
84
|
+
remove: string;
|
|
85
|
+
empty: string;
|
|
86
|
+
errorType: string;
|
|
87
|
+
errorSize: string;
|
|
88
|
+
errorUnreadable: string;
|
|
89
|
+
};
|
|
90
|
+
export declare function AppearanceTemplate({ value, onChange, saved, onSave, onReset, saving, fallbackName, labels, extra, }: {
|
|
91
|
+
value: Appearance;
|
|
92
|
+
onChange: (next: Appearance) => void;
|
|
93
|
+
/** The stored version; "is anything unsaved" is answered by comparing with it. TR: Kayıtlı hâli; "kaydedilmemiş bir şey var mı" sorusu bununla cevaplanıyor. */
|
|
94
|
+
saved: Appearance;
|
|
95
|
+
onSave: () => void;
|
|
96
|
+
onReset: () => void;
|
|
97
|
+
saving?: boolean;
|
|
98
|
+
/** The name a tile is drawn from when there is no mark. TR: Amblem yokken karonun çizildiği ad. */
|
|
99
|
+
fallbackName: string;
|
|
100
|
+
labels: AppearanceLabels;
|
|
101
|
+
/** Extra panels the product adds, after the built-in ones. TR: Ürünün eklediği ek bölümler, hazır olanlardan sonra. */
|
|
102
|
+
extra?: ReactNode;
|
|
103
|
+
}): import("react").JSX.Element;
|
|
104
|
+
export {};
|
|
105
|
+
//# sourceMappingURL=appearance-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appearance-template.d.ts","sourceRoot":"","sources":["../../src/patterns/appearance-template.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAyC,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAQzH;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,mFAAmF;IACnF,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACvF,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACjG,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1G,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxG,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACtG,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,OAAO,EACP,MAAc,EACd,YAAY,EACZ,MAAM,EACN,KAAK,GACN,EAAE;IACD,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,gKAAgK;IAChK,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mGAAmG;IACnG,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,uHAAuH;IACvH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,+BAsHA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { ColorSwatches, ImageField, ThemeCards } from "../components/appearance.js";
|
|
5
|
+
import { LogoTile } from "../components/chrome.js";
|
|
6
|
+
import { Segmented } from "../components/segmented.js";
|
|
7
|
+
import { SquarePicker } from "../components/square-picker.js";
|
|
8
|
+
import { Button } from "../components/button.js";
|
|
9
|
+
import { Label } from "../components/surface.js";
|
|
10
|
+
import { SettingsPanel } from "./settings-template.js";
|
|
11
|
+
export function AppearanceTemplate({ value, onChange, saved, onSave, onReset, saving = false, fallbackName, labels, extra, }) {
|
|
12
|
+
const [picking, setPicking] = useState(false);
|
|
13
|
+
const dirty = JSON.stringify(value) !== JSON.stringify(saved);
|
|
14
|
+
return (_jsxs("form", { className: "flex flex-col gap-5", onSubmit: (e) => {
|
|
15
|
+
e.preventDefault();
|
|
16
|
+
if (dirty && !saving)
|
|
17
|
+
onSave();
|
|
18
|
+
}, children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("h1", { className: "text-display-sm font-semibold text-ink", children: labels.title }), _jsx("p", { className: "w-full text-control leading-relaxed text-ink-soft", children: labels.description })] }), _jsx(SettingsPanel, { accent: true, title: labels.logo.title, description: labels.logo.description, children: _jsx(ImageField, { value: value.logo, onChange: (v) => onChange({ ...value, logo: v }), maxEdge: 512, labels: labels.logo.field, preview: (src) => (_jsx("img", { src: src, alt: "", className: "max-h-full w-auto max-w-56 object-contain" })), extra: value.logo ? (_jsx(Button, { type: "button", onClick: () => setPicking(true), children: labels.logo.pickMark })) : undefined }) }), _jsxs(SettingsPanel, { accent: true, title: labels.mark.title, description: labels.mark.description, children: [_jsx(ImageField, { value: value.mark, onChange: (v) => onChange({ ...value, mark: v }), maxEdge: 256, labels: labels.mark.field, preview: (src) => (_jsx("img", { src: src, alt: "", className: "size-12 object-contain" })) }), !value.mark ? (_jsxs("span", { className: "mt-4 flex items-center gap-3", children: [_jsx(LogoTile, { name: fallbackName }), _jsx(Label, { children: labels.mark.fallbackNote })] })) : null] }), _jsx(SettingsPanel, { accent: true, title: labels.brand.title, description: labels.brand.description, children: _jsx(ColorSwatches, { options: labels.brand.swatches, value: value.brand, onChange: (hex) => onChange({ ...value, brand: hex }), customLabel: labels.brand.custom }) }), _jsx(SettingsPanel, { accent: true, title: labels.theme.title, description: labels.theme.description, children: _jsx(ThemeCards, { value: value.theme, onChange: (t) => onChange({ ...value, theme: t }), labels: labels.theme }) }), _jsx(SettingsPanel, { accent: true, title: labels.rail.title, description: labels.rail.description, children: _jsx(Segmented, { label: labels.rail.group, value: value.rail, onChange: (r) => onChange({ ...value, rail: r }), options: [
|
|
19
|
+
{ value: "narrow", label: labels.rail.narrow },
|
|
20
|
+
{ value: "wide", label: labels.rail.wide },
|
|
21
|
+
{ value: "free", label: labels.rail.free },
|
|
22
|
+
] }) }), extra, value.logo ? (_jsx(SquarePicker, { open: picking, source: value.logo, onClose: () => setPicking(false), onPick: (square) => onChange({ ...value, mark: square }), labels: labels.picker })) : null, _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("span", { className: "flex flex-wrap items-center gap-3", children: [_jsx(Button, { variant: "primary", type: "submit", disabled: !dirty, busy: saving, busyLabel: labels.saving, children: labels.save }), _jsx(Button, { type: "button", disabled: saving, onClick: onReset, children: labels.reset })] }), _jsx(Label, { children: dirty ? labels.dirty : labels.clean })] })] }));
|
|
23
|
+
}
|
package/dist/patterns/index.d.ts
CHANGED
|
@@ -15,4 +15,5 @@ export { AuthTemplate, AuthProviders } from "./auth-template.js";
|
|
|
15
15
|
export { WizardTemplate, type WizardStep, type WizardTemplateProps } from "./wizard-template.js";
|
|
16
16
|
export { PublicTemplate, type PublicState, type PublicTemplateProps } from "./public-template.js";
|
|
17
17
|
export { AppShell, type NavEntry, type AppShellProps } from "./app-shell.js";
|
|
18
|
+
export { AppearanceTemplate, type Appearance, type AppearanceLabels, } from "./appearance-template.js";
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,SAAS,EACT,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC"}
|
package/dist/patterns/index.js
CHANGED
|
@@ -19,3 +19,4 @@ export { AuthTemplate, AuthProviders } from "./auth-template.js";
|
|
|
19
19
|
export { WizardTemplate } from "./wizard-template.js";
|
|
20
20
|
export { PublicTemplate } from "./public-template.js";
|
|
21
21
|
export { AppShell } from "./app-shell.js";
|
|
22
|
+
export { AppearanceTemplate, } from "./appearance-template.js";
|
|
@@ -40,9 +40,20 @@ export declare function SettingsTemplate({ sections, activeSection, title, subti
|
|
|
40
40
|
* Bir değer üst bir düzeyden miras alınıyorsa, bunu bilmeden değiştirmek üç
|
|
41
41
|
* ekran açıp "bu alan neden böyle yazıyor" diye aramak demek.
|
|
42
42
|
*/
|
|
43
|
-
export declare function SettingsPanel({ title, description, inheritedFrom, children, }: {
|
|
43
|
+
export declare function SettingsPanel({ title, description, inheritedFrom, accent, children, }: {
|
|
44
44
|
title: string;
|
|
45
45
|
description?: string;
|
|
46
|
+
/**
|
|
47
|
+
* A brand-coloured edge down the left of the panel. TR: Panelin sol kenarında marka renginde
|
|
48
|
+
* bir şerit.
|
|
49
|
+
*
|
|
50
|
+
* For screens whose SUBJECT is the brand: on an appearance screen the blocks have to separate
|
|
51
|
+
* from one another, and the thing that separates them should be the colour itself. Elsewhere
|
|
52
|
+
* it would be decoration. TR: Konusu MARKANIN KENDİSİ olan ekranlar için: bir görünüm
|
|
53
|
+
* ekranında bloklar birbirinden ayrılmalı ve ayıran şey rengin kendisi olmalı. Başka yerde
|
|
54
|
+
* süs olurdu.
|
|
55
|
+
*/
|
|
56
|
+
accent?: boolean;
|
|
46
57
|
/** Like "inherited from the workspace": a full sentence written by the caller. TR: "çalışma alanından geliyor" gibi, çağıran tarafından yazılmış tam cümle. */
|
|
47
58
|
inheritedFrom?: string;
|
|
48
59
|
children: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-template.d.ts","sourceRoot":"","sources":["../../src/patterns/settings-template.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1D,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gHAAgH;IAChH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;KACtC,GAAG,WAAW,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,aAAa,EACb,KAAK,EACL,QAAQ,EACR,OAAO,EACP,KAAe,EACf,KAAK,EACL,aAAa,EAAE,IAAgB,EAC/B,MAAM,EACN,QAAQ,GACT,EAAE,qBAAqB,+BAsDvB;AA0BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,aAAa,EACb,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+JAA+J;IAC/J,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,+
|
|
1
|
+
{"version":3,"file":"settings-template.d.ts","sourceRoot":"","sources":["../../src/patterns/settings-template.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1D,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gHAAgH;IAChH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;KACtC,GAAG,WAAW,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,aAAa,EACb,KAAK,EACL,QAAQ,EACR,OAAO,EACP,KAAe,EACf,KAAK,EACL,aAAa,EAAE,IAAgB,EAC/B,MAAM,EACN,QAAQ,GACT,EAAE,qBAAqB,+BAsDvB;AA0BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,aAAa,EACb,MAAc,EACd,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+JAA+J;IAC/J,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BA6BA"}
|
|
@@ -28,6 +28,6 @@ function ScopeMark({ scope, label }) {
|
|
|
28
28
|
* Bir değer üst bir düzeyden miras alınıyorsa, bunu bilmeden değiştirmek üç
|
|
29
29
|
* ekran açıp "bu alan neden böyle yazıyor" diye aramak demek.
|
|
30
30
|
*/
|
|
31
|
-
export function SettingsPanel({ title, description, inheritedFrom, children, }) {
|
|
32
|
-
return (_jsxs("section", { className:
|
|
31
|
+
export function SettingsPanel({ title, description, inheritedFrom, accent = false, children, }) {
|
|
32
|
+
return (_jsxs("section", { className: `tamga-card tamga-card-open tamga-gutter py-4${accent ? " tamga-settings-panel-accent" : ""}`, "data-panel": title, children: [_jsxs("div", { className: "flex flex-wrap items-baseline gap-2", children: [_jsx("h3", { className: "text-subhead font-semibold text-ink", children: title }), inheritedFrom ? (_jsx("span", { className: "text-caption text-ink-faint", "data-inherited-from": true, children: inheritedFrom })) : null] }), description ? (_jsx("p", { className: "mt-1 text-small leading-relaxed text-ink-soft", children: description })) : null, _jsx("div", { className: "mt-4", children: children })] }));
|
|
33
33
|
}
|
|
@@ -16,7 +16,7 @@ export { PlainLink, type LinkComponent } from "../components/link.js";
|
|
|
16
16
|
export type TemplateError = {
|
|
17
17
|
/** The envelope's machine-read `code`: stable, never translated, the thing support branches on. TR: Zarfın makine tarafından okunan `code`u: kararlı, çevrilmez, desteğin dallandığı şey. */
|
|
18
18
|
code?: string;
|
|
19
|
-
/**
|
|
19
|
+
/** The id that leads to the server log for this one failure. TR: Bu tek hatayı sunucu kaydına götüren kimlik. */
|
|
20
20
|
requestId?: string;
|
|
21
21
|
/** Only when the caller really can retry; without it the button is not drawn at all. TR: Yalnız çağıran gerçekten yeniden deneyebiliyorsa; yoksa düğme hiç çizilmiyor. */
|
|
22
22
|
onRetry?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/patterns/shared.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;;;GAQG;AAKH,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,6LAA6L;IAC7L,IAAI,CAAC,EAAE,MAAM,CAAC;IACd
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/patterns/shared.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;;;GAQG;AAKH,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,6LAA6L;IAC7L,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iHAAiH;IACjH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0KAA0K;IAC1K,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAErE;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,+BAU1F;AAED,8DAA8D;AAC9D,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAQ/E"}
|
package/dist/styles.css
CHANGED