瀏覽代碼

search by tags, and carousel interval

master
azri 4 週之前
父節點
當前提交
85aa284f1f

+ 215
- 55
package-lock.json 查看文件

@@ -11,8 +11,9 @@
11 11
         "@emotion/react": "^11.13.5",
12 12
         "@emotion/styled": "^11.13.5",
13 13
         "@fontsource/roboto": "^5.1.0",
14
-        "@mui/icons-material": "^6.1.10",
15
-        "@mui/material": "^6.1.10",
14
+        "@mui/icons-material": "^6.4.1",
15
+        "@mui/material": "^6.4.1",
16
+        "@mui/styles": "^6.4.1",
16 17
         "@reduxjs/toolkit": "^2.5.0",
17 18
         "@shopify/shopify-api": "^11.6.0",
18 19
         "@shopify/storefront-api-client": "^1.0.3",
@@ -3199,9 +3200,9 @@
3199 3200
       "license": "MIT"
3200 3201
     },
3201 3202
     "node_modules/@mui/core-downloads-tracker": {
3202
-      "version": "6.1.10",
3203
-      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.10.tgz",
3204
-      "integrity": "sha512-LY5wdiLCBDY7u+Od8UmFINZFGN/5ZU90fhAslf/ZtfP+5RhuY45f679pqYIxe0y54l6Gkv9PFOc8Cs10LDTBYg==",
3203
+      "version": "6.4.1",
3204
+      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.1.tgz",
3205
+      "integrity": "sha512-SfDLWMV5b5oXgDf3NTa2hCTPC1d2defhDH2WgFKmAiejC4mSfXYbyi+AFCLzpizauXhgBm8OaZy9BHKnrSpahQ==",
3205 3206
       "license": "MIT",
3206 3207
       "funding": {
3207 3208
         "type": "opencollective",
@@ -3209,9 +3210,9 @@
3209 3210
       }
3210 3211
     },
3211 3212
     "node_modules/@mui/icons-material": {
3212
-      "version": "6.1.10",
3213
-      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.10.tgz",
3214
-      "integrity": "sha512-G6P1BCSt6EQDcKca47KwvKjlqgOXFbp2I3oWiOlFgKYTANBH89yk7ttMQ5ysqNxSYAB+4TdM37MlPYp4+FkVrQ==",
3213
+      "version": "6.4.1",
3214
+      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.4.1.tgz",
3215
+      "integrity": "sha512-wsxFcUTQxt4s+7Bg4GgobqRjyaHLmZGNOs+HJpbwrwmLbT6mhIJxhpqsKzzWq9aDY8xIe7HCjhpH7XI5UD6teA==",
3215 3216
       "license": "MIT",
3216 3217
       "dependencies": {
3217 3218
         "@babel/runtime": "^7.26.0"
@@ -3224,7 +3225,7 @@
3224 3225
         "url": "https://opencollective.com/mui-org"
3225 3226
       },
3226 3227
       "peerDependencies": {
3227
-        "@mui/material": "^6.1.10",
3228
+        "@mui/material": "^6.4.1",
3228 3229
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
3229 3230
         "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
3230 3231
       },
@@ -3235,22 +3236,22 @@
3235 3236
       }
3236 3237
     },
