@geomak/ui 7.5.0 → 7.5.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 +339 -322
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -5
- package/dist/index.d.ts +12 -5
- package/dist/index.js +47 -30
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -370,29 +370,32 @@ declare function Typography({ variant, as, color, weight, align, truncate, muted
|
|
|
370
370
|
|
|
371
371
|
type IconButtonVariant = 'primary' | 'bordered' | 'ghost';
|
|
372
372
|
interface IconButtonProps {
|
|
373
|
-
icon?:
|
|
374
|
-
onClick?:
|
|
373
|
+
icon?: react__default.ReactNode;
|
|
374
|
+
onClick?: react__default.MouseEventHandler<HTMLButtonElement>;
|
|
375
375
|
/** Visual style. Defaults to `'primary'`. */
|
|
376
376
|
type?: IconButtonVariant;
|
|
377
377
|
buttonType?: 'button' | 'submit' | 'reset';
|
|
378
378
|
disabled?: boolean;
|
|
379
379
|
size?: 'sm' | 'md' | 'lg';
|
|
380
380
|
loading?: boolean;
|
|
381
|
-
loadingIcon?:
|
|
381
|
+
loadingIcon?: react__default.ReactNode;
|
|
382
382
|
title?: string;
|
|
383
383
|
/** Extra classes appended to the button. */
|
|
384
384
|
className?: string;
|
|
385
385
|
/** Inline style on the button. */
|
|
386
|
-
style?:
|
|
386
|
+
style?: react__default.CSSProperties;
|
|
387
387
|
}
|
|
388
388
|
/**
|
|
389
389
|
* Square icon-only button.
|
|
390
390
|
*
|
|
391
|
+
* Uses `React.forwardRef` so it works as a Radix `asChild` trigger (Popover,
|
|
392
|
+
* PopConfirm, Tooltip, etc.) — those need a DOM ref to anchor floating content.
|
|
393
|
+
*
|
|
391
394
|
* @example
|
|
392
395
|
* <IconButton icon={<Icon.Search />} onClick={doSearch} />
|
|
393
396
|
* <IconButton type="bordered" icon={<Icon.Edit />} />
|
|
394
397
|
*/
|
|
395
|
-
declare
|
|
398
|
+
declare const IconButton: react__default.ForwardRefExoticComponent<IconButtonProps & react__default.RefAttributes<HTMLButtonElement>>;
|
|
396
399
|
|
|
397
400
|
interface ButtonProps extends Omit<react__default.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'content'> {
|
|
398
401
|
/** Button content (text or nodes). */
|
|
@@ -4746,7 +4749,10 @@ declare class FormStore {
|
|
|
4746
4749
|
errors: ErrorMap;
|
|
4747
4750
|
touched: Record<string, boolean>;
|
|
4748
4751
|
submitted: boolean;
|
|
4752
|
+
/** True while async field validation runs. */
|
|
4749
4753
|
validating: boolean;
|
|
4754
|
+
/** True while the submit handler (`onFinish` / `action`) is executing. */
|
|
4755
|
+
submitting: boolean;
|
|
4750
4756
|
readonly initialValues: FormValues;
|
|
4751
4757
|
private rules;
|
|
4752
4758
|
readonly validateOn: ValidateTrigger[];
|
|
@@ -4778,6 +4784,7 @@ declare class FormStore {
|
|
|
4778
4784
|
validate?: boolean;
|
|
4779
4785
|
}) => void;
|
|
4780
4786
|
setSubmitted: (v: boolean) => void;
|
|
4787
|
+
setSubmitting: (v: boolean) => void;
|
|
4781
4788
|
validateField(name: string): Promise<string | undefined>;
|
|
4782
4789
|
validateAll(): Promise<ErrorMap>;
|
|
4783
4790
|
reset: (values?: FormValues) => void;
|
package/dist/index.d.ts
CHANGED
|
@@ -370,29 +370,32 @@ declare function Typography({ variant, as, color, weight, align, truncate, muted
|
|
|
370
370
|
|
|
371
371
|
type IconButtonVariant = 'primary' | 'bordered' | 'ghost';
|
|
372
372
|
interface IconButtonProps {
|
|
373
|
-
icon?:
|
|
374
|
-
onClick?:
|
|
373
|
+
icon?: react__default.ReactNode;
|
|
374
|
+
onClick?: react__default.MouseEventHandler<HTMLButtonElement>;
|
|
375
375
|
/** Visual style. Defaults to `'primary'`. */
|
|
376
376
|
type?: IconButtonVariant;
|
|
377
377
|
buttonType?: 'button' | 'submit' | 'reset';
|
|
378
378
|
disabled?: boolean;
|
|
379
379
|
size?: 'sm' | 'md' | 'lg';
|
|
380
380
|
loading?: boolean;
|
|
381
|
-
loadingIcon?:
|
|
381
|
+
loadingIcon?: react__default.ReactNode;
|
|
382
382
|
title?: string;
|
|
383
383
|
/** Extra classes appended to the button. */
|
|
384
384
|
className?: string;
|
|
385
385
|
/** Inline style on the button. */
|
|
386
|
-
style?:
|
|
386
|
+
style?: react__default.CSSProperties;
|
|
387
387
|
}
|
|
388
388
|
/**
|
|
389
389
|
* Square icon-only button.
|
|
390
390
|
*
|
|
391
|
+
* Uses `React.forwardRef` so it works as a Radix `asChild` trigger (Popover,
|
|
392
|
+
* PopConfirm, Tooltip, etc.) — those need a DOM ref to anchor floating content.
|
|
393
|
+
*
|
|
391
394
|
* @example
|
|
392
395
|
* <IconButton icon={<Icon.Search />} onClick={doSearch} />
|
|
393
396
|
* <IconButton type="bordered" icon={<Icon.Edit />} />
|
|
394
397
|
*/
|
|
395
|
-
declare
|
|
398
|
+
declare const IconButton: react__default.ForwardRefExoticComponent<IconButtonProps & react__default.RefAttributes<HTMLButtonElement>>;
|
|
396
399
|
|
|
397
400
|
interface ButtonProps extends Omit<react__default.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'content'> {
|
|
398
401
|
/** Button content (text or nodes). */
|
|
@@ -4746,7 +4749,10 @@ declare class FormStore {
|
|
|
4746
4749
|
errors: ErrorMap;
|
|
4747
4750
|
touched: Record<string, boolean>;
|
|
4748
4751
|
submitted: boolean;
|
|
4752
|
+
/** True while async field validation runs. */
|
|
4749
4753
|
validating: boolean;
|
|
4754
|
+
/** True while the submit handler (`onFinish` / `action`) is executing. */
|
|
4755
|
+
submitting: boolean;
|
|
4750
4756
|
readonly initialValues: FormValues;
|
|
4751
4757
|
private rules;
|
|
4752
4758
|
readonly validateOn: ValidateTrigger[];
|
|
@@ -4778,6 +4784,7 @@ declare class FormStore {
|
|
|
4778
4784
|
validate?: boolean;
|
|
4779
4785
|
}) => void;
|
|
4780
4786
|
setSubmitted: (v: boolean) => void;
|
|
4787
|
+
setSubmitting: (v: boolean) => void;
|
|
4781
4788
|
validateField(name: string): Promise<string | undefined>;
|
|
4782
4789
|
validateAll(): Promise<ErrorMap>;
|
|
4783
4790
|
reset: (values?: FormValues) => void;
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { icons_default as Icon, createIcon } from './chunk-KAFJJO5O.js';
|
|
2
2
|
import { colors_default } from './chunk-DXOWXLKK.js';
|
|
3
3
|
export { colors_default as COLORS, PALETTE as palette, semanticTokens, vars } from './chunk-DXOWXLKK.js';
|
|
4
|
-
import
|
|
4
|
+
import React31, { useMemo, createContext, useState, useEffect, useId, useCallback, useRef, useContext, useSyncExternalStore, useLayoutEffect } from 'react';
|
|
5
5
|
import { createPortal } from 'react-dom';
|
|
6
|
-
import {
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
8
8
|
import * as DropdownMenu2 from '@radix-ui/react-dropdown-menu';
|
|
9
9
|
import * as Dialog from '@radix-ui/react-dialog';
|
|
@@ -452,7 +452,7 @@ function Typography({
|
|
|
452
452
|
}
|
|
453
453
|
);
|
|
454
454
|
}
|
|
455
|
-
|
|
455
|
+
var IconButton = React31.forwardRef(function IconButton2({
|
|
456
456
|
icon,
|
|
457
457
|
onClick,
|
|
458
458
|
type = "primary",
|
|
@@ -464,7 +464,7 @@ function IconButton({
|
|
|
464
464
|
title,
|
|
465
465
|
className = "",
|
|
466
466
|
style
|
|
467
|
-
}) {
|
|
467
|
+
}, ref) {
|
|
468
468
|
const colorScheme = useMemo(() => {
|
|
469
469
|
if (type === "primary") {
|
|
470
470
|
return "bg-accent text-accent-fg hover:bg-accent-hover";
|
|
@@ -480,6 +480,7 @@ function IconButton({
|
|
|
480
480
|
return /* @__PURE__ */ jsx(
|
|
481
481
|
"button",
|
|
482
482
|
{
|
|
483
|
+
ref,
|
|
483
484
|
type: buttonType,
|
|
484
485
|
disabled: disabled || loading,
|
|
485
486
|
onClick,
|
|
@@ -490,7 +491,9 @@ function IconButton({
|
|
|
490
491
|
children: loading ? loadingIcon : icon
|
|
491
492
|
}
|
|
492
493
|
);
|
|
493
|
-
}
|
|
494
|
+
});
|
|
495
|
+
IconButton.displayName = "IconButton";
|
|
496
|
+
var IconButton_default = IconButton;
|
|
494
497
|
var VARIANT_CLASSES = {
|
|
495
498
|
primary: [
|
|
496
499
|
"bg-accent text-accent-fg",
|
|
@@ -558,7 +561,7 @@ var SIZE_CLASSES = {
|
|
|
558
561
|
md: "h-9 px-4 text-sm gap-1.5 rounded-lg",
|
|
559
562
|
lg: "h-11 px-5 text-sm gap-2 rounded-xl"
|
|
560
563
|
};
|
|
561
|
-
var Button =
|
|
564
|
+
var Button = React31.forwardRef(function Button2({
|
|
562
565
|
content,
|
|
563
566
|
variant = "primary",
|
|
564
567
|
size = "md",
|
|
@@ -666,7 +669,7 @@ function MenuButton({
|
|
|
666
669
|
"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
|
|
667
670
|
"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95"
|
|
668
671
|
].join(" "),
|
|
669
|
-
children: items.map((item) => /* @__PURE__ */ jsxs(
|
|
672
|
+
children: items.map((item) => /* @__PURE__ */ jsxs(React31.Fragment, { children: [
|
|
670
673
|
item.separatorBefore && /* @__PURE__ */ jsx(DropdownMenu2.Separator, { className: "my-1 h-px bg-border" }),
|
|
671
674
|
/* @__PURE__ */ jsxs(
|
|
672
675
|
DropdownMenu2.Item,
|
|
@@ -1754,7 +1757,7 @@ function Kbd({
|
|
|
1754
1757
|
style
|
|
1755
1758
|
}) {
|
|
1756
1759
|
if (keys && keys.length > 0) {
|
|
1757
|
-
return /* @__PURE__ */ jsx("span", { className: cx("inline-flex items-center gap-1", className), style, children: keys.map((k, i) => /* @__PURE__ */ jsxs(
|
|
1760
|
+
return /* @__PURE__ */ jsx("span", { className: cx("inline-flex items-center gap-1", className), style, children: keys.map((k, i) => /* @__PURE__ */ jsxs(React31.Fragment, { children: [
|
|
1758
1761
|
i > 0 && /* @__PURE__ */ jsx("span", { className: "text-foreground-muted text-xs select-none", children: separator }),
|
|
1759
1762
|
/* @__PURE__ */ jsx("kbd", { className: [cap, SIZE3[size]].join(" "), children: k })
|
|
1760
1763
|
] }, `${k}-${i}`)) });
|
|
@@ -1846,7 +1849,7 @@ function FlatCarousel({
|
|
|
1846
1849
|
style
|
|
1847
1850
|
}) {
|
|
1848
1851
|
const scrollerRef = useRef(null);
|
|
1849
|
-
const slides =
|
|
1852
|
+
const slides = React31.Children.toArray(children);
|
|
1850
1853
|
const [active, setActive] = useState(0);
|
|
1851
1854
|
const [atStart, setAtStart] = useState(true);
|
|
1852
1855
|
const [atEnd, setAtEnd] = useState(false);
|
|
@@ -1901,7 +1904,7 @@ function RotatingCarousel({
|
|
|
1901
1904
|
className = "",
|
|
1902
1905
|
style
|
|
1903
1906
|
}) {
|
|
1904
|
-
const slides =
|
|
1907
|
+
const slides = React31.Children.toArray(children);
|
|
1905
1908
|
const count = slides.length;
|
|
1906
1909
|
const [active, setActive] = useState(0);
|
|
1907
1910
|
const reduced = useReducedMotion();
|
|
@@ -2260,7 +2263,7 @@ function Chat({
|
|
|
2260
2263
|
}
|
|
2261
2264
|
),
|
|
2262
2265
|
/* @__PURE__ */ jsx(
|
|
2263
|
-
|
|
2266
|
+
IconButton_default,
|
|
2264
2267
|
{
|
|
2265
2268
|
type: "primary",
|
|
2266
2269
|
icon: /* @__PURE__ */ jsx(SendIcon, {}),
|
|
@@ -2881,8 +2884,8 @@ function Scheduler({
|
|
|
2881
2884
|
children: [
|
|
2882
2885
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 border-b border-border px-4 py-3", children: [
|
|
2883
2886
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2884
|
-
/* @__PURE__ */ jsx(
|
|
2885
|
-
/* @__PURE__ */ jsx(
|
|
2887
|
+
/* @__PURE__ */ jsx(IconButton_default, { type: "bordered", size: "sm", icon: /* @__PURE__ */ jsx(Chevron4, { dir: "left" }), title: "Previous", onClick: () => go(-1) }),
|
|
2888
|
+
/* @__PURE__ */ jsx(IconButton_default, { type: "bordered", size: "sm", icon: /* @__PURE__ */ jsx(Chevron4, { dir: "right" }), title: "Next", onClick: () => go(1) }),
|
|
2886
2889
|
/* @__PURE__ */ jsx(Button_default, { variant: "ghost", size: "sm", content: "Today", onClick: goToday }),
|
|
2887
2890
|
/* @__PURE__ */ jsx(
|
|
2888
2891
|
MonthYearPicker,
|
|
@@ -3006,9 +3009,9 @@ function MonthYearPicker({ label, cursor, onPick }) {
|
|
|
3006
3009
|
].join(" "),
|
|
3007
3010
|
children: [
|
|
3008
3011
|
/* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
3009
|
-
/* @__PURE__ */ jsx(
|
|
3012
|
+
/* @__PURE__ */ jsx(IconButton_default, { size: "sm", type: "bordered", icon: /* @__PURE__ */ jsx(Chevron4, { dir: "left" }), title: "Previous year", onClick: () => setViewYear((y) => y - 1) }),
|
|
3010
3013
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold tabular-nums text-foreground", children: viewYear }),
|
|
3011
|
-
/* @__PURE__ */ jsx(
|
|
3014
|
+
/* @__PURE__ */ jsx(IconButton_default, { size: "sm", type: "bordered", icon: /* @__PURE__ */ jsx(Chevron4, { dir: "right" }), title: "Next year", onClick: () => setViewYear((y) => y + 1) })
|
|
3012
3015
|
] }),
|
|
3013
3016
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-1", children: MONTHS_SHORT.map((m, i) => {
|
|
3014
3017
|
const current = i === cursor.getMonth() && viewYear === cursor.getFullYear();
|
|
@@ -3392,7 +3395,7 @@ function CartButton({
|
|
|
3392
3395
|
const { getItemCount } = useCart();
|
|
3393
3396
|
const count = getItemCount();
|
|
3394
3397
|
return /* @__PURE__ */ jsx(Badge, { count, max, tone: badgeTone, className, children: /* @__PURE__ */ jsx(
|
|
3395
|
-
|
|
3398
|
+
IconButton_default,
|
|
3396
3399
|
{
|
|
3397
3400
|
type: variant,
|
|
3398
3401
|
icon,
|
|
@@ -3511,7 +3514,10 @@ var FormStore = class {
|
|
|
3511
3514
|
errors = {};
|
|
3512
3515
|
touched = {};
|
|
3513
3516
|
submitted = false;
|
|
3517
|
+
/** True while async field validation runs. */
|
|
3514
3518
|
validating = false;
|
|
3519
|
+
/** True while the submit handler (`onFinish` / `action`) is executing. */
|
|
3520
|
+
submitting = false;
|
|
3515
3521
|
initialValues;
|
|
3516
3522
|
rules;
|
|
3517
3523
|
validateOn;
|
|
@@ -3596,6 +3602,10 @@ var FormStore = class {
|
|
|
3596
3602
|
this.submitted = v;
|
|
3597
3603
|
this.emit();
|
|
3598
3604
|
};
|
|
3605
|
+
setSubmitting = (v) => {
|
|
3606
|
+
this.submitting = v;
|
|
3607
|
+
this.emit();
|
|
3608
|
+
};
|
|
3599
3609
|
// ── validation ─────────────────────────────────────────────────────────────
|
|
3600
3610
|
async validateField(name) {
|
|
3601
3611
|
const err = await runFieldRules(getPath(this.values, name), this.rules[name], this.values);
|
|
@@ -3621,6 +3631,7 @@ var FormStore = class {
|
|
|
3621
3631
|
this.errors = {};
|
|
3622
3632
|
this.touched = {};
|
|
3623
3633
|
this.submitted = false;
|
|
3634
|
+
this.submitting = false;
|
|
3624
3635
|
this.keys = {};
|
|
3625
3636
|
this.fieldCache.clear();
|
|
3626
3637
|
this.emit();
|
|
@@ -3720,7 +3731,8 @@ function useForm(options = {}) {
|
|
|
3720
3731
|
errors: store.errors,
|
|
3721
3732
|
touched: store.touched,
|
|
3722
3733
|
submitted: store.submitted,
|
|
3723
|
-
|
|
3734
|
+
// True for the whole submit cycle: async validation → onFinish execution.
|
|
3735
|
+
isSubmitting: store.submitting || store.validating,
|
|
3724
3736
|
isValid: store.isValid,
|
|
3725
3737
|
getValue: store.getValue,
|
|
3726
3738
|
getValues: store.getValues,
|
|
@@ -3770,7 +3782,12 @@ function Form({
|
|
|
3770
3782
|
return;
|
|
3771
3783
|
}
|
|
3772
3784
|
if (onFinish) {
|
|
3773
|
-
|
|
3785
|
+
store.setSubmitting(true);
|
|
3786
|
+
try {
|
|
3787
|
+
await onFinish(store.getValues());
|
|
3788
|
+
} finally {
|
|
3789
|
+
store.setSubmitting(false);
|
|
3790
|
+
}
|
|
3774
3791
|
return;
|
|
3775
3792
|
}
|
|
3776
3793
|
if (typeof action === "function") {
|
|
@@ -5207,7 +5224,7 @@ function Wizard({
|
|
|
5207
5224
|
] });
|
|
5208
5225
|
}
|
|
5209
5226
|
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" }) });
|
|
5210
|
-
var SearchInput =
|
|
5227
|
+
var SearchInput = React31.forwardRef(function SearchInput2({ value, onChange, disabled, label, htmlFor, placeholder, name, inputStyle, style, layout = "vertical", size = "md", icon, helperText, className }, ref) {
|
|
5211
5228
|
return /* @__PURE__ */ jsx(Field, { className, label, htmlFor, layout, helperText, children: /* @__PURE__ */ jsxs(
|
|
5212
5229
|
"div",
|
|
5213
5230
|
{
|
|
@@ -5505,7 +5522,7 @@ function TableBody({
|
|
|
5505
5522
|
return /* @__PURE__ */ jsx("tbody", { children: rows.map((row, i) => {
|
|
5506
5523
|
const rowKey = getRowKey(row, i);
|
|
5507
5524
|
const isExpanded = expanded.has(rowKey);
|
|
5508
|
-
return /* @__PURE__ */ jsxs(
|
|
5525
|
+
return /* @__PURE__ */ jsxs(React31.Fragment, { children: [
|
|
5509
5526
|
/* @__PURE__ */ jsxs(
|
|
5510
5527
|
"tr",
|
|
5511
5528
|
{
|
|
@@ -5956,7 +5973,7 @@ function FlyoutItems({ items }) {
|
|
|
5956
5973
|
}
|
|
5957
5974
|
function CollapsedFlyout({ item, trigger }) {
|
|
5958
5975
|
const [open, setOpen] = useState(false);
|
|
5959
|
-
const closeTimer =
|
|
5976
|
+
const closeTimer = React31.useRef(void 0);
|
|
5960
5977
|
const openNow = () => {
|
|
5961
5978
|
window.clearTimeout(closeTimer.current);
|
|
5962
5979
|
setOpen(true);
|
|
@@ -5965,7 +5982,7 @@ function CollapsedFlyout({ item, trigger }) {
|
|
|
5965
5982
|
window.clearTimeout(closeTimer.current);
|
|
5966
5983
|
closeTimer.current = window.setTimeout(() => setOpen(false), 150);
|
|
5967
5984
|
};
|
|
5968
|
-
|
|
5985
|
+
React31.useEffect(() => () => window.clearTimeout(closeTimer.current), []);
|
|
5969
5986
|
return /* @__PURE__ */ jsxs(DropdownMenu2.Root, { open, onOpenChange: setOpen, modal: false, children: [
|
|
5970
5987
|
/* @__PURE__ */ jsx(
|
|
5971
5988
|
DropdownMenu2.Trigger,
|
|
@@ -6257,8 +6274,8 @@ function MegaMenuLink({ href, icon, description, active, onClick, children, clas
|
|
|
6257
6274
|
function MegaMenuFeatured({ children, className = "" }) {
|
|
6258
6275
|
return /* @__PURE__ */ jsx("div", { className: cx("min-w-0 rounded-lg bg-surface-raised border border-border p-4 flex flex-col", className), children });
|
|
6259
6276
|
}
|
|
6260
|
-
var elementsOfType = (children, type) =>
|
|
6261
|
-
(c) =>
|
|
6277
|
+
var elementsOfType = (children, type) => React31.Children.toArray(children).filter(
|
|
6278
|
+
(c) => React31.isValidElement(c) && c.type === type
|
|
6262
6279
|
);
|
|
6263
6280
|
var MOBILE_CHEVRON = /* @__PURE__ */ jsx(
|
|
6264
6281
|
"svg",
|
|
@@ -6295,9 +6312,9 @@ function MobileLinkRow({ link, onNavigate }) {
|
|
|
6295
6312
|
);
|
|
6296
6313
|
}
|
|
6297
6314
|
function MobilePanel({ panel, onNavigate }) {
|
|
6298
|
-
const nodes =
|
|
6315
|
+
const nodes = React31.Children.toArray(panel.props.children);
|
|
6299
6316
|
return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 px-2 pb-3 pt-1", children: nodes.map((node, i) => {
|
|
6300
|
-
if (!
|
|
6317
|
+
if (!React31.isValidElement(node)) return null;
|
|
6301
6318
|
const el = node;
|
|
6302
6319
|
if (el.type === MegaMenuSection) {
|
|
6303
6320
|
const { title, children } = el.props;
|
|
@@ -6706,7 +6723,7 @@ function ThemeProvider({
|
|
|
6706
6723
|
className = "",
|
|
6707
6724
|
style
|
|
6708
6725
|
}) {
|
|
6709
|
-
const id =
|
|
6726
|
+
const id = React31.useId().replace(/:/g, "");
|
|
6710
6727
|
const scopeClass = `geo-th-${id}`;
|
|
6711
6728
|
const divRef = useRef(null);
|
|
6712
6729
|
useEffect(() => {
|
|
@@ -9014,7 +9031,7 @@ function OtpInput({
|
|
|
9014
9031
|
emit(valid.join(""));
|
|
9015
9032
|
focusBox(valid.length);
|
|
9016
9033
|
};
|
|
9017
|
-
return /* @__PURE__ */ jsx(Field, { className, label, htmlFor, errorId, errorMessage, required, layout, helperText, children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-2", role: "group", "aria-label": typeof label === "string" ? label : "One-time code", children: chars.map((char, idx) => /* @__PURE__ */ jsxs(
|
|
9034
|
+
return /* @__PURE__ */ jsx(Field, { className, label, htmlFor, errorId, errorMessage, required, layout, helperText, children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-2", role: "group", "aria-label": typeof label === "string" ? label : "One-time code", children: chars.map((char, idx) => /* @__PURE__ */ jsxs(React31.Fragment, { children: [
|
|
9018
9035
|
/* @__PURE__ */ jsx(
|
|
9019
9036
|
"input",
|
|
9020
9037
|
{
|
|
@@ -10073,7 +10090,7 @@ function Blog({
|
|
|
10073
10090
|
post.tag != null && !post.image && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Badge, { tone: "accent", variant: "soft", size: "sm", children: post.tag }) }),
|
|
10074
10091
|
/* @__PURE__ */ jsx("h3", { className: "text-base font-semibold leading-snug text-foreground transition-colors group-hover:text-accent", children: post.title }),
|
|
10075
10092
|
post.excerpt != null && /* @__PURE__ */ jsx("p", { className: "line-clamp-3 text-sm leading-relaxed text-foreground-secondary", children: post.excerpt }),
|
|
10076
|
-
meta.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-auto flex flex-wrap items-center gap-x-2 gap-y-1 pt-3 text-xs text-foreground-muted", children: meta.map((m, j) => /* @__PURE__ */ jsxs(
|
|
10093
|
+
meta.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-auto flex flex-wrap items-center gap-x-2 gap-y-1 pt-3 text-xs text-foreground-muted", children: meta.map((m, j) => /* @__PURE__ */ jsxs(React31.Fragment, { children: [
|
|
10077
10094
|
j > 0 && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }),
|
|
10078
10095
|
/* @__PURE__ */ jsx("span", { children: m })
|
|
10079
10096
|
] }, j)) })
|
|
@@ -10246,6 +10263,6 @@ function LeadCapture({
|
|
|
10246
10263
|
);
|
|
10247
10264
|
}
|
|
10248
10265
|
|
|
10249
|
-
export { Accordion_default as Accordion, AppShell, AutoComplete, Avatar, Badge, Blog, Box, Breadcrumbs, Button_default as Button, CARD_BRANDS, Card_default as Card, CardCarousel, Cart, CartButton, CartProvider, Catalog, CatalogCarousel, CatalogGrid, Chat, Checkbox, Checkout, ColorPicker, ContextMenu, CookieConsent, CreditCardForm, DateRangePicker, Drawer, Dropdown, EmptyCart, FAB, FadingBase, FeatureGrid, Field, FieldHelpIcon, FieldLabel, FileInput, Flex, Form, FormContext, FormField, FormStore, Grid, GridCard, IconButton, Jumbotron, Kbd, LeadCapture, List2 as List, LoadingSpinner, LogoutTimer, MegaMenu_default as MegaMenu, MenuButton, Modal, NotificationProvider, NumberInput, OpaqueGridCard, OtpInput, Parallax, Password, PasswordStrength, PopConfirm, Portal, PricingPlans, RadioGroup, RadioTile, Rating, ScalableContainer, Scheduler, SearchInput_default as SearchInput, SecureLayout, SegmentedControl, Sidebar, SkeletonBox, SkeletonCard, SkeletonCircle, SkeletonText, SlideShow, Slider, Socials, Statistic, Stepper, Switch, Table, Tabs_default as Tabs, TagsInput, DatePicker as Temporal, Testimonials, TextArea, TextInput, ThemeProvider, ThemeSwitch, TimePicker, Timeline, Tooltip, TooltipProvider, TopBar, Tree, TreeSelect, Typography, Video, VirtualList, Wizard, cardNumberError, cvvError, cx, defaultPasswordRules, detectBrand, expiryError, fieldShell, formatCardNumber, formatExpiry, isRequired, luhnValid, onlyDigits, patterns, runFieldRules, scorePassword, useBreakpoint, useCart, useFieldArray, useForm, useFormField, useFormStore, useJwt, useLocalStorage, useMediaQuery, useNotification };
|
|
10266
|
+
export { Accordion_default as Accordion, AppShell, AutoComplete, Avatar, Badge, Blog, Box, Breadcrumbs, Button_default as Button, CARD_BRANDS, Card_default as Card, CardCarousel, Cart, CartButton, CartProvider, Catalog, CatalogCarousel, CatalogGrid, Chat, Checkbox, Checkout, ColorPicker, ContextMenu, CookieConsent, CreditCardForm, DateRangePicker, Drawer, Dropdown, EmptyCart, FAB, FadingBase, FeatureGrid, Field, FieldHelpIcon, FieldLabel, FileInput, Flex, Form, FormContext, FormField, FormStore, Grid, GridCard, IconButton_default as IconButton, Jumbotron, Kbd, LeadCapture, List2 as List, LoadingSpinner, LogoutTimer, MegaMenu_default as MegaMenu, MenuButton, Modal, NotificationProvider, NumberInput, OpaqueGridCard, OtpInput, Parallax, Password, PasswordStrength, PopConfirm, Portal, PricingPlans, RadioGroup, RadioTile, Rating, ScalableContainer, Scheduler, SearchInput_default as SearchInput, SecureLayout, SegmentedControl, Sidebar, SkeletonBox, SkeletonCard, SkeletonCircle, SkeletonText, SlideShow, Slider, Socials, Statistic, Stepper, Switch, Table, Tabs_default as Tabs, TagsInput, DatePicker as Temporal, Testimonials, TextArea, TextInput, ThemeProvider, ThemeSwitch, TimePicker, Timeline, Tooltip, TooltipProvider, TopBar, Tree, TreeSelect, Typography, Video, VirtualList, Wizard, cardNumberError, cvvError, cx, defaultPasswordRules, detectBrand, expiryError, fieldShell, formatCardNumber, formatExpiry, isRequired, luhnValid, onlyDigits, patterns, runFieldRules, scorePassword, useBreakpoint, useCart, useFieldArray, useForm, useFormField, useFormStore, useJwt, useLocalStorage, useMediaQuery, useNotification };
|
|
10250
10267
|
//# sourceMappingURL=index.js.map
|
|
10251
10268
|
//# sourceMappingURL=index.js.map
|