@camstack/ui-library 1.2.298 → 1.2.300

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 (25) hide show
  1. package/dist/{MotionZonesSettings-Bv8XzCa3.js → MotionZonesSettings-C3Tj12yc.js} +1 -1
  2. package/dist/{PrivacyMaskSettings-BlkbESYj.js → PrivacyMaskSettings-C9wfHkiB.js} +1 -1
  3. package/dist/{SceneMonitorEditor-i3-nXAEU.js → SceneMonitorEditor-30H29vN4.js} +1 -1
  4. package/dist/composites/addon-global-settings-form.d.ts +1 -1
  5. package/dist/composites/config-form-field.d.ts +3 -1
  6. package/dist/composites/device-controls/ac-panel.d.ts +14 -1
  7. package/dist/composites/device-controls/climate-panel.d.ts +4 -1
  8. package/dist/composites/device-controls/dishwasher-control.d.ts +17 -0
  9. package/dist/composites/device-controls/heating-valve-readout.d.ts +4 -0
  10. package/dist/composites/device-controls/types.d.ts +1 -1
  11. package/dist/composites/index.d.ts +2 -0
  12. package/dist/composites/record-entries/entry-json-schema-form.d.ts +11 -0
  13. package/dist/composites/record-entries/index.d.ts +4 -0
  14. package/dist/composites/record-entries/record-entries-hub.d.ts +9 -0
  15. package/dist/composites/record-entries/record-entries-panel.d.ts +6 -0
  16. package/dist/composites/record-entries/record-entry-secrets.d.ts +9 -0
  17. package/dist/composites/storage-records/index.d.ts +2 -0
  18. package/dist/composites/storage-records/storage-records-hub.d.ts +4 -0
  19. package/dist/composites/storage-records/storage-records-panel.d.ts +6 -0
  20. package/dist/generated/system-hooks.d.ts +20 -0
  21. package/dist/{icons-CLC60C-_.cjs → icons-B1AFXUaZ.cjs} +2 -78
  22. package/dist/{icons-BXXScOuy.js → icons-BT8c2hxp.js} +1 -77
  23. package/dist/index.cjs +1656 -186
  24. package/dist/index.js +1638 -193
  25. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { TEXT_HINT, UiTrans, WidgetPanel, _n as Grid2x2, isAbsentProvider, useDeviceProxy, usePlayerOverlayLayer, useSystem, useUiText } from "./index.js";
1
+ import { TEXT_HINT, UiTrans, WidgetPanel, isAbsentProvider, useDeviceProxy, usePlayerOverlayLayer, useSystem, useUiText, yn as Grid2x2 } from "./index.js";
2
2
  import { MaskShapeCanvas } from "./MaskShapeCanvas-C9cJlxvG.js";
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  import { n as Hexagon, t as MicOff } from "./mic-off-C2VTYr91.js";
2
- import { Ht as Mic, TEXT_HINT, UiTrans, V as Square, WidgetPanel, isAbsentProvider, jn as EyeOff, k as Trash2, useDeviceProxy, usePlayerOverlayLayer, useSystem, useUiText } from "./index.js";
2
+ import { H as Square, Nn as EyeOff, TEXT_HINT, UiTrans, Ut as Mic, WidgetPanel, isAbsentProvider, k as Trash2, useDeviceProxy, usePlayerOverlayLayer, useSystem, useUiText } from "./index.js";
3
3
  import { MaskShapeCanvas } from "./MaskShapeCanvas-C9cJlxvG.js";
4
4
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  import { t as Settings2 } from "./settings-2-jT1iBqHD.js";
2
- import { SCENE_CAPTURE_VARIANTS, TEXT_HINT, UiTrans, badgeFor, coverageLine, dt as RotateCcw, hubPath, isAbsentProvider, k as Trash2, roiTooLarge, statusLine, un as ImageOff, useDeviceProxy, useDeviceSnapshotImage, useDeviceStateSlice, useSystem, useUiText, variantLabel, vr as Camera } from "./index.js";
2
+ import { SCENE_CAPTURE_VARIANTS, TEXT_HINT, UiTrans, badgeFor, br as Camera, coverageLine, dn as ImageOff, ft as RotateCcw, hubPath, isAbsentProvider, k as Trash2, roiTooLarge, statusLine, useDeviceProxy, useDeviceSnapshotImage, useDeviceStateSlice, useSystem, useUiText, variantLabel } from "./index.js";
3
3
  import { MaskShapeCanvas } from "./MaskShapeCanvas-C9cJlxvG.js";