3237 3238
     "node_modules/@mui/material": {
3238
-      "version": "6.1.10",
3239
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.10.tgz",
3240
-      "integrity": "sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==",
3239
+      "version": "6.4.1",
3240
+      "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.4.1.tgz",
3241
+      "integrity": "sha512-MFBfia6UiKxyoLeGkAh8M15bkeDmfnsUTMRJd/vTQue6YQ8AQ6lw9HqDthyYghzDEWIvZO/lQQzLrZE8XwNJLA==",
3241 3242
       "license": "MIT",
3242 3243
       "dependencies": {
3243 3244
         "@babel/runtime": "^7.26.0",
3244
-        "@mui/core-downloads-tracker": "^6.1.10",
3245
-        "@mui/system": "^6.1.10",
3246
-        "@mui/types": "^7.2.19",
3247
-        "@mui/utils": "^6.1.10",
3245
+        "@mui/core-downloads-tracker": "^6.4.1",
3246
+        "@mui/system": "^6.4.1",
3247
+        "@mui/types": "^7.2.21",
3248
+        "@mui/utils": "^6.4.1",
3248 3249
         "@popperjs/core": "^2.11.8",
3249
-        "@types/react-transition-group": "^4.4.11",
3250
+        "@types/react-transition-group": "^4.4.12",
3250 3251
         "clsx": "^2.1.1",
3251 3252
         "csstype": "^3.1.3",
3252 3253
         "prop-types": "^15.8.1",
3253
-        "react-is": "^18.3.1",
3254
+        "react-is": "^19.0.0",
3254 3255
         "react-transition-group": "^4.4.5"
3255 3256
       },
3256 3257
       "engines": {
@@ -3263,7 +3264,7 @@
3263 3264
       "peerDependencies": {
3264 3265
         "@emotion/react": "^11.5.0",
3265 3266
         "@emotion/styled": "^11.3.0",
3266
-        "@mui/material-pigment-css": "^6.1.10",
3267
+        "@mui/material-pigment-css": "^6.4.1",
3267 3268
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
3268 3269
         "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
3269 3270
         "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -3284,19 +3285,19 @@
3284 3285
       }
3285 3286
     },
3286 3287
     "node_modules/@mui/material/node_modules/react-is": {
3287
-      "version": "18.3.1",
3288
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
3289
-      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
3288
+      "version": "19.0.0",
3289
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
3290
+      "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
3290 3291
       "license": "MIT"
3291 3292
     },
3292 3293
     "node_modules/@mui/private-theming": {
3293
-      "version": "6.1.10",
3294
-      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.10.tgz",
3295
-      "integrity": "sha512-DqgsH0XFEweeG3rQfVkqTkeXcj/E76PGYWag8flbPdV8IYdMo+DfVdFlZK8JEjsaIVD2Eu1kJg972XnH5pfnBQ==",
3294
+      "version": "6.4.1",
3295
+      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.1.tgz",
3296
+      "integrity": "sha512-DcT7mwK89owwgcEuiE7w458te4CIjHbYWW6Kn6PiR6eLtxBsoBYphA968uqsQAOBQDpbYxvkuFLwhgk4bxoN/Q==",
3296 3297
       "license": "MIT",
3297 3298
       "dependencies": {
3298 3299
         "@babel/runtime": "^7.26.0",
3299
-        "@mui/utils": "^6.1.10",
3300
+        "@mui/utils": "^6.4.1",
3300 3301
         "prop-types": "^15.8.1"
3301 3302
       },
3302 3303
       "engines": {
@@ -3317,9 +3318,9 @@
3317 3318
       }
3318 3319
     },
3319 3320
     "node_modules/@mui/styled-engine": {
3320
-      "version": "6.1.10",
3321
-      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.10.tgz",
3322
-      "integrity": "sha512-+NV9adKZYhslJ270iPjf2yzdVJwav7CIaXcMlPSi1Xy1S/zRe5xFgZ6BEoMdmGRpr34lIahE8H1acXP2myrvRw==",
3321
+      "version": "6.4.0",
3322
+      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.4.0.tgz",
3323
+      "integrity": "sha512-ek/ZrDujrger12P6o4luQIfRd2IziH7jQod2WMbLqGE03Iy0zUwYmckRTVhRQTLPNccpD8KXGcALJF+uaUQlbg==",
3323 3324
       "license": "MIT",
3324 3325
       "dependencies": {
3325 3326
         "@babel/runtime": "^7.26.0",
@@ -3350,17 +3351,58 @@
3350 3351
         }
3351 3352
       }
3352 3353
     },
