@nar-bus/ui-shared 1.22.0 → 2.1.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 (113) hide show
  1. package/dist/adapters/api-adapter.d.ts +5 -5
  2. package/dist/adapters/api-adapter.d.ts.map +1 -1
  3. package/dist/adapters/index.d.ts +1 -1
  4. package/dist/adapters/index.d.ts.map +1 -1
  5. package/dist/adapters/real-adapter.d.ts +5 -5
  6. package/dist/adapters/real-adapter.d.ts.map +1 -1
  7. package/dist/adapters/traceId.d.ts +24 -0
  8. package/dist/adapters/traceId.d.ts.map +1 -0
  9. package/dist/adapters/types.d.ts +41 -0
  10. package/dist/adapters/types.d.ts.map +1 -1
  11. package/dist/api/apiClient.d.ts +22 -5
  12. package/dist/api/apiClient.d.ts.map +1 -1
  13. package/dist/api/queryKeys.d.ts +12 -0
  14. package/dist/api/queryKeys.d.ts.map +1 -1
  15. package/dist/api/searchRequest.d.ts +1 -1
  16. package/dist/components/CronBuilder.d.ts +28 -1
  17. package/dist/components/CronBuilder.d.ts.map +1 -1
  18. package/dist/components/MeterStatusBadge.d.ts.map +1 -1
  19. package/dist/components/OrderCreateSheet.d.ts +96 -1
  20. package/dist/components/OrderCreateSheet.d.ts.map +1 -1
  21. package/dist/components/OrderDetailSheet.d.ts +15 -1
  22. package/dist/components/OrderDetailSheet.d.ts.map +1 -1
  23. package/dist/components/detail-layout/ReadingHeatmap.d.ts +20 -2
  24. package/dist/components/detail-layout/ReadingHeatmap.d.ts.map +1 -1
  25. package/dist/components/detail-layout/TriColumnSymmetric.d.ts +16 -1
  26. package/dist/components/detail-layout/TriColumnSymmetric.d.ts.map +1 -1
  27. package/dist/components/detail-layout/adapters.d.ts.map +1 -1
  28. package/dist/components/detail-layout/types.d.ts +46 -18
  29. package/dist/components/detail-layout/types.d.ts.map +1 -1
  30. package/dist/components/export/ExportButton.d.ts +47 -0
  31. package/dist/components/export/ExportButton.d.ts.map +1 -0
  32. package/dist/components/export/ExportHistoryTable.d.ts +38 -0
  33. package/dist/components/export/ExportHistoryTable.d.ts.map +1 -0
  34. package/dist/components/export/ExportJobStatusBadge.d.ts +10 -0
  35. package/dist/components/export/ExportJobStatusBadge.d.ts.map +1 -0
  36. package/dist/components/export/exportJobApi.d.ts +54 -0
  37. package/dist/components/export/exportJobApi.d.ts.map +1 -0
  38. package/dist/components/export/exportJobFormat.d.ts +19 -0
  39. package/dist/components/export/exportJobFormat.d.ts.map +1 -0
  40. package/dist/components/export/exportJobText.d.ts +26 -0
  41. package/dist/components/export/exportJobText.d.ts.map +1 -0
  42. package/dist/components/export/index.d.ts +11 -0
  43. package/dist/components/export/index.d.ts.map +1 -0
  44. package/dist/components/export/useExportJob.d.ts +71 -0
  45. package/dist/components/export/useExportJob.d.ts.map +1 -0
  46. package/dist/components/form-sheet/FormSheet.d.ts +1 -1
  47. package/dist/components/form-sheet/ReadonlySheet.d.ts +1 -1
  48. package/dist/components/hourly-month-grid/HourStrip.d.ts.map +1 -1
  49. package/dist/components/hourly-month-grid/HourlyGridLegend.d.ts +4 -2
  50. package/dist/components/hourly-month-grid/HourlyGridLegend.d.ts.map +1 -1
  51. package/dist/components/hourly-month-grid/HourlyMonthGrid.d.ts +45 -0
  52. package/dist/components/hourly-month-grid/HourlyMonthGrid.d.ts.map +1 -1
  53. package/dist/components/hourly-month-grid/index.d.ts +1 -1
  54. package/dist/components/hourly-month-grid/index.d.ts.map +1 -1
  55. package/dist/components/index.d.ts +4 -4
  56. package/dist/components/index.d.ts.map +1 -1
  57. package/dist/components/order-forms/AstroConfigForm.d.ts.map +1 -1
  58. package/dist/components/order-forms/DirectiveForms.d.ts +15 -2
  59. package/dist/components/order-forms/DirectiveForms.d.ts.map +1 -1
  60. package/dist/components/order-forms/FirmwareUpdateForm.d.ts +10 -2
  61. package/dist/components/order-forms/FirmwareUpdateForm.d.ts.map +1 -1
  62. package/dist/components/order-forms/modemDetailQuery.d.ts +17 -0
  63. package/dist/components/order-forms/modemDetailQuery.d.ts.map +1 -0
  64. package/dist/hooks/index.d.ts +1 -1
  65. package/dist/hooks/index.d.ts.map +1 -1
  66. package/dist/hooks/useEnumValues.d.ts +66 -1
  67. package/dist/hooks/useEnumValues.d.ts.map +1 -1
  68. package/dist/index.css +1 -1
  69. package/dist/index.d.ts +14 -7
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +17563 -16427
  72. package/dist/mocks/periodic-jobs.json.d.ts +5 -5
  73. package/dist/types/audit.types.d.ts +27 -0
  74. package/dist/types/audit.types.d.ts.map +1 -0
  75. package/dist/types/auth.types.d.ts +98 -9
  76. package/dist/types/auth.types.d.ts.map +1 -1
  77. package/dist/types/brand-model.types.d.ts +25 -1
  78. package/dist/types/brand-model.types.d.ts.map +1 -1
  79. package/dist/types/calendar.types.d.ts +3 -0
  80. package/dist/types/calendar.types.d.ts.map +1 -1
  81. package/dist/types/directive.types.d.ts +3 -0
  82. package/dist/types/directive.types.d.ts.map +1 -1
  83. package/dist/types/exportJob.types.d.ts +115 -0
  84. package/dist/types/exportJob.types.d.ts.map +1 -0
  85. package/dist/types/firmware.types.d.ts +16 -1
  86. package/dist/types/firmware.types.d.ts.map +1 -1
  87. package/dist/types/index.d.ts +6 -4
  88. package/dist/types/index.d.ts.map +1 -1
  89. package/dist/types/location.types.d.ts +21 -1
  90. package/dist/types/location.types.d.ts.map +1 -1
  91. package/dist/types/management.types.d.ts +165 -9
  92. package/dist/types/management.types.d.ts.map +1 -1
  93. package/dist/types/meter.types.d.ts +122 -1
  94. package/dist/types/meter.types.d.ts.map +1 -1
  95. package/dist/types/modem.types.d.ts +67 -3
  96. package/dist/types/modem.types.d.ts.map +1 -1
  97. package/dist/types/order.types.d.ts +15 -0
  98. package/dist/types/order.types.d.ts.map +1 -1
  99. package/dist/types/parser-template.types.d.ts +9 -2
  100. package/dist/types/parser-template.types.d.ts.map +1 -1
  101. package/dist/types/protocol.types.d.ts +3 -0
  102. package/dist/types/protocol.types.d.ts.map +1 -1
  103. package/dist/types/reading-setting.types.d.ts +3 -0
  104. package/dist/types/reading-setting.types.d.ts.map +1 -1
  105. package/dist/types/server-config.types.d.ts +7 -0
  106. package/dist/types/server-config.types.d.ts.map +1 -1
  107. package/dist/types/simcard.types.d.ts +3 -0
  108. package/dist/types/simcard.types.d.ts.map +1 -1
  109. package/dist/utils/activeLocale.d.ts +1 -2
  110. package/dist/utils/activeLocale.d.ts.map +1 -1
  111. package/dist/utils/orderReason.d.ts +50 -0
  112. package/dist/utils/orderReason.d.ts.map +1 -0
  113. package/package.json +3 -3