4
4
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  import { type JSX } from "react";
2
- import type { ConfigUISchemaWithValues } from "@camstack/types";
2
+ import { type ConfigUISchemaWithValues } from "@camstack/types";
3
3
  interface AddonGlobalSettingsFormTrpc {
4
4
  addonSettings: {
5
5
  getGlobalSettings: {
@@ -10,6 +10,8 @@ interface FormFieldProps {
10
10
  field: ConfigField;
11
11
  values: Record<string, unknown>;
12
12
  onChange: (key: string, value: unknown) => void;
13
+ /** Apply several form keys in one update (e.g. addon-action-button assignResult). */
14
+ onChangeMany?: (patch: Record<string, unknown>) => void;
13
15
  disabled?: boolean;
14
16
  translationFn?: TranslationFn;
15
17
  /**
@@ -67,5 +69,5 @@ export declare function NodeMultiSelectField({ field, value, onChange, disabled,
67
69
  * rendered without instantiating a React subtree.
68
70
  */
69
71
  export declare function isFieldVisible(field: ConfigField, values: Record<string, unknown>, allFields?: readonly ConfigField[]): boolean;
70
- export declare function FormField({ field, values, onChange, disabled, translationFn, onTestField, externalProbe, allFields, onAction }: FormFieldProps): JSX.Element | null;
72
+ export declare function FormField({ field, values, onChange, onChangeMany, disabled, translationFn, onTestField, externalProbe, allFields, onAction }: FormFieldProps): JSX.Element | null;
71
73
  export { FormField as ConfigFormField };
@@ -1,3 +1,16 @@
1
- import type { ReactNode } from "react";
1
+ import { type ReactNode } from "react";
2
+ import type { ClimateControlStatus, HvacMode } from "@camstack/types";
2
3
  import type { ControlPanelProps } from "./types.js";
4
+ /** A heater offers heat (and maybe auto/off) and none of the cooling modes. */
5
+ export declare function climateOffersCooling(modes: readonly HvacMode[]): boolean;
6
+ /** Setpoint track bounds. Absent when the integration did not report both ends. */
7
+ export declare function climateSetpointBounds(status: Pick<ClimateControlStatus, "minTemp" | "maxTemp">): {
8
+ readonly min: number;
9
+ readonly max: number;
10
+ } | null;
11
+ /** Map a 0–1 drag fraction onto the setpoint, snapped to `tempStep`. */
12
+ export declare function climateTargetFromFraction(fraction: number, bounds: {
13
+ readonly min: number;
14
+ readonly max: number;
15
+ }, tempStep: number | null | undefined): number;
3
16
  export declare function AcPanel({ trpc, deviceId, layout, optimistic }: ControlPanelProps): ReactNode;
@@ -1,6 +1,9 @@
1
1
  import type { ReactNode } from "react";
2
2
  import type { ControlPanelProps } from "./types.js";
3
- import type { HvacMode } from "@camstack/types";
3
+ import type { ClimateControlStatus, HvacMode } from "@camstack/types";
4
+ /** Step size for target ± buttons; defaults to 1 °C when unset or invalid. */
5
+ export declare function resolveClimateTempStep(tempStep: number | null | undefined): number;
6
+ export declare function nextClimateTarget(current: number, deltaSteps: number, display: Pick<ClimateControlStatus, "tempStep" | "minTemp" | "maxTemp">): number;
4
7
  /**
5
8
  * Exhaustive colour map — one entry per HvacMode. Build will fail if a
6
9
  * mode is added to the enum and not reflected here (Record<HvacMode, ...>
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Dishwasher controls for a `DeviceType.Dishwasher` device.
3
+ *
4
+ * Reads the `dishwasher` cap status slice and renders inline + hero surfaces
5
+ * mirroring vacuum-control / pet-feeder patterns.
6
+ */
7
+ import { type UiTextFn } from "../../contexts/ui-text";
8
+ import type { ReactNode } from "react";
9
+ import type { DishwasherState } from "@camstack/types";
10
+ import type { DeviceControlProps } from "./control-registry";
11
+ export interface DishwasherStateMeta {
12
+ readonly label: string;
13
+ readonly tone: string;
14
+ }
15
+ export declare function dishwasherStateMeta(state: DishwasherState | undefined, t?: UiTextFn): DishwasherStateMeta;
16
+ export declare function DishwasherInlineControl(props: DeviceControlProps): ReactNode;
17
+ export declare function DishwasherHeroCard(props: DeviceControlProps): ReactNode;
@@ -0,0 +1,4 @@
1
+ import type { ReactNode } from "react";
2
+ import type { ControlPanelProps } from "./types.js";
3
+ export declare function formatHeatingValvePosition(position: number | null): string;
4
+ export declare function HeatingValveReadout({ trpc, deviceId, layout }: Pick<ControlPanelProps, "trpc" | "deviceId" | "layout">): ReactNode;
@@ -13,5 +13,5 @@ export interface ControlPanelProps {
13
13
  /** Cap names whose presence (bound on a device) means it has a control surface.
14
14
  * Single source of truth shared by the row registry and the detail Controls tab
15
15
  * so the two never drift. */
16
- export declare const CONTROL_CAP_NAMES: readonly ["cover", "lock-control", "switch", "brightness", "fan-control", "climate-control", "media-player", "control", "pet-feeder"];
16
+ export declare const CONTROL_CAP_NAMES: readonly ["cover", "lock-control", "switch", "brightness", "fan-control", "climate-control", "media-player", "control", "pet-feeder", "dishwasher"];
17
17
  export type ControlCapName = (typeof CONTROL_CAP_NAMES)[number];
@@ -178,6 +178,8 @@ export { ConfigSchemaField, PipelineStep } from "./pipeline-step";
178
178
  export * from "./provider-badge";
179
179
  export { AddProviderEntryDialog, ProviderEntryPills } from "./provider-entries";
180
180
  export type { AddProviderEntryCreateInput, AddProviderEntryDialogProps, ProviderEntryPill, ProviderEntryPillsProps, ProviderEntryStatus, ProviderEntryTypeOption } from "./provider-entries";
181
+ export * from "./record-entries";
182
+ export * from "./storage-records";
181
183
  export type { PTZOverlayProps } from "./ptz-overlay";
182
184
  export { PTZOverlay } from "./ptz-overlay";
183
185
  export type { QrCodeProps } from "./qr-code";
@@ -0,0 +1,11 @@
1
+ import { type JSX } from "react";
2
+ export interface EntryJsonSchemaFormProps {
3
+ /** JSON Schema root (`EntryKindInfo.fields`). */
4
+ readonly schema: Record<string, unknown>;
5
+ readonly secretPaths: readonly string[];
6
+ readonly value: Record<string, unknown>;
7
+ readonly onChange: (value: Record<string, unknown>) => void;
8
+ readonly disabled?: boolean;
9
+ }
10
+ /** Renders an entry body from the engine's JSON Schema descriptor. */
11
+ export declare function EntryJsonSchemaForm({ schema, secretPaths, value, onChange, disabled }: EntryJsonSchemaFormProps): JSX.Element | null;
@@ -0,0 +1,4 @@
1
+ export { isRedactedSecret, isSecretField, mergeSecretForSubmit, secretDisplayValue } from "./record-entry-secrets";
2
+ export { EntryJsonSchemaForm, type EntryJsonSchemaFormProps } from "./entry-json-schema-form";
3
+ export { RecordEntriesPanel, type RecordEntriesPanelProps } from "./record-entries-panel";
4
+ export { RecordEntriesHub, RECORD_ENTRY_KIND_PARAM, RECORD_ENTRY_OWNER_PARAM, type RecordEntriesHubProps } from "./record-entries-hub";
@@ -0,0 +1,9 @@
1
+ import type { EntryKindInfo } from "@camstack/types";
2
+ import { type JSX } from "react";
3
+ export declare const RECORD_ENTRY_OWNER_PARAM = "entryOwner";
4
+ export declare const RECORD_ENTRY_KIND_PARAM = "entryKind";
5
+ export interface RecordEntriesHubProps {
6
+ /** When set, only these owner/kind pairs are shown (still loaded from the catalog). */
7
+ readonly filter?: Readonly<Partial<Pick<EntryKindInfo, "owner" | "kind">>>;
8
+ }
9
+ export declare function RecordEntriesHub({ filter }: RecordEntriesHubProps): JSX.Element;
@@ -0,0 +1,6 @@
1
+ import type { EntryKindInfo } from "@camstack/types";
2
+ import { type JSX } from "react";
3
+ export interface RecordEntriesPanelProps {
4
+ readonly kind: EntryKindInfo;
5
+ }
6
+ export declare function RecordEntriesPanel({ kind }: RecordEntriesPanelProps): JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { REDACTED_SECRET } from "@camstack/types";
2
+ /** Whether a record entry field still holds the redaction token from a read. */
3
+ export declare function isRedactedSecret(value: unknown): value is typeof REDACTED_SECRET;
4
+ /** Text shown in a password box for a redacted stored secret (empty — placeholder carries the hint). */
5
+ export declare function secretDisplayValue(value: unknown): string;
6
+ /** Merge an edited password box back into the body sent to `putEntry`. */
7
+ export declare function mergeSecretForSubmit(draft: string, original: unknown): unknown;
8
+ /** Is this JSON-schema leaf (or path) a credential field? */
9
+ export declare function isSecretField(path: string, secretPaths: readonly string[], schemaNode: Record<string, unknown>): boolean;
@@ -0,0 +1,2 @@
1
+ export { StorageRecordsHub, STORAGE_RECORDS_KIND_PARAM, STORAGE_RECORDS_OWNER_PARAM } from "./storage-records-hub";
2
+ export { StorageRecordsPanel, type StorageRecordsPanelProps } from "./storage-records-panel";
@@ -0,0 +1,4 @@
1
+ import { type JSX } from "react";
2
+ export declare const STORAGE_RECORDS_OWNER_PARAM = "recordsOwner";
3
+ export declare const STORAGE_RECORDS_KIND_PARAM = "recordsKind";
4
+ export declare function StorageRecordsHub(): JSX.Element;
@@ -0,0 +1,6 @@
1
+ import type { StorageKind } from "@camstack/types";
2
+ import { type JSX } from "react";
3
+ export interface StorageRecordsPanelProps {
4
+ readonly kind: StorageKind;
5
+ }
6
+ export declare function StorageRecordsPanel({ kind }: StorageRecordsPanelProps): JSX.Element;
@@ -745,6 +745,24 @@ export declare const useDeviceStateListClaims: typeof trpc.deviceState.listClaim
745
745
  export declare const useDeviceStateGetNativeCapSlice: typeof trpc.deviceState.getNativeCapSlice.useQuery;
746
746
  /** Generated alias around `trpc.deviceStatus.getStatus.useQuery`. */
747
747
  export declare const useDeviceStatusGetStatus: typeof trpc.deviceStatus.getStatus.useQuery;
748
+ /** Generated alias around `trpc.dishwasher.start.useMutation`. */
749
+ export declare const useDishwasherStart: typeof trpc.dishwasher.start.useMutation;
750
+ /** Generated alias around `trpc.dishwasher.pause.useMutation`. */
751
+ export declare const useDishwasherPause: typeof trpc.dishwasher.pause.useMutation;
752
+ /** Generated alias around `trpc.dishwasher.stop.useMutation`. */
753
+ export declare const useDishwasherStop: typeof trpc.dishwasher.stop.useMutation;
754
+ /** Generated alias around `trpc.dishwasher.setProgram.useMutation`. */
755
+ export declare const useDishwasherSetProgram: typeof trpc.dishwasher.setProgram.useMutation;
756
+ /** Generated alias around `trpc.dishwasher.setPower.useMutation`. */
757
+ export declare const useDishwasherSetPower: typeof trpc.dishwasher.setPower.useMutation;
758
+ /** Generated alias around `trpc.dishwasher.setHalfLoad.useMutation`. */
759
+ export declare const useDishwasherSetHalfLoad: typeof trpc.dishwasher.setHalfLoad.useMutation;
760
+ /** Generated alias around `trpc.dishwasher.setHygienePlus.useMutation`. */
761
+ export declare const useDishwasherSetHygienePlus: typeof trpc.dishwasher.setHygienePlus.useMutation;
762
+ /** Generated alias around `trpc.dishwasher.setOption.useMutation`. */
763
+ export declare const useDishwasherSetOption: typeof trpc.dishwasher.setOption.useMutation;
764
+ /** Generated alias around `trpc.dishwasher.getStatus.useQuery`. */
765
+ export declare const useDishwasherGetStatus: typeof trpc.dishwasher.getStatus.useQuery;
748
766
  /** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
749
767
  export declare const useDoorbellGetStatus: typeof trpc.doorbell.getStatus.useQuery;
750
768
  /** Generated alias around `trpc.enumSensor.getStatus.useQuery`. */
@@ -799,6 +817,8 @@ export declare const useFeatureProbeGetStatus: typeof trpc.featureProbe.getStatu
799
817
  export declare const useFloodGetStatus: typeof trpc.flood.getStatus.useQuery;
800
818
  /** Generated alias around `trpc.gas.getStatus.useQuery`. */
801
819
  export declare const useGasGetStatus: typeof trpc.gas.getStatus.useQuery;
820
+ /** Generated alias around `trpc.heatingValve.getStatus.useQuery`. */
821
+ export declare const useHeatingValveGetStatus: typeof trpc.heatingValve.getStatus.useQuery;
802
822
  /** Generated alias around `trpc.humidifier.setOn.useMutation`. */
803
823
  export declare const useHumidifierSetOn: typeof trpc.humidifier.setOn.useMutation;
804
824
  /** Generated alias around `trpc.humidifier.setTargetHumidity.useMutation`. */
@@ -18151,54 +18151,6 @@ var Heart = require_createLucideIcon.createLucideIcon("heart", [["path", {
18151
18151
  * This source code is licensed under the ISC license.
18152
18152
  * See the LICENSE file in the root directory of this source tree.
18153
18153
  */
18154
- var Heater = require_createLucideIcon.createLucideIcon("heater", [
18155
- ["path", {
18156
- d: "M11 8c2-3-2-3 0-6",
18157
- key: "1ldv5m"
18158
- }],
18159
- ["path", {
18160
- d: "M15.5 8c2-3-2-3 0-6",
18161
- key: "1otqoz"
18162
- }],
18163
- ["path", {
18164
- d: "M6 10h.01",
18165
- key: "1lbq93"
18166
- }],
18167
- ["path", {
18168
- d: "M6 14h.01",
18169
- key: "zudwn7"
18170
- }],
18171
- ["path", {
18172
- d: "M10 16v-4",
18173
- key: "1c25yv"
18174
- }],
18175
- ["path", {
18176
- d: "M14 16v-4",
18177
- key: "1dkbt8"
18178
- }],
18179
- ["path", {
18180
- d: "M18 16v-4",
18181
- key: "1yg9me"
18182
- }],
18183
- ["path", {
18184
- d: "M20 6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3",
18185
- key: "1ubg90"
18186
- }],
18187
- ["path", {
18188
- d: "M5 20v2",
18189
- key: "1abpe8"
18190
- }],
18191
- ["path", {
18192
- d: "M19 20v2",
18193
- key: "kqn6ft"
18194
- }]
18195
- ]);
18196
- /**
18197
- * @license lucide-react v0.576.0 - ISC
18198
- *
18199
- * This source code is licensed under the ISC license.
18200
- * See the LICENSE file in the root directory of this source tree.
18201
- */
18202
18154
  var Helicopter = require_createLucideIcon.createLucideIcon("helicopter", [
18203
18155
  ["path", {
18204
18156
  d: "M11 17v4",
@@ -34396,34 +34348,6 @@ var TimerReset = require_createLucideIcon.createLucideIcon("timer-reset", [
34396
34348
  * This source code is licensed under the ISC license.
34397
34349
  * See the LICENSE file in the root directory of this source tree.
34398
34350
  */
34399
- var Timer = require_createLucideIcon.createLucideIcon("timer", [
34400
- ["line", {
34401
- x1: "10",
34402
- x2: "14",
34403
- y1: "2",
34404
- y2: "2",
34405
- key: "14vaq8"
34406
- }],
34407
- ["line", {
34408
- x1: "12",
34409
- x2: "15",
34410
- y1: "14",
34411
- y2: "11",
34412
- key: "17fdiu"
34413
- }],
34414
- ["circle", {
34415
- cx: "12",
34416
- cy: "14",
34417
- r: "8",
34418
- key: "1e1u0o"
34419
- }]
34420
- ]);
34421
- /**
34422
- * @license lucide-react v0.576.0 - ISC
34423
- *
34424
- * This source code is licensed under the ISC license.
34425
- * See the LICENSE file in the root directory of this source tree.
34426
- */
34427
34351
  var ToolCase = require_createLucideIcon.createLucideIcon("tool-case", [
34428
34352
  ["path", {
34429
34353
  d: "M10 15h4",
@@ -38734,7 +38658,7 @@ exports.HeartMinus = HeartMinus;
38734
38658
  exports.HeartOff = HeartOff;
38735
38659
  exports.HeartPlus = HeartPlus;
38736
38660
  exports.HeartPulse = HeartPulse;
38737
- exports.Heater = Heater;
38661
+ exports.Heater = require_index.Heater;
38738
38662
  exports.Helicopter = Helicopter;
38739
38663
  exports.Hexagon = require_mic_off.Hexagon;
38740
38664
  exports.Highlighter = Highlighter;
@@ -39466,7 +39390,7 @@ exports.TicketSlash = TicketSlash;
39466
39390
  exports.TicketX = TicketX;
39467
39391
  exports.Tickets = Tickets;
39468
39392
  exports.TicketsPlane = TicketsPlane;
39469
- exports.Timer = Timer;
39393
+ exports.Timer = require_index.Timer;
39470
39394
  exports.TimerOff = TimerOff;
39471
39395
  exports.TimerReset = TimerReset;
39472
39396
  exports.ToggleLeft = require_index.ToggleLeft;
@@ -1,7 +1,7 @@
1
1
  import { t as createLucideIcon } from "./createLucideIcon-kNomBP27.js";
2
2
  import { n as Hexagon, t as MicOff } from "./mic-off-C2VTYr91.js";
3
3
  import { t as Settings2 } from "./settings-2-jT1iBqHD.js";
4
- import { $ as ShieldCheck, $n as CircleX, $t as List, A as TrainFront, An as Eye, Ar as Battery, At as Package, B as Star, Bn as Database, Br as ArrowRight, Bt as Minus, C as Undo2, Cn as FlaskConical, Cr as Bot, Ct as Plane, D as TrendingDown, Dn as Film, Dr as Bike, Dt as Pencil, E as TriangleAlert, En as Flame, Er as Bird, Et as Phone, F as Target, Fn as Droplet, Fr as Bath, Ft as MoveVertical, G as Smartphone, Gn as Cloud, Gr as AirVent, Gt as Megaphone, H as Sprout, Hn as Cpu, Hr as ArrowDown, Ht as Mic, I as Tag, In as Download, Ir as Ban, It as MoveHorizontal, J as SkipBack, Jn as CloudRain, Jt as Mail, K as SlidersHorizontal, Kn as CloudSun, Kr as Activity, Kt as Maximize2, L as Sunrise, Ln as DoorOpen, Lr as Baby, Lt as MousePointerClick, M as ToggleRight, Mn as ExternalLink, Mr as BatteryMedium, Mt as Navigation, N as ToggleLeft, Nn as EllipsisVertical, Nr as BatteryLow, Nt as Music, O as TrendingUp, On as Feather, Or as Bell, Ot as PawPrint, P as Thermometer, Pn as Droplets, Pr as BatteryFull, Pt as Move, Q as ShieldOff, Qn as Clapperboard, Qt as LoaderCircle, R as Sun, Rn as DoorClosed, Rr as ArrowUp, Rt as Moon, S as Unlink2, Sn as Footprints, Sr as Box, St as Play, T as Truck, Tn as FlashlightOff, Tr as Blinds, Tt as Pin, U as Sparkles, Un as Copy, Ur as ArrowDownToLine, Ut as MessageSquare, V as Square, Vn as Crosshair, Vr as ArrowLeft, Vt as Minimize2, W as Snowflake, Wn as Cog, Wr as AlarmSmoke, Wt as Menu, X as Ship, Xn as CloudFog, Xt as LockOpen, Y as Siren, Yn as CloudLightning, Yt as Lock, Z as Shield, Zn as Clock, Zt as LocateFixed, _ as UtensilsCrossed, _n as Grid2x2, _r as Car, _t as Puzzle, a as Wrench, an as Laugh, ar as CircleCheck, at as ScrollText, b as UserCheck, bn as Gamepad2, br as Bus, bt as Plug, c as Wifi, cr as ChevronsUpDown, ct as Sailboat, d as WifiLow, dn as House, dr as ChevronRight, dt as RotateCcw, en as ListChecks, er as CircleStop, et as ShieldAlert, f as WifiHigh, fn as Hash, fr as ChevronLeft, ft as RefreshCw, g as Vibrate, gn as GripHorizontal, gr as Cast, gt as QrCode, h as Volume2, hn as Hammer, hr as Cat, ht as Radar, i as X, in as LayoutGrid, ir as CircleDot, it as Search, j as Tractor, jn as EyeOff, jr as BatteryWarning, jt as Network, k as Trash2, kn as Fan, kr as BellRing, kt as Pause, l as WifiZero, ln as Image, lr as ChevronsDownUp, lt as Route, m as VolumeX, mn as Hand, mr as Check, mt as RadioTower, n as ZoomIn, nn as Lightbulb, nr as CirclePlus, nt as Settings, o as Workflow, on as Info, or as CircleCheckBig, ot as Scan, p as Waves, pn as HardDrive, pr as ChevronDown, pt as Radio, q as SkipForward, qn as CloudSnow, qt as MapPin, r as Zap, rn as Leaf, rr as CirclePause, rt as Server, s as Wind, sn as Inbox, sr as CircleAlert, st as Save, t as ZoomOut, tn as Link2, tr as CircleQuestionMark, tt as Share2, u as WifiOff, un as ImageOff, ur as ChevronUp, ut as RotateCw, v as Users, vn as GraduationCap, vr as Camera, vt as Power, w as Type, wn as Flashlight, wr as Bone, wt as Pipette, x as Upload, xn as Funnel, xr as Bug, xt as Plus, y as User, yn as Gauge, yr as Cable, yt as PowerOff, z as SunMedium, zn as Dog, zr as ArrowUpToLine, zt as MonitorPlay } from "./index.js";
4
+ import { $ as ShieldOff, $n as Clock, $t as LoaderCircle, A as TrainFront, An as Feather, Ar as Bell, At as Pause, B as SunMedium, Bn as DoorClosed, Br as ArrowUp, Bt as MonitorPlay, C as Undo2, Cn as Funnel, Cr as Bug, Ct as Play, D as TrendingDown, Dn as FlashlightOff, Dr as Blinds, Dt as Phone, E as TriangleAlert, En as Flashlight, Er as Bone, Et as Pin, F as Thermometer, Fn as EllipsisVertical, Fr as BatteryLow, Ft as Move, G as Snowflake, Gn as Copy, Gr as ArrowDownToLine, Gt as Menu, H as Square, Hn as Database, Hr as ArrowRight, Ht as Minimize2, I as Target, In as Droplets, Ir as BatteryFull, It as MoveVertical, J as SkipForward, Jn as CloudSun, Jr as Activity, Jt as MapPin, K as Smartphone, Kn as Cog, Kr as AlarmSmoke, Kt as Megaphone, L as Tag, Ln as Droplet, Lr as Bath, Lt as MoveHorizontal, M as ToggleRight, Mn as Eye, Mr as Battery, Mt as Network, N as ToggleLeft, Nn as EyeOff, Nr as BatteryWarning, Nt as Navigation, O as TrendingUp, On as Flame, Or as Bird, Ot as Pencil, P as Timer, Pn as ExternalLink, Pr as BatteryMedium, Pt as Music, Q as Shield, Qn as CloudFog, Qt as LocateFixed, R as Sunrise, Rn as Download, Rr as Ban, Rt as MousePointerClick, S as Unlink2, Sn as Gamepad2, Sr as Bus, St as Plus, T as Truck, Tn as FlaskConical, Tr as Bot, Tt as Pipette, U as Sprout, Un as Crosshair, Ur as ArrowLeft, Ut as Mic, V as Star, Vn as Dog, Vr as ArrowUpToLine, Vt as Minus, W as Sparkles, Wn as Cpu, Wr as ArrowDown, Wt as MessageSquare, X as Siren, Xn as CloudRain, Xt as Lock, Y as SkipBack, Yn as CloudSnow, Yt as Mail, Z as Ship, Zn as CloudLightning, Zt as LockOpen, _ as UtensilsCrossed, _n as Hammer, _r as Cat, _t as QrCode, a as Wrench, an as LayoutGrid, ar as CirclePause, at as Search, b as UserCheck, bn as GraduationCap, br as Camera, bt as PowerOff, c as Wifi, cr as CircleCheckBig, ct as Save, d as WifiLow, dn as ImageOff, dr as ChevronsDownUp, dt as RotateCw, en as List, er as Clapperboard, et as ShieldCheck, f as WifiHigh, fn as House, fr as ChevronUp, ft as RotateCcw, g as Vibrate, gn as Hand, gr as Check, gt as Radar, h as Volume2, hn as HardDrive, hr as ChevronDown, ht as RadioTower, i as X, in as Leaf, ir as CirclePlus, it as Server, j as Tractor, jn as Fan, jr as BellRing, jt as Package, k as Trash2, kn as Film, kr as Bike, kt as PawPrint, l as WifiZero, ln as Inbox, lr as CircleAlert, lt as Sailboat, m as VolumeX, mn as Hash, mr as ChevronLeft, mt as Radio, n as ZoomIn, nn as Link2, nr as CircleStop, nt as Share2, o as Workflow, on as Laugh, or as CircleDot, ot as ScrollText, p as Waves, pn as Heater, pr as ChevronRight, pt as RefreshCw, q as SlidersHorizontal, qn as Cloud, qr as AirVent, qt as Maximize2, r as Zap, rn as Lightbulb, rr as CircleQuestionMark, rt as Settings, s as Wind, sn as Info, sr as CircleCheck, st as Scan, t as ZoomOut, tn as ListChecks, tr as CircleX, tt as ShieldAlert, u as WifiOff, un as Image, ur as ChevronsUpDown, ut as Route, v as Users, vn as GripHorizontal, vr as Cast, vt as Puzzle, w as Type, wn as Footprints, wr as Box, wt as Plane, x as Upload, xn as Gauge, xr as Cable, xt as Plug, y as User, yn as Grid2x2, yr as Car, yt as Power, z as Sun, zn as DoorOpen, zr as Baby, zt as Moon } from "./index.js";
5
5
  /**
6
6
  * @license lucide-react v0.576.0 - ISC
7
7
  *
@@ -18151,54 +18151,6 @@ var Heart = createLucideIcon("heart", [["path", {
18151
18151
  * This source code is licensed under the ISC license.
18152
18152
  * See the LICENSE file in the root directory of this source tree.
18153
18153
  */
18154
- var Heater = createLucideIcon("heater", [
18155
- ["path", {
18156
- d: "M11 8c2-3-2-3 0-6",
18157
- key: "1ldv5m"
18158
- }],
18159
- ["path", {
18160
- d: "M15.5 8c2-3-2-3 0-6",
18161
- key: "1otqoz"
18162
- }],
18163
- ["path", {
18164
- d: "M6 10h.01",
18165
- key: "1lbq93"
18166
- }],
18167
- ["path", {
18168
- d: "M6 14h.01",
18169
- key: "zudwn7"
18170
- }],
18171
- ["path", {
18172
- d: "M10 16v-4",
18173
- key: "1c25yv"
18174
- }],
18175
- ["path", {
18176
- d: "M14 16v-4",
18177
- key: "1dkbt8"
18178
- }],
18179
- ["path", {
18180
- d: "M18 16v-4",
18181
- key: "1yg9me"
18182
- }],
18183
- ["path", {
18184
- d: "M20 6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3",
18185
- key: "1ubg90"
18186
- }],
18187
- ["path", {
18188
- d: "M5 20v2",
18189
- key: "1abpe8"
18190
- }],
18191
- ["path", {
18192
- d: "M19 20v2",
18193
- key: "kqn6ft"
18194
- }]
18195
- ]);
18196
- /**
18197
- * @license lucide-react v0.576.0 - ISC
18198
- *
18199
- * This source code is licensed under the ISC license.
18200
- * See the LICENSE file in the root directory of this source tree.
18201
- */
18202
18154
  var Helicopter = createLucideIcon("helicopter", [
18203
18155
  ["path", {
18204
18156
  d: "M11 17v4",
@@ -34396,34 +34348,6 @@ var TimerReset = createLucideIcon("timer-reset", [
34396
34348
  * This source code is licensed under the ISC license.
34397
34349
  * See the LICENSE file in the root directory of this source tree.
34398
34350
  */
34399
- var Timer = createLucideIcon("timer", [
34400
- ["line", {
34401
- x1: "10",
34402
- x2: "14",
34403
- y1: "2",
34404
- y2: "2",
34405
- key: "14vaq8"
34406
- }],
34407
- ["line", {
34408
- x1: "12",
34409
- x2: "15",
34410
- y1: "14",
34411
- y2: "11",
34412
- key: "17fdiu"
34413
- }],
34414
- ["circle", {
34415
- cx: "12",
34416
- cy: "14",
34417
- r: "8",
34418
- key: "1e1u0o"
34419
- }]
34420
- ]);
34421
- /**
34422
- * @license lucide-react v0.576.0 - ISC
34423
- *
34424
- * This source code is licensed under the ISC license.
34425
- * See the LICENSE file in the root directory of this source tree.
34426
- */
34427
34351
  var ToolCase = createLucideIcon("tool-case", [
34428
34352
  ["path", {
34429
34353
  d: "M10 15h4",