@nar-bus/ui-kit 1.9.0 → 1.10.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/dist/map.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export { MapShell } from './organisms/MapShell';
2
+ export type { MapShellProps } from './organisms/MapShell';
3
+ export { MapLayerControl } from './organisms/MapLayerControl';
4
+ export type { MapLayerControlProps, MapLayerToggleItem } from './organisms/MapLayerControl';
5
+ export { MapLegend } from './organisms/MapLegend';
6
+ export type { MapLegendProps, MapLegendEntry } from './organisms/MapLegend';
7
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/map.js ADDED
@@ -0,0 +1,174 @@
1
+ import { jsx as t, jsxs as m } from "react/jsx-runtime";
2
+ import { useRef as f, useState as D, useEffect as U } from "react";
3
+ import { useTranslation as T } from "react-i18next";
4
+ import { a as h, B as V } from "./Button-DsTGnChX.js";
5
+ function X() {
6
+ if (typeof document > "u") return !1;
7
+ try {
8
+ const e = document.createElement("canvas");
9
+ return !!(e.getContext("webgl2") || e.getContext("webgl"));
10
+ } catch {
11
+ return !1;
12
+ }
13
+ }
14
+ function Y() {
15
+ const { t: e } = T();
16
+ return /* @__PURE__ */ m(
17
+ "div",
18
+ {
19
+ role: "status",
20
+ className: "flex h-full w-full flex-col items-center justify-center px-8 py-10 text-center",
21
+ children: [
22
+ /* @__PURE__ */ t("h3", { className: "mb-3 text-[length:var(--font-base)] font-medium text-[var(--color-text-primary)]", children: e("map_shell.webglTitle") }),
23
+ /* @__PURE__ */ t("p", { className: "max-w-md text-[length:var(--font-sm)] text-[var(--color-text-muted)]", children: e("map_shell.webglBody") })
24
+ ]
25
+ }
26
+ );
27
+ }
28
+ function Z({
29
+ style: e,
30
+ bounds: r,
31
+ fitBoundsPadding: c = 24,
32
+ interactive: u = !1,
33
+ preserveDrawingBuffer: a = !0,
34
+ glyphs: x,
35
+ onMapReady: g,
36
+ preMapInit: d,
37
+ webglFallback: k,
38
+ loadingOverlay: p,
39
+ isLoading: b = !1,
40
+ className: R,
41
+ children: G,
42
+ "data-testid": j
43
+ }) {
44
+ const S = f(null), y = f(null), [H, E] = D(!1), [z] = D(X), M = f(e);
45
+ M.current = e;
46
+ const w = f(g);
47
+ w.current = g;
48
+ const N = f(d);
49
+ N.current = d;
50
+ const l = f({ bounds: r, fitBoundsPadding: c, interactive: u, preserveDrawingBuffer: a, glyphs: x });
51
+ return l.current = { bounds: r, fitBoundsPadding: c, interactive: u, preserveDrawingBuffer: a, glyphs: x }, U(() => {
52
+ if (!z) return;
53
+ const C = S.current;
54
+ if (!C) return;
55
+ let B = !1, n, v, A = 0, L;
56
+ return (async () => {
57
+ var W;
58
+ const F = await import("maplibre-gl"), J = F.default;
59
+ if (B) return;
60
+ (W = N.current) == null || W.call(N, F);
61
+ const s = l.current, K = s.glyphs ? { ...M.current, glyphs: s.glyphs } : M.current;
62
+ n = new J.Map({
63
+ container: C,
64
+ style: K,
65
+ interactive: s.interactive,
66
+ attributionControl: !1,
67
+ canvasContextAttributes: { preserveDrawingBuffer: s.preserveDrawingBuffer },
68
+ ...s.bounds ? { bounds: s.bounds, fitBoundsOptions: { padding: s.fitBoundsPadding, animate: !1 } } : {}
69
+ }), y.current = n;
70
+ let _ = !1;
71
+ const P = () => {
72
+ _ = !0;
73
+ };
74
+ s.interactive && (n.on("dragstart", P), n.on("zoomstart", P)), n.on("load", () => {
75
+ var i;
76
+ B || (E(!0), A = requestAnimationFrame(() => {
77
+ const o = y.current;
78
+ if (B || !o) return;
79
+ const q = o.getCanvas();
80
+ q.width > 0 && q.height > 0 && (o.resize(), l.current.bounds && o.fitBounds(l.current.bounds, {
81
+ padding: l.current.fitBoundsPadding,
82
+ animate: !1
83
+ }), o.triggerRepaint());
84
+ }), L = (i = w.current) == null ? void 0 : i.call(w, n));
85
+ });
86
+ const Q = () => {
87
+ const i = y.current;
88
+ if (!i) return;
89
+ i.resize();
90
+ const o = i.getCanvas();
91
+ !_ && l.current.bounds && o.width > 0 && o.height > 0 && i.fitBounds(l.current.bounds, {
92
+ padding: l.current.fitBoundsPadding,
93
+ animate: !1
94
+ });
95
+ };
96
+ v = new ResizeObserver(Q), v.observe(C.parentElement ?? C);
97
+ })(), () => {
98
+ B = !0, A && cancelAnimationFrame(A), typeof L == "function" && L(), v == null || v.disconnect(), n == null || n.remove(), y.current = null, E(!1);
99
+ };
100
+ }, [z]), z ? /* @__PURE__ */ m("div", { className: h("map-shell relative h-full w-full", R), "data-testid": j, children: [
101
+ /* @__PURE__ */ t("div", { ref: S, className: "absolute inset-0" }),
102
+ (b || !H) && p ? /* @__PURE__ */ t("div", { className: "pointer-events-none absolute inset-0 z-10 flex items-center justify-center", children: p }) : null,
103
+ G
104
+ ] }) : /* @__PURE__ */ t("div", { className: h("map-shell h-full w-full", R), "data-testid": j, children: k ?? /* @__PURE__ */ t(Y, {}) });
105
+ }
106
+ Z.displayName = "MapShell";
107
+ function $({
108
+ items: e,
109
+ activeId: r,
110
+ onChange: c,
111
+ className: u,
112
+ ariaLabel: a,
113
+ children: x
114
+ }) {
115
+ const { t: g } = T();
116
+ return /* @__PURE__ */ m(
117
+ "div",
118
+ {
119
+ role: "group",
120
+ "aria-label": a ?? g("map_shell.layerControl"),
121
+ className: h("flex flex-wrap items-center gap-[var(--space-2)]", u),
122
+ children: [
123
+ e.map(({ id: d, label: k, icon: p }) => {
124
+ const b = d === r;
125
+ return /* @__PURE__ */ m(
126
+ V,
127
+ {
128
+ variant: "ghost",
129
+ size: "sm",
130
+ "aria-pressed": b,
131
+ onClick: () => c(d),
132
+ className: h(
133
+ "h-auto rounded-[var(--radius-xs)] px-3 py-1.5 font-mono text-[length:var(--font-sm)] tracking-[0.16em] uppercase",
134
+ b ? "border border-[var(--color-primary)] bg-[var(--color-primary-subtle)] text-[var(--color-primary)]" : "border border-transparent text-[var(--color-text-muted)]"
135
+ ),
136
+ children: [
137
+ p ? /* @__PURE__ */ t(p, { className: "mr-1.5 inline-block h-3.5 w-3.5" }) : null,
138
+ k
139
+ ]
140
+ },
141
+ d
142
+ );
143
+ }),
144
+ x
145
+ ]
146
+ }
147
+ );
148
+ }
149
+ $.displayName = "MapLayerControl";
150
+ function O({ color: e, label: r }) {
151
+ return /* @__PURE__ */ m("div", { className: "flex items-center gap-1", children: [
152
+ /* @__PURE__ */ t(
153
+ "span",
154
+ {
155
+ className: "inline-block h-3 w-3 rounded-[var(--radius-xs)]",
156
+ style: { backgroundColor: e, opacity: 0.82 }
157
+ }
158
+ ),
159
+ /* @__PURE__ */ t("span", { className: "font-mono text-[10px] text-[var(--color-text-muted)]", children: r })
160
+ ] });
161
+ }
162
+ function I({ entries: e, noData: r, label: c, className: u }) {
163
+ return /* @__PURE__ */ m("div", { className: h("flex flex-wrap items-center gap-[var(--space-3)]", u), children: [
164
+ c ? /* @__PURE__ */ t("span", { className: "font-mono text-[10px] tracking-[0.12em] text-[var(--color-text-muted)] uppercase", children: c }) : null,
165
+ e.map((a) => /* @__PURE__ */ t(O, { color: a.color, label: a.label }, a.label)),
166
+ r ? /* @__PURE__ */ t(O, { color: r.color, label: r.label }) : null
167
+ ] });
168
+ }
169
+ I.displayName = "MapLegend";
170
+ export {
171
+ $ as MapLayerControl,
172
+ I as MapLegend,
173
+ Z as MapShell
174
+ };
@@ -0,0 +1,33 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ /** One selectable map layer. `label` is caller-pre-translated. */
3
+ export interface MapLayerToggleItem {
4
+ id: string;
5
+ label: string;
6
+ /** Optional leading icon (e.g. a lucide component). */
7
+ icon?: ComponentType<{
8
+ className?: string;
9
+ }>;
10
+ }
11
+ export interface MapLayerControlProps {
12
+ items: MapLayerToggleItem[];
13
+ activeId: string;
14
+ onChange: (id: string) => void;
15
+ className?: string;
16
+ ariaLabel?: string;
17
+ /** Slot for conditional extras beside the toggle (e.g. an operator selector). */
18
+ children?: ReactNode;
19
+ }
20
+ /**
21
+ * MapLayerControl — data-agnostic segmented layer toggle (GAP-04).
22
+ *
23
+ * The generalized `LayerToggleRow` that both the package's TurkeyMap and HES's
24
+ * NetworkHealth cockpit reproduce: a mono/uppercase button cluster with an
25
+ * accent-chip active state. Token-neutral (`--color-primary`) so it renders in
26
+ * both themes; the consumer supplies items + active id + a conditional
27
+ * `children` slot for extras.
28
+ */
29
+ export declare function MapLayerControl({ items, activeId, onChange, className, ariaLabel, children, }: MapLayerControlProps): import("react").JSX.Element;
30
+ export declare namespace MapLayerControl {
31
+ var displayName: string;
32
+ }
33
+ //# sourceMappingURL=MapLayerControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapLayerControl.d.ts","sourceRoot":"","sources":["../../src/organisms/MapLayerControl.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK3D,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE,oBAAoB,+BAgCtB;yBAvCe,eAAe"}
@@ -0,0 +1,25 @@
1
+ /** One legend swatch. `color` is a raw CSS color from the caller's paint module. */
2
+ export interface MapLegendEntry {
3
+ color: string;
4
+ label: string;
5
+ }
6
+ export interface MapLegendProps {
7
+ entries: MapLegendEntry[];
8
+ /** Optional trailing swatch (e.g. a "no data" bucket). */
9
+ noData?: MapLegendEntry;
10
+ /** Optional leading caption. */
11
+ label?: string;
12
+ className?: string;
13
+ }
14
+ /**
15
+ * MapLegend — data-agnostic color-ramp legend (GAP-04).
16
+ *
17
+ * The generalized `LegendRow`. The consumer computes `{ color, label }[]` from
18
+ * its own paint module and passes it in; raw caller-supplied colors are allowed
19
+ * (a paint ramp is inherently domain data, not a token).
20
+ */
21
+ export declare function MapLegend({ entries, noData, label, className }: MapLegendProps): import("react").JSX.Element;
22
+ export declare namespace MapLegend {
23
+ var displayName: string;
24
+ }
25
+ //# sourceMappingURL=MapLegend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapLegend.d.ts","sourceRoot":"","sources":["../../src/organisms/MapLegend.tsx"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,cAAc,+BAc9E;yBAde,SAAS"}
@@ -0,0 +1,64 @@
1
+ import { ReactNode } from 'react';
2
+ import { StyleSpecification, Map as MapLibreMap } from 'maplibre-gl';
3
+ /**
4
+ * MapShell — data-agnostic MapLibre GL mount container (GAP-04).
5
+ *
6
+ * Owns ONLY the shared chrome that every MapLibre surface reproduces: WebGL
7
+ * feature-gate, the sized container element, map construction boilerplate, the
8
+ * RAF 0×0-container guard, ResizeObserver re-fit, and teardown. It deliberately
9
+ * does NOT own style/paint/data/interactions — the app wires those against the
10
+ * live map via the `onMapReady(map)` seam. This lets a glance map (interactive
11
+ * false) and a drill-down map (interactive true) share one component with zero
12
+ * fork.
13
+ *
14
+ * The root carries a `.map-shell` scope class so the shipped popup re-skin
15
+ * (`MapShell.css`) never collides across two mounted maps. Base MapLibre control
16
+ * styles are NOT bundled — a consumer whose map shows controls imports
17
+ * `maplibre-gl/dist/maplibre-gl.css` itself (it holds the maplibre-gl peer dep).
18
+ *
19
+ * maplibre-gl is an OPTIONAL peer dependency; code-split your map surface
20
+ * (`React.lazy`) so non-map routes never load it.
21
+ */
22
+ export interface MapShellProps {
23
+ /** MapLibre style document (sources + layers) built by the consumer. */
24
+ style: StyleSpecification;
25
+ /** `[west, south, east, north]` to fit on load + resize. Omit for style-driven framing. */
26
+ bounds?: [number, number, number, number];
27
+ /** Padding (px) for `fitBounds`. Default `24`. */
28
+ fitBoundsPadding?: number;
29
+ /** Enable pan/zoom. Default `false` (a static glance map). */
30
+ interactive?: boolean;
31
+ /** Keep the WebGL drawing buffer across composites. Default `true` (required for non-interactive maps to paint). */
32
+ preserveDrawingBuffer?: boolean;
33
+ /** Optional glyphs endpoint merged into the style. */
34
+ glyphs?: string;
35
+ /**
36
+ * Called once the map's `load` fires (after the 0×0 guard). Wire paint,
37
+ * layer visibility, interactions, and data here against the live `map`.
38
+ * Return a cleanup that runs on unmount.
39
+ */
40
+ onMapReady?: (map: MapLibreMap) => void | (() => void);
41
+ /**
42
+ * Called with the loaded `maplibre-gl` module IMMEDIATELY before the map is
43
+ * constructed — the seam for global setup that must precede style load, e.g.
44
+ * `maplibre.addProtocol(...)` for a custom glyph/tile protocol (`onMapReady`
45
+ * fires post-`load`, too late for protocol registration).
46
+ */
47
+ preMapInit?: (maplibre: typeof import("maplibre-gl")) => void;
48
+ /** Rendered instead of the map when WebGL is unavailable. Defaults to a built-in panel. */
49
+ webglFallback?: ReactNode;
50
+ /** Overlay shown centered over the map until it is ready (or while `isLoading`). */
51
+ loadingOverlay?: ReactNode;
52
+ /** Forces the loading overlay even after the map is ready. */
53
+ isLoading?: boolean;
54
+ /** Applied to the root — the consumer supplies its own glass frame token here. */
55
+ className?: string;
56
+ /** Overlay content positioned over the map (e.g. a floating control). */
57
+ children?: ReactNode;
58
+ "data-testid"?: string;
59
+ }
60
+ export declare function MapShell({ style, bounds, fitBoundsPadding, interactive, preserveDrawingBuffer, glyphs, onMapReady, preMapInit, webglFallback, loadingOverlay, isLoading, className, children, "data-testid": dataTestId, }: MapShellProps): import("react").JSX.Element;
61
+ export declare namespace MapShell {
62
+ var displayName: string;
63
+ }
64
+ //# sourceMappingURL=MapShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapShell.d.ts","sourceRoot":"","sources":["../../src/organisms/MapShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1E,OAAO,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,KAAK,EAAE,kBAAkB,CAAC;IAC1B,2FAA2F;IAC3F,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oHAAoH;IACpH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IACvD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,aAAa,CAAC,KAAK,IAAI,CAAC;IAC9D,2FAA2F;IAC3F,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,oFAAoF;IACpF,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA8BD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,MAAM,EACN,gBAAqB,EACrB,WAAmB,EACnB,qBAA4B,EAC5B,MAAM,EACN,UAAU,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACd,SAAiB,EACjB,SAAS,EACT,QAAQ,EACR,aAAa,EAAE,UAAU,GAC1B,EAAE,aAAa,+BA4If;yBA3Je,QAAQ"}
@@ -1,9 +1,9 @@
1
- const o = { ara: "Ara...", filtre: "Filtre", kaydet: "Kaydet", iptal: "İptal", sil: "Sil", duzenle: "Düzenle", ekle: "Ekle", kapat: "Kapat", daha_fazla: "Daha fazla", temizle: "Temizle", tamam: "Tamam", geri: "Geri", ileri: "İleri", devam: "Devam", calistir: "Çalıştır", onayla: "Onayla", gonder: "Gönder", yukle: "Yükle", indir: "İndir", kopyala: "Kopyala", kopyalandi: "Kopyalandı", yapistir: "Yapıştır", sec: "Seç", vazgec: "Vazgeç", detay: "Detay", detaya_git: "Detaya Git", yenile: "Yenile", disa_aktar: "Dışa Aktar", evet: "Evet", hayir: "Hayır", tumu: "Tümü", yok: "Yok", olustur: '"{{value}}" oluştur' }, s = { sayfa: "Sayfa", toplam: "Toplam", secili: "Seçili", kayit_bulunamadi: "Kayıt bulunamadı", siralama: "Sıralama", filtrele: "Filtrele", tumunu_sec: "Tümünü Seç", secimi_kaldir: "Seçimi Kaldır", satirlar: "satır", sayfa_basina: "sayfa başına", eylemler: "Eylemler" }, d = { zorunlu_alan: "Bu alan zorunludur", gecersiz_deger: "Geçersiz değer", min_karakter: "En az {{min}} karakter olmalıdır", max_karakter: "En fazla {{max}} karakter olmalıdır", email_gecersiz: "Geçerli bir e-posta adresi giriniz", sayi_gecersiz: "Geçerli bir sayı giriniz" }, u = { emin_misiniz: "Emin misiniz?", bu_islem_geri_alinamaz: "Bu işlem geri alınamaz.", onay: "Onayla", vazgec: "Vazgeç", silme_onay: "Bu kaydı silmek istediğinize emin misiniz?", silme_baslik: "Kaydı Sil", entity_silme_onay: "kalıcı olarak silinecek. Bu işlem geri alınamaz." }, y = { karanlik_mod: "Karanlık Mod", aydinlik_mod: "Aydınlık Mod", tema_degistir: "Tema Değiştir" }, c = { bugun: "Bugün", dun: "Dün", bu_hafta: "Bu Hafta", bu_ay: "Bu Ay", gecen_ay: "Geçen Ay", son_7_gun: "Son 7 Gün", son_30_gun: "Son 30 Gün", baslangic: "Başlangıç", bitis: "Bitiş", tarih_sec: "Tarih Seçiniz", saat: "Saat" }, m = { onceki_sayfa: "Önceki Sayfa", sonraki_sayfa: "Sonraki Sayfa", previous_page: "Önceki sayfa", next_page: "Sonraki sayfa", sayfa_x_y: "Sayfa {{current}} / {{total}}", kayit_gosteriliyor: "{{from}}-{{to}} / {{total}} kayıt gösteriliyor", ilk_sayfa: "İlk Sayfa", son_sayfa: "Son Sayfa" }, _ = { kayit_bulunamadi: "Kayıt bulunamadı", henuz_veri_yok: "Henüz veri yok", sonuc_bulunamadi: "Aradığınız kriterlere uygun sonuç bulunamadı" }, k = { basarili: "Başarılı", hata: "Hata", uyari: "Uyarı", bilgi: "Bilgi", yukleniyor: "Yükleniyor...", kaydediliyor: "Kaydediliyor...", siliniyor: "Siliniyor..." }, g = { filtre_uygula: "Filtreyi Uygula", filtreleri_temizle: "Filtreleri Temizle", aktif_filtre: "{{count}} aktif filtre", yes: "Evet", no: "Hayır", op_contains: "İçerir", op_equals: "Eşittir", op_not_equals: "Eşit Değil", op_starts_with: "Başlar", op_ends_with: "Biter", op_greater: "Büyüktür", op_less: "Küçüktür", op_greater_eq: "Büyük Eşit", op_less_eq: "Küçük Eşit", operator_sec: "Operatör seçin", secili: "Seçili" }, f = { ham_json: "Ham JSON", form_gorunumu: "Form Görünümü", formatla: "Formatla", gecersiz_json: "Geçersiz JSON formatı", kopyalandi: "Kopyalandı!", kopyala: "Kopyala", icerik: "JSON içeriği", duzenle: "Düzenle", goruntule: "Görüntüle" }, p = { bold: "Kalın", italic: "İtalik", strike: "Üstü çizili", h2: "Başlık 2", h3: "Başlık 3", bulletList: "Madde işaretli liste", orderedList: "Numaralı liste", link: "Bağlantı", unlink: "Bağlantıyı kaldır", blockquote: "Alıntı", code: "Kod", undo: "Geri al", redo: "Yinele", linkUrl: "https://…", linkApply: "Bağlantıyı uygula", linkCancel: "İptal", toolbar: "Biçimlendirme", editor: "Zengin metin editörü", linkInput: "Bağlantı adresi" }, h = { sifreyi_goster: "Şifreyi göster", sifreyi_gizle: "Şifreyi gizle", onceki_ay: "Önceki ay", sonraki_ay: "Sonraki ay", filtreyi_kaldir: "{{name}} filtresini kaldır", kopyala: "Kopyala", panel: "Panel", iletisim_kutusu: "İletişim kutusu", kaldir: "{{label}} seçimini kaldır", filtrele: "Seçenekleri filtrele", filtreler: "Filtreler", breadcrumb: "Yol haritası", pagination: "Sayfalama", detay_sayfasi: "Detay sayfası", filtreler_kenar: "Filtre kenar çubuğu", giris: "Giriş", rapor_kriterleri: "Rapor kriterleri" }, b = { lifecycle: { ACTIVE: "Aktif", INACTIVE: "Pasif", MAINTENANCE: "Bakımda", FAULTY: "Arızalı" }, power: { ON: "Enerjili", OFF: "Enerji Yok", UNKNOWN: "Bilinmiyor" }, disconnection: { ON: "Enerji Var", OFF: "Enerji Yok", UNKNOWN: "Bilinmiyor", OPENING: "Açılıyor", CLOSING: "Kapanıyor" } }, N = { hero: { live: "CANLI", fleetOnline: "AKTİF SAYAÇLAR", online: "aktif", vs1h: "vs 1s", fleet: { online: "AKTİF", offline: "PASİF", unknown: "ENERJİSİZ" }, readingSla24h: "OKUMA SLA · 24S", target: "hedef", activeOutages: "AKTİF KESİNTİLER", affectedMeters: "etkilenen sayaç", alarm: { crit: "KRİTİK", warn: "UYARI", viewDetails: "{{slug}} detaylarını görüntüle" }, tape: { ariaLabel: "Son sistem olayları" } } }, r = {
1
+ const o = { ara: "Ara...", filtre: "Filtre", kaydet: "Kaydet", iptal: "İptal", sil: "Sil", duzenle: "Düzenle", ekle: "Ekle", kapat: "Kapat", daha_fazla: "Daha fazla", temizle: "Temizle", tamam: "Tamam", geri: "Geri", ileri: "İleri", devam: "Devam", calistir: "Çalıştır", onayla: "Onayla", gonder: "Gönder", yukle: "Yükle", indir: "İndir", kopyala: "Kopyala", kopyalandi: "Kopyalandı", yapistir: "Yapıştır", sec: "Seç", vazgec: "Vazgeç", detay: "Detay", detaya_git: "Detaya Git", yenile: "Yenile", disa_aktar: "Dışa Aktar", evet: "Evet", hayir: "Hayır", tumu: "Tümü", yok: "Yok", olustur: '"{{value}}" oluştur' }, s = { sayfa: "Sayfa", toplam: "Toplam", secili: "Seçili", kayit_bulunamadi: "Kayıt bulunamadı", siralama: "Sıralama", filtrele: "Filtrele", tumunu_sec: "Tümünü Seç", secimi_kaldir: "Seçimi Kaldır", satirlar: "satır", sayfa_basina: "sayfa başına", eylemler: "Eylemler" }, d = { zorunlu_alan: "Bu alan zorunludur", gecersiz_deger: "Geçersiz değer", min_karakter: "En az {{min}} karakter olmalıdır", max_karakter: "En fazla {{max}} karakter olmalıdır", email_gecersiz: "Geçerli bir e-posta adresi giriniz", sayi_gecersiz: "Geçerli bir sayı giriniz" }, y = { emin_misiniz: "Emin misiniz?", bu_islem_geri_alinamaz: "Bu işlem geri alınamaz.", onay: "Onayla", vazgec: "Vazgeç", silme_onay: "Bu kaydı silmek istediğinize emin misiniz?", silme_baslik: "Kaydı Sil", entity_silme_onay: "kalıcı olarak silinecek. Bu işlem geri alınamaz." }, u = { karanlik_mod: "Karanlık Mod", aydinlik_mod: "Aydınlık Mod", tema_degistir: "Tema Değiştir" }, c = { bugun: "Bugün", dun: "Dün", bu_hafta: "Bu Hafta", bu_ay: "Bu Ay", gecen_ay: "Geçen Ay", son_7_gun: "Son 7 Gün", son_30_gun: "Son 30 Gün", baslangic: "Başlangıç", bitis: "Bitiş", tarih_sec: "Tarih Seçiniz", saat: "Saat" }, m = { onceki_sayfa: "Önceki Sayfa", sonraki_sayfa: "Sonraki Sayfa", previous_page: "Önceki sayfa", next_page: "Sonraki sayfa", sayfa_x_y: "Sayfa {{current}} / {{total}}", kayit_gosteriliyor: "{{from}}-{{to}} / {{total}} kayıt gösteriliyor", ilk_sayfa: "İlk Sayfa", son_sayfa: "Son Sayfa" }, _ = { kayit_bulunamadi: "Kayıt bulunamadı", henuz_veri_yok: "Henüz veri yok", sonuc_bulunamadi: "Aradığınız kriterlere uygun sonuç bulunamadı" }, k = { basarili: "Başarılı", hata: "Hata", uyari: "Uyarı", bilgi: "Bilgi", yukleniyor: "Yükleniyor...", kaydediliyor: "Kaydediliyor...", siliniyor: "Siliniyor..." }, g = { filtre_uygula: "Filtreyi Uygula", filtreleri_temizle: "Filtreleri Temizle", aktif_filtre: "{{count}} aktif filtre", yes: "Evet", no: "Hayır", op_contains: "İçerir", op_equals: "Eşittir", op_not_equals: "Eşit Değil", op_starts_with: "Başlar", op_ends_with: "Biter", op_greater: "Büyüktür", op_less: "Küçüktür", op_greater_eq: "Büyük Eşit", op_less_eq: "Küçük Eşit", operator_sec: "Operatör seçin", secili: "Seçili" }, f = { ham_json: "Ham JSON", form_gorunumu: "Form Görünümü", formatla: "Formatla", gecersiz_json: "Geçersiz JSON formatı", kopyalandi: "Kopyalandı!", kopyala: "Kopyala", icerik: "JSON içeriği", duzenle: "Düzenle", goruntule: "Görüntüle" }, p = { bold: "Kalın", italic: "İtalik", strike: "Üstü çizili", h2: "Başlık 2", h3: "Başlık 3", bulletList: "Madde işaretli liste", orderedList: "Numaralı liste", link: "Bağlantı", unlink: "Bağlantıyı kaldır", blockquote: "Alıntı", code: "Kod", undo: "Geri al", redo: "Yinele", linkUrl: "https://…", linkApply: "Bağlantıyı uygula", linkCancel: "İptal", toolbar: "Biçimlendirme", editor: "Zengin metin editörü", linkInput: "Bağlantı adresi" }, h = { webglTitle: "WebGL kullanılamıyor", webglBody: "Bu harita yüzeyi render için WebGL gerektirir. Lütfen farklı bir tarayıcı deneyin veya yöneticinizle iletişime geçin.", layerControl: "Harita katmanları" }, b = { sifreyi_goster: "Şifreyi göster", sifreyi_gizle: "Şifreyi gizle", onceki_ay: "Önceki ay", sonraki_ay: "Sonraki ay", filtreyi_kaldir: "{{name}} filtresini kaldır", kopyala: "Kopyala", panel: "Panel", iletisim_kutusu: "İletişim kutusu", kaldir: "{{label}} seçimini kaldır", filtrele: "Seçenekleri filtrele", filtreler: "Filtreler", breadcrumb: "Yol haritası", pagination: "Sayfalama", detay_sayfasi: "Detay sayfası", filtreler_kenar: "Filtre kenar çubuğu", giris: "Giriş", rapor_kriterleri: "Rapor kriterleri" }, N = { lifecycle: { ACTIVE: "Aktif", INACTIVE: "Pasif", MAINTENANCE: "Bakımda", FAULTY: "Arızalı" }, power: { ON: "Enerjili", OFF: "Enerji Yok", UNKNOWN: "Bilinmiyor" }, disconnection: { ON: "Enerji Var", OFF: "Enerji Yok", UNKNOWN: "Bilinmiyor", OPENING: "Açılıyor", CLOSING: "Kapanıyor" } }, S = { hero: { live: "CANLI", fleetOnline: "AKTİF SAYAÇLAR", online: "aktif", vs1h: "vs 1s", fleet: { online: "AKTİF", offline: "PASİF", unknown: "ENERJİSİZ" }, readingSla24h: "OKUMA SLA · 24S", target: "hedef", activeOutages: "AKTİF KESİNTİLER", affectedMeters: "etkilenen sayaç", alarm: { crit: "KRİTİK", warn: "UYARI", viewDetails: "{{slug}} detaylarını görüntüle" }, tape: { ariaLabel: "Son sistem olayları" } } }, r = {
2
2
  common: o,
3
3
  table: s,
4
4
  form: d,
5
- dialog: u,
6
- theme: y,
5
+ dialog: y,
6
+ theme: u,
7
7
  date: c,
8
8
  pagination: m,
9
9
  empty: _,
@@ -11,36 +11,38 @@ const o = { ara: "Ara...", filtre: "Filtre", kaydet: "Kaydet", iptal: "İptal",
11
11
  filter: g,
12
12
  json_editor: f,
13
13
  rich_text_editor: p,
14
- aria: h,
15
- detail_status: b,
16
- dashboard: N
17
- }, S = { ara: "Search...", filtre: "Filter", kaydet: "Save", iptal: "Cancel", sil: "Delete", duzenle: "Edit", ekle: "Add", kapat: "Close", daha_fazla: "More", temizle: "Clear", tamam: "OK", geri: "Back", ileri: "Next", devam: "Continue", calistir: "Execute", onayla: "Confirm", gonder: "Send", yukle: "Upload", indir: "Download", kopyala: "Copy", kopyalandi: "Copied", yapistir: "Paste", sec: "Select", vazgec: "Cancel", detay: "Detail", detaya_git: "Go to Detail", yenile: "Refresh", disa_aktar: "Export", evet: "Yes", hayir: "No", tumu: "All", yok: "None", olustur: 'Create "{{value}}"' }, z = { sayfa: "Page", toplam: "Total", secili: "Selected", kayit_bulunamadi: "No records found", siralama: "Sort", filtrele: "Filter", tumunu_sec: "Select All", secimi_kaldir: "Deselect All", satirlar: "rows", sayfa_basina: "per page", eylemler: "Actions" }, E = { zorunlu_alan: "This field is required", gecersiz_deger: "Invalid value", min_karakter: "Must be at least {{min}} characters", max_karakter: "Must be at most {{max}} characters", email_gecersiz: "Please enter a valid email address", sayi_gecersiz: "Please enter a valid number" }, A = { emin_misiniz: "Are you sure?", bu_islem_geri_alinamaz: "This action cannot be undone.", onay: "Confirm", vazgec: "Cancel", silme_onay: "Are you sure you want to delete this record?", silme_baslik: "Delete Record", entity_silme_onay: "will be permanently deleted. This action cannot be undone." }, v = { karanlik_mod: "Dark Mode", aydinlik_mod: "Light Mode", tema_degistir: "Toggle Theme" }, F = { bugun: "Today", dun: "Yesterday", bu_hafta: "This Week", bu_ay: "This Month", gecen_ay: "Last Month", son_7_gun: "Last 7 Days", son_30_gun: "Last 30 Days", baslangic: "Start", bitis: "End", tarih_sec: "Select Date", saat: "Time" }, O = { onceki_sayfa: "Previous Page", sonraki_sayfa: "Next Page", previous_page: "Previous page", next_page: "Next page", sayfa_x_y: "Page {{current}} / {{total}}", kayit_gosteriliyor: "Showing {{from}}-{{to}} of {{total}} records", ilk_sayfa: "First Page", son_sayfa: "Last Page" }, T = { kayit_bulunamadi: "No records found", henuz_veri_yok: "No data yet", sonuc_bulunamadi: "No results matching your criteria" }, K = { basarili: "Success", hata: "Error", uyari: "Warning", bilgi: "Info", yukleniyor: "Loading...", kaydediliyor: "Saving...", siliniyor: "Deleting..." }, C = { filtre_uygula: "Apply Filter", filtreleri_temizle: "Clear Filters", aktif_filtre: "{{count}} active filter(s)", yes: "Yes", no: "No", op_contains: "Contains", op_equals: "Equals", op_not_equals: "Not Equals", op_starts_with: "Starts With", op_ends_with: "Ends With", op_greater: "Greater Than", op_less: "Less Than", op_greater_eq: "Greater or Equal", op_less_eq: "Less or Equal", operator_sec: "Select operator", secili: "Selected" }, B = { ham_json: "Raw JSON", form_gorunumu: "Form View", formatla: "Format", gecersiz_json: "Invalid JSON format", kopyalandi: "Copied!", kopyala: "Copy", icerik: "JSON content", duzenle: "Edit", goruntule: "View" }, L = { bold: "Bold", italic: "Italic", strike: "Strikethrough", h2: "Heading 2", h3: "Heading 3", bulletList: "Bullet list", orderedList: "Numbered list", link: "Link", unlink: "Remove link", blockquote: "Quote", code: "Code", undo: "Undo", redo: "Redo", linkUrl: "https://…", linkApply: "Apply link", linkCancel: "Cancel", toolbar: "Formatting", editor: "Rich text editor", linkInput: "Link URL" }, w = { sifreyi_goster: "Show password", sifreyi_gizle: "Hide password", onceki_ay: "Previous month", sonraki_ay: "Next month", filtreyi_kaldir: "Remove {{name}} filter", kopyala: "Copy", panel: "Panel", iletisim_kutusu: "Dialog", kaldir: "Remove {{label}}", filtrele: "Filter options", filtreler: "Filters", breadcrumb: "Breadcrumb", pagination: "Pagination", detay_sayfasi: "Detail page", filtreler_kenar: "Filter sidebar", giris: "Sign in", rapor_kriterleri: "Report criteria" }, D = { lifecycle: { ACTIVE: "Active", INACTIVE: "Inactive", MAINTENANCE: "Maintenance", FAULTY: "Faulty" }, power: { ON: "Energized", OFF: "No Energy", UNKNOWN: "Unknown" }, disconnection: { ON: "Power OK", OFF: "No Power", UNKNOWN: "Unknown", OPENING: "Opening", CLOSING: "Closing" } }, I = { hero: { live: "LIVE", fleetOnline: "FLEET ONLINE", online: "online", vs1h: "vs 1h", fleet: { online: "ONLINE", offline: "OFF", unknown: "UNK" }, readingSla24h: "READING SLA · 24h", target: "target", activeOutages: "ACTIVE OUTAGES", affectedMeters: "meters affected", alarm: { crit: "CRIT", warn: "WARN", viewDetails: "View {{slug}} details" }, tape: { ariaLabel: "Recent system events" } } }, l = {
18
- common: S,
19
- table: z,
20
- form: E,
14
+ map_shell: h,
15
+ aria: b,
16
+ detail_status: N,
17
+ dashboard: S
18
+ }, z = { ara: "Search...", filtre: "Filter", kaydet: "Save", iptal: "Cancel", sil: "Delete", duzenle: "Edit", ekle: "Add", kapat: "Close", daha_fazla: "More", temizle: "Clear", tamam: "OK", geri: "Back", ileri: "Next", devam: "Continue", calistir: "Execute", onayla: "Confirm", gonder: "Send", yukle: "Upload", indir: "Download", kopyala: "Copy", kopyalandi: "Copied", yapistir: "Paste", sec: "Select", vazgec: "Cancel", detay: "Detail", detaya_git: "Go to Detail", yenile: "Refresh", disa_aktar: "Export", evet: "Yes", hayir: "No", tumu: "All", yok: "None", olustur: 'Create "{{value}}"' }, E = { sayfa: "Page", toplam: "Total", secili: "Selected", kayit_bulunamadi: "No records found", siralama: "Sort", filtrele: "Filter", tumunu_sec: "Select All", secimi_kaldir: "Deselect All", satirlar: "rows", sayfa_basina: "per page", eylemler: "Actions" }, v = { zorunlu_alan: "This field is required", gecersiz_deger: "Invalid value", min_karakter: "Must be at least {{min}} characters", max_karakter: "Must be at most {{max}} characters", email_gecersiz: "Please enter a valid email address", sayi_gecersiz: "Please enter a valid number" }, A = { emin_misiniz: "Are you sure?", bu_islem_geri_alinamaz: "This action cannot be undone.", onay: "Confirm", vazgec: "Cancel", silme_onay: "Are you sure you want to delete this record?", silme_baslik: "Delete Record", entity_silme_onay: "will be permanently deleted. This action cannot be undone." }, T = { karanlik_mod: "Dark Mode", aydinlik_mod: "Light Mode", tema_degistir: "Toggle Theme" }, F = { bugun: "Today", dun: "Yesterday", bu_hafta: "This Week", bu_ay: "This Month", gecen_ay: "Last Month", son_7_gun: "Last 7 Days", son_30_gun: "Last 30 Days", baslangic: "Start", bitis: "End", tarih_sec: "Select Date", saat: "Time" }, O = { onceki_sayfa: "Previous Page", sonraki_sayfa: "Next Page", previous_page: "Previous page", next_page: "Next page", sayfa_x_y: "Page {{current}} / {{total}}", kayit_gosteriliyor: "Showing {{from}}-{{to}} of {{total}} records", ilk_sayfa: "First Page", son_sayfa: "Last Page" }, L = { kayit_bulunamadi: "No records found", henuz_veri_yok: "No data yet", sonuc_bulunamadi: "No results matching your criteria" }, w = { basarili: "Success", hata: "Error", uyari: "Warning", bilgi: "Info", yukleniyor: "Loading...", kaydediliyor: "Saving...", siliniyor: "Deleting..." }, B = { filtre_uygula: "Apply Filter", filtreleri_temizle: "Clear Filters", aktif_filtre: "{{count}} active filter(s)", yes: "Yes", no: "No", op_contains: "Contains", op_equals: "Equals", op_not_equals: "Not Equals", op_starts_with: "Starts With", op_ends_with: "Ends With", op_greater: "Greater Than", op_less: "Less Than", op_greater_eq: "Greater or Equal", op_less_eq: "Less or Equal", operator_sec: "Select operator", secili: "Selected" }, C = { ham_json: "Raw JSON", form_gorunumu: "Form View", formatla: "Format", gecersiz_json: "Invalid JSON format", kopyalandi: "Copied!", kopyala: "Copy", icerik: "JSON content", duzenle: "Edit", goruntule: "View" }, K = { bold: "Bold", italic: "Italic", strike: "Strikethrough", h2: "Heading 2", h3: "Heading 3", bulletList: "Bullet list", orderedList: "Numbered list", link: "Link", unlink: "Remove link", blockquote: "Quote", code: "Code", undo: "Undo", redo: "Redo", linkUrl: "https://…", linkApply: "Apply link", linkCancel: "Cancel", toolbar: "Formatting", editor: "Rich text editor", linkInput: "Link URL" }, D = { webglTitle: "WebGL is not available", webglBody: "This map surface needs WebGL to render. Please try a different browser or contact your administrator.", layerControl: "Map layers" }, G = { sifreyi_goster: "Show password", sifreyi_gizle: "Hide password", onceki_ay: "Previous month", sonraki_ay: "Next month", filtreyi_kaldir: "Remove {{name}} filter", kopyala: "Copy", panel: "Panel", iletisim_kutusu: "Dialog", kaldir: "Remove {{label}}", filtrele: "Filter options", filtreler: "Filters", breadcrumb: "Breadcrumb", pagination: "Pagination", detay_sayfasi: "Detail page", filtreler_kenar: "Filter sidebar", giris: "Sign in", rapor_kriterleri: "Report criteria" }, I = { lifecycle: { ACTIVE: "Active", INACTIVE: "Inactive", MAINTENANCE: "Maintenance", FAULTY: "Faulty" }, power: { ON: "Energized", OFF: "No Energy", UNKNOWN: "Unknown" }, disconnection: { ON: "Power OK", OFF: "No Power", UNKNOWN: "Unknown", OPENING: "Opening", CLOSING: "Closing" } }, R = { hero: { live: "LIVE", fleetOnline: "FLEET ONLINE", online: "online", vs1h: "vs 1h", fleet: { online: "ONLINE", offline: "OFF", unknown: "UNK" }, readingSla24h: "READING SLA · 24h", target: "target", activeOutages: "ACTIVE OUTAGES", affectedMeters: "meters affected", alarm: { crit: "CRIT", warn: "WARN", viewDetails: "View {{slug}} details" }, tape: { ariaLabel: "Recent system events" } } }, l = {
19
+ common: z,
20
+ table: E,
21
+ form: v,
21
22
  dialog: A,
22
- theme: v,
23
+ theme: T,
23
24
  date: F,
24
25
  pagination: O,
25
- empty: T,
26
- status: K,
27
- filter: C,
28
- json_editor: B,
29
- rich_text_editor: L,
30
- aria: w,
31
- detail_status: D,
32
- dashboard: I
33
- }, R = {
26
+ empty: L,
27
+ status: w,
28
+ filter: B,
29
+ json_editor: C,
30
+ rich_text_editor: K,
31
+ map_shell: D,
32
+ aria: G,
33
+ detail_status: I,
34
+ dashboard: R
35
+ }, P = {
34
36
  tr: { common: r },
35
37
  en: { common: l }
36
38
  };
37
- function G(e, n = {}) {
39
+ function U(e, n = {}) {
38
40
  const { namespace: a = "common", overwrite: i = !1, deep: t = !0 } = n;
39
41
  return e.addResourceBundle("tr", a, r, t, i), e.addResourceBundle("en", a, l, t, i), e;
40
42
  }
41
43
  export {
42
44
  l as e,
43
- G as r,
45
+ U as r,
44
46
  r as t,
45
- R as u
47
+ P as u
46
48
  };