tamga-ui 0.4.4 → 0.5.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 +863 -0
- package/README.md +3 -1
- package/dist/blocks/count-row.d.ts +3 -8
- package/dist/blocks/count-row.d.ts.map +1 -1
- package/dist/blocks/count-row.js +3 -8
- package/dist/blocks/filter-bar.d.ts +42 -28
- package/dist/blocks/filter-bar.d.ts.map +1 -1
- package/dist/blocks/filter-bar.js +13 -5
- package/dist/blocks/index.d.ts +4 -17
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +4 -17
- package/dist/blocks/save-bar.d.ts +4 -12
- package/dist/blocks/save-bar.d.ts.map +1 -1
- package/dist/blocks/save-bar.js +4 -12
- package/dist/components/a11y.d.ts.map +1 -1
- package/dist/components/a11y.js +4 -15
- package/dist/components/advanced-input.d.ts +54 -48
- package/dist/components/advanced-input.d.ts.map +1 -1
- package/dist/components/advanced-input.js +64 -59
- package/dist/components/announcement.d.ts +34 -0
- package/dist/components/announcement.d.ts.map +1 -0
- package/dist/components/announcement.js +12 -0
- package/dist/components/appearance.d.ts +33 -1
- package/dist/components/appearance.d.ts.map +1 -1
- package/dist/components/appearance.js +78 -7
- package/dist/components/avatar.d.ts +28 -21
- package/dist/components/avatar.d.ts.map +1 -1
- package/dist/components/avatar.js +46 -22
- package/dist/components/badge.d.ts +54 -4
- package/dist/components/badge.d.ts.map +1 -1
- package/dist/components/badge.js +42 -9
- package/dist/components/bar.d.ts.map +1 -1
- package/dist/components/bar.js +4 -20
- package/dist/components/button.d.ts +15 -7
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js +54 -8
- package/dist/components/chart.d.ts +5 -0
- package/dist/components/chart.d.ts.map +1 -1
- package/dist/components/chart.js +18 -11
- package/dist/components/checkbox.d.ts +23 -1
- package/dist/components/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox.js +3 -4
- package/dist/components/chrome.d.ts +38 -54
- package/dist/components/chrome.d.ts.map +1 -1
- package/dist/components/chrome.js +55 -63
- package/dist/components/combobox.d.ts.map +1 -1
- package/dist/components/combobox.js +19 -3
- package/dist/components/data-table.d.ts +4 -4
- package/dist/components/data-table.d.ts.map +1 -1
- package/dist/components/data-table.js +15 -16
- package/dist/components/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker.js +11 -4
- package/dist/components/disclosure.d.ts +17 -2
- package/dist/components/disclosure.d.ts.map +1 -1
- package/dist/components/disclosure.js +4 -8
- package/dist/components/display.d.ts +119 -94
- package/dist/components/display.d.ts.map +1 -1
- package/dist/components/display.js +103 -106
- package/dist/components/empty-state.d.ts +70 -52
- package/dist/components/empty-state.d.ts.map +1 -1
- package/dist/components/empty-state.js +40 -52
- package/dist/components/error-state.d.ts +21 -4
- package/dist/components/error-state.d.ts.map +1 -1
- package/dist/components/error-state.js +16 -6
- package/dist/components/file-upload.d.ts +45 -2
- package/dist/components/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload.js +32 -7
- package/dist/components/gauge.d.ts +72 -9
- package/dist/components/gauge.d.ts.map +1 -1
- package/dist/components/gauge.js +52 -49
- package/dist/components/icons.d.ts +1 -1
- package/dist/components/icons.d.ts.map +1 -1
- package/dist/components/icons.js +4 -0
- package/dist/components/input.d.ts +21 -0
- package/dist/components/input.d.ts.map +1 -1
- package/dist/components/input.js +15 -1
- package/dist/components/layout.d.ts +47 -70
- package/dist/components/layout.d.ts.map +1 -1
- package/dist/components/layout.js +31 -73
- package/dist/components/link.d.ts +5 -10
- package/dist/components/link.d.ts.map +1 -1
- package/dist/components/live-scope.d.ts.map +1 -1
- package/dist/components/live-scope.js +5 -8
- package/dist/components/log-view.d.ts +32 -1
- package/dist/components/log-view.d.ts.map +1 -1
- package/dist/components/log-view.js +42 -15
- package/dist/components/number-input.d.ts +20 -2
- package/dist/components/number-input.d.ts.map +1 -1
- package/dist/components/number-input.js +32 -9
- package/dist/components/overlay.d.ts +69 -61
- package/dist/components/overlay.d.ts.map +1 -1
- package/dist/components/overlay.js +129 -78
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/pagination.js +12 -7
- package/dist/components/pie.d.ts.map +1 -1
- package/dist/components/pie.js +8 -7
- package/dist/components/primitives.d.ts +136 -6
- package/dist/components/primitives.d.ts.map +1 -1
- package/dist/components/primitives.js +73 -20
- package/dist/components/progress.d.ts +44 -9
- package/dist/components/progress.d.ts.map +1 -1
- package/dist/components/progress.js +21 -9
- package/dist/components/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group.js +11 -12
- package/dist/components/rail-link.d.ts +17 -1
- package/dist/components/rail-link.d.ts.map +1 -1
- package/dist/components/rail-link.js +3 -3
- package/dist/components/rich-text.d.ts +8 -1
- package/dist/components/rich-text.d.ts.map +1 -1
- package/dist/components/rich-text.js +13 -19
- package/dist/components/says-bubble.d.ts +38 -0
- package/dist/components/says-bubble.d.ts.map +1 -0
- package/dist/components/says-bubble.js +6 -0
- package/dist/components/scroll-x.d.ts +23 -0
- package/dist/components/scroll-x.d.ts.map +1 -0
- package/dist/components/scroll-x.js +27 -0
- package/dist/components/section.d.ts +18 -1
- package/dist/components/section.d.ts.map +1 -1
- package/dist/components/section.js +12 -1
- package/dist/components/segmented.d.ts +17 -1
- package/dist/components/segmented.d.ts.map +1 -1
- package/dist/components/segmented.js +26 -6
- package/dist/components/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/slider.d.ts +16 -2
- package/dist/components/slider.d.ts.map +1 -1
- package/dist/components/slider.js +12 -5
- package/dist/components/sparkline.d.ts +9 -2
- package/dist/components/sparkline.d.ts.map +1 -1
- package/dist/components/sparkline.js +9 -5
- package/dist/components/spinner.d.ts +16 -1
- package/dist/components/spinner.d.ts.map +1 -1
- package/dist/components/spinner.js +24 -1
- package/dist/components/square-picker.d.ts +4 -20
- package/dist/components/square-picker.d.ts.map +1 -1
- package/dist/components/square-picker.js +4 -20
- package/dist/components/stacked-bar.d.ts.map +1 -1
- package/dist/components/stacked-bar.js +5 -4
- package/dist/components/surface.d.ts +32 -3
- package/dist/components/surface.d.ts.map +1 -1
- package/dist/components/surface.js +11 -4
- package/dist/components/switch.d.ts +14 -1
- package/dist/components/switch.d.ts.map +1 -1
- package/dist/components/switch.js +2 -3
- package/dist/components/tabs.d.ts +35 -11
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +48 -5
- package/dist/components/timeline-strip.d.ts +28 -3
- package/dist/components/timeline-strip.d.ts.map +1 -1
- package/dist/components/timeline-strip.js +19 -8
- package/dist/components/tone.d.ts +51 -19
- package/dist/components/tone.d.ts.map +1 -1
- package/dist/components/tone.js +69 -15
- package/dist/components/tree-select.d.ts.map +1 -1
- package/dist/components/tree-select.js +10 -3
- package/dist/fonts/LICENSE-jetbrains-mono.txt +93 -0
- package/dist/fonts/LICENSE-onest.txt +93 -0
- package/dist/fonts/LICENSE-red-hat-display.txt +93 -0
- package/dist/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/onest-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/onest-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/red-hat-display-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/red-hat-display-latin-wght-normal.woff2 +0 -0
- package/dist/fonts.css +54 -0
- package/dist/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -6
- package/dist/kit.css +3155 -648
- package/dist/lib/color.d.ts +8 -19
- package/dist/lib/color.d.ts.map +1 -1
- package/dist/lib/color.js +8 -19
- package/dist/lib/data-props.d.ts +4 -15
- package/dist/lib/data-props.d.ts.map +1 -1
- package/dist/lib/data-props.js +4 -15
- package/dist/lib/image.d.ts +4 -20
- package/dist/lib/image.d.ts.map +1 -1
- package/dist/lib/image.js +4 -20
- package/dist/lib/palette.d.ts +16 -20
- package/dist/lib/palette.d.ts.map +1 -1
- package/dist/lib/palette.js +136 -71
- package/dist/lib/scroll-lock.d.ts +4 -14
- package/dist/lib/scroll-lock.d.ts.map +1 -1
- package/dist/lib/scroll-lock.js +4 -14
- package/dist/patterns/app-shell.d.ts.map +1 -1
- package/dist/patterns/app-shell.js +4 -13
- package/dist/patterns/appearance-template.d.ts +20 -15
- package/dist/patterns/appearance-template.d.ts.map +1 -1
- package/dist/patterns/appearance-template.js +29 -8
- package/dist/patterns/list-template.d.ts.map +1 -1
- package/dist/patterns/list-template.js +1 -1
- package/dist/patterns/overview-template.d.ts.map +1 -1
- package/dist/patterns/overview-template.js +1 -1
- package/dist/patterns/settings-template.d.ts +1 -12
- package/dist/patterns/settings-template.d.ts.map +1 -1
- package/dist/patterns/settings-template.js +2 -2
- package/dist/patterns/shared.d.ts.map +1 -1
- package/dist/patterns/shared.js +8 -1
- package/dist/styles.css +2 -1
- package/dist/theme.css +94 -261
- package/package.json +3 -1
- package/dist/components/control-base.d.ts +0 -7
- package/dist/components/control-base.d.ts.map +0 -1
- package/dist/components/control-base.js +0 -6
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<img src="https://tamga.org.tr/tamga-logo.png" alt="Tamga" width="280">
|
|
2
|
+
|
|
1
3
|
# tamga-ui
|
|
2
4
|
|
|
3
5
|
Mantıksal's shared interface library: tokens, physics and components.
|
|
@@ -131,7 +133,7 @@ document.documentElement.setAttribute("style", paletteCss(pair));
|
|
|
131
133
|
```
|
|
132
134
|
|
|
133
135
|
This is the route whenever the colour can change at runtime (a settings screen): the tokens are
|
|
134
|
-
written onto the root element and, because the kit's
|
|
136
|
+
written onto the root element and, because the kit's 111 classes read them, the whole panel turns
|
|
135
137
|
in one line with no CSS recompiled.
|
|
136
138
|
|
|
137
139
|
### Or by hand
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
/**
|
|
3
|
-
* SAYAÇ SATIRI
|
|
3
|
+
* SAYAÇ SATIRI · kaç kayda bakıldığı her zaman yazıyor. Sağ taraftaki iki şey
|
|
4
|
+
* (ekrana özel `aside`, sayfa boyu) isteğe bağlı; verilmezse çizilmiyor.
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
-
* bakıldığını söylemeyen bir liste, kullanıcıya saydırıyor.
|
|
7
|
-
*
|
|
8
|
-
* SAĞ TARAF İKİ ŞEY TAŞIYABİLİR ve ikisi de isteğe bağlı: ekrana özel ikinci
|
|
9
|
-
* bir okuma (`aside` — "12 tanesi eşiği geçti" gibi) ve sayfa boyu seçimi.
|
|
10
|
-
* İkincisi verilmezse hiç çizilmiyor: sayfalanmayan bir listeye sayfa boyu
|
|
11
|
-
* sormak, olmayan bir kontrolü öğretmek.
|
|
6
|
+
* Gerekçe: docs/gerekce/08-blok-ve-sablon.md
|
|
12
7
|
*/
|
|
13
8
|
export declare function CountRow({ count, unit, aside, pageSize, pageSizeOptions, onPageSize, labels, }: {
|
|
14
9
|
count: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count-row.d.ts","sourceRoot":"","sources":["../../src/blocks/count-row.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC
|
|
1
|
+
{"version":3,"file":"count-row.d.ts","sourceRoot":"","sources":["../../src/blocks/count-row.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,eAAe,EACf,UAAU,EACV,MAAM,GACP,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,mHAAmH;IACnH,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,2JAA2J;IAC3J,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjF,+BA0BA"}
|
package/dist/blocks/count-row.js
CHANGED
|
@@ -3,15 +3,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { Label } from "../components/surface.js";
|
|
4
4
|
import { Select } from "../components/primitives.js";
|
|
5
5
|
/**
|
|
6
|
-
* SAYAÇ SATIRI
|
|
6
|
+
* SAYAÇ SATIRI · kaç kayda bakıldığı her zaman yazıyor. Sağ taraftaki iki şey
|
|
7
|
+
* (ekrana özel `aside`, sayfa boyu) isteğe bağlı; verilmezse çizilmiyor.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
* bakıldığını söylemeyen bir liste, kullanıcıya saydırıyor.
|
|
10
|
-
*
|
|
11
|
-
* SAĞ TARAF İKİ ŞEY TAŞIYABİLİR ve ikisi de isteğe bağlı: ekrana özel ikinci
|
|
12
|
-
* bir okuma (`aside` — "12 tanesi eşiği geçti" gibi) ve sayfa boyu seçimi.
|
|
13
|
-
* İkincisi verilmezse hiç çizilmiyor: sayfalanmayan bir listeye sayfa boyu
|
|
14
|
-
* sormak, olmayan bir kontrolü öğretmek.
|
|
9
|
+
* Gerekçe: docs/gerekce/08-blok-ve-sablon.md
|
|
15
10
|
*/
|
|
16
11
|
export function CountRow({ count, unit, aside, pageSize, pageSizeOptions, onPageSize, labels, }) {
|
|
17
12
|
const format = labels?.format ?? ((n) => String(n));
|
|
@@ -1,34 +1,12 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
+
import type { IconGlyph } from "../components/icons.js";
|
|
3
|
+
import type { Tone } from "../components/tone.js";
|
|
2
4
|
/**
|
|
3
|
-
* FİLTRE ÇUBUĞU
|
|
5
|
+
* FİLTRE ÇUBUĞU · birkaç alan üstte, gerisi çekmecede, VE çekmecede bir şey
|
|
6
|
+
* açıksa bunu görüyorsun: uygulanan her filtre tablonun üstünde bir çip.
|
|
7
|
+
* Çekmecedeki alanlar bir `<form>` içinde, yani Enter'ı tarayıcı uyguluyor.
|
|
4
8
|
*
|
|
5
|
-
*
|
|
6
|
-
* Bir süre üründe durdu ve orada "kite taşınmadı, bilinçli" diye bir not
|
|
7
|
-
* vardı: gerekçesi "Excel ile ara" ve "Tüm filtreler" gibi şeylerin bir
|
|
8
|
-
* e-ticaret paneli kalıbı olması. Not yanlış çıktı ve iki sebeple:
|
|
9
|
-
*
|
|
10
|
-
* ① ADR-0003'ün katman şeması `tamga-ui` kutusunun içine zaten
|
|
11
|
-
* "filtre paneli · toplu eylem çubuğu" yazıyor. Bir satır içi yorum,
|
|
12
|
-
* kilitli bir ADR'yi geçersiz kılmaz.
|
|
13
|
-
* ② Notun işaret ettiği sözlük SÖZCÜKLERDİ, mekanizma değil. Metinler
|
|
14
|
-
* `labels`a çıkınca geriye kalan şey saf mekanizma: bir arama kutusu, en
|
|
15
|
-
* çok dört alan, bir çekmece, ve uygulanan filtrelerin çipleri. Dosyayla
|
|
16
|
-
* arama da bir alan adı değil bir yöntem; her yönetim listesi yapabilir.
|
|
17
|
-
*
|
|
18
|
-
* ─── ÜÇ MADDE, VE ÜÇÜNCÜSÜ EN ÖNEMLİSİ ──────────────────────────────────
|
|
19
|
-
* Bir yönetim panelinin filtresi otuz alanı aynı anda açık tutmaya meyleder,
|
|
20
|
-
* hepsi aynı görsel ağırlıkta. Buradaki fikir tek cümle: birkaçı üstte,
|
|
21
|
-
* gerisi çekmecede, VE çekmecede bir şey açıksa bunu görüyorsun.
|
|
22
|
-
*
|
|
23
|
-
* Gizli bir filtre açıkken kullanıcı listeyi eksik görür ve sebebini bulamaz;
|
|
24
|
-
* bu, filtreyi gizlemenin tek gerçek riski. O yüzden uygulanan her filtre
|
|
25
|
-
* tablonun üstünde bir çip olarak duruyor, tek tıkla kalkıyor, ve çekmece
|
|
26
|
-
* düğmesinde aktif sayıyı gösteren bir rozet var.
|
|
27
|
-
*
|
|
28
|
-
* ─── ENTER UYGULAR ──────────────────────────────────────────────────────
|
|
29
|
-
* Çekmecedeki alanlar bir `<form>` içinde ve "Uygula" o formun `submit`
|
|
30
|
-
* düğmesi, yani Enter tarayıcının kendi davranışıyla çalışıyor: dinlenen bir
|
|
31
|
-
* tuş değil, formun anlamı.
|
|
9
|
+
* Gerekçe: docs/gerekce/08-blok-ve-sablon.md
|
|
32
10
|
*/
|
|
33
11
|
/** Filtre durumunun tamamı: anahtar → dizgi. Boş dizgi "filtre yok" demek. */
|
|
34
12
|
export type FilterValues = Record<string, string>;
|
|
@@ -48,6 +26,42 @@ export type FilterField = {
|
|
|
48
26
|
kind: FilterFieldKind;
|
|
49
27
|
/** Falls back to `optionSource[key]`; with neither, the list is empty. TR: Verilmezse `optionSource[key]` kullanılır; ikisi de yoksa liste boş. */
|
|
50
28
|
options?: string[];
|
|
29
|
+
/**
|
|
30
|
+
* Start a new row before this field. TR: Bu alandan önce yeni bir satır başlat.
|
|
31
|
+
*
|
|
32
|
+
* WHY IT IS NOT AUTOMATIC. Fields wrap when they run out of room, and where
|
|
33
|
+
* they break is a question of pixels: the same bar breaks in one place on a
|
|
34
|
+
* laptop and another on a monitor. Sometimes the break is MEANING, not fit ·
|
|
35
|
+
* "what am I searching for" on one line, "how do I narrow it" on the next ·
|
|
36
|
+
* and only the caller knows which. Given, the break holds at every width.
|
|
37
|
+
* TR: NEDEN KENDİLİĞİNDEN OLMUYOR. Alanlar yer kalmayınca satır atlıyor ve
|
|
38
|
+
* nerede atladıkları bir piksel meselesi: aynı çubuk dizüstünde başka, geniş
|
|
39
|
+
* ekranda başka yerde kırılıyor. Bazen kırılma bir ANLAM ayrımı, sığma
|
|
40
|
+
* meselesi değil · "neyi arıyorum" bir satırda, "nasıl daraltıyorum" ötekinde
|
|
41
|
+
* · ve bunu yalnız çağıran biliyor. Verilirse kırılma her genişlikte duruyor.
|
|
42
|
+
*/
|
|
43
|
+
break?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* A glyph before the value, naming what this filter is about. TR: Değerin
|
|
46
|
+
* önünde, bu filtrenin neyle ilgili olduğunu söyleyen glif.
|
|
47
|
+
*
|
|
48
|
+
* Five boxes side by side all reading "All" are told apart only by the label
|
|
49
|
+
* above them, so the eye travels up and back down for each one. TR: Yan yana
|
|
50
|
+
* duran ve hepsi "Tümü" yazan beş kutuyu ayıran tek şey üstlerindeki etiket
|
|
51
|
+
* oluyor; göz her biri için yukarı çıkıp geri iniyor.
|
|
52
|
+
*/
|
|
53
|
+
icon?: IconGlyph;
|
|
54
|
+
/**
|
|
55
|
+
* A tone per option, for a filter whose items ARE states. TR: Öğeleri birer
|
|
56
|
+
* DURUM olan filtrede, seçenek başına ton.
|
|
57
|
+
*
|
|
58
|
+
* Keyed by the option's own text. The swatch it draws is the same square the
|
|
59
|
+
* table's chip draws, so the eye matches the list to the rows without reading
|
|
60
|
+
* either. Only where the option really is a state. TR: Anahtar, seçeneğin
|
|
61
|
+
* kendi metni. Çizdiği kare, tablodaki çipin çizdiği karenin aynısı · göz
|
|
62
|
+
* listeyi satırlara okumadan eşliyor. Yalnız seçenek gerçekten bir durumsa.
|
|
63
|
+
*/
|
|
64
|
+
tones?: Record<string, Tone>;
|
|
51
65
|
};
|
|
52
66
|
export type FilterGroup = {
|
|
53
67
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-bar.d.ts","sourceRoot":"","sources":["../../src/blocks/filter-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"filter-bar.d.ts","sourceRoot":"","sources":["../../src/blocks/filter-bar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useId, useState } from "react";
|
|
3
|
+
import { Fragment, useId, useState } from "react";
|
|
4
4
|
import { Button, buttonVariants } from "../components/button.js";
|
|
5
|
-
import { MiniButton } from "../components/button.js";
|
|
6
5
|
import { Combobox } from "../components/combobox.js";
|
|
7
6
|
import { MultiSelect } from "../components/advanced-input.js";
|
|
8
7
|
import { DatePicker } from "../components/date-picker.js";
|
|
@@ -34,7 +33,16 @@ function FieldControl({ field, values, write, optionSource, locale, labels, }) {
|
|
|
34
33
|
return (_jsx(Combobox, { className: "w-full", options: options.map((o) => ({ value: o, label: o })), value: values[field.key] || undefined, onChange: (v) => write(field.key, v ?? ""), placeholder: labels.all, labels: { empty: labels.noMatch, clear: labels.clear, open: labels.open(field.label) } }));
|
|
35
34
|
}
|
|
36
35
|
if (field.kind === "select") {
|
|
37
|
-
return (_jsx(Select, { className: "w-full",
|
|
36
|
+
return (_jsx(Select, { className: "w-full", icon: field.icon, options: [
|
|
37
|
+
labels.all,
|
|
38
|
+
...options.map((o) => (field.tones?.[o] ? { value: o, tone: field.tones[o] } : o)),
|
|
39
|
+
],
|
|
40
|
+
/* BOŞ FİLTRE "TÜMÜ"NÜN KENDİSİ · liste açıldığında onay işareti orada
|
|
41
|
+
duruyor. Ama DOLU DEĞİL: `set` ayrı geçiliyor, yoksa "Tümü" yazan
|
|
42
|
+
her kutu kendini dolu sayıp çizgisini sertleştiriyordu ve çubuktaki
|
|
43
|
+
asıl süzen kutu öne çıkmayı bırakıyordu. İki ayrı soru, iki ayrı
|
|
44
|
+
prop: "listede hangisi seçili" ve "bu filtre uygulanmış mı". */
|
|
45
|
+
value: values[field.key] || labels.all, set: Boolean(values[field.key]), onChange: (v) => write(field.key, v === labels.all ? "" : v), placeholder: labels.all }));
|
|
38
46
|
}
|
|
39
47
|
return (_jsx(Input, { full: true, value: values[field.key] ?? "", onChange: (e) => write(field.key, e.target.value) }));
|
|
40
48
|
}
|
|
@@ -67,8 +75,8 @@ export function FilterBar({ values, onChange, top, drawer, optionSource = {}, se
|
|
|
67
75
|
return labels.search;
|
|
68
76
|
return key === fileSearchKey ? (labels.fileSearch?.label ?? key) : key;
|
|
69
77
|
};
|
|
70
|
-
return (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsxs("div", { className: "
|
|
78
|
+
return (_jsxs("div", { className: "tamga-card tamga-card-open flex flex-col gap-3.5 p-4", children: [_jsxs("div", { className: "tamga-filter-row", children: [_jsxs("label", { className: "flex min-w-0 shrink grow-[2] basis-75 flex-col gap-1.5", children: [_jsx("span", { className: "text-small font-bold text-ink-faint", children: labels.search }), _jsxs("span", { className: "relative flex items-center", children: [_jsx(Icon, { icon: Search, size: "xs", "aria-hidden": true, className: "pointer-events-none absolute left-2.5 text-ink-faint" }), _jsx(Input, { type: "search", full: true, leading: true, placeholder: labels.search, value: values[searchKey] ?? "", onChange: (e) => write(searchKey, e.target.value) })] })] }), top.map((field) => (_jsxs(Fragment, { children: [field.break ? _jsx("span", { "aria-hidden": true, className: "h-0 basis-full" }) : null, _jsxs("div", { className: `flex min-w-0 shrink grow flex-col gap-1.5 ${field.kind === "dateRange" ? "basis-80" : "basis-40 tamga-filter-cap"}`, children: [_jsx("span", { className: "text-small font-bold text-ink-faint", children: field.label }), _jsx(FieldControl, { field: field, values: values, write: write, optionSource: optionSource, locale: locale, labels: labels })] })] }, field.key))), _jsxs(Button, { className: "ml-auto", onClick: () => setDrawerOpen(true), children: [_jsx(Icon, { icon: Customize, size: "xs" }), labels.allFilters, hiddenActive > 0 && (_jsx("span", { className: "tamga-count ml-1 tabular-nums", children: hiddenActive }))] }), extra] }), active.length > 0 && (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [active.map(([key, value]) => (_jsxs("span", { className: "tamga-token", children: [_jsxs("span", { className: "font-normal text-ink-faint", children: [labelFor(key), ":"] }), value, _jsx("button", { type: "button", className: "tamga-token-x", "aria-label": labels.remove(labelFor(key)), onClick: () => write(key, ""), children: _jsx(Icon, { icon: Close, size: "xs" }) })] }, key))), _jsx(Button, { variant: "link", size: "sm", onClick: () => onChange({}), children: labels.clearAll })] })), _jsx(Sheet, { open: drawerOpen, onClose: () => setDrawerOpen(false), title: labels.allFilters, closeLabel: labels.calendar.clear, footer: _jsxs(_Fragment, { children: [_jsx(Button, { type: "button", onClick: () => onChange({}), children: labels.clear }), _jsx(Button, { type: "submit", form: formId, variant: "primary", children: labels.apply })] }), children: _jsxs("form", { id: formId, onSubmit: (e) => {
|
|
71
79
|
e.preventDefault();
|
|
72
80
|
setDrawerOpen(false);
|
|
73
|
-
}, className: "flex flex-col
|
|
81
|
+
}, className: "flex flex-col", children: [drawer.map((group) => (_jsxs("div", { className: "flex flex-col gap-3.5 border-b border-dashed border-line py-4.5 last:border-b-0", children: [_jsx("p", { className: "text-caption font-extrabold uppercase tracking-label text-ink-faint", children: group.title }), _jsx("div", { className: "grid gap-3 sm:grid-cols-[repeat(2,minmax(0,1fr))]", children: group.fields.map((field) => (_jsxs("div", { className: `flex flex-col gap-1.5 ${field.kind === "dateRange" ? "sm:col-span-2" : ""}`, children: [_jsx("span", { className: "text-small text-ink-soft", children: field.label }), _jsx(FieldControl, { field: field, values: values, write: write, optionSource: optionSource, locale: locale, labels: labels })] }, field.key))) })] }, group.title))), fileSearchKey && labels.fileSearch && (_jsxs("div", { children: [_jsx("p", { className: "mb-3 text-micro font-semibold uppercase tracking-wide text-ink-faint", children: labels.fileSearch.title }), _jsx("p", { className: "mb-3 text-small leading-relaxed text-ink-soft", children: labels.fileSearch.help }), values[fileSearchKey] ? (_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: "truncate text-small text-ink", children: values[fileSearchKey] }), _jsx(Button, { type: "button", size: "sm", onClick: () => write(fileSearchKey, ""), children: labels.fileSearch.remove })] })) : (_jsxs("label", { className: `${buttonVariants({})} cursor-pointer`, children: [_jsx(Icon, { icon: Upload, size: "xs" }), labels.fileSearch.choose, _jsx("input", { type: "file", accept: ".xlsx,.xls,.csv", className: "sr-only", onChange: (e) => write(fileSearchKey, e.target.files?.[0]?.name ?? "") })] }))] }))] }) })] }));
|
|
74
82
|
}
|
package/dist/blocks/index.d.ts
CHANGED
|
@@ -1,22 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* BLOK KATMANI
|
|
2
|
+
* BLOK KATMANI · `tamga-ui/blocks`. Bir bileşenden büyük, bir şablondan küçük:
|
|
3
|
+
* birkaç bileşenin TEK BİR İŞ yaptığı bölüm. Ürün sözlüğü taşıyan hiçbir şey
|
|
4
|
+
* girmez, ve yeni bir blok yazmadan önce kitin o işi yapan bileşeni aranır.
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
* bir araya gelip TEK BİR İŞ yaptığı bölüm. Filtre çubuğu bir düğme değil ama
|
|
6
|
-
* bir ekran da değil; bir ekranın içindeki bir bölge.
|
|
7
|
-
*
|
|
8
|
-
* ADR-0003'ün katman şeması "filtre paneli · toplu eylem çubuğu" diye ikisini
|
|
9
|
-
* de `tamga-ui` kutusunun içine yazıyor. Toplu eylem çubuğu ZATEN VARDI:
|
|
10
|
-
* `SelectionBar`, bir bileşen olarak, kendi doküman sayfasıyla. Buraya bir
|
|
11
|
-
* `BulkBar` yazıldı ve aynı propları alan ikinci bir kopyaydı; silindi.
|
|
12
|
-
*
|
|
13
|
-
* DERS BU DOSYANIN BAŞINDA DURSUN: yeni bir blok yazmadan önce kitin o işi
|
|
14
|
-
* yapan bir bileşeni var mı diye bakılır. Bir tasarım sisteminin en sinsi
|
|
15
|
-
* hatası, aynı şeyin iki adla iki yerde durmasıdır.
|
|
16
|
-
*
|
|
17
|
-
* BURAYA NE GİRMEZ. Bir ürünün sözlüğünü taşıyan hiçbir şey. Bir sipariş
|
|
18
|
-
* kartı, bir iade satırı, bir mülk özeti: bunlar e-ticaret ya da izleme
|
|
19
|
-
* katmanının işi. Blok, alanı bilmeyen bölümdür.
|
|
6
|
+
* Gerekçe: docs/gerekce/08-blok-ve-sablon.md
|
|
20
7
|
*/
|
|
21
8
|
export { FilterBar, rangeStart, rangeEnd, type FilterBarLabels, type FilterBarProps, type FilterField, type FilterFieldKind, type FilterGroup, type FilterValues, } from "./filter-bar.js";
|
|
22
9
|
export { SaveBar } from "./save-bar.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/blocks/index.js
CHANGED
|
@@ -1,22 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* BLOK KATMANI
|
|
2
|
+
* BLOK KATMANI · `tamga-ui/blocks`. Bir bileşenden büyük, bir şablondan küçük:
|
|
3
|
+
* birkaç bileşenin TEK BİR İŞ yaptığı bölüm. Ürün sözlüğü taşıyan hiçbir şey
|
|
4
|
+
* girmez, ve yeni bir blok yazmadan önce kitin o işi yapan bileşeni aranır.
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
* bir araya gelip TEK BİR İŞ yaptığı bölüm. Filtre çubuğu bir düğme değil ama
|
|
6
|
-
* bir ekran da değil; bir ekranın içindeki bir bölge.
|
|
7
|
-
*
|
|
8
|
-
* ADR-0003'ün katman şeması "filtre paneli · toplu eylem çubuğu" diye ikisini
|
|
9
|
-
* de `tamga-ui` kutusunun içine yazıyor. Toplu eylem çubuğu ZATEN VARDI:
|
|
10
|
-
* `SelectionBar`, bir bileşen olarak, kendi doküman sayfasıyla. Buraya bir
|
|
11
|
-
* `BulkBar` yazıldı ve aynı propları alan ikinci bir kopyaydı; silindi.
|
|
12
|
-
*
|
|
13
|
-
* DERS BU DOSYANIN BAŞINDA DURSUN: yeni bir blok yazmadan önce kitin o işi
|
|
14
|
-
* yapan bir bileşeni var mı diye bakılır. Bir tasarım sisteminin en sinsi
|
|
15
|
-
* hatası, aynı şeyin iki adla iki yerde durmasıdır.
|
|
16
|
-
*
|
|
17
|
-
* BURAYA NE GİRMEZ. Bir ürünün sözlüğünü taşıyan hiçbir şey. Bir sipariş
|
|
18
|
-
* kartı, bir iade satırı, bir mülk özeti: bunlar e-ticaret ya da izleme
|
|
19
|
-
* katmanının işi. Blok, alanı bilmeyen bölümdür.
|
|
6
|
+
* Gerekçe: docs/gerekce/08-blok-ve-sablon.md
|
|
20
7
|
*/
|
|
21
8
|
export { FilterBar, rangeStart, rangeEnd, } from "./filter-bar.js";
|
|
22
9
|
export { SaveBar } from "./save-bar.js";
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
/**
|
|
3
|
-
* KAYDET
|
|
3
|
+
* KAYDET ŞERİDİ · kayan yüzeyin dibine yapışık, formun sonunda değil. Fiziği
|
|
4
|
+
* `.tamga-save-bar`ta, ve orada `sticky bottom-0` tuzağı yazılı. Değişiklik
|
|
5
|
+
* yoksa düğme kapalı.
|
|
4
6
|
*
|
|
5
|
-
*
|
|
6
|
-
* formun en altına koymak; yirmi alanlık bir formda üstteki bir alanı
|
|
7
|
-
* düzeltip kaydetmek için sonuna kadar kaydırmak gerekiyor. Şerit her zaman
|
|
8
|
-
* görünür, ve kaydedilecek bir şey olup olmadığını da söylüyor.
|
|
9
|
-
*
|
|
10
|
-
* FİZİĞİ BİR SINIFTA (`.tamga-save-bar`), ve orada ölçülmüş bir tuzak yazılı:
|
|
11
|
-
* `sticky bottom-0` şeridin alt kenarını yüzeyin İÇERİK kutusuna hizalıyor,
|
|
12
|
-
* ama yüzeyin kendi alt dolgusu var ve içerik o boşluktan akıp geçiyordu.
|
|
13
|
-
*
|
|
14
|
-
* DEĞİŞİKLİK YOKSA KAYDEDİLECEK BİR ŞEY DE YOK: düğme kapalı. Tıklanıp
|
|
15
|
-
* hiçbir şey olmayan bir düğme, olmayan bir düğmeden kötüdür.
|
|
7
|
+
* Gerekçe: docs/gerekce/08-blok-ve-sablon.md
|
|
16
8
|
*/
|
|
17
9
|
export declare function SaveBar({ changed, busy, onCancel, extra, labels, }: {
|
|
18
10
|
/** With no change, save is disabled. TR: Değişiklik yoksa kaydet kapalı. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-bar.d.ts","sourceRoot":"","sources":["../../src/blocks/save-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC
|
|
1
|
+
{"version":3,"file":"save-bar.d.ts","sourceRoot":"","sources":["../../src/blocks/save-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAc,EACd,IAAY,EACZ,QAAQ,EACR,KAAK,EACL,MAAM,GACP,EAAE;IACD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sJAAsJ;IACtJ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,2JAA2J;IAC3J,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3D,+BAkBA"}
|
package/dist/blocks/save-bar.js
CHANGED
|
@@ -2,19 +2,11 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Button } from "../components/button.js";
|
|
4
4
|
/**
|
|
5
|
-
* KAYDET
|
|
5
|
+
* KAYDET ŞERİDİ · kayan yüzeyin dibine yapışık, formun sonunda değil. Fiziği
|
|
6
|
+
* `.tamga-save-bar`ta, ve orada `sticky bottom-0` tuzağı yazılı. Değişiklik
|
|
7
|
+
* yoksa düğme kapalı.
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
* formun en altına koymak; yirmi alanlık bir formda üstteki bir alanı
|
|
9
|
-
* düzeltip kaydetmek için sonuna kadar kaydırmak gerekiyor. Şerit her zaman
|
|
10
|
-
* görünür, ve kaydedilecek bir şey olup olmadığını da söylüyor.
|
|
11
|
-
*
|
|
12
|
-
* FİZİĞİ BİR SINIFTA (`.tamga-save-bar`), ve orada ölçülmüş bir tuzak yazılı:
|
|
13
|
-
* `sticky bottom-0` şeridin alt kenarını yüzeyin İÇERİK kutusuna hizalıyor,
|
|
14
|
-
* ama yüzeyin kendi alt dolgusu var ve içerik o boşluktan akıp geçiyordu.
|
|
15
|
-
*
|
|
16
|
-
* DEĞİŞİKLİK YOKSA KAYDEDİLECEK BİR ŞEY DE YOK: düğme kapalı. Tıklanıp
|
|
17
|
-
* hiçbir şey olmayan bir düğme, olmayan bir düğmeden kötüdür.
|
|
9
|
+
* Gerekçe: docs/gerekce/08-blok-ve-sablon.md
|
|
18
10
|
*/
|
|
19
11
|
export function SaveBar({ changed = true, busy = false, onCancel, extra, labels, }) {
|
|
20
12
|
return (_jsxs("div", { className: "tamga-save-bar", "data-changed": changed, children: [_jsx(Button, { variant: "primary", type: "submit", disabled: !changed, busy: busy, busyLabel: labels.saving, children: labels.save }), _jsx(Button, { type: "button", onClick: onCancel, disabled: busy, children: labels.cancel }), extra && _jsx("span", { className: "ml-auto", children: extra })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../../src/components/a11y.ts"],"names":[],"mappings":"AAkCA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../../src/components/a11y.ts"],"names":[],"mappings":"AAkCA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,OAAO,uCA0DhE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,YAAY,EACZ,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,QAmDA"}
|
package/dist/components/a11y.js
CHANGED
|
@@ -42,21 +42,10 @@ export function useFocusTrap(open) {
|
|
|
42
42
|
if (!root)
|
|
43
43
|
return;
|
|
44
44
|
restoreTo.current = document.activeElement;
|
|
45
|
-
/* İLK KONTROL, ya da AÇIKÇA İSTENEN kontrol
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
* sıradaki ise "Sil": Enter'a basan biri kaydı siliyor. Yıkıcı bir
|
|
50
|
-
* diyalogda güvenli olan varsayılan olmalı.
|
|
51
|
-
*
|
|
52
|
-
* `autoFocus` NİTELİĞİ BURADA ÇALIŞMIYOR: React onu bağlarken bu etki
|
|
53
|
-
* henüz koşmamış oluyor, sonra trap odağı ilk elemana çekiyor ve niteliğin
|
|
54
|
-
* etkisi siliniyor. O yüzden mekanizma DOM üzerinden: panelin içinde
|
|
55
|
-
* `data-autofocus` taşıyan bir eleman varsa odak onun.
|
|
56
|
-
*
|
|
57
|
-
* `focusable` listesinden seçiliyor ki gizli ya da devre dışı bir elemana
|
|
58
|
-
* odak verilmesin: kapalı bir düğmeye odaklanmak, odağı hiç vermemekle
|
|
59
|
-
* aynı şey ama sessizce. */
|
|
45
|
+
/* İLK KONTROL, ya da AÇIKÇA İSTENEN kontrol: panelin içinde `data-autofocus`
|
|
46
|
+
taşıyan bir eleman varsa odak onun. `autoFocus` NİTELİĞİ BURADA ÇALIŞMIYOR,
|
|
47
|
+
tuzak odağı ilk elemana çekince etkisi siliniyor.
|
|
48
|
+
Gerekçe: docs/gerekce/09-kitaplik.md */
|
|
60
49
|
const adaylar = focusable(root);
|
|
61
50
|
const istenen = adaylar.find((el) => el.hasAttribute("data-autofocus"));
|
|
62
51
|
const first = istenen ?? adaylar[0];
|
|
@@ -3,11 +3,24 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Gerekçe: docs/gerekce/01-form-ve-girdi.md
|
|
5
5
|
*/
|
|
6
|
-
export declare function PasswordInput({ labels, invalid, className, ...props }: Omit<React.ComponentProps<"input">, "type"> & {
|
|
6
|
+
export declare function PasswordInput({ labels, strength, invalid, className, ...props }: Omit<React.ComponentProps<"input">, "type"> & {
|
|
7
7
|
labels: {
|
|
8
8
|
show: string;
|
|
9
9
|
hide: string;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* The strength meter under the field: `value` bars lit out of `of`, and `note` the line saying
|
|
13
|
+
* what is still missing. The kit LIGHTS the bars, it does not judge the password: what counts
|
|
14
|
+
* as strong is a policy, and a policy belongs to the product. TR: Alanın altındaki güç
|
|
15
|
+
* göstergesi: `of` çubuğun `value` tanesi yanıyor, `note` neyin eksik olduğunu söyleyen satır.
|
|
16
|
+
* Kit çubukları YAKIYOR, parolayı yargılamıyor: neyin güçlü sayıldığı bir politika, ve politika
|
|
17
|
+
* ürünün.
|
|
18
|
+
*/
|
|
19
|
+
strength?: {
|
|
20
|
+
value: number;
|
|
21
|
+
of?: number;
|
|
22
|
+
note?: string;
|
|
23
|
+
};
|
|
11
24
|
/**
|
|
12
25
|
* The field failed validation: it takes the error edge and sets `aria-invalid`, so the failure is
|
|
13
26
|
* announced as well as shown. TR: Alan doğrulamadan geçemedi: hata kenarını alıyor ve
|
|
@@ -16,15 +29,11 @@ export declare function PasswordInput({ labels, invalid, className, ...props }:
|
|
|
16
29
|
invalid?: boolean;
|
|
17
30
|
}): import("react").JSX.Element;
|
|
18
31
|
/**
|
|
19
|
-
* Maskeli sır
|
|
32
|
+
* Maskeli sır · API anahtarı, webhook secret. `PasswordInput`un kardeşi ama işi
|
|
33
|
+
* TERS: buraya yazılmıyor, okunup kopyalanıyor, o yüzden salt-okunur. Maske ilk
|
|
34
|
+
* ve son birkaç karakteri bırakıyor.
|
|
20
35
|
*
|
|
21
|
-
*
|
|
22
|
-
* buraya yazılmaz — okunur ve kopyalanır. O yüzden salt-okunur, ve asıl
|
|
23
|
-
* düğmesi kopyalama.
|
|
24
|
-
*
|
|
25
|
-
* Maske ilk ve son birkaç karakteri bırakıyor. Tamamen gizlemek, kullanıcının
|
|
26
|
-
* "hangi anahtar bu" sorusunu cevapsız bırakır; üç anahtarı olan biri
|
|
27
|
-
* hangisine baktığını bilemez.
|
|
36
|
+
* Gerekçe: docs/gerekce/01-form-ve-girdi.md
|
|
28
37
|
*/
|
|
29
38
|
export declare function SecretField({ value, labels, visibleChars, className, ...rest }: {
|
|
30
39
|
value: string;
|
|
@@ -45,15 +54,10 @@ export declare function SecretField({ value, labels, visibleChars, className, ..
|
|
|
45
54
|
[k: `data-${string}`]: unknown;
|
|
46
55
|
}): import("react").JSX.Element;
|
|
47
56
|
/**
|
|
48
|
-
* Etiket girdisi
|
|
49
|
-
*
|
|
50
|
-
* Enter ya da virgül bir etiketi kapatıyor; boşken Backspace sonuncuyu siliyor.
|
|
51
|
-
* İkincisi küçük görünür ama en çok kullanılan yoldur — yanlış yazılan bir
|
|
52
|
-
* etiketi silmek için fareye uzanmak, akışı kesen tek şeydir.
|
|
57
|
+
* Etiket girdisi · Enter ya da virgül bir etiketi kapatıyor, boşken Backspace
|
|
58
|
+
* sonuncuyu siliyor. Yinelenen etiket SESSİZCE yutuluyor, hata verilmiyor.
|
|
53
59
|
*
|
|
54
|
-
*
|
|
55
|
-
* yazmak bir hata değil, bir tekrardır, ve kullanıcı zaten istediğini almış
|
|
56
|
-
* olur.
|
|
60
|
+
* Gerekçe: docs/gerekce/01-form-ve-girdi.md
|
|
57
61
|
*/
|
|
58
62
|
export declare function TagsInput({ value, onChange, placeholder, labels, max, className, ...rest }: {
|
|
59
63
|
value: readonly string[];
|
|
@@ -68,17 +72,6 @@ export declare function TagsInput({ value, onChange, placeholder, labels, max, c
|
|
|
68
72
|
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
69
73
|
[k: `data-${string}`]: unknown;
|
|
70
74
|
}): import("react").JSX.Element;
|
|
71
|
-
/**
|
|
72
|
-
* Çoklu seçim — aranabilir.
|
|
73
|
-
*
|
|
74
|
-
* `Combobox` tek seçim yapar; bu birden çok. Ayrı bileşen olmasının sebebi
|
|
75
|
-
* görünüm değil DAVRANIŞ: tek seçimde liste seçince kapanır, çoklu seçimde
|
|
76
|
-
* KAPANMAZ — üç şey seçecek biri listeyi üç kez açmak zorunda kalmamalı.
|
|
77
|
-
*
|
|
78
|
-
* Seçilenler girdinin İÇİNDE çip olarak duruyor, altında ayrı bir listede
|
|
79
|
-
* değil: seçim ile seçilenler arasındaki mesafe arttıkça, kullanıcı neyi
|
|
80
|
-
* seçtiğini görmek için gözünü iki yere birden koymak zorunda kalır.
|
|
81
|
-
*/
|
|
82
75
|
export declare function MultiSelect({ options, value, onChange, placeholder, labels, className, ...rest }: {
|
|
83
76
|
options: readonly ({
|
|
84
77
|
value: string;
|
|
@@ -98,30 +91,43 @@ export declare function MultiSelect({ options, value, onChange, placeholder, lab
|
|
|
98
91
|
[k: `data-${string}`]: unknown;
|
|
99
92
|
}): import("react").JSX.Element;
|
|
100
93
|
/**
|
|
101
|
-
* Zamanlama girdisi
|
|
94
|
+
* Zamanlama girdisi · "her N dakikada bir". NEDEN CRON DEĞİL: kürasyonlu
|
|
95
|
+
* seçenek, serbestlik değil. Aralıklar dakika olarak veriliyor, çevirisi
|
|
96
|
+
* çağıranın.
|
|
102
97
|
*
|
|
103
|
-
*
|
|
104
|
-
* için okunur, bir panel
|
|
105
|
-
* kullanıcısı için değildir — ve yanlış yazılan bir cron ifadesi hata
|
|
106
|
-
* vermez, sadece yanlış zamanda çalışır. Bu bileşen kürasyonlu bir liste
|
|
107
|
-
* sunuyor: kürasyonlu seçenek, serbestlik değil.
|
|
108
|
-
*
|
|
109
|
-
* Aralıklar dakika olarak veriliyor, çevirisi çağıranın: "5 dakika" ile
|
|
110
|
-
* "5 minutes" arasındaki farkı kit bilemez.
|
|
98
|
+
* Gerekçe: docs/gerekce/01-form-ve-girdi.md
|
|
111
99
|
*/
|
|
112
|
-
export declare function ScheduleInput({
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
|
|
100
|
+
export declare function ScheduleInput({ days, onDaysChange, from, to, onFromChange, onToChange, labels, summary, className, ...rest }: {
|
|
101
|
+
/** Selected weekdays, 0 Sunday to 6 Saturday. TR: Seçili günler, 0 Pazar ile 6 Cumartesi arası. */
|
|
102
|
+
days: readonly number[];
|
|
103
|
+
onDaysChange: (next: number[]) => void;
|
|
104
|
+
/** "09:00". TR: "09:00". */
|
|
105
|
+
from: string;
|
|
106
|
+
to: string;
|
|
107
|
+
onFromChange: (next: string) => void;
|
|
108
|
+
onToChange: (next: string) => void;
|
|
116
109
|
/**
|
|
117
|
-
*
|
|
118
|
-
* "
|
|
110
|
+
* Every visible word. `dayNames` starts at Sunday and is written short ("Pzt"); `zone` is the
|
|
111
|
+
* line after the hours ("Istanbul (GMT+3)"), and it is optional. TR: Görünen her sözcük.
|
|
112
|
+
* `dayNames` Pazar'dan başlıyor ve kısa yazılıyor ("Pzt"); `zone` saatlerin ardındaki satır
|
|
113
|
+
* ("İstanbul (GMT+3)") ve isteğe bağlı.
|
|
119
114
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
115
|
+
labels: {
|
|
116
|
+
days: string;
|
|
117
|
+
dayNames: readonly string[];
|
|
118
|
+
hours: string;
|
|
119
|
+
between: string;
|
|
120
|
+
zone?: string;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* The schedule in one human sentence, built by the caller: "Every weekday between 09:00 and
|
|
124
|
+
* 18:00". The kit cannot write it, because the sentence is grammar and the kit does not
|
|
125
|
+
* translate. TR: Zamanlamanın tek cümlelik insan hâli, çağıran kuruyor: "Her hafta içi
|
|
126
|
+
* 09:00-18:00 arası". Kit yazamaz, çünkü cümle bir dilbilgisi işi ve kit çeviri yapmaz.
|
|
127
|
+
*/
|
|
128
|
+
summary: string;
|
|
125
129
|
className?: string;
|
|
130
|
+
/** `data-*` hooks pass through. TR: `data-*` kancaları geçiyor. */
|
|
131
|
+
[k: `data-${string}`]: unknown;
|
|
126
132
|
}): import("react").JSX.Element;
|
|
127
133
|
//# sourceMappingURL=advanced-input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advanced-input.d.ts","sourceRoot":"","sources":["../../src/components/advanced-input.tsx"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,OAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG;IAC/C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,+
|
|
1
|
+
{"version":3,"file":"advanced-input.d.ts","sourceRoot":"","sources":["../../src/components/advanced-input.tsx"],"names":[],"mappings":"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"}
|