tempest-react-sdk 0.45.1 → 0.47.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 (32) hide show
  1. package/dist/components/AIChat/AIChatTurn.cjs +1 -1
  2. package/dist/components/AIChat/AIChatTurn.js +4 -4
  3. package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
  4. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  5. package/dist/components/AppBar/use-sticky-body-warning.js +5 -8
  6. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  7. package/dist/components/DataTable/DataTable.cjs +1 -1
  8. package/dist/components/DataTable/DataTable.js +11 -11
  9. package/dist/components/DataTable/use-dev-warnings.cjs +1 -1
  10. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  11. package/dist/components/DataTable/use-dev-warnings.js +8 -7
  12. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  13. package/dist/components/NotificationCenter/NotificationCenter.cjs +1 -1
  14. package/dist/components/NotificationCenter/NotificationCenter.js +21 -21
  15. package/dist/forms/masked-inputs.cjs +1 -1
  16. package/dist/forms/masked-inputs.js +12 -12
  17. package/dist/http/api-client.cjs +1 -1
  18. package/dist/http/api-client.cjs.map +1 -1
  19. package/dist/http/api-client.js +46 -21
  20. package/dist/http/api-client.js.map +1 -1
  21. package/dist/icons/Icon.cjs +1 -1
  22. package/dist/icons/Icon.cjs.map +1 -1
  23. package/dist/icons/Icon.js +10 -12
  24. package/dist/icons/Icon.js.map +1 -1
  25. package/dist/tempest-react-sdk.cjs +1 -1
  26. package/dist/tempest-react-sdk.d.ts +70 -0
  27. package/dist/tempest-react-sdk.js +330 -329
  28. package/dist/utils/dev-mode.cjs +2 -0
  29. package/dist/utils/dev-mode.cjs.map +1 -0
  30. package/dist/utils/dev-mode.js +12 -0
  31. package/dist/utils/dev-mode.js.map +1 -0
  32. package/package.json +1 -1
@@ -59,59 +59,84 @@ function d(n) {
59
59
  params: c
60
60
  }), m);
61
61
  }