3354
+    "node_modules/@mui/styles": {
3355
+      "version": "6.4.1",
3356
+      "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-6.4.1.tgz",
3357
+      "integrity": "sha512-W0AAfCsjrqTWdWzxM9vFPWkSNPQppKDNxDXN2l527Fu6ITF1ZBmw97p85Q6IkyXuUPlF+Mr12ztKSq9e2kD4KA==",
3358
+      "license": "MIT",
3359
+      "dependencies": {
3360
+        "@babel/runtime": "^7.26.0",
3361
+        "@emotion/hash": "^0.9.2",
3362
+        "@mui/private-theming": "^6.4.1",
3363
+        "@mui/types": "^7.2.21",
3364
+        "@mui/utils": "^6.4.1",
3365
+        "clsx": "^2.1.1",
3366
+        "csstype": "^3.1.3",
3367
+        "hoist-non-react-statics": "^3.3.2",
3368
+        "jss": "^10.10.0",
3369
+        "jss-plugin-camel-case": "^10.10.0",
3370
+        "jss-plugin-default-unit": "^10.10.0",
3371
+        "jss-plugin-global": "^10.10.0",
3372
+        "jss-plugin-nested": "^10.10.0",
3373
+        "jss-plugin-props-sort": "^10.10.0",
3374
+        "jss-plugin-rule-value-function": "^10.10.0",
3375
+        "jss-plugin-vendor-prefixer": "^10.10.0",
3376
+        "prop-types": "^15.8.1"
3377
+      },
3378
+      "engines": {
3379
+        "node": ">=14.0.0"
3380
+      },
3381
+      "funding": {
3382
+        "type": "opencollective",
3383
+        "url": "https://opencollective.com/mui-org"
3384
+      },
3385
+      "peerDependencies": {
3386
+        "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
3387
+        "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
3388
+      },
3389
+      "peerDependenciesMeta": {
3390
+        "@types/react": {
3391
+          "optional": true
3392
+        }
3393
+      }
3394
+    },
3353 3395
     "node_modules/@mui/system": {
3354
-      "version": "6.1.10",
3355
-      "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.10.tgz",
3356
-      "integrity": "sha512-5YNIqxETR23SIkyP7MY2fFnXmplX/M4wNi2R+10AVRd3Ub+NLctWY/Vs5vq1oAMF0eSDLhRTGUjaUe+IGSfWqg==",
3396
+      "version": "6.4.1",
3397
+      "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.4.1.tgz",
3398
+      "integrity": "sha512-rgQzgcsHCTtzF9MZ+sL0tOhf2ZBLazpjrujClcb4Siju5lTrK0xX4PsiropActzCemNfM+mOu+0jezAVnfRK8g==",
3357 3399
       "license": "MIT",
3358 3400
       "dependencies": {
3359 3401
         "@babel/runtime": "^7.26.0",
3360
-        "@mui/private-theming": "^6.1.10",
3361
-        "@mui/styled-engine": "^6.1.10",
3362
-        "@mui/types": "^7.2.19",
3363
-        "@mui/utils": "^6.1.10",
3402
+        "@mui/private-theming": "^6.4.1",
3403
+        "@mui/styled-engine": "^6.4.0",
3404
+        "@mui/types": "^7.2.21",
3405
+        "@mui/utils": "^6.4.1",
3364 3406
         "clsx": "^2.1.1",
3365 3407
         "csstype": "^3.1.3",
3366 3408
         "prop-types": "^15.8.1"
@@ -3391,9 +3433,9 @@
3391 3433
       }
3392 3434
     },
3393 3435
     "node_modules/@mui/types": {
3394
-      "version": "7.2.19",
3395
-      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz",
3396
-      "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==",
3436
+      "version": "7.2.21",
3437
+      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.21.tgz",
3438
+      "integrity": "sha512-6HstngiUxNqLU+/DPqlUJDIPbzUBxIVHb1MmXP0eTWDIROiCR2viugXpEif0PPe2mLqqakPzzRClWAnK+8UJww==",
3397 3439
       "license": "MIT",
3398 3440
       "peerDependencies": {
3399 3441
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -3405,17 +3447,17 @@
3405 3447
       }
3406 3448
     },
