├── .gitignore
├── .prettierrc
├── README.md
├── index.html
├── package.json
├── plugins
└── prefetch.ts
├── pnpm-lock.yaml
├── postcss.config.cjs
├── public
├── cursors
│ └── normal-select.png
├── favicon.ico
└── wallpapers
│ ├── 1-1.png
│ ├── 1-1.webp
│ ├── 1-2.png
│ └── 1-2.webp
├── src
├── components
│ └── HomeScreen
│ │ ├── HomeIndicator.svelte
│ │ ├── HomeScreen.svelte
│ │ ├── LockScreen.svelte
│ │ └── Wallpaper.svelte
├── css
│ ├── global.scss
│ ├── reset.scss
│ └── themes.scss
├── global.d.ts
├── main.ts
├── stores
│ ├── theme.store.ts
│ └── time.store.ts
├── types.ts
└── utils
│ └── throttle.ts
├── svelte.config.js
├── tsconfig.json
└── vite.config.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 | /dist/
3 | /.vscode/
4 | .DS_Store
5 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 100,
3 | "useTabs": true,
4 | "singleQuote": true
5 | }
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | iOS, but for web 😉
2 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | iOS in Svelte
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ios-web",
3 | "version": "0.0.0",
4 | "type": "module",
5 | "scripts": {
6 | "dev": "vite",
7 | "build": "pnpm check && vite build",
8 | "preview": "vite preview",
9 | "check": "svelte-check --tsconfig ./tsconfig.json"
10 | },
11 | "stackblitz": {
12 | "startCommand": "npm run dev"
13 | },
14 | "devDependencies": {
15 | "@iconify-json/bi": "^1.0.10",
16 | "@iconify-json/ion": "^1.0.3",
17 | "@sveltejs/vite-plugin-svelte": "^1.0.0-next.34",
18 | "autoprefixer": "^10.4.2",
19 | "postcss": "^8.4.5",
20 | "sass": "^1.49.0",
21 | "svelte": "^3.46.2",
22 | "svelte-check": "^2.3.0",
23 | "svelte-preprocess": "^4.10.2",
24 | "typescript": "^4.5.4",
25 | "unplugin-icons": "^0.13.0",
26 | "vite": "^2.7.13"
27 | },
28 | "dependencies": {
29 | "date-fns": "^2.28.0",
30 | "longpress-svelte": "^1.0.0",
31 | "svelte-drag": "^2.4.0",
32 | "svelte-local-storage-store": "^0.2.6"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/plugins/prefetch.ts:
--------------------------------------------------------------------------------
1 | import type { HtmlTagDescriptor, Plugin } from 'vite';
2 |
3 | export function prefetch(): Plugin {
4 | return {
5 | name: 'prefetch',
6 |
7 | enforce: 'post',
8 | apply: 'build',
9 |
10 | transformIndexHtml: (html, ctx) => {
11 | const tags = Object.keys(ctx.bundle).map(
12 | (chunkName) =>
13 | ({
14 | injectTo: 'head',
15 | tag: 'link',
16 | attrs: {
17 | rel: 'prefetch',
18 | href: `/${chunkName}`,
19 | },
20 | } as HtmlTagDescriptor)
21 | );
22 |
23 | return {
24 | html,
25 | tags,
26 | };
27 | },
28 | };
29 | }
30 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | specifiers:
4 | '@iconify-json/bi': ^1.0.10
5 | '@iconify-json/ion': ^1.0.3
6 | '@sveltejs/vite-plugin-svelte': ^1.0.0-next.34
7 | autoprefixer: ^10.4.2
8 | date-fns: ^2.28.0
9 | i: ^0.3.7
10 | longpress-svelte: ^1.0.0
11 | postcss: ^8.4.5
12 | sass: ^1.49.0
13 | svelte: ^3.46.2
14 | svelte-check: ^2.3.0
15 | svelte-drag: ^2.4.0
16 | svelte-local-storage-store: ^0.2.6
17 | svelte-preprocess: ^4.10.2
18 | typescript: ^4.5.4
19 | unplugin-icons: ^0.13.0
20 | vite: ^2.7.13
21 |
22 | dependencies:
23 | date-fns: 2.28.0
24 | i: 0.3.7
25 | longpress-svelte: 1.0.0
26 | svelte-drag: 2.4.0
27 | svelte-local-storage-store: 0.2.6_svelte@3.46.2
28 |
29 | devDependencies:
30 | '@iconify-json/bi': 1.0.10
31 | '@iconify-json/ion': 1.0.3
32 | '@sveltejs/vite-plugin-svelte': 1.0.0-next.34_svelte@3.46.2+vite@2.7.13
33 | autoprefixer: 10.4.2_postcss@8.4.5
34 | postcss: 8.4.5
35 | sass: 1.49.0
36 | svelte: 3.46.2
37 | svelte-check: 2.3.0_77d7750cf002ab9dbc05a2cb89869e71
38 | svelte-preprocess: 4.10.2_24f955ca631190a520f39e29c134e7a4
39 | typescript: 4.5.4
40 | unplugin-icons: 0.13.0_vite@2.7.13
41 | vite: 2.7.13_sass@1.49.0
42 |
43 | packages:
44 |
45 | /@antfu/install-pkg/0.1.0:
46 | resolution: {integrity: sha512-VaIJd3d1o7irZfK1U0nvBsHMyjkuyMP3HKYVV53z8DKyulkHKmjhhtccXO51WSPeeSHIeoJEoNOKavYpS7jkZw==}
47 | dependencies:
48 | execa: 5.1.1
49 | find-up: 5.0.0
50 | dev: true
51 |
52 | /@antfu/utils/0.3.0:
53 | resolution: {integrity: sha512-UU8TLr/EoXdg7OjMp0h9oDoIAVr+Z/oW9cpOxQQyrsz6Qzd2ms/1CdWx8fl2OQdFpxGmq5Vc4TwfLHId6nAZjA==}
54 | dependencies:
55 | '@types/throttle-debounce': 2.1.0
56 | dev: true
57 |
58 | /@antfu/utils/0.4.0:
59 | resolution: {integrity: sha512-gqkpvjkgFUu+s3kP+Ly33OKpo5zvVY3FDFhv5BIb98SncS3KD6DNxPfNDjwHIoyXbz1leWo1j8DtRLZ1D2Jv+Q==}
60 | dependencies:
61 | '@types/throttle-debounce': 2.1.0
62 | dev: true
63 |
64 | /@iconify-json/bi/1.0.10:
65 | resolution: {integrity: sha512-mvVWW68kRup2ZP2UCmxMBlUs46tmYqZyCvfnSIc/g7TwSZn4BFihazirNL0nOJS2dcZy+lhh9SouQltyuLIjfw==}
66 | dependencies:
67 | '@iconify/types': 1.0.12
68 | dev: true
69 |
70 | /@iconify-json/ion/1.0.3:
71 | resolution: {integrity: sha512-U+ykIbPHxvfUggDhvkd1eZUniUVhbwXeu9qMJsuJWjL1QOlDlBBDgdJgDqnPAQ7o67A+i23PNM5RLSQnKGTWzw==}
72 | dependencies:
73 | '@iconify/types': 1.0.12
74 | dev: true
75 |
76 | /@iconify/types/1.0.12:
77 | resolution: {integrity: sha512-6er6wSGF3hgc1JEZqiGpg21CTCjHBYOUwqLmb2Idzkjiw6ogalGP0ZMLVutCzah+0WB4yP+Zd2oVPN8jvJ+Ftg==}
78 | dev: true
79 |
80 | /@iconify/utils/1.0.21:
81 | resolution: {integrity: sha512-Rf8vfOH7MI30xyc9rbLFdxnfsfdcrIiIxsoZyEWkUK8P65QsS9PrQXunOc9Wt7uZfJTiX25WMED3WqLKXrRx1Q==}
82 | dependencies:
83 | '@antfu/install-pkg': 0.1.0
84 | '@antfu/utils': 0.3.0
85 | '@iconify/types': 1.0.12
86 | debug: 4.3.3
87 | kolorist: 1.5.1
88 | local-pkg: 0.4.1
89 | transitivePeerDependencies:
90 | - supports-color
91 | dev: true
92 |
93 | /@nodelib/fs.scandir/2.1.5:
94 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
95 | engines: {node: '>= 8'}
96 | dependencies:
97 | '@nodelib/fs.stat': 2.0.5
98 | run-parallel: 1.2.0
99 | dev: true
100 |
101 | /@nodelib/fs.stat/2.0.5:
102 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
103 | engines: {node: '>= 8'}
104 | dev: true
105 |
106 | /@nodelib/fs.walk/1.2.8:
107 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
108 | engines: {node: '>= 8'}
109 | dependencies:
110 | '@nodelib/fs.scandir': 2.1.5
111 | fastq: 1.13.0
112 | dev: true
113 |
114 | /@rollup/pluginutils/4.1.2:
115 | resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==}
116 | engines: {node: '>= 8.0.0'}
117 | dependencies:
118 | estree-walker: 2.0.2
119 | picomatch: 2.3.1
120 | dev: true
121 |
122 | /@sveltejs/vite-plugin-svelte/1.0.0-next.34_svelte@3.46.2+vite@2.7.13:
123 | resolution: {integrity: sha512-qZH2jndijrdkvevgbO7OH3iQsviM5Kz7h5APiNP4yEMZTrwq9bifzYvco6BprwtPvLb5wYlRVFZUOdusY6AovQ==}
124 | engines: {node: ^14.13.1 || >= 16}
125 | peerDependencies:
126 | diff-match-patch: ^1.0.5
127 | svelte: ^3.44.0
128 | vite: ^2.7.0
129 | peerDependenciesMeta:
130 | diff-match-patch:
131 | optional: true
132 | dependencies:
133 | '@rollup/pluginutils': 4.1.2
134 | debug: 4.3.3
135 | kleur: 4.1.4
136 | magic-string: 0.25.7
137 | require-relative: 0.8.7
138 | svelte: 3.46.2
139 | svelte-hmr: 0.14.9_svelte@3.46.2
140 | vite: 2.7.13_sass@1.49.0
141 | transitivePeerDependencies:
142 | - supports-color
143 | dev: true
144 |
145 | /@types/node/17.0.10:
146 | resolution: {integrity: sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==}
147 | dev: true
148 |
149 | /@types/pug/2.0.6:
150 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==}
151 | dev: true
152 |
153 | /@types/sass/1.43.1:
154 | resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==}
155 | dependencies:
156 | '@types/node': 17.0.10
157 | dev: true
158 |
159 | /@types/throttle-debounce/2.1.0:
160 | resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==}
161 | dev: true
162 |
163 | /anymatch/3.1.2:
164 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
165 | engines: {node: '>= 8'}
166 | dependencies:
167 | normalize-path: 3.0.0
168 | picomatch: 2.3.1
169 | dev: true
170 |
171 | /autoprefixer/10.4.2_postcss@8.4.5:
172 | resolution: {integrity: sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==}
173 | engines: {node: ^10 || ^12 || >=14}
174 | hasBin: true
175 | peerDependencies:
176 | postcss: ^8.1.0
177 | dependencies:
178 | browserslist: 4.19.1
179 | caniuse-lite: 1.0.30001300
180 | fraction.js: 4.1.2
181 | normalize-range: 0.1.2
182 | picocolors: 1.0.0
183 | postcss: 8.4.5
184 | postcss-value-parser: 4.2.0
185 | dev: true
186 |
187 | /balanced-match/1.0.2:
188 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
189 | dev: true
190 |
191 | /binary-extensions/2.2.0:
192 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
193 | engines: {node: '>=8'}
194 | dev: true
195 |
196 | /brace-expansion/1.1.11:
197 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
198 | dependencies:
199 | balanced-match: 1.0.2
200 | concat-map: 0.0.1
201 | dev: true
202 |
203 | /braces/3.0.2:
204 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
205 | engines: {node: '>=8'}
206 | dependencies:
207 | fill-range: 7.0.1
208 | dev: true
209 |
210 | /browserslist/4.19.1:
211 | resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==}
212 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
213 | hasBin: true
214 | dependencies:
215 | caniuse-lite: 1.0.30001300
216 | electron-to-chromium: 1.4.48
217 | escalade: 3.1.1
218 | node-releases: 2.0.1
219 | picocolors: 1.0.0
220 | dev: true
221 |
222 | /buffer-crc32/0.2.13:
223 | resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=}
224 | dev: true
225 |
226 | /callsites/3.1.0:
227 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
228 | engines: {node: '>=6'}
229 | dev: true
230 |
231 | /caniuse-lite/1.0.30001300:
232 | resolution: {integrity: sha512-cVjiJHWGcNlJi8TZVKNMnvMid3Z3TTdDHmLDzlOdIiZq138Exvo0G+G0wTdVYolxKb4AYwC+38pxodiInVtJSA==}
233 | dev: true
234 |
235 | /chokidar/3.5.3:
236 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
237 | engines: {node: '>= 8.10.0'}
238 | dependencies:
239 | anymatch: 3.1.2
240 | braces: 3.0.2
241 | glob-parent: 5.1.2
242 | is-binary-path: 2.1.0
243 | is-glob: 4.0.3
244 | normalize-path: 3.0.0
245 | readdirp: 3.6.0
246 | optionalDependencies:
247 | fsevents: 2.3.2
248 | dev: true
249 |
250 | /concat-map/0.0.1:
251 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
252 | dev: true
253 |
254 | /cross-spawn/7.0.3:
255 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
256 | engines: {node: '>= 8'}
257 | dependencies:
258 | path-key: 3.1.1
259 | shebang-command: 2.0.0
260 | which: 2.0.2
261 | dev: true
262 |
263 | /date-fns/2.28.0:
264 | resolution: {integrity: sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==}
265 | engines: {node: '>=0.11'}
266 | dev: false
267 |
268 | /debug/4.3.3:
269 | resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
270 | engines: {node: '>=6.0'}
271 | peerDependencies:
272 | supports-color: '*'
273 | peerDependenciesMeta:
274 | supports-color:
275 | optional: true
276 | dependencies:
277 | ms: 2.1.2
278 | dev: true
279 |
280 | /detect-indent/6.1.0:
281 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
282 | engines: {node: '>=8'}
283 | dev: true
284 |
285 | /electron-to-chromium/1.4.48:
286 | resolution: {integrity: sha512-RT3SEmpv7XUA+tKXrZGudAWLDpa7f8qmhjcLaM6OD/ERxjQ/zAojT8/Vvo0BSzbArkElFZ1WyZ9FuwAYbkdBNA==}
287 | dev: true
288 |
289 | /es6-promise/3.3.1:
290 | resolution: {integrity: sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=}
291 | dev: true
292 |
293 | /esbuild-android-arm64/0.13.15:
294 | resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==}
295 | cpu: [arm64]
296 | os: [android]
297 | requiresBuild: true
298 | dev: true
299 | optional: true
300 |
301 | /esbuild-darwin-64/0.13.15:
302 | resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==}
303 | cpu: [x64]
304 | os: [darwin]
305 | requiresBuild: true
306 | dev: true
307 | optional: true
308 |
309 | /esbuild-darwin-arm64/0.13.15:
310 | resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==}
311 | cpu: [arm64]
312 | os: [darwin]
313 | requiresBuild: true
314 | dev: true
315 | optional: true
316 |
317 | /esbuild-freebsd-64/0.13.15:
318 | resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==}
319 | cpu: [x64]
320 | os: [freebsd]
321 | requiresBuild: true
322 | dev: true
323 | optional: true
324 |
325 | /esbuild-freebsd-arm64/0.13.15:
326 | resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==}
327 | cpu: [arm64]
328 | os: [freebsd]
329 | requiresBuild: true
330 | dev: true
331 | optional: true
332 |
333 | /esbuild-linux-32/0.13.15:
334 | resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==}
335 | cpu: [ia32]
336 | os: [linux]
337 | requiresBuild: true
338 | dev: true
339 | optional: true
340 |
341 | /esbuild-linux-64/0.13.15:
342 | resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==}
343 | cpu: [x64]
344 | os: [linux]
345 | requiresBuild: true
346 | dev: true
347 | optional: true
348 |
349 | /esbuild-linux-arm/0.13.15:
350 | resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==}
351 | cpu: [arm]
352 | os: [linux]
353 | requiresBuild: true
354 | dev: true
355 | optional: true
356 |
357 | /esbuild-linux-arm64/0.13.15:
358 | resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==}
359 | cpu: [arm64]
360 | os: [linux]
361 | requiresBuild: true
362 | dev: true
363 | optional: true
364 |
365 | /esbuild-linux-mips64le/0.13.15:
366 | resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==}
367 | cpu: [mips64el]
368 | os: [linux]
369 | requiresBuild: true
370 | dev: true
371 | optional: true
372 |
373 | /esbuild-linux-ppc64le/0.13.15:
374 | resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==}
375 | cpu: [ppc64]
376 | os: [linux]
377 | requiresBuild: true
378 | dev: true
379 | optional: true
380 |
381 | /esbuild-netbsd-64/0.13.15:
382 | resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==}
383 | cpu: [x64]
384 | os: [netbsd]
385 | requiresBuild: true
386 | dev: true
387 | optional: true
388 |
389 | /esbuild-openbsd-64/0.13.15:
390 | resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==}
391 | cpu: [x64]
392 | os: [openbsd]
393 | requiresBuild: true
394 | dev: true
395 | optional: true
396 |
397 | /esbuild-sunos-64/0.13.15:
398 | resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==}
399 | cpu: [x64]
400 | os: [sunos]
401 | requiresBuild: true
402 | dev: true
403 | optional: true
404 |
405 | /esbuild-windows-32/0.13.15:
406 | resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==}
407 | cpu: [ia32]
408 | os: [win32]
409 | requiresBuild: true
410 | dev: true
411 | optional: true
412 |
413 | /esbuild-windows-64/0.13.15:
414 | resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==}
415 | cpu: [x64]
416 | os: [win32]
417 | requiresBuild: true
418 | dev: true
419 | optional: true
420 |
421 | /esbuild-windows-arm64/0.13.15:
422 | resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==}
423 | cpu: [arm64]
424 | os: [win32]
425 | requiresBuild: true
426 | dev: true
427 | optional: true
428 |
429 | /esbuild/0.13.15:
430 | resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==}
431 | hasBin: true
432 | requiresBuild: true
433 | optionalDependencies:
434 | esbuild-android-arm64: 0.13.15
435 | esbuild-darwin-64: 0.13.15
436 | esbuild-darwin-arm64: 0.13.15
437 | esbuild-freebsd-64: 0.13.15
438 | esbuild-freebsd-arm64: 0.13.15
439 | esbuild-linux-32: 0.13.15
440 | esbuild-linux-64: 0.13.15
441 | esbuild-linux-arm: 0.13.15
442 | esbuild-linux-arm64: 0.13.15
443 | esbuild-linux-mips64le: 0.13.15
444 | esbuild-linux-ppc64le: 0.13.15
445 | esbuild-netbsd-64: 0.13.15
446 | esbuild-openbsd-64: 0.13.15
447 | esbuild-sunos-64: 0.13.15
448 | esbuild-windows-32: 0.13.15
449 | esbuild-windows-64: 0.13.15
450 | esbuild-windows-arm64: 0.13.15
451 | dev: true
452 |
453 | /escalade/3.1.1:
454 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
455 | engines: {node: '>=6'}
456 | dev: true
457 |
458 | /estree-walker/2.0.2:
459 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
460 | dev: true
461 |
462 | /execa/5.1.1:
463 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
464 | engines: {node: '>=10'}
465 | dependencies:
466 | cross-spawn: 7.0.3
467 | get-stream: 6.0.1
468 | human-signals: 2.1.0
469 | is-stream: 2.0.1
470 | merge-stream: 2.0.0
471 | npm-run-path: 4.0.1
472 | onetime: 5.1.2
473 | signal-exit: 3.0.6
474 | strip-final-newline: 2.0.0
475 | dev: true
476 |
477 | /fast-glob/3.2.11:
478 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
479 | engines: {node: '>=8.6.0'}
480 | dependencies:
481 | '@nodelib/fs.stat': 2.0.5
482 | '@nodelib/fs.walk': 1.2.8
483 | glob-parent: 5.1.2
484 | merge2: 1.4.1
485 | micromatch: 4.0.4
486 | dev: true
487 |
488 | /fastq/1.13.0:
489 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
490 | dependencies:
491 | reusify: 1.0.4
492 | dev: true
493 |
494 | /fill-range/7.0.1:
495 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
496 | engines: {node: '>=8'}
497 | dependencies:
498 | to-regex-range: 5.0.1
499 | dev: true
500 |
501 | /find-up/5.0.0:
502 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
503 | engines: {node: '>=10'}
504 | dependencies:
505 | locate-path: 6.0.0
506 | path-exists: 4.0.0
507 | dev: true
508 |
509 | /fraction.js/4.1.2:
510 | resolution: {integrity: sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==}
511 | dev: true
512 |
513 | /fs.realpath/1.0.0:
514 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
515 | dev: true
516 |
517 | /fsevents/2.3.2:
518 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
519 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
520 | os: [darwin]
521 | requiresBuild: true
522 | dev: true
523 | optional: true
524 |
525 | /function-bind/1.1.1:
526 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
527 | dev: true
528 |
529 | /get-stream/6.0.1:
530 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
531 | engines: {node: '>=10'}
532 | dev: true
533 |
534 | /glob-parent/5.1.2:
535 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
536 | engines: {node: '>= 6'}
537 | dependencies:
538 | is-glob: 4.0.3
539 | dev: true
540 |
541 | /glob/7.2.0:
542 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
543 | dependencies:
544 | fs.realpath: 1.0.0
545 | inflight: 1.0.6
546 | inherits: 2.0.4
547 | minimatch: 3.0.4
548 | once: 1.4.0
549 | path-is-absolute: 1.0.1
550 | dev: true
551 |
552 | /graceful-fs/4.2.9:
553 | resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
554 | dev: true
555 |
556 | /has/1.0.3:
557 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
558 | engines: {node: '>= 0.4.0'}
559 | dependencies:
560 | function-bind: 1.1.1
561 | dev: true
562 |
563 | /human-signals/2.1.0:
564 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
565 | engines: {node: '>=10.17.0'}
566 | dev: true
567 |
568 | /i/0.3.7:
569 | resolution: {integrity: sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==}
570 | engines: {node: '>=0.4'}
571 | dev: false
572 |
573 | /immutable/4.0.0:
574 | resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==}
575 | dev: true
576 |
577 | /import-fresh/3.3.0:
578 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
579 | engines: {node: '>=6'}
580 | dependencies:
581 | parent-module: 1.0.1
582 | resolve-from: 4.0.0
583 | dev: true
584 |
585 | /inflight/1.0.6:
586 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
587 | dependencies:
588 | once: 1.4.0
589 | wrappy: 1.0.2
590 | dev: true
591 |
592 | /inherits/2.0.4:
593 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
594 | dev: true
595 |
596 | /is-binary-path/2.1.0:
597 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
598 | engines: {node: '>=8'}
599 | dependencies:
600 | binary-extensions: 2.2.0
601 | dev: true
602 |
603 | /is-core-module/2.8.1:
604 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
605 | dependencies:
606 | has: 1.0.3
607 | dev: true
608 |
609 | /is-extglob/2.1.1:
610 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
611 | engines: {node: '>=0.10.0'}
612 | dev: true
613 |
614 | /is-glob/4.0.3:
615 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
616 | engines: {node: '>=0.10.0'}
617 | dependencies:
618 | is-extglob: 2.1.1
619 | dev: true
620 |
621 | /is-number/7.0.0:
622 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
623 | engines: {node: '>=0.12.0'}
624 | dev: true
625 |
626 | /is-stream/2.0.1:
627 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
628 | engines: {node: '>=8'}
629 | dev: true
630 |
631 | /isexe/2.0.0:
632 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
633 | dev: true
634 |
635 | /kleur/4.1.4:
636 | resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==}
637 | engines: {node: '>=6'}
638 | dev: true
639 |
640 | /kolorist/1.5.1:
641 | resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==}
642 | dev: true
643 |
644 | /local-pkg/0.4.1:
645 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==}
646 | engines: {node: '>=14'}
647 | dev: true
648 |
649 | /locate-path/6.0.0:
650 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
651 | engines: {node: '>=10'}
652 | dependencies:
653 | p-locate: 5.0.0
654 | dev: true
655 |
656 | /longpress-svelte/1.0.0:
657 | resolution: {integrity: sha512-szGKbBpQxwjcl2bHWJShM7pRi/944muMQtzNHbn870pAdh1DIWZr1ExS2+ncL47MlR43HbBM1WnQ1uIA44CVrg==}
658 | dev: false
659 |
660 | /magic-string/0.25.7:
661 | resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==}
662 | dependencies:
663 | sourcemap-codec: 1.4.8
664 | dev: true
665 |
666 | /merge-stream/2.0.0:
667 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
668 | dev: true
669 |
670 | /merge2/1.4.1:
671 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
672 | engines: {node: '>= 8'}
673 | dev: true
674 |
675 | /micromatch/4.0.4:
676 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
677 | engines: {node: '>=8.6'}
678 | dependencies:
679 | braces: 3.0.2
680 | picomatch: 2.3.1
681 | dev: true
682 |
683 | /mimic-fn/2.1.0:
684 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
685 | engines: {node: '>=6'}
686 | dev: true
687 |
688 | /min-indent/1.0.1:
689 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
690 | engines: {node: '>=4'}
691 | dev: true
692 |
693 | /minimatch/3.0.4:
694 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
695 | dependencies:
696 | brace-expansion: 1.1.11
697 | dev: true
698 |
699 | /minimist/1.2.5:
700 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
701 | dev: true
702 |
703 | /mkdirp/0.5.5:
704 | resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==}
705 | hasBin: true
706 | dependencies:
707 | minimist: 1.2.5
708 | dev: true
709 |
710 | /mri/1.2.0:
711 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
712 | engines: {node: '>=4'}
713 | dev: true
714 |
715 | /ms/2.1.2:
716 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
717 | dev: true
718 |
719 | /nanoid/3.2.0:
720 | resolution: {integrity: sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==}
721 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
722 | hasBin: true
723 | dev: true
724 |
725 | /node-releases/2.0.1:
726 | resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==}
727 | dev: true
728 |
729 | /normalize-path/3.0.0:
730 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
731 | engines: {node: '>=0.10.0'}
732 | dev: true
733 |
734 | /normalize-range/0.1.2:
735 | resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=}
736 | engines: {node: '>=0.10.0'}
737 | dev: true
738 |
739 | /npm-run-path/4.0.1:
740 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
741 | engines: {node: '>=8'}
742 | dependencies:
743 | path-key: 3.1.1
744 | dev: true
745 |
746 | /once/1.4.0:
747 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
748 | dependencies:
749 | wrappy: 1.0.2
750 | dev: true
751 |
752 | /onetime/5.1.2:
753 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
754 | engines: {node: '>=6'}
755 | dependencies:
756 | mimic-fn: 2.1.0
757 | dev: true
758 |
759 | /p-limit/3.1.0:
760 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
761 | engines: {node: '>=10'}
762 | dependencies:
763 | yocto-queue: 0.1.0
764 | dev: true
765 |
766 | /p-locate/5.0.0:
767 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
768 | engines: {node: '>=10'}
769 | dependencies:
770 | p-limit: 3.1.0
771 | dev: true
772 |
773 | /parent-module/1.0.1:
774 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
775 | engines: {node: '>=6'}
776 | dependencies:
777 | callsites: 3.1.0
778 | dev: true
779 |
780 | /path-exists/4.0.0:
781 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
782 | engines: {node: '>=8'}
783 | dev: true
784 |
785 | /path-is-absolute/1.0.1:
786 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
787 | engines: {node: '>=0.10.0'}
788 | dev: true
789 |
790 | /path-key/3.1.1:
791 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
792 | engines: {node: '>=8'}
793 | dev: true
794 |
795 | /path-parse/1.0.7:
796 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
797 | dev: true
798 |
799 | /picocolors/1.0.0:
800 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
801 | dev: true
802 |
803 | /picomatch/2.3.1:
804 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
805 | engines: {node: '>=8.6'}
806 | dev: true
807 |
808 | /postcss-value-parser/4.2.0:
809 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
810 | dev: true
811 |
812 | /postcss/8.4.5:
813 | resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==}
814 | engines: {node: ^10 || ^12 || >=14}
815 | dependencies:
816 | nanoid: 3.2.0
817 | picocolors: 1.0.0
818 | source-map-js: 1.0.2
819 | dev: true
820 |
821 | /queue-microtask/1.2.3:
822 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
823 | dev: true
824 |
825 | /readdirp/3.6.0:
826 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
827 | engines: {node: '>=8.10.0'}
828 | dependencies:
829 | picomatch: 2.3.1
830 | dev: true
831 |
832 | /require-relative/0.8.7:
833 | resolution: {integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=}
834 | dev: true
835 |
836 | /resolve-from/4.0.0:
837 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
838 | engines: {node: '>=4'}
839 | dev: true
840 |
841 | /resolve/1.21.0:
842 | resolution: {integrity: sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==}
843 | hasBin: true
844 | dependencies:
845 | is-core-module: 2.8.1
846 | path-parse: 1.0.7
847 | supports-preserve-symlinks-flag: 1.0.0
848 | dev: true
849 |
850 | /reusify/1.0.4:
851 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
852 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
853 | dev: true
854 |
855 | /rimraf/2.7.1:
856 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
857 | hasBin: true
858 | dependencies:
859 | glob: 7.2.0
860 | dev: true
861 |
862 | /rollup/2.64.0:
863 | resolution: {integrity: sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==}
864 | engines: {node: '>=10.0.0'}
865 | hasBin: true
866 | optionalDependencies:
867 | fsevents: 2.3.2
868 | dev: true
869 |
870 | /run-parallel/1.2.0:
871 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
872 | dependencies:
873 | queue-microtask: 1.2.3
874 | dev: true
875 |
876 | /sade/1.8.1:
877 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
878 | engines: {node: '>=6'}
879 | dependencies:
880 | mri: 1.2.0
881 | dev: true
882 |
883 | /sander/0.5.1:
884 | resolution: {integrity: sha1-dB4kXiMfB8r7b98PEzrfohalAq0=}
885 | dependencies:
886 | es6-promise: 3.3.1
887 | graceful-fs: 4.2.9
888 | mkdirp: 0.5.5
889 | rimraf: 2.7.1
890 | dev: true
891 |
892 | /sass/1.49.0:
893 | resolution: {integrity: sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==}
894 | engines: {node: '>=8.9.0'}
895 | hasBin: true
896 | dependencies:
897 | chokidar: 3.5.3
898 | immutable: 4.0.0
899 | source-map-js: 1.0.2
900 | dev: true
901 |
902 | /shebang-command/2.0.0:
903 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
904 | engines: {node: '>=8'}
905 | dependencies:
906 | shebang-regex: 3.0.0
907 | dev: true
908 |
909 | /shebang-regex/3.0.0:
910 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
911 | engines: {node: '>=8'}
912 | dev: true
913 |
914 | /signal-exit/3.0.6:
915 | resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==}
916 | dev: true
917 |
918 | /sorcery/0.10.0:
919 | resolution: {integrity: sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=}
920 | hasBin: true
921 | dependencies:
922 | buffer-crc32: 0.2.13
923 | minimist: 1.2.5
924 | sander: 0.5.1
925 | sourcemap-codec: 1.4.8
926 | dev: true
927 |
928 | /source-map-js/1.0.2:
929 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
930 | engines: {node: '>=0.10.0'}
931 | dev: true
932 |
933 | /source-map/0.7.3:
934 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==}
935 | engines: {node: '>= 8'}
936 | dev: true
937 |
938 | /sourcemap-codec/1.4.8:
939 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
940 | dev: true
941 |
942 | /strip-final-newline/2.0.0:
943 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
944 | engines: {node: '>=6'}
945 | dev: true
946 |
947 | /strip-indent/3.0.0:
948 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
949 | engines: {node: '>=8'}
950 | dependencies:
951 | min-indent: 1.0.1
952 | dev: true
953 |
954 | /supports-preserve-symlinks-flag/1.0.0:
955 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
956 | engines: {node: '>= 0.4'}
957 | dev: true
958 |
959 | /svelte-check/2.3.0_77d7750cf002ab9dbc05a2cb89869e71:
960 | resolution: {integrity: sha512-SBKdJyUmxzPmJf/ZPqDSQOoa9JzOcgEpV7u3UaYcgVn7fA0veZ3FA5JgLU8KYtf84Gp6guBVcrC7XKLjJa5SXQ==}
961 | hasBin: true
962 | peerDependencies:
963 | svelte: ^3.24.0
964 | dependencies:
965 | chokidar: 3.5.3
966 | fast-glob: 3.2.11
967 | import-fresh: 3.3.0
968 | minimist: 1.2.5
969 | picocolors: 1.0.0
970 | sade: 1.8.1
971 | source-map: 0.7.3
972 | svelte: 3.46.2
973 | svelte-preprocess: 4.10.2_24f955ca631190a520f39e29c134e7a4
974 | typescript: 4.5.4
975 | transitivePeerDependencies:
976 | - '@babel/core'
977 | - coffeescript
978 | - less
979 | - node-sass
980 | - postcss
981 | - postcss-load-config
982 | - pug
983 | - sass
984 | - stylus
985 | - sugarss
986 | dev: true
987 |
988 | /svelte-drag/2.4.0:
989 | resolution: {integrity: sha512-9WY3L1Y+3sAHufb4e7Ml4zHZWkTXL8DfB3NYovOL1ygImBFuMfHEhoeqo/qpWSU/wjO53nzn+T3nu9lHqATAyg==}
990 | dev: false
991 |
992 | /svelte-hmr/0.14.9_svelte@3.46.2:
993 | resolution: {integrity: sha512-bKE9+4qb4sAnA+TKHiYurUl970rjA0XmlP9TEP7K/ncyWz3m81kA4HOgmlZK/7irGK7gzZlaPDI3cmf8fp/+tg==}
994 | peerDependencies:
995 | svelte: '>=3.19.0'
996 | dependencies:
997 | svelte: 3.46.2
998 | dev: true
999 |
1000 | /svelte-local-storage-store/0.2.6_svelte@3.46.2:
1001 | resolution: {integrity: sha512-7QLCZ4V/0ydvZRyVChNYx7gVkprzrkACD63PpZINy5oFv9nE+5CAP94QN3NBI2awPeDB+cpUzNCB4Q0Yjr9CYQ==}
1002 | engines: {node: '>=0.14'}
1003 | peerDependencies:
1004 | svelte: ^3.44.1
1005 | dependencies:
1006 | svelte: 3.46.2
1007 | dev: false
1008 |
1009 | /svelte-preprocess/4.10.2_24f955ca631190a520f39e29c134e7a4:
1010 | resolution: {integrity: sha512-aPpkCreSo8EL/y8kJSa1trhiX0oyAtTjlNNM7BNjRAsMJ8Yy2LtqHt0zyd4pQPXt+D4PzbO3qTjjio3kwOxDlA==}
1011 | engines: {node: '>= 9.11.2'}
1012 | requiresBuild: true
1013 | peerDependencies:
1014 | '@babel/core': ^7.10.2
1015 | coffeescript: ^2.5.1
1016 | less: ^3.11.3 || ^4.0.0
1017 | node-sass: '*'
1018 | postcss: ^7 || ^8
1019 | postcss-load-config: ^2.1.0 || ^3.0.0
1020 | pug: ^3.0.0
1021 | sass: ^1.26.8
1022 | stylus: ^0.55.0
1023 | sugarss: ^2.0.0
1024 | svelte: ^3.23.0
1025 | typescript: ^4.5.2
1026 | peerDependenciesMeta:
1027 | '@babel/core':
1028 | optional: true
1029 | coffeescript:
1030 | optional: true
1031 | less:
1032 | optional: true
1033 | node-sass:
1034 | optional: true
1035 | postcss:
1036 | optional: true
1037 | postcss-load-config:
1038 | optional: true
1039 | pug:
1040 | optional: true
1041 | sass:
1042 | optional: true
1043 | stylus:
1044 | optional: true
1045 | sugarss:
1046 | optional: true
1047 | typescript:
1048 | optional: true
1049 | dependencies:
1050 | '@types/pug': 2.0.6
1051 | '@types/sass': 1.43.1
1052 | detect-indent: 6.1.0
1053 | magic-string: 0.25.7
1054 | postcss: 8.4.5
1055 | sass: 1.49.0
1056 | sorcery: 0.10.0
1057 | strip-indent: 3.0.0
1058 | svelte: 3.46.2
1059 | typescript: 4.5.4
1060 | dev: true
1061 |
1062 | /svelte/3.46.2:
1063 | resolution: {integrity: sha512-RXSAtYNefe01Sb1lXtZ2I+gzn3t/h/59hoaRNeRrm8IkMIu6BSiAkbpi41xb+C44x54YKnbk9+dtfs3pM4hECA==}
1064 | engines: {node: '>= 8'}
1065 | dev: true
1066 |
1067 | /to-regex-range/5.0.1:
1068 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1069 | engines: {node: '>=8.0'}
1070 | dependencies:
1071 | is-number: 7.0.0
1072 | dev: true
1073 |
1074 | /typescript/4.5.4:
1075 | resolution: {integrity: sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==}
1076 | engines: {node: '>=4.2.0'}
1077 | hasBin: true
1078 | dev: true
1079 |
1080 | /unplugin-icons/0.13.0_vite@2.7.13:
1081 | resolution: {integrity: sha512-CyAl0HV3bZUGT7ut9agpPRhEYXCvufr80Fh72yrkD57BVCTZ7ze10Rt63ZrvPXiJQpd+aI/Bizm2aqOf3WPSfg==}
1082 | peerDependencies:
1083 | '@svgr/core': ^5.5.0
1084 | '@vue/compiler-sfc': ^3.0.2
1085 | vue-template-compiler: ^2.6.12
1086 | vue-template-es2015-compiler: ^1.9.0
1087 | peerDependenciesMeta:
1088 | '@svgr/core':
1089 | optional: true
1090 | '@vue/compiler-sfc':
1091 | optional: true
1092 | vue-template-compiler:
1093 | optional: true
1094 | vue-template-es2015-compiler:
1095 | optional: true
1096 | dependencies:
1097 | '@antfu/install-pkg': 0.1.0
1098 | '@antfu/utils': 0.4.0
1099 | '@iconify/utils': 1.0.21
1100 | debug: 4.3.3
1101 | kolorist: 1.5.1
1102 | local-pkg: 0.4.1
1103 | unplugin: 0.2.21_vite@2.7.13
1104 | transitivePeerDependencies:
1105 | - rollup
1106 | - supports-color
1107 | - vite
1108 | - webpack
1109 | dev: true
1110 |
1111 | /unplugin/0.2.21_vite@2.7.13:
1112 | resolution: {integrity: sha512-IJ15/L5XbhnV7J09Zjk0FT5HEkBjkXucWAXQWRsmEtUxmmxwh23yavrmDbCF6ZPxWiVB28+wnKIHePTRRpQPbQ==}
1113 | peerDependencies:
1114 | rollup: ^2.50.0
1115 | vite: ^2.3.0
1116 | webpack: 4 || 5
1117 | peerDependenciesMeta:
1118 | rollup:
1119 | optional: true
1120 | vite:
1121 | optional: true
1122 | webpack:
1123 | optional: true
1124 | dependencies:
1125 | vite: 2.7.13_sass@1.49.0
1126 | webpack-virtual-modules: 0.4.3
1127 | dev: true
1128 |
1129 | /vite/2.7.13_sass@1.49.0:
1130 | resolution: {integrity: sha512-Mq8et7f3aK0SgSxjDNfOAimZGW9XryfHRa/uV0jseQSilg+KhYDSoNb9h1rknOy6SuMkvNDLKCYAYYUMCE+IgQ==}
1131 | engines: {node: '>=12.2.0'}
1132 | hasBin: true
1133 | peerDependencies:
1134 | less: '*'
1135 | sass: '*'
1136 | stylus: '*'
1137 | peerDependenciesMeta:
1138 | less:
1139 | optional: true
1140 | sass:
1141 | optional: true
1142 | stylus:
1143 | optional: true
1144 | dependencies:
1145 | esbuild: 0.13.15
1146 | postcss: 8.4.5
1147 | resolve: 1.21.0
1148 | rollup: 2.64.0
1149 | sass: 1.49.0
1150 | optionalDependencies:
1151 | fsevents: 2.3.2
1152 | dev: true
1153 |
1154 | /webpack-virtual-modules/0.4.3:
1155 | resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==}
1156 | dev: true
1157 |
1158 | /which/2.0.2:
1159 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1160 | engines: {node: '>= 8'}
1161 | hasBin: true
1162 | dependencies:
1163 | isexe: 2.0.0
1164 | dev: true
1165 |
1166 | /wrappy/1.0.2:
1167 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
1168 | dev: true
1169 |
1170 | /yocto-queue/0.1.0:
1171 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1172 | engines: {node: '>=10'}
1173 | dev: true
1174 |
--------------------------------------------------------------------------------
/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [require('autoprefixer')],
3 | };
4 |
--------------------------------------------------------------------------------
/public/cursors/normal-select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PuruVJ/ios-web/f86ffded263d20e6e61e2ac2c57dc1ebbfdd5e9d/public/cursors/normal-select.png
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PuruVJ/ios-web/f86ffded263d20e6e61e2ac2c57dc1ebbfdd5e9d/public/favicon.ico
--------------------------------------------------------------------------------
/public/wallpapers/1-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PuruVJ/ios-web/f86ffded263d20e6e61e2ac2c57dc1ebbfdd5e9d/public/wallpapers/1-1.png
--------------------------------------------------------------------------------
/public/wallpapers/1-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PuruVJ/ios-web/f86ffded263d20e6e61e2ac2c57dc1ebbfdd5e9d/public/wallpapers/1-1.webp
--------------------------------------------------------------------------------
/public/wallpapers/1-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PuruVJ/ios-web/f86ffded263d20e6e61e2ac2c57dc1ebbfdd5e9d/public/wallpapers/1-2.png
--------------------------------------------------------------------------------
/public/wallpapers/1-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PuruVJ/ios-web/f86ffded263d20e6e61e2ac2c57dc1ebbfdd5e9d/public/wallpapers/1-2.webp
--------------------------------------------------------------------------------
/src/components/HomeScreen/HomeIndicator.svelte:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/components/HomeScreen/HomeScreen.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/components/HomeScreen/LockScreen.svelte:
--------------------------------------------------------------------------------
1 |
43 |
44 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | {formattedTime}
62 |
63 | {secondaryTime}
64 |
65 |
66 |
67 |
68 |
69 |
72 |
73 |
76 |
77 |
78 |
79 |
174 |
--------------------------------------------------------------------------------
/src/components/HomeScreen/Wallpaper.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
11 |
12 |
33 |
--------------------------------------------------------------------------------
/src/css/global.scss:
--------------------------------------------------------------------------------
1 | @import './reset';
2 | @import './themes';
3 |
4 | html,
5 | body {
6 | height: 100%;
7 | }
8 |
9 | body {
10 | display: flex;
11 | align-items: center;
12 | flex-direction: column;
13 |
14 | font-family: var(--system-font-family);
15 |
16 | overflow: hidden;
17 |
18 | background-color: black;
19 |
20 | -webkit-font-smoothing: antialiased;
21 | -moz-osx-font-smoothing: grayscale;
22 | }
23 |
24 | * {
25 | box-sizing: border-box;
26 |
27 | transition: background-color 150ms ease-in, background 150ms ease-in;
28 |
29 | user-select: none;
30 | }
31 |
32 | *:focus {
33 | outline: none;
34 | }
35 |
36 | *:focus-visible {
37 | outline: none;
38 |
39 | box-shadow: var(--system-focus-outline);
40 | }
41 |
42 | #app {
43 | position: relative;
44 |
45 | height: 100%;
46 | aspect-ratio: 220 / 422;
47 |
48 | background-color: white;
49 |
50 | isolation: isolate;
51 |
52 | &,
53 | * {
54 | cursor: var(--system-cursor-default), auto;
55 | }
56 | }
57 |
58 | button {
59 | color: inherit;
60 | text-decoration: none;
61 | vertical-align: middle;
62 | font-family: inherit;
63 |
64 | border: 0;
65 | border-radius: 0;
66 |
67 | outline: 0;
68 |
69 | margin: 0;
70 | padding: 0;
71 |
72 | display: inline-flex;
73 | align-items: center;
74 | justify-content: center;
75 |
76 | position: relative;
77 |
78 | user-select: none;
79 | appearance: none;
80 | cursor: var(--system-cursor-default), auto;
81 |
82 | background-color: transparent;
83 |
84 | -webkit-tap-highlight-color: transparent;
85 | }
86 |
--------------------------------------------------------------------------------
/src/css/reset.scss:
--------------------------------------------------------------------------------
1 | /*
2 | 1. Use a more-intuitive box-sizing model.
3 | */
4 | *,
5 | *::before,
6 | *::after {
7 | box-sizing: border-box;
8 | }
9 | /*
10 | 2. Remove default margin
11 | */
12 | * {
13 | margin: 0;
14 | }
15 | /*
16 | 3. Allow percentage-based heights in the application
17 | */
18 | html,
19 | body {
20 | height: 100%;
21 | }
22 | /*
23 | Typographic tweaks!
24 | 4. Add accessible line-height
25 | 5. Improve text rendering
26 | */
27 | body {
28 | line-height: 1.5;
29 | -webkit-font-smoothing: antialiased;
30 | }
31 | /*
32 | 6. Improve media defaults
33 | */
34 | img,
35 | picture,
36 | video,
37 | canvas,
38 | svg {
39 | display: block;
40 | max-width: 100%;
41 | }
42 | /*
43 | 7. Remove built-in form typography styles
44 | */
45 | input,
46 | button,
47 | textarea,
48 | select {
49 | font: inherit;
50 | }
51 | /*
52 | 8. Avoid text overflows
53 | */
54 | p,
55 | h1,
56 | h2,
57 | h3,
58 | h4,
59 | h5,
60 | h6 {
61 | overflow-wrap: break-word;
62 | }
63 | /*
64 | 9. Create a root stacking context
65 | */
66 | #root,
67 | #__next {
68 | isolation: isolate;
69 | }
70 |
--------------------------------------------------------------------------------
/src/css/themes.scss:
--------------------------------------------------------------------------------
1 | body,
2 | body[data-theme='light'] {
3 | --system-color-primary: hsl(211, 100%, 50%);
4 | --system-color-primary-hsl: 211, 100%, 50%;
5 | --system-color-primary-contrast: hsl(240, 24%, 100%);
6 | --system-color-primary-contrast-hsl: 240, 24%, 100%;
7 |
8 | --system-color-dark: hsl(240, 3%, 11%);
9 | --system-color-dark-hsl: 240, 3%, 11%;
10 | --system-color-dark-contrast: hsl(240, 24%, 100%);
11 | --system-color-dark-contrast-hsl: 240, 24%, 100%;
12 |
13 | --system-color-light: hsl(240, 24%, 100%);
14 | --system-color-light-hsl: 240, 24%, 100%;
15 | --system-color-light-contrast: hsl(0, 0%, 11%);
16 | --system-color-light-contrast-hsl: 0, 0%, 11%;
17 |
18 | --system-font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', 'Helvetica',
19 | 'Arial', sans-serif;
20 |
21 | --system-focus-outline: 0 0 0 3px hsla(var(--system-color-primary-hsl), 0.5);
22 |
23 | --system-color-grey-50: #fafafa;
24 | --system-color-grey-50-hsl: 0, 0%, 98%;
25 |
26 | --system-color-grey-100: #f5f5f5;
27 | --system-color-grey-100-hsl: 0, 0%, 96%;
28 |
29 | --system-color-grey-200: #eeeeee;
30 | --system-color-grey-200-hsl: 0, 0%, 93%;
31 |
32 | --system-color-grey-300: #e0e0e0;
33 | --system-color-grey-300-hsl: 0, 0%, 88%;
34 |
35 | --system-color-grey-400: #bdbdbd;
36 | --system-color-grey-400-hsl: 0, 0%, 74%;
37 |
38 | --system-color-grey-500: #9e9e9e;
39 | --system-color-grey-500-hsl: 0, 0%, 62%;
40 |
41 | --system-color-grey-600: #757575;
42 | --system-color-grey-600-hsl: 0, 0%, 46%;
43 |
44 | --system-color-grey-700: #616161;
45 | --system-color-grey-700-hsl: 0, 0%, 38%;
46 |
47 | --system-color-grey-800: #424242;
48 | --system-color-grey-800-hsl: 0, 0%, 26%;
49 |
50 | --system-color-grey-900: #212121;
51 | --system-color-grey-900-hsl: 0, 0%, 13%;
52 |
53 | --system-color-grey-A100: #d5d5d5;
54 | --system-color-grey-A100-hsl: 0, 0%, 84%;
55 |
56 | --system-color-grey-A200: #aaa;
57 | --system-color-grey-A200-hsl: 0, 0%, 67%;
58 |
59 | --system-color-grey-A400: #303030;
60 | --system-color-grey-A400-hsl: 0, 0%, 19%;
61 |
62 | --system-color-grey-A700: #616161;
63 | --system-color-grey-A700-hsl: 0, 0%, 38%;
64 |
65 | // Cursors
66 | --system-cursor-default: url('/cursors/normal-select.png');
67 | --system-cursor-pointer: url('/assets/cursors/link-select.svg');
68 | --system-cursor-text-select: url('/assets/cursors/text-select.svg');
69 | --system-cursor-help-select: url('/assets/cursors/help-select.svg');
70 |
71 | // the following two cursors are animated, but will be rendered as a static
72 | // image by the browser
73 | --system-cursor-busy: url('/assets/cursors/busy.webp');
74 | --system-cursor-working-in-bg: url('/assets/cursors/working-in-background.webp');
75 | }
76 |
77 | body.dark {
78 | /* // Primary */
79 | --system-color-primary: #0a85ff;
80 | --system-color-primary-hsl: 210, 100%, 52%;
81 | --system-color-primary-contrast: hsl(210, 92%, 5%);
82 | --system-color-primary-contrast-hsl: 210, 92%, 5%;
83 |
84 | /* // Dark */
85 | --system-color-dark: hsl(240, 24%, 100%);
86 | --system-color-dark-hsl: 240, 24%, 100%;
87 | --system-color-dark-contrast: hsl(0, 0%, 11%);
88 | --system-color-dark-contrast-hsl: 0, 0%, 11%;
89 |
90 | /* // Light */
91 | --system-color-light: hsl(240, 3%, 11%);
92 | --system-color-light-hsl: 240, 3%, 11%;
93 | --system-color-light-contrast: hsl(240, 24%, 100%);
94 | --system-color-light-contrast-hsl: 240, 24%, 100%;
95 | }
96 |
--------------------------------------------------------------------------------
/src/global.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import HomeScreen from './components/HomeScreen/HomeScreen.svelte';
2 |
3 | const app = new HomeScreen({
4 | target: document.getElementById('app'),
5 | });
6 |
7 | export default app;
8 |
--------------------------------------------------------------------------------
/src/stores/theme.store.ts:
--------------------------------------------------------------------------------
1 | import { writable } from 'svelte-local-storage-store';
2 |
3 | export type Theme = {
4 | scheme: 'light' | 'dark';
5 | };
6 |
7 | export const theme = writable('ios:theme-settings', {
8 | scheme: matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light',
9 | });
10 |
11 | theme.subscribe(({ scheme }) => {
12 | // Color scheme
13 | const { classList } = document.body;
14 | classList.remove('light', 'dark');
15 | classList.add(scheme);
16 | });
17 |
--------------------------------------------------------------------------------
/src/stores/time.store.ts:
--------------------------------------------------------------------------------
1 | import { readable } from 'svelte/store';
2 |
3 | export const createTimerStore = (duration: number) =>
4 | readable(new Date(), (set) => {
5 | const timer = setInterval(() => set(new Date()), duration);
6 |
7 | return () => clearInterval(timer);
8 | });
9 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | export const enum UIElevation {
2 | WALLPAPER = '-1',
3 | }
4 |
--------------------------------------------------------------------------------
/src/utils/throttle.ts:
--------------------------------------------------------------------------------
1 | type ThrottledFunction any> = (...args: Parameters) => ReturnType;
2 |
3 | export function throttle any>(
4 | func: T,
5 | limit: number
6 | ): ThrottledFunction {
7 | let inThrottle: boolean;
8 | let lastResult: ReturnType;
9 |
10 | return function (this: any): ReturnType {
11 | const args = arguments;
12 | const context = this;
13 |
14 | if (!inThrottle) {
15 | inThrottle = true;
16 |
17 | setTimeout(() => (inThrottle = false), limit);
18 |
19 | lastResult = func.apply(context, args);
20 | }
21 |
22 | return lastResult;
23 | };
24 | }
25 |
--------------------------------------------------------------------------------
/svelte.config.js:
--------------------------------------------------------------------------------
1 | import sveltePreprocess from 'svelte-preprocess'
2 |
3 | export default {
4 | // Consult https://github.com/sveltejs/svelte-preprocess
5 | // for more information about preprocessors
6 | preprocess: sveltePreprocess()
7 | }
8 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "moduleResolution": "node",
4 |
5 | /**
6 | To have warnings/errors of the Svelte compiler at the correct position,
7 | enable source maps by default.
8 | */
9 | "sourceMap": true,
10 | "lib": ["ESNext", "DOM"],
11 | "strict": false,
12 | "esModuleInterop": true,
13 | "noEmit": true,
14 | "skipLibCheck": true,
15 | "forceConsistentCasingInFileNames": true,
16 | "target": "esnext",
17 | "module": "esnext",
18 | "resolveJsonModule": true,
19 | // "baseUrl": "./src",
20 | "paths": {
21 | "🪆/*": ["./src/*"]
22 | },
23 | /**
24 | * Typecheck JS in `.svelte` and `.js` files by default.
25 | * Disable checkJs if you'd like to use dynamic types in JS.
26 | * Note that setting allowJs false does not prevent the use
27 | * of JS in `.svelte` files.
28 | */
29 | "allowJs": true,
30 | "checkJs": true
31 | },
32 | "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte", "./*.ts"],
33 | "exclude": ["node_modules/**/*"]
34 | }
35 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { svelte } from '@sveltejs/vite-plugin-svelte';
2 | import unpluginIcons from 'unplugin-icons/vite';
3 | import { defineConfig } from 'vite';
4 | import { prefetch } from './plugins/prefetch';
5 |
6 | export default defineConfig({
7 | plugins: [svelte(), prefetch(), unpluginIcons({ autoInstall: true, compiler: 'svelte' })],
8 | resolve: {
9 | alias: {
10 | '🪆': new URL('./src/', import.meta.url).pathname,
11 | },
12 | },
13 | build: {
14 | minify: 'terser',
15 | },
16 | });
17 |
--------------------------------------------------------------------------------