├── .idea
├── modules.xml
├── react-h5-template.iml
└── vcs.xml
├── LICENSE
├── README.md
├── index.html
├── package.json
├── pnpm-lock.yaml
├── postcss.config.js
├── public
└── null.svg
├── src
├── api
│ └── mock.ts
├── assets
│ └── null.svg
├── component
│ ├── carousel
│ │ ├── index.less
│ │ └── index.tsx
│ └── qr-scanner
│ │ └── index.tsx
├── composables
│ ├── authorization.ts
│ └── language.ts
├── enum
│ └── http-enum.ts
├── hooks
│ ├── i18n.ts
│ ├── location.ts
│ └── session.ts
├── http
│ └── axios-instance.ts
├── index.css
├── layout
│ └── main
│ │ ├── MainLayout.tsx
│ │ └── index.less
├── locales
│ ├── en_US.json
│ └── zh_CN.json
├── main.tsx
├── route
│ ├── auth.tsx
│ ├── render-routes.tsx
│ └── routes.tsx
├── store
│ ├── i18n.ts
│ └── user.ts
├── types
│ ├── http.d.ts
│ └── store.d.ts
├── util
│ ├── amount.ts
│ ├── index.ts
│ └── location.ts
├── view
│ ├── app
│ │ ├── App.css
│ │ └── App.tsx
│ └── home
│ │ ├── index.less
│ │ └── index.tsx
└── vite-env.d.ts
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/react-h5-template.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Antd Mobile H5 Template
4 |
5 |
6 | Vite + React + Antd Mobile 组件库的H5初始化模版(脚手架)
7 |
8 |
9 |
10 |
11 | ## 功能
12 | 1. 使用了`postcss`实现`px to rem`
13 | 2. 使用`zustand`作为全局缓存库,并依赖其功能实现了基本的`i18n`国际化
14 | 3. 配置了`icon-park`,即字节旗下`ico`库
15 | 4. 对`react-router-dom`进行了功能封装
16 | 5. 使用`Ant Design Mobile`与`Layout`实现了带有`Tabbar`的公共模版
17 | 6. 使用`axios-hooks`库作为请求库,并对`axios`进行少量封装
18 | 7. 自定义`hooks`: `useLocation`、`useI18n`、`useSessionStorage`
19 | 8. 基于`js-qr`实现了浏览器扫码功能组件`QRScanner`
20 |
21 | ## 说明
22 | 1. 配置`axios`的基地址直接修改`env`配置字段`VITE_BASE_URL`
23 | 2. 全局根字体大小断点(`src/index.css`)
24 |
25 | ```html
26 | html {
27 | -webkit-text-size-adjust: 100%;
28 | -ms-text-size-adjust: 100%;
29 | font-size: 100%;
30 | }
31 |
32 | /* 小屏幕设备(如手机)*/
33 | @media (max-width: 600px) {
34 | html {
35 | font-size: 90%; /* 字体稍微小一点 */
36 | }
37 | }
38 |
39 | /* 中等屏幕设备(如平板)*/
40 | @media (min-width: 601px) and (max-width: 1024px) {
41 | html {
42 | font-size: 100%; /* 标准大小 */
43 | }
44 | }
45 |
46 | /* 大屏幕设备(如桌面)*/
47 | @media (min-width: 1025px) {
48 | html {
49 | font-size: 110%; /* 字体稍微大一点 */
50 | }
51 | }
52 | ```
53 |
54 | 3. 组件库全局配色(`src/index.css`)
55 |
56 | ```html
57 | :root {
58 | --primary-color: #FFC300;
59 | }
60 |
61 | :root:root {
62 | --adm-color-primary: #FFC300;
63 | --adm-color-success: #00b578;
64 | --adm-color-warning: #ff8f1f;
65 | --adm-color-danger: #ff3141;
66 |
67 | --adm-color-white: #ffffff;
68 | --adm-color-text: #333333;
69 | --adm-color-text-secondary: #666666;
70 | --adm-color-weak: #999999;
71 | --adm-color-light: #cccccc;
72 | --adm-color-border: #eeeeee;
73 | --adm-color-box: #f5f5f5;
74 | --adm-color-background: #ffffff;
75 |
76 | --adm-font-size-main: var(--adm-font-size-5);
77 |
78 | --adm-font-family: -apple-system, blinkmacsystemfont, 'Helvetica Neue',
79 | helvetica, segoe ui, arial, roboto, 'PingFang SC', 'miui',
80 | 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;
81 | }
82 | ```
83 | 4. 修改语言
84 |
85 | ```js
86 | const i18nStore = useI18nStore()
87 | i18nStore.changeLanguage('en_US')
88 | i18nStore.changeLanguage('zh_CN')
89 | ```
90 | 其他语言可自行扩展,在`App.tsx`中,使用`useI18nStore`hooks同步修改了组件库的国际化配置
91 | ```jsx
92 | const i18nStore = useI18nStore()
93 | return (
94 | <>
95 |
98 |
99 |
100 | >
101 | )
102 | ```
103 | 5. 使用i18n
104 |
105 | ```js
106 | const t = useI18n();
107 |
108 | t('index.title"')
109 | ```
110 | 国际化文字映射在`src/locales`文件夹下
111 |
112 | 6. 发送请求
113 |
114 | 首先在`src/api`中新增请求文件`xxx.ts`,并定义返回值与参数的`ts interface`,利用 `axios-hooks`发送对应的`http`请求
115 | ```js
116 | import useAxios from 'axios-hooks';
117 | import {Page, Result} from "@/types/http";
118 |
119 | export interface MockResult {
120 | id: number;
121 | }
122 |
123 | export interface MockPage {
124 | id: number;
125 | }
126 |
127 | /**
128 | * fetch the data
129 | * 详细使用可以查看 useAxios 的文档
130 | */
131 | export const useFetchXXX = () => {
132 | // set the url
133 | const url = `/xxx/xxx`;
134 | // fetch the data
135 | const [{data, loading, error}, refetch] = useAxios>(url);
136 | // to do something
137 | return {data, loading, error, refetch};
138 | }
139 |
140 |
141 | /**
142 | * fetch the data with page
143 | * 详细使用可以查看 useAxios 的文档
144 | */
145 | export const useFetchPageXXX = (page: number, size: number) => {
146 | // set the url
147 | const url = `/xxx/xxx?page=${page}&size=${size}`;
148 | // fetch the data
149 | const [{data, loading, error}, refetch] = useAxios>(url);
150 | // to do something
151 | return {data, loading, error, refetch};
152 | }
153 | ```
154 | `useAxios`返回值分别为`数据`、`状态`、`错误`、`操作对象`(`refetch`用于中断请求)
155 |
156 | 7. 路由与缓存配置可直接参考代码
157 |
158 | ## 补充
159 | 简单的封装,方便构建新项目时直接复用,没有复杂的操作,如果你想使用`react`构建一个`h5`或者是`响应式`的`web`项目,可以直接使用这个模版。
160 |
161 |
162 | ```shell
163 | git clone git@github.com:JanYork/react-h5-template.git
164 |
165 | cd react-h5-template
166 |
167 | pnpm i
168 |
169 | pnpm run dev
170 | ```
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Antd Mobile H5 Templet
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ec-web-h5",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc && vite build",
9 | "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "@icon-park/react": "^1.4.2",
14 | "@types/node": "^20.10.0",
15 | "@types/react-router-dom": "^5.3.3",
16 | "@uidotdev/usehooks": "^2.4.1",
17 | "antd-mobile": "^5.33.0",
18 | "axios": "^1.6.2",
19 | "axios-hooks": "^5.0.2",
20 | "jsqr": "^1.4.0",
21 | "less": "^4.2.0",
22 | "lodash.isequal": "^4.5.0",
23 | "query-string": "^8.1.0",
24 | "react": "^18.2.0",
25 | "react-dom": "^18.2.0",
26 | "react-router-dom": "^6.20.0",
27 | "react-slick": "^0.29.0",
28 | "slick-carousel": "^1.8.1",
29 | "zustand": "^4.4.6"
30 | },
31 | "devDependencies": {
32 | "@types/lodash.isequal": "^4.5.8",
33 | "@types/react": "^18.2.37",
34 | "@types/react-dom": "^18.2.15",
35 | "@types/react-slick": "^0.23.12",
36 | "@typescript-eslint/eslint-plugin": "^6.10.0",
37 | "@typescript-eslint/parser": "^6.10.0",
38 | "@vitejs/plugin-react-swc": "^3.5.0",
39 | "eslint": "^8.53.0",
40 | "eslint-plugin-react-hooks": "^4.6.0",
41 | "eslint-plugin-react-refresh": "^0.4.4",
42 | "postcss-pxtorem": "^6.0.0",
43 | "typescript": "^5.2.2",
44 | "vite": "^5.0.0"
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | '@icon-park/react':
9 | specifier: ^1.4.2
10 | version: 1.4.2(react-dom@18.2.0)(react@18.2.0)
11 | '@types/node':
12 | specifier: ^20.10.0
13 | version: 20.10.0
14 | '@types/react-router-dom':
15 | specifier: ^5.3.3
16 | version: 5.3.3
17 | '@uidotdev/usehooks':
18 | specifier: ^2.4.1
19 | version: 2.4.1(react-dom@18.2.0)(react@18.2.0)
20 | antd-mobile:
21 | specifier: ^5.33.0
22 | version: 5.33.0(react-dom@18.2.0)(react@18.2.0)
23 | axios:
24 | specifier: ^1.6.2
25 | version: 1.6.2
26 | axios-hooks:
27 | specifier: ^5.0.2
28 | version: 5.0.2(axios@1.6.2)(react@18.2.0)
29 | jsqr:
30 | specifier: ^1.4.0
31 | version: 1.4.0
32 | less:
33 | specifier: ^4.2.0
34 | version: 4.2.0
35 | lodash.isequal:
36 | specifier: ^4.5.0
37 | version: 4.5.0
38 | query-string:
39 | specifier: ^8.1.0
40 | version: 8.1.0
41 | react:
42 | specifier: ^18.2.0
43 | version: 18.2.0
44 | react-dom:
45 | specifier: ^18.2.0
46 | version: 18.2.0(react@18.2.0)
47 | react-router-dom:
48 | specifier: ^6.20.0
49 | version: 6.20.0(react-dom@18.2.0)(react@18.2.0)
50 | react-slick:
51 | specifier: ^0.29.0
52 | version: 0.29.0(react-dom@18.2.0)(react@18.2.0)
53 | slick-carousel:
54 | specifier: ^1.8.1
55 | version: 1.8.1(jquery@3.7.1)
56 | zustand:
57 | specifier: ^4.4.6
58 | version: 4.4.6(@types/react@18.2.38)(react@18.2.0)
59 |
60 | devDependencies:
61 | '@types/lodash.isequal':
62 | specifier: ^4.5.8
63 | version: 4.5.8
64 | '@types/react':
65 | specifier: ^18.2.37
66 | version: 18.2.38
67 | '@types/react-dom':
68 | specifier: ^18.2.15
69 | version: 18.2.17
70 | '@types/react-slick':
71 | specifier: ^0.23.12
72 | version: 0.23.12
73 | '@typescript-eslint/eslint-plugin':
74 | specifier: ^6.10.0
75 | version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2)
76 | '@typescript-eslint/parser':
77 | specifier: ^6.10.0
78 | version: 6.12.0(eslint@8.54.0)(typescript@5.3.2)
79 | '@vitejs/plugin-react-swc':
80 | specifier: ^3.5.0
81 | version: 3.5.0(vite@5.0.2)
82 | eslint:
83 | specifier: ^8.53.0
84 | version: 8.54.0
85 | eslint-plugin-react-hooks:
86 | specifier: ^4.6.0
87 | version: 4.6.0(eslint@8.54.0)
88 | eslint-plugin-react-refresh:
89 | specifier: ^0.4.4
90 | version: 0.4.4(eslint@8.54.0)
91 | postcss-pxtorem:
92 | specifier: ^6.0.0
93 | version: 6.0.0(postcss@8.4.31)
94 | typescript:
95 | specifier: ^5.2.2
96 | version: 5.3.2
97 | vite:
98 | specifier: ^5.0.0
99 | version: 5.0.2(@types/node@20.10.0)(less@4.2.0)
100 |
101 | packages:
102 |
103 | /@aashutoshrathi/word-wrap@1.2.6:
104 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
105 | engines: {node: '>=0.10.0'}
106 | dev: true
107 |
108 | /@babel/runtime@7.23.4:
109 | resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==}
110 | engines: {node: '>=6.9.0'}
111 | dependencies:
112 | regenerator-runtime: 0.14.0
113 | dev: false
114 |
115 | /@esbuild/android-arm64@0.19.7:
116 | resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==}
117 | engines: {node: '>=12'}
118 | cpu: [arm64]
119 | os: [android]
120 | requiresBuild: true
121 | dev: true
122 | optional: true
123 |
124 | /@esbuild/android-arm@0.19.7:
125 | resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==}
126 | engines: {node: '>=12'}
127 | cpu: [arm]
128 | os: [android]
129 | requiresBuild: true
130 | dev: true
131 | optional: true
132 |
133 | /@esbuild/android-x64@0.19.7:
134 | resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==}
135 | engines: {node: '>=12'}
136 | cpu: [x64]
137 | os: [android]
138 | requiresBuild: true
139 | dev: true
140 | optional: true
141 |
142 | /@esbuild/darwin-arm64@0.19.7:
143 | resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==}
144 | engines: {node: '>=12'}
145 | cpu: [arm64]
146 | os: [darwin]
147 | requiresBuild: true
148 | dev: true
149 | optional: true
150 |
151 | /@esbuild/darwin-x64@0.19.7:
152 | resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==}
153 | engines: {node: '>=12'}
154 | cpu: [x64]
155 | os: [darwin]
156 | requiresBuild: true
157 | dev: true
158 | optional: true
159 |
160 | /@esbuild/freebsd-arm64@0.19.7:
161 | resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==}
162 | engines: {node: '>=12'}
163 | cpu: [arm64]
164 | os: [freebsd]
165 | requiresBuild: true
166 | dev: true
167 | optional: true
168 |
169 | /@esbuild/freebsd-x64@0.19.7:
170 | resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==}
171 | engines: {node: '>=12'}
172 | cpu: [x64]
173 | os: [freebsd]
174 | requiresBuild: true
175 | dev: true
176 | optional: true
177 |
178 | /@esbuild/linux-arm64@0.19.7:
179 | resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==}
180 | engines: {node: '>=12'}
181 | cpu: [arm64]
182 | os: [linux]
183 | requiresBuild: true
184 | dev: true
185 | optional: true
186 |
187 | /@esbuild/linux-arm@0.19.7:
188 | resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==}
189 | engines: {node: '>=12'}
190 | cpu: [arm]
191 | os: [linux]
192 | requiresBuild: true
193 | dev: true
194 | optional: true
195 |
196 | /@esbuild/linux-ia32@0.19.7:
197 | resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==}
198 | engines: {node: '>=12'}
199 | cpu: [ia32]
200 | os: [linux]
201 | requiresBuild: true
202 | dev: true
203 | optional: true
204 |
205 | /@esbuild/linux-loong64@0.19.7:
206 | resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==}
207 | engines: {node: '>=12'}
208 | cpu: [loong64]
209 | os: [linux]
210 | requiresBuild: true
211 | dev: true
212 | optional: true
213 |
214 | /@esbuild/linux-mips64el@0.19.7:
215 | resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==}
216 | engines: {node: '>=12'}
217 | cpu: [mips64el]
218 | os: [linux]
219 | requiresBuild: true
220 | dev: true
221 | optional: true
222 |
223 | /@esbuild/linux-ppc64@0.19.7:
224 | resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==}
225 | engines: {node: '>=12'}
226 | cpu: [ppc64]
227 | os: [linux]
228 | requiresBuild: true
229 | dev: true
230 | optional: true
231 |
232 | /@esbuild/linux-riscv64@0.19.7:
233 | resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==}
234 | engines: {node: '>=12'}
235 | cpu: [riscv64]
236 | os: [linux]
237 | requiresBuild: true
238 | dev: true
239 | optional: true
240 |
241 | /@esbuild/linux-s390x@0.19.7:
242 | resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==}
243 | engines: {node: '>=12'}
244 | cpu: [s390x]
245 | os: [linux]
246 | requiresBuild: true
247 | dev: true
248 | optional: true
249 |
250 | /@esbuild/linux-x64@0.19.7:
251 | resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==}
252 | engines: {node: '>=12'}
253 | cpu: [x64]
254 | os: [linux]
255 | requiresBuild: true
256 | dev: true
257 | optional: true
258 |
259 | /@esbuild/netbsd-x64@0.19.7:
260 | resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==}
261 | engines: {node: '>=12'}
262 | cpu: [x64]
263 | os: [netbsd]
264 | requiresBuild: true
265 | dev: true
266 | optional: true
267 |
268 | /@esbuild/openbsd-x64@0.19.7:
269 | resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==}
270 | engines: {node: '>=12'}
271 | cpu: [x64]
272 | os: [openbsd]
273 | requiresBuild: true
274 | dev: true
275 | optional: true
276 |
277 | /@esbuild/sunos-x64@0.19.7:
278 | resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==}
279 | engines: {node: '>=12'}
280 | cpu: [x64]
281 | os: [sunos]
282 | requiresBuild: true
283 | dev: true
284 | optional: true
285 |
286 | /@esbuild/win32-arm64@0.19.7:
287 | resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==}
288 | engines: {node: '>=12'}
289 | cpu: [arm64]
290 | os: [win32]
291 | requiresBuild: true
292 | dev: true
293 | optional: true
294 |
295 | /@esbuild/win32-ia32@0.19.7:
296 | resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==}
297 | engines: {node: '>=12'}
298 | cpu: [ia32]
299 | os: [win32]
300 | requiresBuild: true
301 | dev: true
302 | optional: true
303 |
304 | /@esbuild/win32-x64@0.19.7:
305 | resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==}
306 | engines: {node: '>=12'}
307 | cpu: [x64]
308 | os: [win32]
309 | requiresBuild: true
310 | dev: true
311 | optional: true
312 |
313 | /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0):
314 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
315 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
316 | peerDependencies:
317 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
318 | dependencies:
319 | eslint: 8.54.0
320 | eslint-visitor-keys: 3.4.3
321 | dev: true
322 |
323 | /@eslint-community/regexpp@4.10.0:
324 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
325 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
326 | dev: true
327 |
328 | /@eslint/eslintrc@2.1.3:
329 | resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==}
330 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
331 | dependencies:
332 | ajv: 6.12.6
333 | debug: 4.3.4
334 | espree: 9.6.1
335 | globals: 13.23.0
336 | ignore: 5.3.0
337 | import-fresh: 3.3.0
338 | js-yaml: 4.1.0
339 | minimatch: 3.1.2
340 | strip-json-comments: 3.1.1
341 | transitivePeerDependencies:
342 | - supports-color
343 | dev: true
344 |
345 | /@eslint/js@8.54.0:
346 | resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==}
347 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
348 | dev: true
349 |
350 | /@floating-ui/core@1.5.0:
351 | resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==}
352 | dependencies:
353 | '@floating-ui/utils': 0.1.6
354 | dev: false
355 |
356 | /@floating-ui/dom@1.5.3:
357 | resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==}
358 | dependencies:
359 | '@floating-ui/core': 1.5.0
360 | '@floating-ui/utils': 0.1.6
361 | dev: false
362 |
363 | /@floating-ui/utils@0.1.6:
364 | resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
365 | dev: false
366 |
367 | /@humanwhocodes/config-array@0.11.13:
368 | resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==}
369 | engines: {node: '>=10.10.0'}
370 | dependencies:
371 | '@humanwhocodes/object-schema': 2.0.1
372 | debug: 4.3.4
373 | minimatch: 3.1.2
374 | transitivePeerDependencies:
375 | - supports-color
376 | dev: true
377 |
378 | /@humanwhocodes/module-importer@1.0.1:
379 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
380 | engines: {node: '>=12.22'}
381 | dev: true
382 |
383 | /@humanwhocodes/object-schema@2.0.1:
384 | resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==}
385 | dev: true
386 |
387 | /@icon-park/react@1.4.2(react-dom@18.2.0)(react@18.2.0):
388 | resolution: {integrity: sha512-+MtQLjNiRuia3fC/NfpSCTIy5KH5b+NkMB9zYd7p3R4aAIK61AjK0OSraaICJdkKooU9jpzk8m0fY4g9A3JqhQ==}
389 | engines: {node: '>= 8.0.0', npm: '>= 5.0.0'}
390 | peerDependencies:
391 | react: '>=16.9'
392 | react-dom: '>=16.9'
393 | dependencies:
394 | react: 18.2.0
395 | react-dom: 18.2.0(react@18.2.0)
396 | dev: false
397 |
398 | /@nodelib/fs.scandir@2.1.5:
399 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
400 | engines: {node: '>= 8'}
401 | dependencies:
402 | '@nodelib/fs.stat': 2.0.5
403 | run-parallel: 1.2.0
404 | dev: true
405 |
406 | /@nodelib/fs.stat@2.0.5:
407 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
408 | engines: {node: '>= 8'}
409 | dev: true
410 |
411 | /@nodelib/fs.walk@1.2.8:
412 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
413 | engines: {node: '>= 8'}
414 | dependencies:
415 | '@nodelib/fs.scandir': 2.1.5
416 | fastq: 1.15.0
417 | dev: true
418 |
419 | /@rc-component/mini-decimal@1.1.0:
420 | resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==}
421 | engines: {node: '>=8.x'}
422 | dependencies:
423 | '@babel/runtime': 7.23.4
424 | dev: false
425 |
426 | /@react-spring/animated@9.6.1(react@18.2.0):
427 | resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==}
428 | peerDependencies:
429 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
430 | dependencies:
431 | '@react-spring/shared': 9.6.1(react@18.2.0)
432 | '@react-spring/types': 9.6.1
433 | react: 18.2.0
434 | dev: false
435 |
436 | /@react-spring/core@9.6.1(react@18.2.0):
437 | resolution: {integrity: sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==}
438 | peerDependencies:
439 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
440 | dependencies:
441 | '@react-spring/animated': 9.6.1(react@18.2.0)
442 | '@react-spring/rafz': 9.6.1
443 | '@react-spring/shared': 9.6.1(react@18.2.0)
444 | '@react-spring/types': 9.6.1
445 | react: 18.2.0
446 | dev: false
447 |
448 | /@react-spring/rafz@9.6.1:
449 | resolution: {integrity: sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==}
450 | dev: false
451 |
452 | /@react-spring/shared@9.6.1(react@18.2.0):
453 | resolution: {integrity: sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==}
454 | peerDependencies:
455 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
456 | dependencies:
457 | '@react-spring/rafz': 9.6.1
458 | '@react-spring/types': 9.6.1
459 | react: 18.2.0
460 | dev: false
461 |
462 | /@react-spring/types@9.6.1:
463 | resolution: {integrity: sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==}
464 | dev: false
465 |
466 | /@react-spring/web@9.6.1(react-dom@18.2.0)(react@18.2.0):
467 | resolution: {integrity: sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw==}
468 | peerDependencies:
469 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
470 | react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
471 | dependencies:
472 | '@react-spring/animated': 9.6.1(react@18.2.0)
473 | '@react-spring/core': 9.6.1(react@18.2.0)
474 | '@react-spring/shared': 9.6.1(react@18.2.0)
475 | '@react-spring/types': 9.6.1
476 | react: 18.2.0
477 | react-dom: 18.2.0(react@18.2.0)
478 | dev: false
479 |
480 | /@remix-run/router@1.13.0:
481 | resolution: {integrity: sha512-5dMOnVnefRsl4uRnAdoWjtVTdh8e6aZqgM4puy9nmEADH72ck+uXwzpJLEKE9Q6F8ZljNewLgmTfkxUrBdv4WA==}
482 | engines: {node: '>=14.0.0'}
483 | dev: false
484 |
485 | /@rollup/rollup-android-arm-eabi@4.5.2:
486 | resolution: {integrity: sha512-ee7BudTwwrglFYSc3UnqInDDjCLWHKrFmGNi4aK7jlEyg4CyPa1DCMrZfsN1O13YT76UFEqXz2CoN7BCGpUlJw==}
487 | cpu: [arm]
488 | os: [android]
489 | requiresBuild: true
490 | dev: true
491 | optional: true
492 |
493 | /@rollup/rollup-android-arm64@4.5.2:
494 | resolution: {integrity: sha512-xOuhj9HHtn8128ir8veoQsBbAUBasDbHIBniYTEx02pAmu9EXL+ZjJqngnNEy6ZgZ4h1JwL33GMNu3yJL5Mzow==}
495 | cpu: [arm64]
496 | os: [android]
497 | requiresBuild: true
498 | dev: true
499 | optional: true
500 |
501 | /@rollup/rollup-darwin-arm64@4.5.2:
502 | resolution: {integrity: sha512-NTGJWoL8bKyqyWFn9/RzSv4hQ4wTbaAv0lHHRwf4OnpiiP4P8W0jiXbm8Nc5BCXKmWAwuvJY82mcIU2TayC20g==}
503 | cpu: [arm64]
504 | os: [darwin]
505 | requiresBuild: true
506 | dev: true
507 | optional: true
508 |
509 | /@rollup/rollup-darwin-x64@4.5.2:
510 | resolution: {integrity: sha512-hlKqj7bpPvU15sZo4za14u185lpMzdwWLMc9raMqPK4wywt0wR23y1CaVQ4oAFXat3b5/gmRntyfpwWTKl+vvA==}
511 | cpu: [x64]
512 | os: [darwin]
513 | requiresBuild: true
514 | dev: true
515 | optional: true
516 |
517 | /@rollup/rollup-linux-arm-gnueabihf@4.5.2:
518 | resolution: {integrity: sha512-7ZIZx8c3u+pfI0ohQsft/GywrXez0uR6dUP0JhBuCK3sFO5TfdLn/YApnVkvPxuTv3+YKPIZend9Mt7Cz6sS3Q==}
519 | cpu: [arm]
520 | os: [linux]
521 | requiresBuild: true
522 | dev: true
523 | optional: true
524 |
525 | /@rollup/rollup-linux-arm64-gnu@4.5.2:
526 | resolution: {integrity: sha512-7Pk/5mO11JW/cH+a8lL/i0ZxmRGrbpYqN0VwO2DHhU+SJWWOH2zE1RAcPaj8KqiwC8DCDIJOSxjV9+9lLb6aeA==}
527 | cpu: [arm64]
528 | os: [linux]
529 | libc: [glibc]
530 | requiresBuild: true
531 | dev: true
532 | optional: true
533 |
534 | /@rollup/rollup-linux-arm64-musl@4.5.2:
535 | resolution: {integrity: sha512-KrRnuG5phJx756e62wxvWH2e+TK84MP2IVuPwfge+GBvWqIUfVzFRn09TKruuQBXzZp52Vyma7FjMDkwlA9xpg==}
536 | cpu: [arm64]
537 | os: [linux]
538 | libc: [musl]
539 | requiresBuild: true
540 | dev: true
541 | optional: true
542 |
543 | /@rollup/rollup-linux-x64-gnu@4.5.2:
544 | resolution: {integrity: sha512-My+53GasPa2D2tU5dXiyHYwrELAUouSfkNlZ3bUKpI7btaztO5vpALEs3mvFjM7aKTvEbc7GQckuXeXIDKQ0fg==}
545 | cpu: [x64]
546 | os: [linux]
547 | libc: [glibc]
548 | requiresBuild: true
549 | dev: true
550 | optional: true
551 |
552 | /@rollup/rollup-linux-x64-musl@4.5.2:
553 | resolution: {integrity: sha512-/f0Q6Sc+Vw54Ws6N8fxaEe4R7at3b8pFyv+O/F2VaQ4hODUJcRUcCBJh6zuqtgQQt7w845VTkGLFgWZkP3tUoQ==}
554 | cpu: [x64]
555 | os: [linux]
556 | libc: [musl]
557 | requiresBuild: true
558 | dev: true
559 | optional: true
560 |
561 | /@rollup/rollup-win32-arm64-msvc@4.5.2:
562 | resolution: {integrity: sha512-NCKuuZWLht6zj7s6EIFef4BxCRX1GMr83S2W4HPCA0RnJ4iHE4FS1695q6Ewoa6A9nFjJe1//yUu0kgBU07Edw==}
563 | cpu: [arm64]
564 | os: [win32]
565 | requiresBuild: true
566 | dev: true
567 | optional: true
568 |
569 | /@rollup/rollup-win32-ia32-msvc@4.5.2:
570 | resolution: {integrity: sha512-J5zL3riR4AOyU/J3M/i4k/zZ8eP1yT+nTmAKztCXJtnI36jYH0eepvob22mAQ/kLwfsK2TB6dbyVY1F8c/0H5A==}
571 | cpu: [ia32]
572 | os: [win32]
573 | requiresBuild: true
574 | dev: true
575 | optional: true
576 |
577 | /@rollup/rollup-win32-x64-msvc@4.5.2:
578 | resolution: {integrity: sha512-pL0RXRHuuGLhvs7ayX/SAHph1hrDPXOM5anyYUQXWJEENxw3nfHkzv8FfVlEVcLyKPAEgDRkd6RKZq2SMqS/yg==}
579 | cpu: [x64]
580 | os: [win32]
581 | requiresBuild: true
582 | dev: true
583 | optional: true
584 |
585 | /@swc/core-darwin-arm64@1.3.99:
586 | resolution: {integrity: sha512-Qj7Jct68q3ZKeuJrjPx7k8SxzWN6PqLh+VFxzA+KwLDpQDPzOlKRZwkIMzuFjLhITO4RHgSnXoDk/Syz0ZeN+Q==}
587 | engines: {node: '>=10'}
588 | cpu: [arm64]
589 | os: [darwin]
590 | requiresBuild: true
591 | dev: true
592 | optional: true
593 |
594 | /@swc/core-darwin-x64@1.3.99:
595 | resolution: {integrity: sha512-wR7m9QVJjgiBu1PSOHy7s66uJPa45Kf9bZExXUL+JAa9OQxt5y+XVzr+n+F045VXQOwdGWplgPnWjgbUUHEVyw==}
596 | engines: {node: '>=10'}
597 | cpu: [x64]
598 | os: [darwin]
599 | requiresBuild: true
600 | dev: true
601 | optional: true
602 |
603 | /@swc/core-linux-arm64-gnu@1.3.99:
604 | resolution: {integrity: sha512-gcGv1l5t0DScEONmw5OhdVmEI/o49HCe9Ik38zzH0NtDkc+PDYaCcXU5rvfZP2qJFaAAr8cua8iJcOunOSLmnA==}
605 | engines: {node: '>=10'}
606 | cpu: [arm64]
607 | os: [linux]
608 | libc: [glibc]
609 | requiresBuild: true
610 | dev: true
611 | optional: true
612 |
613 | /@swc/core-linux-arm64-musl@1.3.99:
614 | resolution: {integrity: sha512-XL1/eUsTO8BiKsWq9i3iWh7H99iPO61+9HYiWVKhSavknfj4Plbn+XyajDpxsauln5o8t+BRGitymtnAWJM4UQ==}
615 | engines: {node: '>=10'}
616 | cpu: [arm64]
617 | os: [linux]
618 | libc: [musl]
619 | requiresBuild: true
620 | dev: true
621 | optional: true
622 |
623 | /@swc/core-linux-x64-gnu@1.3.99:
624 | resolution: {integrity: sha512-fGrXYE6DbTfGNIGQmBefYxSk3rp/1lgbD0nVg4rl4mfFRQPi7CgGhrrqSuqZ/ezXInUIgoCyvYGWFSwjLXt/Qg==}
625 | engines: {node: '>=10'}
626 | cpu: [x64]
627 | os: [linux]
628 | libc: [glibc]
629 | requiresBuild: true
630 | dev: true
631 | optional: true
632 |
633 | /@swc/core-linux-x64-musl@1.3.99:
634 | resolution: {integrity: sha512-kvgZp/mqf3IJ806gUOL6gN6VU15+DfzM1Zv4Udn8GqgXiUAvbQehrtruid4Snn5pZTLj4PEpSCBbxgxK1jbssA==}
635 | engines: {node: '>=10'}
636 | cpu: [x64]
637 | os: [linux]
638 | libc: [musl]
639 | requiresBuild: true
640 | dev: true
641 | optional: true
642 |
643 | /@swc/core-win32-arm64-msvc@1.3.99:
644 | resolution: {integrity: sha512-yt8RtZ4W/QgFF+JUemOUQAkVW58cCST7mbfKFZ1v16w3pl3NcWd9OrtppFIXpbjU1rrUX2zp2R7HZZzZ2Zk/aQ==}
645 | engines: {node: '>=10'}
646 | cpu: [arm64]
647 | os: [win32]
648 | requiresBuild: true
649 | dev: true
650 | optional: true
651 |
652 | /@swc/core-win32-ia32-msvc@1.3.99:
653 | resolution: {integrity: sha512-62p5fWnOJR/rlbmbUIpQEVRconICy5KDScWVuJg1v3GPLBrmacjphyHiJC1mp6dYvvoEWCk/77c/jcQwlXrDXw==}
654 | engines: {node: '>=10'}
655 | cpu: [ia32]
656 | os: [win32]
657 | requiresBuild: true
658 | dev: true
659 | optional: true
660 |
661 | /@swc/core-win32-x64-msvc@1.3.99:
662 | resolution: {integrity: sha512-PdppWhkoS45VGdMBxvClVgF1hVjqamtvYd82Gab1i4IV45OSym2KinoDCKE1b6j3LwBLOn2J9fvChGSgGfDCHQ==}
663 | engines: {node: '>=10'}
664 | cpu: [x64]
665 | os: [win32]
666 | requiresBuild: true
667 | dev: true
668 | optional: true
669 |
670 | /@swc/core@1.3.99:
671 | resolution: {integrity: sha512-8O996RfuPC4ieb4zbYMfbyCU9k4gSOpyCNnr7qBQ+o7IEmh8JCV6B8wwu+fT/Om/6Lp34KJe1IpJ/24axKS6TQ==}
672 | engines: {node: '>=10'}
673 | requiresBuild: true
674 | peerDependencies:
675 | '@swc/helpers': ^0.5.0
676 | peerDependenciesMeta:
677 | '@swc/helpers':
678 | optional: true
679 | dependencies:
680 | '@swc/counter': 0.1.2
681 | '@swc/types': 0.1.5
682 | optionalDependencies:
683 | '@swc/core-darwin-arm64': 1.3.99
684 | '@swc/core-darwin-x64': 1.3.99
685 | '@swc/core-linux-arm64-gnu': 1.3.99
686 | '@swc/core-linux-arm64-musl': 1.3.99
687 | '@swc/core-linux-x64-gnu': 1.3.99
688 | '@swc/core-linux-x64-musl': 1.3.99
689 | '@swc/core-win32-arm64-msvc': 1.3.99
690 | '@swc/core-win32-ia32-msvc': 1.3.99
691 | '@swc/core-win32-x64-msvc': 1.3.99
692 | dev: true
693 |
694 | /@swc/counter@0.1.2:
695 | resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==}
696 | dev: true
697 |
698 | /@swc/types@0.1.5:
699 | resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==}
700 | dev: true
701 |
702 | /@types/history@4.7.11:
703 | resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==}
704 | dev: false
705 |
706 | /@types/js-cookie@2.2.7:
707 | resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==}
708 | dev: false
709 |
710 | /@types/json-schema@7.0.15:
711 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
712 | dev: true
713 |
714 | /@types/lodash.isequal@4.5.8:
715 | resolution: {integrity: sha512-uput6pg4E/tj2LGxCZo9+y27JNyB2OZuuI/T5F+ylVDYuqICLG2/ktjxx0v6GvVntAf8TvEzeQLcV0ffRirXuA==}
716 | dependencies:
717 | '@types/lodash': 4.14.202
718 | dev: true
719 |
720 | /@types/lodash@4.14.202:
721 | resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==}
722 | dev: true
723 |
724 | /@types/node@20.10.0:
725 | resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==}
726 | dependencies:
727 | undici-types: 5.26.5
728 |
729 | /@types/prop-types@15.7.11:
730 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
731 |
732 | /@types/react-dom@18.2.17:
733 | resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==}
734 | dependencies:
735 | '@types/react': 18.2.38
736 | dev: true
737 |
738 | /@types/react-router-dom@5.3.3:
739 | resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
740 | dependencies:
741 | '@types/history': 4.7.11
742 | '@types/react': 18.2.38
743 | '@types/react-router': 5.1.20
744 | dev: false
745 |
746 | /@types/react-router@5.1.20:
747 | resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==}
748 | dependencies:
749 | '@types/history': 4.7.11
750 | '@types/react': 18.2.38
751 | dev: false
752 |
753 | /@types/react-slick@0.23.12:
754 | resolution: {integrity: sha512-WjY/wIjzgXCh6gXRZL75OC9n/Hn4MwKWI7ZJ4iA2OxavN9eKvkV5MPFjSgH5sofabq78Ucrl6u3okiBUNNIrDQ==}
755 | dependencies:
756 | '@types/react': 18.2.38
757 | dev: true
758 |
759 | /@types/react@18.2.38:
760 | resolution: {integrity: sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==}
761 | dependencies:
762 | '@types/prop-types': 15.7.11
763 | '@types/scheduler': 0.16.8
764 | csstype: 3.1.2
765 |
766 | /@types/scheduler@0.16.8:
767 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
768 |
769 | /@types/semver@7.5.6:
770 | resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
771 | dev: true
772 |
773 | /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2):
774 | resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==}
775 | engines: {node: ^16.0.0 || >=18.0.0}
776 | peerDependencies:
777 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
778 | eslint: ^7.0.0 || ^8.0.0
779 | typescript: '*'
780 | peerDependenciesMeta:
781 | typescript:
782 | optional: true
783 | dependencies:
784 | '@eslint-community/regexpp': 4.10.0
785 | '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.3.2)
786 | '@typescript-eslint/scope-manager': 6.12.0
787 | '@typescript-eslint/type-utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2)
788 | '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2)
789 | '@typescript-eslint/visitor-keys': 6.12.0
790 | debug: 4.3.4
791 | eslint: 8.54.0
792 | graphemer: 1.4.0
793 | ignore: 5.3.0
794 | natural-compare: 1.4.0
795 | semver: 7.5.4
796 | ts-api-utils: 1.0.3(typescript@5.3.2)
797 | typescript: 5.3.2
798 | transitivePeerDependencies:
799 | - supports-color
800 | dev: true
801 |
802 | /@typescript-eslint/parser@6.12.0(eslint@8.54.0)(typescript@5.3.2):
803 | resolution: {integrity: sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==}
804 | engines: {node: ^16.0.0 || >=18.0.0}
805 | peerDependencies:
806 | eslint: ^7.0.0 || ^8.0.0
807 | typescript: '*'
808 | peerDependenciesMeta:
809 | typescript:
810 | optional: true
811 | dependencies:
812 | '@typescript-eslint/scope-manager': 6.12.0
813 | '@typescript-eslint/types': 6.12.0
814 | '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2)
815 | '@typescript-eslint/visitor-keys': 6.12.0
816 | debug: 4.3.4
817 | eslint: 8.54.0
818 | typescript: 5.3.2
819 | transitivePeerDependencies:
820 | - supports-color
821 | dev: true
822 |
823 | /@typescript-eslint/scope-manager@6.12.0:
824 | resolution: {integrity: sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==}
825 | engines: {node: ^16.0.0 || >=18.0.0}
826 | dependencies:
827 | '@typescript-eslint/types': 6.12.0
828 | '@typescript-eslint/visitor-keys': 6.12.0
829 | dev: true
830 |
831 | /@typescript-eslint/type-utils@6.12.0(eslint@8.54.0)(typescript@5.3.2):
832 | resolution: {integrity: sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==}
833 | engines: {node: ^16.0.0 || >=18.0.0}
834 | peerDependencies:
835 | eslint: ^7.0.0 || ^8.0.0
836 | typescript: '*'
837 | peerDependenciesMeta:
838 | typescript:
839 | optional: true
840 | dependencies:
841 | '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2)
842 | '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2)
843 | debug: 4.3.4
844 | eslint: 8.54.0
845 | ts-api-utils: 1.0.3(typescript@5.3.2)
846 | typescript: 5.3.2
847 | transitivePeerDependencies:
848 | - supports-color
849 | dev: true
850 |
851 | /@typescript-eslint/types@6.12.0:
852 | resolution: {integrity: sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==}
853 | engines: {node: ^16.0.0 || >=18.0.0}
854 | dev: true
855 |
856 | /@typescript-eslint/typescript-estree@6.12.0(typescript@5.3.2):
857 | resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==}
858 | engines: {node: ^16.0.0 || >=18.0.0}
859 | peerDependencies:
860 | typescript: '*'
861 | peerDependenciesMeta:
862 | typescript:
863 | optional: true
864 | dependencies:
865 | '@typescript-eslint/types': 6.12.0
866 | '@typescript-eslint/visitor-keys': 6.12.0
867 | debug: 4.3.4
868 | globby: 11.1.0
869 | is-glob: 4.0.3
870 | semver: 7.5.4
871 | ts-api-utils: 1.0.3(typescript@5.3.2)
872 | typescript: 5.3.2
873 | transitivePeerDependencies:
874 | - supports-color
875 | dev: true
876 |
877 | /@typescript-eslint/utils@6.12.0(eslint@8.54.0)(typescript@5.3.2):
878 | resolution: {integrity: sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==}
879 | engines: {node: ^16.0.0 || >=18.0.0}
880 | peerDependencies:
881 | eslint: ^7.0.0 || ^8.0.0
882 | dependencies:
883 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0)
884 | '@types/json-schema': 7.0.15
885 | '@types/semver': 7.5.6
886 | '@typescript-eslint/scope-manager': 6.12.0
887 | '@typescript-eslint/types': 6.12.0
888 | '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2)
889 | eslint: 8.54.0
890 | semver: 7.5.4
891 | transitivePeerDependencies:
892 | - supports-color
893 | - typescript
894 | dev: true
895 |
896 | /@typescript-eslint/visitor-keys@6.12.0:
897 | resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==}
898 | engines: {node: ^16.0.0 || >=18.0.0}
899 | dependencies:
900 | '@typescript-eslint/types': 6.12.0
901 | eslint-visitor-keys: 3.4.3
902 | dev: true
903 |
904 | /@uidotdev/usehooks@2.4.1(react-dom@18.2.0)(react@18.2.0):
905 | resolution: {integrity: sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==}
906 | engines: {node: '>=16'}
907 | peerDependencies:
908 | react: '>=18.0.0'
909 | react-dom: '>=18.0.0'
910 | dependencies:
911 | react: 18.2.0
912 | react-dom: 18.2.0(react@18.2.0)
913 | dev: false
914 |
915 | /@ungap/structured-clone@1.2.0:
916 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
917 | dev: true
918 |
919 | /@use-gesture/core@10.3.0:
920 | resolution: {integrity: sha512-rh+6MND31zfHcy9VU3dOZCqGY511lvGcfyJenN4cWZe0u1BH6brBpBddLVXhF2r4BMqWbvxfsbL7D287thJU2A==}
921 | dev: false
922 |
923 | /@use-gesture/react@10.3.0(react@18.2.0):
924 | resolution: {integrity: sha512-3zc+Ve99z4usVP6l9knYVbVnZgfqhKah7sIG+PS2w+vpig2v2OLct05vs+ZXMzwxdNCMka8B+8WlOo0z6Pn6DA==}
925 | peerDependencies:
926 | react: '>= 16.8.0'
927 | dependencies:
928 | '@use-gesture/core': 10.3.0
929 | react: 18.2.0
930 | dev: false
931 |
932 | /@vitejs/plugin-react-swc@3.5.0(vite@5.0.2):
933 | resolution: {integrity: sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==}
934 | peerDependencies:
935 | vite: ^4 || ^5
936 | dependencies:
937 | '@swc/core': 1.3.99
938 | vite: 5.0.2(@types/node@20.10.0)(less@4.2.0)
939 | transitivePeerDependencies:
940 | - '@swc/helpers'
941 | dev: true
942 |
943 | /acorn-jsx@5.3.2(acorn@8.11.2):
944 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
945 | peerDependencies:
946 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
947 | dependencies:
948 | acorn: 8.11.2
949 | dev: true
950 |
951 | /acorn@8.11.2:
952 | resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
953 | engines: {node: '>=0.4.0'}
954 | hasBin: true
955 | dev: true
956 |
957 | /ahooks-v3-count@1.0.0:
958 | resolution: {integrity: sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ==}
959 | dev: false
960 |
961 | /ahooks@3.7.8(react@18.2.0):
962 | resolution: {integrity: sha512-e/NMlQWoCjaUtncNFIZk3FG1ImSkV/JhScQSkTqnftakRwdfZWSw6zzoWSG9OMYqPNs2MguDYBUFFC6THelWXA==}
963 | engines: {node: '>=8.0.0'}
964 | peerDependencies:
965 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
966 | dependencies:
967 | '@babel/runtime': 7.23.4
968 | '@types/js-cookie': 2.2.7
969 | ahooks-v3-count: 1.0.0
970 | dayjs: 1.11.10
971 | intersection-observer: 0.12.2
972 | js-cookie: 2.2.1
973 | lodash: 4.17.21
974 | react: 18.2.0
975 | resize-observer-polyfill: 1.5.1
976 | screenfull: 5.2.0
977 | tslib: 2.6.2
978 | dev: false
979 |
980 | /ajv@6.12.6:
981 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
982 | dependencies:
983 | fast-deep-equal: 3.1.3
984 | fast-json-stable-stringify: 2.1.0
985 | json-schema-traverse: 0.4.1
986 | uri-js: 4.4.1
987 | dev: true
988 |
989 | /ansi-regex@5.0.1:
990 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
991 | engines: {node: '>=8'}
992 | dev: true
993 |
994 | /ansi-styles@4.3.0:
995 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
996 | engines: {node: '>=8'}
997 | dependencies:
998 | color-convert: 2.0.1
999 | dev: true
1000 |
1001 | /antd-mobile-icons@0.3.0:
1002 | resolution: {integrity: sha512-rqINQpJWZWrva9moCd1Ye695MZYWmqLPE+bY8d2xLRy7iSQwPsinCdZYjpUPp2zL/LnKYSyXxP2ut2A+DC+whQ==}
1003 | dev: false
1004 |
1005 | /antd-mobile-v5-count@1.0.1:
1006 | resolution: {integrity: sha512-YGsiEDCPUDz3SzfXi6gLZn/HpeSMW+jgPc4qiYUr1fSopg3hkUie2TnooJdExgfiETHefH3Ggs58He0OVfegLA==}
1007 | dev: false
1008 |
1009 | /antd-mobile@5.33.0(react-dom@18.2.0)(react@18.2.0):
1010 | resolution: {integrity: sha512-Q1t8It+8D8Sc2Y11KR+a75leTqsEJe3C2wzF154fJmzJHxYN5efSIrCOjrDVok4hvWWilpN9wb7+lxvDwmXF7g==}
1011 | peerDependencies:
1012 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1013 | dependencies:
1014 | '@floating-ui/dom': 1.5.3
1015 | '@rc-component/mini-decimal': 1.1.0
1016 | '@react-spring/web': 9.6.1(react-dom@18.2.0)(react@18.2.0)
1017 | '@use-gesture/react': 10.3.0(react@18.2.0)
1018 | ahooks: 3.7.8(react@18.2.0)
1019 | antd-mobile-icons: 0.3.0
1020 | antd-mobile-v5-count: 1.0.1
1021 | classnames: 2.3.2
1022 | dayjs: 1.11.10
1023 | lodash: 4.17.21
1024 | rc-field-form: 1.27.4(react-dom@18.2.0)(react@18.2.0)
1025 | rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0)
1026 | react: 18.2.0
1027 | react-is: 18.2.0
1028 | runes2: 1.1.3
1029 | staged-components: 1.1.3(react@18.2.0)
1030 | tslib: 2.6.2
1031 | use-sync-external-store: 1.2.0(react@18.2.0)
1032 | transitivePeerDependencies:
1033 | - react-dom
1034 | dev: false
1035 |
1036 | /argparse@2.0.1:
1037 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
1038 | dev: true
1039 |
1040 | /array-union@2.1.0:
1041 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
1042 | engines: {node: '>=8'}
1043 | dev: true
1044 |
1045 | /async-validator@4.2.5:
1046 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
1047 | dev: false
1048 |
1049 | /asynckit@0.4.0:
1050 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
1051 | dev: false
1052 |
1053 | /axios-hooks@5.0.2(axios@1.6.2)(react@18.2.0):
1054 | resolution: {integrity: sha512-A047WTutYx5mYzfPc+CFblEliHLlLQ9zyrCJGtQeu5RyX0aLiAaOqqSvu2C6ts4fHFZfK9IPflqppIeIjldlrg==}
1055 | peerDependencies:
1056 | axios: '>=1.0.0'
1057 | react: ^16.8.0-0 || ^17.0.0 || ^18.0.0
1058 | dependencies:
1059 | '@babel/runtime': 7.23.4
1060 | axios: 1.6.2
1061 | dequal: 2.0.3
1062 | lru-cache: 10.1.0
1063 | react: 18.2.0
1064 | dev: false
1065 |
1066 | /axios@1.6.2:
1067 | resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==}
1068 | dependencies:
1069 | follow-redirects: 1.15.3
1070 | form-data: 4.0.0
1071 | proxy-from-env: 1.1.0
1072 | transitivePeerDependencies:
1073 | - debug
1074 | dev: false
1075 |
1076 | /balanced-match@1.0.2:
1077 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
1078 | dev: true
1079 |
1080 | /brace-expansion@1.1.11:
1081 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
1082 | dependencies:
1083 | balanced-match: 1.0.2
1084 | concat-map: 0.0.1
1085 | dev: true
1086 |
1087 | /braces@3.0.2:
1088 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
1089 | engines: {node: '>=8'}
1090 | dependencies:
1091 | fill-range: 7.0.1
1092 | dev: true
1093 |
1094 | /callsites@3.1.0:
1095 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
1096 | engines: {node: '>=6'}
1097 | dev: true
1098 |
1099 | /chalk@4.1.2:
1100 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
1101 | engines: {node: '>=10'}
1102 | dependencies:
1103 | ansi-styles: 4.3.0
1104 | supports-color: 7.2.0
1105 | dev: true
1106 |
1107 | /classnames@2.3.2:
1108 | resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==}
1109 | dev: false
1110 |
1111 | /color-convert@2.0.1:
1112 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
1113 | engines: {node: '>=7.0.0'}
1114 | dependencies:
1115 | color-name: 1.1.4
1116 | dev: true
1117 |
1118 | /color-name@1.1.4:
1119 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1120 | dev: true
1121 |
1122 | /combined-stream@1.0.8:
1123 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
1124 | engines: {node: '>= 0.8'}
1125 | dependencies:
1126 | delayed-stream: 1.0.0
1127 | dev: false
1128 |
1129 | /concat-map@0.0.1:
1130 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
1131 | dev: true
1132 |
1133 | /copy-anything@2.0.6:
1134 | resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
1135 | dependencies:
1136 | is-what: 3.14.1
1137 |
1138 | /cross-spawn@7.0.3:
1139 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
1140 | engines: {node: '>= 8'}
1141 | dependencies:
1142 | path-key: 3.1.1
1143 | shebang-command: 2.0.0
1144 | which: 2.0.2
1145 | dev: true
1146 |
1147 | /csstype@3.1.2:
1148 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
1149 |
1150 | /dayjs@1.11.10:
1151 | resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
1152 | dev: false
1153 |
1154 | /debug@3.2.7:
1155 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
1156 | requiresBuild: true
1157 | peerDependencies:
1158 | supports-color: '*'
1159 | peerDependenciesMeta:
1160 | supports-color:
1161 | optional: true
1162 | dependencies:
1163 | ms: 2.1.2
1164 | optional: true
1165 |
1166 | /debug@4.3.4:
1167 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1168 | engines: {node: '>=6.0'}
1169 | peerDependencies:
1170 | supports-color: '*'
1171 | peerDependenciesMeta:
1172 | supports-color:
1173 | optional: true
1174 | dependencies:
1175 | ms: 2.1.2
1176 | dev: true
1177 |
1178 | /decode-uri-component@0.4.1:
1179 | resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==}
1180 | engines: {node: '>=14.16'}
1181 | dev: false
1182 |
1183 | /deep-is@0.1.4:
1184 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
1185 | dev: true
1186 |
1187 | /delayed-stream@1.0.0:
1188 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
1189 | engines: {node: '>=0.4.0'}
1190 | dev: false
1191 |
1192 | /dequal@2.0.3:
1193 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
1194 | engines: {node: '>=6'}
1195 | dev: false
1196 |
1197 | /dir-glob@3.0.1:
1198 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
1199 | engines: {node: '>=8'}
1200 | dependencies:
1201 | path-type: 4.0.0
1202 | dev: true
1203 |
1204 | /doctrine@3.0.0:
1205 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1206 | engines: {node: '>=6.0.0'}
1207 | dependencies:
1208 | esutils: 2.0.3
1209 | dev: true
1210 |
1211 | /enquire.js@2.1.6:
1212 | resolution: {integrity: sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==}
1213 | dev: false
1214 |
1215 | /errno@0.1.8:
1216 | resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
1217 | hasBin: true
1218 | requiresBuild: true
1219 | dependencies:
1220 | prr: 1.0.1
1221 | optional: true
1222 |
1223 | /esbuild@0.19.7:
1224 | resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==}
1225 | engines: {node: '>=12'}
1226 | hasBin: true
1227 | requiresBuild: true
1228 | optionalDependencies:
1229 | '@esbuild/android-arm': 0.19.7
1230 | '@esbuild/android-arm64': 0.19.7
1231 | '@esbuild/android-x64': 0.19.7
1232 | '@esbuild/darwin-arm64': 0.19.7
1233 | '@esbuild/darwin-x64': 0.19.7
1234 | '@esbuild/freebsd-arm64': 0.19.7
1235 | '@esbuild/freebsd-x64': 0.19.7
1236 | '@esbuild/linux-arm': 0.19.7
1237 | '@esbuild/linux-arm64': 0.19.7
1238 | '@esbuild/linux-ia32': 0.19.7
1239 | '@esbuild/linux-loong64': 0.19.7
1240 | '@esbuild/linux-mips64el': 0.19.7
1241 | '@esbuild/linux-ppc64': 0.19.7
1242 | '@esbuild/linux-riscv64': 0.19.7
1243 | '@esbuild/linux-s390x': 0.19.7
1244 | '@esbuild/linux-x64': 0.19.7
1245 | '@esbuild/netbsd-x64': 0.19.7
1246 | '@esbuild/openbsd-x64': 0.19.7
1247 | '@esbuild/sunos-x64': 0.19.7
1248 | '@esbuild/win32-arm64': 0.19.7
1249 | '@esbuild/win32-ia32': 0.19.7
1250 | '@esbuild/win32-x64': 0.19.7
1251 | dev: true
1252 |
1253 | /escape-string-regexp@4.0.0:
1254 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1255 | engines: {node: '>=10'}
1256 | dev: true
1257 |
1258 | /eslint-plugin-react-hooks@4.6.0(eslint@8.54.0):
1259 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
1260 | engines: {node: '>=10'}
1261 | peerDependencies:
1262 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
1263 | dependencies:
1264 | eslint: 8.54.0
1265 | dev: true
1266 |
1267 | /eslint-plugin-react-refresh@0.4.4(eslint@8.54.0):
1268 | resolution: {integrity: sha512-eD83+65e8YPVg6603Om2iCIwcQJf/y7++MWm4tACtEswFLYMwxwVWAfwN+e19f5Ad/FOyyNg9Dfi5lXhH3Y3rA==}
1269 | peerDependencies:
1270 | eslint: '>=7'
1271 | dependencies:
1272 | eslint: 8.54.0
1273 | dev: true
1274 |
1275 | /eslint-scope@7.2.2:
1276 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1277 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1278 | dependencies:
1279 | esrecurse: 4.3.0
1280 | estraverse: 5.3.0
1281 | dev: true
1282 |
1283 | /eslint-visitor-keys@3.4.3:
1284 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1285 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1286 | dev: true
1287 |
1288 | /eslint@8.54.0:
1289 | resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==}
1290 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1291 | hasBin: true
1292 | dependencies:
1293 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0)
1294 | '@eslint-community/regexpp': 4.10.0
1295 | '@eslint/eslintrc': 2.1.3
1296 | '@eslint/js': 8.54.0
1297 | '@humanwhocodes/config-array': 0.11.13
1298 | '@humanwhocodes/module-importer': 1.0.1
1299 | '@nodelib/fs.walk': 1.2.8
1300 | '@ungap/structured-clone': 1.2.0
1301 | ajv: 6.12.6
1302 | chalk: 4.1.2
1303 | cross-spawn: 7.0.3
1304 | debug: 4.3.4
1305 | doctrine: 3.0.0
1306 | escape-string-regexp: 4.0.0
1307 | eslint-scope: 7.2.2
1308 | eslint-visitor-keys: 3.4.3
1309 | espree: 9.6.1
1310 | esquery: 1.5.0
1311 | esutils: 2.0.3
1312 | fast-deep-equal: 3.1.3
1313 | file-entry-cache: 6.0.1
1314 | find-up: 5.0.0
1315 | glob-parent: 6.0.2
1316 | globals: 13.23.0
1317 | graphemer: 1.4.0
1318 | ignore: 5.3.0
1319 | imurmurhash: 0.1.4
1320 | is-glob: 4.0.3
1321 | is-path-inside: 3.0.3
1322 | js-yaml: 4.1.0
1323 | json-stable-stringify-without-jsonify: 1.0.1
1324 | levn: 0.4.1
1325 | lodash.merge: 4.6.2
1326 | minimatch: 3.1.2
1327 | natural-compare: 1.4.0
1328 | optionator: 0.9.3
1329 | strip-ansi: 6.0.1
1330 | text-table: 0.2.0
1331 | transitivePeerDependencies:
1332 | - supports-color
1333 | dev: true
1334 |
1335 | /espree@9.6.1:
1336 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1337 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1338 | dependencies:
1339 | acorn: 8.11.2
1340 | acorn-jsx: 5.3.2(acorn@8.11.2)
1341 | eslint-visitor-keys: 3.4.3
1342 | dev: true
1343 |
1344 | /esquery@1.5.0:
1345 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1346 | engines: {node: '>=0.10'}
1347 | dependencies:
1348 | estraverse: 5.3.0
1349 | dev: true
1350 |
1351 | /esrecurse@4.3.0:
1352 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1353 | engines: {node: '>=4.0'}
1354 | dependencies:
1355 | estraverse: 5.3.0
1356 | dev: true
1357 |
1358 | /estraverse@5.3.0:
1359 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1360 | engines: {node: '>=4.0'}
1361 | dev: true
1362 |
1363 | /esutils@2.0.3:
1364 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1365 | engines: {node: '>=0.10.0'}
1366 | dev: true
1367 |
1368 | /fast-deep-equal@3.1.3:
1369 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1370 | dev: true
1371 |
1372 | /fast-glob@3.3.2:
1373 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
1374 | engines: {node: '>=8.6.0'}
1375 | dependencies:
1376 | '@nodelib/fs.stat': 2.0.5
1377 | '@nodelib/fs.walk': 1.2.8
1378 | glob-parent: 5.1.2
1379 | merge2: 1.4.1
1380 | micromatch: 4.0.5
1381 | dev: true
1382 |
1383 | /fast-json-stable-stringify@2.1.0:
1384 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1385 | dev: true
1386 |
1387 | /fast-levenshtein@2.0.6:
1388 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1389 | dev: true
1390 |
1391 | /fastq@1.15.0:
1392 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1393 | dependencies:
1394 | reusify: 1.0.4
1395 | dev: true
1396 |
1397 | /file-entry-cache@6.0.1:
1398 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1399 | engines: {node: ^10.12.0 || >=12.0.0}
1400 | dependencies:
1401 | flat-cache: 3.2.0
1402 | dev: true
1403 |
1404 | /fill-range@7.0.1:
1405 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1406 | engines: {node: '>=8'}
1407 | dependencies:
1408 | to-regex-range: 5.0.1
1409 | dev: true
1410 |
1411 | /filter-obj@5.1.0:
1412 | resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==}
1413 | engines: {node: '>=14.16'}
1414 | dev: false
1415 |
1416 | /find-up@5.0.0:
1417 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1418 | engines: {node: '>=10'}
1419 | dependencies:
1420 | locate-path: 6.0.0
1421 | path-exists: 4.0.0
1422 | dev: true
1423 |
1424 | /flat-cache@3.2.0:
1425 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
1426 | engines: {node: ^10.12.0 || >=12.0.0}
1427 | dependencies:
1428 | flatted: 3.2.9
1429 | keyv: 4.5.4
1430 | rimraf: 3.0.2
1431 | dev: true
1432 |
1433 | /flatted@3.2.9:
1434 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
1435 | dev: true
1436 |
1437 | /follow-redirects@1.15.3:
1438 | resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==}
1439 | engines: {node: '>=4.0'}
1440 | peerDependencies:
1441 | debug: '*'
1442 | peerDependenciesMeta:
1443 | debug:
1444 | optional: true
1445 | dev: false
1446 |
1447 | /form-data@4.0.0:
1448 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
1449 | engines: {node: '>= 6'}
1450 | dependencies:
1451 | asynckit: 0.4.0
1452 | combined-stream: 1.0.8
1453 | mime-types: 2.1.35
1454 | dev: false
1455 |
1456 | /fs.realpath@1.0.0:
1457 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1458 | dev: true
1459 |
1460 | /fsevents@2.3.3:
1461 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1462 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1463 | os: [darwin]
1464 | requiresBuild: true
1465 | dev: true
1466 | optional: true
1467 |
1468 | /glob-parent@5.1.2:
1469 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1470 | engines: {node: '>= 6'}
1471 | dependencies:
1472 | is-glob: 4.0.3
1473 | dev: true
1474 |
1475 | /glob-parent@6.0.2:
1476 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1477 | engines: {node: '>=10.13.0'}
1478 | dependencies:
1479 | is-glob: 4.0.3
1480 | dev: true
1481 |
1482 | /glob@7.2.3:
1483 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1484 | dependencies:
1485 | fs.realpath: 1.0.0
1486 | inflight: 1.0.6
1487 | inherits: 2.0.4
1488 | minimatch: 3.1.2
1489 | once: 1.4.0
1490 | path-is-absolute: 1.0.1
1491 | dev: true
1492 |
1493 | /globals@13.23.0:
1494 | resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==}
1495 | engines: {node: '>=8'}
1496 | dependencies:
1497 | type-fest: 0.20.2
1498 | dev: true
1499 |
1500 | /globby@11.1.0:
1501 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1502 | engines: {node: '>=10'}
1503 | dependencies:
1504 | array-union: 2.1.0
1505 | dir-glob: 3.0.1
1506 | fast-glob: 3.3.2
1507 | ignore: 5.3.0
1508 | merge2: 1.4.1
1509 | slash: 3.0.0
1510 | dev: true
1511 |
1512 | /graceful-fs@4.2.11:
1513 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1514 | requiresBuild: true
1515 | optional: true
1516 |
1517 | /graphemer@1.4.0:
1518 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1519 | dev: true
1520 |
1521 | /has-flag@4.0.0:
1522 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1523 | engines: {node: '>=8'}
1524 | dev: true
1525 |
1526 | /iconv-lite@0.6.3:
1527 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
1528 | engines: {node: '>=0.10.0'}
1529 | requiresBuild: true
1530 | dependencies:
1531 | safer-buffer: 2.1.2
1532 | optional: true
1533 |
1534 | /ignore@5.3.0:
1535 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
1536 | engines: {node: '>= 4'}
1537 | dev: true
1538 |
1539 | /image-size@0.5.5:
1540 | resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
1541 | engines: {node: '>=0.10.0'}
1542 | hasBin: true
1543 | requiresBuild: true
1544 | optional: true
1545 |
1546 | /import-fresh@3.3.0:
1547 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1548 | engines: {node: '>=6'}
1549 | dependencies:
1550 | parent-module: 1.0.1
1551 | resolve-from: 4.0.0
1552 | dev: true
1553 |
1554 | /imurmurhash@0.1.4:
1555 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1556 | engines: {node: '>=0.8.19'}
1557 | dev: true
1558 |
1559 | /inflight@1.0.6:
1560 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1561 | dependencies:
1562 | once: 1.4.0
1563 | wrappy: 1.0.2
1564 | dev: true
1565 |
1566 | /inherits@2.0.4:
1567 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1568 | dev: true
1569 |
1570 | /intersection-observer@0.12.2:
1571 | resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==}
1572 | dev: false
1573 |
1574 | /is-extglob@2.1.1:
1575 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1576 | engines: {node: '>=0.10.0'}
1577 | dev: true
1578 |
1579 | /is-glob@4.0.3:
1580 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1581 | engines: {node: '>=0.10.0'}
1582 | dependencies:
1583 | is-extglob: 2.1.1
1584 | dev: true
1585 |
1586 | /is-number@7.0.0:
1587 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1588 | engines: {node: '>=0.12.0'}
1589 | dev: true
1590 |
1591 | /is-path-inside@3.0.3:
1592 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1593 | engines: {node: '>=8'}
1594 | dev: true
1595 |
1596 | /is-what@3.14.1:
1597 | resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
1598 |
1599 | /isexe@2.0.0:
1600 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1601 | dev: true
1602 |
1603 | /jquery@3.7.1:
1604 | resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==}
1605 | dev: false
1606 |
1607 | /js-cookie@2.2.1:
1608 | resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==}
1609 | dev: false
1610 |
1611 | /js-tokens@4.0.0:
1612 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1613 | dev: false
1614 |
1615 | /js-yaml@4.1.0:
1616 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1617 | hasBin: true
1618 | dependencies:
1619 | argparse: 2.0.1
1620 | dev: true
1621 |
1622 | /json-buffer@3.0.1:
1623 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1624 | dev: true
1625 |
1626 | /json-schema-traverse@0.4.1:
1627 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1628 | dev: true
1629 |
1630 | /json-stable-stringify-without-jsonify@1.0.1:
1631 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1632 | dev: true
1633 |
1634 | /json2mq@0.2.0:
1635 | resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==}
1636 | dependencies:
1637 | string-convert: 0.2.1
1638 | dev: false
1639 |
1640 | /jsqr@1.4.0:
1641 | resolution: {integrity: sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==}
1642 | dev: false
1643 |
1644 | /keyv@4.5.4:
1645 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1646 | dependencies:
1647 | json-buffer: 3.0.1
1648 | dev: true
1649 |
1650 | /less@4.2.0:
1651 | resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==}
1652 | engines: {node: '>=6'}
1653 | hasBin: true
1654 | dependencies:
1655 | copy-anything: 2.0.6
1656 | parse-node-version: 1.0.1
1657 | tslib: 2.6.2
1658 | optionalDependencies:
1659 | errno: 0.1.8
1660 | graceful-fs: 4.2.11
1661 | image-size: 0.5.5
1662 | make-dir: 2.1.0
1663 | mime: 1.6.0
1664 | needle: 3.2.0
1665 | source-map: 0.6.1
1666 | transitivePeerDependencies:
1667 | - supports-color
1668 |
1669 | /levn@0.4.1:
1670 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1671 | engines: {node: '>= 0.8.0'}
1672 | dependencies:
1673 | prelude-ls: 1.2.1
1674 | type-check: 0.4.0
1675 | dev: true
1676 |
1677 | /locate-path@6.0.0:
1678 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1679 | engines: {node: '>=10'}
1680 | dependencies:
1681 | p-locate: 5.0.0
1682 | dev: true
1683 |
1684 | /lodash.debounce@4.0.8:
1685 | resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
1686 | dev: false
1687 |
1688 | /lodash.isequal@4.5.0:
1689 | resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
1690 | dev: false
1691 |
1692 | /lodash.merge@4.6.2:
1693 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1694 | dev: true
1695 |
1696 | /lodash@4.17.21:
1697 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1698 | dev: false
1699 |
1700 | /loose-envify@1.4.0:
1701 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1702 | hasBin: true
1703 | dependencies:
1704 | js-tokens: 4.0.0
1705 | dev: false
1706 |
1707 | /lru-cache@10.1.0:
1708 | resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==}
1709 | engines: {node: 14 || >=16.14}
1710 | dev: false
1711 |
1712 | /lru-cache@6.0.0:
1713 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1714 | engines: {node: '>=10'}
1715 | dependencies:
1716 | yallist: 4.0.0
1717 | dev: true
1718 |
1719 | /make-dir@2.1.0:
1720 | resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
1721 | engines: {node: '>=6'}
1722 | requiresBuild: true
1723 | dependencies:
1724 | pify: 4.0.1
1725 | semver: 5.7.2
1726 | optional: true
1727 |
1728 | /merge2@1.4.1:
1729 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1730 | engines: {node: '>= 8'}
1731 | dev: true
1732 |
1733 | /micromatch@4.0.5:
1734 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1735 | engines: {node: '>=8.6'}
1736 | dependencies:
1737 | braces: 3.0.2
1738 | picomatch: 2.3.1
1739 | dev: true
1740 |
1741 | /mime-db@1.52.0:
1742 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1743 | engines: {node: '>= 0.6'}
1744 | dev: false
1745 |
1746 | /mime-types@2.1.35:
1747 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1748 | engines: {node: '>= 0.6'}
1749 | dependencies:
1750 | mime-db: 1.52.0
1751 | dev: false
1752 |
1753 | /mime@1.6.0:
1754 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
1755 | engines: {node: '>=4'}
1756 | hasBin: true
1757 | requiresBuild: true
1758 | optional: true
1759 |
1760 | /minimatch@3.1.2:
1761 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1762 | dependencies:
1763 | brace-expansion: 1.1.11
1764 | dev: true
1765 |
1766 | /ms@2.1.2:
1767 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1768 |
1769 | /nanoid@3.3.7:
1770 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1771 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1772 | hasBin: true
1773 | dev: true
1774 |
1775 | /natural-compare@1.4.0:
1776 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1777 | dev: true
1778 |
1779 | /needle@3.2.0:
1780 | resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==}
1781 | engines: {node: '>= 4.4.x'}
1782 | hasBin: true
1783 | requiresBuild: true
1784 | dependencies:
1785 | debug: 3.2.7
1786 | iconv-lite: 0.6.3
1787 | sax: 1.3.0
1788 | transitivePeerDependencies:
1789 | - supports-color
1790 | optional: true
1791 |
1792 | /once@1.4.0:
1793 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1794 | dependencies:
1795 | wrappy: 1.0.2
1796 | dev: true
1797 |
1798 | /optionator@0.9.3:
1799 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
1800 | engines: {node: '>= 0.8.0'}
1801 | dependencies:
1802 | '@aashutoshrathi/word-wrap': 1.2.6
1803 | deep-is: 0.1.4
1804 | fast-levenshtein: 2.0.6
1805 | levn: 0.4.1
1806 | prelude-ls: 1.2.1
1807 | type-check: 0.4.0
1808 | dev: true
1809 |
1810 | /p-limit@3.1.0:
1811 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1812 | engines: {node: '>=10'}
1813 | dependencies:
1814 | yocto-queue: 0.1.0
1815 | dev: true
1816 |
1817 | /p-locate@5.0.0:
1818 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1819 | engines: {node: '>=10'}
1820 | dependencies:
1821 | p-limit: 3.1.0
1822 | dev: true
1823 |
1824 | /parent-module@1.0.1:
1825 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1826 | engines: {node: '>=6'}
1827 | dependencies:
1828 | callsites: 3.1.0
1829 | dev: true
1830 |
1831 | /parse-node-version@1.0.1:
1832 | resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
1833 | engines: {node: '>= 0.10'}
1834 |
1835 | /path-exists@4.0.0:
1836 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1837 | engines: {node: '>=8'}
1838 | dev: true
1839 |
1840 | /path-is-absolute@1.0.1:
1841 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1842 | engines: {node: '>=0.10.0'}
1843 | dev: true
1844 |
1845 | /path-key@3.1.1:
1846 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1847 | engines: {node: '>=8'}
1848 | dev: true
1849 |
1850 | /path-type@4.0.0:
1851 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1852 | engines: {node: '>=8'}
1853 | dev: true
1854 |
1855 | /picocolors@1.0.0:
1856 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1857 | dev: true
1858 |
1859 | /picomatch@2.3.1:
1860 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1861 | engines: {node: '>=8.6'}
1862 | dev: true
1863 |
1864 | /pify@4.0.1:
1865 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
1866 | engines: {node: '>=6'}
1867 | requiresBuild: true
1868 | optional: true
1869 |
1870 | /postcss-pxtorem@6.0.0(postcss@8.4.31):
1871 | resolution: {integrity: sha512-ZRXrD7MLLjLk2RNGV6UA4f5Y7gy+a/j1EqjAfp9NdcNYVjUMvg5HTYduTjSkKBkRkfqbg/iKrjMO70V4g1LZeg==}
1872 | peerDependencies:
1873 | postcss: ^8.0.0
1874 | dependencies:
1875 | postcss: 8.4.31
1876 | dev: true
1877 |
1878 | /postcss@8.4.31:
1879 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
1880 | engines: {node: ^10 || ^12 || >=14}
1881 | dependencies:
1882 | nanoid: 3.3.7
1883 | picocolors: 1.0.0
1884 | source-map-js: 1.0.2
1885 | dev: true
1886 |
1887 | /prelude-ls@1.2.1:
1888 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1889 | engines: {node: '>= 0.8.0'}
1890 | dev: true
1891 |
1892 | /proxy-from-env@1.1.0:
1893 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
1894 | dev: false
1895 |
1896 | /prr@1.0.1:
1897 | resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
1898 | requiresBuild: true
1899 | optional: true
1900 |
1901 | /punycode@2.3.1:
1902 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1903 | engines: {node: '>=6'}
1904 | dev: true
1905 |
1906 | /query-string@8.1.0:
1907 | resolution: {integrity: sha512-BFQeWxJOZxZGix7y+SByG3F36dA0AbTy9o6pSmKFcFz7DAj0re9Frkty3saBn3nHo3D0oZJ/+rx3r8H8r8Jbpw==}
1908 | engines: {node: '>=14.16'}
1909 | dependencies:
1910 | decode-uri-component: 0.4.1
1911 | filter-obj: 5.1.0
1912 | split-on-first: 3.0.0
1913 | dev: false
1914 |
1915 | /queue-microtask@1.2.3:
1916 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1917 | dev: true
1918 |
1919 | /rc-field-form@1.27.4(react-dom@18.2.0)(react@18.2.0):
1920 | resolution: {integrity: sha512-PQColQnZimGKArnOh8V2907+VzDCXcqtFvHgevDLtqWc/P7YASb/FqntSmdS8q3VND5SHX3Y1vgMIzY22/f/0Q==}
1921 | engines: {node: '>=8.x'}
1922 | peerDependencies:
1923 | react: '>=16.9.0'
1924 | react-dom: '>=16.9.0'
1925 | dependencies:
1926 | '@babel/runtime': 7.23.4
1927 | async-validator: 4.2.5
1928 | rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0)
1929 | react: 18.2.0
1930 | react-dom: 18.2.0(react@18.2.0)
1931 | dev: false
1932 |
1933 | /rc-util@5.38.1(react-dom@18.2.0)(react@18.2.0):
1934 | resolution: {integrity: sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng==}
1935 | peerDependencies:
1936 | react: '>=16.9.0'
1937 | react-dom: '>=16.9.0'
1938 | dependencies:
1939 | '@babel/runtime': 7.23.4
1940 | react: 18.2.0
1941 | react-dom: 18.2.0(react@18.2.0)
1942 | react-is: 18.2.0
1943 | dev: false
1944 |
1945 | /react-dom@18.2.0(react@18.2.0):
1946 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
1947 | peerDependencies:
1948 | react: ^18.2.0
1949 | dependencies:
1950 | loose-envify: 1.4.0
1951 | react: 18.2.0
1952 | scheduler: 0.23.0
1953 | dev: false
1954 |
1955 | /react-is@18.2.0:
1956 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
1957 | dev: false
1958 |
1959 | /react-router-dom@6.20.0(react-dom@18.2.0)(react@18.2.0):
1960 | resolution: {integrity: sha512-CbcKjEyiSVpA6UtCHOIYLUYn/UJfwzp55va4yEfpk7JBN3GPqWfHrdLkAvNCcpXr8QoihcDMuk0dzWZxtlB/mQ==}
1961 | engines: {node: '>=14.0.0'}
1962 | peerDependencies:
1963 | react: '>=16.8'
1964 | react-dom: '>=16.8'
1965 | dependencies:
1966 | '@remix-run/router': 1.13.0
1967 | react: 18.2.0
1968 | react-dom: 18.2.0(react@18.2.0)
1969 | react-router: 6.20.0(react@18.2.0)
1970 | dev: false
1971 |
1972 | /react-router@6.20.0(react@18.2.0):
1973 | resolution: {integrity: sha512-pVvzsSsgUxxtuNfTHC4IxjATs10UaAtvLGVSA1tbUE4GDaOSU1Esu2xF5nWLz7KPiMuW8BJWuPFdlGYJ7/rW0w==}
1974 | engines: {node: '>=14.0.0'}
1975 | peerDependencies:
1976 | react: '>=16.8'
1977 | dependencies:
1978 | '@remix-run/router': 1.13.0
1979 | react: 18.2.0
1980 | dev: false
1981 |
1982 | /react-slick@0.29.0(react-dom@18.2.0)(react@18.2.0):
1983 | resolution: {integrity: sha512-TGdOKE+ZkJHHeC4aaoH85m8RnFyWqdqRfAGkhd6dirmATXMZWAxOpTLmw2Ll/jPTQ3eEG7ercFr/sbzdeYCJXA==}
1984 | peerDependencies:
1985 | react: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0
1986 | react-dom: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0
1987 | dependencies:
1988 | classnames: 2.3.2
1989 | enquire.js: 2.1.6
1990 | json2mq: 0.2.0
1991 | lodash.debounce: 4.0.8
1992 | react: 18.2.0
1993 | react-dom: 18.2.0(react@18.2.0)
1994 | resize-observer-polyfill: 1.5.1
1995 | dev: false
1996 |
1997 | /react@18.2.0:
1998 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
1999 | engines: {node: '>=0.10.0'}
2000 | dependencies:
2001 | loose-envify: 1.4.0
2002 | dev: false
2003 |
2004 | /regenerator-runtime@0.14.0:
2005 | resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
2006 | dev: false
2007 |
2008 | /resize-observer-polyfill@1.5.1:
2009 | resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
2010 | dev: false
2011 |
2012 | /resolve-from@4.0.0:
2013 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2014 | engines: {node: '>=4'}
2015 | dev: true
2016 |
2017 | /reusify@1.0.4:
2018 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2019 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2020 | dev: true
2021 |
2022 | /rimraf@3.0.2:
2023 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2024 | hasBin: true
2025 | dependencies:
2026 | glob: 7.2.3
2027 | dev: true
2028 |
2029 | /rollup@4.5.2:
2030 | resolution: {integrity: sha512-CRK1uoROBfkcqrZKyaFcqCcZWNsvJ6yVYZkqTlRocZhO2s5yER6Z3f/QaYtO8RGyloPnmhwgzuPQpNGeK210xQ==}
2031 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
2032 | hasBin: true
2033 | optionalDependencies:
2034 | '@rollup/rollup-android-arm-eabi': 4.5.2
2035 | '@rollup/rollup-android-arm64': 4.5.2
2036 | '@rollup/rollup-darwin-arm64': 4.5.2
2037 | '@rollup/rollup-darwin-x64': 4.5.2
2038 | '@rollup/rollup-linux-arm-gnueabihf': 4.5.2
2039 | '@rollup/rollup-linux-arm64-gnu': 4.5.2
2040 | '@rollup/rollup-linux-arm64-musl': 4.5.2
2041 | '@rollup/rollup-linux-x64-gnu': 4.5.2
2042 | '@rollup/rollup-linux-x64-musl': 4.5.2
2043 | '@rollup/rollup-win32-arm64-msvc': 4.5.2
2044 | '@rollup/rollup-win32-ia32-msvc': 4.5.2
2045 | '@rollup/rollup-win32-x64-msvc': 4.5.2
2046 | fsevents: 2.3.3
2047 | dev: true
2048 |
2049 | /run-parallel@1.2.0:
2050 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2051 | dependencies:
2052 | queue-microtask: 1.2.3
2053 | dev: true
2054 |
2055 | /runes2@1.1.3:
2056 | resolution: {integrity: sha512-sJ/0iVFLne4f2S7cMB1OckBtC9lqkzP5a/wPnDIkbrWzgUsJ+JMQv6y7hk76U7zvbua+je5GltfpsZazUhG05w==}
2057 | dev: false
2058 |
2059 | /safer-buffer@2.1.2:
2060 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
2061 | requiresBuild: true
2062 | optional: true
2063 |
2064 | /sax@1.3.0:
2065 | resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
2066 | requiresBuild: true
2067 | optional: true
2068 |
2069 | /scheduler@0.23.0:
2070 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
2071 | dependencies:
2072 | loose-envify: 1.4.0
2073 | dev: false
2074 |
2075 | /screenfull@5.2.0:
2076 | resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==}
2077 | engines: {node: '>=0.10.0'}
2078 | dev: false
2079 |
2080 | /semver@5.7.2:
2081 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
2082 | hasBin: true
2083 | requiresBuild: true
2084 | optional: true
2085 |
2086 | /semver@7.5.4:
2087 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
2088 | engines: {node: '>=10'}
2089 | hasBin: true
2090 | dependencies:
2091 | lru-cache: 6.0.0
2092 | dev: true
2093 |
2094 | /shebang-command@2.0.0:
2095 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2096 | engines: {node: '>=8'}
2097 | dependencies:
2098 | shebang-regex: 3.0.0
2099 | dev: true
2100 |
2101 | /shebang-regex@3.0.0:
2102 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2103 | engines: {node: '>=8'}
2104 | dev: true
2105 |
2106 | /slash@3.0.0:
2107 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2108 | engines: {node: '>=8'}
2109 | dev: true
2110 |
2111 | /slick-carousel@1.8.1(jquery@3.7.1):
2112 | resolution: {integrity: sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==}
2113 | peerDependencies:
2114 | jquery: '>=1.8.0'
2115 | dependencies:
2116 | jquery: 3.7.1
2117 | dev: false
2118 |
2119 | /source-map-js@1.0.2:
2120 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2121 | engines: {node: '>=0.10.0'}
2122 | dev: true
2123 |
2124 | /source-map@0.6.1:
2125 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
2126 | engines: {node: '>=0.10.0'}
2127 | requiresBuild: true
2128 | optional: true
2129 |
2130 | /split-on-first@3.0.0:
2131 | resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==}
2132 | engines: {node: '>=12'}
2133 | dev: false
2134 |
2135 | /staged-components@1.1.3(react@18.2.0):
2136 | resolution: {integrity: sha512-9EIswzDqjwlEu+ymkV09TTlJfzSbKgEnNteUnZSTxkpMgr5Wx2CzzA9WcMFWBNCldqVPsHVnRGGrApduq2Se5A==}
2137 | peerDependencies:
2138 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
2139 | dependencies:
2140 | react: 18.2.0
2141 | dev: false
2142 |
2143 | /string-convert@0.2.1:
2144 | resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==}
2145 | dev: false
2146 |
2147 | /strip-ansi@6.0.1:
2148 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2149 | engines: {node: '>=8'}
2150 | dependencies:
2151 | ansi-regex: 5.0.1
2152 | dev: true
2153 |
2154 | /strip-json-comments@3.1.1:
2155 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2156 | engines: {node: '>=8'}
2157 | dev: true
2158 |
2159 | /supports-color@7.2.0:
2160 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2161 | engines: {node: '>=8'}
2162 | dependencies:
2163 | has-flag: 4.0.0
2164 | dev: true
2165 |
2166 | /text-table@0.2.0:
2167 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2168 | dev: true
2169 |
2170 | /to-regex-range@5.0.1:
2171 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2172 | engines: {node: '>=8.0'}
2173 | dependencies:
2174 | is-number: 7.0.0
2175 | dev: true
2176 |
2177 | /ts-api-utils@1.0.3(typescript@5.3.2):
2178 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
2179 | engines: {node: '>=16.13.0'}
2180 | peerDependencies:
2181 | typescript: '>=4.2.0'
2182 | dependencies:
2183 | typescript: 5.3.2
2184 | dev: true
2185 |
2186 | /tslib@2.6.2:
2187 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
2188 |
2189 | /type-check@0.4.0:
2190 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2191 | engines: {node: '>= 0.8.0'}
2192 | dependencies:
2193 | prelude-ls: 1.2.1
2194 | dev: true
2195 |
2196 | /type-fest@0.20.2:
2197 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2198 | engines: {node: '>=10'}
2199 | dev: true
2200 |
2201 | /typescript@5.3.2:
2202 | resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==}
2203 | engines: {node: '>=14.17'}
2204 | hasBin: true
2205 | dev: true
2206 |
2207 | /undici-types@5.26.5:
2208 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
2209 |
2210 | /uri-js@4.4.1:
2211 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2212 | dependencies:
2213 | punycode: 2.3.1
2214 | dev: true
2215 |
2216 | /use-sync-external-store@1.2.0(react@18.2.0):
2217 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
2218 | peerDependencies:
2219 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
2220 | dependencies:
2221 | react: 18.2.0
2222 | dev: false
2223 |
2224 | /vite@5.0.2(@types/node@20.10.0)(less@4.2.0):
2225 | resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==}
2226 | engines: {node: ^18.0.0 || >=20.0.0}
2227 | hasBin: true
2228 | peerDependencies:
2229 | '@types/node': ^18.0.0 || >=20.0.0
2230 | less: '*'
2231 | lightningcss: ^1.21.0
2232 | sass: '*'
2233 | stylus: '*'
2234 | sugarss: '*'
2235 | terser: ^5.4.0
2236 | peerDependenciesMeta:
2237 | '@types/node':
2238 | optional: true
2239 | less:
2240 | optional: true
2241 | lightningcss:
2242 | optional: true
2243 | sass:
2244 | optional: true
2245 | stylus:
2246 | optional: true
2247 | sugarss:
2248 | optional: true
2249 | terser:
2250 | optional: true
2251 | dependencies:
2252 | '@types/node': 20.10.0
2253 | esbuild: 0.19.7
2254 | less: 4.2.0
2255 | postcss: 8.4.31
2256 | rollup: 4.5.2
2257 | optionalDependencies:
2258 | fsevents: 2.3.3
2259 | dev: true
2260 |
2261 | /which@2.0.2:
2262 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2263 | engines: {node: '>= 8'}
2264 | hasBin: true
2265 | dependencies:
2266 | isexe: 2.0.0
2267 | dev: true
2268 |
2269 | /wrappy@1.0.2:
2270 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2271 | dev: true
2272 |
2273 | /yallist@4.0.0:
2274 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2275 | dev: true
2276 |
2277 | /yocto-queue@0.1.0:
2278 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2279 | engines: {node: '>=10'}
2280 | dev: true
2281 |
2282 | /zustand@4.4.6(@types/react@18.2.38)(react@18.2.0):
2283 | resolution: {integrity: sha512-Rb16eW55gqL4W2XZpJh0fnrATxYEG3Apl2gfHTyDSE965x/zxslTikpNch0JgNjJA9zK6gEFW8Fl6d1rTZaqgg==}
2284 | engines: {node: '>=12.7.0'}
2285 | peerDependencies:
2286 | '@types/react': '>=16.8'
2287 | immer: '>=9.0'
2288 | react: '>=16.8'
2289 | peerDependenciesMeta:
2290 | '@types/react':
2291 | optional: true
2292 | immer:
2293 | optional: true
2294 | react:
2295 | optional: true
2296 | dependencies:
2297 | '@types/react': 18.2.38
2298 | react: 18.2.0
2299 | use-sync-external-store: 1.2.0(react@18.2.0)
2300 | dev: false
2301 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | 'postcss-pxtorem': {
4 | rootValue: 16,
5 | unitPrecision: 5,
6 | propList: ['*'],
7 | selectorBlackList: [],
8 | replace: true,
9 | mediaQuery: false,
10 | minPixelValue: 0,
11 | },
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/public/null.svg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JanYork/react-h5-template/44b603167d83eea31e2fd4cb86fbb1c6ea7e9f92/public/null.svg
--------------------------------------------------------------------------------
/src/api/mock.ts:
--------------------------------------------------------------------------------
1 | import useAxios from 'axios-hooks';
2 | import {Page, Result} from "@/types/http";
3 |
4 | export interface MockResult {
5 | id: number;
6 | }
7 |
8 | export interface MockPage {
9 | id: number;
10 | }
11 |
12 | /**
13 | * fetch the data
14 | * 详细使用可以查看 useAxios 的文档
15 | */
16 | export const useFetchXXX = () => {
17 | // set the url
18 | const url = `/xxx/xxx`;
19 | // fetch the data
20 | const [{data, loading, error}, refetch] = useAxios>(url);
21 | // to do something
22 | return {data, loading, error, refetch};
23 | }
24 |
25 |
26 | /**
27 | * fetch the data with page
28 | * 详细使用可以查看 useAxios 的文档
29 | */
30 | export const useFetchPageXXX = (page: number, size: number) => {
31 | // set the url
32 | const url = `/xxx/xxx?page=${page}&size=${size}`;
33 | // fetch the data
34 | const [{data, loading, error}, refetch] = useAxios>(url);
35 | // to do something
36 | return {data, loading, error, refetch};
37 | }
--------------------------------------------------------------------------------
/src/assets/null.svg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JanYork/react-h5-template/44b603167d83eea31e2fd4cb86fbb1c6ea7e9f92/src/assets/null.svg
--------------------------------------------------------------------------------
/src/component/carousel/index.less:
--------------------------------------------------------------------------------
1 | .carousel {
2 | .carousel-item {
3 | .carousel-image {
4 | border-radius: 15px;
5 | }
6 | }
7 | }
--------------------------------------------------------------------------------
/src/component/carousel/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Slider, {Settings} from 'react-slick';
3 | import 'slick-carousel/slick/slick.css';
4 | import 'slick-carousel/slick/slick-theme.css';
5 | import './index.less';
6 |
7 | export interface CarouselComponentProps {
8 | images: string[];
9 | height?: number;
10 | }
11 |
12 | /**
13 | * 轮播图组件
14 | * @param images 图片地址数组
15 | * @param height 图片高度
16 | * @constructor Carousel
17 | */
18 | const Carousel: React.FC = ({images, height = 180}) => {
19 | const settings: Settings = {
20 | dots: false,
21 | infinite: true,
22 | speed: 3000,
23 | slidesToShow: 1,
24 | slidesToScroll: 1,
25 | autoplay: true,
26 | autoplaySpeed: 2000,
27 | responsive: [
28 | {
29 | breakpoint: 768,
30 | settings: {
31 | arrows: false,
32 | }
33 | }
34 | ]
35 | };
36 |
37 | return (
38 |
39 | {images.map((image, index) => (
40 |
41 |
43 |
44 | ))}
45 |
46 | );
47 | };
48 |
49 | export default Carousel;
--------------------------------------------------------------------------------
/src/component/qr-scanner/index.tsx:
--------------------------------------------------------------------------------
1 | import React, {useRef, useEffect, useState} from 'react';
2 | import jsQR from 'jsqr';
3 |
4 | export interface QRScannerProps {
5 | width?: number;
6 | height?: number;
7 | onScan: (data: string) => void;
8 | }
9 |
10 | /**
11 | * 二维码扫描组件
12 | * @param width 画布宽度
13 | * @param height 画布高度
14 | * @param onScan 扫描成功的回调函数
15 | * @constructor QRScanner
16 | */
17 | const QRScanner: React.FC = ({width = 300, height = 300, onScan}) => {
18 | const videoRef = useRef(null);
19 | const canvasRef = useRef(null);
20 | const [isScanning, setIsScanning] = useState(true);
21 | const [scanSuccess, setScanSuccess] = useState(false); // 新的状态变量
22 | let streamRef: MediaStream | null = null; // 存储摄像头流的引用
23 |
24 | useEffect(() => {
25 | navigator.mediaDevices.getUserMedia({video: {facingMode: "environment"}})
26 | .then(stream => {
27 | streamRef = stream; // 存储对摄像头流的引用
28 | if (videoRef.current) {
29 | videoRef.current.srcObject = stream;
30 | videoRef.current.addEventListener('loadedmetadata', () => {
31 | videoRef.current?.play().then(() => {
32 | requestAnimationFrame(tick);
33 | }).catch(err => console.error("Error playing video: ", err));
34 | });
35 | }
36 | }).catch(err => {
37 | console.error("Error accessing media devices: ", err);
38 | setIsScanning(false);
39 | });
40 | }, []);
41 | const tick = () => {
42 | // 如果已经成功扫描,就不再继续执行tick
43 | if (!isScanning) return;
44 |
45 | if (videoRef.current && canvasRef.current) {
46 | if (videoRef.current.readyState === videoRef.current.HAVE_ENOUGH_DATA) {
47 | let video = videoRef.current;
48 | let canvas = canvasRef.current;
49 | let ctx = canvas.getContext('2d');
50 |
51 | if (ctx) {
52 | canvas.height = height;
53 | canvas.width = width;
54 | ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
55 |
56 | let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
57 | let code = jsQR(imageData.data, imageData.width, imageData.height);
58 |
59 | if (code) {
60 | onScan(code.data); // 扫码成功
61 | setIsScanning(false); // 更新状态为不再扫描
62 | setScanSuccess(true); // 显示扫描成功的蒙层
63 | if (streamRef) {
64 | let tracks = streamRef.getTracks();
65 | tracks.forEach(track => track.stop()); // 关闭摄像头
66 | }
67 | return; // 直接返回,避免再次调用 requestAnimationFrame
68 | }
69 | }
70 | }
71 | requestAnimationFrame(tick);
72 | }
73 | };
74 | return (
75 |
76 |
77 |
83 | {scanSuccess &&
识别成功!
} {/* 显示识别成功的蒙层 */}
84 |
85 | );
86 | }
87 |
88 | export default QRScanner;
89 |
--------------------------------------------------------------------------------
/src/composables/authorization.ts:
--------------------------------------------------------------------------------
1 | import {useState, useEffect} from 'react';
2 |
3 | export const STORAGE_AUTHORIZE_KEY = 'token';
4 |
5 | export const useAuthorization = () => {
6 | const [currentToken, setCurrentToken] = useState(localStorage.getItem(STORAGE_AUTHORIZE_KEY));
7 |
8 | // 同步 localStorage 变更
9 | useEffect(() => {
10 | const handleStorageChange = (event: StorageEvent) => {
11 | if (event.key === STORAGE_AUTHORIZE_KEY) {
12 | setCurrentToken(localStorage.getItem(STORAGE_AUTHORIZE_KEY));
13 | }
14 | };
15 |
16 | window.addEventListener('storage', handleStorageChange);
17 | return () => {
18 | window.removeEventListener('storage', handleStorageChange);
19 | };
20 | }, []);
21 |
22 | const login = (token: string) => {
23 | localStorage.setItem(STORAGE_AUTHORIZE_KEY, token);
24 | setCurrentToken(token);
25 | };
26 |
27 | const logout = () => {
28 | localStorage.removeItem(STORAGE_AUTHORIZE_KEY);
29 | setCurrentToken(null);
30 | };
31 |
32 | const isLogin = () => {
33 | return !!currentToken;
34 | };
35 |
36 | return {
37 | token: currentToken,
38 | login,
39 | logout,
40 | isLogin
41 | };
42 | };
43 |
--------------------------------------------------------------------------------
/src/composables/language.ts:
--------------------------------------------------------------------------------
1 | import {setDefaultConfig} from 'antd-mobile';
2 | import enUS from 'antd-mobile/es/locales/en-US';
3 | import zhCN from 'antd-mobile/es/locales/zh-CN';
4 |
5 | function changeLanguage(language: string) {
6 | let locale;
7 | switch (language) {
8 | case 'zh_CN':
9 | locale = enUS;
10 | break;
11 | case 'en_US':
12 | locale = zhCN;
13 | break;
14 | default:
15 | locale = enUS; // 或者是你的默认语言
16 | }
17 |
18 | setDefaultConfig({locale: locale});
19 | }
20 |
21 | export default changeLanguage;
22 |
--------------------------------------------------------------------------------
/src/enum/http-enum.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @description: request method
3 | */
4 | export enum RequestEnum {
5 | GET = 'GET',
6 | POST = 'POST',
7 | PUT = 'PUT',
8 | DELETE = 'DELETE',
9 | }
10 |
11 | /**
12 | * @description: contentType
13 | */
14 | export enum ContentTypeEnum {
15 | // json
16 | JSON = 'application/json;charset=UTF-8',
17 | // form-data qs
18 | FORM_URLENCODED = 'application/x-www-form-urlencoded;charset=UTF-8',
19 | // form-data upload
20 | FORM_DATA = 'multipart/form-data;charset=UTF-8',
21 | }
22 |
--------------------------------------------------------------------------------
/src/hooks/i18n.ts:
--------------------------------------------------------------------------------
1 | import zhCN from '@/locales/zh_CN.json'
2 | import enUS from '@/locales/en_US.json'
3 | import {useI18nStore} from '@/store/i18n';
4 |
5 | export default function useI18n() {
6 | const {lang} = useI18nStore();
7 | const locales = lang === 'en_US' ? enUS : zhCN;
8 |
9 | return (name: string) => {
10 | return locales[name as keyof typeof locales] || name;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/hooks/location.ts:
--------------------------------------------------------------------------------
1 | import {useState, useEffect} from 'react';
2 | import useI18n from "@/hooks/i18n";
3 |
4 | // 定义位置坐标的类型
5 | export interface Coordinates {
6 | lat: number;
7 | lng: number;
8 | }
9 |
10 | // 定义返回的位置状态的类型
11 | export interface LocationState {
12 | loaded: boolean;
13 | coordinates: Coordinates | null;
14 | }
15 |
16 | // 定义错误状态的类型
17 | export type ErrorState = string | null;
18 |
19 | export const useLocation = (): { location: LocationState; error: ErrorState } => {
20 | const t = useI18n();
21 |
22 | // 用于存储位置信息和加载状态的状态
23 | const [location, setLocation] = useState({
24 | loaded: false,
25 | coordinates: null,
26 | });
27 |
28 | // 用于存储任何错误消息的状态
29 | const [error, setError] = useState(null);
30 |
31 | // 地理位置成功处理函数
32 | const onSuccess = (location: GeolocationPosition) => {
33 | setLocation({
34 | loaded: true,
35 | coordinates: {
36 | lat: location.coords.latitude,
37 | lng: location.coords.longitude,
38 | },
39 | });
40 | };
41 |
42 | // 地理位置错误处理函数
43 | const onError = (error: GeolocationPositionError) => {
44 | setError(error.message);
45 | };
46 |
47 | // 使用 useEffect 在组件挂载时执行地理位置请求
48 | useEffect(() => {
49 | // 检查浏览器是否支持地理位置
50 | if (!navigator.geolocation) {
51 | setError(t('hooks.location.unsupported'));
52 | return;
53 | }
54 |
55 | // 请求用户的当前位置
56 | navigator.geolocation.getCurrentPosition(onSuccess, onError);
57 | }, []);
58 |
59 | return {location, error};
60 | };
61 |
--------------------------------------------------------------------------------
/src/hooks/session.ts:
--------------------------------------------------------------------------------
1 | import {useState, useEffect} from 'react';
2 | import isEqual from 'lodash.isequal';
3 |
4 | function useSessionStorage(key: string, initialValue: T): [T, (value: T) => void] {
5 | // 初始化状态
6 | const [storedValue, setStoredValue] = useState(() => {
7 | const item = sessionStorage.getItem(key);
8 | if (item !== null) {
9 | // 如果 sessionStorage 中有数据,则使用现有数据
10 | return JSON.parse(item);
11 | } else {
12 | // 当 sessionStorage 中没有相应的键时,使用 initialValue 初始化,并写入 sessionStorage
13 | sessionStorage.setItem(key, JSON.stringify(initialValue));
14 | return initialValue;
15 | }
16 | });
17 |
18 | // 监听并保存变化到 sessionStorage
19 | useEffect(() => {
20 | if (!isEqual(JSON.parse(sessionStorage.getItem(key) || 'null'), storedValue)) {
21 | sessionStorage.setItem(key, JSON.stringify(storedValue));
22 | }
23 | }, [key, storedValue]);
24 |
25 | return [storedValue, setStoredValue];
26 | }
27 |
28 | export default useSessionStorage;
29 |
--------------------------------------------------------------------------------
/src/http/axios-instance.ts:
--------------------------------------------------------------------------------
1 | import Axios, {
2 | AxiosError,
3 | AxiosInstance as AxiosType,
4 | AxiosResponse,
5 | InternalAxiosRequestConfig
6 | } from 'axios';
7 | import {STORAGE_AUTHORIZE_KEY} from "@/composables/authorization.ts";
8 |
9 | export interface ResponseBody {
10 | code: number;
11 | data?: T;
12 | msg: string;
13 | }
14 |
15 | async function requestHandler(config: InternalAxiosRequestConfig): Promise {
16 | const token = localStorage.getItem(STORAGE_AUTHORIZE_KEY);
17 | if (token) {
18 | config.headers[STORAGE_AUTHORIZE_KEY] = token;
19 | }
20 | return config;
21 | }
22 |
23 | function responseHandler(response: AxiosResponse): AxiosResponse {
24 | // 响应拦截器逻辑...
25 | return response;
26 | }
27 |
28 | function errorHandler(error: AxiosError): Promise> {
29 | // 错误处理逻辑...
30 | return Promise.reject(error);
31 | }
32 |
33 | class AxiosInstance {
34 | private readonly instance: AxiosType;
35 |
36 | constructor(baseURL: string) {
37 | this.instance = Axios.create({baseURL});
38 |
39 | this.instance.interceptors.request.use(requestHandler, errorHandler);
40 | this.instance.interceptors.response.use(responseHandler, errorHandler);
41 | }
42 |
43 | public getInstance(): AxiosType {
44 | return this.instance;
45 | }
46 | }
47 |
48 | const baseURL = import.meta.env.VITE_BASE_URL || 'http://127.0.0.1:8080';
49 | export const axiosInstance = new AxiosInstance(baseURL).getInstance();
50 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | font-family: 'Roboto', sans-serif;
9 | }
10 |
11 | a, button, input, textarea {
12 | -webkit-tap-highlight-color: transparent;
13 | }
14 |
15 | html {
16 | -webkit-text-size-adjust: 100%;
17 | -ms-text-size-adjust: 100%;
18 | font-size: 100%;
19 | }
20 |
21 | /* 小屏幕设备(如手机)*/
22 | @media (max-width: 600px) {
23 | html {
24 | font-size: 90%; /* 字体稍微小一点 */
25 | }
26 | }
27 |
28 | /* 中等屏幕设备(如平板)*/
29 | @media (min-width: 601px) and (max-width: 1024px) {
30 | html {
31 | font-size: 100%; /* 标准大小 */
32 | }
33 | }
34 |
35 | /* 大屏幕设备(如桌面)*/
36 | @media (min-width: 1025px) {
37 | html {
38 | font-size: 110%; /* 字体稍微大一点 */
39 | }
40 | }
41 |
42 |
43 | * {
44 | -webkit-backface-visibility: hidden;
45 | -moz-backface-visibility: hidden;
46 | -ms-backface-visibility: hidden;
47 | }
48 |
49 | a {
50 | text-decoration: none;
51 | color: inherit;
52 | }
53 |
54 | img {
55 | max-width: 100%;
56 | height: auto;
57 | }
58 |
59 | .ec-navbar {
60 | position: fixed;
61 | top: 0;
62 | left: 0;
63 | right: 0;
64 | z-index: 100;
65 | background-color: #fff;
66 | border-bottom: 1px solid #e5e5e5;
67 | -webkit-transition: all .3s;
68 | transition: all .3s;
69 | }
70 |
71 | :root {
72 | --primary-color: #FFC300;
73 | }
74 |
75 | :root:root {
76 | --adm-color-primary: #FFC300;
77 | --adm-color-success: #00b578;
78 | --adm-color-warning: #ff8f1f;
79 | --adm-color-danger: #ff3141;
80 |
81 | --adm-color-white: #ffffff;
82 | --adm-color-text: #333333;
83 | --adm-color-text-secondary: #666666;
84 | --adm-color-weak: #999999;
85 | --adm-color-light: #cccccc;
86 | --adm-color-border: #eeeeee;
87 | --adm-color-box: #f5f5f5;
88 | --adm-color-background: #ffffff;
89 |
90 | --adm-font-size-main: var(--adm-font-size-5);
91 |
92 | --adm-font-family: -apple-system, blinkmacsystemfont, 'Helvetica Neue',
93 | helvetica, segoe ui, arial, roboto, 'PingFang SC', 'miui',
94 | 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;
95 | }
--------------------------------------------------------------------------------
/src/layout/main/MainLayout.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {TabBar} from 'antd-mobile';
3 | import {useNavigate, useLocation} from 'react-router-dom';
4 | import {ShoppingBag, TransactionOrder, User, Wallet} from '@icon-park/react';
5 | import useI18n from "@/hooks/i18n.ts";
6 | import './index.less';
7 |
8 | interface MainLayoutProps {
9 | children: React.ReactNode;
10 | }
11 |
12 | const MainLayout: React.FC = ({children}) => {
13 | const navigate = useNavigate();
14 | const t = useI18n();
15 | const location = useLocation();
16 | const {pathname} = location;
17 | const [activeKey, setActiveKey] = React.useState(pathname);
18 |
19 | const tabs = [
20 | {
21 | key: '/', title: t('tabs.home'), icon: activeKey === '/' ?
22 | :
23 | },
24 | {
25 | key: '/wallet', title: t('tabs.wallet'), icon: activeKey === '/wallet' ?
26 | :
27 | },
28 | {
29 | key: '/bill', title: t('tabs.bill'), icon: activeKey === '/bill' ?
30 | :
31 | },
32 | {
33 | key: '/mine', title: t('tabs.mine'), icon: activeKey === '/mine' ?
34 | :
35 | },
36 | ];
37 |
38 | const setRouteActive = (value: string) => {
39 | setActiveKey(value);
40 | navigate(value);
41 | };
42 |
43 | return (
44 |
45 |
46 | {children}
47 |
48 |
49 |
50 |
51 | {tabs.map(item => (
52 |
57 | ))}
58 |
59 |
60 |
61 | );
62 | };
63 |
64 | export default MainLayout;
65 |
--------------------------------------------------------------------------------
/src/layout/main/index.less:
--------------------------------------------------------------------------------
1 | .main-layout {
2 | display: flex;
3 | flex-direction: column;
4 | height: 100vh;
5 |
6 | .layout-content {
7 | flex: 1 1 auto;
8 | overflow-y: auto;
9 | margin-bottom: 50px;
10 | }
11 |
12 | .layout-tab {
13 | flex: 0 0 auto;
14 | position: fixed;
15 | bottom: 0;
16 | width: 100%;
17 | z-index: 1000;
18 | background-color: #fff;
19 | box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/locales/en_US.json:
--------------------------------------------------------------------------------
1 | {
2 | "index.title": "Hello World!"
3 | }
--------------------------------------------------------------------------------
/src/locales/zh_CN.json:
--------------------------------------------------------------------------------
1 | {
2 | "index.title": "你好,世界!"
3 | }
--------------------------------------------------------------------------------
/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import {BrowserRouter} from 'react-router-dom';
4 | import App from '@/view/app/App.tsx'
5 | import './index.css'
6 |
7 | ReactDOM.createRoot(document.getElementById('root')!).render(
8 |
9 |
10 |
11 |
12 | ,
13 | )
14 |
--------------------------------------------------------------------------------
/src/route/auth.tsx:
--------------------------------------------------------------------------------
1 | import React, {useEffect} from 'react';
2 | import {useNavigate} from 'react-router-dom';
3 |
4 | interface AuthRouteProps {
5 | children: React.ReactNode;
6 | auth?: boolean;
7 | }
8 |
9 | /**
10 | * 认证路由
11 | * @param children 子组件
12 | * @param auth 是否需要认证
13 | * @constructor 认证路由组件
14 | */
15 | const AuthRoute: React.FC = ({children, auth}) => {
16 | const navigate = useNavigate();
17 | const token = localStorage.getItem('token'); // 或者其他认证令牌的获取方式
18 | const isAuthenticated = Boolean(token); // 认证逻辑
19 |
20 | useEffect(() => {
21 | if (auth && !isAuthenticated) {
22 | navigate('/login'); // 如果未认证且路由需要认证,则重定向到登录
23 | }
24 | }, [auth, isAuthenticated, navigate]);
25 |
26 | return <>{children}>;
27 | };
28 |
29 | export default AuthRoute;
30 |
--------------------------------------------------------------------------------
/src/route/render-routes.tsx:
--------------------------------------------------------------------------------
1 | import {Route, Routes} from 'react-router-dom';
2 | import {routes, AppRoute} from './routes';
3 | import AuthRoute from './auth.tsx';
4 |
5 | /**
6 | * 渲染路由
7 | * @constructor RenderRoutes
8 | */
9 | export const RenderRoutes = () => {
10 | const renderRoutes = (routes: AppRoute[]) => {
11 | return routes.map(route => (
12 |
17 | {route.element}
18 |
19 | }
20 | >
21 | {route.children && renderRoutes(route.children)}
22 |
23 | ));
24 | };
25 |
26 | return {renderRoutes(routes)} ;
27 | };
28 |
--------------------------------------------------------------------------------
/src/route/routes.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Home from "@/view/home";
3 |
4 | export interface AppRoute {
5 | path: string;
6 | element: React.ReactNode;
7 | auth?: boolean;
8 | children?: AppRoute[];
9 | }
10 |
11 | export const routes: AppRoute[] = [
12 | {path: '/', element: , auth: false},
13 | {path: '*', element: , auth: false}
14 | ];
--------------------------------------------------------------------------------
/src/store/i18n.ts:
--------------------------------------------------------------------------------
1 | import {create} from 'zustand'
2 | import {persist, createJSONStorage} from 'zustand/middleware'
3 |
4 | export const LANG_KEY = 'lang'
5 | export const useI18nStore = create()(
6 | persist(
7 | (set, get) => ({
8 | lang: 'en_US',
9 | changeLanguage: (lang) => set({lang}),
10 | toggleLanguage: () => set(() => {
11 | return {
12 | lang: get().lang.includes('zh') ? 'en_US' : 'zh_CN'
13 | }
14 | })
15 | }),
16 | {
17 | name: 'i18n-storage',
18 | storage: createJSONStorage(() => localStorage)
19 | },
20 | ),
21 | )
--------------------------------------------------------------------------------
/src/store/user.ts:
--------------------------------------------------------------------------------
1 | import {create} from 'zustand'
2 | import {persist, createJSONStorage} from 'zustand/middleware'
3 |
4 | export const useUserStore = create()(
5 | persist(
6 | (set) => ({
7 | user: {
8 | name: '',
9 | avatar: '',
10 | email: ''
11 | },
12 | setUser: (user: User) => set({user}),
13 | clearUser: () => set({
14 | user: null
15 | }),
16 | }),
17 | {
18 | name: 'user-storage',
19 | storage: createJSONStorage(() => localStorage)
20 | },
21 | ),
22 | )
--------------------------------------------------------------------------------
/src/types/http.d.ts:
--------------------------------------------------------------------------------
1 | interface Page {
2 | total: number;
3 | size: number;
4 | current: number;
5 | pages: number;
6 | records: T[];
7 | }
8 |
9 | export interface Result {
10 | success: boolean;
11 | code: number;
12 | message: string;
13 | data: T;
14 | }
--------------------------------------------------------------------------------
/src/types/store.d.ts:
--------------------------------------------------------------------------------
1 | interface User {
2 | name: string;
3 | avatar: string;
4 | email: string;
5 | }
6 |
7 | interface UserState {
8 | user: User | null;
9 | setUser: (user: User) => void;
10 | clearUser: () => void;
11 | }
12 |
13 | type lang = 'zh_CN' | 'en_US'
14 |
15 | interface LangStore {
16 | lang: lang;
17 | changeLanguage: (lang: lang) => void
18 | toggleLanguage: () => void
19 | }
--------------------------------------------------------------------------------
/src/util/amount.ts:
--------------------------------------------------------------------------------
1 | export function toYuan(num: number) {
2 | return (num / 100).toFixed(2);
3 | }
--------------------------------------------------------------------------------
/src/util/index.ts:
--------------------------------------------------------------------------------
1 | export * from './amount';
2 | export * from './location';
--------------------------------------------------------------------------------
/src/util/location.ts:
--------------------------------------------------------------------------------
1 | export function toKm(m: number): number {
2 | return m / 1000;
3 | }
--------------------------------------------------------------------------------
/src/view/app/App.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JanYork/react-h5-template/44b603167d83eea31e2fd4cb86fbb1c6ea7e9f92/src/view/app/App.css
--------------------------------------------------------------------------------
/src/view/app/App.tsx:
--------------------------------------------------------------------------------
1 | import './App.css'
2 | import {RenderRoutes} from "@/route/render-routes.tsx";
3 | import {axiosInstance} from "@/http/axios-instance.ts";
4 | import {configure} from 'axios-hooks'
5 | import enUS from "antd-mobile/es/locales/en-US";
6 | import {ConfigProvider} from "antd-mobile";
7 | import {useI18nStore} from "@/store/i18n.ts";
8 | import zhCN from "antd-mobile/es/locales/zh-CN";
9 |
10 | function App() {
11 | configure({
12 | axios: axiosInstance
13 | })
14 | const i18nStore = useI18nStore()
15 | return (
16 | <>
17 |
20 |
21 |
22 | >
23 | )
24 | }
25 |
26 | export default App
27 |
--------------------------------------------------------------------------------
/src/view/home/index.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JanYork/react-h5-template/44b603167d83eea31e2fd4cb86fbb1c6ea7e9f92/src/view/home/index.less
--------------------------------------------------------------------------------
/src/view/home/index.tsx:
--------------------------------------------------------------------------------
1 | import useI18n from "@/hooks/i18n.ts";
2 | import './index.less'
3 | import MainLayout from "@/layout/main/MainLayout.tsx";
4 | import {Button} from "antd-mobile";
5 | import {useI18nStore} from "@/store/i18n.ts";
6 |
7 | function Index() {
8 | const t = useI18n();
9 | const i18nStore = useI18nStore()
10 |
11 | return (
12 | <>
13 |
14 |
15 |
{t('index.title')}
16 |
{
18 | i18nStore.changeLanguage('zh_CN')
19 | }
20 | }>简体中文
21 |
{
23 | i18nStore.changeLanguage('en_US')
24 | }
25 | }>English
26 |
Font size 12px
31 |
32 |
Font size 14px
37 |
38 |
Font size 16px
43 |
44 |
Font size 18px
49 |
50 |
51 | >
52 | );
53 | }
54 |
55 | export default Index
56 |
--------------------------------------------------------------------------------
/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | interface ImportMetaEnv {
4 | readonly VITE_BASE_URL: string;
5 | }
6 |
7 | interface ImportMeta {
8 | readonly env: ImportMetaEnv;
9 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "noEmit": true,
15 | "jsx": "react-jsx",
16 |
17 | /* Linting */
18 | "strict": true,
19 | "noUnusedLocals": true,
20 | "noUnusedParameters": true,
21 | "noFallthroughCasesInSwitch": true,
22 |
23 | "baseUrl": "./",
24 | "paths": {
25 | "@/*": ["src/*"]
26 | },
27 | },
28 | "include": ["src"],
29 | "references": [{ "path": "./tsconfig.node.json" }]
30 | }
31 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite'
2 | import react from '@vitejs/plugin-react-swc'
3 | import path from "path";
4 |
5 | export default defineConfig({
6 | plugins: [react()],
7 | server: {
8 | port: 3000,
9 | host: '0.0.0.0',
10 | },
11 | resolve: {
12 | alias: {
13 | '@': path.resolve(__dirname, './src'),
14 | '~': '/src',
15 | }
16 | }
17 | })
18 |
--------------------------------------------------------------------------------