3407 3449
     "node_modules/@mui/utils": {
3408
-      "version": "6.1.10",
3409
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.10.tgz",
3410
-      "integrity": "sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==",
3450
+      "version": "6.4.1",
3451
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.1.tgz",
3452
+      "integrity": "sha512-iQUDUeYh87SvR4lVojaRaYnQix8BbRV51MxaV6MBmqthecQoxwSbS5e2wnbDJUeFxY2ppV505CiqPLtd0OWkqw==",
3411 3453
       "license": "MIT",
3412 3454
       "dependencies": {
3413 3455
         "@babel/runtime": "^7.26.0",
3414
-        "@mui/types": "^7.2.19",
3415
-        "@types/prop-types": "^15.7.13",
3456
+        "@mui/types": "^7.2.21",
3457
+        "@types/prop-types": "^15.7.14",
3416 3458
         "clsx": "^2.1.1",
3417 3459
         "prop-types": "^15.8.1",
3418
-        "react-is": "^18.3.1"
3460
+        "react-is": "^19.0.0"
3419 3461
       },
3420 3462
       "engines": {
3421 3463
         "node": ">=14.0.0"
@@ -3435,9 +3477,9 @@
3435 3477
       }
3436 3478
     },
3437 3479
     "node_modules/@mui/utils/node_modules/react-is": {
3438
-      "version": "18.3.1",
3439
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
3440
-      "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
3480
+      "version": "19.0.0",
3481
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
3482
+      "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
3441 3483
       "license": "MIT"
3442 3484
     },
3443 3485
     "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
@@ -4660,9 +4702,9 @@
4660 4702
       "license": "MIT"
4661 4703
     },
4662 4704
     "node_modules/@types/prop-types": {
4663
-      "version": "15.7.13",
4664
-      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
4665
-      "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
4705
+      "version": "15.7.14",
4706
+      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
4707
+      "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
4666 4708
       "license": "MIT"
4667 4709
     },
4668 4710
     "node_modules/@types/q": {
@@ -4703,11 +4745,11 @@
4703 4745
       }
4704 4746
     },
4705 4747
     "node_modules/@types/react-transition-group": {
4706
-      "version": "4.4.11",
4707
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
4708
-      "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==",
4748
+      "version": "4.4.12",
4749
+      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz",
4750
+      "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==",
4709 4751
       "license": "MIT",
4710
-      "dependencies": {
4752
+      "peerDependencies": {
4711 4753
         "@types/react": "*"
4712 4754
       }
4713 4755
     },
@@ -7129,6 +7171,16 @@
7129 7171
         "node": ">=0.10.0"
7130 7172
       }
7131 7173
     },
7174
+    "node_modules/css-vendor": {
7175
+      "version": "2.0.8",
7176
+      "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
7177
+      "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
7178
+      "license": "MIT",
7179
+      "dependencies": {
7180
+        "@babel/runtime": "^7.8.3",
7181
+        "is-in-browser": "^1.0.2"
7182
+      }
7183
+    },
7132 7184
     "node_modules/css-what": {
7133 7185
       "version": "6.1.0",
7134 7186
       "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@@ -10230,6 +10282,12 @@
10230 10282
         "node": ">=10.17.0"
10231 10283
       }
10232 10284
     },
10285
+    "node_modules/hyphenate-style-name": {
10286
+      "version": "1.1.0",
10287
+      "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz",
10288
+      "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==",
10289
+      "license": "BSD-3-Clause"
10290
+    },
10233 10291
     "node_modules/iconv-lite": {
10234 10292
       "version": "0.6.3",
10235 10293
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -10636,6 +10694,12 @@
10636 10694
         "node": ">=0.10.0"
10637 10695
       }
