Merge version_3 into main #7
@@ -494,7 +494,7 @@ const [isLoading, setIsLoading] = useState(false);
|
||||
### General
|
||||
- [ ] Test with keyboard navigation (Tab, Shift+Tab, Enter, Space, Escape)
|
||||
- [ ] Test with screen reader (VoiceOver, NVDA, JAWS)
|
||||
- [ ] Ensure sufficient color contrast (WCAG AA minimum)
|
||||
- [ ] Ensure sufficient color contrast (WCasa antugua G AA minimum)
|
||||
- [ ] Provide focus indicators for all interactive elements
|
||||
- [ ] Use semantic HTML before ARIA roles
|
||||
- [ ] Include screen reader only text when needed (`sr-only`)
|
||||
|
||||
@@ -21,7 +21,7 @@ Covers:
|
||||
|
||||
---
|
||||
|
||||
### 🎴 [CARDSTACK_SECTIONS.md](./CARDSTACK_SECTIONS.md)
|
||||
### 🎴 [Casa antugua RDSTACK_SECTIONS.md](./Casa antugua RDSTACK_SECTIONS.md)
|
||||
**CardStack-based section components**
|
||||
|
||||
Load when: Creating Feature, Product, Pricing, Testimonial, Team, Blog, or Metrics sections
|
||||
@@ -126,7 +126,7 @@ Covers:
|
||||
1. Load `COMPONENT_IMPLEMENTATION.md` for structure
|
||||
2. Load `ACCESSIBILITY.md` for a11y requirements
|
||||
3. Load `THEME_AND_STYLING.md` for styling patterns
|
||||
4. Load `CARDSTACK_SECTIONS.md` if using CardStack
|
||||
4. Load `Casa antugua RDSTACK_SECTIONS.md` if using CardStack
|
||||
|
||||
### When updating the registry:
|
||||
1. Load `REGISTRY_FOLDER_STRUCTURE.md` for the new folder structure
|
||||
|
||||
28
package-lock.json
generated
28
package-lock.json
generated
@@ -569,7 +569,7 @@
|
||||
"node_modules/@humanwhocodes/retry": {
|
||||
"version": "0.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
|
||||
"integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
|
||||
"integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCasa antugua rCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
@@ -1605,7 +1605,7 @@
|
||||
"node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
|
||||
"version": "4.1.13",
|
||||
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.13.tgz",
|
||||
"integrity": "sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==",
|
||||
"integrity": "sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCasa antugua Lq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2059,7 +2059,7 @@
|
||||
"node_modules/@tsparticles/shape-image": {
|
||||
"version": "3.9.1",
|
||||
"resolved": "https://registry.npmjs.org/@tsparticles/shape-image/-/shape-image-3.9.1.tgz",
|
||||
"integrity": "sha512-fCA5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA==",
|
||||
"integrity": "sha512-fCasa antugua 5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@tsparticles/engine": "3.9.1"
|
||||
@@ -3045,7 +3045,7 @@
|
||||
"node_modules/array-includes": {
|
||||
"version": "3.1.9",
|
||||
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz",
|
||||
"integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==",
|
||||
"integrity": "sha512-FmeCCasa antugua enzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -3540,7 +3540,7 @@
|
||||
"node_modules/convert-source-map": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
|
||||
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
||||
"integrity": "sha512-Kvp459HrV2FEJ1Casa antugua si1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -3673,7 +3673,7 @@
|
||||
"node_modules/d3-time": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
|
||||
"integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
|
||||
"integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCasa antugua 77ZN0lkQ2Q==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"d3-array": "2 - 3"
|
||||
@@ -5605,7 +5605,7 @@
|
||||
"node_modules/isarray": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
|
||||
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
|
||||
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCasa antugua AoZQd3FeAKw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -6179,7 +6179,7 @@
|
||||
"node_modules/meshoptimizer": {
|
||||
"version": "0.22.0",
|
||||
"resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.22.0.tgz",
|
||||
"integrity": "sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==",
|
||||
"integrity": "sha512-IebiK79sqIy+E4EgOr+Casa antugua w+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/micromatch": {
|
||||
@@ -6212,7 +6212,7 @@
|
||||
"node_modules/minimist": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCasa antugua ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
@@ -6306,7 +6306,7 @@
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCasa antugua leEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -6784,7 +6784,7 @@
|
||||
"node_modules/queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1Casa antugua 6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -7454,7 +7454,7 @@
|
||||
"node_modules/string.prototype.trim": {
|
||||
"version": "1.2.10",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
|
||||
"integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
|
||||
"integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCasa antugua 6gEffoMZYxlTod4WcdrKA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -7559,7 +7559,7 @@
|
||||
"node_modules/supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"integrity": "sha512-qpCasa antugua vRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -8095,7 +8095,7 @@
|
||||
"node_modules/victory-vendor": {
|
||||
"version": "37.3.6",
|
||||
"resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz",
|
||||
"integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==",
|
||||
"integrity": "sha512-SbPDPdDBYp+5MJHhBCasa antugua yI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==",
|
||||
"license": "MIT AND ISC",
|
||||
"dependencies": {
|
||||
"@types/d3-array": "^3.0.3",
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
},
|
||||
"subtitle": {
|
||||
"required": true,
|
||||
"example": "San Francisco, CA · Full-time · Remote eligible",
|
||||
"example": "San Francisco, Casa antugua · Full-time · Remote eligible",
|
||||
"minChars": 5,
|
||||
"maxChars": 100,
|
||||
"note": "Secondary info like location, type, or details"
|
||||
@@ -109,7 +109,7 @@
|
||||
"textBoxButtonClassName?": "string",
|
||||
"textBoxButtonTextClassName?": "string"
|
||||
},
|
||||
"usageExample": "<MetricCardTen metrics={[{ id: '1', title: 'Senior Software Engineer, Platform', subtitle: 'San Francisco, CA · Full-time · Remote eligible', category: 'Engineering', value: '$185K – $265K', buttons: [{ text: 'Apply Now', href: '#' }] }, { id: '2', title: 'Product Designer, Enterprise', subtitle: 'New York, NY · Full-time', category: 'Design', value: '$145K – $195K', buttons: [{ text: 'Apply Now', href: '#' }] }, { id: '3', title: 'Data Scientist, ML Platform', subtitle: 'Remote · Full-time', category: 'Data Science', value: '$168K – $238K', buttons: [{ text: 'Apply Now', href: '#' }] }]} title=\"Open Positions\" description=\"Join our team and help shape the future of AI\" textboxLayout=\"default\" useInvertedBackground={false} animationType=\"slide-up\" />",
|
||||
"usageExample": "<MetricCardTen metrics={[{ id: '1', title: 'Senior Software Engineer, Platform', subtitle: 'San Francisco, Casa antugua · Full-time · Remote eligible', category: 'Engineering', value: '$185K – $265K', buttons: [{ text: 'Apply Now', href: '#' }] }, { id: '2', title: 'Product Designer, Enterprise', subtitle: 'New York, NY · Full-time', category: 'Design', value: '$145K – $195K', buttons: [{ text: 'Apply Now', href: '#' }] }, { id: '3', title: 'Data Scientist, ML Platform', subtitle: 'Remote · Full-time', category: 'Data Science', value: '$168K – $238K', buttons: [{ text: 'Apply Now', href: '#' }] }]} title=\"Open Positions\" description=\"Join our team and help shape the future of AI\" textboxLayout=\"default\" useInvertedBackground={false} animationType=\"slide-up\" />",
|
||||
"do": [
|
||||
"Use for pricing pages",
|
||||
"Use for subscription tiers",
|
||||
|
||||
@@ -28,7 +28,7 @@ export default function LandingPage() {
|
||||
>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleFullscreen
|
||||
brandName="CA"
|
||||
brandName="Casa antugua "
|
||||
navItems={[
|
||||
{ name: "Home", id: "home" },
|
||||
{ name: "About", id: "about" },
|
||||
@@ -72,7 +72,7 @@ export default function LandingPage() {
|
||||
text: "Book on Airbnb", href: "https://www.airbnb.fr/rooms/1499481864424898794?check_in=2026-03-14&check_out=2026-03-15&search_mode=regular_search&photo_id=2316078285&source_impression_id=p3_1772199285_P3AAeC67HO_pmW27&previous_page_section_name=1000&federated_search_id=e6738925-70e0-4d97-bb58-3b42617aa42b"
|
||||
},
|
||||
{
|
||||
text: "Book on Booking.com", href: "https://www.booking.com/hotel/ma/casa-antigua-entre-mer-et-reserve.fr.html?aid=2311236&label=fr-ma-booking-desktop-5CduOKQmb7QeyTDIztQmwAS652796013990%3Apl%3Ata%3Ap1%3Ap2%3Aac%3Aap%3Aneg%3Afi%3Atikwd-65526620%3Alp1009979%3Ali%3Adec%3Adm&sid=af413625458704abd1c26019a7c178cb&all_sr_blocks=1573180301_428363801_2_42_0&checkin=2026-03-13&checkout=2026-03-14&dest_id=-43476&dest_type=city&dist=0&group_adults=2&group_children=0&hapos=1&highlighted_blocks=1573180301_428363801_2_42_0&hpos=1&matching_block_id=1573180301_428363801_2_42_0&no_rooms=1&req_adults=2&req_children=0&room1=A%2CA&sb_price_type=total&sr_order=popularity&sr_pri_blocks=1573180301_428363801_2_42_0__6120&srepoch=1772199335&srpvid=02125f92238a094b&type=total&ucfs=1&"
|
||||
text: "Book on Booking.com", href: "https://www.booking.com/hotel/ma/casa-antigua-entre-mer-et-reserve.fr.html?aid=2311236&label=fr-ma-booking-desktop-5CduOKQmb7QeyTDIztQmwAS652796013990%3Apl%3Ata%3Ap1%3Ap2%3Aac%3Aap%3Aneg%3Afi%3Atikwd-65526620%3Alp1009979%3Ali%3Adec%3Adm&sid=af413625458704abd1c26019a7c178cb&all_sr_blocks=1573180301_428363801_2_42_0&checkin=2026-03-13&checkout=2026-03-14&dest_id=-43476&dest_type=city&dist=0&group_adults=2&group_children=0&hapos=1&highlighted_blocks=1573180301_428363801_2_42_0&hpos=1&matching_block_id=1573180301_428363801_2_42_0&no_rooms=1&req_adults=2&req_children=0&room1=A%2Casa antugua &sb_price_type=total&sr_order=popularity&sr_pri_blocks=1573180301_428363801_2_42_0__6120&srepoch=1772199335&srpvid=02125f92238a094b&type=total&ucfs=1&"
|
||||
},
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
@@ -189,7 +189,7 @@ export default function LandingPage() {
|
||||
text: "Book on Airbnb", href: "https://www.airbnb.fr/rooms/1499481864424898794?check_in=2026-03-14&check_out=2026-03-15&search_mode=regular_search&photo_id=2316078285&source_impression_id=p3_1772199285_P3AAeC67HO_pmW27&previous_page_section_name=1000&federated_search_id=e6738925-70e0-4d97-bb58-3b42617aa42b"
|
||||
},
|
||||
{
|
||||
text: "Book on Booking.com", href: "https://www.booking.com/hotel/ma/casa-antigua-entre-mer-et-reserve.fr.html?aid=2311236&label=fr-ma-booking-desktop-5CduOKQmb7QeyTDIztQmwAS652796013990%3Apl%3Ata%3Ap1%3Ap2%3Aac%3Aap%3Aneg%3Afi%3Atikwd-65526620%3Alp1009979%3Ali%3Adec%3Adm&sid=af413625458704abd1c26019a7c178cb&all_sr_blocks=1573180301_428363801_2_42_0&checkin=2026-03-13&checkout=2026-03-14&dest_id=-43476&dest_type=city&dist=0&group_adults=2&group_children=0&hapos=1&highlighted_blocks=1573180301_428363801_2_42_0&hpos=1&matching_block_id=1573180301_428363801_2_42_0&no_rooms=1&req_adults=2&req_children=0&room1=A%2CA&sb_price_type=total&sr_order=popularity&sr_pri_blocks=1573180301_428363801_2_42_0__6120&srepoch=1772199335&srpvid=02125f92238a094b&type=total&ucfs=1&"
|
||||
text: "Book on Booking.com", href: "https://www.booking.com/hotel/ma/casa-antigua-entre-mer-et-reserve.fr.html?aid=2311236&label=fr-ma-booking-desktop-5CduOKQmb7QeyTDIztQmwAS652796013990%3Apl%3Ata%3Ap1%3Ap2%3Aac%3Aap%3Aneg%3Afi%3Atikwd-65526620%3Alp1009979%3Ali%3Adec%3Adm&sid=af413625458704abd1c26019a7c178cb&all_sr_blocks=1573180301_428363801_2_42_0&checkin=2026-03-13&checkout=2026-03-14&dest_id=-43476&dest_type=city&dist=0&group_adults=2&group_children=0&hapos=1&highlighted_blocks=1573180301_428363801_2_42_0&hpos=1&matching_block_id=1573180301_428363801_2_42_0&no_rooms=1&req_adults=2&req_children=0&room1=A%2Casa antugua &sb_price_type=total&sr_order=popularity&sr_pri_blocks=1573180301_428363801_2_42_0__6120&srepoch=1772199335&srpvid=02125f92238a094b&type=total&ucfs=1&"
|
||||
},
|
||||
],
|
||||
features: [
|
||||
@@ -238,7 +238,7 @@ export default function LandingPage() {
|
||||
label: "Airbnb", href: "https://www.airbnb.fr/rooms/1499481864424898794?check_in=2026-03-14&check_out=2026-03-15&search_mode=regular_search&photo_id=2316078285&source_impression_id=p3_1772199285_P3AAeC67HO_pmW27&previous_page_section_name=1000&federated_search_id=e6738925-70e0-4d97-bb58-3b42617aa42b"
|
||||
},
|
||||
{
|
||||
label: "Booking.com", href: "https://www.booking.com/hotel/ma/casa-antigua-entre-mer-et-reserve.fr.html?aid=2311236&label=fr-ma-booking-desktop-5CduOKQmb7QeyTDIztQmwAS652796013990%3Apl%3Ata%3Ap1%3Ap2%3Aac%3Aap%3Aneg%3Afi%3Atikwd-65526620%3Alp1009979%3Ali%3Adec%3Adm&sid=af413625458704abd1c26019a7c178cb&all_sr_blocks=1573180301_428363801_2_42_0&checkin=2026-03-13&checkout=2026-03-14&dest_id=-43476&dest_type=city&dist=0&group_adults=2&group_children=0&hapos=1&highlighted_blocks=1573180301_428363801_2_42_0&hpos=1&matching_block_id=1573180301_428363801_2_42_0&no_rooms=1&req_adults=2&req_children=0&room1=A%2CA&sb_price_type=total&sr_order=popularity&sr_pri_blocks=1573180301_428363801_2_42_0__6120&srepoch=1772199335&srpvid=02125f92238a094b&type=total&ucfs=1&"
|
||||
label: "Booking.com", href: "https://www.booking.com/hotel/ma/casa-antigua-entre-mer-et-reserve.fr.html?aid=2311236&label=fr-ma-booking-desktop-5CduOKQmb7QeyTDIztQmwAS652796013990%3Apl%3Ata%3Ap1%3Ap2%3Aac%3Aap%3Aneg%3Afi%3Atikwd-65526620%3Alp1009979%3Ali%3Adec%3Adm&sid=af413625458704abd1c26019a7c178cb&all_sr_blocks=1573180301_428363801_2_42_0&checkin=2026-03-13&checkout=2026-03-14&dest_id=-43476&dest_type=city&dist=0&group_adults=2&group_children=0&hapos=1&highlighted_blocks=1573180301_428363801_2_42_0&hpos=1&matching_block_id=1573180301_428363801_2_42_0&no_rooms=1&req_adults=2&req_children=0&room1=A%2Casa antugua &sb_price_type=total&sr_order=popularity&sr_pri_blocks=1573180301_428363801_2_42_0__6120&srepoch=1772199335&srpvid=02125f92238a094b&type=total&ucfs=1&"
|
||||
},
|
||||
{
|
||||
label: "Google Maps", href: "https://www.google.com/maps/place/Ancienne+maison/@30.0851518,-9.6628598,20.33z/data=!4m15!1m8!3m7!1s0xdb396cc22567fa9:0xce11025d1f86a706!2sSidi+R'bat!3b1!8m2!3d30.0844497!4d-9.6626749!16s%2Fg%2F11rr_d_jd!3m5!1s0xdb3970008a186d7:0x608ff69104a00d1e!8m2!3d30.0851867!4d-9.6626372!16s%2Fg%2F11m5_q26j7?entry=ttu&g_ep=EgoyMDI2MDIyNS4wIKXMDSoASAFQAw%3D%3D"
|
||||
|
||||
@@ -20,8 +20,8 @@ interface AngledCarouselProps {
|
||||
autoPlayInterval?: number;
|
||||
}
|
||||
|
||||
const CARD_TRANSITION_DURATION = 0.8;
|
||||
const CARD_TRANSITION_EASE = [0.65, 0, 0.35, 1] as const;
|
||||
const Casa antugua RD_TRANSITION_DURATION = 0.8;
|
||||
const Casa antugua RD_TRANSITION_EASE = [0.65, 0, 0.35, 1] as const;
|
||||
|
||||
const cardVariants = {
|
||||
'hidden-0': { opacity: 0, y: '25px' },
|
||||
@@ -44,7 +44,7 @@ const AngledCarousel = ({ items, className = "", autoPlay = true, autoPlayInterv
|
||||
if (isFirstRender) {
|
||||
const timeout = setTimeout(() => {
|
||||
setIsFirstRender(false);
|
||||
}, CARD_TRANSITION_DURATION * 1000);
|
||||
}, Casa antugua RD_TRANSITION_DURATION * 1000);
|
||||
return () => clearTimeout(timeout);
|
||||
}
|
||||
}, [isFirstRender]);
|
||||
@@ -111,8 +111,8 @@ const AngledCarousel = ({ items, className = "", autoPlay = true, autoPlayInterv
|
||||
initial={getInitialState()}
|
||||
animate={getAnimateState()}
|
||||
transition={{
|
||||
duration: CARD_TRANSITION_DURATION,
|
||||
ease: CARD_TRANSITION_EASE,
|
||||
duration: Casa antugua RD_TRANSITION_DURATION,
|
||||
ease: Casa antugua RD_TRANSITION_EASE,
|
||||
delay: getDelay(),
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -8,11 +8,11 @@ export interface ExtendedCartItem extends CartItem {
|
||||
productId: string;
|
||||
}
|
||||
|
||||
const CART_STORAGE_KEY = "shop_cart_items";
|
||||
const Casa antugua RT_STORAGE_KEY = "shop_cart_items";
|
||||
|
||||
const saveCartToStorage = (items: ExtendedCartItem[]) => {
|
||||
try {
|
||||
localStorage.setItem(CART_STORAGE_KEY, JSON.stringify(items));
|
||||
localStorage.setItem(Casa antugua RT_STORAGE_KEY, JSON.stringify(items));
|
||||
} catch (error) {
|
||||
console.warn("Failed to save cart to localStorage:", error);
|
||||
}
|
||||
@@ -20,7 +20,7 @@ const saveCartToStorage = (items: ExtendedCartItem[]) => {
|
||||
|
||||
const loadCartFromStorage = (): ExtendedCartItem[] => {
|
||||
try {
|
||||
const stored = localStorage.getItem(CART_STORAGE_KEY);
|
||||
const stored = localStorage.getItem(Casa antugua RT_STORAGE_KEY);
|
||||
if (stored) {
|
||||
return JSON.parse(stored);
|
||||
}
|
||||
@@ -32,7 +32,7 @@ const loadCartFromStorage = (): ExtendedCartItem[] => {
|
||||
|
||||
const clearCartFromStorage = () => {
|
||||
try {
|
||||
localStorage.removeItem(CART_STORAGE_KEY);
|
||||
localStorage.removeItem(Casa antugua RT_STORAGE_KEY);
|
||||
} catch (error) {
|
||||
console.warn("Failed to clear cart from localStorage:", error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user