@@ -1,19 +1,4 @@
1
- /**
2
- * STORY-222 / D-230 / AD-DETAIL-5
3
- *
4
- * Type contract underpinning the shared detail-layout component family.
5
- *
6
- * `DetailEntity` is a **discriminated union** on `kind` ("modem" | "meter").
7
- * The compiler narrows to the per-kind variant inside `if (entity.kind === ...)`
8
- * branches, so consumers can access modem-only fields (`firmware`, `protocol`,
9
- * `signalStrength`, `meterCount`) or meter-only fields (`meterType`, `modemSlug`)
10
- * without optional chaining and without accidentally reaching across kinds.
11
- *
12
- * Mock builders + entity literals + the deterministic PRNG live under
13
- * `ui/lena-ui-kit/src/_preview/DetailLayout/mockData.ts` (preview-only Storybook
14
- * fixtures). The production adapter contract lives in `./adapters.ts` and is
15
- * wired against real `ModemDetail` / `MeterDetail` hook output by STORY-223.
16
- */
1
+ import { ActiveOrdersByPriority, ModemOrderSuitability } from '../../types';
17
2
  export type DayStatus = "ok" | "warn" | "crit" | "noData";
18
3
  export interface ReadingDay {
19
4
  /** ISO yyyy-mm-dd. */
@@ -32,6 +17,17 @@ export interface AlarmEntry {
32
17
  /** ISO datetime. */
33
18
  at: string;
34
19
  }
20
+ /**
21
+ * NB-DETAIL-LIFECYCLE-01 — header lifecycle value. The four canonical values
22
+ * keep their coarse fold (and tone); any other backend code (`SCRAPPED`, a
23
+ * status added later, …) travels VERBATIM instead of being folded into
24
+ * `INACTIVE` ("Pasif"). The badge reads `detail_status.lifecycle.<code>` and
25
+ * falls back to the raw code with a neutral tone. `(string & {})` keeps the
26
+ * four literals visible to autocomplete.
27
+ */
28
+ export type DetailLifecycle = "ACTIVE" | "INACTIVE" | "MAINTENANCE" | "FAULTY" | (string & {});
29
+ /** NB-DETAIL-LIFECYCLE-01 — consumer-chosen tone for the lifecycle badge. */
30
+ export type DetailLifecycleTone = "ok" | "warn" | "crit" | "muted";
35
31
  interface DetailEntityBase {
36
32
  slug: string;
37
33
  serial: string;
@@ -42,8 +38,16 @@ interface DetailEntityBase {
42
38
  district: string;
43
39
  };
44
40
  tags: string[];
41
+ /**
42
+ * NB-DETAIL-LIFECYCLE-01 — overrides the lifecycle badge text (already
43
+ * translated). Omitted → `detail_status.lifecycle.<status.lifecycle>`, then
44
+ * the raw code.
45
+ */
46
+ lifecycleLabel?: string;
47
+ /** NB-DETAIL-LIFECYCLE-01 — overrides the lifecycle badge tone. */
48
+ lifecycleTone?: DetailLifecycleTone;
45
49
  status: {
46
- lifecycle: "ACTIVE" | "INACTIVE" | "MAINTENANCE" | "FAULTY";
50
+ lifecycle: DetailLifecycle;
47
51
  network: "CONNECTED" | "DISCONNECTED" | "UNKNOWN";
48
52
  power?: "ON" | "OFF" | "UNKNOWN";
49
53
  /**
@@ -71,12 +75,36 @@ export interface ModemDetailEntity extends DetailEntityBase {
71
75
  kind: "modem";
72
76
  firmware?: string;
73
77
  protocol?: string;
74
- /** Transport-layer port (TCP/MQTT). Optional — only rendered when present. */
78
+ /**
79
+ * Transport-layer port (TCP/MQTT). Optional — only rendered when present,
80
+ * labelled "Port". Superseded in the identity card by `reportedPort` when
81
+ * that field is set (the two-row layout below).
82
+ */
75
83
  port?: number;
84
+ /**
85
+ * NB-DETAIL-TCPPORT-01 (LHA-604 K10) — the protocol's default port, shown
86
+ * as its own row right under "Protocol". `undefined` → no row; `null` → "—".
87
+ */
88
+ protocolDefaultPort?: number | null;
89
+ /**
90
+ * NB-DETAIL-TCPPORT-01 — the port the device reported, labelled as such so it
91
+ * cannot be confused with the default. When set (`null` → "—") it replaces the
92
+ * plain "Port" row; `undefined` keeps the legacy `port` row.
93
+ */
94
+ reportedPort?: number | null;
76
95
  /** RSSI 0..100. */
77
96
  signalStrength?: number;
78
97
  /** Number of meters bound to this modem. */
79
98
  meterCount?: number;
99
+ /**
100
+ * NB-DETAIL-ORDERS-01 — order-processing suitability. When present the
101
+ * "Active Orders" quick-stat gains a status dot (SUITABLE green · NO_ORDERS
102
+ * grey · NOT_SUITABLE red · UNKNOWN amber) and a hover/focus tooltip.
103
+ * Absent / null → the tile renders exactly as before.
104
+ */
105
+ orderSuitability?: ModemOrderSuitability | null;
106
+ /** NB-DETAIL-ORDERS-01 — per-priority split, listed in the same tooltip. */
107
+ activeOrdersByPriority?: ActiveOrdersByPriority | null;
80
108
  }
81
109
  export interface MeterDetailEntity extends DetailEntityBase {
82
110
  kind: "meter";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/detail-layout/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/detail-layout/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { ExportFormat, ExportJob, ExportJobCreateRequest } from '../../types/exportJob.types';
2
+ import { ExportJobState } from './useExportJob';
3
+ export interface ExportButtonProps {
4
+ /**
5
+ * Builds the job for the chosen format AT CLICK TIME, so the export carries the
6
+ * list's current search, filters and sort. `source` is the screen's own list
7
+ * request (the one its table query sends).
8
+ */
9
+ getRequest: (format: ExportFormat) => ExportJobCreateRequest;
10
+ /** Offered formats, in menu order. One format skips the menu. @default ["XLSX", "CSV", "PDF"] */
11
+ formats?: ExportFormat[];
12
+ /**
13
+ * The list's current total. PDF is rendered in memory server-side and fails
14
+ * (EXPORT_014) above `pdfMaxRows`, so the option is disabled up front.
15
+ */
16
+ totalRows?: number;
17
+ /** Server's `export.pdf.max_rows`. @default 10000 */
18
+ pdfMaxRows?: number;
19
+ /** Button text. @default "Dışa Aktar" / "Export" */
20
+ label?: string;
21
+ disabled?: boolean;
22
+ /** Poll period. @default 2000 */
23
+ pollIntervalMs?: number;
24
+ /** How long to wait for the file before leaving it to the download history. @default 30000 */
25
+ waitMs?: number;
26
+ /**
27
+ * Still running after `waitMs`. The button has already told the user to take
28
+ * the file from Download History; use this to link or navigate there.
29
+ */
30
+ onBackground?: (job: ExportJob | undefined) => void;
31
+ /** The download has started. */
32
+ onComplete?: (job: ExportJob) => void;
33
+ /** Refused or failed; `message` is the sentence already shown in the toast. */
34
+ onError?: (message: string, state: ExportJobState) => void;
35
+ className?: string;
36
+ }
37
+ /**
38
+ * "Dışa Aktar" for a list screen, on the export platform (LHA-817). Seat it in
39
+ * `ListPageLayout.beforeFilterActions`.
40
+ *
41
+ * Click → format → the job starts with the screen's own request → the button
42
+ * shows progress while it polls → the file downloads by itself if it is ready
43
+ * within `waitMs`; otherwise a toast points to Download History. Refusals
44
+ * (duplicate, limits, invalid source) and failures are worded from their code.
45
+ */
46
+ export declare function ExportButton({ getRequest, formats, totalRows, pdfMaxRows, label, disabled, pollIntervalMs, waitMs, onBackground, onComplete, onError, className, }: ExportButtonProps): import("react").JSX.Element;
47
+ //# sourceMappingURL=ExportButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportButton.d.ts","sourceRoot":"","sources":["../../../src/components/export/ExportButton.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAInG,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,sBAAsB,CAAC;IAC7D,iGAAiG;IACjG,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,gCAAgC;IAChC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,OAAyB,EACzB,SAAS,EACT,UAAkB,EAClB,KAAK,EACL,QAAQ,EACR,cAAc,EACd,MAAM,EACN,YAAY,EACZ,UAAU,EACV,OAAO,EACP,SAAS,GACV,EAAE,iBAAiB,+BA6LnB"}
@@ -0,0 +1,38 @@
1
+ import { ReactNode } from 'react';
2
+ import { ExportJobScope } from '../../types/exportJob.types';
3
+ export interface ExportHistoryTableProps {
4
+ /**
5
+ * `own` — the user's exports (Kullanıcı Profili → İndirme Geçmişi).
6
+ * `all` — everyone's (yönetim görünümü); needs the `export.jobs.read.ALL`
7
+ * operation (`usePermissions().hasOperation("export.jobs.read.ALL")`), the API
8
+ * answers AUTH_030 otherwise. @default "own"
9
+ */
10
+ scope?: ExportJobScope;
11
+ /**
12
+ * Rows per page, snapped to the page-size picker's options (25 / 50 / 100):
13
+ * the API caps a page at 100, and a size the picker does not offer would show
14
+ * an empty picker. @default 25
15
+ */
16
+ pageSize?: number;
17
+ /**
18
+ * Shows a "Oluşturan" column. The API only returns `ownerUserId`, so the app
19
+ * resolves the name (typically for `scope="all"`).
20
+ */
21
+ renderOwner?: (ownerUserId: number) => ReactNode;
22
+ /**
23
+ * Refresh period while a listed job is QUEUED/RUNNING; idle lists are not
24
+ * polled. The platform's guidance is ~5 s. @default 5000
25
+ */
26
+ activePollIntervalMs?: number;
27
+ className?: string;
28
+ }
29
+ /**
30
+ * Download History on the export platform (LHA-817): the user's own jobs, or
31
+ * everyone's for an admin. Columns follow the business analysis: report name ·
32
+ * (owner) · requested · finished · status · progress (%37,5) · rows · size
33
+ * (2,3 MB) · download / cancel · error ("Kod: …, Hata: …").
34
+ *
35
+ * Paging and sort are the server's (newest first, 1-based pages).
36
+ */
37
+ export declare function ExportHistoryTable({ scope, pageSize: initialPageSize, renderOwner, activePollIntervalMs, className, }: ExportHistoryTableProps): import("react").JSX.Element;
38
+ //# sourceMappingURL=ExportHistoryTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportHistoryTable.d.ts","sourceRoot":"","sources":["../../../src/components/export/ExportHistoryTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAOlE,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAO7E,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,SAAS,CAAC;IACjD;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAWD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAa,EACb,QAAQ,EAAE,eAAoB,EAC9B,WAAW,EACX,oBAA2B,EAC3B,SAAS,GACV,EAAE,uBAAuB,+BAsNzB"}
@@ -0,0 +1,10 @@
1
+ import { ExportJobStatus } from '../../types/exportJob.types';
2
+ export interface ExportJobStatusBadgeProps {
3
+ status: ExportJobStatus;
4
+ /** Overrides the package's label (e.g. the app's own wording). */
5
+ label?: string;
6
+ className?: string;
7
+ }
8
+ /** Export job status with the package's TR/EN label and tone (running pulses). */
9
+ export declare function ExportJobStatusBadge({ status, label, className }: ExportJobStatusBadgeProps): import("react").JSX.Element;
10
+ //# sourceMappingURL=ExportJobStatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportJobStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/export/ExportJobStatusBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,eAAe,CAAC;IACxB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,yBAAyB,+BAO3F"}
@@ -0,0 +1,54 @@
1
+ import { ApiError, ApiResponse } from '../../adapters/types';
2
+ import { ExportJob, ExportJobCreateRequest, ExportJobCreated, ExportJobScope } from '../../types/exportJob.types';
3
+ /**
4
+ * Thin calls for the export platform (`/api/exports/jobs`, lena-management,
5
+ * LHA-817). Each one RESOLVES to the API envelope — an `error` envelope is a
6
+ * value, not an exception, like every apiGet/apiPost caller in this package.
7
+ */
8
+ export declare const EXPORT_JOBS_PATH = "/api/exports/jobs";
9
+ export declare function createExportJob(request: ExportJobCreateRequest): Promise<ApiResponse<ExportJobCreated>>;
10
+ /** `signal` aborts the request (it then resolves to `REQUEST_CANCELED`). */
11
+ export declare function getExportJob(id: number, signal?: AbortSignal): Promise<ApiResponse<ExportJob>>;
12
+ export declare function listExportJobs(scope: ExportJobScope, page: number, size: number): Promise<ApiResponse<ExportJob[]>>;
13
+ export declare function cancelExportJob(id: number): Promise<ApiResponse<ExportJob>>;
14
+ /** Outcome of a download attempt: started, or the API's refusal. */
15
+ export type ExportDownloadResult = {
16
+ ok: true;
17
+ } | {
18
+ ok: false;
19
+ error: ApiError;
20
+ };
21
+ /** A fetched download, not yet handed to the browser. */
22
+ export type ExportDownload = {
23
+ kind: "link";
24
+ url: string;
25
+ fileName?: string;
26
+ } | {
27
+ kind: "file";
28
+ blob: Blob;
29
+ fileName: string;
30
+ };
31
+ export type ExportDownloadFetchResult = {
32
+ ok: true;
33
+ download: ExportDownload;
34
+ } | {
35
+ ok: false;
36
+ error: ApiError;
37
+ };
38
+ /**
39
+ * Fetches a COMPLETED job's download WITHOUT starting it — the caller decides,
40
+ * after the await, whether the result still matters (L-F05: a reset or unmount
41
+ * while this was in flight must not make the browser download anything).
42
+ *
43
+ * The endpoint answers in one of two shapes, decided by the server's config,
44
+ * not by the request: `{url, expiresAt}` (a signed object-storage URL, the
45
+ * normal case) or the file itself, streamed. Asked as a Blob, both arrive here;
46
+ * a JSON body is the link envelope, anything else is the file. `signal` aborts
47
+ * the request (it then resolves to `REQUEST_CANCELED`).
48
+ */
49
+ export declare function fetchExportDownload(job: Pick<ExportJob, "id" | "fileName">, signal?: AbortSignal): Promise<ExportDownloadFetchResult>;
50
+ /** Hands a fetched download to the browser (the only browser side effect). */
51
+ export declare function saveExportDownload(download: ExportDownload): void;
52
+ /** Fetches and starts a COMPLETED job's download in one step (history rows). */
53
+ export declare function downloadExportJob(job: Pick<ExportJob, "id" | "fileName">, signal?: AbortSignal): Promise<ExportDownloadResult>;
54
+ //# sourceMappingURL=exportJobApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportJobApi.d.ts","sourceRoot":"","sources":["../../../src/components/export/exportJobApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAEV,SAAS,EACT,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACf,MAAM,6BAA6B,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAEvG;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAE9F;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAEnH;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAE3E;AAED,oEAAoE;AACpE,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEjF,yDAAyD;AACzD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,MAAM,MAAM,yBAAyB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEhH;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,UAAU,CAAC,EACvC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,yBAAyB,CAAC,CAmBpC;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAYjE;AAED,gFAAgF;AAChF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,UAAU,CAAC,EACvC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAK/B"}
@@ -0,0 +1,19 @@
1
+ import { ExportJob, ExportJobStatus } from '../../types/exportJob.types';
2
+ import { LanguageSource } from '../../utils/activeLocale';
3
+ /** Jobs the worker still owns — the history keeps polling while any is listed. */
4
+ export declare const ACTIVE_EXPORT_STATUSES: readonly ExportJobStatus[];
5
+ export declare const isActiveExportJob: (job: Pick<ExportJob, "status">) => boolean;
6
+ /** Badge tone per status (ui-kit Badge variants). */
7
+ export declare const EXPORT_STATUS_VARIANT: Record<ExportJobStatus, "info" | "success" | "error" | "warning" | "default">;
8
+ /**
9
+ * Progress as the business analysis writes it — one decimal, locale sign
10
+ * position ("%37,5" / "37.5%"). `null` while the total is unknown (before the
11
+ * first page, or a cursor API that reports no total): a guessed percentage
12
+ * would be a lie.
13
+ */
14
+ export declare function formatExportProgress(i18n: LanguageSource, job: Pick<ExportJob, "status" | "processedRows" | "totalRows">): string | null;
15
+ /** File size in the active locale, 1 decimal above bytes ("2,3 MB"). */
16
+ export declare function formatExportSize(i18n: LanguageSource, bytes: number | null | undefined): string | null;
17
+ /** Row counts: "1.234 / 5.000", or just the processed count while the total is unknown. */
18
+ export declare function formatExportRows(i18n: LanguageSource, job: Pick<ExportJob, "processedRows" | "totalRows">): string;
19
+ //# sourceMappingURL=exportJobFormat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportJobFormat.d.ts","sourceRoot":"","sources":["../../../src/components/export/exportJobFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAA4C,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEzG,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,EAAE,SAAS,eAAe,EAA0B,CAAC;AAExF,eAAO,MAAM,iBAAiB,GAAI,KAAK,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAgD,CAAC;AAEjH,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAO/G,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,eAAe,GAAG,WAAW,CAAC,GAAG,MAAM,GAAG,IAAI,CAKxI;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAYtG;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,GAAG,WAAW,CAAC,GAAG,MAAM,CAIlH"}
@@ -0,0 +1,26 @@
1
+ import { TFunction } from 'i18next';
2
+ import { ApiError } from '../../adapters/types';
3
+ import { ExportJob, ExportJobStatus } from '../../types/exportJob.types';
4
+ /**
5
+ * Every export_job string, through STATIC `t("key", { defaultValue })` calls.
6
+ * Template-built keys would escape ui-kit's bundle-contract scan, so the
7
+ * status and error families are spelled out one by one on purpose.
8
+ */
9
+ export declare function exportStatusLabel(t: TFunction, status: ExportJobStatus): string;
10
+ /**
11
+ * The user-facing sentence for an export error code. The API sends no message
12
+ * text (only `code` + `params`), and a FAILED job's `errorMessage` is technical
13
+ * English — so the wording lives here. Unknown codes get the generic sentence.
14
+ */
15
+ export declare function exportErrorText(t: TFunction, code: string | null | undefined, params?: Record<string, string>): string;
16
+ export declare function apiErrorText(t: TFunction, error: ApiError | undefined): string;
17
+ /**
18
+ * A FAILED job carries its params only inside the technical `errorMessage`
19
+ * (a Java map's toString: `{limit=10000, total=25000}`). Best effort: read the
20
+ * simple `key=value` pairs back so "{{limit}}" can be filled; anything else
21
+ * yields no params.
22
+ */
23
+ export declare function jobErrorParams(errorMessage: string | null): Record<string, string>;
24
+ /** "Kod: EXPORT_007, Hata: …" — only for a FAILED job (a retried job keeps its last code). */
25
+ export declare function jobErrorLine(t: TFunction, job: Pick<ExportJob, "status" | "errorCode" | "errorMessage">): string | null;
26
+ //# sourceMappingURL=exportJobText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportJobText.d.ts","sourceRoot":"","sources":["../../../src/components/export/exportJobText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9E;;;;GAIG;AAEH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAU/E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,CAqB1H;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKlF;AAED,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAC,GAAG,MAAM,GAAG,IAAI,CAIvH"}
@@ -0,0 +1,11 @@
1
+ export { ExportButton } from './ExportButton';
2
+ export type { ExportButtonProps } from './ExportButton';
3
+ export { ExportHistoryTable } from './ExportHistoryTable';
4
+ export type { ExportHistoryTableProps } from './ExportHistoryTable';
5
+ export { ExportJobStatusBadge } from './ExportJobStatusBadge';
6
+ export type { ExportJobStatusBadgeProps } from './ExportJobStatusBadge';
7
+ export { useExportJob } from './useExportJob';
8
+ export type { ExportJobPhase, ExportJobState, UseExportJobOptions, UseExportJobReturn } from './useExportJob';
9
+ export { EXPORT_JOBS_PATH, createExportJob, getExportJob, listExportJobs, cancelExportJob, downloadExportJob, fetchExportDownload, saveExportDownload, } from './exportJobApi';
10
+ export type { ExportDownload, ExportDownloadFetchResult, ExportDownloadResult } from './exportJobApi';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/export/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { ApiError } from '../../adapters/types';
2
+ import { ExportJob, ExportJobCreateRequest } from '../../types/exportJob.types';
3
+ /**
4
+ * Where a started export stands.
5
+ *
6
+ * - `starting` — POST sent, no job yet.
7
+ * - `running` — job accepted, polled every `pollIntervalMs`.
8
+ * - `downloading` — COMPLETED, the file is being handed to the browser.
9
+ * - `done` — download started.
10
+ * - `background` — not finished by `waitMs`: the user takes it from the
11
+ * download history (and, later, the e-mail).
12
+ * - `failed` — refused at creation (`error`), or the job FAILED / EXPIRED
13
+ * (`job.errorCode` / `job.errorMessage`).
14
+ * - `cancelled` — cancelled by the user or by someone with `export.jobs.read.all`.
15
+ */
16
+ export type ExportJobPhase = "idle" | "starting" | "running" | "downloading" | "done" | "background" | "failed" | "cancelled";
17
+ export interface ExportJobState {
18
+ phase: ExportJobPhase;
19
+ job?: ExportJob;
20
+ /** API refusal (creation, polling or download), when the job itself carries no reason. */
21
+ error?: ApiError;
22
+ }
23
+ export interface UseExportJobOptions {
24
+ /** Poll period. The platform's guidance is ~2 s; progress is not pushed. @default 2000 */
25
+ pollIntervalMs?: number;
26
+ /**
27
+ * How long the screen waits for the file before handing it to the download
28
+ * history. The platform's guidance is ~30 s. A HARD deadline: a poll answer
29
+ * that arrives later never starts a download — checked against the clock too,
30
+ * so a throttled (background-tab) timer cannot stretch it. @default 30000
31
+ */
32
+ waitMs?: number;
33
+ /** Called on every phase change, after the state is set. */
34
+ onPhaseChange?: (state: ExportJobState) => void;
35
+ }
36
+ export interface UseExportJobReturn {
37
+ state: ExportJobState;
38
+ /** Starts an export. Ignored while one is in flight (`starting` / `running` / `downloading`). */
39
+ start: (request: ExportJobCreateRequest) => Promise<void>;
40
+ /** Asks the server to cancel the running job; the next poll reports the outcome. */
41
+ cancel: () => Promise<ApiError | undefined>;
42
+ /** Back to `idle` (stops polling and any pending download; the server-side job is NOT cancelled). */
43
+ reset: () => void;
44
+ }
45
+ /**
46
+ * One export from a list screen: create the job, poll it, download the file
47
+ * when it completes within `waitMs`, otherwise leave it to the download history.
48
+ *
49
+ * The flow is imperative on purpose (one job per click, a deadline, a single
50
+ * download side effect), so it lives in refs + timers rather than React Query —
51
+ * a query would refetch, retry and re-run the download on remount.
52
+ *
53
+ * Every async step re-checks its run before touching state or the browser, and
54
+ * the browser download is the very last step after that check (L-F05). The
55
+ * deadline is its own timer (L-F04); any unexpected throw ends the run as
56
+ * `failed` (L-F06). Unmount stops everything; the job keeps running on the
57
+ * server and shows up in the history.
58
+ *
59
+ * StrictMode's effect replay (cleanup + setup again in the same task) keeps
60
+ * the run instead of killing it: the replayed effect's `start()` is ignored
61
+ * while busy, so a killed run would leave the hook in `starting` for good
62
+ * (L-F15), and restarting would POST a second job.
63
+ *
64
+ * Anything slower counts as an unmount — including an `<Activity>` hidden for
65
+ * longer than a tick: the run ends (requests aborted, no download), the hook is
66
+ * back in `idle` and the job carries on in the history. Shown again it does not
67
+ * resume; a consumer that starts the export from an effect starts a NEW job
68
+ * then, exactly as on a real remount (L-F18).
69
+ */
70
+ export declare function useExportJob({ pollIntervalMs, waitMs, onPhaseChange, }?: UseExportJobOptions): UseExportJobReturn;
71
+ //# sourceMappingURL=useExportJob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useExportJob.d.ts","sourceRoot":"","sources":["../../../src/components/export/useExportJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9H,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,0FAA0F;IAC1F,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,CAAC;IACtB,iGAAiG;IACjG,KAAK,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,oFAAoF;IACpF,MAAM,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC5C,qGAAqG;IACrG,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAoCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,cAAqB,EACrB,MAAc,EACd,aAAa,GACd,GAAE,mBAAwB,GAAG,kBAAkB,CAuK/C"}
@@ -1,5 +1,5 @@
1
1
  import { MouseEvent as ReactMouseEvent, ReactNode } from 'react';
2
- import { SheetCloseReason } from '../../../../lena-ui-kit/src';
2
+ import { SheetCloseReason } from '@nar-bus/ui-kit';
3
3
  import { FormSheetGradient } from './gradientHeader';
4
4
  export type { FormSheetGradient };
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import { MouseEvent as ReactMouseEvent, ReactNode } from 'react';
2
- import { SheetCloseReason } from '../../../../lena-ui-kit/src';
2
+ import { SheetCloseReason } from '@nar-bus/ui-kit';
3
3
  import { FormSheetGradient } from './gradientHeader';
4
4
  /**
5
5
  * ReadonlySheet — a footer-less view drawer (same header chrome as `FormSheet`,
@@ -1 +1 @@
1
- {"version":3,"file":"HourStrip.d.ts","sourceRoot":"","sources":["../../../src/components/hourly-month-grid/HourStrip.tsx"],"names":[],"mappings":"AAUA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,KAAK,EAAE,CAAC,cAAc,GAAG,SAAS,CAAC,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE,cAAc,+BA4BhB"}
1
+ {"version":3,"file":"HourStrip.d.ts","sourceRoot":"","sources":["../../../src/components/hourly-month-grid/HourStrip.tsx"],"names":[],"mappings":"AAUA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,KAAK,EAAE,CAAC,cAAc,GAAG,SAAS,CAAC,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE,cAAc,+BAqChB"}
@@ -1,4 +1,4 @@
1
- import { HourlyGridStatusColor } from './HourlyMonthGrid';
1
+ import { HourlyGridMarker, HourlyGridStatusColor } from './HourlyMonthGrid';
2
2
  export interface HourlyGridLegendItem {
3
3
  status: string;
4
4
  label: string;
@@ -6,7 +6,9 @@ export interface HourlyGridLegendItem {
6
6
  export interface HourlyGridLegendProps {
7
7
  items: HourlyGridLegendItem[];
8
8
  statusColors?: Record<string, HourlyGridStatusColor>;
9
+ /** Corner markers to explain, drawn after the status items. Pass the same objects the cells carry. */
10
+ markers?: HourlyGridMarker[];
9
11
  className?: string;
10
12
  }
11
- export declare function HourlyGridLegend({ items, statusColors, className }: HourlyGridLegendProps): import("react").JSX.Element;
13
+ export declare function HourlyGridLegend({ items, statusColors, markers, className }: HourlyGridLegendProps): import("react").JSX.Element;
12
14
  //# sourceMappingURL=HourlyGridLegend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HourlyGridLegend.d.ts","sourceRoot":"","sources":["../../../src/components/hourly-month-grid/HourlyGridLegend.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,qBAAqB,+BAczF"}
1
+ {"version":3,"file":"HourlyGridLegend.d.ts","sourceRoot":"","sources":["../../../src/components/hourly-month-grid/HourlyGridLegend.tsx"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,sGAAsG;IACtG,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,qBAAqB,+BAsBlG"}
@@ -1,9 +1,38 @@
1
1
  import { ReactNode } from 'react';
2
+ /**
3
+ * Named marker tones resolve to the theme's status tokens. Any other string is
4
+ * used verbatim as a CSS colour (a token reference such as `var(--my-accent)`
5
+ * or a literal), so a consumer is never forced to mirror package token names.
6
+ */
7
+ export type HourlyGridMarkerTone = "info" | "success" | "warning" | "danger" | "neutral";
8
+ /**
9
+ * Corner marker on an hourly cell — a layer ORTHOGONAL to `status`
10
+ * (NB-HOURLYGRID-BADGE-01). `status` stays what it is: the cell's production
11
+ * method and its colour key. The marker flags something that happened TO the
12
+ * hour on top of that (MDM OSF: a meter-fault window applied vs. declared but
13
+ * not applied, LMA-519 C12.2) without inventing compound status values.
14
+ *
15
+ * `label` is human text: it is appended to the cell's accessible name (and to
16
+ * the HourStrip button's title), and `HourlyGridLegend` can explain it via its
17
+ * `markers` prop. The cell `tooltip` is consumer-owned and left untouched.
18
+ */
19
+ export interface HourlyGridMarker {
20
+ tone: HourlyGridMarkerTone | (string & {});
21
+ label: string;
22
+ /**
23
+ * `"solid"` fills the dot, `"outline"` draws a ring — a second, non-colour
24
+ * cue so two markers can be told apart without relying on hue alone
25
+ * (WCAG 1.4.1). @default "solid"
26
+ */
27
+ variant?: "solid" | "outline";
28
+ }
2
29
  export interface HourlyGridCell {
3
30
  value: number | null;
4
31
  status: string;
5
32
  tooltip?: string;
6
33
  locked?: boolean;
34
+ /** Optional corner marker, independent of `status`. Absent → the cell renders exactly as before. */
35
+ marker?: HourlyGridMarker;
7
36
  }
8
37
  export interface HourlyGridRow {
9
38
  day: number;
@@ -49,5 +78,21 @@ export interface HourlyMonthGridProps {
49
78
  }
50
79
  /** Prop override → default token map → `missing` for unknown/absent status. */
51
80
  export declare function resolveStatusColor(status: string | undefined, statusColors?: Record<string, HourlyGridStatusColor>): HourlyGridStatusColor;
81
+ /** Named tone → status token; any other non-blank string passes through as a CSS colour. */
82
+ export declare function resolveMarkerColor(tone: string): string;
83
+ /** Trimmed marker label, "" when absent — tolerant of untyped (JS) callers. */
84
+ export declare function markerLabel(marker: HourlyGridMarker | undefined): string;
85
+ /** `", <label>"` for an accessible name, or "" — so an unmarked cell's name is byte-identical. */
86
+ export declare function markerAriaSuffix(marker: HourlyGridMarker | undefined): string;
87
+ /**
88
+ * The corner dot itself, shared by grid cells, HourStrip and the legend.
89
+ * Decorative (`aria-hidden`): the label already rides in the owning control's
90
+ * accessible name, so announcing the dot would read it twice. The colour is
91
+ * handed over as a custom property and painted with it in CSS, so one rule
92
+ * serves both variants.
93
+ */
94
+ export declare function HourlyGridMarkerDot({ marker }: {
95
+ marker: HourlyGridMarker;
96
+ }): import("react").JSX.Element;
52
97
  export declare function HourlyMonthGrid({ rows, daysInMonth, statusColors, onCellClick, selectedCell, renderCellDetail, showTotals, formatValue, formatTotal, lockBoundaryDay, maxHeight, dayLabel, totalLabel, className, }: HourlyMonthGridProps): import("react").JSX.Element;
53
98
  //# sourceMappingURL=HourlyMonthGrid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HourlyMonthGrid.d.ts","sourceRoot":"","sources":["../../../src/components/hourly-month-grid/HourlyMonthGrid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI7E,OAAO,uBAAuB,CAAC;AAK/B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,CAAC,cAAc,GAAG,SAAS,CAAC,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACzE;;;;OAIG;IACH,YAAY,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,SAAS,CAAC;IACnF,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkCD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACnD,qBAAqB,CAQvB;AAuFD,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,WAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,UAAiB,EACjB,WAAgC,EAChC,WAAW,EACX,eAAe,EACf,SAAS,EACT,QAAQ,EACR,UAAU,EACV,SAAS,GACV,EAAE,oBAAoB,+BA8KtB"}
1
+ {"version":3,"file":"HourlyMonthGrid.d.ts","sourceRoot":"","sources":["../../../src/components/hourly-month-grid/HourlyMonthGrid.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { HourlyMonthGrid } from './HourlyMonthGrid';
2
- export type { HourlyMonthGridProps, HourlyGridCell, HourlyGridRow, HourlyGridStatusColor, } from './HourlyMonthGrid';
2
+ export type { HourlyMonthGridProps, HourlyGridCell, HourlyGridRow, HourlyGridStatusColor, HourlyGridMarker, HourlyGridMarkerTone, } from './HourlyMonthGrid';
3
3
  export { HourStrip } from './HourStrip';
4
4
  export type { HourStripProps } from './HourStrip';
5
5
  export { HourlyGridLegend } from './HourlyGridLegend';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/hourly-month-grid/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/hourly-month-grid/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -19,13 +19,13 @@ export type { TimelineProps, TimelineEntry, TimelineStatus } from './Timeline';
19
19
  export { LiveMonitorPanel } from './LiveMonitorPanel';
20
20
  export type { LiveMonitorPanelProps } from './LiveMonitorPanel';
21
21
  export { OrderCreateSheet } from './OrderCreateSheet';
22
- export type { OrderCreateSheetProps, OrderCreateMode, OrderCreateTargetEntity, BulkOrderSubmitPayload, } from './OrderCreateSheet';
22
+ export type { OrderCreateSheetProps, OrderCreateMode, OrderCreateTargetEntity, BulkOrderSubmitPayload, OrderCreateError, OrderCreateTarget, } from './OrderCreateSheet';
23
23
  export { OrderDetailSheet } from './OrderDetailSheet';
24
24
  export type { OrderDetailSheetProps } from './OrderDetailSheet';
25
25
  export { MapView } from './MapView';
26
26
  export type { MapViewProps } from './MapView';
27
- export { CronBuilder } from './CronBuilder';
28
- export type { CronBuilderProps } from './CronBuilder';
27
+ export { CronBuilder, hasCronDayOrSemantics } from './CronBuilder';
28
+ export type { CronBuilderProps, CronDayFieldSemantics } from './CronBuilder';
29
29
  export { NotificationBell } from './NotificationBell';
30
30
  export type { NotificationBellProps } from './NotificationBell';
31
31
  export { RealTimeStatusBar } from './RealTimeStatusBar';
@@ -51,7 +51,7 @@ export type { TopErrorCodesMiniProps, TopErrorCodesMiniState, ErrorCodeEntry, }
51
51
  export { DetailSection, DetailFieldRow, DetailFieldGrid, DetailPill, DetailContentBlock, DetailTile, } from './detail-glass';
52
52
  export type { DetailSectionProps, DetailFieldRowProps, DetailFieldGridProps, DetailPillProps, DetailPillTone, DetailContentBlockProps, DetailTileProps, DetailTileTone, } from './detail-glass';
53
53
  export { HourlyMonthGrid, HourStrip, HourlyGridLegend } from './hourly-month-grid';
54
- export type { HourlyMonthGridProps, HourlyGridCell, HourlyGridRow, HourlyGridStatusColor, HourStripProps, HourlyGridLegendProps, HourlyGridLegendItem, } from './hourly-month-grid';
54
+ export type { HourlyMonthGridProps, HourlyGridCell, HourlyGridRow, HourlyGridStatusColor, HourlyGridMarker, HourlyGridMarkerTone, HourStripProps, HourlyGridLegendProps, HourlyGridLegendItem, } from './hourly-month-grid';
55
55
  export { FormSection, FormFieldStack, FormFieldRow, FormSectionGroup, } from './form-glass';
56
56
  export type { FormSectionProps, FormFieldStackProps, FormFieldRowProps, FormSectionGroupProps, } from './form-glass';
57
57
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClG,YAAY,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE5F,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGhH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EACV,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,GACf,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC9E,YAAY,EACV,qBAAqB,EACrB,UAAU,EACV,UAAU,GACX,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,YAAY,EACV,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,GACf,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,cAAc,CAAC"}