10638 10696
     },
10697
+    "node_modules/is-in-browser": {
10698
+      "version": "1.1.3",
10699
+      "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
10700
+      "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==",
10701
+      "license": "MIT"
10702
+    },
10639 10703
     "node_modules/is-map": {
10640 10704
       "version": "2.0.3",
10641 10705
       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
@@ -12177,6 +12241,96 @@
12177 12241
         "npm": ">=6"
12178 12242
       }
12179 12243
     },
12244
+    "node_modules/jss": {
12245
+      "version": "10.10.0",
12246
+      "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz",
12247
+      "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==",
12248
+      "license": "MIT",
12249
+      "dependencies": {
12250
+        "@babel/runtime": "^7.3.1",
12251
+        "csstype": "^3.0.2",
12252
+        "is-in-browser": "^1.1.3",
12253
+        "tiny-warning": "^1.0.2"
12254
+      },
12255
+      "funding": {
12256
+        "type": "opencollective",
12257
+        "url": "https://opencollective.com/jss"
12258
+      }
12259
+    },
12260
+    "node_modules/jss-plugin-camel-case": {
12261
+      "version": "10.10.0",
12262
+      "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz",
12263
+      "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==",
12264
+      "license": "MIT",
12265
+      "dependencies": {
12266
+        "@babel/runtime": "^7.3.1",
12267
+        "hyphenate-style-name": "^1.0.3",
12268
+        "jss": "10.10.0"
12269
+      }
12270
+    },
12271
+    "node_modules/jss-plugin-default-unit": {
12272
+      "version": "10.10.0",
12273
+      "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz",
12274
+      "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==",
12275
+      "license": "MIT",
12276
+      "dependencies": {
12277
+        "@babel/runtime": "^7.3.1",
12278
+        "jss": "10.10.0"
12279
+      }
12280
+    },
12281
+    "node_modules/jss-plugin-global": {
12282
+      "version": "10.10.0",
12283
+      "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz",
12284
+      "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==",
12285
+      "license": "MIT",
12286
+      "dependencies": {
12287
+        "@babel/runtime": "^7.3.1",
12288
+        "jss": "10.10.0"
12289
+      }
12290
+    },
12291
+    "node_modules/jss-plugin-nested": {
12292
+      "version": "10.10.0",
12293
+      "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz",
12294
+      "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==",
12295
+      "license": "MIT",
12296
+      "dependencies": {
12297
+        "@babel/runtime": "^7.3.1",
12298
+        "jss": "10.10.0",
12299
+        "tiny-warning": "^1.0.2"
12300
+      }
12301
+    },
12302
+    "node_modules/jss-plugin-props-sort": {
12303
+      "version": "10.10.0",
12304
+      "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz",
12305
+      "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==",
12306
+      "license": "MIT",
12307
+      "dependencies": {
12308
+        "@babel/runtime": "^7.3.1",
12309
+        "jss": "10.10.0"
12310
+      }
12311
+    },
12312
+    "node_modules/jss-plugin-rule-value-function": {
12313
+      "version": "10.10.0",
12314
+      "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz",
12315
+      "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==",
12316
+      "license": "MIT",
12317
+      "dependencies": {
12318
+        "@babel/runtime": "^7.3.1",
12319
+        "jss": "10.10.0",
12320
+        "tiny-warning": "^1.0.2"
12321
+      }
12322
+    },
12323
+    "node_modules/jss-plugin-vendor-prefixer": {
12324
+      "version": "10.10.0",
12325
+      "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz",
12326
+      "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==",
12327
+      "license": "MIT",
12328
+      "dependencies": {
12329
+        "@babel/runtime": "^7.3.1",
12330
+        "css-vendor": "^2.0.8",
12331
+        "jss": "10.10.0"
12332
+      }
12333
+    },
12180 12334
     "node_modules/jsx-ast-utils": {
12181 12335
       "version": "3.3.5",
12182 12336
       "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
@@ -17834,6 +17988,12 @@
17834 17988
       "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
17835 17989
       "license": "MIT"
17836 17990
     },
