@deriv-web-design/ui 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +8 -139
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +3 -19
- package/dist/index.d.ts +3 -19
- package/dist/index.js +265 -194
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +253 -182
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/tokens.css +213 -17
package/dist/index.js
CHANGED
|
@@ -2304,26 +2304,98 @@ var CTABanner = ({
|
|
|
2304
2304
|
|
|
2305
2305
|
// components/Navbar/Navbar.tsx
|
|
2306
2306
|
var import_react12 = require("react");
|
|
2307
|
+
var import_framer_motion2 = require("framer-motion");
|
|
2307
2308
|
|
|
2308
2309
|
// assets/icon-globe.svg
|
|
2309
2310
|
var icon_globe_default = "./icon-globe-S54WYYEK.svg";
|
|
2310
2311
|
|
|
2311
2312
|
// components/Navbar/Navbar.tsx
|
|
2312
2313
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2313
|
-
var
|
|
2314
|
-
var
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
var
|
|
2314
|
+
var EASE_OUT_EXPO = [0.16, 1, 0.3, 1];
|
|
2315
|
+
var dropdownVariants = {
|
|
2316
|
+
hidden: { opacity: 0, scale: 0.96, y: -8 },
|
|
2317
|
+
visible: { opacity: 1, scale: 1, y: 0 }
|
|
2318
|
+
};
|
|
2319
|
+
var drawerVariants = {
|
|
2320
|
+
hidden: { y: "-100%" },
|
|
2321
|
+
visible: { y: 0 }
|
|
2322
|
+
};
|
|
2323
|
+
var accordionVariants = {
|
|
2324
|
+
hidden: { height: 0, opacity: 0 },
|
|
2325
|
+
visible: { height: "auto", opacity: 1 }
|
|
2326
|
+
};
|
|
2327
|
+
var ChevronDownIcon3 = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2328
|
+
"svg",
|
|
2329
|
+
{
|
|
2330
|
+
className,
|
|
2331
|
+
width: "14",
|
|
2332
|
+
height: "14",
|
|
2333
|
+
viewBox: "0 0 14 14",
|
|
2334
|
+
fill: "none",
|
|
2335
|
+
"aria-hidden": "true",
|
|
2336
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2337
|
+
"path",
|
|
2338
|
+
{
|
|
2339
|
+
d: "M2.625 4.8125L7 9.1875L11.375 4.8125",
|
|
2340
|
+
stroke: "currentColor",
|
|
2341
|
+
strokeWidth: "1.5",
|
|
2342
|
+
strokeLinecap: "round",
|
|
2343
|
+
strokeLinejoin: "round"
|
|
2344
|
+
}
|
|
2345
|
+
)
|
|
2346
|
+
}
|
|
2347
|
+
);
|
|
2348
|
+
var ArrowRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2349
|
+
"path",
|
|
2350
|
+
{
|
|
2351
|
+
d: "M2.625 7H11.375M11.375 7L7.875 3.5M11.375 7L7.875 10.5",
|
|
2352
|
+
stroke: "currentColor",
|
|
2353
|
+
strokeWidth: "1.5",
|
|
2354
|
+
strokeLinecap: "round",
|
|
2355
|
+
strokeLinejoin: "round"
|
|
2356
|
+
}
|
|
2357
|
+
) });
|
|
2358
|
+
var ArrowUpRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2359
|
+
"path",
|
|
2360
|
+
{
|
|
2361
|
+
d: "M4.5 11.5L11.5 4.5M11.5 4.5H5.5M11.5 4.5V10.5",
|
|
2362
|
+
stroke: "currentColor",
|
|
2363
|
+
strokeWidth: "1.5",
|
|
2364
|
+
strokeLinecap: "round",
|
|
2365
|
+
strokeLinejoin: "round"
|
|
2366
|
+
}
|
|
2367
|
+
) });
|
|
2368
|
+
var BarsIcon = () => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2369
|
+
"path",
|
|
2370
|
+
{
|
|
2371
|
+
d: "M2.5 5H17.5M2.5 10H17.5M2.5 15H17.5",
|
|
2372
|
+
stroke: "currentColor",
|
|
2373
|
+
strokeWidth: "1.75",
|
|
2374
|
+
strokeLinecap: "round"
|
|
2375
|
+
}
|
|
2376
|
+
) });
|
|
2377
|
+
var XMarkIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2378
|
+
"path",
|
|
2379
|
+
{
|
|
2380
|
+
d: "M15 5L5 15M5 5L15 15",
|
|
2381
|
+
stroke: "currentColor",
|
|
2382
|
+
strokeWidth: "1.75",
|
|
2383
|
+
strokeLinecap: "round"
|
|
2384
|
+
}
|
|
2385
|
+
) });
|
|
2319
2386
|
var GlobeIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("img", { src: icon_globe_default, alt: "", "aria-hidden": "true", width: "20", height: "20", className });
|
|
2320
|
-
var DropdownPanel = ({ item,
|
|
2387
|
+
var DropdownPanel = ({ item, onMouseEnter, onMouseLeave }) => {
|
|
2321
2388
|
const { dropdown } = item;
|
|
2322
2389
|
if (!dropdown) return null;
|
|
2323
2390
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2324
|
-
|
|
2391
|
+
import_framer_motion2.motion.div,
|
|
2325
2392
|
{
|
|
2326
|
-
className:
|
|
2393
|
+
className: "navbar__dropdown",
|
|
2394
|
+
variants: dropdownVariants,
|
|
2395
|
+
initial: "hidden",
|
|
2396
|
+
animate: "visible",
|
|
2397
|
+
exit: "hidden",
|
|
2398
|
+
transition: { duration: 0.18, ease: EASE_OUT_EXPO },
|
|
2327
2399
|
onMouseEnter,
|
|
2328
2400
|
onMouseLeave,
|
|
2329
2401
|
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__dropdown-inner", children: [
|
|
@@ -2355,17 +2427,32 @@ var FeatureCard = ({ feature, mobile }) => /* @__PURE__ */ (0, import_jsx_runtim
|
|
|
2355
2427
|
className: mobile ? "navbar__drawer-feature" : "navbar__dropdown-feature",
|
|
2356
2428
|
style: feature.backgroundImageUrl ? { backgroundImage: `url(${feature.backgroundImageUrl})` } : void 0,
|
|
2357
2429
|
children: [
|
|
2358
|
-
feature.backgroundImageUrl && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2430
|
+
feature.backgroundImageUrl && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2431
|
+
"img",
|
|
2432
|
+
{
|
|
2433
|
+
src: feature.backgroundImageUrl,
|
|
2434
|
+
alt: "",
|
|
2435
|
+
className: mobile ? "navbar__drawer-feature-img" : "navbar__dropdown-feature-img",
|
|
2436
|
+
"aria-hidden": "true"
|
|
2437
|
+
}
|
|
2438
|
+
),
|
|
2359
2439
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: mobile ? "navbar__drawer-feature-overlay" : "navbar__dropdown-feature-overlay", "aria-hidden": "true" }),
|
|
2360
2440
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: mobile ? "navbar__drawer-feature-content" : "navbar__dropdown-feature-content", children: [
|
|
2361
2441
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { children: [
|
|
2362
2442
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: mobile ? "navbar__drawer-feature-title" : "navbar__dropdown-feature-title", children: feature.title }),
|
|
2363
2443
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: mobile ? "navbar__drawer-feature-desc" : "navbar__dropdown-feature-desc", children: feature.description })
|
|
2364
2444
|
] }),
|
|
2365
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2445
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2446
|
+
"a",
|
|
2447
|
+
{
|
|
2448
|
+
href: feature.ctaHref,
|
|
2449
|
+
className: mobile ? "navbar__drawer-feature-cta" : "navbar__dropdown-feature-cta",
|
|
2450
|
+
children: [
|
|
2451
|
+
feature.ctaLabel,
|
|
2452
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ArrowRightIcon, {})
|
|
2453
|
+
]
|
|
2454
|
+
}
|
|
2455
|
+
)
|
|
2369
2456
|
] })
|
|
2370
2457
|
]
|
|
2371
2458
|
}
|
|
@@ -2376,7 +2463,7 @@ var DrawerAccordion = ({ item, isOpen, onToggle }) => {
|
|
|
2376
2463
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2377
2464
|
"button",
|
|
2378
2465
|
{
|
|
2379
|
-
className:
|
|
2466
|
+
className: `navbar__drawer-trigger ${isOpen ? "navbar__drawer-trigger--open" : ""}`,
|
|
2380
2467
|
onClick: onToggle,
|
|
2381
2468
|
"aria-expanded": isOpen,
|
|
2382
2469
|
children: [
|
|
@@ -2385,23 +2472,34 @@ var DrawerAccordion = ({ item, isOpen, onToggle }) => {
|
|
|
2385
2472
|
]
|
|
2386
2473
|
}
|
|
2387
2474
|
),
|
|
2388
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2475
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_framer_motion2.AnimatePresence, { initial: false, children: isOpen && dropdown && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2476
|
+
import_framer_motion2.motion.div,
|
|
2477
|
+
{
|
|
2478
|
+
className: "navbar__drawer-panel",
|
|
2479
|
+
variants: accordionVariants,
|
|
2480
|
+
initial: "hidden",
|
|
2481
|
+
animate: "visible",
|
|
2482
|
+
exit: "hidden",
|
|
2483
|
+
transition: { duration: 0.22, ease: EASE_OUT_EXPO },
|
|
2484
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__drawer-panel-inner", children: [
|
|
2485
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "navbar__drawer-panel-cols", children: dropdown.columns.map((col, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "navbar__drawer-panel-col", children: col.sections.map((section) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__drawer-col-section", children: [
|
|
2486
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "navbar__drawer-col-title", children: section.title }),
|
|
2487
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "navbar__drawer-col-links", children: section.items.map((link) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2488
|
+
"a",
|
|
2489
|
+
{
|
|
2490
|
+
href: link.href,
|
|
2491
|
+
className: "navbar__drawer-link",
|
|
2492
|
+
target: link.external ? "_blank" : void 0,
|
|
2493
|
+
rel: link.external ? "noopener noreferrer" : void 0,
|
|
2494
|
+
children: link.label
|
|
2495
|
+
},
|
|
2496
|
+
link.href
|
|
2497
|
+
)) })
|
|
2498
|
+
] }, section.title)) }, colIdx)) }),
|
|
2499
|
+
dropdown.feature && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(FeatureCard, { feature: dropdown.feature, mobile: true })
|
|
2500
|
+
] })
|
|
2501
|
+
}
|
|
2502
|
+
) })
|
|
2405
2503
|
] });
|
|
2406
2504
|
};
|
|
2407
2505
|
var Navbar = ({
|
|
@@ -2414,7 +2512,6 @@ var Navbar = ({
|
|
|
2414
2512
|
loginHref,
|
|
2415
2513
|
ctaLabel = "Open account",
|
|
2416
2514
|
ctaHref,
|
|
2417
|
-
languages,
|
|
2418
2515
|
languageLabel,
|
|
2419
2516
|
onLanguageClick,
|
|
2420
2517
|
className,
|
|
@@ -2424,15 +2521,9 @@ var Navbar = ({
|
|
|
2424
2521
|
const [mobileOpen, setMobileOpen] = (0, import_react12.useState)(false);
|
|
2425
2522
|
const [mobileExpanded, setMobileExpanded] = (0, import_react12.useState)(null);
|
|
2426
2523
|
const [scrolled, setScrolled] = (0, import_react12.useState)(false);
|
|
2427
|
-
const [langOpen, setLangOpen] = (0, import_react12.useState)(false);
|
|
2428
|
-
const [mobileLangOpen, setMobileLangOpen] = (0, import_react12.useState)(false);
|
|
2429
2524
|
const hoverTimeoutRef = (0, import_react12.useRef)(null);
|
|
2430
|
-
const langTimeoutRef = (0, import_react12.useRef)(null);
|
|
2431
2525
|
const pillAreaRef = (0, import_react12.useRef)(null);
|
|
2432
|
-
const langWrapperRef = (0, import_react12.useRef)(null);
|
|
2433
2526
|
const resolvedLogo = theme === "light" ? logoSrcDark ?? logoSrc : logoSrc;
|
|
2434
|
-
const activeLanguage = languages?.find((l) => l.active);
|
|
2435
|
-
const displayLabel = activeLanguage?.code ?? languageLabel;
|
|
2436
2527
|
(0, import_react12.useEffect)(() => {
|
|
2437
2528
|
const onScroll = () => setScrolled(window.scrollY > 0);
|
|
2438
2529
|
window.addEventListener("scroll", onScroll, { passive: true });
|
|
@@ -2443,7 +2534,6 @@ var Navbar = ({
|
|
|
2443
2534
|
if (e.key === "Escape") {
|
|
2444
2535
|
setOpenDropdown(null);
|
|
2445
2536
|
setMobileOpen(false);
|
|
2446
|
-
setLangOpen(false);
|
|
2447
2537
|
}
|
|
2448
2538
|
};
|
|
2449
2539
|
document.addEventListener("keydown", onKey);
|
|
@@ -2465,16 +2555,6 @@ var Navbar = ({
|
|
|
2465
2555
|
document.addEventListener("pointerdown", onPointerDown);
|
|
2466
2556
|
return () => document.removeEventListener("pointerdown", onPointerDown);
|
|
2467
2557
|
}, [openDropdown]);
|
|
2468
|
-
(0, import_react12.useEffect)(() => {
|
|
2469
|
-
if (!langOpen) return;
|
|
2470
|
-
const onPointerDown = (e) => {
|
|
2471
|
-
if (langWrapperRef.current && !langWrapperRef.current.contains(e.target)) {
|
|
2472
|
-
setLangOpen(false);
|
|
2473
|
-
}
|
|
2474
|
-
};
|
|
2475
|
-
document.addEventListener("pointerdown", onPointerDown);
|
|
2476
|
-
return () => document.removeEventListener("pointerdown", onPointerDown);
|
|
2477
|
-
}, [langOpen]);
|
|
2478
2558
|
const clearHoverTimeout = (0, import_react12.useCallback)(() => {
|
|
2479
2559
|
if (hoverTimeoutRef.current) {
|
|
2480
2560
|
clearTimeout(hoverTimeoutRef.current);
|
|
@@ -2489,11 +2569,7 @@ var Navbar = ({
|
|
|
2489
2569
|
clearHoverTimeout();
|
|
2490
2570
|
hoverTimeoutRef.current = setTimeout(() => setOpenDropdown(null), 120);
|
|
2491
2571
|
}, [clearHoverTimeout]);
|
|
2492
|
-
const
|
|
2493
|
-
lang.onClick();
|
|
2494
|
-
setLangOpen(false);
|
|
2495
|
-
setMobileLangOpen(false);
|
|
2496
|
-
}, []);
|
|
2572
|
+
const activeDropdownItem = navItems.find((item) => item.label === openDropdown);
|
|
2497
2573
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2498
2574
|
"nav",
|
|
2499
2575
|
{
|
|
@@ -2507,16 +2583,29 @@ var Navbar = ({
|
|
|
2507
2583
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__nav-group", children: [
|
|
2508
2584
|
navItems.map((item) => {
|
|
2509
2585
|
if (item.external) {
|
|
2510
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2587
|
+
"a",
|
|
2588
|
+
{
|
|
2589
|
+
href: item.href,
|
|
2590
|
+
className: "navbar__nav-item",
|
|
2591
|
+
target: "_blank",
|
|
2592
|
+
rel: "noopener noreferrer",
|
|
2593
|
+
children: [
|
|
2594
|
+
item.label,
|
|
2595
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ArrowUpRightIcon, {})
|
|
2596
|
+
]
|
|
2597
|
+
},
|
|
2598
|
+
item.label
|
|
2599
|
+
);
|
|
2514
2600
|
}
|
|
2515
2601
|
if (item.dropdown) {
|
|
2516
2602
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2517
2603
|
"button",
|
|
2518
2604
|
{
|
|
2519
|
-
className: [
|
|
2605
|
+
className: [
|
|
2606
|
+
"navbar__nav-item",
|
|
2607
|
+
openDropdown === item.label ? "navbar__nav-item--open" : ""
|
|
2608
|
+
].filter(Boolean).join(" "),
|
|
2520
2609
|
onMouseEnter: () => handleNavEnter(item.label),
|
|
2521
2610
|
onMouseLeave: handleNavLeave,
|
|
2522
2611
|
"aria-expanded": openDropdown === item.label,
|
|
@@ -2531,74 +2620,45 @@ var Navbar = ({
|
|
|
2531
2620
|
}
|
|
2532
2621
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: item.href, className: "navbar__nav-item", children: item.label }, item.label);
|
|
2533
2622
|
}),
|
|
2534
|
-
|
|
2535
|
-
"
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
ref: langWrapperRef,
|
|
2539
|
-
onMouseEnter: () => {
|
|
2540
|
-
if (langTimeoutRef.current) clearTimeout(langTimeoutRef.current);
|
|
2541
|
-
if (languages && languages.length > 0) setLangOpen(true);
|
|
2542
|
-
},
|
|
2543
|
-
onMouseLeave: () => {
|
|
2544
|
-
langTimeoutRef.current = setTimeout(() => setLangOpen(false), 150);
|
|
2545
|
-
},
|
|
2546
|
-
children: [
|
|
2547
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2548
|
-
"button",
|
|
2549
|
-
{
|
|
2550
|
-
className: ["navbar__nav-item", "navbar__lang-btn", langOpen ? "navbar__nav-item--open" : ""].filter(Boolean).join(" "),
|
|
2551
|
-
onClick: () => {
|
|
2552
|
-
if (!languages || languages.length === 0) onLanguageClick?.();
|
|
2553
|
-
},
|
|
2554
|
-
"aria-expanded": languages ? langOpen : void 0,
|
|
2555
|
-
"aria-haspopup": languages ? "listbox" : void 0,
|
|
2556
|
-
children: [
|
|
2557
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
|
|
2558
|
-
displayLabel,
|
|
2559
|
-
languages && languages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ChevronDownIcon3, { className: "navbar__nav-item__chevron" })
|
|
2560
|
-
]
|
|
2561
|
-
}
|
|
2562
|
-
),
|
|
2563
|
-
languages && languages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: ["navbar__lang-dropdown", langOpen ? "navbar__lang-dropdown--open" : ""].filter(Boolean).join(" "), role: "listbox", children: languages.map((lang) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2564
|
-
"button",
|
|
2565
|
-
{
|
|
2566
|
-
className: ["navbar__lang-option", lang.active ? "navbar__lang-option--active" : ""].filter(Boolean).join(" "),
|
|
2567
|
-
onClick: () => handleLangSelect(lang),
|
|
2568
|
-
role: "option",
|
|
2569
|
-
"aria-selected": lang.active,
|
|
2570
|
-
children: [
|
|
2571
|
-
lang.label,
|
|
2572
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ArrowRightSmIcon, {})
|
|
2573
|
-
]
|
|
2574
|
-
},
|
|
2575
|
-
lang.code
|
|
2576
|
-
)) })
|
|
2577
|
-
]
|
|
2578
|
-
}
|
|
2579
|
-
)
|
|
2623
|
+
languageLabel && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("button", { className: "navbar__nav-item navbar__lang-btn", onClick: onLanguageClick, children: [
|
|
2624
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
|
|
2625
|
+
languageLabel
|
|
2626
|
+
] })
|
|
2580
2627
|
] }),
|
|
2581
2628
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__pill-actions", children: [
|
|
2582
2629
|
loginHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: loginHref, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { colorScheme: "black", variant: "secondary", label: loginLabel }) }),
|
|
2583
2630
|
ctaHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: ctaHref, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { colorScheme: "coral", variant: "primary", label: ctaLabel }) })
|
|
2584
2631
|
] })
|
|
2585
2632
|
] }) }),
|
|
2586
|
-
|
|
2633
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_framer_motion2.AnimatePresence, { children: openDropdown && activeDropdownItem?.dropdown && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2587
2634
|
DropdownPanel,
|
|
2588
2635
|
{
|
|
2589
|
-
item,
|
|
2590
|
-
isOpen: openDropdown === item.label,
|
|
2636
|
+
item: activeDropdownItem,
|
|
2591
2637
|
onMouseEnter: clearHoverTimeout,
|
|
2592
2638
|
onMouseLeave: handleNavLeave
|
|
2593
2639
|
},
|
|
2594
|
-
|
|
2595
|
-
)
|
|
2640
|
+
"dropdown"
|
|
2641
|
+
) }),
|
|
2596
2642
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__actions", children: [
|
|
2597
|
-
loginHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: loginHref, className: "navbar__actions-login", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2643
|
+
loginHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: loginHref, className: "navbar__actions-login", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2644
|
+
Button,
|
|
2645
|
+
{
|
|
2646
|
+
colorScheme: theme === "dark" ? "white" : "black",
|
|
2647
|
+
variant: "secondary",
|
|
2648
|
+
label: loginLabel
|
|
2649
|
+
}
|
|
2650
|
+
) }),
|
|
2598
2651
|
ctaHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: ctaHref, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { colorScheme: "coral", variant: "primary", label: ctaLabel }) })
|
|
2599
2652
|
] }),
|
|
2600
2653
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__mobile-actions", children: [
|
|
2601
|
-
loginHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: loginHref, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2654
|
+
loginHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: loginHref, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2655
|
+
Button,
|
|
2656
|
+
{
|
|
2657
|
+
colorScheme: scrolled || theme === "light" ? "black" : "white",
|
|
2658
|
+
variant: "secondary",
|
|
2659
|
+
label: loginLabel
|
|
2660
|
+
}
|
|
2661
|
+
) }),
|
|
2602
2662
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2603
2663
|
"button",
|
|
2604
2664
|
{
|
|
@@ -2610,66 +2670,77 @@ var Navbar = ({
|
|
|
2610
2670
|
)
|
|
2611
2671
|
] })
|
|
2612
2672
|
] }),
|
|
2613
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "navbar__drawer-clip", children: /* @__PURE__ */ (0, import_jsx_runtime23.
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2673
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "navbar__drawer-clip", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_framer_motion2.AnimatePresence, { children: mobileOpen && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2674
|
+
import_framer_motion2.motion.div,
|
|
2675
|
+
{
|
|
2676
|
+
className: "navbar__drawer",
|
|
2677
|
+
variants: drawerVariants,
|
|
2678
|
+
initial: "hidden",
|
|
2679
|
+
animate: "visible",
|
|
2680
|
+
exit: "hidden",
|
|
2681
|
+
transition: { duration: 0.3, ease: EASE_OUT_EXPO },
|
|
2682
|
+
"aria-modal": "true",
|
|
2683
|
+
role: "dialog",
|
|
2684
|
+
"aria-label": "Navigation menu",
|
|
2685
|
+
children: [
|
|
2686
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("nav", { className: "navbar__drawer-nav", children: [
|
|
2687
|
+
navItems.map((item) => {
|
|
2688
|
+
if (item.dropdown) {
|
|
2689
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2690
|
+
DrawerAccordion,
|
|
2691
|
+
{
|
|
2692
|
+
item,
|
|
2693
|
+
isOpen: mobileExpanded === item.label,
|
|
2694
|
+
onToggle: () => setMobileExpanded(
|
|
2695
|
+
(prev) => prev === item.label ? null : item.label
|
|
2696
|
+
)
|
|
2697
|
+
},
|
|
2698
|
+
item.label
|
|
2699
|
+
);
|
|
2700
|
+
}
|
|
2701
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2702
|
+
"a",
|
|
2703
|
+
{
|
|
2704
|
+
href: item.href,
|
|
2705
|
+
className: "navbar__drawer-single",
|
|
2706
|
+
target: item.external ? "_blank" : void 0,
|
|
2707
|
+
rel: item.external ? "noopener noreferrer" : void 0,
|
|
2708
|
+
children: [
|
|
2709
|
+
item.label,
|
|
2710
|
+
item.external && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ArrowUpRightIcon, {})
|
|
2711
|
+
]
|
|
2712
|
+
},
|
|
2713
|
+
item.label
|
|
2714
|
+
);
|
|
2715
|
+
}),
|
|
2716
|
+
languageLabel && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("button", { className: "navbar__drawer-lang", onClick: onLanguageClick, children: [
|
|
2717
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
|
|
2718
|
+
languageLabel
|
|
2719
|
+
] })
|
|
2720
|
+
] }),
|
|
2721
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__drawer-footer", children: [
|
|
2722
|
+
loginHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: loginHref, style: { display: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2723
|
+
Button,
|
|
2619
2724
|
{
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
)
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
setMobileLangOpen((o) => !o);
|
|
2640
|
-
} else {
|
|
2641
|
-
onLanguageClick?.();
|
|
2642
|
-
}
|
|
2643
|
-
},
|
|
2644
|
-
"aria-expanded": languages ? mobileLangOpen : void 0,
|
|
2645
|
-
children: [
|
|
2646
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: "navbar__drawer-lang-label", children: [
|
|
2647
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(GlobeIcon, { className: "navbar__lang-globe navbar__lang-globe--dark" }),
|
|
2648
|
-
displayLabel
|
|
2649
|
-
] }),
|
|
2650
|
-
languages && languages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ChevronDownIcon3, { className: "navbar__drawer-trigger__chevron" })
|
|
2651
|
-
]
|
|
2652
|
-
}
|
|
2653
|
-
),
|
|
2654
|
-
languages && languages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: ["navbar__drawer-lang-grid", mobileLangOpen ? "navbar__drawer-lang-grid--open" : ""].filter(Boolean).join(" "), children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "navbar__drawer-lang-grid-inner", children: languages.map((lang) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2655
|
-
"button",
|
|
2656
|
-
{
|
|
2657
|
-
className: ["navbar__drawer-lang-option", lang.active ? "navbar__drawer-lang-option--active" : ""].filter(Boolean).join(" "),
|
|
2658
|
-
onClick: () => handleLangSelect(lang),
|
|
2659
|
-
children: [
|
|
2660
|
-
lang.label,
|
|
2661
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ArrowRightSmIcon, {})
|
|
2662
|
-
]
|
|
2663
|
-
},
|
|
2664
|
-
lang.code
|
|
2665
|
-
)) }) })
|
|
2666
|
-
] })
|
|
2667
|
-
] }),
|
|
2668
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "navbar__drawer-footer", children: [
|
|
2669
|
-
loginHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: loginHref, style: { display: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { colorScheme: "black", variant: "secondary", label: loginLabel, fullWidth: true }) }),
|
|
2670
|
-
ctaHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: ctaHref, style: { display: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { colorScheme: "coral", variant: "primary", label: ctaLabel, fullWidth: true }) })
|
|
2671
|
-
] })
|
|
2672
|
-
] }) })
|
|
2725
|
+
colorScheme: "black",
|
|
2726
|
+
variant: "secondary",
|
|
2727
|
+
label: loginLabel,
|
|
2728
|
+
fullWidth: true
|
|
2729
|
+
}
|
|
2730
|
+
) }),
|
|
2731
|
+
ctaHref && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: ctaHref, style: { display: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2732
|
+
Button,
|
|
2733
|
+
{
|
|
2734
|
+
colorScheme: "coral",
|
|
2735
|
+
variant: "primary",
|
|
2736
|
+
label: ctaLabel,
|
|
2737
|
+
fullWidth: true
|
|
2738
|
+
}
|
|
2739
|
+
) })
|
|
2740
|
+
] })
|
|
2741
|
+
]
|
|
2742
|
+
}
|
|
2743
|
+
) }) })
|
|
2673
2744
|
]
|
|
2674
2745
|
}
|
|
2675
2746
|
);
|
|
@@ -2677,7 +2748,7 @@ var Navbar = ({
|
|
|
2677
2748
|
|
|
2678
2749
|
// templates/DayNightTransition/DayNightTransition.tsx
|
|
2679
2750
|
var import_react13 = require("react");
|
|
2680
|
-
var
|
|
2751
|
+
var import_framer_motion3 = require("framer-motion");
|
|
2681
2752
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2682
2753
|
var SPRING2 = { stiffness: 80, damping: 30, restDelta: 1e-3 };
|
|
2683
2754
|
var FADE_START = 0.35;
|
|
@@ -2699,16 +2770,16 @@ var DayNightTransition = ({
|
|
|
2699
2770
|
...props
|
|
2700
2771
|
}) => {
|
|
2701
2772
|
const wrapperRef = (0, import_react13.useRef)(null);
|
|
2702
|
-
const { scrollYProgress } = (0,
|
|
2773
|
+
const { scrollYProgress } = (0, import_framer_motion3.useScroll)({
|
|
2703
2774
|
target: wrapperRef,
|
|
2704
2775
|
offset: ["start end", "end start"]
|
|
2705
2776
|
});
|
|
2706
|
-
const smooth = (0,
|
|
2707
|
-
const nightOpacity = (0,
|
|
2708
|
-
const channel = (0,
|
|
2709
|
-
const textColor =
|
|
2710
|
-
const dayOpacity = (0,
|
|
2711
|
-
const nightOpacity2 = (0,
|
|
2777
|
+
const smooth = (0, import_framer_motion3.useSpring)(scrollYProgress, SPRING2);
|
|
2778
|
+
const nightOpacity = (0, import_framer_motion3.useTransform)(smooth, [FADE_START, FADE_END], [0, 1]);
|
|
2779
|
+
const channel = (0, import_framer_motion3.useTransform)(smooth, [FADE_START, FADE_END], [TEXT_CHANNEL_DAY, TEXT_CHANNEL_NIGHT]);
|
|
2780
|
+
const textColor = import_framer_motion3.useMotionTemplate`rgb(${channel}, ${channel}, ${channel})`;
|
|
2781
|
+
const dayOpacity = (0, import_framer_motion3.useTransform)(smooth, [WORD_START, WORD_END], [1, 0]);
|
|
2782
|
+
const nightOpacity2 = (0, import_framer_motion3.useTransform)(smooth, [WORD_START, WORD_END], [0, 1]);
|
|
2712
2783
|
const hasDescription = Boolean(dayDescription || nightDescription);
|
|
2713
2784
|
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2714
2785
|
"div",
|
|
@@ -2728,7 +2799,7 @@ var DayNightTransition = ({
|
|
|
2728
2799
|
}
|
|
2729
2800
|
),
|
|
2730
2801
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2731
|
-
|
|
2802
|
+
import_framer_motion3.motion.img,
|
|
2732
2803
|
{
|
|
2733
2804
|
className: "dnt__bg dnt__bg--night",
|
|
2734
2805
|
src: nightImageUrl,
|
|
@@ -2739,14 +2810,14 @@ var DayNightTransition = ({
|
|
|
2739
2810
|
}
|
|
2740
2811
|
),
|
|
2741
2812
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "dnt__content", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
2742
|
-
|
|
2813
|
+
import_framer_motion3.motion.div,
|
|
2743
2814
|
{
|
|
2744
2815
|
className: "dnt__text-wrap",
|
|
2745
2816
|
style: { color: textColor },
|
|
2746
2817
|
children: [
|
|
2747
2818
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "dnt__crossfade-wrap", children: [
|
|
2748
2819
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2749
|
-
|
|
2820
|
+
import_framer_motion3.motion.h2,
|
|
2750
2821
|
{
|
|
2751
2822
|
className: "dnt__headline",
|
|
2752
2823
|
style: { opacity: dayOpacity },
|
|
@@ -2754,7 +2825,7 @@ var DayNightTransition = ({
|
|
|
2754
2825
|
}
|
|
2755
2826
|
),
|
|
2756
2827
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2757
|
-
|
|
2828
|
+
import_framer_motion3.motion.h2,
|
|
2758
2829
|
{
|
|
2759
2830
|
className: "dnt__headline",
|
|
2760
2831
|
"aria-hidden": "true",
|
|
@@ -2765,7 +2836,7 @@ var DayNightTransition = ({
|
|
|
2765
2836
|
] }),
|
|
2766
2837
|
hasDescription && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "dnt__crossfade-wrap", children: [
|
|
2767
2838
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2768
|
-
|
|
2839
|
+
import_framer_motion3.motion.p,
|
|
2769
2840
|
{
|
|
2770
2841
|
className: "dnt__description",
|
|
2771
2842
|
style: { opacity: dayOpacity },
|
|
@@ -2773,7 +2844,7 @@ var DayNightTransition = ({
|
|
|
2773
2844
|
}
|
|
2774
2845
|
),
|
|
2775
2846
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2776
|
-
|
|
2847
|
+
import_framer_motion3.motion.p,
|
|
2777
2848
|
{
|
|
2778
2849
|
className: "dnt__description",
|
|
2779
2850
|
"aria-hidden": "true",
|
|
@@ -2793,7 +2864,7 @@ var DayNightTransition = ({
|
|
|
2793
2864
|
|
|
2794
2865
|
// templates/PaymentMethods/PaymentMethods.tsx
|
|
2795
2866
|
var import_react14 = require("react");
|
|
2796
|
-
var
|
|
2867
|
+
var import_framer_motion4 = require("framer-motion");
|
|
2797
2868
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2798
2869
|
function modWrap(min, max, v) {
|
|
2799
2870
|
const range = max - min;
|
|
@@ -2847,13 +2918,13 @@ var PaymentMethods = ({
|
|
|
2847
2918
|
className,
|
|
2848
2919
|
...props
|
|
2849
2920
|
}) => {
|
|
2850
|
-
const { scrollY } = (0,
|
|
2851
|
-
const scrollVelocity = (0,
|
|
2852
|
-
const col1Y = (0,
|
|
2853
|
-
const col2Y = (0,
|
|
2921
|
+
const { scrollY } = (0, import_framer_motion4.useScroll)();
|
|
2922
|
+
const scrollVelocity = (0, import_framer_motion4.useVelocity)(scrollY);
|
|
2923
|
+
const col1Y = (0, import_framer_motion4.useMotionValue)(0);
|
|
2924
|
+
const col2Y = (0, import_framer_motion4.useMotionValue)(0);
|
|
2854
2925
|
const col1Ref = (0, import_react14.useRef)(null);
|
|
2855
2926
|
const col2Ref = (0, import_react14.useRef)(null);
|
|
2856
|
-
(0,
|
|
2927
|
+
(0, import_framer_motion4.useAnimationFrame)((_, delta) => {
|
|
2857
2928
|
const raw = scrollVelocity.get();
|
|
2858
2929
|
if (Math.abs(raw) < DEADZONE) return;
|
|
2859
2930
|
const clamped = Math.sign(raw) * Math.min(Math.abs(raw), MAX_SCROLL_V);
|
|
@@ -2874,7 +2945,7 @@ var PaymentMethods = ({
|
|
|
2874
2945
|
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "pm__media", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "pm__carousel", children: [
|
|
2875
2946
|
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "pm__fade pm__fade--top", "aria-hidden": "true" }),
|
|
2876
2947
|
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2877
|
-
|
|
2948
|
+
import_framer_motion4.motion.div,
|
|
2878
2949
|
{
|
|
2879
2950
|
ref: col1Ref,
|
|
2880
2951
|
className: "pm__col",
|
|
@@ -2891,7 +2962,7 @@ var PaymentMethods = ({
|
|
|
2891
2962
|
}
|
|
2892
2963
|
),
|
|
2893
2964
|
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2894
|
-
|
|
2965
|
+
import_framer_motion4.motion.div,
|
|
2895
2966
|
{
|
|
2896
2967
|
ref: col2Ref,
|
|
2897
2968
|
className: "pm__col",
|