@nar-bus/ui-kit 1.8.1 → 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.
Files changed (44) hide show
  1. package/dist/Button-DsTGnChX.js +3222 -0
  2. package/dist/atoms/Badge.d.ts +1 -1
  3. package/dist/atoms/Badge.d.ts.map +1 -1
  4. package/dist/atoms/RadioGroup.d.ts +2 -0
  5. package/dist/atoms/RadioGroup.d.ts.map +1 -1
  6. package/dist/atoms/Tooltip.d.ts.map +1 -1
  7. package/dist/i18n/en.json.d.ts +28 -0
  8. package/dist/i18n/resources.d.ts +56 -0
  9. package/dist/i18n/resources.d.ts.map +1 -1
  10. package/dist/i18n/resources.js +1 -1
  11. package/dist/i18n/tr.json.d.ts +28 -0
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +3384 -5844
  15. package/dist/map.d.ts +7 -0
  16. package/dist/map.d.ts.map +1 -0
  17. package/dist/map.js +174 -0
  18. package/dist/organisms/DataTable.d.ts +18 -1
  19. package/dist/organisms/DataTable.d.ts.map +1 -1
  20. package/dist/organisms/FilterPanel.d.ts +4 -1
  21. package/dist/organisms/FilterPanel.d.ts.map +1 -1
  22. package/dist/organisms/GlobalSearch.d.ts +61 -0
  23. package/dist/organisms/GlobalSearch.d.ts.map +1 -0
  24. package/dist/organisms/MapLayerControl.d.ts +33 -0
  25. package/dist/organisms/MapLayerControl.d.ts.map +1 -0
  26. package/dist/organisms/MapLegend.d.ts +25 -0
  27. package/dist/organisms/MapLegend.d.ts.map +1 -0
  28. package/dist/organisms/MapShell.d.ts +64 -0
  29. package/dist/organisms/MapShell.d.ts.map +1 -0
  30. package/dist/organisms/RichTextEditor.d.ts +35 -0
  31. package/dist/organisms/RichTextEditor.d.ts.map +1 -0
  32. package/dist/organisms/RichTextToolbar.d.ts +12 -0
  33. package/dist/organisms/RichTextToolbar.d.ts.map +1 -0
  34. package/dist/organisms/index.d.ts +2 -0
  35. package/dist/organisms/index.d.ts.map +1 -1
  36. package/dist/resources-DnPSGheR.js +48 -0
  37. package/dist/templates/ListPageLayout.d.ts +17 -1
  38. package/dist/templates/ListPageLayout.d.ts.map +1 -1
  39. package/dist/theme.css +1 -1
  40. package/dist/ui-kit.css +1 -1
  41. package/dist/utils/tooltipPosition.d.ts +51 -0
  42. package/dist/utils/tooltipPosition.d.ts.map +1 -0
  43. package/package.json +19 -3
  44. package/dist/resources-BLEM3J7E.js +0 -44
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
+ };
@@ -5,10 +5,21 @@ import { RowAction } from './DataTable/RowActionsCell';
5
5
  export type { RowAction } from './DataTable/RowActionsCell';
6
6
  export { DataTableColumnHeader, type DataTableColumnHeaderProps } from './DataTable/DataTableColumnHeader';
7
7
  export interface BulkAction {
8
+ /** Optional stable id; falls back to `label` for the React key and separator logic. */
9
+ id?: string;
8
10
  label: string;
9
11
  icon?: LucideIcon;
10
12
  onClick: (selectedIds: string[]) => void;
13
+ /** @deprecated Prefer `variant: "destructive"`. Still honored for back-compat. */
11
14
  destructive?: boolean;
15
+ /** Button emphasis in the bulk bar. `"default"` resolves to the current outline look. */
16
+ variant?: "default" | "primary" | "destructive";
17
+ /** Disable this action, optionally derived from the current selection. */
18
+ disabled?: boolean | ((selectedIds: string[]) => boolean);
19
+ /** Hide this action, optionally derived from the current selection. */
20
+ hidden?: boolean | ((selectedIds: string[]) => boolean);
21
+ /** Render a divider before this action — visual grouping (mirrors `RowAction.separator`). */
22
+ separator?: boolean;
12
23
  }
