@nar-bus/ui-shared 1.22.0 → 2.0.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 (84) 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/searchRequest.d.ts +1 -1
  14. package/dist/components/CronBuilder.d.ts +28 -1
  15. package/dist/components/CronBuilder.d.ts.map +1 -1
  16. package/dist/components/MeterStatusBadge.d.ts.map +1 -1
  17. package/dist/components/OrderCreateSheet.d.ts +60 -1
  18. package/dist/components/OrderCreateSheet.d.ts.map +1 -1
  19. package/dist/components/OrderDetailSheet.d.ts +15 -1
  20. package/dist/components/OrderDetailSheet.d.ts.map +1 -1
  21. package/dist/components/detail-layout/ReadingHeatmap.d.ts +20 -2
  22. package/dist/components/detail-layout/ReadingHeatmap.d.ts.map +1 -1
  23. package/dist/components/detail-layout/TriColumnSymmetric.d.ts +16 -1
  24. package/dist/components/detail-layout/TriColumnSymmetric.d.ts.map +1 -1
  25. package/dist/components/detail-layout/adapters.d.ts.map +1 -1
  26. package/dist/components/detail-layout/types.d.ts +46 -18
  27. package/dist/components/detail-layout/types.d.ts.map +1 -1
  28. package/dist/components/form-sheet/FormSheet.d.ts +1 -1
  29. package/dist/components/form-sheet/ReadonlySheet.d.ts +1 -1
  30. package/dist/components/hourly-month-grid/HourStrip.d.ts.map +1 -1
  31. package/dist/components/hourly-month-grid/HourlyGridLegend.d.ts +4 -2
  32. package/dist/components/hourly-month-grid/HourlyGridLegend.d.ts.map +1 -1
  33. package/dist/components/hourly-month-grid/HourlyMonthGrid.d.ts +45 -0
  34. package/dist/components/hourly-month-grid/HourlyMonthGrid.d.ts.map +1 -1
  35. package/dist/components/hourly-month-grid/index.d.ts +1 -1
  36. package/dist/components/hourly-month-grid/index.d.ts.map +1 -1
  37. package/dist/components/index.d.ts +4 -4
  38. package/dist/components/index.d.ts.map +1 -1
  39. package/dist/hooks/index.d.ts +1 -1
  40. package/dist/hooks/index.d.ts.map +1 -1
  41. package/dist/hooks/useEnumValues.d.ts +66 -1
  42. package/dist/hooks/useEnumValues.d.ts.map +1 -1
  43. package/dist/index.css +1 -1
  44. package/dist/index.d.ts +11 -7
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +13043 -12625
  47. package/dist/mocks/periodic-jobs.json.d.ts +5 -5
  48. package/dist/types/audit.types.d.ts +27 -0
  49. package/dist/types/audit.types.d.ts.map +1 -0
  50. package/dist/types/auth.types.d.ts +98 -9
  51. package/dist/types/auth.types.d.ts.map +1 -1
  52. package/dist/types/brand-model.types.d.ts +25 -1
  53. package/dist/types/brand-model.types.d.ts.map +1 -1
  54. package/dist/types/calendar.types.d.ts +3 -0
  55. package/dist/types/calendar.types.d.ts.map +1 -1
  56. package/dist/types/directive.types.d.ts +3 -0
  57. package/dist/types/directive.types.d.ts.map +1 -1
  58. package/dist/types/firmware.types.d.ts +5 -1
  59. package/dist/types/firmware.types.d.ts.map +1 -1
  60. package/dist/types/index.d.ts +5 -3
  61. package/dist/types/index.d.ts.map +1 -1
  62. package/dist/types/location.types.d.ts +21 -1
  63. package/dist/types/location.types.d.ts.map +1 -1
  64. package/dist/types/management.types.d.ts +165 -9
  65. package/dist/types/management.types.d.ts.map +1 -1
  66. package/dist/types/meter.types.d.ts +122 -1
  67. package/dist/types/meter.types.d.ts.map +1 -1
  68. package/dist/types/modem.types.d.ts +67 -3
  69. package/dist/types/modem.types.d.ts.map +1 -1
  70. package/dist/types/order.types.d.ts +15 -0
  71. package/dist/types/order.types.d.ts.map +1 -1
  72. package/dist/types/parser-template.types.d.ts +9 -2
  73. package/dist/types/parser-template.types.d.ts.map +1 -1
  74. package/dist/types/protocol.types.d.ts +3 -0
  75. package/dist/types/protocol.types.d.ts.map +1 -1
  76. package/dist/types/reading-setting.types.d.ts +3 -0
  77. package/dist/types/reading-setting.types.d.ts.map +1 -1
  78. package/dist/types/server-config.types.d.ts +7 -0
  79. package/dist/types/server-config.types.d.ts.map +1 -1
  80. package/dist/types/simcard.types.d.ts +3 -0
  81. package/dist/types/simcard.types.d.ts.map +1 -1
  82. package/dist/utils/orderReason.d.ts +50 -0
  83. package/dist/utils/orderReason.d.ts.map +1 -0
  84. package/package.json +3 -3
