@conboai/app.db.query 0.7.24 → 0.8.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.
@@ -1,12 +1,5 @@
1
1
  import { GridColDef } from '@mui/x-data-grid-pro';
2
2
 
3
- type ColumnDefsProps = {
4
- selectedItemsCount?: number | null;
5
- totalItems?: number | null;
6
- handleSelectRow?: (value: boolean, id: number) => void;
7
- handleSelectAllRows?: (value: boolean) => void;
8
- };
9
- export declare const useColumnDefs: (args: ColumnDefsProps) => {
3
+ export declare const useColumnDefs: () => {
10
4
  columns: GridColDef[];
11
5
  };
12
- export {};
@@ -1,11 +1,17 @@
1
1
  import { GridColDef } from '@mui/x-data-grid-pro';
2
2
  import { CustomDataGridProps } from '@conboai/storybook.components/dist/components/CustomDataGrid/CustomDataGrid';
3
- import { MatchItemType } from '../../types';
4
3
 
5
4
  type InputProps = {
6
5
  columns: GridColDef[];
7
6
  selectedRowId?: number;
8
- rows?: MatchItemType[];
7
+ rows?: {
8
+ id: number;
9
+ assigned_feed_id: number | null;
10
+ startTime: string;
11
+ endTime: string;
12
+ conbo_key: string;
13
+ confidence: number | null;
14
+ }[];
9
15
  loading?: boolean;
10
16
  handleCellClick?: CustomDataGridProps["onCellClick"];
11
17
  };
@@ -1,16 +1,45 @@
1
1
  type GetDetailsContentProps = {
2
2
  topOne?: {
3
- [x: string]: unknown;
3
+ conbo_key: string;
4
+ tagId: number;
5
+ kitId: number;
6
+ value: number;
7
+ count: number;
8
+ avgConf: number;
9
+ elementSerialNumber: number;
4
10
  }[];
5
11
  classifiersFrameInfo?: {
6
- [x: string]: unknown;
12
+ conbo_key: string;
13
+ tag_id: number;
14
+ value: number;
15
+ confidence: number;
16
+ element_serial_number: number;
17
+ kit_id: number;
18
+ kit_version: number;
19
+ assigned_feed_id: number;
20
+ track_id: number;
21
+ start_time: string;
22
+ end_time: string;
7
23
  }[];
8
- classifierSummary: {
9
- [x: string]: unknown;
24
+ classifierSummary?: {
25
+ conbo_key: string;
26
+ tag_id: number;
27
+ value: number;
28
+ kit_id: number;
29
+ kit_version: number;
30
+ average_confidence: number;
31
+ median_confidence: number;
32
+ element_serial_number: number;
33
+ count: number;
10
34
  }[];
11
35
  kitsElements?: {
36
+ kit_id: number;
12
37
  tag_id: number;
38
+ type: string;
39
+ category: string;
40
+ serial_number: number;
13
41
  name: string;
42
+ primary: boolean;
14
43
  labels: {
15
44
  id: number;
16
45
  name: string;
@@ -4,5 +4,5 @@ type InputProps = {
4
4
  isAdmin?: boolean;
5
5
  onHomeClick?: () => void;
6
6
  };
7
- export declare const ConboMatchRoot: (props: InputProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const ConboMatchRoot: (props: InputProps) => import("react/jsx-runtime").JSX.Element | null;
8
8
  export {};
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+
3
+ export declare const MATCH_FORM_FIELD: {
4
+ readonly conboKey: "conboKey";
5
+ readonly keyExclusive: "keyExclusive";
6
+ readonly isUtc: "isUtc";
7
+ };
8
+ export declare const inputConfig: {
9
+ isUtc: {
10
+ label: string;
11
+ };
12
+ conboKey: {
13
+ label: string;
14
+ placeholder: string;
15
+ required: string;
16
+ };
17
+ keyExclusive: {
18
+ label: string;
19
+ };
20
+ };
21
+ export declare const filterFormConfig: {
22
+ shape: {
23
+ conboKey: string;
24
+ keyExclusive: boolean;
25
+ isUtc: boolean;
26
+ };
27
+ schema: () => z.ZodObject<{
28
+ conboKey: z.ZodString;
29
+ keyExclusive: z.ZodBoolean;
30
+ isUtc: z.ZodBoolean;
31
+ }, "strip", z.ZodTypeAny, {
32
+ conboKey: string;
33
+ isUtc: boolean;
34
+ keyExclusive: boolean;
35
+ }, {
36
+ conboKey: string;
37
+ isUtc: boolean;
38
+ keyExclusive: boolean;
39
+ }>;
40
+ };
@@ -0,0 +1 @@
1
+ export * from './sidebar-left-filter';
@@ -0,0 +1,13 @@
1
+ import { FormSubmitFn } from '../../../../helpers/utils/forms';
2
+
3
+ export type MatchFilterFormType = {
4
+ conboKey?: string;
5
+ keyExclusive?: boolean;
6
+ isUtc?: boolean;
7
+ };
8
+ type SidebarLeftFilteInput = {
9
+ loadingFetch?: boolean;
10
+ onSubmit?: FormSubmitFn<MatchFilterFormType>;
11
+ };
12
+ export declare const SidebarLeftFilter: (props: SidebarLeftFilteInput) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -1,7 +1,6 @@
1
1
  import { SxProps } from '@mui/material';
2
2
 
3
3
  export declare const toggleSx: SxProps;
4
- export declare const boxSx: SxProps;
5
4
  export declare const mainBoxSx: SxProps;
6
5
  export declare const dividerSx: SxProps;
7
6
  export declare const buttonContainerSx: SxProps;
@@ -0,0 +1,3 @@
1
+ import { MatchTabItem } from './store';
2
+
3
+ export declare const initialTab: MatchTabItem;
@@ -0,0 +1 @@
1
+ export declare const useTabSelected: () => import('../store').MatchTabItem | null;
@@ -0,0 +1,3 @@
1
+ import { ConboMatchStore, MatchTabItem } from './store';
2
+
3
+ export declare const selectCurrentTab: (state: ConboMatchStore) => MatchTabItem | null;
@@ -0,0 +1,119 @@
1
+ import { FormSubmitParams } from '../../helpers/utils/forms';
2
+
3
+ export type MatchTabItem = {
4
+ id: string;
5
+ title: string;
6
+ selected: boolean;
7
+ conboKey: string;
8
+ isLeftPanelShown: boolean;
9
+ isRightPanelShown: boolean;
10
+ timezone: string;
11
+ color: string;
12
+ matchList: {
13
+ id: number;
14
+ assigned_feed_id: number | null;
15
+ startTime: string;
16
+ endTime: string;
17
+ conbo_key: string;
18
+ confidence: number | null;
19
+ }[];
20
+ matchListFeatchAt: Date | null;
21
+ kitsElements: {
22
+ kit_id: number;
23
+ tag_id: number;
24
+ type: string;
25
+ category: string;
26
+ serial_number: number;
27
+ name: string;
28
+ primary: boolean;
29
+ labels: {
30
+ id: number;
31
+ name: string;
32
+ }[];
33
+ }[];
34
+ topOneList: {
35
+ conbo_key: string;
36
+ tagId: number;
37
+ kitId: number;
38
+ value: number;
39
+ count: number;
40
+ avgConf: number;
41
+ elementSerialNumber: number;
42
+ }[];
43
+ croppedList: {
44
+ conbo_key: number;
45
+ id: string;
46
+ captureTime: string;
47
+ feedId: string;
48
+ type: string;
49
+ }[];
50
+ snapshotsList: {
51
+ id: string;
52
+ captureTime: string;
53
+ assignedFeedId: number;
54
+ }[];
55
+ classifiersFrameInfoList: {
56
+ conbo_key: string;
57
+ tag_id: number;
58
+ value: number;
59
+ confidence: number;
60
+ element_serial_number: number;
61
+ kit_id: number;
62
+ kit_version: number;
63
+ assigned_feed_id: number;
64
+ track_id: number;
65
+ start_time: string;
66
+ end_time: string;
67
+ }[];
68
+ classifierSummaryList: {
69
+ conbo_key: string;
70
+ tag_id: number;
71
+ value: number;
72
+ kit_id: number;
73
+ kit_version: number;
74
+ average_confidence: number;
75
+ median_confidence: number;
76
+ element_serial_number: number;
77
+ count: number;
78
+ }[];
79
+ geo: {
80
+ type: string;
81
+ geometry: {
82
+ type: string;
83
+ coordinates: [number, number][];
84
+ } | null;
85
+ properties: Record<string, any>;
86
+ } | null;
87
+ pixelGeo: {
88
+ type: string;
89
+ geometry: {
90
+ type: string;
91
+ coordinates: [number, number][];
92
+ } | null;
93
+ properties: Record<string, any>;
94
+ } | null;
95
+ };
96
+ export type ConboMatchStore = {
97
+ tabs: MatchTabItem[];
98
+ clearStore: () => void;
99
+ onAddTab: () => void;
100
+ onDeleteTab: (id: string) => void;
101
+ onSelectActiveTab: (id: string) => void;
102
+ onUpdateTab: (tabId: string, payload: Partial<Omit<MatchTabItem, "id">>) => void;
103
+ onFetchAllTabs: () => Promise<void>;
104
+ onFetchAllMatchList: (payload?: FormSubmitParams<{
105
+ conboKey?: string;
106
+ keyExclusive?: boolean;
107
+ isUtc?: boolean;
108
+ }>) => Promise<void>;
109
+ onFetchKitsElements: (payload?: {
110
+ siteId?: string;
111
+ }) => Promise<void>;
112
+ onFetchMetadataById: (payload?: {
113
+ conboKey?: string;
114
+ startTime?: string;
115
+ endTime?: string;
116
+ assignedFeedId?: number;
117
+ }) => Promise<void>;
118
+ };
119
+ export declare const useConboMatchStore: import('zustand').UseBoundStore<import('zustand').StoreApi<ConboMatchStore>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conboai/app.db.query",
3
- "version": "0.7.24",
3
+ "version": "0.8.0",
4
4
  "type": "module",
5
5
  "main": "dist/app.db.query.js",
6
6
  "types": "dist/build/index.d.ts",
@@ -21,35 +21,42 @@
21
21
  "prepare": "husky",
22
22
  "storybook": "storybook dev -p 6006",
23
23
  "build-storybook": "storybook build",
24
- "generate-classifiers": "openapi --input https://dev.portsight.ai/api/classification/docs-yaml --output ./src/api/classifiers",
24
+ "generate-classifiers": "openapi --input https://dev.test.portsight.ai/api/classification/docs-yaml --output ./src/api/classifiers",
25
25
  "generate-cargo": "openapi --input https://dev.test.portsight.ai/api/action/docs-yaml --output ./src/api/cargo",
26
- "generate-snapshots": "openapi --input https://dev.portsight.ai/api/snapshots/docs-yaml --output ./src/api/snapshot",
27
- "generate-detections-pixels": "openapi --input https://dev.portsight.ai/api/detections_pixels/docs-yaml --output ./src/api/detectionPixel",
28
- "generate-detections-geo": "openapi --input https://dev.portsight.ai/api/detections_geo/docs-yaml --output ./src/api/detectionGeo",
29
- "generate-top-one": "openapi --input https://dev.portsight.ai/api/top1/docs-yaml --output ./src/api/topOne",
30
- "generate-cropped": "openapi --input https://dev.portsight.ai/api/cropped/docs-yaml --output ./src/api/cropped",
26
+ "generate-snapshots": "openapi --input https://dev.test.portsight.ai/api/snapshots/docs-yaml --output ./src/api/snapshot",
27
+ "generate-detections-pixels": "openapi --input https://dev.test.portsight.ai/api/detections_pixels/docs-yaml --output ./src/api/detectionPixel",
28
+ "generate-detections-geo": "openapi --input https://dev.test.portsight.ai/api/detections_geo/docs-yaml --output ./src/api/detectionGeo",
29
+ "generate-tag-family-labels": "openapi --input https://dev.gateway.dev.portsight.ai/api/msm/api-yaml --output ./src/api/tagFamilyLabels",
30
+ "generate-top-one": "openapi --input https://dev.test.portsight.ai/api/top1/docs-yaml --output ./src/api/topOne",
31
+ "generate-cropped": "openapi --input https://dev.test.portsight.ai/api/cropped/docs-yaml --output ./src/api/cropped",
32
+ "generate-poc": "openapi --input https://dev.gateway.dev.portsight.ai/api/poc/api-yaml --output ./src/api/poc",
31
33
  "generate-search": "openapi --input https://dev.portsight.ai/api/search/docs-yaml --output ./src/api/search",
32
- "generate-query-info": "openapi --input https://dev.portsight.ai/api/info/docs-yaml --output ./src/api/queryInfo",
33
- "generate-api": "yarn generate-classifiers && yarn generate-cargo && yarn generate-snapshots && yarn generate-detections-pixels && yarn generate-detections-geo && yarn generate-top-one && yarn generate-cropped && yarn generate-search && yarn generate-query-info",
34
+ "generate-query-info": "openapi --input https://dev.test.portsight.ai/api/info/docs-yaml --output ./src/api/queryInfo",
35
+ "generate-api": "yarn generate-classifiers && yarn generate-cargo && yarn generate-snapshots && yarn generate-detections-pixels && yarn generate-detections-geo && yarn generate-tag-family-labels && yarn generate-top-one && yarn generate-cropped && yarn generate-poc && yarn generate-search && yarn generate-query-info",
34
36
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives",
35
37
  "lint:fix": "eslint . --ext ts,tsx --fix",
36
38
  "format:check": "prettier \"src/**/*.{ts,tsx,json}\" --check",
37
39
  "format": "prettier --write \"src/**/*.{ts,tsx,json}\" --color"
38
40
  },
39
41
  "dependencies": {
40
- "@conboai/storybook.components": "^0.5.4",
42
+ "@conboai/storybook.components": "^0.5.5",
41
43
  "@emotion/react": "^11.11.4",
42
44
  "@emotion/styled": "^11.11.5",
45
+ "@hookform/resolvers": "^3.9.1",
43
46
  "@mui/icons-material": "^5.16.6",
44
47
  "@mui/material": "^5.15.17",
45
48
  "@mui/x-data-grid-pro": "^7.9.0",
46
49
  "@react-google-maps/api": "^2.19.3",
47
50
  "ajv": "^8.17.1",
51
+ "await-to-js": "^3.0.0",
48
52
  "dayjs": "^1.11.13",
49
53
  "lodash": "^4.17.21",
50
54
  "react": "^18.2.0",
51
55
  "react-dom": "^18.2.0",
56
+ "react-hook-form": "^7.53.2",
52
57
  "uuid": "^9.0.1",
58
+ "vite-plugin-css-injected-by-js": "^3.5.2",
59
+ "zod": "^3.23.8",
53
60
  "zustand": "^4.5.2"
54
61
  },
55
62
  "devDependencies": {
@@ -1,4 +0,0 @@
1
- import { SxProps } from '@mui/material';
2
-
3
- export declare const checkBoxSx: SxProps;
4
- export declare const formControlLabelSx: SxProps;
@@ -1 +0,0 @@
1
- export declare const AppContentWrapper: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +0,0 @@
1
- export * from './app-content-wrapper';
@@ -1,47 +0,0 @@
1
- export declare const pixelGeoGeometryCoordinatesMock: [number, number][];
2
- export declare const geoGeometryCoordinatesMock: [number, number][];
3
- export declare const top1Mock: {
4
- conbo_key: string;
5
- tagId: number;
6
- value: number;
7
- avgConf: number;
8
- elementSerialNumber: number;
9
- kitId: number;
10
- count: number;
11
- }[];
12
- export declare const classifiersFrameInfoMock: {
13
- conbo_key: string;
14
- tag_id: number;
15
- start_time: string;
16
- end_time: string;
17
- value: number;
18
- confidence: number;
19
- element_serial_number: number;
20
- assigned_feed_id: number;
21
- kit_id: number;
22
- kit_version: number;
23
- track_id: number;
24
- }[];
25
- export declare const classifierSummaryRightMock: {
26
- value: number;
27
- count: number;
28
- average_confidence: number;
29
- tag_id: number;
30
- conbo_key: string;
31
- element_serial_number: number;
32
- kit_id: number;
33
- kit_version: number;
34
- median_confidence: number;
35
- }[];
36
- export declare const croppedMock: {
37
- id: string;
38
- conbo_key: string;
39
- captureTime: string;
40
- feedId: number;
41
- type: string;
42
- }[];
43
- export declare const snapshotsMock: {
44
- id: string;
45
- captureTime: string;
46
- assignedFeedId: number;
47
- }[];
@@ -1,10 +0,0 @@
1
- import { MatchItemType } from './types';
2
- import { FrameResponseDto } from '../../api/detectionPixel';
3
-
4
- export declare const DetectionsPixelsServiceMock: {
5
- detectionsControllerGetFrameDetails: () => {
6
- items: MatchItemType[];
7
- details: FrameResponseDto["details"];
8
- time_info: any;
9
- };
10
- };
package/dist/style.css DELETED
@@ -1 +0,0 @@
1
- *,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box}body,html{padding:0;margin:0;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;font-variant-ligatures:none;line-height:1.5;scroll-behavior:smooth}section{width:100%}img{max-width:100%;height:auto}:root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: #e74c3c;--toastify-color-transparent: rgba(255, 255, 255, .7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-toast-width: 320px;--toastify-toast-offset: 16px;--toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));--toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));--toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));--toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));--toastify-toast-background: #fff;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-toast-bd-radius: 6px;--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient( to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55 );--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error);--toastify-color-progress-bgo: .2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0,0,var(--toastify-z-index));position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translate(-50%)}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right)}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translate(-50%)}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right)}@media only screen and (max-width : 480px){.Toastify__toast-container{width:100vw;padding:0;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translate(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translate(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:initial}}.Toastify__toast{--y: 0;position:relative;-ms-touch-action:none;touch-action:none;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:var(--toastify-toast-bd-radius);box-shadow:0 4px 12px #0000001a;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);cursor:default;direction:ltr;z-index:0;overflow:hidden}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body,.Toastify__toast--stacked[data-collapsed] .Toastify__close-button{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{margin:auto 0;-ms-flex:1 1 auto;flex:1 1 auto;padding:6px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Toastify__toast-body>div:last-child{word-break:break-word;-ms-flex:1;flex:1}.Toastify__toast-icon{-webkit-margin-end:10px;margin-inline-end:10px;width:20px;-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width : 480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;-ms-flex-item-align:start;align-self:flex-start;z-index:1}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial;border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp{position:absolute;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.custom-toast-container{width:auto;padding:0}.custom-toast{max-width:496px;height:64px;position:relative;background-color:#fff;border-radius:8px;padding:12px;box-shadow:0 2px 10px #0000001a;display:flex;align-items:center}.custom-toast-body{display:flex;align-items:center;font-weight:500;color:#333;font-size:14px;gap:12px;padding:0;margin:0 30px 0 0}.custom-toast .Toastify__toast-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;margin:0}.custom-toast--error .Toastify__toast-icon{background-color:#fde8e8;color:#d32f2f}.custom-toast--warning .Toastify__toast-icon{background-color:#fff4e5;color:#ed6c02}.custom-toast--info .Toastify__toast-icon{background-color:#e7f3ff;color:#0288d1}.custom-toast--success .Toastify__toast-icon{background-color:#e8f5e9;color:#2e7d32}.Toastify__close-button{position:absolute;top:8px;right:8px;color:#9e9e9e;background:none;border:none;font-size:18px;cursor:pointer}.Toastify__close-button:hover{color:#616161}