13
24
  /** Server-pagination summary — alternative to the flat `page`/`pageSize`/`total`
14
25
  * props below; pass whichever shape your API already returns. When both are
@@ -78,6 +89,12 @@ export interface DataTableProps<TData> {
78
89
  toolbarEnd?: ReactNode;
79
90
  /** Tints the toolbar bar — no-op unless `toolbarStart`/`toolbarEnd` is set. */
80
91
  toolbarVariant?: ToolbarVariant;
92
+ /** Custom renderer for the "N selected" count label in the bulk bar.
93
+ * Receives the selected row count; defaults to the i18n `table.secili: N`. */
94
+ bulkActionsLabel?: (count: number) => ReactNode;
95
+ /** Arbitrary content injected into the bulk bar, before the action buttons.
96
+ * Receives the current selected ids. Mirrors the `toolbarStart`/`toolbarEnd` slot pattern. */
97
+ bulkActionsContent?: ReactNode | ((selectedIds: string[]) => ReactNode);
81
98
  }
82
- export declare function DataTable<TData>({ columns, data, loading, emptyTitle, emptyDescription, emptyAction, enableSorting, enableSelection, enableVirtualScroll, onRowClick, bulkActions, sorting, onSortingChange, sortBy, sortDirection, onSortChange, rowSelection, onRowSelectionChange, page, pageSize, total, pagination, onPageChange, onPageSizeChange, stickyHeader, getRowId, getRowAriaLabel, className, caption, density, rowActions, toolbarStart, toolbarEnd, toolbarVariant, }: DataTableProps<TData>): import("react").JSX.Element;
99
+ export declare function DataTable<TData>({ columns, data, loading, emptyTitle, emptyDescription, emptyAction, enableSorting, enableSelection, enableVirtualScroll, onRowClick, bulkActions, sorting, onSortingChange, sortBy, sortDirection, onSortChange, rowSelection, onRowSelectionChange, page, pageSize, total, pagination, onPageChange, onPageSizeChange, stickyHeader, getRowId, getRowAriaLabel, className, caption, density, rowActions, toolbarStart, toolbarEnd, toolbarVariant, bulkActionsLabel, bulkActionsContent, }: DataTableProps<TData>): import("react").JSX.Element;
83
100
  //# sourceMappingURL=DataTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/organisms/DataTable.tsx"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5E,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAU/C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5E,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAM3G,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;4CAE4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;+EAC+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEtE;;uBAEuB;AACvB,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,eAAe,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAC3C;;+CAE2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IACvE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,oBAAoB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC;IAClC;uEACmE;IACnE,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,+DAA+D;IAC/D,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IAChC,iFAAiF;IACjF,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AA2DD,wBAAgB,SAAS,CAAC,KAAK,EAAE,EAC/B,OAAO,EACP,IAAI,EACJ,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,aAAoB,EACpB,eAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,OAAO,EACP,eAAe,EACf,MAAM,EACN,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,UAAU,EACV,cAAc,GACf,EAAE,cAAc,CAAC,KAAK,CAAC,+BA8TvB"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/organisms/DataTable.tsx"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAU/C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5E,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAM3G,MAAM,WAAW,UAAU;IACzB,uFAAuF;IACvF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzC,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;IAChD,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC;IAC1D,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC;IACxD,6FAA6F;IAC7F,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;4CAE4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;+EAC+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEtE;;uBAEuB;AACvB,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,eAAe,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAC3C;;+CAE2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IACvE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,oBAAoB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC;IAClC;uEACmE;IACnE,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,+DAA+D;IAC/D,UAAU,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IAChC,iFAAiF;IACjF,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;mFAC+E;IAC/E,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAChD;mGAC+F;IAC/F,kBAAkB,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,SAAS,CAAC,CAAC;CACzE;AA2DD,wBAAgB,SAAS,CAAC,KAAK,EAAE,EAC/B,OAAO,EACP,IAAI,EACJ,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,aAAoB,EACpB,eAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,OAAO,EACP,eAAe,EACf,MAAM,EACN,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,EAAE,cAAc,CAAC,KAAK,CAAC,+BAyWvB"}
@@ -1,9 +1,12 @@
1
1
  import { SelectOption } from '../atoms/Select';