@@ -1,9 +1,9 @@
1
- import { ApiResponse, SearchRequest } from './types';
1
+ import { ApiRequestOptions, ApiResponse, SearchRequest } from './types';
2
2
  export interface ApiAdapter {
3
- get<T>(url: string, params?: Record<string, string>): Promise<ApiResponse<T>>;
4
- post<T>(url: string, body: unknown): Promise<ApiResponse<T>>;
5
- put<T>(url: string, body: unknown): Promise<ApiResponse<T>>;
6
- delete<T>(url: string): Promise<ApiResponse<T>>;
3
+ get<T>(url: string, params?: Record<string, string>, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
4
+ post<T>(url: string, body: unknown, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
5
+ put<T>(url: string, body: unknown, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
6
+ delete<T>(url: string, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
7
7
  search<T>(url: string, request: SearchRequest): Promise<ApiResponse<T[]>>;
8
8
  }
9
9
  //# sourceMappingURL=api-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/api-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3E"}
1
+ {"version":3,"file":"api-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/api-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3E"}
@@ -1,6 +1,6 @@
1
1
  import { ApiAdapter } from './api-adapter';
2
2
  export type { ApiAdapter } from './api-adapter';
3
- export type { ApiResponse, ApiError, FieldError, PageMeta, PageRequest, SearchRequest, FilterItem, } from './types';
3
+ export type { ApiRequestOptions, ApiResponse, ApiError, FieldError, PageMeta, PageRequest, SearchRequest, FilterItem, } from './types';
4
4
  export { MockAdapter } from './mock-adapter';
5
5
  export { RealAdapter, setTokenProvider } from './real-adapter';
6
6
  export interface ApiConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,WAAW,EACX,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAIpD;AASD;;;;;GAKG;AACH,eAAO,MAAM,GAAG,EAAE,UAMhB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAIpD;AASD;;;;;GAKG;AACH,eAAO,MAAM,GAAG,EAAE,UAMhB,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { ApiAdapter } from './api-adapter';
2
- import { ApiResponse, SearchRequest } from './types';
2
+ import { ApiRequestOptions, ApiResponse, SearchRequest } from './types';
3
3
  export declare function setTokenProvider(provider: () => string | null): void;
4
4
  export declare class RealAdapter implements ApiAdapter {
5
5
  private http;
6
6
  constructor(baseUrl?: string);
7
- get<T>(url: string, params?: Record<string, string>): Promise<ApiResponse<T>>;
8
- post<T>(url: string, body: unknown): Promise<ApiResponse<T>>;
9
- put<T>(url: string, body: unknown): Promise<ApiResponse<T>>;
10
- delete<T>(url: string): Promise<ApiResponse<T>>;
7
+ get<T>(url: string, params?: Record<string, string>, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
8
+ post<T>(url: string, body: unknown, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
9
+ put<T>(url: string, body: unknown, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
10
+ delete<T>(url: string, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
11
11
  search<T>(url: string, request: SearchRequest): Promise<ApiResponse<T[]>>;
12
12
  }
13
13
  //# sourceMappingURL=real-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"real-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/real-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI1D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAEpE;AAyGD,qBAAa,WAAY,YAAW,UAAU;IAC5C,OAAO,CAAC,IAAI,CAAgB;gBAEhB,OAAO,GAAE,MAAW;IAI1B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAS7E,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAY5D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAS3D,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAS/C,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;CAQhF"}
1
+ {"version":3,"file":"real-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/real-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK7E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAEpE;AAqLD,qBAAa,WAAY,YAAW,UAAU;IAC5C,OAAO,CAAC,IAAI,CAAgB;gBAEhB,OAAO,GAAE,MAAW;IAI1B,GAAG,CAAC,CAAC,EACT,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IASpB,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAazF,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IASxF,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAS5E,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;CAQhF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * NB-TRACE-W3C-01 — the `X-Trace-Id` value, in the shape the backend accepts.
3
+ *
4
+ * The backend's `TraceIdFilter` (lena-observability-sdk, plan T12) honours an
5
+ * inbound `X-Trace-Id` only when `W3CTrace.normaliseTraceId` can read it as a
6
+ * W3C trace-id: 32 lowercase hex, not all zeroes (a dashed UUID is accepted
7
+ * after its dashes are stripped). Anything else is dropped and a fresh id is
8
+ * minted server-side — which is what happened to the old
9
+ * `Date.now().toString(36) + "-" + random-base36` value: the id shown in the
10
+ * browser's network tab never matched the `traceId` in the logs, so a trace
11
+ * could not start in the browser (plan T13).
12
+ *
13
+ * The id is sent as-is, never derived: the backend deliberately does not hash
14
+ * an unreadable id into shape, because a derived value would again differ from
15
+ * the one the browser shows.
16
+ *
17
+ * No `traceparent` header is sent from the browser. The backend reads only
18
+ * `X-Trace-Id` at the edge and builds `traceparent` itself for the services
19
+ * behind it; a new request header would also need every gateway's CORS
20
+ * allow-list to grow, while `X-Trace-Id` is already allowed.
21
+ */
22
+ /** A W3C trace-id: 32 lowercase hex characters, never all zeroes. */
23
+ export declare function generateTraceId(): string;
24
+ //# sourceMappingURL=traceId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceId.d.ts","sourceRoot":"","sources":["../../src/adapters/traceId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAsBH,qEAAqE;AACrE,wBAAgB,eAAe,IAAI,MAAM,CAQxC"}
@@ -9,6 +9,47 @@ export interface ApiError {
9
9
  params?: Record<string, string>;
10
10
  details?: FieldError[];
11
11
  }
12
+ /**
13
+ * NB-APICLIENT-TIMEOUT-01 — per-request transport options for `apiGet` /
14
+ * `apiPost` / `apiPut` / `apiDelete` (and the matching `api.*` adapter calls).
15
+ *
16
+ * Every field is optional and omitting the object keeps the request exactly as
17
+ * before: the client-wide 30 s timeout, no cancellation, JSON envelope parsing.
18
+ * Authorization, `X-Trace-Id` and the `AUTH_010`/`AUTH_011` refresh hook apply
19
+ * to every request regardless of these options. The mock adapter ignores them.
20
+ */
21
+ export interface ApiRequestOptions {
22
+ /**
23
+ * Client timeout for this request in milliseconds, replacing the 30 s
24
+ * default (e.g. a long synchronous import the gateway allows 300 s for).
25
+ * `0` disables the client timeout; fractions are rounded up (so `0.4` is
26
+ * 1 ms, never "no timeout"). Negative or non-finite values are ignored
27
+ * (the default applies); values above 2147483647 are clamped to it, because
28
+ * timers overflow beyond that and would fire immediately.
29
+ * A request that times out still resolves with `NETWORK_ERROR`, as today.
30
+ */
31
+ timeoutMs?: number;
32
+ /**
33
+ * Cancels the request when aborted (also when already aborted). A cancelled
34
+ * request resolves — it never rejects — with
35
+ * `{ status: "error", error: { code: "REQUEST_CANCELED" } }`, so a caller can
36
+ * tell its own abort apart from a network failure.
37
+ */
38
+ signal?: AbortSignal;
39
+ /**
40
+ * How a successful body is returned:
41
+ * - `"json"` (default) — the server's envelope, unchanged behaviour;
42
+ * - `"blob"` — the raw bytes as `{ status: "success", data: Blob }` (CSV with
43
+ * its byte-order mark intact, XLSX, PDF…);
44
+ * - `"text"` — the raw body as `{ status: "success", data: string }`.
45
+ * The browser's UTF-8 decoder drops a leading byte-order mark; use `"blob"`
46
+ * when the exact bytes matter.
47
+ *
48
+ * Error responses are decoded to the server's JSON error envelope in every
49
+ * mode, so error codes (and the 401 refresh hook) work for downloads too.
50
+ */
51
+ responseType?: "json" | "blob" | "text";
52
+ }
12
53
  export interface FieldError {
13
54
  field: string;
14
55
  code: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B"}
@@ -1,9 +1,26 @@
1
- import { ApiResponse, SearchRequest } from '../adapters/types';
1
+ import { ApiRequestOptions, ApiResponse, SearchRequest } from '../adapters/types';
2
+ /** `options` that ask for the raw bytes — `data` is a `Blob`. */
3
+ type BlobRequestOptions = ApiRequestOptions & {
4
+ responseType: "blob";
5
+ };
6
+ /** `options` that ask for the raw body — `data` is a `string`. */
7
+ type TextRequestOptions = ApiRequestOptions & {
8
+ responseType: "text";
9
+ };
2
10
  export declare function setOnUnauthorized(handler: () => Promise<void>): void;
3
11
  export declare function getErrorI18nKey(code: string): string;
4
- export declare function apiGet<T>(url: string, params?: Record<string, string>): Promise<ApiResponse<T>>;
5
- export declare function apiPost<T>(url: string, body: unknown): Promise<ApiResponse<T>>;
6
- export declare function apiPut<T>(url: string, body: unknown): Promise<ApiResponse<T>>;
7
- export declare function apiDelete<T>(url: string): Promise<ApiResponse<T>>;
12
+ export declare function apiGet(url: string, params: Record<string, string> | undefined, options: BlobRequestOptions): Promise<ApiResponse<Blob>>;
13
+ export declare function apiGet(url: string, params: Record<string, string> | undefined, options: TextRequestOptions): Promise<ApiResponse<string>>;
14
+ export declare function apiGet<T>(url: string, params?: Record<string, string>, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
15
+ export declare function apiPost(url: string, body: unknown, options: BlobRequestOptions): Promise<ApiResponse<Blob>>;
16
+ export declare function apiPost(url: string, body: unknown, options: TextRequestOptions): Promise<ApiResponse<string>>;
17
+ export declare function apiPost<T>(url: string, body: unknown, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
18
+ export declare function apiPut(url: string, body: unknown, options: BlobRequestOptions): Promise<ApiResponse<Blob>>;
19
+ export declare function apiPut(url: string, body: unknown, options: TextRequestOptions): Promise<ApiResponse<string>>;
20
+ export declare function apiPut<T>(url: string, body: unknown, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
21
+ export declare function apiDelete(url: string, options: BlobRequestOptions): Promise<ApiResponse<Blob>>;
22
+ export declare function apiDelete(url: string, options: TextRequestOptions): Promise<ApiResponse<string>>;
23
+ export declare function apiDelete<T>(url: string, options?: ApiRequestOptions): Promise<ApiResponse<T>>;
8
24
  export declare function apiSearch<T>(url: string, request: SearchRequest): Promise<ApiResponse<T[]>>;
25
+ export {};
9
26
  //# sourceMappingURL=apiClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../src/api/apiClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKpE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEpE;AAiBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAsB,MAAM,CAAC,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAGzB;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAGzB;AAED,wBAAsB,MAAM,CAAC,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAGzB;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAGzB;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAG3B"}
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../src/api/apiClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvF,iEAAiE;AACjE,KAAK,kBAAkB,GAAG,iBAAiB,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AACvE,kEAAkE;AAClE,KAAK,kBAAkB,GAAG,iBAAiB,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAKvE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEpE;AAiBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAOD,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC1C,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC1C,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,wBAAgB,MAAM,CAAC,CAAC,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAU3B,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7G,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/G,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAU7G,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5G,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9G,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAU5G,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAChG,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAClG,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAShG,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAG3B"}
@@ -1,4 +1,4 @@
1
1
  import { SearchRequest } from '../adapters/types';
2
- import { DataTableState } from '../../../lena-ui-kit/src';
2
+ import { DataTableState } from '@nar-bus/ui-kit';
3
3
  export declare function buildSearchRequest(tableState: DataTableState): SearchRequest;
4
4
  //# sourceMappingURL=searchRequest.d.ts.map
@@ -1,7 +1,34 @@
1
+ /**
2
+ * How the day-of-month and day-of-week fields combine when BOTH are restricted
3
+ * (NB-CRONBUILDER-DAY-01). The builder always edits a 5-field Unix cron, but
4
+ * the same component serves engines that answer this question differently:
5
+ *
6
+ * - `"or"` — Unix/vixie cron, which is what cron-utils' UNIX definition
7
+ * evaluates (HES calendars): `0 0 15 * 1` runs on the 15th OR on any Monday.
8
+ * That is a legitimate schedule, so both fields stay selectable; the summary
9
+ * spells the OR out and a note explains it, so it cannot be read as an
10
+ * intersection.
11
+ * - `"exclusive"` — for engines that cannot express the combination at all
12
+ * (Quartz needs one of the two to be `?` — management periodic jobs). Picking
13
+ * a specific value in one field resets the other to "every day"; an
14
+ * expression that still restricts both (typed into the expression box, or
15
+ * arriving as `value`) is flagged invalid instead of being silently rewritten.
16
+ */
17
+ export type CronDayFieldSemantics = "or" | "exclusive";
1
18
  export interface CronBuilderProps {
2
19
  value: string;
3
20
  onChange: (cron: string) => void;
21
+ /** @default "or" — see {@link CronDayFieldSemantics}. */
22
+ dayFieldSemantics?: CronDayFieldSemantics;
4
23
  className?: string;
5
24
  }
6
- export declare function CronBuilder({ value, onChange, className }: CronBuilderProps): import("react").JSX.Element;
25
+ /**
26
+ * True when a 5-field cron restricts BOTH day-of-month and day-of-week — the
27
+ * case Unix cron evaluates as an OR and Quartz cannot express. It is the exact
28
+ * predicate behind the builder's OR note and its exclusive-mode error, exported
29
+ * so a consumer's own run preview or submit guard agrees with what the builder
30
+ * shows. Anything that is not five fields returns `false`.
31
+ */
32
+ export declare function hasCronDayOrSemantics(cron: string): boolean;
33
+ export declare function CronBuilder({ value, onChange, dayFieldSemantics, className, }: CronBuilderProps): import("react").JSX.Element;
7
34
  //# sourceMappingURL=CronBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CronBuilder.d.ts","sourceRoot":"","sources":["../../src/components/CronBuilder.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4JD,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BA8F3E"}
1
+ {"version":3,"file":"CronBuilder.d.ts","sourceRoot":"","sources":["../../src/components/CronBuilder.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,WAAW,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmCD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3D;AA4JD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,iBAAwB,EACxB,SAAS,GACV,EAAE,gBAAgB,+BA4KlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"MeterStatusBadge.d.ts","sourceRoot":"","sources":["../../src/components/MeterStatusBadge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,CACA;IACE,sEAAsE;IACtE,gBAAgB,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;IAC3D,mGAAmG;IACnG,eAAe,EAAE,MAAM,CAAC;CACzB,GACD;IAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,SAAS,CAAA;CAAE,CAChE,CAAC;AAqCF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,+BAU5D"}
1
+ {"version":3,"file":"MeterStatusBadge.d.ts","sourceRoot":"","sources":["../../src/components/MeterStatusBadge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,CACA;IACE,sEAAsE;IACtE,gBAAgB,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;IAC3D,mGAAmG;IACnG,eAAe,EAAE,MAAM,CAAC;CACzB,GACD;IAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,SAAS,CAAA;CAAE,CAChE,CAAC;AA8CF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,+BAU5D"}
@@ -1,6 +1,24 @@
1
1
  import { Order, OrderType, OrderPriority } from '../types';
2
2
  export type OrderCreateMode = "single" | "bulk";
3
3
  export type OrderCreateTargetEntity = "MODEM" | "METER";
4
+ /**
5
+ * Why one target's `POST /api/orders` failed — the backend error envelope's
6
+ * `error.code` / `error.params`, handed on untouched. (NB-ORDER-CREATE-ERROR-01)
7
+ *
8
+ * `code` is absent only when there was no envelope to read: the request threw
9
+ * before the adapter could map it, or the backend answered "success" without an
10
+ * order. HTTP failures always carry one — the adapter maps them to
11
+ * `status: "error"` itself (`NETWORK_ERROR` when the server never answered).
12
+ */
13
+ export interface OrderCreateError {
14
+ code?: string;
15
+ params?: Record<string, unknown>;
16
+ }
17
+ /** The target a create request was sent for; `meterId` only on meter orders. */
18
+ export interface OrderCreateTarget {
19
+ modemId: number;
20
+ meterId?: number;
21
+ }
4
22
  export interface BulkOrderSubmitPayload {
5
23
  orderType: OrderType;
6
24
  /**
@@ -107,12 +125,53 @@ export interface OrderCreateSheetProps {
107
125
  *
108
126
  * For the legacy single-meter case (N = 1) no toast is emitted — the consumer's
109
127
  * `onOrderCreated` callback is authoritative as before.
128
+ *
129
+ * `partial` and `failure` are followed by the reason(s) the backend gave
130
+ * (" — <reason>"; see {@link errorMessage}) — NB-ORDER-CREATE-ERROR-01.
110
131
  */
111
132
  singleSubmitCopy?: {
112
133
  success?: string;
113
134
  partial?: string;
114
135
  failure?: string;
115
136
  };
137
+ /**
138
+ * Single-mode only — fired once per target whose create request failed, after
139
+ * every target has been attempted and before `onOrderCreated` (partial
140
+ * success) or the failure toast.
141
+ *
142
+ * NB-ORDER-CREATE-ERROR-01: the error envelope used to be dropped on the floor,
143
+ * so the operator only ever read "Order creation failed" — never that the meter
144
+ * had no matching reading setting (`READING_SETTING_NOT_MATCHED`), or that the
145
+ * user lacked the permission. This is the per-target list: one call per failed
146
+ * meter, with the meter it was for.
147
+ *
148
+ * Informational. The sheet still shows its own failure / partial toast, now
149
+ * carrying the reason, so do NOT toast from here — that is the double toast
150
+ * NB-ORDER-TOAST-01 removed. Use it to mark the failed rows, log, or keep the
151
+ * list for a follow-up view.
152
+ */
153
+ onOrderCreateError?: (error: OrderCreateError, target: OrderCreateTarget) => void;
154
+ /**
155
+ * Single-mode only — words a failed target's reason for the sheet's toast.
156
+ *
157
+ * - a string → shown as-is;
158
+ * - `""` → no reason for that target (the toast keeps its bare copy);
159
+ * - `null` / `undefined` → the default below.
160
+ *
161
+ * Default: `errorCodes.<code>` (then `errors.<code>`, the
162
+ * {@link getErrorI18nKey} convention), looked up in
163
+ * {@link translationNamespace} first and the default namespace second, with
164
+ * `params` interpolated; a code nobody translates is shown raw — an operator
165
+ * reading "READING_SETTING_NOT_MATCHED" can still act on it, one reading
166
+ * nothing cannot. No code, no reason.
167
+ */
168
+ errorMessage?: (error: OrderCreateError, target: OrderCreateTarget) => string | null | undefined;
169
+ /**
170
+ * i18n namespace holding the app's error vocabulary (`errorCodes.*`), as in
171
+ * `OrderDetailSheet`. Only the default {@link errorMessage} reads it.
172
+ * @default "hes"
173
+ */
174
+ translationNamespace?: string;
116
175
  /**
117
176
  * Ask for confirmation before discarding a partially filled form when the sheet
118
177
  * is dismissed via backdrop click or Escape. Default `true`.
@@ -134,5 +193,5 @@ export interface OrderCreateSheetProps {
134
193
  cancel?: string;
135
194
  };
136
195
  }
137
- export declare function OrderCreateSheet({ open, onClose, mode, modemId, modemSlug, meterId, meterSlug, modemOptions, meterOptions, relayOptions, onOrderCreated, bulkTargetModemIds, bulkTargetEntity, onBulkSubmit, bulkCopy, singleSubmitCopy, confirmOnDiscard, discardConfirmCopy, }: OrderCreateSheetProps): import("react").JSX.Element;
196
+ export declare function OrderCreateSheet({ open, onClose, mode, modemId, modemSlug, meterId, meterSlug, modemOptions, meterOptions, relayOptions, onOrderCreated, bulkTargetModemIds, bulkTargetEntity, onBulkSubmit, bulkCopy, singleSubmitCopy, onOrderCreateError, errorMessage, translationNamespace, confirmOnDiscard, discardConfirmCopy, }: OrderCreateSheetProps): import("react").JSX.Element;
138
197
  //# sourceMappingURL=OrderCreateSheet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCreateSheet.d.ts","sourceRoot":"","sources":["../../src/components/OrderCreateSheet.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,KAAK,EAAE,SAAS,EAAiB,aAAa,EAC/C,MAAM,UAAU,CAAC;AAiBlB,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;;;OASG;IACH,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAmBD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gFAAgF;IAChF,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,uEAAuE;IACvE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,8EAA8E;IAC9E,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAwCD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,OAAO,EACP,IAAe,EACf,OAAO,EACP,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAiB,EACjB,YAAiB,EAIjB,YAAY,EACZ,cAAc,EACd,kBAAuB,EACvB,gBAA0B,EAC1B,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,gBAAuB,EACvB,kBAAkB,GACnB,EAAE,qBAAqB,+BA4TvB"}
1
+ {"version":3,"file":"OrderCreateSheet.d.ts","sourceRoot":"","sources":["../../src/components/OrderCreateSheet.tsx"],"names":[],"mappings":"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"}
@@ -15,6 +15,20 @@ export interface OrderDetailSheetProps {
15
15
  * finally to the raw code. (NB-ORDER-RETRY-01)
16
16
  */
17
17
  statusLabel?: (status: OrderStatus) => string;
18
+ /**
19
+ * Words one status-log reason code (`READING_SETTING_NOT_MATCHED`,
20
+ * `RESPONSE_PATH_STALLED`, …) for the terminal row of the status flow — the
21
+ * codes in `reason` and in a CODED `message` alike (NB-ORDER-STATUSLOG-MSG-01).
22
+ * Multi-part reasons (`A;B`) are split first, so this sees one code at a time.
23
+ * A free-text `message` (see `isOrderReasonCodeFormat`) never reaches this — it
24
+ * is shown verbatim after the worded codes.
25
+ *
26
+ * - a string → shown as-is (`""` hides that code);
27
+ * - `null` / `undefined` → the default: `order.diagnostic.<code>`, then
28
+ * `errorCodes.<code>`, each in {@link translationNamespace} before ui-kit's
29
+ * bundle, then the raw code. (NB-ORDER-REASON-01)
30
+ */
31
+ reasonLabel?: (code: string) => string | null | undefined;
18
32
  /**
19
33
  * i18n namespace holding the app's own order vocabulary. Keys found there win
20
34
  * over the package's, so an app can also override any `order.*` label; keys it
@@ -23,5 +37,5 @@ export interface OrderDetailSheetProps {
23
37
  */
24
38
  translationNamespace?: string;
25
39
  }
26
- export declare function OrderDetailSheet({ open, onClose, order, orderId, onCancel, onRetry, statusLabel, translationNamespace, }: OrderDetailSheetProps): import("react").JSX.Element;
40
+ export declare function OrderDetailSheet({ open, onClose, order, orderId, onCancel, onRetry, statusLabel, reasonLabel, translationNamespace, }: OrderDetailSheetProps): import("react").JSX.Element;
27
41
  //# sourceMappingURL=OrderDetailSheet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderDetailSheet.d.ts","sourceRoot":"","sources":["../../src/components/OrderDetailSheet.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAUnD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;IAC9C;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAsOD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,EACX,oBAA0C,GAC3C,EAAE,qBAAqB,+BAgLvB"}
1
+ {"version":3,"file":"OrderDetailSheet.d.ts","sourceRoot":"","sources":["../../src/components/OrderDetailSheet.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAUnD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;IAC9C;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAyQD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,EACX,WAAW,EACX,oBAA0C,GAC3C,EAAE,qBAAqB,+BAoMvB"}
@@ -1,4 +1,20 @@
1
- import { ReadingDay } from './types';
1
+ import { ReadingDay, DayStatus } from './types';
2
+ /**
3
+ * LUG-HEATMAP-LABELS — per-instance calendar texts, already translated by the
4
+ * consumer. The `detail_hero.calendar.*` keys are global, so an app showing the
5
+ * same calendar with two meanings (MDM: installation = OSF fill, meter = reads)
6
+ * could not relabel one screen without relabelling the other. Every field is
7
+ * optional; a missing one falls back to its i18n key, so an instance without
8
+ * `labels` renders exactly as before.
9
+ */
10
+ export interface ReadingHeatmapLabels {
11
+ /** Caption above the month name (default `detail_hero.calendar.title`). */
12
+ title?: string;
13
+ /** Cell text — tooltip and cell `aria-label` (default `detail_hero.calendar.status.*`). */
14
+ status?: Partial<Record<DayStatus, string>>;
15
+ /** Legend under the grid (default `detail_hero.calendar.legend.*`). */
16
+ legend?: Partial<Record<DayStatus, string>>;
17
+ }
2
18
  interface ReadingHeatmapProps {
3
19
  readings: ReadingDay[];
4
20
  /** Visual size — "comfortable" (~32px cells), "compact" (~22px). */
@@ -7,7 +23,9 @@ interface ReadingHeatmapProps {
7
23
  showDayNumbers?: boolean;
8
24
  /** Show the month nav header. Set false when the parent supplies its own header. */
9
25
  showHeader?: boolean;
26
+ /** LUG-HEATMAP-LABELS — overrides for this instance only (see `ReadingHeatmapLabels`). */
27
+ labels?: ReadingHeatmapLabels;
10
28
  }
11
- export declare function ReadingHeatmap({ readings, size, showDayNumbers, showHeader, }: ReadingHeatmapProps): import("react").JSX.Element;
29
+ export declare function ReadingHeatmap({ readings, size, showDayNumbers, showHeader, labels, }: ReadingHeatmapProps): import("react").JSX.Element;
12
30
  export {};
13
31
  //# sourceMappingURL=ReadingHeatmap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReadingHeatmap.d.ts","sourceRoot":"","sources":["../../../src/components/detail-layout/ReadingHeatmap.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,SAAS,CAAC;AAErD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,oEAAoE;IACpE,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;IAC1C,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuCD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,IAAoB,EACpB,cAAc,EACd,UAAiB,GAClB,EAAE,mBAAmB,+BAsNrB"}
1
+ {"version":3,"file":"ReadingHeatmap.d.ts","sourceRoot":"","sources":["../../../src/components/detail-layout/ReadingHeatmap.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C;AAED,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,oEAAoE;IACpE,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;IAC1C,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAuCD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,IAAoB,EACpB,cAAc,EACd,UAAiB,EACjB,MAAM,GACP,EAAE,mBAAmB,+BAsNrB"}
@@ -1,4 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
+ import { ReadingHeatmapLabels } from './ReadingHeatmap';
2
3
  import { DetailEntity, DetailPalette } from './types';
3
4
  interface TriColumnSymmetricProps {
4
5
  data: DetailEntity;
@@ -8,8 +9,22 @@ interface TriColumnSymmetricProps {
8
9
  * Rendered top-right of the tag chip row inside the hero glass surface.
9
10
  */
10
11
  actionsSlot?: ReactNode;
12
+ /**
13
+ * NB-DETAIL-ORDERS-01 — replaces the "Active Orders" tile's tooltip content.
14
+ * Omitted → the package builds it from `orderSuitability` +
15
+ * `activeOrdersByPriority` (modem only; no tooltip when both are absent).
16
+ * `null` → no tooltip at all (the status dot stays). Non-interactive content
17
+ * only: it is also mirrored, visually hidden, as the tile's description.
18
+ */
19
+ activeOrdersTooltip?: ReactNode;
20
+ /**
21
+ * LUG-HEATMAP-LABELS — calendar texts for THIS hero only (title, cell status,
22
+ * legend), forwarded to `ReadingHeatmap`. Omitted fields keep the global
23
+ * `detail_hero.calendar.*` keys.
24
+ */
25
+ calendarLabels?: ReadingHeatmapLabels;
11
26
  }
12
- export declare function TriColumnSymmetric({ data, palette, actionsSlot }: TriColumnSymmetricProps): import("react").JSX.Element;
27
+ export declare function TriColumnSymmetric({ data, palette, actionsSlot, activeOrdersTooltip, calendarLabels, }: TriColumnSymmetricProps): import("react").JSX.Element;
13
28
  /**
14
29
  * FIX-407 — Hero pills collapsed from three (lifecycle + network + power)
15
30
  * to two business-critical dimensions: fleet lifecycle (inventory state)
@@ -1 +1 @@
1
- {"version":3,"file":"TriColumnSymmetric.d.ts","sourceRoot":"","sources":["../../../src/components/detail-layout/TriColumnSymmetric.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAavC,OAAO,EAAkB,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAEhF,UAAU,uBAAuB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,uBAAuB,+BA4KzF;AAED;;;;;;;;GAQG;AACH,mEAAmE;AACnE,KAAK,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAgEpE,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,+BAqB5E"}
1
+ {"version":3,"file":"TriColumnSymmetric.d.ts","sourceRoot":"","sources":["../../../src/components/detail-layout/TriColumnSymmetric.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAY9C,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAkB,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAEhF,UAAU,uBAAuB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,cAAc,GACf,EAAE,uBAAuB,+BA6LzB;AAED;;;;;;;;GAQG;AACH,mEAAmE;AACnE,KAAK,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAmFpE,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,+BAqB5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../src/components/detail-layout/adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAGZ,UAAU,EAEX,MAAM,SAAS,CAAC;AAMjB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAwBtE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAMnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CASvF;AAMD,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,UAAU,EAAE,CAAC;KAC5B,CAAC;IACF,6FAA6F;IAC7F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA+HD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,YAAY,CAsCd;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,YAAY,CAmCd"}
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../src/components/detail-layout/adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EAGZ,UAAU,EAEX,MAAM,SAAS,CAAC;AAMjB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAwBtE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAMnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CASvF;AAMD,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,UAAU,EAAE,CAAC;KAC5B,CAAC;IACF,6FAA6F;IAC7F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAoJD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,YAAY,CAgDd;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,YAAY,CAmCd"}
@@ -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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"}
@@ -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"}