17991
+    "node_modules/tiny-warning": {
17992
+      "version": "1.0.3",
17993
+      "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
17994
+      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
17995
+      "license": "MIT"
17996
+    },
17837 17997
     "node_modules/tmpl": {
17838 17998
       "version": "1.0.5",
17839 17999
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",

+ 3
- 2
package.json 查看文件

@@ -6,8 +6,9 @@
6 6
     "@emotion/react": "^11.13.5",
7 7
     "@emotion/styled": "^11.13.5",
8 8
     "@fontsource/roboto": "^5.1.0",
9
-    "@mui/icons-material": "^6.1.10",
10
-    "@mui/material": "^6.1.10",
9
+    "@mui/icons-material": "^6.4.1",
10
+    "@mui/material": "^6.4.1",
11
+    "@mui/styles": "^6.4.1",
11 12
     "@reduxjs/toolkit": "^2.5.0",
12 13
     "@shopify/shopify-api": "^11.6.0",
13 14
     "@shopify/storefront-api-client": "^1.0.3",

+ 0
- 107
src/components/Carousel/Carousel.jsx 查看文件

@@ -1,107 +0,0 @@
1
-import React from "react";
2
-import { Box, IconButton } from "@mui/material";
3
-import ArrowBackIosIcon from "@mui/icons-material/ArrowBackIos";
4
-import ArrowForwardIosIcon from "@mui/icons-material/ArrowForwardIos";
5
-import mainImage1 from "../../assets/images/MAINHEADER-01.webp";
6
-import mainImage2 from "../../assets/images/MAINHEADER-02.webp";
7
-import mainImageMobile from "../../assets/images/mainwallpaper-mobile.jpg";
8
-
9
-const Carousel = () => {
10
-  const items = [
11
-    { img_src: mainImage1, alt_name: "Image 1" },
12
-    { img_src: mainImage2, alt_name: "Image 2" },
13
-  ];
14
-
15
-
16
-  const activeItems = items;
17
-  const [currentIndex, setCurrentIndex] = React.useState(0);
18
-
19
-  const handlePrev = () => {
20
-    setCurrentIndex((prevIndex) =>
21
-      prevIndex === 0 ? activeItems.length - 1 : prevIndex - 1
22
-    );
23
-  };
24
-
25
-  const handleNext = () => {
26
-    setCurrentIndex((prevIndex) =>
27
-      prevIndex === activeItems.length - 1 ? 0 : prevIndex + 1
28
-    );
29
-  };
30
-
31
-  return (
32
-    <Box
33
-      sx={{
34
-        position: "relative",
35
-        display: "flex",
36
-        alignItems: "center",
37
-        justifyContent: "center",
38
-        width: "100%",
39
-        overflow: "hidden",
40
-      }}
41
-    >
42
-      {/* Overlay Filter */}
43
-      <Box
44
-        sx={{
45
-          position: "absolute",
46
-          top: 0,
47
-          right: 0,
48
-          backgroundColor: "rgba(0, 0, 0, 0.1)",
49
-          width: "100%",
50
-          height: "100%",
51
-          zIndex: 1,
52
-        }}
53
-      />
54
-
55
-      {/* Render the Current Image */}
56
-      <Box
57
-        key={currentIndex}
58
-        component="img"
59
-        src={activeItems[currentIndex].img_src}
60
-        alt={activeItems[currentIndex].alt_name}
61
-        sx={{
62
-          width: "100%",
63
-          objectFit: "cover",
64
-          transition: "opacity 0.5s ease-in-out",
65
-          zIndex: 0,
66
-        }}
67
-      />
68
-
69
-      {/* Navigation Buttons */}
70
-      <IconButton
71
-        onClick={handlePrev}
72
-        sx={{
73
-          position: "absolute",
74
-          left: "10px",
75
-          top: "50%",
76
-          transform: "translateY(-50%)",
77
-          zIndex: 10,
78
-          color: "white",
79
-          backgroundColor: "rgba(0, 0, 0, 0.5)",
80
-          "&:hover": { backgroundColor: "rgba(0, 0, 0, 0.7)" },
81
-        }}
82
-        aria-label="Previous Slide"
83
-      >
84
-        <ArrowBackIosIcon />
85
-      </IconButton>
86
-
87
-      <IconButton
88
-        onClick={handleNext}
89
-        sx={{
90
-          position: "absolute",
91
-          right: "10px",
92
-          top: "50%",
93
-          transform: "translateY(-50%)",
94
-          zIndex: 10,
95
-          color: "white",
96
-          backgroundColor: "rgba(0, 0, 0, 0.5)",
97
-          "&:hover": { backgroundColor: "rgba(0, 0, 0, 0.7)" },
98
-        }}
99
-        aria-label="Next Slide"
100
-      >
101
-        <ArrowForwardIosIcon />
102
-      </IconButton>
103
-    </Box>
104
-  );
105
-};
106
-
107
-export default Carousel;

+ 0
- 1
src/components/Carousel/index.js 查看文件

@@ -1 +0,0 @@
1
-export { default } from "./Carousel"

+ 41
- 0
src/components/CarouselContainer/CarouselContainer.jsx 查看文件

@@ -0,0 +1,41 @@
1
+import React from "react";
2
+import { Box, IconButton } from "@mui/material";
3
+import ArrowBackIosIcon from "@mui/icons-material/ArrowBackIos";
4
+import ArrowForwardIosIcon from "@mui/icons-material/ArrowForwardIos";
5
+import mainImage1 from "../../assets/images/MAINHEADER-01.webp";
6
+import mainImage2 from "../../assets/images/MAINHEADER-02.webp";
7
+import mainImageMobile from "../../assets/images/mainwallpaper-mobile.jpg";
8
+import Carousel from 'react-material-ui-carousel'
9
+
10
+const CarouselContainer = () => {
11
+
12
+  const items = [
13
+    { img_src: mainImage1, alt_name: "Image 1" },
14
+    { img_src: mainImage2, alt_name: "Image 2" },
15
+  ];
16
+
17
+  return (
18
+
19
+    <Carousel indicators={false} autoPlay={true} interval={3000}>
20
+      {items?.map(({ img_src, alt_name }, index) => (
21
+        <Box
22
+          key={index}
23
+          component="img"
24
+          src={img_src}
25
+          alt={alt_name}
26
+          sx={{
27
+            width: "100%",
28
+            objectFit: "cover",
29
+            transition: "opacity 0.5s ease-in-out",
30
+            zIndex: 0,
31
+          }}
32
+        />
33
+      ))}
34
+
35
+    </Carousel>
36
+
37
+
38
+  );
39
+};
40
+
41
+export default CarouselContainer;

+ 1
- 0
src/components/CarouselContainer/index.js 查看文件

@@ -0,0 +1 @@
1
+export { default } from "./CarouselContainer"

+ 2
- 2
src/pages/Home.jsx 查看文件

@@ -1,7 +1,7 @@
1 1
 import React from 'react'
2 2
 import { Box, Typography } from '@mui/material'
3 3
 import Grid from '@mui/material/Grid2';
4
-import Carousel from '../components/Carousel'
4
+import CarouselContainer from '../components/CarouselContainer'
5 5
 import ProductSelected from '../components/ProductSelected'
6 6
 import SocialMedia from '../components/SocialMedia'
7 7
 import Feature from '../components/Feature'
@@ -22,7 +22,7 @@ const Home = () => {
22 22
 
23 23
   return (
24 24
     <>
25
-      <Carousel />
25
+      <CarouselContainer />
26 26
       <Box sx={{
27 27
         px: {
28 28
           xs: 2,

Loading…
取消
儲存