+ {/* logo */}
+
}>
-
+
+
+
-
-
+ {/* 3 icons */}
+
+
+
+
diff --git a/components/price-boxes.tsx b/components/price-boxes.tsx
new file mode 100644
index 000000000..946214a80
--- /dev/null
+++ b/components/price-boxes.tsx
@@ -0,0 +1,29 @@
+interface PriceBoxesProps {
+ products: { title: string; price: string }[];
+ totalWidth: number;
+}
+
+const PriceBoxes = ({ products, totalWidth }: PriceBoxesProps) => {
+ return (
+
+ {products.map(({ title, price }) => (
+
+ ))}
+
+ );
+};
+export default PriceBoxes;
+
+interface PriceBoxProps {
+ title: string;
+ price: string;
+}
+
+const PriceBox = ({ title, price }: PriceBoxProps) => {
+ return (
+
+ );
+};
diff --git a/package.json b/package.json
index 2fde3153b..b60749f52 100644
--- a/package.json
+++ b/package.json
@@ -28,10 +28,13 @@
"@types/node": "20.14.12",
"@types/react": "18.3.3",
"@types/react-dom": "18.3.0",
+ "@types/react-slick": "^0.23.13",
"autoprefixer": "^10.4.19",
"postcss": "^8.4.39",
"prettier": "3.3.3",
"prettier-plugin-tailwindcss": "^0.6.5",
+ "react-slick": "^0.30.2",
+ "swiper": "^11.1.12",
"tailwindcss": "^3.4.6",
"typescript": "5.5.4"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 70d56da0a..61283beff 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,6 +48,9 @@ importers:
'@types/react-dom':
specifier: 18.3.0
version: 18.3.0
+ '@types/react-slick':
+ specifier: ^0.23.13
+ version: 0.23.13
autoprefixer:
specifier: ^10.4.19
version: 10.4.19(postcss@8.4.39)
@@ -60,6 +63,12 @@ importers:
prettier-plugin-tailwindcss:
specifier: ^0.6.5
version: 0.6.5(prettier@3.3.3)
+ react-slick:
+ specifier: ^0.30.2
+ version: 0.30.2(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730)
+ swiper:
+ specifier: ^11.1.12
+ version: 11.1.12
tailwindcss:
specifier: ^3.4.6
version: 3.4.6
@@ -382,6 +391,9 @@ packages:
'@types/react-dom@18.3.0':
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
+ '@types/react-slick@0.23.13':
+ resolution: {integrity: sha512-bNZfDhe/L8t5OQzIyhrRhBr/61pfBcWaYJoq6UDqFtv5LMwfg4NsVDD2J8N01JqdAdxLjOt66OZEp6PX+dGs/A==}
+
'@types/react@18.3.3':
resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
@@ -452,6 +464,9 @@ packages:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
+ classnames@2.5.1:
+ resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
+
client-only@0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
@@ -511,6 +526,9 @@ packages:
emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ enquire.js@2.1.6:
+ resolution: {integrity: sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==}
+
escalade@3.1.2:
resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
engines: {node: '>=6'}
@@ -602,6 +620,9 @@ packages:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
+ json2mq@0.2.0:
+ resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==}
+
lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
@@ -616,6 +637,9 @@ packages:
lodash.castarray@4.4.0:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
+ lodash.debounce@4.0.8:
+ resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+
lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
@@ -832,6 +856,12 @@ packages:
peerDependencies:
react: 19.0.0-rc-3208e73e-20240730
+ react-slick@0.30.2:
+ resolution: {integrity: sha512-XvQJi7mRHuiU3b9irsqS9SGIgftIfdV5/tNcURTb5LdIokRA5kIIx3l4rlq2XYHfxcSntXapoRg/GxaVOM1yfg==}
+ peerDependencies:
+ react: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0
+
react@19.0.0-rc-3208e73e-20240730:
resolution: {integrity: sha512-4TmFOcgSfwM8w18vXLnEt8tb3ilO9a0GRJA9zQSYjZ5ie6g/zkxagRvZvZbEmhaNgDSF/PKmEdWmfBtlUBcjkA==}
engines: {node: '>=0.10.0'}
@@ -843,6 +873,9 @@ packages:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
+ resize-observer-polyfill@1.5.1:
+ resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
+
resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
@@ -895,6 +928,9 @@ packages:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
+ string-convert@0.2.1:
+ resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==}
+
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -933,6 +969,10 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ swiper@11.1.12:
+ resolution: {integrity: sha512-PUkCToYAZMB4kP7z+YfPnkMHOMwMO71g8vUhz2o5INGIgIMb6Sb0XiP6cEJFsiFTd7FRDn5XCbg+KVKPDZqXLw==}
+ engines: {node: '>= 4.7.0'}
+
tabbable@6.2.0:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
@@ -1261,6 +1301,10 @@ snapshots:
dependencies:
'@types/react': 18.3.3
+ '@types/react-slick@0.23.13':
+ dependencies:
+ '@types/react': 18.3.3
+
'@types/react@18.3.3':
dependencies:
'@types/prop-types': 15.7.12
@@ -1334,6 +1378,8 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ classnames@2.5.1: {}
+
client-only@0.0.1: {}
clsx@2.1.1: {}
@@ -1383,6 +1429,8 @@ snapshots:
emoji-regex@9.2.2: {}
+ enquire.js@2.1.6: {}
+
escalade@3.1.2: {}
fast-glob@3.3.2:
@@ -1471,6 +1519,10 @@ snapshots:
jiti@1.21.6: {}
+ json2mq@0.2.0:
+ dependencies:
+ string-convert: 0.2.1
+
lilconfig@2.1.0: {}
lilconfig@3.1.2: {}
@@ -1479,6 +1531,8 @@ snapshots:
lodash.castarray@4.4.0: {}
+ lodash.debounce@4.0.8: {}
+
lodash.isplainobject@4.0.6: {}
lodash.merge@4.6.2: {}
@@ -1623,6 +1677,16 @@ snapshots:
react: 19.0.0-rc-3208e73e-20240730
scheduler: 0.25.0-rc-3208e73e-20240730
+ react-slick@0.30.2(react-dom@19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730))(react@19.0.0-rc-3208e73e-20240730):
+ dependencies:
+ classnames: 2.5.1
+ enquire.js: 2.1.6
+ json2mq: 0.2.0
+ lodash.debounce: 4.0.8
+ react: 19.0.0-rc-3208e73e-20240730
+ react-dom: 19.0.0-rc-3208e73e-20240730(react@19.0.0-rc-3208e73e-20240730)
+ resize-observer-polyfill: 1.5.1
+
react@19.0.0-rc-3208e73e-20240730: {}
read-cache@1.0.0:
@@ -1633,6 +1697,8 @@ snapshots:
dependencies:
picomatch: 2.3.1
+ resize-observer-polyfill@1.5.1: {}
+
resolve@1.22.8:
dependencies:
is-core-module: 2.15.0
@@ -1699,6 +1765,8 @@ snapshots:
streamsearch@1.1.0: {}
+ string-convert@0.2.1: {}
+
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -1736,6 +1804,8 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ swiper@11.1.12: {}
+
tabbable@6.2.0: {}
tailwindcss@3.4.6:
diff --git a/tailwind.config.js b/tailwind.config.js
index eaf8db155..dfb6495a7 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -6,7 +6,11 @@ module.exports = {
theme: {
extend: {
fontFamily: {
- sans: ['var(--font-geist-sans)']
+ baskerville: ['Libre Baskerville', 'serif']
+ },
+ colors: {
+ lightText: '#FFF2DB',
+ mainBG: '#F8E8D1'
},
keyframes: {
fadeIn: {