@geomak/ui 6.2.0 → 6.2.2
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.cjs +350 -209
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -3
- package/dist/index.d.ts +14 -3
- package/dist/index.js +172 -31
- package/dist/index.js.map +1 -1
- package/dist/styles.css +21 -26
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1648,6 +1648,16 @@ interface MegaMenuProps {
|
|
|
1648
1648
|
align?: 'start' | 'center' | 'end';
|
|
1649
1649
|
/** Delay (ms) before a hovered item opens. Default `200`. */
|
|
1650
1650
|
delayDuration?: number;
|
|
1651
|
+
/**
|
|
1652
|
+
* Below the `md` breakpoint, collapse the hover bar into a tap-friendly
|
|
1653
|
+
* hamburger disclosure (a vertical accordion of the same items). Hover
|
|
1654
|
+
* mega-panels don't work on touch, so this is the graceful fallback.
|
|
1655
|
+
* Set `false` to render the desktop bar at every width (e.g. when you
|
|
1656
|
+
* provide your own mobile navigation). Default `true`.
|
|
1657
|
+
*/
|
|
1658
|
+
responsive?: boolean;
|
|
1659
|
+
/** Label for the mobile disclosure toggle. Default `'Menu'`. */
|
|
1660
|
+
mobileLabel?: React__default.ReactNode;
|
|
1651
1661
|
/** Extra classes merged onto the menu bar root. */
|
|
1652
1662
|
className?: string;
|
|
1653
1663
|
style?: React__default.CSSProperties;
|
|
@@ -1661,7 +1671,8 @@ interface MegaMenuProps {
|
|
|
1661
1671
|
* Compose top-level items with `MegaMenu.Item`. An item with children opens a
|
|
1662
1672
|
* panel (`MegaMenu.Panel` → `MegaMenu.Section` → `MegaMenu.Link`, plus an
|
|
1663
1673
|
* optional `MegaMenu.Featured` promo column); an item with just `href` is a
|
|
1664
|
-
* plain top-level link.
|
|
1674
|
+
* plain top-level link. Each panel positions itself under the bar and sizes to
|
|
1675
|
+
* its content.
|
|
1665
1676
|
*
|
|
1666
1677
|
* @example
|
|
1667
1678
|
* ```tsx
|
|
@@ -1679,7 +1690,7 @@ interface MegaMenuProps {
|
|
|
1679
1690
|
* </MegaMenu>
|
|
1680
1691
|
* ```
|
|
1681
1692
|
*/
|
|
1682
|
-
declare function MegaMenu({ children, align, delayDuration, className, style, 'aria-label': ariaLabel }: MegaMenuProps): react_jsx_runtime.JSX.Element;
|
|
1693
|
+
declare function MegaMenu({ children, align, delayDuration, responsive, mobileLabel, className, style, 'aria-label': ariaLabel, }: MegaMenuProps): react_jsx_runtime.JSX.Element;
|
|
1683
1694
|
declare namespace MegaMenu {
|
|
1684
1695
|
var Item: typeof MegaMenuItem;
|
|
1685
1696
|
var Panel: typeof MegaMenuPanel;
|
|
@@ -1701,7 +1712,7 @@ interface MegaMenuItemProps {
|
|
|
1701
1712
|
declare function MegaMenuItem({ label, icon, href, children, className }: MegaMenuItemProps): react_jsx_runtime.JSX.Element;
|
|
1702
1713
|
interface MegaMenuPanelProps {
|
|
1703
1714
|
children: React__default.ReactNode;
|
|
1704
|
-
/**
|
|
1715
|
+
/** Cap the panel to roughly this many side-by-side columns before wrapping. Default: single row. */
|
|
1705
1716
|
columns?: 1 | 2 | 3 | 4;
|
|
1706
1717
|
className?: string;
|
|
1707
1718
|
style?: React__default.CSSProperties;
|
package/dist/index.d.ts
CHANGED
|
@@ -1648,6 +1648,16 @@ interface MegaMenuProps {
|
|
|
1648
1648
|
align?: 'start' | 'center' | 'end';
|
|
1649
1649
|
/** Delay (ms) before a hovered item opens. Default `200`. */
|
|
1650
1650
|
delayDuration?: number;
|
|
1651
|
+
/**
|
|
1652
|
+
* Below the `md` breakpoint, collapse the hover bar into a tap-friendly
|
|
1653
|
+
* hamburger disclosure (a vertical accordion of the same items). Hover
|
|
1654
|
+
* mega-panels don't work on touch, so this is the graceful fallback.
|
|
1655
|
+
* Set `false` to render the desktop bar at every width (e.g. when you
|
|
1656
|
+
* provide your own mobile navigation). Default `true`.
|
|
1657
|
+
*/
|
|
1658
|
+
responsive?: boolean;
|
|
1659
|
+
/** Label for the mobile disclosure toggle. Default `'Menu'`. */
|
|
1660
|
+
mobileLabel?: React__default.ReactNode;
|
|
1651
1661
|
/** Extra classes merged onto the menu bar root. */
|
|
1652
1662
|
className?: string;
|
|
1653
1663
|
style?: React__default.CSSProperties;
|
|
@@ -1661,7 +1671,8 @@ interface MegaMenuProps {
|
|
|
1661
1671
|
* Compose top-level items with `MegaMenu.Item`. An item with children opens a
|
|
1662
1672
|
* panel (`MegaMenu.Panel` → `MegaMenu.Section` → `MegaMenu.Link`, plus an
|
|
1663
1673
|
* optional `MegaMenu.Featured` promo column); an item with just `href` is a
|
|
1664
|
-
* plain top-level link.
|
|
1674
|
+
* plain top-level link. Each panel positions itself under the bar and sizes to
|
|
1675
|
+
* its content.
|
|
1665
1676
|
*
|
|
1666
1677
|
* @example
|
|
1667
1678
|
* ```tsx
|
|
@@ -1679,7 +1690,7 @@ interface MegaMenuProps {
|
|
|
1679
1690
|
* </MegaMenu>
|
|
1680
1691
|
* ```
|
|
1681
1692
|
*/
|
|
1682
|
-
declare function MegaMenu({ children, align, delayDuration, className, style, 'aria-label': ariaLabel }: MegaMenuProps): react_jsx_runtime.JSX.Element;
|
|
1693
|
+
declare function MegaMenu({ children, align, delayDuration, responsive, mobileLabel, className, style, 'aria-label': ariaLabel, }: MegaMenuProps): react_jsx_runtime.JSX.Element;
|
|
1683
1694
|
declare namespace MegaMenu {
|
|
1684
1695
|
var Item: typeof MegaMenuItem;
|
|
1685
1696
|
var Panel: typeof MegaMenuPanel;
|
|
@@ -1701,7 +1712,7 @@ interface MegaMenuItemProps {
|
|
|
1701
1712
|
declare function MegaMenuItem({ label, icon, href, children, className }: MegaMenuItemProps): react_jsx_runtime.JSX.Element;
|
|
1702
1713
|
interface MegaMenuPanelProps {
|
|
1703
1714
|
children: React__default.ReactNode;
|
|
1704
|
-
/**
|
|
1715
|
+
/** Cap the panel to roughly this many side-by-side columns before wrapping. Default: single row. */
|
|
1705
1716
|
columns?: 1 | 2 | 3 | 4;
|
|
1706
1717
|
className?: string;
|
|
1707
1718
|
style?: React__default.CSSProperties;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { colors_default } from './chunk-GKXP6OJJ.js';
|
|
2
2
|
export { colors_default as COLORS, PALETTE as palette, semanticTokens, vars } from './chunk-GKXP6OJJ.js';
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
|
-
import
|
|
4
|
+
import React12, { createContext, useState, useEffect, useMemo, useId, useCallback, useRef, useContext, useLayoutEffect, useSyncExternalStore } from 'react';
|
|
5
5
|
import { createPortal } from 'react-dom';
|
|
6
6
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
7
7
|
import * as Dialog from '@radix-ui/react-dialog';
|
|
@@ -2471,7 +2471,7 @@ function Field({
|
|
|
2471
2471
|
);
|
|
2472
2472
|
}
|
|
2473
2473
|
var SearchIcon = /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", className: "w-4 h-4", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", d: "M10.5 3.75a6.75 6.75 0 100 13.5 6.75 6.75 0 000-13.5zM2.25 10.5a8.25 8.25 0 1114.59 5.28l4.69 4.69a.75.75 0 11-1.06 1.06l-4.69-4.69A8.25 8.25 0 012.25 10.5z", clipRule: "evenodd" }) });
|
|
2474
|
-
var SearchInput =
|
|
2474
|
+
var SearchInput = React12.forwardRef(function SearchInput2({ value, onChange, disabled, label, htmlFor, placeholder, name, inputStyle, style, layout = "vertical", size = "md", icon, helperText, className }, ref) {
|
|
2475
2475
|
return /* @__PURE__ */ jsx(Field, { className, label, htmlFor, layout, helperText, children: /* @__PURE__ */ jsxs(
|
|
2476
2476
|
"div",
|
|
2477
2477
|
{
|
|
@@ -2971,7 +2971,7 @@ function TableBody({
|
|
|
2971
2971
|
return /* @__PURE__ */ jsx("tbody", { children: rows.map((row, i) => {
|
|
2972
2972
|
const rowKey = getRowKey(row, i);
|
|
2973
2973
|
const isExpanded = expanded.has(rowKey);
|
|
2974
|
-
return /* @__PURE__ */ jsxs(
|
|
2974
|
+
return /* @__PURE__ */ jsxs(React12.Fragment, { children: [
|
|
2975
2975
|
/* @__PURE__ */ jsxs(
|
|
2976
2976
|
"tr",
|
|
2977
2977
|
{
|
|
@@ -3387,29 +3387,39 @@ function Sidebar({
|
|
|
3387
3387
|
}
|
|
3388
3388
|
) });
|
|
3389
3389
|
}
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3390
|
+
var MegaMenuContext = createContext({ align: "start" });
|
|
3391
|
+
function MegaMenu({
|
|
3392
|
+
children,
|
|
3393
|
+
align = "start",
|
|
3394
|
+
delayDuration = 200,
|
|
3395
|
+
responsive = true,
|
|
3396
|
+
mobileLabel = "Menu",
|
|
3397
|
+
className = "",
|
|
3398
|
+
style,
|
|
3399
|
+
"aria-label": ariaLabel
|
|
3400
|
+
}) {
|
|
3401
|
+
return /* @__PURE__ */ jsxs(MegaMenuContext.Provider, { value: { align }, children: [
|
|
3402
|
+
/* @__PURE__ */ jsx(
|
|
3403
|
+
NavigationMenu.Root,
|
|
3404
|
+
{
|
|
3405
|
+
delayDuration,
|
|
3406
|
+
"aria-label": ariaLabel,
|
|
3407
|
+
className: [
|
|
3408
|
+
"relative z-10 w-full",
|
|
3409
|
+
responsive ? "hidden md:flex" : "flex",
|
|
3410
|
+
className
|
|
3411
|
+
].filter(Boolean).join(" "),
|
|
3412
|
+
style,
|
|
3413
|
+
children: /* @__PURE__ */ jsx(NavigationMenu.List, { className: "flex items-center gap-1", children })
|
|
3414
|
+
}
|
|
3415
|
+
),
|
|
3416
|
+
responsive && /* @__PURE__ */ jsx(MegaMenuMobile, { label: mobileLabel, children })
|
|
3417
|
+
] });
|
|
3410
3418
|
}
|
|
3411
3419
|
var TOP_ITEM = "group/top inline-flex items-center gap-1.5 h-10 px-3 rounded-md text-sm font-medium select-none text-foreground-secondary hover:text-foreground hover:bg-surface-raised data-[state=open]:text-accent data-[active]:text-accent transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-accent";
|
|
3412
3420
|
function MegaMenuItem({ label, icon, href, children, className = "" }) {
|
|
3421
|
+
const { align } = useContext(MegaMenuContext);
|
|
3422
|
+
const pos = align === "center" ? "left-1/2 -translate-x-1/2" : align === "end" ? "right-0" : "left-0";
|
|
3413
3423
|
if (!children) {
|
|
3414
3424
|
return /* @__PURE__ */ jsx(NavigationMenu.Item, { children: /* @__PURE__ */ jsxs(NavigationMenu.Link, { href, className: [TOP_ITEM, className].filter(Boolean).join(" "), children: [
|
|
3415
3425
|
icon && /* @__PURE__ */ jsx("span", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center", children: icon }),
|
|
@@ -3433,22 +3443,36 @@ function MegaMenuItem({ label, icon, href, children, className = "" }) {
|
|
|
3433
3443
|
}
|
|
3434
3444
|
)
|
|
3435
3445
|
] }),
|
|
3436
|
-
/* @__PURE__ */ jsx(
|
|
3446
|
+
/* @__PURE__ */ jsx(
|
|
3447
|
+
NavigationMenu.Content,
|
|
3448
|
+
{
|
|
3449
|
+
className: `absolute top-full mt-2 ${pos} z-20 overflow-hidden rounded-lg border border-border bg-surface shadow-lg
|
|
3450
|
+
data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95
|
|
3451
|
+
data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,
|
|
3452
|
+
children
|
|
3453
|
+
}
|
|
3454
|
+
)
|
|
3437
3455
|
] });
|
|
3438
3456
|
}
|
|
3439
|
-
var COLS = { 1: "grid-cols-1", 2: "grid-cols-2", 3: "grid-cols-3", 4: "grid-cols-4" };
|
|
3440
3457
|
function MegaMenuPanel({ children, columns, className = "", style }) {
|
|
3458
|
+
const layout = columns ? {
|
|
3459
|
+
gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,
|
|
3460
|
+
width: `min(92vw, ${columns * 272}px)`
|
|
3461
|
+
} : {
|
|
3462
|
+
gridTemplateColumns: "repeat(auto-fit, minmax(220px, 1fr))",
|
|
3463
|
+
width: "min(92vw, 760px)"
|
|
3464
|
+
};
|
|
3441
3465
|
return /* @__PURE__ */ jsx(
|
|
3442
3466
|
"div",
|
|
3443
3467
|
{
|
|
3444
|
-
className: ["grid gap-6 p-6",
|
|
3445
|
-
style,
|
|
3468
|
+
className: ["grid gap-6 p-6", className].filter(Boolean).join(" "),
|
|
3469
|
+
style: { ...layout, maxWidth: "min(92vw, 960px)", ...style },
|
|
3446
3470
|
children
|
|
3447
3471
|
}
|
|
3448
3472
|
);
|
|
3449
3473
|
}
|
|
3450
3474
|
function MegaMenuSection({ title, children, className = "" }) {
|
|
3451
|
-
return /* @__PURE__ */ jsxs("div", { className: ["min-w-
|
|
3475
|
+
return /* @__PURE__ */ jsxs("div", { className: ["min-w-0 flex flex-col", className].filter(Boolean).join(" "), children: [
|
|
3452
3476
|
title && /* @__PURE__ */ jsx("p", { className: "px-3 pb-1.5 text-[11px] font-semibold uppercase tracking-widest text-foreground-muted select-none", children: title }),
|
|
3453
3477
|
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0.5", children })
|
|
3454
3478
|
] });
|
|
@@ -3477,7 +3501,124 @@ function MegaMenuLink({ href, icon, description, active, onClick, children, clas
|
|
|
3477
3501
|
);
|
|
3478
3502
|
}
|
|
3479
3503
|
function MegaMenuFeatured({ children, className = "" }) {
|
|
3480
|
-
return /* @__PURE__ */ jsx("div", { className: ["min-w-
|
|
3504
|
+
return /* @__PURE__ */ jsx("div", { className: ["min-w-0 rounded-lg bg-surface-raised border border-border p-4 flex flex-col", className].filter(Boolean).join(" "), children });
|
|
3505
|
+
}
|
|
3506
|
+
var elementsOfType = (children, type) => React12.Children.toArray(children).filter(
|
|
3507
|
+
(c) => React12.isValidElement(c) && c.type === type
|
|
3508
|
+
);
|
|
3509
|
+
var MOBILE_CHEVRON = /* @__PURE__ */ jsx(
|
|
3510
|
+
"svg",
|
|
3511
|
+
{
|
|
3512
|
+
viewBox: "0 0 24 24",
|
|
3513
|
+
fill: "none",
|
|
3514
|
+
stroke: "currentColor",
|
|
3515
|
+
strokeWidth: 2,
|
|
3516
|
+
"aria-hidden": "true",
|
|
3517
|
+
className: "h-4 w-4 flex-shrink-0 text-foreground-muted transition-transform duration-200",
|
|
3518
|
+
children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" })
|
|
3519
|
+
}
|
|
3520
|
+
);
|
|
3521
|
+
function MobileLinkRow({ link, onNavigate }) {
|
|
3522
|
+
const { href, icon, description, active, onClick, children } = link.props;
|
|
3523
|
+
return /* @__PURE__ */ jsxs(
|
|
3524
|
+
"a",
|
|
3525
|
+
{
|
|
3526
|
+
href,
|
|
3527
|
+
onClick: (e) => {
|
|
3528
|
+
onClick?.(e);
|
|
3529
|
+
onNavigate();
|
|
3530
|
+
},
|
|
3531
|
+
"data-active": active ? "" : void 0,
|
|
3532
|
+
className: "flex items-start gap-3 rounded-md p-2.5 transition-colors select-none\n hover:bg-surface-raised focus:outline-none focus-visible:ring-2 focus-visible:ring-accent\n data-[active]:bg-surface-raised",
|
|
3533
|
+
children: [
|
|
3534
|
+
icon && /* @__PURE__ */ jsx("span", { className: "flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-md bg-surface-raised text-accent", children: /* @__PURE__ */ jsx("span", { className: "h-[17px] w-[17px] inline-flex items-center justify-center", children: icon }) }),
|
|
3535
|
+
/* @__PURE__ */ jsxs("span", { className: "flex flex-col min-w-0", children: [
|
|
3536
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-foreground data-[active]:text-accent", children }),
|
|
3537
|
+
description && /* @__PURE__ */ jsx("span", { className: "text-xs text-foreground-muted leading-snug mt-0.5", children: description })
|
|
3538
|
+
] })
|
|
3539
|
+
]
|
|
3540
|
+
}
|
|
3541
|
+
);
|
|
3542
|
+
}
|
|
3543
|
+
function MobilePanel({ panel, onNavigate }) {
|
|
3544
|
+
const nodes = React12.Children.toArray(panel.props.children);
|
|
3545
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 px-2 pb-3 pt-1", children: nodes.map((node, i) => {
|
|
3546
|
+
if (!React12.isValidElement(node)) return null;
|
|
3547
|
+
const el = node;
|
|
3548
|
+
if (el.type === MegaMenuSection) {
|
|
3549
|
+
const { title, children } = el.props;
|
|
3550
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
3551
|
+
title && /* @__PURE__ */ jsx("p", { className: "px-2.5 pb-1 text-[11px] font-semibold uppercase tracking-widest text-foreground-muted select-none", children: title }),
|
|
3552
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0.5", children: elementsOfType(children, MegaMenuLink).map((lnk, j) => /* @__PURE__ */ jsx(MobileLinkRow, { link: lnk, onNavigate }, j)) })
|
|
3553
|
+
] }, i);
|
|
3554
|
+
}
|
|
3555
|
+
if (el.type === MegaMenuFeatured) {
|
|
3556
|
+
return /* @__PURE__ */ jsx("div", { className: "rounded-lg bg-surface-raised border border-border p-3 flex flex-col", children: el.props.children }, i);
|
|
3557
|
+
}
|
|
3558
|
+
return /* @__PURE__ */ jsx("div", { children: node }, i);
|
|
3559
|
+
}) });
|
|
3560
|
+
}
|
|
3561
|
+
function MegaMenuMobile({
|
|
3562
|
+
children,
|
|
3563
|
+
label
|
|
3564
|
+
}) {
|
|
3565
|
+
const [open, setOpen] = useState(false);
|
|
3566
|
+
const [expanded, setExpanded] = useState(null);
|
|
3567
|
+
const items = elementsOfType(children, MegaMenuItem);
|
|
3568
|
+
return /* @__PURE__ */ jsxs("div", { className: "md:hidden w-full", children: [
|
|
3569
|
+
/* @__PURE__ */ jsxs(
|
|
3570
|
+
"button",
|
|
3571
|
+
{
|
|
3572
|
+
type: "button",
|
|
3573
|
+
onClick: () => setOpen((o) => !o),
|
|
3574
|
+
"aria-expanded": open,
|
|
3575
|
+
className: "inline-flex items-center gap-2 h-10 px-3 rounded-md text-sm font-medium\n text-foreground-secondary hover:text-foreground hover:bg-surface-raised\n focus:outline-none focus-visible:ring-2 focus-visible:ring-accent transition-colors",
|
|
3576
|
+
children: [
|
|
3577
|
+
/* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true", className: "h-5 w-5", children: open ? /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 6l12 12M18 6L6 18" }) : /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4 7h16M4 12h16M4 17h16" }) }),
|
|
3578
|
+
label
|
|
3579
|
+
]
|
|
3580
|
+
}
|
|
3581
|
+
),
|
|
3582
|
+
open && /* @__PURE__ */ jsx("div", { className: "mt-2 overflow-hidden rounded-lg border border-border bg-surface shadow-lg", children: items.map((item, i) => {
|
|
3583
|
+
const { label: itemLabel, icon, href, children: panel } = item.props;
|
|
3584
|
+
const hasPanel = panel != null;
|
|
3585
|
+
const isOpen = expanded === i;
|
|
3586
|
+
const rowBase = "flex w-full items-center gap-2 px-3 h-11 text-sm font-medium text-foreground-secondary hover:bg-surface-raised hover:text-foreground transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-accent";
|
|
3587
|
+
const divider = i > 0 ? "border-t border-border" : "";
|
|
3588
|
+
if (!hasPanel) {
|
|
3589
|
+
return /* @__PURE__ */ jsxs(
|
|
3590
|
+
"a",
|
|
3591
|
+
{
|
|
3592
|
+
href,
|
|
3593
|
+
onClick: () => setOpen(false),
|
|
3594
|
+
className: [rowBase, divider].filter(Boolean).join(" "),
|
|
3595
|
+
children: [
|
|
3596
|
+
icon && /* @__PURE__ */ jsx("span", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center", children: icon }),
|
|
3597
|
+
itemLabel
|
|
3598
|
+
]
|
|
3599
|
+
},
|
|
3600
|
+
i
|
|
3601
|
+
);
|
|
3602
|
+
}
|
|
3603
|
+
return /* @__PURE__ */ jsxs("div", { className: divider || void 0, children: [
|
|
3604
|
+
/* @__PURE__ */ jsxs(
|
|
3605
|
+
"button",
|
|
3606
|
+
{
|
|
3607
|
+
type: "button",
|
|
3608
|
+
onClick: () => setExpanded(isOpen ? null : i),
|
|
3609
|
+
"aria-expanded": isOpen,
|
|
3610
|
+
className: [rowBase, isOpen ? "text-accent" : ""].filter(Boolean).join(" "),
|
|
3611
|
+
children: [
|
|
3612
|
+
icon && /* @__PURE__ */ jsx("span", { className: "flex h-4 w-4 flex-shrink-0 items-center justify-center", children: icon }),
|
|
3613
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 text-left", children: itemLabel }),
|
|
3614
|
+
/* @__PURE__ */ jsx("span", { className: isOpen ? "rotate-180" : "", children: MOBILE_CHEVRON })
|
|
3615
|
+
]
|
|
3616
|
+
}
|
|
3617
|
+
),
|
|
3618
|
+
isOpen && /* @__PURE__ */ jsx(MobilePanel, { panel, onNavigate: () => setOpen(false) })
|
|
3619
|
+
] }, i);
|
|
3620
|
+
}) })
|
|
3621
|
+
] });
|
|
3481
3622
|
}
|
|
3482
3623
|
MegaMenu.Item = MegaMenuItem;
|
|
3483
3624
|
MegaMenu.Panel = MegaMenuPanel;
|
|
@@ -3695,7 +3836,7 @@ function ThemeProvider({
|
|
|
3695
3836
|
className = "",
|
|
3696
3837
|
style
|
|
3697
3838
|
}) {
|
|
3698
|
-
const id =
|
|
3839
|
+
const id = React12.useId().replace(/:/g, "");
|
|
3699
3840
|
const scopeClass = `geo-th-${id}`;
|
|
3700
3841
|
const divRef = useRef(null);
|
|
3701
3842
|
useEffect(() => {
|
|
@@ -5699,7 +5840,7 @@ function OtpInput({
|
|
|
5699
5840
|
emit(valid.join(""));
|
|
5700
5841
|
focusBox(valid.length);
|
|
5701
5842
|
};
|
|
5702
|
-
return /* @__PURE__ */ jsx(Field, { className, label, htmlFor, errorId, errorMessage, required, layout, helperText, children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", role: "group", "aria-label": typeof label === "string" ? label : "One-time code", children: chars.map((char, idx) => /* @__PURE__ */ jsxs(
|
|
5843
|
+
return /* @__PURE__ */ jsx(Field, { className, label, htmlFor, errorId, errorMessage, required, layout, helperText, children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", role: "group", "aria-label": typeof label === "string" ? label : "One-time code", children: chars.map((char, idx) => /* @__PURE__ */ jsxs(React12.Fragment, { children: [
|
|
5703
5844
|
/* @__PURE__ */ jsx(
|
|
5704
5845
|
"input",
|
|
5705
5846
|
{
|