2
- export type FilterFieldType = "text" | "select" | "date" | "number";
2
+ export type FilterFieldType = "text" | "select" | "date" | "number" | "boolean";
3
3
  export interface FilterField {
4
4
  key: string;
5
5
  label: string;
6
6
  type: FilterFieldType;
7
+ /** Options for `type: "select"`. Also honored for `type: "boolean"` to override
8
+ * the default Yes/No labels — pass exactly two options with values
9
+ * `"true"` / `"false"` (e.g. Enabled/Disabled). Omit for the i18n Yes/No default. */
7
10
  options?: SelectOption[];
8
11
  /** For `type: "select"` — render a searchable (type-to-filter) dropdown.
9
12
  * Forwarded to the underlying `Select`; ignored for other field types. */
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPanel.d.ts","sourceRoot":"","sources":["../../src/organisms/FilterPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAqB5D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;+EAC2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAwJD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC/C;;;oEAGgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EAAE,cAAc,EACtB,OAAO,EACP,OAAO,EACP,OAAO,EACP,aAAa,EACb,aAAoB,GACrB,EAAE,gBAAgB,+BA+IlB"}
1
+ {"version":3,"file":"FilterPanel.d.ts","sourceRoot":"","sources":["../../src/organisms/FilterPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAsB5D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB;;0FAEsF;IACtF,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;+EAC2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AA8JD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC/C;;;oEAGgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EAAE,cAAc,EACtB,OAAO,EACP,OAAO,EACP,OAAO,EACP,aAAa,EACb,aAAoB,GACrB,EAAE,gBAAgB,+BA+JlB"}
@@ -0,0 +1,61 @@
1
+ import { ReactNode } from 'react';
2
+ /** A single, domain-free search result. Consumers build these from whatever
3
+ * their API/hook returns — the package never fetches. */
4
+ export interface GlobalSearchItem {
5
+ /** Stable key + focused-row identity. */
6
+ id: string;
7
+ /** Primary text (ReactNode so a consumer can pre-format / pre-highlight). */
8
+ label: ReactNode;
9
+ /** Optional group key (e.g. entity type / category). Absent → flat list. */
10
+ group?: string;
11
+ /** Optional leading icon — a rendered element (consumer may derive it from a type). */
12
+ icon?: ReactNode;
13
+ /** Optional trailing/secondary text. */
14
+ secondary?: ReactNode;
15
+ /** Optional navigation target. Metadata only — does NOT replace `onSelect`. */
16
+ href?: string;
17
+ /** When true the row is dimmed and not selectable (click or Enter). */
18
+ disabled?: boolean;
19
+ /** Escape hatch: the original domain object, handed back via `onSelect`. */
20
+ data?: unknown;
21
+ }
22
+ export interface GlobalSearchProps {
23
+ /** Flat, pre-fetched, pre-ordered results. Grouping is expressed via `item.group`. */
24
+ items: GlobalSearchItem[];
25
+ /** Single source of truth for selection — called on click and on Enter. */
26
+ onSelect: (item: GlobalSearchItem) => void;
27
+ /** Controlled query value. The consumer owns fetching + debounce. */
28
+ value: string;
29
+ onValueChange: (value: string) => void;
30
+ /** Group key → header content. Omit for no group headers. */
31
+ getGroupLabel?: (group: string) => ReactNode;
32
+ /** Fixed group ordering; groups not listed follow in insertion order. Omit → insertion order. */
33
+ groupOrder?: string[];
34
+ /** Single spinner at the bottom of the dropdown. */
35
+ isLoading?: boolean;
36
+ /** Per-group spinner, keyed by group. */
37
+ groupLoading?: Record<string, boolean>;
38
+ /** Rendered when there are no items and `showEmpty` is true. */
39
+ emptyState?: ReactNode;
40
+ showEmpty?: boolean;
41
+ /** Optional footer row (e.g. a keyboard hint). */
42
+ footer?: ReactNode;
43
+ /** When set, plain-string labels get their matching substring wrapped in `<mark>`. */
44
+ highlightQuery?: string;
45
+ /** ArrowUp/Down wrap around (true) vs clamp at the ends (false, default). */
46
+ keyboardWrap?: boolean;
47
+ /** Enable the ⌘K / Ctrl+K global focus shortcut (default true). */
48
+ enableGlobalShortcut?: boolean;
49
+ placeholder?: string;
50
+ inputSize?: "sm" | "md" | "lg";
51
+ /** Minimum dropdown width in px (default 400). */
52
+ dropdownMinWidth?: number;
53
+ /** Gap in px between the input and the dropdown (default 4). */
54
+ gap?: number;
55
+ className?: string;
56
+ }
57
+ export declare function GlobalSearch({ items, onSelect, value, onValueChange, getGroupLabel, groupOrder, isLoading, groupLoading, emptyState, showEmpty, footer, highlightQuery, keyboardWrap, enableGlobalShortcut, placeholder, inputSize, dropdownMinWidth, gap, className, }: GlobalSearchProps): import("react").JSX.Element;
58
+ export declare namespace GlobalSearch {
59
+ var displayName: string;
60
+ }
61
+ //# sourceMappingURL=GlobalSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalSearch.d.ts","sourceRoot":"","sources":["../../src/organisms/GlobalSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAUf;0DAC0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,KAAK,EAAE,SAAS,CAAC;IACjB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAQD,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,6DAA6D;IAC7D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC7C,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,gEAAgE;IAChE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,sFAAsF;IACtF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/B,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0BD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,SAAiB,EACjB,YAAY,EACZ,UAAU,EACV,SAAiB,EACjB,MAAM,EACN,cAAc,EACd,YAAoB,EACpB,oBAA2B,EAC3B,WAAW,EACX,SAAgB,EAChB,gBAAoC,EACpC,GAAiB,EACjB,SAAS,GACV,EAAE,iBAAiB,+BA8UnB;yBAlWe,YAAY"}
@@ -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"}
@@ -0,0 +1,35 @@
1
+ import { Extension } from '@tiptap/react';
2
+ export type RichTextToolbarControl = "bold" | "italic" | "strike" | "h2" | "h3" | "bulletList" | "orderedList" | "link" | "blockquote" | "code" | "undo" | "redo" | "divider";
3
+ export interface RichTextEditorProps {
4
+ /** Controlled HTML string. */
5
+ value: string;
6
+ /** Fires with the editor's HTML on every edit. */
7
+ onChange: (html: string) => void;
8
+ /** Placeholder shown while the document is empty (@tiptap/extension-placeholder). */
9
+ placeholder?: string;
10
+ /** Renders the content non-editable (real `editable:false`, not a preview clone). */
11
+ readOnly?: boolean;
12
+ /** Disables editing + all toolbar controls, dimmed. */
13
+ disabled?: boolean;
14
+ autoFocus?: boolean;
15
+ /** Min height of the editable area. Default `"160px"`. */
16
+ minHeight?: string;
17
+ id?: string;
18
+ /** Accessible name for the editable region. */
19
+ ariaLabel?: string;
20
+ /** Error text rendered under the editor (token-styled). */
21
+ error?: string;
22
+ className?: string;
23
+ /** Ordered toolbar controls, or `false` for no toolbar. Defaults to the standard set. */
24
+ toolbar?: RichTextToolbarControl[] | false;
25
+ /** Extra TipTap extensions appended after the built-ins. */
26
+ extensions?: Extension[];
27
+ /** Options forwarded to `StarterKit.configure`. */
28
+ starterKitOptions?: Record<string, unknown>;
29
+ /** Options forwarded to `Link.configure` (default `{ openOnClick: false }`). */
30
+ linkOptions?: Record<string, unknown>;
31
+ /** aria-label / tooltip overrides per toolbar control. */
32
+ labels?: Partial<Record<RichTextToolbarControl, string>>;
33
+ }
34
+ export declare function RichTextEditor({ value, onChange, placeholder, readOnly, disabled, autoFocus, minHeight, id, ariaLabel, error, className, toolbar, extensions, starterKitOptions, linkOptions, labels, }: RichTextEditorProps): import("react").JSX.Element;
35
+ //# sourceMappingURL=RichTextEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextEditor.d.ts","sourceRoot":"","sources":["../../src/organisms/RichTextEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAMzE,OAAO,wBAAwB,CAAC;AAEhC,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,IAAI,GACJ,IAAI,GACJ,YAAY,GACZ,aAAa,GACb,MAAM,GACN,YAAY,GACZ,MAAM,GACN,MAAM,GACN,MAAM,GACN,SAAS,CAAC;AAcd,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,OAAO,CAAC,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAC;IAC3C,4DAA4D;IAC5D,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1D;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAgB,EAChB,QAAgB,EAChB,SAAiB,EACjB,SAAmB,EACnB,EAAE,EACF,SAAS,EACT,KAAK,EACL,SAAS,EACT,OAAyB,EACzB,UAAe,EACf,iBAAiB,EACjB,WAAW,EACX,MAAM,GACP,EAAE,mBAAmB,+BA4ErB"}
@@ -0,0 +1,12 @@
1
+ import { Editor } from '@tiptap/react';
2
+ import { RichTextToolbarControl } from './RichTextEditor';
3
+ export interface RichTextToolbarProps {
4
+ editor: Editor | null;
5
+ /** Ordered controls to render. `"divider"` renders a vertical separator. */
6
+ toolbar: RichTextToolbarControl[];
7
+ /** aria-label / tooltip overrides per control; falls back to the `rich_text_editor.*` i18n bundle. */
8
+ labels?: Partial<Record<RichTextToolbarControl, string>>;
9
+ disabled?: boolean;
10
+ }
11
+ export declare function RichTextToolbar({ editor, toolbar, labels, disabled }: RichTextToolbarProps): import("react").JSX.Element | null;
12
+ //# sourceMappingURL=RichTextToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextToolbar.d.ts","sourceRoot":"","sources":["../../src/organisms/RichTextToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAqB5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4EAA4E;IAC5E,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,sGAAsG;IACtG,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,sCAyI1F"}
@@ -4,12 +4,14 @@ export { Tabs, type TabsProps, type TabItem } from './Tabs';
4
4
  export { UnifiedTabs, UnifiedTabPanel, type UnifiedTabsProps, type UnifiedTabItem, type UnifiedTabPanelProps } from './UnifiedTabs';
5
5
  export { ToastProvider, toast } from './Toast';
6
6
  export { Popover, type PopoverProps } from './Popover';
7
+ export { GlobalSearch, type GlobalSearchProps, type GlobalSearchItem } from './GlobalSearch';
7
8
  export { Breadcrumb, type BreadcrumbProps, type BreadcrumbItem } from './Breadcrumb';
8
9
  export { Pagination, type PaginationProps } from './Pagination';
9
10
  export { DataTable, DataTableColumnHeader, type DataTableProps, type DataTableColumnHeaderProps, type BulkAction, type PaginationInfo, type RowAction, type DataTableDensity, type ToolbarVariant } from './DataTable';
10
11
  export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, type TableProps, type TableHeaderProps, type TableBodyProps, type TableFooterProps, type TableRowProps, type TableHeadProps, type TableCellProps, type TableCaptionProps, } from './Table';
11
12
  export { FilterPanel, type FilterPanelProps, type FilterField, type FilterValue, type FilterFieldType } from './FilterPanel';
12
13
  export { JsonEditor, type JsonEditorProps } from './JsonEditor';
14
+ export { RichTextEditor, type RichTextEditorProps, type RichTextToolbarControl, } from './RichTextEditor';
13
15
  export { JsonViewer, type JsonViewerProps } from './JsonViewer';
14
16
  export { PageHeader, type PageHeaderProps } from './PageHeader';
15
17
  export { Stepper, type StepperProps, type StepperStep, type StepperStatus } from './Stepper';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/organisms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACpI,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,KAAK,0BAA0B,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACvN,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7H,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,OAAO,EACP,eAAe,EACf,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/organisms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACpI,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,KAAK,0BAA0B,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACvN,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7H,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,OAAO,EACP,eAAe,EACf,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,48 @@
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
+ common: o,
3
+ table: s,
4
+ form: d,
5
+ dialog: y,
6
+ theme: u,
7
+ date: c,
8
+ pagination: m,
9
+ empty: _,
10
+ status: k,
11
+ filter: g,
12
+ json_editor: f,
13
+ rich_text_editor: p,
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,
22
+ dialog: A,
23
+ theme: T,
24
+ date: F,
25
+ pagination: O,
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 = {
36
+ tr: { common: r },
37
+ en: { common: l }
38
+ };
39
+ function U(e, n = {}) {
40
+ const { namespace: a = "common", overwrite: i = !1, deep: t = !0 } = n;
41
+ return e.addResourceBundle("tr", a, r, t, i), e.addResourceBundle("en", a, l, t, i), e;
42
+ }
43
+ export {
44
+ l as e,
45
+ U as r,
46
+ r as t,
47
+ P as u
48
+ };