62
- async function d(t, r) {
63
- let i = n.requestId ? n.requestId() : e(), a = await o(t, r, i);
64
- if (a.status === 401) {
62
+ async function d(e, t, r, i) {
63
+ let a = n.logger;
64
+ if (!a) return o(e, t, r);
65
+ let s = Date.now();
66
+ try {
67
+ let n = await o(e, t, r), c = {
68
+ requestId: r,
69
+ status: n.status,
70
+ ms: Date.now() - s
71
+ }, l = `${i} ${e} → ${n.status}`;
72
+ return n.status >= 400 ? a.warn(l, c) : a.debug(l, c), n;
73
+ } catch (t) {
74
+ throw a.warn(`${i} ${e} → no response`, {
75
+ requestId: r,
76
+ ms: Date.now() - s,
77
+ error: t
78
+ }), t;
79
+ }
80
+ }
81
+ async function f(e, t) {
82
+ n.logger?.warn("unauthorized — calling onUnauthorized", {
83
+ requestId: t,
84
+ status: e.status
85
+ }), await n.onUnauthorized?.(e);
86
+ }
87
+ async function p(t, r) {
88
+ let i = n.requestId ? n.requestId() : e(), a = (r.method ?? "GET").toUpperCase(), o = await d(t, r, i, a);
89
+ if (o.status === 401) {
65
90
  if (n.refresh) {
66
91
  try {
67
- await n.refresh(), a = await o(t, r, i);
92
+ await n.refresh(), o = await d(t, r, i, a);
68
93
  } catch {
69
- throw await n.onUnauthorized?.(a), await u(a, i);
94
+ throw await f(o, i), await u(o, i);
70
95
  }
71
- a.status === 401 && await n.onUnauthorized?.(a);
72
- } else await n.onUnauthorized?.(a);
96
+ o.status === 401 && await f(o, i);
97
+ } else await f(o, i);
73
98
  }
74
- if (!a.ok) throw await u(a, i);
75
- if (a.status !== 204) return (a.headers.get("content-type") ?? "").includes("application/json") ? await a.json() : await a.text();
99
+ if (!o.ok) throw await u(o, i);
100
+ if (o.status !== 204) return (o.headers.get("content-type") ?? "").includes("application/json") ? await o.json() : await o.text();
76
101
  }
77
- async function f(e, t = {}) {
102
+ async function m(e, t = {}) {
78
103
  let r = c(n.retry);
79
- if (!r) return d(e, t);
104
+ if (!r) return p(e, t);
80
105
  let a = (t.method ?? "GET").toUpperCase();
81
- return i(() => d(e, t), {
106
+ return i(() => p(e, t), {
82
107
  ...r,
83
108
  shouldRetry: r.shouldRetry ?? ((e) => s(e, a))
84
109
  });
85
110
  }
86
- async function p(e, t, n = "POST") {
87
- return f(e, {
111
+ async function h(e, t, n = "POST") {
112
+ return m(e, {
88
113
  method: n,
89
114
  body: t
90
115
  });
91
116
  }
92
117
  return {
93
- request: f,
94
- get: (e, t) => f(e, {
118
+ request: m,
119
+ get: (e, t) => m(e, {
95
120
  ...t,
96
121
  method: "GET"
97
122
  }),
98
- post: (e, t) => f(e, {
123
+ post: (e, t) => m(e, {
99
124
  ...t,
100
125
  method: "POST"
101
126
  }),
102
- put: (e, t) => f(e, {
127
+ put: (e, t) => m(e, {
103
128
  ...t,
104
129
  method: "PUT"
105
130
  }),
106
- patch: (e, t) => f(e, {
131
+ patch: (e, t) => m(e, {
107
132
  ...t,
108
133
  method: "PATCH"
109
134
  }),
110
- delete: (e, t) => f(e, {
135
+ delete: (e, t) => m(e, {
111
136
  ...t,
112
137
  method: "DELETE"
113
138
  }),
114
- upload: p
139
+ upload: h
115
140
  };
116
141
  }
117
142
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","names":[],"sources":["../../src/http/api-client.ts"],"sourcesContent":["/**\n * @tempest-limits function-lines — createApiClient is over the limit and every line\n * is a request-lifecycle concern the client cannot delegate: base URL joining, the\n * auth header, the 401 refresh-and-replay, the opt-in retry wrapper and the response\n * parsing that turns a failure into a typed error.\n */\nimport { randomId } from \"../utils\";\nimport { buildApiUrl } from \"./build-url\";\nimport { buildApiError, TempestApiError } from \"./errors\";\nimport { retry as retryWithBackoff } from \"./retry\";\nimport type { RetryOptions } from \"./retry\";\nimport type { ApiClient, ApiClientConfig, RequestOptions } from \"./types\";\n\n/**\n * Methods the built-in retry policy will replay.\n *\n * `PUT` and `DELETE` are idempotent on paper but stay out: a backend that logs,\n * bills, or fires a webhook per call still sees two, so replaying them is a\n * decision the caller makes through `shouldRetry`, not a default.\n */\nconst IDEMPOTENT_METHODS: ReadonlySet<string> = new Set([\"GET\", \"HEAD\", \"OPTIONS\"]);\n\n/**\n * Sub-500 statuses worth a second attempt: a network failure (status `0`), a\n * request timeout, a too-early replay, and a rate limit — which usually carries\n * the `Retry-After` the backoff already honours.\n */\nconst RETRIABLE_STATUSES: ReadonlySet<number> = new Set([0, 408, 425, 429]);\n\n/**\n * The built-in retry policy, used when `retry` is `true` or is options carrying\n * no `shouldRetry` of their own.\n *\n * Conservative on purpose. Replaying a write can duplicate it, and replaying a\n * `400` or a `403` cannot fix a bad payload or a permission the caller does not\n * have — it only spends the user's time before showing the same error.\n *\n * @param error - Whatever the attempt threw.\n * @param method - The upper-cased HTTP method of the request.\n * @returns Whether the client should try again.\n */\nfunction isRetriableFailure(error: unknown, method: string): boolean {\n if (!IDEMPOTENT_METHODS.has(method)) return false;\n if (!(error instanceof TempestApiError)) return false;\n return RETRIABLE_STATUSES.has(error.status) || error.status >= 500;\n}\n\n/**\n * Normalize the `retry` config into options, or `null` when retrying is off.\n *\n * @param config - The `retry` field as the caller wrote it.\n * @returns Retry options to use, or `null` to run a single attempt.\n */\nfunction resolveRetry(config: boolean | RetryOptions | undefined): RetryOptions | null {\n if (!config) return null;\n return config === true ? {} : config;\n}\n\nfunction isFormData(body: unknown): body is FormData {\n return typeof FormData !== \"undefined\" && body instanceof FormData;\n}\n\nasync function parseError(response: Response, sentRequestId?: string): Promise<TempestApiError> {\n let body: unknown;\n try {\n body = await response.clone().json();\n } catch {\n try {\n body = await response.text();\n } catch {\n body = null;\n }\n }\n return new TempestApiError(\n buildApiError(response.status, body, response.headers, sentRequestId),\n );\n}\n\n/**\n * Create a typed HTTP client backed by `fetch`.\n *\n * Handles JSON serialization, query params, bearer auth via `getToken`, uploads\n * via `FormData`, and throws a typed `ApiError` on any non-2xx response.\n *\n * **Expired sessions.** A `401` with `refresh` configured awaits the refresh and\n * replays the request once. `onUnauthorized` fires whenever that path ends\n * unauthorized anyway — the refresh threw, or the replay came back `401` — which\n * is the signal to clear the session. Without `refresh`, the first `401` calls\n * it directly.\n *\n * **Retries** are off unless you set `retry`. See {@link ApiClientConfig.retry}\n * for the built-in policy; it never replays a write.\n *\n * @example\n * const api = createApiClient({\n * baseURL: import.meta.env.VITE_API_URL,\n * getToken: () => useAuthStore.getState().token,\n * refresh,\n * onUnauthorized: () => useAuthStore.getState().logout(),\n * retry: true,\n * });\n *\n * @param config - Base URL plus the optional auth, retry and fetch hooks.\n * @returns A client with `request`/`get`/`post`/`put`/`patch`/`delete`/`upload`.\n */\nexport function createApiClient(config: ApiClientConfig): ApiClient {\n const fetcher = config.fetcher ?? globalThis.fetch.bind(globalThis);\n\n function authHeaders(): Record<string, string> {\n const token = config.getToken?.();\n return token ? { Authorization: `Bearer ${token}` } : {};\n }\n\n async function rawRequest(\n path: string,\n options: RequestOptions,\n requestId?: string,\n ): Promise<Response> {\n const { body, params, headers, ...rest } = options;\n const isForm = isFormData(body);\n\n const finalHeaders: Record<string, string> = {\n ...(isForm ? {} : { \"Content-Type\": \"application/json\" }),\n ...(requestId ? { \"X-Request-ID\": requestId } : {}),\n ...config.headers,\n ...authHeaders(),\n ...(headers as Record<string, string> | undefined),\n };\n\n const init: RequestInit = {\n ...rest,\n headers: finalHeaders,\n credentials: config.withCredentials ? \"include\" : rest.credentials,\n body:\n body === undefined || body === null\n ? undefined\n : isForm\n ? (body as FormData)\n : JSON.stringify(body),\n };\n\n return fetcher(buildApiUrl(config.baseURL, path, { prefix: config.prefix, params }), init);\n }\n\n async function attempt<T>(path: string, options: RequestOptions): Promise<T> {\n const requestId = config.requestId ? config.requestId() : randomId();\n let response = await rawRequest(path, options, requestId);\n\n if (response.status === 401) {\n if (config.refresh) {\n try {\n await config.refresh();\n response = await rawRequest(path, options, requestId);\n } catch {\n await config.onUnauthorized?.(response);\n throw await parseError(response, requestId);\n }\n if (response.status === 401) {\n await config.onUnauthorized?.(response);\n }\n } else {\n await config.onUnauthorized?.(response);\n }\n }\n\n if (!response.ok) {\n throw await parseError(response, requestId);\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return (await response.json()) as T;\n }\n return (await response.text()) as unknown as T;\n }\n\n async function request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const retryOptions = resolveRetry(config.retry);\n if (!retryOptions) return attempt<T>(path, options);\n\n const method = (options.method ?? \"GET\").toUpperCase();\n return retryWithBackoff(() => attempt<T>(path, options), {\n ...retryOptions,\n shouldRetry:\n retryOptions.shouldRetry ?? ((error: unknown) => isRetriableFailure(error, method)),\n });\n }\n\n async function upload<T>(\n path: string,\n formData: FormData,\n method: \"POST\" | \"PUT\" | \"PATCH\" = \"POST\",\n ): Promise<T> {\n return request<T>(path, { method, body: formData });\n }\n\n return {\n request,\n get: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"GET\" }),\n post: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"POST\" }),\n put: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"PUT\" }),\n patch: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"PATCH\" }),\n delete: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"DELETE\" }),\n upload,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","names":[],"sources":["../../src/http/api-client.ts"],"sourcesContent":["/**\n * @tempest-limits function-lines — createApiClient is over the limit and every line\n * is a request-lifecycle concern the client cannot delegate: base URL joining, the\n * auth header, the 401 refresh-and-replay, the opt-in retry wrapper and the response\n * parsing that turns a failure into a typed error.\n */\nimport { randomId } from \"../utils\";\nimport { buildApiUrl } from \"./build-url\";\nimport { buildApiError, TempestApiError } from \"./errors\";\nimport { retry as retryWithBackoff } from \"./retry\";\nimport type { RetryOptions } from \"./retry\";\nimport type { ApiClient, ApiClientConfig, RequestOptions } from \"./types\";\n\n/**\n * Methods the built-in retry policy will replay.\n *\n * `PUT` and `DELETE` are idempotent on paper but stay out: a backend that logs,\n * bills, or fires a webhook per call still sees two, so replaying them is a\n * decision the caller makes through `shouldRetry`, not a default.\n */\nconst IDEMPOTENT_METHODS: ReadonlySet<string> = new Set([\"GET\", \"HEAD\", \"OPTIONS\"]);\n\n/**\n * Sub-500 statuses worth a second attempt: a network failure (status `0`), a\n * request timeout, a too-early replay, and a rate limit — which usually carries\n * the `Retry-After` the backoff already honours.\n */\nconst RETRIABLE_STATUSES: ReadonlySet<number> = new Set([0, 408, 425, 429]);\n\n/**\n * The built-in retry policy, used when `retry` is `true` or is options carrying\n * no `shouldRetry` of their own.\n *\n * Conservative on purpose. Replaying a write can duplicate it, and replaying a\n * `400` or a `403` cannot fix a bad payload or a permission the caller does not\n * have — it only spends the user's time before showing the same error.\n *\n * @param error - Whatever the attempt threw.\n * @param method - The upper-cased HTTP method of the request.\n * @returns Whether the client should try again.\n */\nfunction isRetriableFailure(error: unknown, method: string): boolean {\n if (!IDEMPOTENT_METHODS.has(method)) return false;\n if (!(error instanceof TempestApiError)) return false;\n return RETRIABLE_STATUSES.has(error.status) || error.status >= 500;\n}\n\n/**\n * Normalize the `retry` config into options, or `null` when retrying is off.\n *\n * @param config - The `retry` field as the caller wrote it.\n * @returns Retry options to use, or `null` to run a single attempt.\n */\nfunction resolveRetry(config: boolean | RetryOptions | undefined): RetryOptions | null {\n if (!config) return null;\n return config === true ? {} : config;\n}\n\nfunction isFormData(body: unknown): body is FormData {\n return typeof FormData !== \"undefined\" && body instanceof FormData;\n}\n\nasync function parseError(response: Response, sentRequestId?: string): Promise<TempestApiError> {\n let body: unknown;\n try {\n body = await response.clone().json();\n } catch {\n try {\n body = await response.text();\n } catch {\n body = null;\n }\n }\n return new TempestApiError(\n buildApiError(response.status, body, response.headers, sentRequestId),\n );\n}\n\n/**\n * Create a typed HTTP client backed by `fetch`.\n *\n * Handles JSON serialization, query params, bearer auth via `getToken`, uploads\n * via `FormData`, and throws a typed `ApiError` on any non-2xx response.\n *\n * **Expired sessions.** A `401` with `refresh` configured awaits the refresh and\n * replays the request once. `onUnauthorized` fires whenever that path ends\n * unauthorized anyway — the refresh threw, or the replay came back `401` — which\n * is the signal to clear the session. Without `refresh`, the first `401` calls\n * it directly.\n *\n * **Retries** are off unless you set `retry`. See {@link ApiClientConfig.retry}\n * for the built-in policy; it never replays a write.\n *\n * **Logging** is off unless you pass a `logger`. With one, every finished attempt\n * writes a line — `debug` under 400, `warn` from 400 up, plus a `warn` when\n * `onUnauthorized` fires — carrying `requestId`, `status` and elapsed `ms`, and\n * never a body, header or query string. The level and the destination belong to\n * the logger, not to a boolean here.\n *\n * @example\n * const api = createApiClient({\n * baseURL: import.meta.env.VITE_API_URL,\n * getToken: () => useAuthStore.getState().token,\n * refresh,\n * onUnauthorized: () => useAuthStore.getState().logout(),\n * logger: createLogger({ level: import.meta.env.DEV ? \"debug\" : \"warn\" }).child(\"http\"),\n * retry: true,\n * });\n *\n * @param config - Base URL plus the optional auth, retry and fetch hooks.\n * @returns A client with `request`/`get`/`post`/`put`/`patch`/`delete`/`upload`.\n */\nexport function createApiClient(config: ApiClientConfig): ApiClient {\n const fetcher = config.fetcher ?? globalThis.fetch.bind(globalThis);\n\n function authHeaders(): Record<string, string> {\n const token = config.getToken?.();\n return token ? { Authorization: `Bearer ${token}` } : {};\n }\n\n async function rawRequest(\n path: string,\n options: RequestOptions,\n requestId?: string,\n ): Promise<Response> {\n const { body, params, headers, ...rest } = options;\n const isForm = isFormData(body);\n\n const finalHeaders: Record<string, string> = {\n ...(isForm ? {} : { \"Content-Type\": \"application/json\" }),\n ...(requestId ? { \"X-Request-ID\": requestId } : {}),\n ...config.headers,\n ...authHeaders(),\n ...(headers as Record<string, string> | undefined),\n };\n\n const init: RequestInit = {\n ...rest,\n headers: finalHeaders,\n credentials: config.withCredentials ? \"include\" : rest.credentials,\n body:\n body === undefined || body === null\n ? undefined\n : isForm\n ? (body as FormData)\n : JSON.stringify(body),\n };\n\n return fetcher(buildApiUrl(config.baseURL, path, { prefix: config.prefix, params }), init);\n }\n\n async function send(\n path: string,\n options: RequestOptions,\n requestId: string,\n method: string,\n ): Promise<Response> {\n const log = config.logger;\n if (!log) return rawRequest(path, options, requestId);\n\n const startedAt = Date.now();\n try {\n const response = await rawRequest(path, options, requestId);\n const entry = { requestId, status: response.status, ms: Date.now() - startedAt };\n const line = `${method} ${path} → ${response.status}`;\n if (response.status >= 400) log.warn(line, entry);\n else log.debug(line, entry);\n return response;\n } catch (error) {\n log.warn(`${method} ${path} → no response`, {\n requestId,\n ms: Date.now() - startedAt,\n error,\n });\n throw error;\n }\n }\n\n async function endSession(response: Response, requestId: string): Promise<void> {\n config.logger?.warn(`unauthorized — calling onUnauthorized`, {\n requestId,\n status: response.status,\n });\n await config.onUnauthorized?.(response);\n }\n\n async function attempt<T>(path: string, options: RequestOptions): Promise<T> {\n const requestId = config.requestId ? config.requestId() : randomId();\n const method = (options.method ?? \"GET\").toUpperCase();\n let response = await send(path, options, requestId, method);\n\n if (response.status === 401) {\n if (config.refresh) {\n try {\n await config.refresh();\n response = await send(path, options, requestId, method);\n } catch {\n await endSession(response, requestId);\n throw await parseError(response, requestId);\n }\n if (response.status === 401) {\n await endSession(response, requestId);\n }\n } else {\n await endSession(response, requestId);\n }\n }\n\n if (!response.ok) {\n throw await parseError(response, requestId);\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return (await response.json()) as T;\n }\n return (await response.text()) as unknown as T;\n }\n\n async function request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const retryOptions = resolveRetry(config.retry);\n if (!retryOptions) return attempt<T>(path, options);\n\n const method = (options.method ?? \"GET\").toUpperCase();\n return retryWithBackoff(() => attempt<T>(path, options), {\n ...retryOptions,\n shouldRetry:\n retryOptions.shouldRetry ?? ((error: unknown) => isRetriableFailure(error, method)),\n });\n }\n\n async function upload<T>(\n path: string,\n formData: FormData,\n method: \"POST\" | \"PUT\" | \"PATCH\" = \"POST\",\n ): Promise<T> {\n return request<T>(path, { method, body: formData });\n }\n\n return {\n request,\n get: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"GET\" }),\n post: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"POST\" }),\n put: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"PUT\" }),\n patch: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"PATCH\" }),\n delete: <T>(path: string, options?: RequestOptions) =>\n request<T>(path, { ...options, method: \"DELETE\" }),\n upload,\n };\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("./icon-context.cjs"),t=require("./shard-cache.cjs"),n=require("./use-icon.cjs");let r=require("react");function i({name:i,size:o,strokeWidth:c,fallback:l=null,...u}){let d=e.useIconContext(),f=n.useIcon(i);return f?(0,r.createElement)(f,{size:o??d?.size,strokeWidth:c??d?.strokeWidth,...u}):(a()&&t.iconStatus(i)===`missing`&&s(i),l)}function a(){return!1}var o=new Set;function s(e){o.has(e)||(o.add(e),console.warn(`[tempest-react-sdk] <Icon name="${e}" /> — no such lucide icon. Slugs are kebab-case ("circle-alert", not "CircleAlert"); check against \`iconNames\`.`))}exports.Icon=i;
1
+ const e=require("../utils/dev-mode.cjs"),t=require("./icon-context.cjs"),n=require("./shard-cache.cjs"),r=require("./use-icon.cjs");let i=require("react");function a({name:a,size:o,strokeWidth:c,fallback:l=null,...u}){let d=t.useIconContext(),f=r.useIcon(a);return f?(0,i.createElement)(f,{size:o??d?.size,strokeWidth:c??d?.strokeWidth,...u}):(e.isDevBuild()&&n.iconStatus(a)===`missing`&&s(a),l)}var o=new Set;function s(e){o.has(e)||(o.add(e),console.warn(`[tempest-react-sdk] <Icon name="${e}" /> — no such lucide icon. Slugs are kebab-case ("circle-alert", not "CircleAlert"); check against \`iconNames\`.`))}exports.Icon=a;
2
2
  //# sourceMappingURL=Icon.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.cjs","names":[],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { createElement, type ReactNode, type SVGProps } from \"react\";\n\nimport type { IconName } from \"./generated/icon-name\";\nimport { useIconContext } from \"./icon-context\";\nimport { iconStatus } from \"./shard-cache\";\nimport { useIcon } from \"./use-icon\";\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, \"ref\"> {\n /**\n * The lucide slug, kebab-case: `\"save\"`, `\"trash-2\"`, `\"circle-alert\"`.\n *\n * Typed as the union of every slug lucide ships, so a typo is a compile\n * error — while still accepting a plain `string` for the case this component\n * exists for: a name that arrives from an API, a CMS or a config table.\n */\n name: IconName | (string & {});\n /** Width and height in px. Defaults to the provider's value, then lucide's `24`. */\n size?: number | string;\n /** Stroke width. Defaults to the provider's value, then lucide's `2`. */\n strokeWidth?: number;\n /**\n * Rendered while the icon's shard is in flight, and for a slug that does not\n * exist at all. Defaults to nothing.\n *\n * Pass a same-sized placeholder when the surrounding layout would otherwise\n * shift. Note that a slug already in the registry or the cache never renders\n * this — it resolves during render.\n */\n fallback?: ReactNode;\n}\n\n/**\n * Render a lucide icon by slug.\n *\n * All ~2000 lucide icons are addressable, without the cost that makes\n * `lucide-react`'s own `DynamicIcon` unusable: its icon map holds a dynamic\n * `import()` per icon, so a bundler has to emit ~2000 chunk boundaries and the\n * browser floods with requests. Here a slug the app wrote as a literal is\n * resolved from a static registry, and a slug only known at runtime pulls a\n * single shard covering every icon sharing its initial letter.\n *\n * An unknown slug renders `fallback` (nothing, by default) and warns in dev only\n * — it never throws, because a bad name from an API must not take down the tree.\n *\n * @example\n * <Icon name=\"save\" size={18} />\n * <Icon name={row.iconSlug} fallback={<span className=\"skeleton\" />} />\n */\nexport function Icon({ name, size, strokeWidth, fallback = null, ...rest }: IconProps): ReactNode {\n const context = useIconContext();\n const resolved = useIcon(name);\n\n if (!resolved) {\n if (isDev() && iconStatus(name) === \"missing\") warnUnknownIcon(name);\n return fallback;\n }\n\n return createElement(resolved, {\n size: size ?? context?.size,\n strokeWidth: strokeWidth ?? context?.strokeWidth,\n ...rest,\n });\n}\n\n/**\n * Whether the bundle was built for development.\n *\n * Guarded because the SDK also runs where `import.meta.env` does not exist — a\n * service-worker context, a Node test runner, a build-time script.\n */\nfunction isDev(): boolean {\n return Boolean(import.meta.env?.DEV);\n}\n\nconst warnedSlugs = new Set<string>();\n\n/**\n * Warn once per unknown slug.\n *\n * Once, because `<Icon>` re-renders and a warning per render would bury the\n * console; the set is never cleared, since a slug that does not exist will not\n * start existing within the life of the page.\n *\n * @param name - The slug that resolved to nothing.\n */\nfunction warnUnknownIcon(name: string): void {\n if (warnedSlugs.has(name)) return;\n warnedSlugs.add(name);\n console.warn(\n `[tempest-react-sdk] <Icon name=\"${name}\" /> — no such lucide icon. ` +\n `Slugs are kebab-case (\"circle-alert\", not \"CircleAlert\"); check against \\`iconNames\\`.`,\n );\n}\n"],"mappings":"wHAgDA,SAAgB,EAAK,CAAE,OAAM,OAAM,cAAa,WAAW,KAAM,GAAG,GAA8B,CAC9F,IAAM,EAAU,EAAA,eAAe,EACzB,EAAW,EAAA,QAAQ,CAAI,EAO7B,OALK,GAKL,EAAO,EAAA,cAAA,CAAc,EAAU,CAC3B,KAAM,GAAQ,GAAS,KACvB,YAAa,GAAe,GAAS,YACrC,GAAG,CACP,CAAC,GARO,EAAM,GAAK,EAAA,WAAW,CAAI,IAAM,WAAW,EAAgB,CAAI,EAC5D,EAQf,CAQA,SAAS,GAAiB,CACtB,MAAO,CAAA,CACX,CAEA,IAAM,EAAc,IAAI,IAWxB,SAAS,EAAgB,EAAoB,CACrC,EAAY,IAAI,CAAI,IACxB,EAAY,IAAI,CAAI,EACpB,QAAQ,KACJ,mCAAmC,EAAK,mHAE5C,EACJ"}
1
+ {"version":3,"file":"Icon.cjs","names":[],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { createElement, type ReactNode, type SVGProps } from \"react\";\n\nimport type { IconName } from \"./generated/icon-name\";\nimport { useIconContext } from \"./icon-context\";\nimport { iconStatus } from \"./shard-cache\";\nimport { useIcon } from \"./use-icon\";\nimport { isDevBuild } from \"../utils\";\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, \"ref\"> {\n /**\n * The lucide slug, kebab-case: `\"save\"`, `\"trash-2\"`, `\"circle-alert\"`.\n *\n * Typed as the union of every slug lucide ships, so a typo is a compile\n * error — while still accepting a plain `string` for the case this component\n * exists for: a name that arrives from an API, a CMS or a config table.\n */\n name: IconName | (string & {});\n /** Width and height in px. Defaults to the provider's value, then lucide's `24`. */\n size?: number | string;\n /** Stroke width. Defaults to the provider's value, then lucide's `2`. */\n strokeWidth?: number;\n /**\n * Rendered while the icon's shard is in flight, and for a slug that does not\n * exist at all. Defaults to nothing.\n *\n * Pass a same-sized placeholder when the surrounding layout would otherwise\n * shift. Note that a slug already in the registry or the cache never renders\n * this — it resolves during render.\n */\n fallback?: ReactNode;\n}\n\n/**\n * Render a lucide icon by slug.\n *\n * All ~2000 lucide icons are addressable, without the cost that makes\n * `lucide-react`'s own `DynamicIcon` unusable: its icon map holds a dynamic\n * `import()` per icon, so a bundler has to emit ~2000 chunk boundaries and the\n * browser floods with requests. Here a slug the app wrote as a literal is\n * resolved from a static registry, and a slug only known at runtime pulls a\n * single shard covering every icon sharing its initial letter.\n *\n * An unknown slug renders `fallback` (nothing, by default) and warns in dev only\n * — it never throws, because a bad name from an API must not take down the tree.\n *\n * @example\n * <Icon name=\"save\" size={18} />\n * <Icon name={row.iconSlug} fallback={<span className=\"skeleton\" />} />\n */\nexport function Icon({ name, size, strokeWidth, fallback = null, ...rest }: IconProps): ReactNode {\n const context = useIconContext();\n const resolved = useIcon(name);\n\n if (!resolved) {\n if (isDevBuild() && iconStatus(name) === \"missing\") warnUnknownIcon(name);\n return fallback;\n }\n\n return createElement(resolved, {\n size: size ?? context?.size,\n strokeWidth: strokeWidth ?? context?.strokeWidth,\n ...rest,\n });\n}\n\nconst warnedSlugs = new Set<string>();\n\n/**\n * Warn once per unknown slug.\n *\n * Once, because `<Icon>` re-renders and a warning per render would bury the\n * console; the set is never cleared, since a slug that does not exist will not\n * start existing within the life of the page.\n *\n * @param name - The slug that resolved to nothing.\n */\nfunction warnUnknownIcon(name: string): void {\n if (warnedSlugs.has(name)) return;\n warnedSlugs.add(name);\n console.warn(\n `[tempest-react-sdk] <Icon name=\"${name}\" /> — no such lucide icon. ` +\n `Slugs are kebab-case (\"circle-alert\", not \"CircleAlert\"); check against \\`iconNames\\`.`,\n );\n}\n"],"mappings":"2JAiDA,SAAgB,EAAK,CAAE,OAAM,OAAM,cAAa,WAAW,KAAM,GAAG,GAA8B,CAC9F,IAAM,EAAU,EAAA,eAAe,EACzB,EAAW,EAAA,QAAQ,CAAI,EAO7B,OALK,GAKL,EAAO,EAAA,cAAA,CAAc,EAAU,CAC3B,KAAM,GAAQ,GAAS,KACvB,YAAa,GAAe,GAAS,YACrC,GAAG,CACP,CAAC,GARO,EAAA,WAAW,GAAK,EAAA,WAAW,CAAI,IAAM,WAAW,EAAgB,CAAI,EACjE,EAQf,CAEA,IAAM,EAAc,IAAI,IAWxB,SAAS,EAAgB,EAAoB,CACrC,EAAY,IAAI,CAAI,IACxB,EAAY,IAAI,CAAI,EACpB,QAAQ,KACJ,mCAAmC,EAAK,mHAE5C,EACJ"}
@@ -1,24 +1,22 @@
1
- import { useIconContext as e } from "./icon-context.js";
2
- import { iconStatus as t } from "./shard-cache.js";
3
- import { useIcon as n } from "./use-icon.js";
4
- import { createElement as r } from "react";
1
+ import { isDevBuild as e } from "../utils/dev-mode.js";
2
+ import { useIconContext as t } from "./icon-context.js";
3
+ import { iconStatus as n } from "./shard-cache.js";
4
+ import { useIcon as r } from "./use-icon.js";
5
+ import { createElement as i } from "react";
5
6
  //#region src/icons/Icon.tsx
6
- function i({ name: i, size: o, strokeWidth: c, fallback: l = null, ...u }) {
7
- let d = e(), f = n(i);
8
- return f ? r(f, {
7
+ function a({ name: a, size: o, strokeWidth: c, fallback: l = null, ...u }) {
8
+ let d = t(), f = r(a);
9
+ return f ? i(f, {
9
10
  size: o ?? d?.size,
10
11
  strokeWidth: c ?? d?.strokeWidth,
11
12
  ...u
12
- }) : (a() && t(i) === "missing" && s(i), l);
13
- }
14
- function a() {
15
- return !1;
13
+ }) : (e() && n(a) === "missing" && s(a), l);
16
14
  }
17
15
  var o = /* @__PURE__ */ new Set();
18
16
  function s(e) {
19
17
  o.has(e) || (o.add(e), console.warn(`[tempest-react-sdk] <Icon name="${e}" /> — no such lucide icon. Slugs are kebab-case ("circle-alert", not "CircleAlert"); check against \`iconNames\`.`));
20
18
  }
21
19
  //#endregion
22
- export { i as Icon };
20
+ export { a as Icon };
23
21
 
24
22
  //# sourceMappingURL=Icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","names":[],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { createElement, type ReactNode, type SVGProps } from \"react\";\n\nimport type { IconName } from \"./generated/icon-name\";\nimport { useIconContext } from \"./icon-context\";\nimport { iconStatus } from \"./shard-cache\";\nimport { useIcon } from \"./use-icon\";\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, \"ref\"> {\n /**\n * The lucide slug, kebab-case: `\"save\"`, `\"trash-2\"`, `\"circle-alert\"`.\n *\n * Typed as the union of every slug lucide ships, so a typo is a compile\n * error — while still accepting a plain `string` for the case this component\n * exists for: a name that arrives from an API, a CMS or a config table.\n */\n name: IconName | (string & {});\n /** Width and height in px. Defaults to the provider's value, then lucide's `24`. */\n size?: number | string;\n /** Stroke width. Defaults to the provider's value, then lucide's `2`. */\n strokeWidth?: number;\n /**\n * Rendered while the icon's shard is in flight, and for a slug that does not\n * exist at all. Defaults to nothing.\n *\n * Pass a same-sized placeholder when the surrounding layout would otherwise\n * shift. Note that a slug already in the registry or the cache never renders\n * this — it resolves during render.\n */\n fallback?: ReactNode;\n}\n\n/**\n * Render a lucide icon by slug.\n *\n * All ~2000 lucide icons are addressable, without the cost that makes\n * `lucide-react`'s own `DynamicIcon` unusable: its icon map holds a dynamic\n * `import()` per icon, so a bundler has to emit ~2000 chunk boundaries and the\n * browser floods with requests. Here a slug the app wrote as a literal is\n * resolved from a static registry, and a slug only known at runtime pulls a\n * single shard covering every icon sharing its initial letter.\n *\n * An unknown slug renders `fallback` (nothing, by default) and warns in dev only\n * — it never throws, because a bad name from an API must not take down the tree.\n *\n * @example\n * <Icon name=\"save\" size={18} />\n * <Icon name={row.iconSlug} fallback={<span className=\"skeleton\" />} />\n */\nexport function Icon({ name, size, strokeWidth, fallback = null, ...rest }: IconProps): ReactNode {\n const context = useIconContext();\n const resolved = useIcon(name);\n\n if (!resolved) {\n if (isDev() && iconStatus(name) === \"missing\") warnUnknownIcon(name);\n return fallback;\n }\n\n return createElement(resolved, {\n size: size ?? context?.size,\n strokeWidth: strokeWidth ?? context?.strokeWidth,\n ...rest,\n });\n}\n\n/**\n * Whether the bundle was built for development.\n *\n * Guarded because the SDK also runs where `import.meta.env` does not exist — a\n * service-worker context, a Node test runner, a build-time script.\n */\nfunction isDev(): boolean {\n return Boolean(import.meta.env?.DEV);\n}\n\nconst warnedSlugs = new Set<string>();\n\n/**\n * Warn once per unknown slug.\n *\n * Once, because `<Icon>` re-renders and a warning per render would bury the\n * console; the set is never cleared, since a slug that does not exist will not\n * start existing within the life of the page.\n *\n * @param name - The slug that resolved to nothing.\n */\nfunction warnUnknownIcon(name: string): void {\n if (warnedSlugs.has(name)) return;\n warnedSlugs.add(name);\n console.warn(\n `[tempest-react-sdk] <Icon name=\"${name}\" /> — no such lucide icon. ` +\n `Slugs are kebab-case (\"circle-alert\", not \"CircleAlert\"); check against \\`iconNames\\`.`,\n );\n}\n"],"mappings":";;;;;AAgDA,SAAgB,EAAK,EAAE,SAAM,SAAM,gBAAa,cAAW,MAAM,GAAG,KAA8B;CAC9F,IAAM,IAAU,EAAe,GACzB,IAAW,EAAQ,CAAI;CAO7B,OALK,IAKE,EAAc,GAAU;EAC3B,MAAM,KAAQ,GAAS;EACvB,aAAa,KAAe,GAAS;EACrC,GAAG;CACP,CAAC,KARO,EAAM,KAAK,EAAW,CAAI,MAAM,aAAW,EAAgB,CAAI,GAC5D;AAQf;AAQA,SAAS,IAAiB;CACtB,OAAO,CAAA;AACX;AAEA,IAAM,oBAAc,IAAI,IAAY;AAWpC,SAAS,EAAgB,GAAoB;CACrC,EAAY,IAAI,CAAI,MACxB,EAAY,IAAI,CAAI,GACpB,QAAQ,KACJ,mCAAmC,EAAK,mHAE5C;AACJ"}
1
+ {"version":3,"file":"Icon.js","names":[],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { createElement, type ReactNode, type SVGProps } from \"react\";\n\nimport type { IconName } from \"./generated/icon-name\";\nimport { useIconContext } from \"./icon-context\";\nimport { iconStatus } from \"./shard-cache\";\nimport { useIcon } from \"./use-icon\";\nimport { isDevBuild } from \"../utils\";\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, \"ref\"> {\n /**\n * The lucide slug, kebab-case: `\"save\"`, `\"trash-2\"`, `\"circle-alert\"`.\n *\n * Typed as the union of every slug lucide ships, so a typo is a compile\n * error — while still accepting a plain `string` for the case this component\n * exists for: a name that arrives from an API, a CMS or a config table.\n */\n name: IconName | (string & {});\n /** Width and height in px. Defaults to the provider's value, then lucide's `24`. */\n size?: number | string;\n /** Stroke width. Defaults to the provider's value, then lucide's `2`. */\n strokeWidth?: number;\n /**\n * Rendered while the icon's shard is in flight, and for a slug that does not\n * exist at all. Defaults to nothing.\n *\n * Pass a same-sized placeholder when the surrounding layout would otherwise\n * shift. Note that a slug already in the registry or the cache never renders\n * this — it resolves during render.\n */\n fallback?: ReactNode;\n}\n\n/**\n * Render a lucide icon by slug.\n *\n * All ~2000 lucide icons are addressable, without the cost that makes\n * `lucide-react`'s own `DynamicIcon` unusable: its icon map holds a dynamic\n * `import()` per icon, so a bundler has to emit ~2000 chunk boundaries and the\n * browser floods with requests. Here a slug the app wrote as a literal is\n * resolved from a static registry, and a slug only known at runtime pulls a\n * single shard covering every icon sharing its initial letter.\n *\n * An unknown slug renders `fallback` (nothing, by default) and warns in dev only\n * — it never throws, because a bad name from an API must not take down the tree.\n *\n * @example\n * <Icon name=\"save\" size={18} />\n * <Icon name={row.iconSlug} fallback={<span className=\"skeleton\" />} />\n */\nexport function Icon({ name, size, strokeWidth, fallback = null, ...rest }: IconProps): ReactNode {\n const context = useIconContext();\n const resolved = useIcon(name);\n\n if (!resolved) {\n if (isDevBuild() && iconStatus(name) === \"missing\") warnUnknownIcon(name);\n return fallback;\n }\n\n return createElement(resolved, {\n size: size ?? context?.size,\n strokeWidth: strokeWidth ?? context?.strokeWidth,\n ...rest,\n });\n}\n\nconst warnedSlugs = new Set<string>();\n\n/**\n * Warn once per unknown slug.\n *\n * Once, because `<Icon>` re-renders and a warning per render would bury the\n * console; the set is never cleared, since a slug that does not exist will not\n * start existing within the life of the page.\n *\n * @param name - The slug that resolved to nothing.\n */\nfunction warnUnknownIcon(name: string): void {\n if (warnedSlugs.has(name)) return;\n warnedSlugs.add(name);\n console.warn(\n `[tempest-react-sdk] <Icon name=\"${name}\" /> — no such lucide icon. ` +\n `Slugs are kebab-case (\"circle-alert\", not \"CircleAlert\"); check against \\`iconNames\\`.`,\n );\n}\n"],"mappings":";;;;;;AAiDA,SAAgB,EAAK,EAAE,SAAM,SAAM,gBAAa,cAAW,MAAM,GAAG,KAA8B;CAC9F,IAAM,IAAU,EAAe,GACzB,IAAW,EAAQ,CAAI;CAO7B,OALK,IAKE,EAAc,GAAU;EAC3B,MAAM,KAAQ,GAAS;EACvB,aAAa,KAAe,GAAS;EACrC,GAAG;CACP,CAAC,KARO,EAAW,KAAK,EAAW,CAAI,MAAM,aAAW,EAAgB,CAAI,GACjE;AAQf;AAEA,IAAM,oBAAc,IAAI,IAAY;AAWpC,SAAS,EAAgB,GAAoB;CACrC,EAAY,IAAI,CAAI,MACxB,EAAY,IAAI,CAAI,GACpB,QAAQ,KACJ,mCAAmC,EAAK,mHAE5C;AACJ"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});/* empty css */const ee=require("./utils/cn.cjs"),te=require("./components/Accordion/Accordion.cjs"),ne=require("./components/Alert/Alert.cjs"),re=require("./components/AppBar/AppBar.cjs"),ie=require("./hooks/use-breakpoint.cjs"),ae=require("./components/AppShell/AppShell.cjs"),oe=require("./components/AspectRatio/AspectRatio.cjs"),se=require("./components/Avatar/Avatar.cjs"),ce=require("./components/AvatarGroup/AvatarGroup.cjs"),le=require("./components/Badge/Badge.cjs"),ue=require("./components/Banner/Banner.cjs"),de=require("./components/BottomNavigation/BottomNavigation.cjs"),fe=require("./components/BottomSheet/BottomSheet.cjs"),pe=require("./components/Breadcrumbs/Breadcrumbs.cjs"),me=require("./components/Button/Button.cjs"),he=require("./components/Card/Card.cjs"),ge=require("./components/Center/Center.cjs"),_e=require("./components/Checkbox/Checkbox.cjs"),ve=require("./components/ChipInput/ChipInput.cjs"),ye=require("./components/Combobox/Combobox.cjs"),be=require("./components/Modal/Modal.cjs"),xe=require("./components/ConfirmDialog/ConfirmDialog.cjs"),Se=require("./components/Input/Input.cjs"),Ce=require("./components/DatePicker/DatePicker.cjs"),we=require("./components/Divider/Divider.cjs"),Te=require("./components/Drawer/Drawer.cjs"),Ee=require("./components/DropdownMenu/DropdownMenu.cjs"),De=require("./components/Dropzone/Dropzone.cjs"),Oe=require("./components/EmptyState/EmptyState.cjs"),ke=require("./components/ErrorState/ErrorState.cjs"),Ae=require("./components/FileUpload/FileUpload.cjs"),e=require("./components/Form/Form.cjs"),t=require("./components/Layout/Layout.cjs"),je=require("./hooks/use-before-install-prompt.cjs"),Me=require("./components/InstallBanner/InstallBanner.cjs"),Ne=require("./components/InstallButton/InstallButton.cjs"),Pe=require("./hooks/use-debounce.cjs"),Fe=require("./hooks/use-pagination.cjs"),Ie=require("./hooks/use-client-filter.cjs"),Le=require("./hooks/use-media-query.cjs"),Re=require("./hooks/use-event-listener.cjs"),ze=require("./hooks/use-local-storage.cjs"),Be=require("./hooks/use-toggle.cjs"),Ve=require("./hooks/use-async.cjs"),He=require("./hooks/use-online.cjs"),Ue=require("./hooks/use-document-visibility.cjs"),We=require("./hooks/use-intersection-observer.cjs"),Ge=require("./hooks/use-resize-observer.cjs"),Ke=require("./hooks/use-clipboard.cjs"),qe=require("./hooks/use-keyboard-shortcut.cjs"),Je=require("./hooks/use-idle.cjs"),Ye=require("./hooks/use-geolocation.cjs"),Xe=require("./hooks/use-scroll-lock.cjs"),Ze=require("./hooks/use-focus-trap.cjs"),n=require("./hooks/use-announce.cjs"),Qe=require("./hooks/use-stable-callback.cjs"),$e=require("./hooks/use-latest-ref.cjs"),et=require("./hooks/use-deep-memo.cjs"),tt=require("./hooks/use-previous.cjs"),nt=require("./hooks/use-interval.cjs"),rt=require("./hooks/use-timeout.cjs"),it=require("./hooks/use-throttle.cjs"),at=require("./hooks/use-window-size.cjs"),ot=require("./hooks/use-hover.cjs"),st=require("./hooks/use-long-press.cjs"),ct=require("./hooks/use-disclosure.cjs"),lt=require("./hooks/use-list-state.cjs"),ut=require("./hooks/use-counter.cjs"),dt=require("./hooks/use-countdown.cjs"),ft=require("./hooks/use-typewriter.cjs"),pt=require("./hooks/use-document-title.cjs"),mt=require("./hooks/use-favicon.cjs"),ht=require("./hooks/use-map.cjs"),gt=require("./hooks/use-set.cjs"),_t=require("./hooks/use-queue.cjs"),vt=require("./hooks/use-click-outside.cjs"),yt=require("./hooks/use-is-first-render.cjs"),bt=require("./hooks/use-object-url.cjs"),xt=require("./hooks/use-long-press-handlers.cjs"),r=require("./hooks/pwa-env.cjs"),St=require("./hooks/use-install-prompt.cjs"),i=require("./sw/register-service-worker.cjs"),Ct=require("./hooks/use-service-worker-update.cjs"),a=require("./hooks/use-storage-estimate.cjs"),wt=require("./hooks/use-sortable.cjs"),Tt=require("./hooks/use-scroll-overflow.cjs"),Et=require("./hooks/use-media-permission.cjs"),Dt=require("./hooks/use-media-devices.cjs"),Ot=require("./components/OfflineIndicator/OfflineIndicator.cjs"),kt=require("./offline/use-offline-sync.cjs"),At=require("./components/VisuallyHidden/VisuallyHidden.cjs"),jt=require("./components/SyncStatusBadge/SyncStatusBadge.cjs"),Mt=require("./components/UpdatePrompt/UpdatePrompt.cjs"),Nt=require("./components/Kanban/Kanban.cjs"),Pt=require("./components/Kbd/Kbd.cjs"),Ft=require("./components/ModalsManager/ModalsManager.cjs"),It=require("./components/Navbar/Navbar.cjs"),Lt=require("./components/NProgress/NProgress.cjs"),Rt=require("./components/Page/Page.cjs"),zt=require("./components/Pagination/Pagination.cjs"),Bt=require("./components/PasswordInput/PasswordInput.cjs"),Vt=require("./components/PinInput/PinInput.cjs"),Ht=require("./components/Popover/Popover.cjs"),Ut=require("./components/Progress/Progress.cjs"),Wt=require("./components/Radio/Radio.cjs"),Gt=require("./components/RangeSlider/RangeSlider.cjs"),Kt=require("./components/RatingStars/RatingStars.cjs"),o=require("./components/Responsive/Responsive.cjs"),qt=require("./components/SafeArea/SafeArea.cjs"),Jt=require("./components/SearchBar/SearchBar.cjs"),Yt=require("./components/SegmentedControl/SegmentedControl.cjs"),Xt=require("./components/Select/Select.cjs"),Zt=require("./components/Sidebar/Sidebar.cjs"),Qt=require("./components/Skeleton/Skeleton.cjs"),$t=require("./components/Spacer/Spacer.cjs"),en=require("./components/Spinner/Spinner.cjs"),tn=require("./components/Stat/Stat.cjs"),nn=require("./components/Stepper/Stepper.cjs"),s=require("./utils/numbers.cjs"),rn=require("./components/StepperInput/StepperInput.cjs"),an=require("./components/Switch/Switch.cjs"),on=require("./components/Tag/Tag.cjs"),sn=require("./components/Table/Table.cjs"),cn=require("./components/Tabs/Tabs.cjs"),ln=require("./components/Textarea/Textarea.cjs"),un=require("./components/Timeline/Timeline.cjs"),dn=require("./components/Tooltip/Tooltip.cjs"),c=require("./components/Toast/ToastProvider.cjs"),fn=require("./components/ImageCropper/ImageCropper.cjs"),pn=require("./components/Sparkline/Sparkline.cjs"),mn=require("./components/Scheduler/Scheduler.cjs"),hn=require("./utils/relative-time.cjs"),gn=require("./components/NotificationCenter/NotificationCenter.cjs"),_n=require("./components/NotificationCenter/use-notification-inbox.cjs"),vn=require("./components/VirtualList/VirtualList.cjs"),yn=require("./utils/compare-values.cjs"),bn=require("./components/VirtualTable/VirtualTable.cjs"),l=require("./components/QRCode/qr-encode.cjs"),xn=require("./components/QRCode/QRCode.cjs"),Sn=require("./components/CopyButton/CopyButton.cjs"),Cn=require("./components/CodeBlock/CodeBlock.cjs"),wn=require("./components/RelativeTime/RelativeTime.cjs"),Tn=require("./components/Money/Money.cjs"),En=require("./components/TreeView/TreeView.cjs"),Dn=require("./components/TruncateText/TruncateText.cjs"),On=require("./components/Portal/Portal.cjs"),kn=require("./components/ClickOutside/ClickOutside.cjs"),An=require("./components/ConditionalWrapper/ConditionalWrapper.cjs"),jn=require("./components/For/For.cjs"),Mn=require("./components/ErrorText/ErrorText.cjs"),Nn=require("./components/Image/Image.cjs"),Pn=require("./components/DataList/DataList.cjs"),Fn=require("./components/DescriptionList/DescriptionList.cjs"),In=require("./components/Toggle/Toggle.cjs"),Ln=require("./components/ToggleGroup/ToggleGroup.cjs"),Rn=require("./components/Label/Label.cjs"),zn=require("./components/Collapsible/Collapsible.cjs"),Bn=require("./components/ContextMenu/ContextMenu.cjs"),Vn=require("./components/HoverCard/HoverCard.cjs"),Hn=require("./components/Command/Command.cjs"),Un=require("./components/ScrollArea/ScrollArea.cjs"),Wn=require("./components/Resizable/Resizable.cjs"),Gn=require("./components/Calendar/Calendar.cjs"),Kn=require("./components/Slider/Slider.cjs"),qn=require("./components/MultiSelect/MultiSelect.cjs"),Jn=require("./components/DateRangePicker/DateRangePicker.cjs"),Yn=require("./components/NavigationMenu/NavigationMenu.cjs"),Xn=require("./components/Menubar/Menubar.cjs"),Zn=require("./components/Carousel/Carousel.cjs"),Qn=require("./components/DataTable/DataTable.cjs"),$n=require("./components/ListTile/ListTile.cjs"),er=require("./components/FloatingActionButton/FloatingActionButton.cjs"),tr=require("./components/NavigationRail/NavigationRail.cjs"),nr=require("./components/TimePicker/TimePicker.cjs"),rr=require("./components/RefreshIndicator/RefreshIndicator.cjs"),ir=require("./components/Wizard/Wizard.cjs"),ar=require("./components/Lightbox/Lightbox.cjs"),or=require("./components/SignaturePad/SignaturePad.cjs"),sr=require("./components/Chat/ChatComposer.cjs"),cr=require("./components/Chat/Chat.cjs"),u=require("./audio/audio-output.cjs"),lr=require("./components/AudioPlayer/AudioPlayer.cjs"),ur=require("./capture/media-recorder.cjs"),d=require("./audio/audio-recorder.cjs"),dr=require("./audio/level-meter.cjs"),fr=require("./audio/use-audio-recorder.cjs"),pr=require("./audio/media-access.cjs"),mr=require("./audio/use-microphone.cjs"),hr=require("./audio/wav.cjs"),gr=require("./components/AudioRecorder/AudioRecorder.cjs"),f=require("./capture/barcode.cjs"),_r=require("./capture/use-torch.cjs"),vr=require("./capture/use-barcode-scanner.cjs"),yr=require("./components/BarcodeScanner/BarcodeScanner.cjs"),p=require("./components/AIChat/ai-chat-turns.cjs"),br=require("./components/AIChat/AIChatComposer.cjs"),xr=require("./components/Markdown/Markdown.cjs"),Sr=require("./components/AIChat/AIChatTurn.cjs"),Cr=require("./components/AIChat/AIChat.cjs"),wr=require("./components/Transfer/Transfer.cjs"),Tr=require("./components/Masonry/Masonry.cjs"),Er=require("./components/Tour/Tour.cjs"),Dr=require("./components/BarList/bar-list-model.cjs"),Or=require("./components/BarList/BarList.cjs"),m=require("./components/FilterBar/filter-model.cjs"),kr=require("./components/FilterBar/FilterBar.cjs"),Ar=require("./components/FilterBar/filter-apply.cjs"),jr=require("./components/FilterBar/filter-query.cjs"),h=require("./utils/format.cjs"),Mr=require("./utils/storage.cjs"),g=require("./utils/compressed-storage.cjs"),_=require("./utils/strings.cjs"),v=require("./utils/arrays.cjs"),y=require("./utils/objects.cjs"),b=require("./utils/guards.cjs"),x=require("./utils/functions.cjs"),Nr=require("./utils/promises.cjs"),Pr=require("./utils/ids.cjs"),Fr=require("./utils/xlsx.cjs"),Ir=require("./share/share.cjs"),Lr=require("./share/share-or-download.cjs"),Rr=require("./utils/csv.cjs"),zr=require("./http/build-url.cjs"),S=require("./http/errors.cjs"),Br=require("./http/retry.cjs"),Vr=require("./http/api-client.cjs"),C=require("./http/describe-api-error.cjs"),Hr=require("./i18n/create-i18n.cjs"),w=require("./i18n/I18nProvider.cjs"),Ur=require("./http/use-describe-api-error.cjs"),Wr=require("./http/parse-response.cjs"),Gr=require("./http/upload-with-progress.cjs"),Kr=require("./http/idempotency.cjs"),T=require("./http/resumable-upload.cjs"),qr=require("./http/use-poll.cjs"),Jr=require("./auth/create-auth-store.cjs"),Yr=require("./auth/AuthGuard.cjs"),Xr=require("./auth/jwt.cjs"),Zr=require("./auth/lazy-with-retry.cjs"),Qr=require("./auth/refresh-queue.cjs"),E=require("./auth/passkey.cjs"),D=require("./auth/use-passkey.cjs"),$r=require("./auth/create-tempest-auth.cjs"),ei=require("./access/access-control-context.cjs"),ti=require("./access/use-can.cjs"),ni=require("./access/Can.cjs"),ri=require("./access/create-role-access-control.cjs"),ii=require("./access/permissions-from-token.cjs"),ai=require("./oauth/GoogleSignIn.cjs"),oi=require("./oauth/use-oauth-callback.cjs"),O=require("./query/constants.cjs"),si=require("./query/create-query-keys.cjs"),ci=require("./query/retry-policy.cjs"),li=require("./query/QueryProvider.cjs"),k=require("./query/pagination.cjs"),ui=require("./query/use-paginated-query.cjs"),di=require("./query/use-cursor-query.cjs"),fi=require("./query/use-offline-mutation.cjs"),A=require("./query/optimistic.cjs"),pi=require("./offline/create-offline-store.cjs"),mi=require("./query/offline-persistence.cjs"),hi=require("./data/create-data-provider.cjs"),j=require("./data/data-provider-context.cjs"),M=require("./data/use-resource.cjs"),gi=require("./router/RouteGuard.cjs"),N=require("./router/AppRouter.cjs"),_i=require("./store/create-store.cjs"),vi=require("./store/create-selectors.cjs"),P=require("./theme/ThemeProvider.cjs"),yi=require("./error-boundary/ErrorBoundary.cjs"),bi=require("./app/AppProviders.cjs"),xi=require("./sse/create-event-stream.cjs"),Si=require("./sse/use-event-stream.cjs"),F=require("./push/utils.cjs"),I=require("./push/web-push-client.cjs"),Ci=require("./push/use-push-subscription.cjs"),L=require("./sw/create-push-handler.cjs"),R=require("./sw/cache.cjs"),wi=require("./sw/background-sync.cjs"),Ti=require("./sw/periodic-sync.cjs"),Ei=require("./sw/cache-inspect.cjs"),z=require("./audio/audio-player.cjs"),Di=require("./audio/use-audio.cjs"),Oi=require("./audio/sfx-pool.cjs"),ki=require("./audio/use-sfx-pool.cjs"),B=require("./capture/video-recorder.cjs"),Ai=require("./capture/use-video-recorder.cjs"),ji=require("./capture/use-screen-capture.cjs"),Mi=require("./capture/use-speech-recognition.cjs"),Ni=require("./offline/create-offline-sync.cjs"),Pi=require("./offline/conflict.cjs"),Fi=require("./error-boundary/use-error-handler.cjs"),Ii=require("./forms/FormField.cjs"),Li=require("./forms/validate-form.cjs"),Ri=require("./forms/zod-resolver.cjs"),zi=require("./forms/use-zod-form.cjs"),V=require("./forms/br-validators.cjs"),H=require("./forms/masked-inputs.cjs"),Bi=require("./forms/use-viacep.cjs"),Vi=require("./ws/create-web-socket.cjs"),Hi=require("./ws/use-web-socket.cjs"),U=require("./geo/types.cjs"),W=require("./geo/distance.cjs"),G=require("./geo/estimate.cjs"),K=require("./geo/bounds.cjs"),q=require("./geo/projection.cjs"),Ui=require("./geo/routing.cjs"),Wi=require("./geo/create-position-tracker.cjs"),Gi=require("./geo/use-position-tracker.cjs"),Ki=require("./geo/TrajectoryMap.cjs"),qi=require("./theme/apply-theme.cjs"),J=require("./theme/color.cjs"),Y=require("./theme/create-theme.cjs"),Ji=require("./theme/theme-presets.cjs"),Yi=require("./theme/initial-theme.cjs"),Xi=require("./logger/logger.cjs"),Zi=require("./telemetry/TelemetryProvider.cjs"),Qi=require("./telemetry/console-adapter.cjs"),$i=require("./telemetry/sentry-adapter.cjs"),ea=require("./telemetry/posthog-adapter.cjs"),X=require("./feature-flags/FeatureFlagsProvider.cjs"),ta=require("./feature-flags/in-memory-adapter.cjs"),na=require("./feature-flags/growthbook-adapter.cjs"),ra=require("./feature-flags/launchdarkly-adapter.cjs"),Z=require("./charts/scales.cjs"),ia=require("./perf/cache-size.cjs"),aa=require("./perf/device.cjs"),oa=require("./perf/format.cjs"),sa=require("./perf/profiler.cjs");let Q=require("react-router"),$=require("react-hook-form");exports.AIChat=Cr.AIChat,exports.AIChatComposer=br.AIChatComposer,exports.AIChatTurn=Sr.AIChatTurn,exports.ALL_BARCODE_FORMATS=f.ALL_BARCODE_FORMATS,exports.API_ERROR_OFFLINE_KEY=C.API_ERROR_OFFLINE_KEY,exports.AUDIO_MIME_CANDIDATES=d.AUDIO_MIME_CANDIDATES,exports.AccessControlProvider=ei.AccessControlProvider,exports.Accordion=te.Accordion,exports.Alert=ne.Alert,exports.AppBar=re.AppBar,exports.AppProviders=bi.AppProviders,exports.AppRouter=N.AppRouter,exports.AppShell=ae.AppShell,exports.AspectRatio=oe.AspectRatio,exports.AudioPlayer=lr.AudioPlayer,exports.AudioRecorder=gr.AudioRecorder,exports.AuthGuard=Yr.AuthGuard,exports.Avatar=se.Avatar,exports.AvatarGroup=ce.AvatarGroup,exports.BREAKPOINTS=ie.BREAKPOINTS,exports.Badge=le.Badge,exports.Banner=ue.Banner,exports.BarList=Or.BarList,exports.BarcodeScanner=yr.BarcodeScanner,exports.BottomNavigation=de.BottomNavigation,exports.BottomSheet=fe.BottomSheet,exports.Breadcrumbs=pe.Breadcrumbs,Object.defineProperty(exports,"BrowserRouter",{enumerable:!0,get:function(){return Q.BrowserRouter}}),exports.Button=me.Button,exports.CACHE_TIME=O.CACHE_TIME,exports.CEPInput=H.CEPInput,exports.CNPJInput=H.CNPJInput,exports.CPFInput=H.CPFInput,exports.Calendar=Gn.Calendar,exports.Can=ni.Can,exports.Card=he.Card,exports.Carousel=Zn.Carousel,exports.Center=ge.Center,exports.Chat=cr.Chat,exports.ChatComposer=sr.ChatComposer,exports.Checkbox=_e.Checkbox,exports.ChipInput=ve.ChipInput,exports.ClickOutside=kn.ClickOutside,exports.CodeBlock=Cn.CodeBlock,exports.Collapsible=zn.Collapsible,exports.Combobox=ye.Combobox,exports.Command=Hn.Command,exports.ConditionalWrapper=An.ConditionalWrapper,exports.ConfirmDialog=xe.ConfirmDialog,exports.Container=t.Container,exports.ContextMenu=Bn.ContextMenu,Object.defineProperty(exports,"Controller",{enumerable:!0,get:function(){return $.Controller}}),exports.CopyButton=Sn.CopyButton,exports.DEFAULT_API_ERROR_STRINGS=C.DEFAULT_API_ERROR_STRINGS,exports.DEFAULT_BARCODE_FORMATS=f.DEFAULT_BARCODE_FORMATS,exports.DEFAULT_CAR_SPEED_KMH=G.DEFAULT_CAR_SPEED_KMH,exports.DEFAULT_CHUNK_SIZE=T.DEFAULT_CHUNK_SIZE,exports.DEFAULT_CIRCUITY_FACTOR=G.DEFAULT_CIRCUITY_FACTOR,exports.DEFAULT_MODE_DURATION_FACTORS=G.DEFAULT_MODE_DURATION_FACTORS,exports.DEFAULT_PUB_KEY_CRED_PARAMS=E.DEFAULT_PUB_KEY_CRED_PARAMS,exports.DIVERGING_STEP_COUNT=Z.DIVERGING_STEP_COUNT,exports.DataList=Pn.DataList,exports.DataTable=Qn.DataTable,exports.DatePicker=Ce.DatePicker,exports.DateRangePicker=Jn.DateRangePicker,exports.DescriptionList=Fn.DescriptionList,exports.Divider=we.Divider,exports.Drawer=Te.Drawer,exports.DropdownMenu=Ee.DropdownMenu,exports.Dropzone=De.Dropzone,exports.EARTH_RADIUS_KM=W.EARTH_RADIUS_KM,exports.EmptyState=Oe.EmptyState,exports.ErrorBoundary=yi.ErrorBoundary,exports.ErrorState=ke.ErrorState,exports.ErrorText=Mn.ErrorText,exports.FeatureFlagsProvider=X.FeatureFlagsProvider,exports.FileUpload=Ae.FileUpload,exports.FilterBar=kr.FilterBar,exports.FloatingActionButton=er.FloatingActionButton,exports.For=jn.For,exports.Form=e.Form,exports.FormActions=e.FormActions,exports.FormField=Ii.FormField,Object.defineProperty(exports,"FormProvider",{enumerable:!0,get:function(){return $.FormProvider}}),exports.FormRow=e.FormRow,exports.FormSection=e.FormSection,exports.GoogleSignIn=ai.GoogleSignIn,exports.Grid=t.Grid,Object.defineProperty(exports,"HashRouter",{enumerable:!0,get:function(){return Q.HashRouter}}),exports.Hide=o.Hide,exports.HoverCard=Vn.HoverCard,exports.I18nProvider=w.I18nProvider,exports.Image=Nn.Image,exports.ImageCropper=fn.ImageCropper,exports.Input=Se.Input,exports.InstallBanner=Me.InstallBanner,exports.InstallButton=Ne.InstallButton,exports.Kanban=Nt.Kanban,exports.Kbd=Pt.Kbd,exports.Label=Rn.Label,exports.Lightbox=ar.Lightbox,Object.defineProperty(exports,"Link",{enumerable:!0,get:function(){return Q.Link}}),exports.ListTile=$n.ListTile,exports.Markdown=xr.Markdown,exports.Masonry=Tr.Masonry,Object.defineProperty(exports,"MemoryRouter",{enumerable:!0,get:function(){return Q.MemoryRouter}}),exports.Menubar=Xn.Menubar,exports.Modal=be.Modal,exports.ModalsProvider=Ft.ModalsProvider,exports.Money=Tn.Money,exports.MoneyInput=H.MoneyInput,exports.MultiSelect=qn.MultiSelect,exports.NProgressBar=Lt.NProgressBar,Object.defineProperty(exports,"NavLink",{enumerable:!0,get:function(){return Q.NavLink}}),exports.Navbar=It.Navbar,Object.defineProperty(exports,"Navigate",{enumerable:!0,get:function(){return Q.Navigate}}),exports.NavigationMenu=Yn.NavigationMenu,exports.NavigationRail=tr.NavigationRail,exports.NotificationCenter=gn.NotificationCenter,exports.ORDINAL_START_STEP=Z.ORDINAL_START_STEP,exports.OfflineIndicator=Ot.OfflineIndicator,Object.defineProperty(exports,"Outlet",{enumerable:!0,get:function(){return Q.Outlet}}),exports.Page=Rt.Page,exports.Pagination=zt.Pagination,exports.PasskeyError=E.PasskeyError,exports.PasswordInput=Bt.PasswordInput,exports.PhoneInput=H.PhoneInput,exports.PinInput=Vt.PinInput,exports.Popover=Ht.Popover,exports.Portal=On.Portal,exports.Progress=Ut.Progress,exports.QRCapacityError=l.QRCapacityError,exports.QRCode=xn.QRCode,exports.QueryProvider=li.QueryProvider,exports.REFETCH_TIME=O.REFETCH_TIME,exports.Radio=Wt.Radio,exports.RadioGroup=Wt.RadioGroup,exports.RangeSlider=Gt.RangeSlider,exports.RatingStars=Kt.RatingStars,exports.RefreshIndicator=rr.RefreshIndicator,exports.RelativeTime=wn.RelativeTime,exports.Resizable=Wn.Resizable,Object.defineProperty(exports,"Route",{enumerable:!0,get:function(){return Q.Route}}),exports.RouteGuard=gi.RouteGuard,Object.defineProperty(exports,"Routes",{enumerable:!0,get:function(){return Q.Routes}}),exports.SEQUENTIAL_STEP_COUNT=Z.SEQUENTIAL_STEP_COUNT,exports.STALE_TIME=O.STALE_TIME,exports.SafeArea=qt.SafeArea,exports.Scheduler=mn.Scheduler,exports.ScrollArea=Un.ScrollArea,exports.SearchBar=Jt.SearchBar,exports.SegmentedControl=Yt.SegmentedControl,exports.Select=Xt.Select,exports.Show=o.Show,exports.Sidebar=Zt.Sidebar,exports.SignaturePad=or.SignaturePad,exports.Skeleton=Qt.Skeleton,exports.Slider=Kn.Slider,exports.Spacer=$t.Spacer,exports.Sparkline=pn.Sparkline,exports.Spinner=en.Spinner,exports.Stack=t.Stack,exports.Stat=tn.Stat,exports.Stepper=nn.Stepper,exports.StepperInput=rn.StepperInput,exports.Switch=an.Switch,exports.SyncStatusBadge=jt.SyncStatusBadge,exports.Table=sn.Table,exports.Tabs=cn.Tabs,exports.Tag=on.Tag,exports.TelemetryProvider=Zi.TelemetryProvider,exports.TempestApiError=S.TempestApiError,exports.TempestDataProvider=j.TempestDataProvider,exports.Textarea=ln.Textarea,exports.ThemeProvider=P.ThemeProvider,exports.TimePicker=nr.TimePicker,exports.Timeline=un.Timeline,exports.ToastProvider=c.ToastProvider,exports.Toggle=In.Toggle,exports.ToggleGroup=Ln.ToggleGroup,exports.ToggleGroupItem=Ln.ToggleGroupItem,exports.Tooltip=dn.Tooltip,exports.Tour=Er.Tour,exports.TrajectoryMap=Ki.TrajectoryMap,exports.Transfer=wr.Transfer,exports.TreeView=En.TreeView,exports.TruncateText=Dn.TruncateText,exports.UpdatePrompt=Mt.UpdatePrompt,exports.VirtualList=vn.VirtualList,exports.VirtualTable=bn.VirtualTable,exports.VisuallyHidden=At.VisuallyHidden,exports.WebPushClient=I.WebPushClient,exports.WebPushPermissionDeniedError=I.WebPushPermissionDeniedError,exports.WebPushUnsupportedError=I.WebPushUnsupportedError,exports.Wizard=ir.Wizard,exports.aiChatStrings=p.aiChatStrings,exports.announce=n.announce,exports.applyFilters=Ar.applyFilters,exports.applyKanbanMove=Nt.applyKanbanMove,exports.applyTheme=qi.applyTheme,exports.assertNever=b.assertNever,exports.base64UrlToBytes=E.base64UrlToBytes,exports.bearingDeg=W.bearingDeg,exports.blobToWav=hr.blobToWav,exports.boundingBox=K.boundingBox,exports.boundsCenter=K.boundsCenter,exports.buildApiUrl=zr.buildApiUrl,exports.buildBarListRows=Dr.buildBarListRows,exports.buildOpenInChromeIntent=r.buildOpenInChromeIntent,exports.bytesToBase64Url=E.bytesToBase64Url,exports.cachedResponseBytes=ia.cachedResponseBytes,exports.camelCase=_.camelCase,exports.capitalize=_.capitalize,exports.chunk=v.chunk,exports.clamp=s.clamp,exports.clampLatitude=U.clampLatitude,exports.classifyPasskeyError=E.classifyPasskeyError,exports.clearAnnouncer=n.clearAnnouncer,exports.clearCaches=Ei.clearCaches,exports.cn=ee.cn,exports.compareValues=yn.compareValues,exports.compressToString=g.compressToString,exports.compressedStorage=g.compressedStorage,exports.compressedStorageCodec=g.compressedStorageCodec,exports.consoleSink=Xi.consoleSink,exports.consoleTelemetryAdapter=Qi.consoleTelemetryAdapter,exports.contrastRatio=J.contrastRatio,exports.createApiClient=Vr.createApiClient,exports.createAudioPlayer=z.createAudioPlayer,exports.createAudioRecorder=d.createAudioRecorder,exports.createAuthStore=Jr.createAuthStore,exports.createBarcodeDetector=f.createBarcodeDetector,exports.createColorScale=J.createColorScale,exports.createDataProvider=hi.createDataProvider,exports.createEventStream=xi.createEventStream,exports.createGrowthBookFeatureFlagsAdapter=na.createGrowthBookFeatureFlagsAdapter,exports.createI18n=Hr.createI18n,exports.createInMemoryFlags=ta.createInMemoryFlags,exports.createInferenceProfiler=sa.createInferenceProfiler,exports.createLaunchDarklyFeatureFlagsAdapter=ra.createLaunchDarklyFeatureFlagsAdapter,exports.createLevelMeter=dr.createLevelMeter,exports.createLocalUploadStorage=T.createLocalUploadStorage,exports.createLogger=Xi.createLogger,exports.createMediaRecorder=ur.createMediaRecorder,exports.createOSRMBackend=Ui.createOSRMBackend,exports.createOfflineStore=pi.createOfflineStore,exports.createOfflineSync=Ni.createOfflineSync,exports.createPartialResponse=R.createPartialResponse,exports.createPasskeyClient=E.createPasskeyClient,exports.createPositionTracker=Wi.createPositionTracker,exports.createPostHogTelemetryAdapter=ea.createPostHogTelemetryAdapter,exports.createQueryKeys=si.createQueryKeys,exports.createRefreshQueue=Qr.createRefreshQueue,exports.createResumableUpload=T.createResumableUpload,exports.createRoleAccessControl=ri.createRoleAccessControl,exports.createSelectors=vi.createSelectors,exports.createSentryTelemetryAdapter=$i.createSentryTelemetryAdapter,exports.createSfxPool=Oi.createSfxPool,exports.createStore=_i.createStore,exports.createTempestAuth=$r.createTempestAuth,exports.createTheme=Y.createTheme,exports.createVideoRecorder=B.createVideoRecorder,exports.createWebSocket=Vi.createWebSocket,exports.debounce=x.debounce,exports.decodeJWT=Xr.decodeJWT,exports.decompressFromString=g.decompressFromString,exports.deepMerge=y.deepMerge,exports.defineRoutes=N.defineRoutes,exports.describeApiError=C.describeApiError,exports.describeFilter=m.describeFilter,exports.divergingScale=Z.divergingScale,exports.downloadCsv=Rr.downloadCsv,exports.emptyOffsetPage=k.emptyOffsetPage,exports.encodeQR=l.encodeQR,exports.encodeWav=hr.encodeWav,exports.estimatePasswordStrength=Bt.estimatePasswordStrength,exports.estimateStorage=a.estimateStorage,exports.estimateTravel=G.estimateTravel,exports.expandBounds=K.expandBounds,exports.filtersFromSearchParams=m.filtersFromSearchParams,exports.filtersToQueryParams=jr.filtersToQueryParams,exports.filtersToSearchParams=m.filtersToSearchParams,exports.fitProjection=q.fitProjection,exports.formatBytes=s.formatBytes,exports.formatCEP=V.formatCEP,exports.formatCNPJ=V.formatCNPJ,exports.formatCPF=h.formatCPF,exports.formatCompactNumber=s.formatCompactNumber,exports.formatCurrency=h.formatCurrency,exports.formatDate=h.formatDate,exports.formatDateForInput=h.formatDateForInput,exports.formatDateTime=h.formatDateTime,exports.formatDurationMs=oa.formatDurationMs,exports.formatPercent=h.formatPercent,exports.formatPhone=h.formatPhone,exports.generateIdempotencyKey=Kr.generateIdempotencyKey,exports.getInitialTheme=Yi.getInitialTheme,exports.getSupportedBarcodeFormats=f.getSupportedBarcodeFormats,exports.getThemePreset=Ji.getThemePreset,exports.groupBy=v.groupBy,exports.haversineKm=W.haversineKm,exports.hexToOklch=J.hexToOklch,exports.hexToRgb=J.hexToRgb,exports.hexToRgbaString=J.hexToRgbaString,exports.higherVersionWins=Pi.higherVersionWins,exports.inspectCaches=Ei.inspectCaches,exports.installBackgroundSync=wi.installBackgroundSync,exports.installNotificationClickHandler=L.installNotificationClickHandler,exports.installPrecache=R.installPrecache,exports.installPushHandler=L.installPushHandler,exports.installRuntimeCache=R.installRuntimeCache,exports.installSkipWaitingListener=L.installSkipWaitingListener,exports.isAndroid=r.isAndroid,exports.isAndroidWithoutPromptApi=r.isAndroidWithoutPromptApi,exports.isApiError=S.isApiError,exports.isAudioOutputSelectionSupported=u.isAudioOutputSelectionSupported,exports.isAudioRecordingSupported=d.isAudioRecordingSupported,exports.isBarcodeDetectionSupported=f.isBarcodeDetectionSupported,exports.isConditionalMediationAvailable=E.isConditionalMediationAvailable,exports.isCoordinate=U.isCoordinate,exports.isCursorPage=k.isCursorPage,exports.isDefined=b.isDefined,exports.isEmpty=y.isEmpty,exports.isGenerating=p.isGenerating,exports.isIOS=r.isIOS,exports.isJWTExpired=Xr.isJWTExpired,exports.isMediaCaptureSupported=pr.isMediaCaptureSupported,exports.isNumber=b.isNumber,exports.isOffsetPage=k.isOffsetPage,exports.isPasskeySupported=E.isPasskeySupported,exports.isPlainObject=b.isPlainObject,exports.isPlatformAuthenticatorAvailable=E.isPlatformAuthenticatorAvailable,exports.isPushSupported=F.isPushSupported,exports.isScreenCaptureSupported=ji.isScreenCaptureSupported,exports.isShareSupported=Ir.isShareSupported,exports.isSpeechRecognitionSupported=Mi.isSpeechRecognitionSupported,exports.isStandalone=r.isStandalone,exports.isString=b.isString,exports.isValidLatitude=U.isValidLatitude,exports.isValidLongitude=U.isValidLongitude,exports.isVideoRecordingSupported=B.isVideoRecordingSupported,exports.kebabCase=_.kebabCase,exports.lastAssistantId=p.lastAssistantId,exports.lastWriteWins=Pi.lastWriteWins,exports.lazyWithRetry=Zr.lazyWithRetry,exports.listQueryKey=M.listQueryKey,exports.matrixToPath=l.matrixToPath,exports.memoizeOne=x.memoizeOne,exports.moveItem=wt.moveItem,exports.normalizeBarcode=f.normalizeBarcode,exports.normalizeLongitude=U.normalizeLongitude,exports.nprogress=Lt.nprogress,exports.oklchToHex=J.oklchToHex,exports.omit=y.omit,exports.once=x.once,exports.oneQueryKey=M.oneQueryKey,exports.operatorsFor=m.operatorsFor,exports.parseResponse=Wr.parseResponse,exports.pathLengthKm=W.pathLengthKm,exports.percentOf=s.percentOf,exports.permissionsFromToken=ii.permissionsFromToken,exports.persistQueryClientOffline=mi.persistQueryClientOffline,exports.pick=y.pick,exports.pickAudioMimeType=d.pickAudioMimeType,exports.pickVideoMimeType=B.pickVideoMimeType,exports.playAudio=z.playAudio,exports.pluralize=_.pluralize,exports.projectMercator=q.projectMercator,exports.randomId=Pr.randomId,exports.range=v.range,exports.readDeviceProfile=aa.readDeviceProfile,exports.readThemeToken=qi.readThemeToken,exports.readableForeground=J.readableForeground,Object.defineProperty(exports,"redirect",{enumerable:!0,get:function(){return Q.redirect}}),exports.registerPeriodicSync=Ti.registerPeriodicSync,exports.registerServiceWorker=i.registerServiceWorker,exports.relativeLuminance=J.relativeLuminance,exports.relativeTime=hn.relativeTime,exports.removeById=A.removeById,exports.requestPersistentStorage=a.requestPersistentStorage,exports.retry=Br.retry,exports.rgbToHex=J.rgbToHex,exports.roleLabel=p.roleLabel,exports.scaleSteps=Z.scaleSteps,exports.sequentialScale=Z.sequentialScale,exports.setAudioOutput=u.setAudioOutput,exports.share=Ir.share,exports.shareOrDownloadBlob=Lr.shareOrDownloadBlob,exports.shouldRetryQuery=ci.shouldRetryQuery,exports.skipWaiting=i.skipWaiting,exports.sleep=Nr.sleep,exports.slugify=_.slugify,exports.stopAudio=z.stopAudio,exports.storage=Mr.storage,exports.tailSignature=p.tailSignature,exports.themeContrast=Y.themeContrast,exports.themeInitScript=Yi.themeInitScript,exports.themePresets=Ji.themePresets,exports.throttle=x.throttle,exports.toCsv=Rr.toCsv,exports.toRadians=W.toRadians,exports.truncate=_.truncate,exports.turnTime=p.turnTime,exports.uniqueBy=v.uniqueBy,exports.unmask=V.unmask,exports.unprojectMercator=q.unprojectMercator,exports.unregisterAllServiceWorkers=i.unregisterAllServiceWorkers,exports.uploadFingerprint=T.uploadFingerprint,exports.uploadWithProgress=Gr.uploadWithProgress,exports.upsertById=A.upsertById,exports.urlBase64ToUint8Array=F.urlBase64ToUint8Array,exports.useAccessControl=ei.useAccessControl,exports.useAnnounce=n.useAnnounce,exports.useAsync=Ve.useAsync,exports.useAudio=Di.useAudio,exports.useAudioRecorder=fr.useAudioRecorder,exports.useBarcodeScanner=vr.useBarcodeScanner,exports.useBeforeInstallPrompt=je.useBeforeInstallPrompt,exports.useBreakpoint=ie.useBreakpoint,exports.useCan=ti.useCan,exports.useClickOutside=vt.useClickOutside,exports.useClientFilter=Ie.useClientFilter,exports.useClipboard=Ke.useClipboard,exports.useCountdown=dt.useCountdown,exports.useCounter=ut.useCounter,exports.useCreate=M.useCreate,exports.useCursorQuery=di.useCursorQuery,exports.useDataProvider=j.useDataProvider,exports.useDebounce=Pe.useDebounce,exports.useDeepMemo=et.useDeepMemo,exports.useDelete=M.useDelete,exports.useDescribeApiError=Ur.useDescribeApiError,exports.useDisclosure=ct.useDisclosure,exports.useDocumentTitle=pt.useDocumentTitle,exports.useDocumentVisibility=Ue.useDocumentVisibility,exports.useErrorHandler=Fi.useErrorHandler,exports.useEventListener=Re.useEventListener,exports.useEventStream=Si.useEventStream,exports.useFavicon=mt.useFavicon,exports.useFeatureFlag=X.useFeatureFlag,Object.defineProperty(exports,"useFieldArray",{enumerable:!0,get:function(){return $.useFieldArray}}),exports.useFlagValue=X.useFlagValue,exports.useFocusTrap=Ze.useFocusTrap,Object.defineProperty(exports,"useForm",{enumerable:!0,get:function(){return $.useForm}}),Object.defineProperty(exports,"useFormContext",{enumerable:!0,get:function(){return $.useFormContext}}),Object.defineProperty(exports,"useFormState",{enumerable:!0,get:function(){return $.useFormState}}),exports.useGeolocation=Ye.useGeolocation,exports.useHover=ot.useHover,exports.useI18n=w.useI18n,exports.useIdle=Je.useIdle,exports.useInstallPrompt=St.useInstallPrompt,exports.useIntersectionObserver=We.useIntersectionObserver,exports.useInterval=nt.useInterval,exports.useIsFirstRender=yt.useIsFirstRender,exports.useKeyboardShortcut=qe.useKeyboardShortcut,exports.useLatestRef=$e.useLatestRef,exports.useList=M.useList,exports.useListState=lt.useListState,exports.useLocalStorage=ze.useLocalStorage,Object.defineProperty(exports,"useLocation",{enumerable:!0,get:function(){return Q.useLocation}}),exports.useLongPress=st.useLongPress,exports.useLongPressHandlers=xt.useLongPressHandlers,exports.useMap=ht.useMap,Object.defineProperty(exports,"useMatch",{enumerable:!0,get:function(){return Q.useMatch}}),exports.useMediaDevices=Dt.useMediaDevices,exports.useMediaPermission=Et.useMediaPermission,exports.useMediaQuery=Le.useMediaQuery,exports.useMicrophone=mr.useMicrophone,exports.useModals=Ft.useModals,Object.defineProperty(exports,"useNavigate",{enumerable:!0,get:function(){return Q.useNavigate}}),exports.useNotificationInbox=_n.useNotificationInbox,exports.useOAuthCallback=oi.useOAuthCallback,exports.useObjectUrl=bt.useObjectUrl,exports.useOfflineMutation=fi.useOfflineMutation,exports.useOfflineSync=kt.useOfflineSync,exports.useOne=M.useOne,exports.useOnline=He.useOnline,exports.useOptionalI18n=w.useOptionalI18n,exports.usePaginatedQuery=ui.usePaginatedQuery,exports.usePagination=Fe.usePagination,Object.defineProperty(exports,"useParams",{enumerable:!0,get:function(){return Q.useParams}}),exports.usePasskeyCapabilities=D.usePasskeyCapabilities,exports.usePasskeyRegistration=D.usePasskeyRegistration,exports.usePasskeySignIn=D.usePasskeySignIn,exports.usePoll=qr.usePoll,exports.usePositionTracker=Gi.usePositionTracker,exports.usePrevious=tt.usePrevious,exports.usePushSubscription=Ci.usePushSubscription,exports.useQueue=_t.useQueue,exports.useResizeObserver=Ge.useResizeObserver,Object.defineProperty(exports,"useRouteError",{enumerable:!0,get:function(){return Q.useRouteError}}),exports.useScreenCapture=ji.useScreenCapture,exports.useScrollLock=Xe.useScrollLock,exports.useScrollOverflow=Tt.useScrollOverflow,Object.defineProperty(exports,"useSearchParams",{enumerable:!0,get:function(){return Q.useSearchParams}}),exports.useServiceWorkerUpdate=Ct.useServiceWorkerUpdate,exports.useSet=gt.useSet,exports.useSfxPool=ki.useSfxPool,exports.useSortable=wt.useSortable,exports.useSpeechRecognition=Mi.useSpeechRecognition,exports.useStableCallback=Qe.useStableCallback,exports.useStorageEstimate=a.useStorageEstimate,exports.useSyncStatus=kt.useSyncStatus,exports.useTelemetry=Zi.useTelemetry,exports.useTheme=P.useTheme,exports.useThrottle=it.useThrottle,exports.useTimeout=rt.useTimeout,exports.useToast=c.useToast,exports.useToggle=Be.useToggle,exports.useTorch=_r.useTorch,exports.useTranslate=w.useTranslate,exports.useTypewriter=ft.useTypewriter,exports.useUpdate=M.useUpdate,exports.useViaCEP=Bi.useViaCEP,exports.useVideoRecorder=Ai.useVideoRecorder,Object.defineProperty(exports,"useWatch",{enumerable:!0,get:function(){return $.useWatch}}),exports.useWebSocket=Hi.useWebSocket,exports.useWindowSize=at.useWindowSize,exports.useZodForm=zi.useZodForm,exports.validateCNPJ=V.validateCNPJ,exports.validateCPF=V.validateCPF,exports.validateForm=Li.validateForm,exports.visibleTurns=p.visibleTurns,exports.withTimeout=Nr.withTimeout,exports.writeXlsx=Fr.writeXlsx,exports.zodResolver=Ri.zodResolver;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});/* empty css */const ee=require("./utils/cn.cjs"),te=require("./components/Accordion/Accordion.cjs"),ne=require("./components/Alert/Alert.cjs"),re=require("./utils/compare-values.cjs"),ie=require("./utils/dev-mode.cjs"),e=require("./utils/format.cjs"),ae=require("./utils/storage.cjs"),t=require("./utils/compressed-storage.cjs"),n=require("./utils/strings.cjs"),r=require("./utils/numbers.cjs"),oe=require("./utils/relative-time.cjs"),i=require("./utils/arrays.cjs"),a=require("./utils/objects.cjs"),o=require("./utils/guards.cjs"),s=require("./utils/functions.cjs"),se=require("./utils/promises.cjs"),ce=require("./utils/ids.cjs"),le=require("./utils/xlsx.cjs"),c=require("./share/share.cjs"),ue=require("./share/share-or-download.cjs"),l=require("./utils/csv.cjs"),de=require("./components/AppBar/AppBar.cjs"),fe=require("./hooks/use-breakpoint.cjs"),pe=require("./components/AppShell/AppShell.cjs"),me=require("./components/AspectRatio/AspectRatio.cjs"),he=require("./components/Avatar/Avatar.cjs"),ge=require("./components/AvatarGroup/AvatarGroup.cjs"),_e=require("./components/Badge/Badge.cjs"),ve=require("./components/Banner/Banner.cjs"),ye=require("./components/BottomNavigation/BottomNavigation.cjs"),be=require("./components/BottomSheet/BottomSheet.cjs"),xe=require("./components/Breadcrumbs/Breadcrumbs.cjs"),Se=require("./components/Button/Button.cjs"),Ce=require("./components/Card/Card.cjs"),we=require("./components/Center/Center.cjs"),Te=require("./components/Checkbox/Checkbox.cjs"),Ee=require("./components/ChipInput/ChipInput.cjs"),De=require("./components/Combobox/Combobox.cjs"),Oe=require("./components/Modal/Modal.cjs"),ke=require("./components/ConfirmDialog/ConfirmDialog.cjs"),Ae=require("./components/Input/Input.cjs"),je=require("./components/DatePicker/DatePicker.cjs"),Me=require("./components/Divider/Divider.cjs"),Ne=require("./components/Drawer/Drawer.cjs"),Pe=require("./components/DropdownMenu/DropdownMenu.cjs"),Fe=require("./components/Dropzone/Dropzone.cjs"),Ie=require("./components/EmptyState/EmptyState.cjs"),Le=require("./components/ErrorState/ErrorState.cjs"),Re=require("./components/FileUpload/FileUpload.cjs"),u=require("./components/Form/Form.cjs"),d=require("./components/Layout/Layout.cjs"),ze=require("./hooks/use-before-install-prompt.cjs"),Be=require("./components/InstallBanner/InstallBanner.cjs"),Ve=require("./components/InstallButton/InstallButton.cjs"),He=require("./hooks/use-debounce.cjs"),Ue=require("./hooks/use-pagination.cjs"),We=require("./hooks/use-client-filter.cjs"),Ge=require("./hooks/use-media-query.cjs"),Ke=require("./hooks/use-event-listener.cjs"),qe=require("./hooks/use-local-storage.cjs"),Je=require("./hooks/use-toggle.cjs"),Ye=require("./hooks/use-async.cjs"),Xe=require("./hooks/use-online.cjs"),Ze=require("./hooks/use-document-visibility.cjs"),Qe=require("./hooks/use-intersection-observer.cjs"),$e=require("./hooks/use-resize-observer.cjs"),et=require("./hooks/use-clipboard.cjs"),tt=require("./hooks/use-keyboard-shortcut.cjs"),nt=require("./hooks/use-idle.cjs"),rt=require("./hooks/use-geolocation.cjs"),it=require("./hooks/use-scroll-lock.cjs"),at=require("./hooks/use-focus-trap.cjs"),f=require("./hooks/use-announce.cjs"),ot=require("./hooks/use-stable-callback.cjs"),st=require("./hooks/use-latest-ref.cjs"),ct=require("./hooks/use-deep-memo.cjs"),lt=require("./hooks/use-previous.cjs"),ut=require("./hooks/use-interval.cjs"),dt=require("./hooks/use-timeout.cjs"),ft=require("./hooks/use-throttle.cjs"),pt=require("./hooks/use-window-size.cjs"),mt=require("./hooks/use-hover.cjs"),ht=require("./hooks/use-long-press.cjs"),gt=require("./hooks/use-disclosure.cjs"),_t=require("./hooks/use-list-state.cjs"),vt=require("./hooks/use-counter.cjs"),yt=require("./hooks/use-countdown.cjs"),bt=require("./hooks/use-typewriter.cjs"),xt=require("./hooks/use-document-title.cjs"),St=require("./hooks/use-favicon.cjs"),Ct=require("./hooks/use-map.cjs"),wt=require("./hooks/use-set.cjs"),Tt=require("./hooks/use-queue.cjs"),Et=require("./hooks/use-click-outside.cjs"),Dt=require("./hooks/use-is-first-render.cjs"),Ot=require("./hooks/use-object-url.cjs"),kt=require("./hooks/use-long-press-handlers.cjs"),p=require("./hooks/pwa-env.cjs"),At=require("./hooks/use-install-prompt.cjs"),m=require("./sw/register-service-worker.cjs"),jt=require("./hooks/use-service-worker-update.cjs"),h=require("./hooks/use-storage-estimate.cjs"),Mt=require("./hooks/use-sortable.cjs"),Nt=require("./hooks/use-scroll-overflow.cjs"),Pt=require("./hooks/use-media-permission.cjs"),Ft=require("./hooks/use-media-devices.cjs"),It=require("./components/OfflineIndicator/OfflineIndicator.cjs"),Lt=require("./offline/use-offline-sync.cjs"),Rt=require("./components/VisuallyHidden/VisuallyHidden.cjs"),zt=require("./components/SyncStatusBadge/SyncStatusBadge.cjs"),Bt=require("./components/UpdatePrompt/UpdatePrompt.cjs"),Vt=require("./components/Kanban/Kanban.cjs"),Ht=require("./components/Kbd/Kbd.cjs"),Ut=require("./components/ModalsManager/ModalsManager.cjs"),Wt=require("./components/Navbar/Navbar.cjs"),Gt=require("./components/NProgress/NProgress.cjs"),Kt=require("./components/Page/Page.cjs"),qt=require("./components/Pagination/Pagination.cjs"),Jt=require("./components/PasswordInput/PasswordInput.cjs"),Yt=require("./components/PinInput/PinInput.cjs"),Xt=require("./components/Popover/Popover.cjs"),Zt=require("./components/Progress/Progress.cjs"),Qt=require("./components/Radio/Radio.cjs"),$t=require("./components/RangeSlider/RangeSlider.cjs"),en=require("./components/RatingStars/RatingStars.cjs"),tn=require("./components/Responsive/Responsive.cjs"),nn=require("./components/SafeArea/SafeArea.cjs"),rn=require("./components/SearchBar/SearchBar.cjs"),an=require("./components/SegmentedControl/SegmentedControl.cjs"),on=require("./components/Select/Select.cjs"),sn=require("./components/Sidebar/Sidebar.cjs"),cn=require("./components/Skeleton/Skeleton.cjs"),ln=require("./components/Spacer/Spacer.cjs"),un=require("./components/Spinner/Spinner.cjs"),dn=require("./components/Stat/Stat.cjs"),fn=require("./components/Stepper/Stepper.cjs"),pn=require("./components/StepperInput/StepperInput.cjs"),mn=require("./components/Switch/Switch.cjs"),hn=require("./components/Tag/Tag.cjs"),gn=require("./components/Table/Table.cjs"),_n=require("./components/Tabs/Tabs.cjs"),vn=require("./components/Textarea/Textarea.cjs"),yn=require("./components/Timeline/Timeline.cjs"),bn=require("./components/Tooltip/Tooltip.cjs"),xn=require("./components/Toast/ToastProvider.cjs"),Sn=require("./components/ImageCropper/ImageCropper.cjs"),Cn=require("./components/Sparkline/Sparkline.cjs"),wn=require("./components/Scheduler/Scheduler.cjs"),Tn=require("./components/NotificationCenter/NotificationCenter.cjs"),En=require("./components/NotificationCenter/use-notification-inbox.cjs"),Dn=require("./components/VirtualList/VirtualList.cjs"),On=require("./components/VirtualTable/VirtualTable.cjs"),g=require("./components/QRCode/qr-encode.cjs"),kn=require("./components/QRCode/QRCode.cjs"),An=require("./components/CopyButton/CopyButton.cjs"),jn=require("./components/CodeBlock/CodeBlock.cjs"),Mn=require("./components/RelativeTime/RelativeTime.cjs"),Nn=require("./components/Money/Money.cjs"),Pn=require("./components/TreeView/TreeView.cjs"),Fn=require("./components/TruncateText/TruncateText.cjs"),In=require("./components/Portal/Portal.cjs"),Ln=require("./components/ClickOutside/ClickOutside.cjs"),Rn=require("./components/ConditionalWrapper/ConditionalWrapper.cjs"),zn=require("./components/For/For.cjs"),Bn=require("./components/ErrorText/ErrorText.cjs"),Vn=require("./components/Image/Image.cjs"),Hn=require("./components/DataList/DataList.cjs"),Un=require("./components/DescriptionList/DescriptionList.cjs"),Wn=require("./components/Toggle/Toggle.cjs"),Gn=require("./components/ToggleGroup/ToggleGroup.cjs"),Kn=require("./components/Label/Label.cjs"),qn=require("./components/Collapsible/Collapsible.cjs"),Jn=require("./components/ContextMenu/ContextMenu.cjs"),Yn=require("./components/HoverCard/HoverCard.cjs"),Xn=require("./components/Command/Command.cjs"),Zn=require("./components/ScrollArea/ScrollArea.cjs"),Qn=require("./components/Resizable/Resizable.cjs"),$n=require("./components/Calendar/Calendar.cjs"),er=require("./components/Slider/Slider.cjs"),tr=require("./components/MultiSelect/MultiSelect.cjs"),nr=require("./components/DateRangePicker/DateRangePicker.cjs"),rr=require("./components/NavigationMenu/NavigationMenu.cjs"),ir=require("./components/Menubar/Menubar.cjs"),ar=require("./components/Carousel/Carousel.cjs"),or=require("./components/DataTable/DataTable.cjs"),sr=require("./components/ListTile/ListTile.cjs"),cr=require("./components/FloatingActionButton/FloatingActionButton.cjs"),lr=require("./components/NavigationRail/NavigationRail.cjs"),ur=require("./components/TimePicker/TimePicker.cjs"),dr=require("./components/RefreshIndicator/RefreshIndicator.cjs"),fr=require("./components/Wizard/Wizard.cjs"),pr=require("./components/Lightbox/Lightbox.cjs"),mr=require("./components/SignaturePad/SignaturePad.cjs"),hr=require("./components/Chat/ChatComposer.cjs"),gr=require("./components/Chat/Chat.cjs"),_r=require("./audio/audio-output.cjs"),vr=require("./components/AudioPlayer/AudioPlayer.cjs"),yr=require("./capture/media-recorder.cjs"),_=require("./audio/audio-recorder.cjs"),br=require("./audio/level-meter.cjs"),xr=require("./audio/use-audio-recorder.cjs"),Sr=require("./audio/media-access.cjs"),Cr=require("./audio/use-microphone.cjs"),v=require("./audio/wav.cjs"),wr=require("./components/AudioRecorder/AudioRecorder.cjs"),y=require("./capture/barcode.cjs"),Tr=require("./capture/use-torch.cjs"),Er=require("./capture/use-barcode-scanner.cjs"),Dr=require("./components/BarcodeScanner/BarcodeScanner.cjs"),b=require("./components/AIChat/ai-chat-turns.cjs"),Or=require("./components/AIChat/AIChatComposer.cjs"),kr=require("./components/Markdown/Markdown.cjs"),Ar=require("./components/AIChat/AIChatTurn.cjs"),jr=require("./components/AIChat/AIChat.cjs"),Mr=require("./components/Transfer/Transfer.cjs"),Nr=require("./components/Masonry/Masonry.cjs"),Pr=require("./components/Tour/Tour.cjs"),Fr=require("./components/BarList/bar-list-model.cjs"),Ir=require("./components/BarList/BarList.cjs"),x=require("./components/FilterBar/filter-model.cjs"),Lr=require("./components/FilterBar/FilterBar.cjs"),Rr=require("./components/FilterBar/filter-apply.cjs"),zr=require("./components/FilterBar/filter-query.cjs"),Br=require("./http/build-url.cjs"),Vr=require("./http/errors.cjs"),Hr=require("./http/retry.cjs"),Ur=require("./http/api-client.cjs"),S=require("./http/describe-api-error.cjs"),Wr=require("./i18n/create-i18n.cjs"),C=require("./i18n/I18nProvider.cjs"),Gr=require("./http/use-describe-api-error.cjs"),Kr=require("./http/parse-response.cjs"),qr=require("./http/upload-with-progress.cjs"),Jr=require("./http/idempotency.cjs"),w=require("./http/resumable-upload.cjs"),Yr=require("./http/use-poll.cjs"),Xr=require("./auth/create-auth-store.cjs"),Zr=require("./auth/AuthGuard.cjs"),T=require("./auth/jwt.cjs"),Qr=require("./auth/lazy-with-retry.cjs"),$r=require("./auth/refresh-queue.cjs"),E=require("./auth/passkey.cjs"),D=require("./auth/use-passkey.cjs"),ei=require("./auth/create-tempest-auth.cjs"),ti=require("./access/access-control-context.cjs"),ni=require("./access/use-can.cjs"),ri=require("./access/Can.cjs"),ii=require("./access/create-role-access-control.cjs"),ai=require("./access/permissions-from-token.cjs"),oi=require("./oauth/GoogleSignIn.cjs"),si=require("./oauth/use-oauth-callback.cjs"),O=require("./query/constants.cjs"),ci=require("./query/create-query-keys.cjs"),li=require("./query/retry-policy.cjs"),ui=require("./query/QueryProvider.cjs"),k=require("./query/pagination.cjs"),di=require("./query/use-paginated-query.cjs"),fi=require("./query/use-cursor-query.cjs"),pi=require("./query/use-offline-mutation.cjs"),A=require("./query/optimistic.cjs"),mi=require("./offline/create-offline-store.cjs"),hi=require("./query/offline-persistence.cjs"),gi=require("./data/create-data-provider.cjs"),j=require("./data/data-provider-context.cjs"),M=require("./data/use-resource.cjs"),_i=require("./router/RouteGuard.cjs"),N=require("./router/AppRouter.cjs"),vi=require("./store/create-store.cjs"),yi=require("./store/create-selectors.cjs"),P=require("./theme/ThemeProvider.cjs"),bi=require("./error-boundary/ErrorBoundary.cjs"),xi=require("./app/AppProviders.cjs"),Si=require("./sse/create-event-stream.cjs"),Ci=require("./sse/use-event-stream.cjs"),F=require("./push/utils.cjs"),I=require("./push/web-push-client.cjs"),wi=require("./push/use-push-subscription.cjs"),L=require("./sw/create-push-handler.cjs"),R=require("./sw/cache.cjs"),Ti=require("./sw/background-sync.cjs"),Ei=require("./sw/periodic-sync.cjs"),Di=require("./sw/cache-inspect.cjs"),z=require("./audio/audio-player.cjs"),Oi=require("./audio/use-audio.cjs"),ki=require("./audio/sfx-pool.cjs"),Ai=require("./audio/use-sfx-pool.cjs"),B=require("./capture/video-recorder.cjs"),ji=require("./capture/use-video-recorder.cjs"),Mi=require("./capture/use-screen-capture.cjs"),Ni=require("./capture/use-speech-recognition.cjs"),Pi=require("./offline/create-offline-sync.cjs"),V=require("./offline/conflict.cjs"),Fi=require("./error-boundary/use-error-handler.cjs"),Ii=require("./forms/FormField.cjs"),Li=require("./forms/validate-form.cjs"),Ri=require("./forms/zod-resolver.cjs"),zi=require("./forms/use-zod-form.cjs"),H=require("./forms/br-validators.cjs"),U=require("./forms/masked-inputs.cjs"),Bi=require("./forms/use-viacep.cjs"),Vi=require("./ws/create-web-socket.cjs"),Hi=require("./ws/use-web-socket.cjs"),W=require("./geo/types.cjs"),G=require("./geo/distance.cjs"),K=require("./geo/estimate.cjs"),q=require("./geo/bounds.cjs"),J=require("./geo/projection.cjs"),Ui=require("./geo/routing.cjs"),Wi=require("./geo/create-position-tracker.cjs"),Gi=require("./geo/use-position-tracker.cjs"),Ki=require("./geo/TrajectoryMap.cjs"),qi=require("./theme/apply-theme.cjs"),Y=require("./theme/color.cjs"),Ji=require("./theme/create-theme.cjs"),Yi=require("./theme/theme-presets.cjs"),Xi=require("./theme/initial-theme.cjs"),Zi=require("./logger/logger.cjs"),Qi=require("./telemetry/TelemetryProvider.cjs"),$i=require("./telemetry/console-adapter.cjs"),ea=require("./telemetry/sentry-adapter.cjs"),ta=require("./telemetry/posthog-adapter.cjs"),X=require("./feature-flags/FeatureFlagsProvider.cjs"),na=require("./feature-flags/in-memory-adapter.cjs"),ra=require("./feature-flags/growthbook-adapter.cjs"),ia=require("./feature-flags/launchdarkly-adapter.cjs"),Z=require("./charts/scales.cjs"),aa=require("./perf/cache-size.cjs"),oa=require("./perf/device.cjs"),sa=require("./perf/format.cjs"),ca=require("./perf/profiler.cjs");let Q=require("react-router"),$=require("react-hook-form");exports.AIChat=jr.AIChat,exports.AIChatComposer=Or.AIChatComposer,exports.AIChatTurn=Ar.AIChatTurn,exports.ALL_BARCODE_FORMATS=y.ALL_BARCODE_FORMATS,exports.API_ERROR_OFFLINE_KEY=S.API_ERROR_OFFLINE_KEY,exports.AUDIO_MIME_CANDIDATES=_.AUDIO_MIME_CANDIDATES,exports.AccessControlProvider=ti.AccessControlProvider,exports.Accordion=te.Accordion,exports.Alert=ne.Alert,exports.AppBar=de.AppBar,exports.AppProviders=xi.AppProviders,exports.AppRouter=N.AppRouter,exports.AppShell=pe.AppShell,exports.AspectRatio=me.AspectRatio,exports.AudioPlayer=vr.AudioPlayer,exports.AudioRecorder=wr.AudioRecorder,exports.AuthGuard=Zr.AuthGuard,exports.Avatar=he.Avatar,exports.AvatarGroup=ge.AvatarGroup,exports.BREAKPOINTS=fe.BREAKPOINTS,exports.Badge=_e.Badge,exports.Banner=ve.Banner,exports.BarList=Ir.BarList,exports.BarcodeScanner=Dr.BarcodeScanner,exports.BottomNavigation=ye.BottomNavigation,exports.BottomSheet=be.BottomSheet,exports.Breadcrumbs=xe.Breadcrumbs,Object.defineProperty(exports,"BrowserRouter",{enumerable:!0,get:function(){return Q.BrowserRouter}}),exports.Button=Se.Button,exports.CACHE_TIME=O.CACHE_TIME,exports.CEPInput=U.CEPInput,exports.CNPJInput=U.CNPJInput,exports.CPFInput=U.CPFInput,exports.Calendar=$n.Calendar,exports.Can=ri.Can,exports.Card=Ce.Card,exports.Carousel=ar.Carousel,exports.Center=we.Center,exports.Chat=gr.Chat,exports.ChatComposer=hr.ChatComposer,exports.Checkbox=Te.Checkbox,exports.ChipInput=Ee.ChipInput,exports.ClickOutside=Ln.ClickOutside,exports.CodeBlock=jn.CodeBlock,exports.Collapsible=qn.Collapsible,exports.Combobox=De.Combobox,exports.Command=Xn.Command,exports.ConditionalWrapper=Rn.ConditionalWrapper,exports.ConfirmDialog=ke.ConfirmDialog,exports.Container=d.Container,exports.ContextMenu=Jn.ContextMenu,Object.defineProperty(exports,"Controller",{enumerable:!0,get:function(){return $.Controller}}),exports.CopyButton=An.CopyButton,exports.DEFAULT_API_ERROR_STRINGS=S.DEFAULT_API_ERROR_STRINGS,exports.DEFAULT_BARCODE_FORMATS=y.DEFAULT_BARCODE_FORMATS,exports.DEFAULT_CAR_SPEED_KMH=K.DEFAULT_CAR_SPEED_KMH,exports.DEFAULT_CHUNK_SIZE=w.DEFAULT_CHUNK_SIZE,exports.DEFAULT_CIRCUITY_FACTOR=K.DEFAULT_CIRCUITY_FACTOR,exports.DEFAULT_MODE_DURATION_FACTORS=K.DEFAULT_MODE_DURATION_FACTORS,exports.DEFAULT_PUB_KEY_CRED_PARAMS=E.DEFAULT_PUB_KEY_CRED_PARAMS,exports.DIVERGING_STEP_COUNT=Z.DIVERGING_STEP_COUNT,exports.DataList=Hn.DataList,exports.DataTable=or.DataTable,exports.DatePicker=je.DatePicker,exports.DateRangePicker=nr.DateRangePicker,exports.DescriptionList=Un.DescriptionList,exports.Divider=Me.Divider,exports.Drawer=Ne.Drawer,exports.DropdownMenu=Pe.DropdownMenu,exports.Dropzone=Fe.Dropzone,exports.EARTH_RADIUS_KM=G.EARTH_RADIUS_KM,exports.EmptyState=Ie.EmptyState,exports.ErrorBoundary=bi.ErrorBoundary,exports.ErrorState=Le.ErrorState,exports.ErrorText=Bn.ErrorText,exports.FeatureFlagsProvider=X.FeatureFlagsProvider,exports.FileUpload=Re.FileUpload,exports.FilterBar=Lr.FilterBar,exports.FloatingActionButton=cr.FloatingActionButton,exports.For=zn.For,exports.Form=u.Form,exports.FormActions=u.FormActions,exports.FormField=Ii.FormField,Object.defineProperty(exports,"FormProvider",{enumerable:!0,get:function(){return $.FormProvider}}),exports.FormRow=u.FormRow,exports.FormSection=u.FormSection,exports.GoogleSignIn=oi.GoogleSignIn,exports.Grid=d.Grid,Object.defineProperty(exports,"HashRouter",{enumerable:!0,get:function(){return Q.HashRouter}}),exports.Hide=tn.Hide,exports.HoverCard=Yn.HoverCard,exports.I18nProvider=C.I18nProvider,exports.Image=Vn.Image,exports.ImageCropper=Sn.ImageCropper,exports.Input=Ae.Input,exports.InstallBanner=Be.InstallBanner,exports.InstallButton=Ve.InstallButton,exports.Kanban=Vt.Kanban,exports.Kbd=Ht.Kbd,exports.Label=Kn.Label,exports.Lightbox=pr.Lightbox,Object.defineProperty(exports,"Link",{enumerable:!0,get:function(){return Q.Link}}),exports.ListTile=sr.ListTile,exports.Markdown=kr.Markdown,exports.Masonry=Nr.Masonry,Object.defineProperty(exports,"MemoryRouter",{enumerable:!0,get:function(){return Q.MemoryRouter}}),exports.Menubar=ir.Menubar,exports.Modal=Oe.Modal,exports.ModalsProvider=Ut.ModalsProvider,exports.Money=Nn.Money,exports.MoneyInput=U.MoneyInput,exports.MultiSelect=tr.MultiSelect,exports.NProgressBar=Gt.NProgressBar,Object.defineProperty(exports,"NavLink",{enumerable:!0,get:function(){return Q.NavLink}}),exports.Navbar=Wt.Navbar,Object.defineProperty(exports,"Navigate",{enumerable:!0,get:function(){return Q.Navigate}}),exports.NavigationMenu=rr.NavigationMenu,exports.NavigationRail=lr.NavigationRail,exports.NotificationCenter=Tn.NotificationCenter,exports.ORDINAL_START_STEP=Z.ORDINAL_START_STEP,exports.OfflineIndicator=It.OfflineIndicator,Object.defineProperty(exports,"Outlet",{enumerable:!0,get:function(){return Q.Outlet}}),exports.Page=Kt.Page,exports.Pagination=qt.Pagination,exports.PasskeyError=E.PasskeyError,exports.PasswordInput=Jt.PasswordInput,exports.PhoneInput=U.PhoneInput,exports.PinInput=Yt.PinInput,exports.Popover=Xt.Popover,exports.Portal=In.Portal,exports.Progress=Zt.Progress,exports.QRCapacityError=g.QRCapacityError,exports.QRCode=kn.QRCode,exports.QueryProvider=ui.QueryProvider,exports.REFETCH_TIME=O.REFETCH_TIME,exports.Radio=Qt.Radio,exports.RadioGroup=Qt.RadioGroup,exports.RangeSlider=$t.RangeSlider,exports.RatingStars=en.RatingStars,exports.RefreshIndicator=dr.RefreshIndicator,exports.RelativeTime=Mn.RelativeTime,exports.Resizable=Qn.Resizable,Object.defineProperty(exports,"Route",{enumerable:!0,get:function(){return Q.Route}}),exports.RouteGuard=_i.RouteGuard,Object.defineProperty(exports,"Routes",{enumerable:!0,get:function(){return Q.Routes}}),exports.SEQUENTIAL_STEP_COUNT=Z.SEQUENTIAL_STEP_COUNT,exports.STALE_TIME=O.STALE_TIME,exports.SafeArea=nn.SafeArea,exports.Scheduler=wn.Scheduler,exports.ScrollArea=Zn.ScrollArea,exports.SearchBar=rn.SearchBar,exports.SegmentedControl=an.SegmentedControl,exports.Select=on.Select,exports.Show=tn.Show,exports.Sidebar=sn.Sidebar,exports.SignaturePad=mr.SignaturePad,exports.Skeleton=cn.Skeleton,exports.Slider=er.Slider,exports.Spacer=ln.Spacer,exports.Sparkline=Cn.Sparkline,exports.Spinner=un.Spinner,exports.Stack=d.Stack,exports.Stat=dn.Stat,exports.Stepper=fn.Stepper,exports.StepperInput=pn.StepperInput,exports.Switch=mn.Switch,exports.SyncStatusBadge=zt.SyncStatusBadge,exports.Table=gn.Table,exports.Tabs=_n.Tabs,exports.Tag=hn.Tag,exports.TelemetryProvider=Qi.TelemetryProvider,exports.TempestApiError=Vr.TempestApiError,exports.TempestDataProvider=j.TempestDataProvider,exports.Textarea=vn.Textarea,exports.ThemeProvider=P.ThemeProvider,exports.TimePicker=ur.TimePicker,exports.Timeline=yn.Timeline,exports.ToastProvider=xn.ToastProvider,exports.Toggle=Wn.Toggle,exports.ToggleGroup=Gn.ToggleGroup,exports.ToggleGroupItem=Gn.ToggleGroupItem,exports.Tooltip=bn.Tooltip,exports.Tour=Pr.Tour,exports.TrajectoryMap=Ki.TrajectoryMap,exports.Transfer=Mr.Transfer,exports.TreeView=Pn.TreeView,exports.TruncateText=Fn.TruncateText,exports.UpdatePrompt=Bt.UpdatePrompt,exports.VirtualList=Dn.VirtualList,exports.VirtualTable=On.VirtualTable,exports.VisuallyHidden=Rt.VisuallyHidden,exports.WebPushClient=I.WebPushClient,exports.WebPushPermissionDeniedError=I.WebPushPermissionDeniedError,exports.WebPushUnsupportedError=I.WebPushUnsupportedError,exports.Wizard=fr.Wizard,exports.aiChatStrings=b.aiChatStrings,exports.announce=f.announce,exports.applyFilters=Rr.applyFilters,exports.applyKanbanMove=Vt.applyKanbanMove,exports.applyTheme=qi.applyTheme,exports.assertNever=o.assertNever,exports.base64UrlToBytes=E.base64UrlToBytes,exports.bearingDeg=G.bearingDeg,exports.blobToWav=v.blobToWav,exports.boundingBox=q.boundingBox,exports.boundsCenter=q.boundsCenter,exports.buildApiUrl=Br.buildApiUrl,exports.buildBarListRows=Fr.buildBarListRows,exports.buildOpenInChromeIntent=p.buildOpenInChromeIntent,exports.bytesToBase64Url=E.bytesToBase64Url,exports.cachedResponseBytes=aa.cachedResponseBytes,exports.camelCase=n.camelCase,exports.capitalize=n.capitalize,exports.chunk=i.chunk,exports.clamp=r.clamp,exports.clampLatitude=W.clampLatitude,exports.classifyPasskeyError=E.classifyPasskeyError,exports.clearAnnouncer=f.clearAnnouncer,exports.clearCaches=Di.clearCaches,exports.cn=ee.cn,exports.compareValues=re.compareValues,exports.compressToString=t.compressToString,exports.compressedStorage=t.compressedStorage,exports.compressedStorageCodec=t.compressedStorageCodec,exports.consoleSink=Zi.consoleSink,exports.consoleTelemetryAdapter=$i.consoleTelemetryAdapter,exports.contrastRatio=Y.contrastRatio,exports.createApiClient=Ur.createApiClient,exports.createAudioPlayer=z.createAudioPlayer,exports.createAudioRecorder=_.createAudioRecorder,exports.createAuthStore=Xr.createAuthStore,exports.createBarcodeDetector=y.createBarcodeDetector,exports.createColorScale=Y.createColorScale,exports.createDataProvider=gi.createDataProvider,exports.createEventStream=Si.createEventStream,exports.createGrowthBookFeatureFlagsAdapter=ra.createGrowthBookFeatureFlagsAdapter,exports.createI18n=Wr.createI18n,exports.createInMemoryFlags=na.createInMemoryFlags,exports.createInferenceProfiler=ca.createInferenceProfiler,exports.createLaunchDarklyFeatureFlagsAdapter=ia.createLaunchDarklyFeatureFlagsAdapter,exports.createLevelMeter=br.createLevelMeter,exports.createLocalUploadStorage=w.createLocalUploadStorage,exports.createLogger=Zi.createLogger,exports.createMediaRecorder=yr.createMediaRecorder,exports.createOSRMBackend=Ui.createOSRMBackend,exports.createOfflineStore=mi.createOfflineStore,exports.createOfflineSync=Pi.createOfflineSync,exports.createPartialResponse=R.createPartialResponse,exports.createPasskeyClient=E.createPasskeyClient,exports.createPositionTracker=Wi.createPositionTracker,exports.createPostHogTelemetryAdapter=ta.createPostHogTelemetryAdapter,exports.createQueryKeys=ci.createQueryKeys,exports.createRefreshQueue=$r.createRefreshQueue,exports.createResumableUpload=w.createResumableUpload,exports.createRoleAccessControl=ii.createRoleAccessControl,exports.createSelectors=yi.createSelectors,exports.createSentryTelemetryAdapter=ea.createSentryTelemetryAdapter,exports.createSfxPool=ki.createSfxPool,exports.createStore=vi.createStore,exports.createTempestAuth=ei.createTempestAuth,exports.createTheme=Ji.createTheme,exports.createVideoRecorder=B.createVideoRecorder,exports.createWebSocket=Vi.createWebSocket,exports.debounce=s.debounce,exports.decodeJWT=T.decodeJWT,exports.decompressFromString=t.decompressFromString,exports.deepMerge=a.deepMerge,exports.defineRoutes=N.defineRoutes,exports.describeApiError=S.describeApiError,exports.describeFilter=x.describeFilter,exports.divergingScale=Z.divergingScale,exports.downloadCsv=l.downloadCsv,exports.emptyOffsetPage=k.emptyOffsetPage,exports.encodeQR=g.encodeQR,exports.encodeWav=v.encodeWav,exports.estimatePasswordStrength=Jt.estimatePasswordStrength,exports.estimateStorage=h.estimateStorage,exports.estimateTravel=K.estimateTravel,exports.expandBounds=q.expandBounds,exports.filtersFromSearchParams=x.filtersFromSearchParams,exports.filtersToQueryParams=zr.filtersToQueryParams,exports.filtersToSearchParams=x.filtersToSearchParams,exports.fitProjection=J.fitProjection,exports.formatBytes=r.formatBytes,exports.formatCEP=H.formatCEP,exports.formatCNPJ=H.formatCNPJ,exports.formatCPF=e.formatCPF,exports.formatCompactNumber=r.formatCompactNumber,exports.formatCurrency=e.formatCurrency,exports.formatDate=e.formatDate,exports.formatDateForInput=e.formatDateForInput,exports.formatDateTime=e.formatDateTime,exports.formatDurationMs=sa.formatDurationMs,exports.formatPercent=e.formatPercent,exports.formatPhone=e.formatPhone,exports.generateIdempotencyKey=Jr.generateIdempotencyKey,exports.getInitialTheme=Xi.getInitialTheme,exports.getSupportedBarcodeFormats=y.getSupportedBarcodeFormats,exports.getThemePreset=Yi.getThemePreset,exports.groupBy=i.groupBy,exports.haversineKm=G.haversineKm,exports.hexToOklch=Y.hexToOklch,exports.hexToRgb=Y.hexToRgb,exports.hexToRgbaString=Y.hexToRgbaString,exports.higherVersionWins=V.higherVersionWins,exports.inspectCaches=Di.inspectCaches,exports.installBackgroundSync=Ti.installBackgroundSync,exports.installNotificationClickHandler=L.installNotificationClickHandler,exports.installPrecache=R.installPrecache,exports.installPushHandler=L.installPushHandler,exports.installRuntimeCache=R.installRuntimeCache,exports.installSkipWaitingListener=L.installSkipWaitingListener,exports.isAndroid=p.isAndroid,exports.isAndroidWithoutPromptApi=p.isAndroidWithoutPromptApi,exports.isApiError=Vr.isApiError,exports.isAudioOutputSelectionSupported=_r.isAudioOutputSelectionSupported,exports.isAudioRecordingSupported=_.isAudioRecordingSupported,exports.isBarcodeDetectionSupported=y.isBarcodeDetectionSupported,exports.isConditionalMediationAvailable=E.isConditionalMediationAvailable,exports.isCoordinate=W.isCoordinate,exports.isCursorPage=k.isCursorPage,exports.isDefined=o.isDefined,exports.isDevBuild=ie.isDevBuild,exports.isEmpty=a.isEmpty,exports.isGenerating=b.isGenerating,exports.isIOS=p.isIOS,exports.isJWTExpired=T.isJWTExpired,exports.isMediaCaptureSupported=Sr.isMediaCaptureSupported,exports.isNumber=o.isNumber,exports.isOffsetPage=k.isOffsetPage,exports.isPasskeySupported=E.isPasskeySupported,exports.isPlainObject=o.isPlainObject,exports.isPlatformAuthenticatorAvailable=E.isPlatformAuthenticatorAvailable,exports.isPushSupported=F.isPushSupported,exports.isScreenCaptureSupported=Mi.isScreenCaptureSupported,exports.isShareSupported=c.isShareSupported,exports.isSpeechRecognitionSupported=Ni.isSpeechRecognitionSupported,exports.isStandalone=p.isStandalone,exports.isString=o.isString,exports.isValidLatitude=W.isValidLatitude,exports.isValidLongitude=W.isValidLongitude,exports.isVideoRecordingSupported=B.isVideoRecordingSupported,exports.kebabCase=n.kebabCase,exports.lastAssistantId=b.lastAssistantId,exports.lastWriteWins=V.lastWriteWins,exports.lazyWithRetry=Qr.lazyWithRetry,exports.listQueryKey=M.listQueryKey,exports.matrixToPath=g.matrixToPath,exports.memoizeOne=s.memoizeOne,exports.moveItem=Mt.moveItem,exports.normalizeBarcode=y.normalizeBarcode,exports.normalizeLongitude=W.normalizeLongitude,exports.nprogress=Gt.nprogress,exports.oklchToHex=Y.oklchToHex,exports.omit=a.omit,exports.once=s.once,exports.oneQueryKey=M.oneQueryKey,exports.operatorsFor=x.operatorsFor,exports.parseResponse=Kr.parseResponse,exports.pathLengthKm=G.pathLengthKm,exports.percentOf=r.percentOf,exports.permissionsFromToken=ai.permissionsFromToken,exports.persistQueryClientOffline=hi.persistQueryClientOffline,exports.pick=a.pick,exports.pickAudioMimeType=_.pickAudioMimeType,exports.pickVideoMimeType=B.pickVideoMimeType,exports.playAudio=z.playAudio,exports.pluralize=n.pluralize,exports.projectMercator=J.projectMercator,exports.randomId=ce.randomId,exports.range=i.range,exports.readDeviceProfile=oa.readDeviceProfile,exports.readThemeToken=qi.readThemeToken,exports.readableForeground=Y.readableForeground,Object.defineProperty(exports,"redirect",{enumerable:!0,get:function(){return Q.redirect}}),exports.registerPeriodicSync=Ei.registerPeriodicSync,exports.registerServiceWorker=m.registerServiceWorker,exports.relativeLuminance=Y.relativeLuminance,exports.relativeTime=oe.relativeTime,exports.removeById=A.removeById,exports.requestPersistentStorage=h.requestPersistentStorage,exports.retry=Hr.retry,exports.rgbToHex=Y.rgbToHex,exports.roleLabel=b.roleLabel,exports.scaleSteps=Z.scaleSteps,exports.sequentialScale=Z.sequentialScale,exports.setAudioOutput=_r.setAudioOutput,exports.share=c.share,exports.shareOrDownloadBlob=ue.shareOrDownloadBlob,exports.shouldRetryQuery=li.shouldRetryQuery,exports.skipWaiting=m.skipWaiting,exports.sleep=se.sleep,exports.slugify=n.slugify,exports.stopAudio=z.stopAudio,exports.storage=ae.storage,exports.tailSignature=b.tailSignature,exports.themeContrast=Ji.themeContrast,exports.themeInitScript=Xi.themeInitScript,exports.themePresets=Yi.themePresets,exports.throttle=s.throttle,exports.toCsv=l.toCsv,exports.toRadians=G.toRadians,exports.truncate=n.truncate,exports.turnTime=b.turnTime,exports.uniqueBy=i.uniqueBy,exports.unmask=H.unmask,exports.unprojectMercator=J.unprojectMercator,exports.unregisterAllServiceWorkers=m.unregisterAllServiceWorkers,exports.uploadFingerprint=w.uploadFingerprint,exports.uploadWithProgress=qr.uploadWithProgress,exports.upsertById=A.upsertById,exports.urlBase64ToUint8Array=F.urlBase64ToUint8Array,exports.useAccessControl=ti.useAccessControl,exports.useAnnounce=f.useAnnounce,exports.useAsync=Ye.useAsync,exports.useAudio=Oi.useAudio,exports.useAudioRecorder=xr.useAudioRecorder,exports.useBarcodeScanner=Er.useBarcodeScanner,exports.useBeforeInstallPrompt=ze.useBeforeInstallPrompt,exports.useBreakpoint=fe.useBreakpoint,exports.useCan=ni.useCan,exports.useClickOutside=Et.useClickOutside,exports.useClientFilter=We.useClientFilter,exports.useClipboard=et.useClipboard,exports.useCountdown=yt.useCountdown,exports.useCounter=vt.useCounter,exports.useCreate=M.useCreate,exports.useCursorQuery=fi.useCursorQuery,exports.useDataProvider=j.useDataProvider,exports.useDebounce=He.useDebounce,exports.useDeepMemo=ct.useDeepMemo,exports.useDelete=M.useDelete,exports.useDescribeApiError=Gr.useDescribeApiError,exports.useDisclosure=gt.useDisclosure,exports.useDocumentTitle=xt.useDocumentTitle,exports.useDocumentVisibility=Ze.useDocumentVisibility,exports.useErrorHandler=Fi.useErrorHandler,exports.useEventListener=Ke.useEventListener,exports.useEventStream=Ci.useEventStream,exports.useFavicon=St.useFavicon,exports.useFeatureFlag=X.useFeatureFlag,Object.defineProperty(exports,"useFieldArray",{enumerable:!0,get:function(){return $.useFieldArray}}),exports.useFlagValue=X.useFlagValue,exports.useFocusTrap=at.useFocusTrap,Object.defineProperty(exports,"useForm",{enumerable:!0,get:function(){return $.useForm}}),Object.defineProperty(exports,"useFormContext",{enumerable:!0,get:function(){return $.useFormContext}}),Object.defineProperty(exports,"useFormState",{enumerable:!0,get:function(){return $.useFormState}}),exports.useGeolocation=rt.useGeolocation,exports.useHover=mt.useHover,exports.useI18n=C.useI18n,exports.useIdle=nt.useIdle,exports.useInstallPrompt=At.useInstallPrompt,exports.useIntersectionObserver=Qe.useIntersectionObserver,exports.useInterval=ut.useInterval,exports.useIsFirstRender=Dt.useIsFirstRender,exports.useKeyboardShortcut=tt.useKeyboardShortcut,exports.useLatestRef=st.useLatestRef,exports.useList=M.useList,exports.useListState=_t.useListState,exports.useLocalStorage=qe.useLocalStorage,Object.defineProperty(exports,"useLocation",{enumerable:!0,get:function(){return Q.useLocation}}),exports.useLongPress=ht.useLongPress,exports.useLongPressHandlers=kt.useLongPressHandlers,exports.useMap=Ct.useMap,Object.defineProperty(exports,"useMatch",{enumerable:!0,get:function(){return Q.useMatch}}),exports.useMediaDevices=Ft.useMediaDevices,exports.useMediaPermission=Pt.useMediaPermission,exports.useMediaQuery=Ge.useMediaQuery,exports.useMicrophone=Cr.useMicrophone,exports.useModals=Ut.useModals,Object.defineProperty(exports,"useNavigate",{enumerable:!0,get:function(){return Q.useNavigate}}),exports.useNotificationInbox=En.useNotificationInbox,exports.useOAuthCallback=si.useOAuthCallback,exports.useObjectUrl=Ot.useObjectUrl,exports.useOfflineMutation=pi.useOfflineMutation,exports.useOfflineSync=Lt.useOfflineSync,exports.useOne=M.useOne,exports.useOnline=Xe.useOnline,exports.useOptionalI18n=C.useOptionalI18n,exports.usePaginatedQuery=di.usePaginatedQuery,exports.usePagination=Ue.usePagination,Object.defineProperty(exports,"useParams",{enumerable:!0,get:function(){return Q.useParams}}),exports.usePasskeyCapabilities=D.usePasskeyCapabilities,exports.usePasskeyRegistration=D.usePasskeyRegistration,exports.usePasskeySignIn=D.usePasskeySignIn,exports.usePoll=Yr.usePoll,exports.usePositionTracker=Gi.usePositionTracker,exports.usePrevious=lt.usePrevious,exports.usePushSubscription=wi.usePushSubscription,exports.useQueue=Tt.useQueue,exports.useResizeObserver=$e.useResizeObserver,Object.defineProperty(exports,"useRouteError",{enumerable:!0,get:function(){return Q.useRouteError}}),exports.useScreenCapture=Mi.useScreenCapture,exports.useScrollLock=it.useScrollLock,exports.useScrollOverflow=Nt.useScrollOverflow,Object.defineProperty(exports,"useSearchParams",{enumerable:!0,get:function(){return Q.useSearchParams}}),exports.useServiceWorkerUpdate=jt.useServiceWorkerUpdate,exports.useSet=wt.useSet,exports.useSfxPool=Ai.useSfxPool,exports.useSortable=Mt.useSortable,exports.useSpeechRecognition=Ni.useSpeechRecognition,exports.useStableCallback=ot.useStableCallback,exports.useStorageEstimate=h.useStorageEstimate,exports.useSyncStatus=Lt.useSyncStatus,exports.useTelemetry=Qi.useTelemetry,exports.useTheme=P.useTheme,exports.useThrottle=ft.useThrottle,exports.useTimeout=dt.useTimeout,exports.useToast=xn.useToast,exports.useToggle=Je.useToggle,exports.useTorch=Tr.useTorch,exports.useTranslate=C.useTranslate,exports.useTypewriter=bt.useTypewriter,exports.useUpdate=M.useUpdate,exports.useViaCEP=Bi.useViaCEP,exports.useVideoRecorder=ji.useVideoRecorder,Object.defineProperty(exports,"useWatch",{enumerable:!0,get:function(){return $.useWatch}}),exports.useWebSocket=Hi.useWebSocket,exports.useWindowSize=pt.useWindowSize,exports.useZodForm=zi.useZodForm,exports.validateCNPJ=H.validateCNPJ,exports.validateCPF=H.validateCPF,exports.validateForm=Li.validateForm,exports.visibleTurns=b.visibleTurns,exports.withTimeout=se.withTimeout,exports.writeXlsx=le.writeXlsx,exports.zodResolver=Ri.zodResolver;
@@ -600,6 +600,26 @@ export declare interface ApiClientConfig {
600
600
  * after a refresh that resolved. Use it to end the session.
601
601
  */
602
602
  onUnauthorized?: (response: Response) => void | Promise<void>;
603
+ /**
604
+ * Where the client reports each request it finished. Off when absent — the
605
+ * client writes to no console of its own.
606
+ *
607
+ * One entry per attempt (so a refresh replay and every retry show up), at
608
+ * `debug` under 400 and at `warn` from 400 up, carrying `requestId`,
609
+ * `status` and the elapsed `ms`. Firing `onUnauthorized` gets its own `warn`,
610
+ * which is what a session dying mid-session looks like in the log.
611
+ *
612
+ * Deliberately **not** a `debug: boolean`: the level lives in the logger you
613
+ * pass, so `createLogger({ level })` decides what survives, the sink decides
614
+ * where it goes (console in dev, Sentry in production, an array in a test),
615
+ * and one namespace per client keeps two clients apart.
616
+ *
617
+ * Never logs a body, a header, or the query string — a bearer token in
618
+ * `Authorization`, a password in a login payload and an `access_token` query
619
+ * param would all end up in whatever the sink writes to. What is logged is
620
+ * the method, the path as the call site wrote it, and the numbers.
621
+ */
622
+ logger?: ApiClientLogger;
603
623
  /**
604
624
  * Optional refresh hook. When provided and the original request returns 401,
605
625
  * the client awaits `refresh()` then retries the request once.
@@ -633,6 +653,13 @@ export declare interface ApiClientConfig {
633
653
  fetcher?: typeof fetch;
634
654
  }
635
655
 
656
+ /**
657
+ * The slice of {@link Logger} the client writes to: `debug` for a request that
658
+ * came back under 400, `warn` for everything else. Structural, so the SDK
659
+ * logger fits without adapting and so does any object with those two methods.
660
+ */
661
+ export declare type ApiClientLogger = Pick<Logger, "debug" | "warn">;
662
+
636
663
  export declare interface ApiError {
637
664
  /** HTTP status code (0 for network failures). */
638
665
  status: number;
@@ -2798,12 +2825,19 @@ export declare const CPFInput: ForwardRefExoticComponent<Omit<InputProps, "value
2798
2825
  * **Retries** are off unless you set `retry`. See {@link ApiClientConfig.retry}
2799
2826
  * for the built-in policy; it never replays a write.
2800
2827
  *
2828
+ * **Logging** is off unless you pass a `logger`. With one, every finished attempt
2829
+ * writes a line — `debug` under 400, `warn` from 400 up, plus a `warn` when
2830
+ * `onUnauthorized` fires — carrying `requestId`, `status` and elapsed `ms`, and
2831
+ * never a body, header or query string. The level and the destination belong to
2832
+ * the logger, not to a boolean here.
2833
+ *
2801
2834
  * @example
2802
2835
  * const api = createApiClient({
2803
2836
  * baseURL: import.meta.env.VITE_API_URL,
2804
2837
  * getToken: () => useAuthStore.getState().token,
2805
2838
  * refresh,
2806
2839
  * onUnauthorized: () => useAuthStore.getState().logout(),
2840
+ * logger: createLogger({ level: import.meta.env.DEV ? "debug" : "warn" }).child("http"),
2807
2841
  * retry: true,
2808
2842
  * });
2809
2843
  *
@@ -6390,6 +6424,42 @@ export declare function isCursorPage<T = unknown>(value: unknown): value is Curs
6390
6424
  */
6391
6425
  export declare function isDefined<T>(value: T | null | undefined): value is T;
6392
6426
 
6427
+ /**
6428
+ * Whether the consuming app was built for development.
6429
+ *
6430
+ * Reads `process.env.NODE_ENV`, which every supported bundler (Vite, webpack,
6431
+ * Rspack, Parcel) replaces with a literal **while building the app**. That
6432
+ * timing is the whole point: `import.meta.env.DEV` looks equivalent and is not,
6433
+ * because Vite replaces it while building *this package*, so a published
6434
+ * artifact carries the constant `false` and every guard behind it becomes dead
6435
+ * code the app's own dev server can no longer switch on.
6436
+ *
6437
+ * The expression is written out in full, and the failure is caught rather than
6438
+ * guarded against. A `typeof process === "undefined"` check would read as the
6439
+ * careful version and quietly reintroduce the bug: bundlers substitute the
6440
+ * member expression `process.env.NODE_ENV` and nothing else, so in a browser —
6441
+ * where the identifier `process` does not exist — the guard would return early
6442
+ * while the literal right after it had already been replaced with
6443
+ * `"development"`.
6444
+ *
6445
+ * Returns `false` when the read throws, which is the environment that defines
6446
+ * neither symbol: a raw service-worker context, a plain
6447
+ * `<script type="module">`, a bundler substituting nothing. Staying quiet there
6448
+ * is deliberate — a dev-only warning that cannot prove it is in development is
6449
+ * better silent than shouting in someone's production console.
6450
+ *
6451
+ * @returns Whether development-only diagnostics should run.
6452
+ *
6453
+ * @example
6454
+ * if (isDevBuild()) console.warn("[my-app] this prop combination does nothing");
6455
+ *
6456
+ * @tempest-limits empty-catch — the only thing the read can throw is the
6457
+ * environment answering "not defined", which is the return value, not an error
6458
+ * worth reporting. Logging it would print on every call in exactly the context
6459
+ * that has nowhere to print.
6460
+ */
6461
+ export declare function isDevBuild(): boolean;
6462
+
6393
6463
  /**
6394
6464
  * Check whether a value is considered "empty".
6395
6465
  *