@datatechsolutions/ui 2.7.138 → 2.7.139
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/{chunk-WURM4JVE.mjs → chunk-AMUPPC66.mjs} +13 -6
- package/dist/chunk-AMUPPC66.mjs.map +1 -0
- package/dist/{chunk-6KYBGBI4.mjs → chunk-BTJP5QCD.mjs} +13 -2
- package/dist/{chunk-6KYBGBI4.mjs.map → chunk-BTJP5QCD.mjs.map} +1 -1
- package/dist/{chunk-5IE2FIWT.js → chunk-JYX3ILSA.js} +262 -120
- package/dist/chunk-JYX3ILSA.js.map +1 -0
- package/dist/{chunk-F4FMGGHO.js → chunk-ULPKAD4A.js} +13 -2
- package/dist/{chunk-F4FMGGHO.js.map → chunk-ULPKAD4A.js.map} +1 -1
- package/dist/{chunk-3OGFL5RQ.mjs → chunk-WTPYTOK4.mjs} +263 -121
- package/dist/chunk-WTPYTOK4.mjs.map +1 -0
- package/dist/{chunk-6Y3DK5EC.js → chunk-YCIUVIFN.js} +68 -61
- package/dist/chunk-YCIUVIFN.js.map +1 -0
- package/dist/index.d.mts +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +337 -337
- package/dist/index.mjs +1 -1
- package/dist/workflow/contracts.d.mts +13 -3
- package/dist/workflow/contracts.d.ts +13 -3
- package/dist/workflow/index.js +126 -125
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/index.mjs +6 -5
- package/dist/workflow/index.mjs.map +1 -1
- package/dist/workflow/utils.js +4 -4
- package/dist/workflow/utils.mjs +1 -1
- package/dist/workflow/workflow-canvas.js +4 -4
- package/dist/workflow/workflow-canvas.mjs +3 -3
- package/package.json +1 -1
- package/dist/chunk-3OGFL5RQ.mjs.map +0 -1
- package/dist/chunk-5IE2FIWT.js.map +0 -1
- package/dist/chunk-6Y3DK5EC.js.map +0 -1
- package/dist/chunk-WURM4JVE.mjs.map +0 -1
|
@@ -5,7 +5,7 @@ import { Button as Button$1, Transition, Dialog, TransitionChild, DialogPanel, D
|
|
|
5
5
|
import clsx, { clsx as clsx$1 } from 'clsx';
|
|
6
6
|
import * as React11 from 'react';
|
|
7
7
|
import React11__default, { forwardRef, useId, useState, useCallback, createContext, memo, useRef, useEffect, Fragment as Fragment$1, useMemo, useContext, Suspense } from 'react';
|
|
8
|
-
import { AnimatePresence, motion, useMotionValue, useTransform, animate, useInView, useSpring } from 'framer-motion';
|
|
8
|
+
import { AnimatePresence, motion, useReducedMotion, useMotionValue, useTransform, animate, useInView, useSpring } from 'framer-motion';
|
|
9
9
|
import NextLink from 'next/link';
|
|
10
10
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
11
11
|
import { useTranslations, useLocale } from 'next-intl';
|
|
@@ -737,7 +737,8 @@ function IconButton({
|
|
|
737
737
|
isIosColor && finalColor === "ios-red" && "text-[#FF3B30] dark:text-[#FF453A]",
|
|
738
738
|
isIosColor && finalColor === "ios-green" && "text-[#34C759] dark:text-[#30D158]",
|
|
739
739
|
isIosColor && finalColor === "ios-orange" && "text-[#FF9500] dark:text-[#FF9F0A]",
|
|
740
|
-
isIosColor && finalColor === "ios-purple" && "text-[#AF52DE] dark:text-[#BF5AF2]"
|
|
740
|
+
isIosColor && finalColor === "ios-purple" && "text-[#AF52DE] dark:text-[#BF5AF2]",
|
|
741
|
+
!isIosColor && "text-slate-700 dark:text-slate-300"
|
|
741
742
|
),
|
|
742
743
|
outline: clsx(
|
|
743
744
|
"bg-transparent border",
|
|
@@ -925,6 +926,7 @@ var Input = forwardRef(
|
|
|
925
926
|
const helperId = `${inputId}-helper`;
|
|
926
927
|
const [isFocused, setIsFocused] = useState(false);
|
|
927
928
|
const [showPassword, setShowPassword] = useState(false);
|
|
929
|
+
const prefersReducedMotion2 = useReducedMotion();
|
|
928
930
|
const hasValue = value !== void 0 && value !== "";
|
|
929
931
|
const characterCount = typeof value === "string" ? value.length : 0;
|
|
930
932
|
const isOverLimit = maxCharacters ? characterCount > maxCharacters : false;
|
|
@@ -959,14 +961,14 @@ var Input = forwardRef(
|
|
|
959
961
|
liquid-surface h-12 w-full rounded-xl border-0
|
|
960
962
|
px-4 py-3 text-base
|
|
961
963
|
text-slate-900 dark:text-white
|
|
962
|
-
placeholder:text-slate-
|
|
964
|
+
placeholder:text-slate-500 dark:placeholder:text-slate-500
|
|
963
965
|
transition-all duration-200
|
|
964
966
|
disabled:cursor-not-allowed disabled:opacity-50
|
|
965
967
|
` : `
|
|
966
968
|
liquid-surface h-11 w-full rounded-xl
|
|
967
969
|
px-3.5 py-2.5 text-base
|
|
968
970
|
text-slate-900 dark:text-white
|
|
969
|
-
placeholder:text-slate-
|
|
971
|
+
placeholder:text-slate-500 dark:placeholder:text-slate-500
|
|
970
972
|
transition-all duration-200
|
|
971
973
|
disabled:cursor-not-allowed disabled:opacity-50
|
|
972
974
|
`;
|
|
@@ -994,7 +996,7 @@ var Input = forwardRef(
|
|
|
994
996
|
exit: { opacity: 0, scale: 0.8 },
|
|
995
997
|
transition: { duration: 0.15 },
|
|
996
998
|
onClick: togglePassword,
|
|
997
|
-
className: "p-
|
|
999
|
+
className: "p-2 min-h-[44px] min-w-[44px] flex items-center justify-center rounded-full text-slate-400 hover:text-slate-600 dark:hover:text-slate-300 hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors",
|
|
998
1000
|
"aria-label": showPassword ? t("hidePassword") : t("showPassword"),
|
|
999
1001
|
children: showPassword ? /* @__PURE__ */ jsx(EyeSlashIcon, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx(EyeIcon, { className: "h-5 w-5" })
|
|
1000
1002
|
}
|
|
@@ -1008,7 +1010,8 @@ var Input = forwardRef(
|
|
|
1008
1010
|
exit: { opacity: 0, scale: 0.8 },
|
|
1009
1011
|
transition: { duration: 0.15 },
|
|
1010
1012
|
onClick: handleClear,
|
|
1011
|
-
className: "p-
|
|
1013
|
+
className: "p-2 min-h-[44px] min-w-[44px] flex items-center justify-center rounded-full text-slate-400 hover:text-slate-600 dark:hover:text-slate-300 hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors",
|
|
1014
|
+
"aria-label": "Clear input",
|
|
1012
1015
|
children: /* @__PURE__ */ jsx(XMarkIcon, { className: "h-5 w-5" })
|
|
1013
1016
|
}
|
|
1014
1017
|
) })
|
|
@@ -1036,7 +1039,7 @@ var Input = forwardRef(
|
|
|
1036
1039
|
children: successMessage
|
|
1037
1040
|
}
|
|
1038
1041
|
),
|
|
1039
|
-
!error && !successMessage && helperText && /* @__PURE__ */ jsx("p", { id: helperId, className: "text-sm text-slate-
|
|
1042
|
+
!error && !successMessage && helperText && /* @__PURE__ */ jsx("p", { id: helperId, className: "text-sm text-slate-600 dark:text-slate-400", children: helperText })
|
|
1040
1043
|
] }),
|
|
1041
1044
|
showCharacterCount && /* @__PURE__ */ jsxs(
|
|
1042
1045
|
"span",
|
|
@@ -1079,16 +1082,33 @@ var Input = forwardRef(
|
|
|
1079
1082
|
...props
|
|
1080
1083
|
}
|
|
1081
1084
|
),
|
|
1082
|
-
/* @__PURE__ */ jsx(
|
|
1085
|
+
prefersReducedMotion2 ? /* @__PURE__ */ jsx(
|
|
1086
|
+
"label",
|
|
1087
|
+
{
|
|
1088
|
+
htmlFor: inputId,
|
|
1089
|
+
className: `
|
|
1090
|
+
absolute left-3.5 pointer-events-none
|
|
1091
|
+
text-slate-500 dark:text-slate-400
|
|
1092
|
+
transition-all duration-200
|
|
1093
|
+
${icon ? "left-11" : ""}
|
|
1094
|
+
`,
|
|
1095
|
+
style: {
|
|
1096
|
+
top: hasValue || isFocused ? "0.5rem" : "50%",
|
|
1097
|
+
transform: hasValue || isFocused ? "none" : "translateY(-50%)",
|
|
1098
|
+
fontSize: hasValue || isFocused ? "0.75rem" : "1rem"
|
|
1099
|
+
},
|
|
1100
|
+
children: label
|
|
1101
|
+
}
|
|
1102
|
+
) : /* @__PURE__ */ jsx(
|
|
1083
1103
|
motion.label,
|
|
1084
1104
|
{
|
|
1085
1105
|
htmlFor: inputId,
|
|
1086
1106
|
className: `
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1107
|
+
absolute left-3.5 pointer-events-none
|
|
1108
|
+
text-slate-500 dark:text-slate-400
|
|
1109
|
+
transition-all duration-200
|
|
1110
|
+
${icon ? "left-11" : ""}
|
|
1111
|
+
`,
|
|
1092
1112
|
initial: false,
|
|
1093
1113
|
animate: {
|
|
1094
1114
|
top: hasValue || isFocused ? "0.5rem" : "50%",
|
|
@@ -1985,24 +2005,46 @@ function HeroSection({
|
|
|
1985
2005
|
labelExtra,
|
|
1986
2006
|
children
|
|
1987
2007
|
}) {
|
|
1988
|
-
return /* @__PURE__ */ jsxs(
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2008
|
+
return /* @__PURE__ */ jsxs(
|
|
2009
|
+
"div",
|
|
2010
|
+
{
|
|
2011
|
+
role: "banner",
|
|
2012
|
+
"data-testid": "hero-section",
|
|
2013
|
+
className: "liquid-surface overflow-hidden rounded-2xl",
|
|
2014
|
+
children: [
|
|
2015
|
+
gradient && /* @__PURE__ */ jsx("div", { className: `h-1.5 w-full bg-gradient-to-r ${gradient}` }),
|
|
2016
|
+
/* @__PURE__ */ jsxs("div", { className: "p-5 sm:p-8", children: [
|
|
2017
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-slate-600 dark:text-white/70", children: [
|
|
2018
|
+
icon,
|
|
2019
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: label }),
|
|
2020
|
+
labelExtra
|
|
2021
|
+
] }),
|
|
2022
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-2 flex flex-wrap items-center justify-between gap-4", children: [
|
|
2023
|
+
/* @__PURE__ */ jsx(
|
|
2024
|
+
"h1",
|
|
2025
|
+
{
|
|
2026
|
+
"data-testid": "hero-title",
|
|
2027
|
+
className: "text-2xl font-bold tracking-tight text-slate-900 dark:text-white sm:text-4xl",
|
|
2028
|
+
children: title
|
|
2029
|
+
}
|
|
2030
|
+
),
|
|
2031
|
+
actions && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: actions })
|
|
2032
|
+
] }),
|
|
2033
|
+
/* @__PURE__ */ jsx(
|
|
2034
|
+
"p",
|
|
2035
|
+
{
|
|
2036
|
+
"data-testid": "hero-subtitle",
|
|
2037
|
+
className: "mt-2 max-w-xl text-sm text-slate-500 dark:text-white/60 sm:mt-3 sm:text-lg",
|
|
2038
|
+
children: subtitle
|
|
2039
|
+
}
|
|
2040
|
+
),
|
|
2041
|
+
toolbar && /* @__PURE__ */ jsx("div", { "data-testid": "hero-toolbar", className: "mt-4", children: toolbar }),
|
|
2042
|
+
badges && /* @__PURE__ */ jsx("div", { className: "mt-6 flex flex-wrap items-center gap-4", children: badges }),
|
|
2043
|
+
children
|
|
2044
|
+
] })
|
|
2045
|
+
]
|
|
2046
|
+
}
|
|
2047
|
+
);
|
|
2006
2048
|
}
|
|
2007
2049
|
var DEFAULT_STYLE_CONFIG = {
|
|
2008
2050
|
default: {
|
|
@@ -2275,6 +2317,9 @@ function StatCard({
|
|
|
2275
2317
|
return /* @__PURE__ */ jsxs(
|
|
2276
2318
|
"div",
|
|
2277
2319
|
{
|
|
2320
|
+
role: "status",
|
|
2321
|
+
"aria-label": label,
|
|
2322
|
+
"data-testid": label ? `stat-card-${label.toLowerCase().replace(/\s+/g, "-")}` : "stat-card",
|
|
2278
2323
|
onClick,
|
|
2279
2324
|
className: `group relative overflow-hidden rounded-xl p-5 transition-all duration-200 ${isClickable ? "cursor-pointer" : ""} ${isActive ? `bg-gradient-to-br ${colorConfig.activeGradient} ring-2 ring-offset-2 ${colorConfig.activeRing} shadow-xl` : `liquid-surface hover:shadow-md ${isFiltered ? "ring-indigo-300 dark:ring-indigo-500/50" : isUrgent ? "ring-amber-300 dark:ring-amber-500/50" : ""}`} ${className}`,
|
|
2280
2325
|
children: [
|
|
@@ -2306,6 +2351,7 @@ function StatCard({
|
|
|
2306
2351
|
/* @__PURE__ */ jsx(
|
|
2307
2352
|
"p",
|
|
2308
2353
|
{
|
|
2354
|
+
"data-testid": "stat-card-value",
|
|
2309
2355
|
className: `mt-4 text-3xl font-bold ${isActive ? "text-white" : isUrgent ? colorConfig.urgentValueColor || colorConfig.valueColor : colorConfig.valueColor}`,
|
|
2310
2356
|
children: value
|
|
2311
2357
|
}
|
|
@@ -2313,6 +2359,7 @@ function StatCard({
|
|
|
2313
2359
|
/* @__PURE__ */ jsx(
|
|
2314
2360
|
"p",
|
|
2315
2361
|
{
|
|
2362
|
+
"data-testid": "stat-card-label",
|
|
2316
2363
|
className: `mt-1 text-sm ${isActive ? "text-white/75" : "text-slate-500 dark:text-slate-400"}`,
|
|
2317
2364
|
children: label
|
|
2318
2365
|
}
|
|
@@ -2616,7 +2663,7 @@ function CircleSpinner({ size, color, className, ariaLabel }) {
|
|
|
2616
2663
|
"div",
|
|
2617
2664
|
{
|
|
2618
2665
|
className: clsx$1(
|
|
2619
|
-
"rounded-full animate-spin",
|
|
2666
|
+
"rounded-full animate-spin motion-reduce:animate-none",
|
|
2620
2667
|
config.size,
|
|
2621
2668
|
config.border,
|
|
2622
2669
|
colors3.track,
|
|
@@ -2631,9 +2678,10 @@ function CircleSpinner({ size, color, className, ariaLabel }) {
|
|
|
2631
2678
|
function DotsSpinner({ size, color, className, ariaLabel }) {
|
|
2632
2679
|
const config = sizeConfig[size];
|
|
2633
2680
|
const colors3 = colorClasses2[color];
|
|
2681
|
+
const prefersReducedMotion2 = useReducedMotion();
|
|
2634
2682
|
const dotVariants = {
|
|
2635
2683
|
initial: { scale: 0.8, opacity: 0.4 },
|
|
2636
|
-
animate: { scale: 1, opacity: 1 }
|
|
2684
|
+
animate: prefersReducedMotion2 ? { scale: 1, opacity: 1 } : { scale: 1, opacity: 1 }
|
|
2637
2685
|
};
|
|
2638
2686
|
return /* @__PURE__ */ jsx("div", { className: clsx$1("flex items-center gap-1", className), role: "status", "aria-label": ariaLabel, children: [0, 1, 2].map((index) => /* @__PURE__ */ jsx(
|
|
2639
2687
|
motion.div,
|
|
@@ -2646,7 +2694,7 @@ function DotsSpinner({ size, color, className, ariaLabel }) {
|
|
|
2646
2694
|
variants: dotVariants,
|
|
2647
2695
|
initial: "initial",
|
|
2648
2696
|
animate: "animate",
|
|
2649
|
-
transition: {
|
|
2697
|
+
transition: prefersReducedMotion2 ? { duration: 0 } : {
|
|
2650
2698
|
duration: 0.5,
|
|
2651
2699
|
repeat: Infinity,
|
|
2652
2700
|
repeatType: "reverse",
|
|
@@ -2659,16 +2707,17 @@ function DotsSpinner({ size, color, className, ariaLabel }) {
|
|
|
2659
2707
|
function PulseSpinner({ size, color, className, ariaLabel }) {
|
|
2660
2708
|
const config = sizeConfig[size];
|
|
2661
2709
|
const colors3 = colorClasses2[color];
|
|
2710
|
+
const prefersReducedMotion2 = useReducedMotion();
|
|
2662
2711
|
return /* @__PURE__ */ jsxs("div", { className: clsx$1("relative", config.size, className), role: "status", "aria-label": ariaLabel, children: [
|
|
2663
2712
|
/* @__PURE__ */ jsx(
|
|
2664
2713
|
motion.div,
|
|
2665
2714
|
{
|
|
2666
2715
|
className: clsx$1("absolute inset-0 rounded-full", colors3.dot),
|
|
2667
|
-
animate: {
|
|
2716
|
+
animate: prefersReducedMotion2 ? {} : {
|
|
2668
2717
|
scale: [1, 1.5, 1],
|
|
2669
2718
|
opacity: [0.7, 0, 0.7]
|
|
2670
2719
|
},
|
|
2671
|
-
transition: {
|
|
2720
|
+
transition: prefersReducedMotion2 ? { duration: 0 } : {
|
|
2672
2721
|
duration: 1.5,
|
|
2673
2722
|
repeat: Infinity,
|
|
2674
2723
|
ease: "easeInOut"
|
|
@@ -2703,7 +2752,8 @@ function Spinner({
|
|
|
2703
2752
|
{
|
|
2704
2753
|
size,
|
|
2705
2754
|
color,
|
|
2706
|
-
className
|
|
2755
|
+
className,
|
|
2756
|
+
ariaLabel
|
|
2707
2757
|
}
|
|
2708
2758
|
);
|
|
2709
2759
|
}
|
|
@@ -3008,10 +3058,42 @@ function SegmentedControl({
|
|
|
3008
3058
|
triggerHaptic("light");
|
|
3009
3059
|
onChange(segmentValue);
|
|
3010
3060
|
};
|
|
3061
|
+
const handleKeyDown = useCallback(
|
|
3062
|
+
(event) => {
|
|
3063
|
+
if (disabled) return;
|
|
3064
|
+
const currentIndex = normalizedSegments.findIndex((seg) => seg.value === value);
|
|
3065
|
+
let nextIndex = -1;
|
|
3066
|
+
if (event.key === "ArrowRight" || event.key === "ArrowDown") {
|
|
3067
|
+
event.preventDefault();
|
|
3068
|
+
nextIndex = (currentIndex + 1) % normalizedSegments.length;
|
|
3069
|
+
} else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
|
|
3070
|
+
event.preventDefault();
|
|
3071
|
+
nextIndex = (currentIndex - 1 + normalizedSegments.length) % normalizedSegments.length;
|
|
3072
|
+
} else if (event.key === "Home") {
|
|
3073
|
+
event.preventDefault();
|
|
3074
|
+
nextIndex = 0;
|
|
3075
|
+
} else if (event.key === "End") {
|
|
3076
|
+
event.preventDefault();
|
|
3077
|
+
nextIndex = normalizedSegments.length - 1;
|
|
3078
|
+
}
|
|
3079
|
+
if (nextIndex >= 0) {
|
|
3080
|
+
const nextSegment = normalizedSegments[nextIndex];
|
|
3081
|
+
onChange(nextSegment.value);
|
|
3082
|
+
triggerHaptic("light");
|
|
3083
|
+
const buttons = containerRef.current?.querySelectorAll("button");
|
|
3084
|
+
buttons?.[nextIndex]?.focus();
|
|
3085
|
+
}
|
|
3086
|
+
},
|
|
3087
|
+
[disabled, normalizedSegments, value, onChange]
|
|
3088
|
+
);
|
|
3011
3089
|
return /* @__PURE__ */ jsxs(
|
|
3012
3090
|
"div",
|
|
3013
3091
|
{
|
|
3014
3092
|
ref: containerRef,
|
|
3093
|
+
role: "tablist",
|
|
3094
|
+
"aria-live": "polite",
|
|
3095
|
+
"data-testid": "segmented-control",
|
|
3096
|
+
onKeyDown: handleKeyDown,
|
|
3015
3097
|
className: `
|
|
3016
3098
|
relative inline-flex items-center rounded-xl
|
|
3017
3099
|
bg-white/40 dark:bg-white/[0.08]
|
|
@@ -3038,6 +3120,11 @@ function SegmentedControl({
|
|
|
3038
3120
|
"button",
|
|
3039
3121
|
{
|
|
3040
3122
|
type: "button",
|
|
3123
|
+
role: "tab",
|
|
3124
|
+
"aria-selected": isSelected,
|
|
3125
|
+
"aria-label": segment.label,
|
|
3126
|
+
tabIndex: isSelected ? 0 : -1,
|
|
3127
|
+
"data-testid": `tab-${segment.value}`,
|
|
3041
3128
|
onClick: () => handleSelect(segment.value),
|
|
3042
3129
|
className: `
|
|
3043
3130
|
relative z-10 flex items-center justify-center gap-1.5
|
|
@@ -5384,11 +5471,14 @@ function GlassModal({
|
|
|
5384
5471
|
children,
|
|
5385
5472
|
panelClassName = "rounded-[2rem]",
|
|
5386
5473
|
contentClassName = "fixed inset-0 flex items-center justify-center overflow-y-auto p-3 sm:p-5 lg:p-6",
|
|
5387
|
-
zIndex = "z-50"
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5474
|
+
zIndex = "z-50",
|
|
5475
|
+
overlayTestId,
|
|
5476
|
+
panelTestId,
|
|
5477
|
+
ariaLabelledBy
|
|
5478
|
+
}) {
|
|
5479
|
+
return /* @__PURE__ */ jsxs(Dialog, { open, onClose, className: `relative ${zIndex}`, "aria-labelledby": ariaLabelledBy, children: [
|
|
5480
|
+
/* @__PURE__ */ jsx(DialogBackdrop, { className: "fixed inset-0 bg-slate-900/40 backdrop-blur-md dark:bg-black/50", "data-testid": overlayTestId }),
|
|
5481
|
+
/* @__PURE__ */ jsx("div", { className: contentClassName, children: /* @__PURE__ */ jsx(DialogPanel, { className: panelClassName, "data-testid": panelTestId, children }) })
|
|
5392
5482
|
] });
|
|
5393
5483
|
}
|
|
5394
5484
|
function Text({ className, ...props }) {
|
|
@@ -5891,7 +5981,8 @@ function GlassModalShell({
|
|
|
5891
5981
|
type: "button",
|
|
5892
5982
|
onClick: onClose,
|
|
5893
5983
|
"aria-label": closeLabel,
|
|
5894
|
-
|
|
5984
|
+
"data-testid": "modal-close",
|
|
5985
|
+
className: "absolute right-4 top-4 inline-flex h-9 w-9 items-center justify-center rounded-xl text-slate-400 transition hover:bg-white/40 hover:text-slate-700 dark:hover:bg-white/[0.08] dark:hover:text-white focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2",
|
|
5895
5986
|
children: /* @__PURE__ */ jsx(XMarkIcon$1, { className: "h-5 w-5" })
|
|
5896
5987
|
}
|
|
5897
5988
|
),
|
|
@@ -5901,14 +5992,14 @@ function GlassModalShell({
|
|
|
5901
5992
|
] }),
|
|
5902
5993
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3 pr-10", children: [
|
|
5903
5994
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
5904
|
-
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-slate-900 dark:text-white sm:text-2xl", children: title }),
|
|
5995
|
+
/* @__PURE__ */ jsx("h2", { id: "modal-title", "data-testid": "modal-title", className: "text-xl font-bold text-slate-900 dark:text-white sm:text-2xl", children: title }),
|
|
5905
5996
|
subtitle && /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-slate-500 dark:text-slate-400", children: subtitle })
|
|
5906
5997
|
] }),
|
|
5907
5998
|
headerActions && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: headerActions })
|
|
5908
5999
|
] })
|
|
5909
6000
|
] }),
|
|
5910
6001
|
/* @__PURE__ */ jsx("div", { className: "max-h-[72vh] overflow-y-auto px-5 pb-5 sm:px-8 sm:pb-8", children }),
|
|
5911
|
-
footer && /* @__PURE__ */ jsx("div", { className: "border-t border-white/20 px-5 py-4 dark:border-white/10 sm:px-8", children: footer })
|
|
6002
|
+
footer && /* @__PURE__ */ jsx("div", { "data-testid": "modal-footer", className: "border-t border-white/20 px-5 py-4 dark:border-white/10 sm:px-8", children: footer })
|
|
5912
6003
|
] });
|
|
5913
6004
|
return /* @__PURE__ */ jsx(
|
|
5914
6005
|
GlassModal,
|
|
@@ -5917,7 +6008,10 @@ function GlassModalShell({
|
|
|
5917
6008
|
onClose,
|
|
5918
6009
|
contentClassName: "fixed inset-0 overflow-y-auto p-3 sm:p-6",
|
|
5919
6010
|
panelClassName: `liquid-surface-strong w-full overflow-hidden rounded-2xl mx-auto mt-[4vh] sm:mt-[8vh] ${SIZE_CLASSES2[maxWidth]} ${className}`,
|
|
6011
|
+
ariaLabelledBy: "modal-title",
|
|
5920
6012
|
zIndex,
|
|
6013
|
+
overlayTestId: "modal-overlay",
|
|
6014
|
+
panelTestId: "modal-panel",
|
|
5921
6015
|
children: onSubmit ? /* @__PURE__ */ jsx("form", { onSubmit: handleSubmit, children: inner }) : inner
|
|
5922
6016
|
}
|
|
5923
6017
|
);
|
|
@@ -5948,6 +6042,7 @@ function GlassFormModal({
|
|
|
5948
6042
|
disabled: isLoading,
|
|
5949
6043
|
outline: true,
|
|
5950
6044
|
className: "w-full sm:w-auto",
|
|
6045
|
+
"data-testid": "form-modal-cancel",
|
|
5951
6046
|
children: cancelLabel
|
|
5952
6047
|
}
|
|
5953
6048
|
),
|
|
@@ -5960,11 +6055,12 @@ function GlassFormModal({
|
|
|
5960
6055
|
loadingText: submitLabel,
|
|
5961
6056
|
color: "ios-glass-blue",
|
|
5962
6057
|
className: "w-full sm:w-auto",
|
|
6058
|
+
"data-testid": "form-modal-submit",
|
|
5963
6059
|
children: submitLabel
|
|
5964
6060
|
}
|
|
5965
6061
|
)
|
|
5966
6062
|
] }) }) : void 0;
|
|
5967
|
-
return /* @__PURE__ */ jsx(
|
|
6063
|
+
return /* @__PURE__ */ jsx("div", { "data-testid": "form-modal", role: "dialog", "aria-modal": "true", "aria-label": title, children: /* @__PURE__ */ jsx(
|
|
5968
6064
|
GlassModalShell,
|
|
5969
6065
|
{
|
|
5970
6066
|
open,
|
|
@@ -5978,7 +6074,7 @@ function GlassFormModal({
|
|
|
5978
6074
|
footer: defaultFooter,
|
|
5979
6075
|
children
|
|
5980
6076
|
}
|
|
5981
|
-
);
|
|
6077
|
+
) });
|
|
5982
6078
|
}
|
|
5983
6079
|
function ContextMenu({
|
|
5984
6080
|
position,
|
|
@@ -6641,13 +6737,13 @@ function FormInput({
|
|
|
6641
6737
|
onValueChange,
|
|
6642
6738
|
...props
|
|
6643
6739
|
}) {
|
|
6644
|
-
return /* @__PURE__ */ jsxs("div", { children: [
|
|
6740
|
+
return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
|
|
6645
6741
|
label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
|
|
6646
6742
|
label,
|
|
6647
6743
|
required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
|
|
6648
6744
|
] }) : null,
|
|
6649
6745
|
/* @__PURE__ */ jsx("div", { className: wrapperClass(error), children: /* @__PURE__ */ jsxs("div", { className: `relative flex items-center ${sizeClasses3[inputSize]} ${className}`, children: [
|
|
6650
|
-
icon ? /* @__PURE__ */ jsx("span", { className: "mr-2 text-gray-400 dark:text-gray-500", children: icon }) : null,
|
|
6746
|
+
icon ? /* @__PURE__ */ jsx("span", { className: "mr-2 text-gray-400 dark:text-gray-500", "aria-hidden": "true", children: icon }) : null,
|
|
6651
6747
|
/* @__PURE__ */ jsx(
|
|
6652
6748
|
"input",
|
|
6653
6749
|
{
|
|
@@ -6670,7 +6766,7 @@ function FormTextarea({
|
|
|
6670
6766
|
onValueChange,
|
|
6671
6767
|
...props
|
|
6672
6768
|
}) {
|
|
6673
|
-
return /* @__PURE__ */ jsxs("div", { children: [
|
|
6769
|
+
return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
|
|
6674
6770
|
label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
|
|
6675
6771
|
label,
|
|
6676
6772
|
required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
|
|
@@ -6716,7 +6812,7 @@ function FormPriceInput({
|
|
|
6716
6812
|
className = ""
|
|
6717
6813
|
}) {
|
|
6718
6814
|
const sizes3 = priceSizeConfig[priceSize ?? defaultPriceSize(inputSize)];
|
|
6719
|
-
return /* @__PURE__ */ jsxs("div", { children: [
|
|
6815
|
+
return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
|
|
6720
6816
|
label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
|
|
6721
6817
|
label,
|
|
6722
6818
|
required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
|
|
@@ -6759,7 +6855,7 @@ function FormSelect({
|
|
|
6759
6855
|
options,
|
|
6760
6856
|
...props
|
|
6761
6857
|
}) {
|
|
6762
|
-
return /* @__PURE__ */ jsxs("div", { children: [
|
|
6858
|
+
return /* @__PURE__ */ jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
|
|
6763
6859
|
label ? /* @__PURE__ */ jsxs("label", { className: `mb-1.5 block font-medium text-gray-500 dark:text-gray-400 ${labelClasses[inputSize]}`, children: [
|
|
6764
6860
|
label,
|
|
6765
6861
|
required ? /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-red-500", children: "*" }) : null
|
|
@@ -7307,7 +7403,7 @@ function SearchFilterToolbar({
|
|
|
7307
7403
|
label
|
|
7308
7404
|
};
|
|
7309
7405
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7310
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7406
|
+
/* @__PURE__ */ jsxs("div", { role: "search", "data-testid": "search-toolbar", className: "flex items-center gap-3", children: [
|
|
7311
7407
|
/* @__PURE__ */ jsxs("div", { className: "liquid-surface flex flex-1 items-center gap-2 flex-wrap min-h-12 rounded-xl px-3.5 py-1.5 transition-colors duration-200 focus-within:ring-2 focus-within:ring-offset-2 focus-within:ring-blue-500 dark:focus-within:ring-offset-gray-900", children: [
|
|
7312
7408
|
/* @__PURE__ */ jsx(MagnifyingGlassIcon, { className: "h-5 w-5 shrink-0 text-slate-400 dark:text-slate-500" }),
|
|
7313
7409
|
filterPills,
|
|
@@ -7318,6 +7414,8 @@ function SearchFilterToolbar({
|
|
|
7318
7414
|
value: query,
|
|
7319
7415
|
onChange: (event) => onQueryChange(event.target.value),
|
|
7320
7416
|
placeholder,
|
|
7417
|
+
"aria-label": label,
|
|
7418
|
+
"data-testid": "search-input",
|
|
7321
7419
|
className: "min-w-[100px] flex-1 bg-transparent py-1 text-base text-gray-900 outline-none placeholder:text-slate-400 dark:text-white dark:placeholder:text-slate-500"
|
|
7322
7420
|
}
|
|
7323
7421
|
)
|
|
@@ -7406,6 +7504,12 @@ function SearchFilterToolbar({
|
|
|
7406
7504
|
function isPlainTextTitle(title) {
|
|
7407
7505
|
return typeof title === "string" || typeof title === "number";
|
|
7408
7506
|
}
|
|
7507
|
+
function getTestIdFromTitle(title) {
|
|
7508
|
+
if (isPlainTextTitle(title)) {
|
|
7509
|
+
return `entity-card-${String(title).toLowerCase().replace(/\s+/g, "-")}`;
|
|
7510
|
+
}
|
|
7511
|
+
return "entity-card";
|
|
7512
|
+
}
|
|
7409
7513
|
function StatusBadgeInternal({ status }) {
|
|
7410
7514
|
const tCommon = useTranslations("common");
|
|
7411
7515
|
if (typeof status !== "boolean") {
|
|
@@ -7432,9 +7536,24 @@ function EntityCard({
|
|
|
7432
7536
|
dragProps
|
|
7433
7537
|
}) {
|
|
7434
7538
|
const isInteractive = Boolean(onClick);
|
|
7539
|
+
const plainTextTitle = isPlainTextTitle(title) ? String(title) : void 0;
|
|
7540
|
+
const handleKeyDown = useCallback(
|
|
7541
|
+
(event) => {
|
|
7542
|
+
if (onClick && (event.key === "Enter" || event.key === " ")) {
|
|
7543
|
+
event.preventDefault();
|
|
7544
|
+
onClick();
|
|
7545
|
+
}
|
|
7546
|
+
},
|
|
7547
|
+
[onClick]
|
|
7548
|
+
);
|
|
7435
7549
|
return /* @__PURE__ */ jsxs(
|
|
7436
7550
|
Card,
|
|
7437
7551
|
{
|
|
7552
|
+
role: isInteractive ? "article" : "listitem",
|
|
7553
|
+
"aria-label": isInteractive ? plainTextTitle : void 0,
|
|
7554
|
+
"data-testid": getTestIdFromTitle(title),
|
|
7555
|
+
tabIndex: isInteractive ? 0 : void 0,
|
|
7556
|
+
onKeyDown: isInteractive ? handleKeyDown : void 0,
|
|
7438
7557
|
className: `group overflow-hidden transition-all duration-200 hover:-translate-y-0.5 hover:shadow-md ${isInteractive ? "cursor-pointer" : ""} ${className}`,
|
|
7439
7558
|
onPress: onClick,
|
|
7440
7559
|
pressable: isInteractive,
|
|
@@ -7443,21 +7562,21 @@ function EntityCard({
|
|
|
7443
7562
|
accentGradient && /* @__PURE__ */ jsx("div", { className: `h-1.5 w-full bg-gradient-to-r ${accentGradient}` }),
|
|
7444
7563
|
/* @__PURE__ */ jsxs("div", { className: "p-4", children: [
|
|
7445
7564
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
7446
|
-
/* @__PURE__ */ jsx(
|
|
7565
|
+
/* @__PURE__ */ jsx("div", { "data-testid": "entity-card-title", children: /* @__PURE__ */ jsx(
|
|
7447
7566
|
ItemSummary,
|
|
7448
7567
|
{
|
|
7449
7568
|
icon,
|
|
7450
7569
|
title,
|
|
7451
|
-
subtitle,
|
|
7570
|
+
subtitle: subtitle ? /* @__PURE__ */ jsx("span", { "data-testid": "entity-card-subtitle", children: subtitle }) : void 0,
|
|
7452
7571
|
iconContainerClassName: "shrink-0",
|
|
7453
7572
|
titleClassName: isPlainTextTitle(title) ? "truncate font-semibold text-slate-900 dark:text-white" : "font-semibold text-slate-900 dark:text-white",
|
|
7454
7573
|
subtitleClassName: "mt-0.5 text-xs text-slate-500 dark:text-slate-400"
|
|
7455
7574
|
}
|
|
7456
|
-
),
|
|
7575
|
+
) }),
|
|
7457
7576
|
status !== void 0 && /* @__PURE__ */ jsx(StatusBadgeInternal, { status })
|
|
7458
7577
|
] }),
|
|
7459
7578
|
children && /* @__PURE__ */ jsx("div", { className: "mt-3", children }),
|
|
7460
|
-
footer && /* @__PURE__ */ jsx("div", { className: "mt-3 border-t border-white/30 pt-3 dark:border-white/10 flex gap-2 justify-end opacity-0 transition-opacity duration-200 group-hover:opacity-100", children: footer })
|
|
7579
|
+
footer && /* @__PURE__ */ jsx("div", { className: "mt-3 border-t border-white/30 pt-3 dark:border-white/10 flex gap-2 justify-end opacity-0 transition-opacity duration-200 group-hover:opacity-100 group-focus-within:opacity-100", children: footer })
|
|
7461
7580
|
] })
|
|
7462
7581
|
]
|
|
7463
7582
|
}
|
|
@@ -7606,6 +7725,10 @@ function FilterTileButton({
|
|
|
7606
7725
|
{
|
|
7607
7726
|
type: "button",
|
|
7608
7727
|
onClick,
|
|
7728
|
+
role: "checkbox",
|
|
7729
|
+
"aria-checked": isActive,
|
|
7730
|
+
"aria-label": label,
|
|
7731
|
+
"data-testid": `filter-tile-${label.toLowerCase().replace(/\s+/g, "-")}`,
|
|
7609
7732
|
className: `relative overflow-hidden rounded-2xl p-4 text-left transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 ${tokens.focusRing} dark:ring-offset-gray-900 ${isActive ? tokens.activeGradient : INACTIVE_CLASSES}`,
|
|
7610
7733
|
children: [
|
|
7611
7734
|
/* @__PURE__ */ jsx(
|
|
@@ -8640,6 +8763,7 @@ function Badge({ color = "zinc", className, ...props }) {
|
|
|
8640
8763
|
return /* @__PURE__ */ jsx(
|
|
8641
8764
|
"span",
|
|
8642
8765
|
{
|
|
8766
|
+
"data-testid": "badge",
|
|
8643
8767
|
...props,
|
|
8644
8768
|
className: clsx(
|
|
8645
8769
|
className,
|
|
@@ -8854,14 +8978,14 @@ function DynamicIslandConfirm({
|
|
|
8854
8978
|
triggerHaptic("warning");
|
|
8855
8979
|
}
|
|
8856
8980
|
}, [open]);
|
|
8857
|
-
return /* @__PURE__ */ jsxs(Dialog, { open, onClose, className: "relative z-[120]", children: [
|
|
8981
|
+
return /* @__PURE__ */ jsxs(Dialog, { open, onClose, className: "relative z-[120]", "aria-labelledby": "dynamic-island-title", children: [
|
|
8858
8982
|
/* @__PURE__ */ jsx("div", { className: "fixed inset-0 bg-black/10 backdrop-blur-[2px]" }),
|
|
8859
8983
|
/* @__PURE__ */ jsx("div", { className: "fixed inset-0 flex items-start justify-center pt-3 px-4", children: /* @__PURE__ */ jsxs(DialogPanel, { className: "w-full max-w-sm rounded-[28px] bg-black/95 p-3 text-white shadow-2xl", children: [
|
|
8860
8984
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-2 py-1", children: [
|
|
8861
8985
|
/* @__PURE__ */ jsx("div", { className: `h-9 w-9 shrink-0 rounded-xl ${iconBackground} flex items-center justify-center`, children: icon ?? /* @__PURE__ */ jsx(TrashIcon, { className: "h-5 w-5 text-white" }) }),
|
|
8862
8986
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
8863
8987
|
/* @__PURE__ */ jsx("p", { className: "text-[11px] uppercase tracking-wide text-gray-400", children: appName }),
|
|
8864
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-semibold", children: title })
|
|
8988
|
+
/* @__PURE__ */ jsx("p", { id: "dynamic-island-title", className: "text-sm font-semibold", children: title })
|
|
8865
8989
|
] })
|
|
8866
8990
|
] }),
|
|
8867
8991
|
/* @__PURE__ */ jsxs("div", { className: "mt-2 grid grid-cols-2 gap-2", children: [
|
|
@@ -8870,7 +8994,7 @@ function DynamicIslandConfirm({
|
|
|
8870
8994
|
{
|
|
8871
8995
|
type: "button",
|
|
8872
8996
|
onClick: onClose,
|
|
8873
|
-
className: "rounded-xl bg-white/10 px-3 py-
|
|
8997
|
+
className: "rounded-xl bg-white/10 px-3 py-3 text-sm font-medium hover:bg-white/15 focus-visible:ring-2 focus-visible:ring-white/70",
|
|
8874
8998
|
children: resolvedCancelLabel
|
|
8875
8999
|
}
|
|
8876
9000
|
),
|
|
@@ -8879,7 +9003,7 @@ function DynamicIslandConfirm({
|
|
|
8879
9003
|
{
|
|
8880
9004
|
type: "button",
|
|
8881
9005
|
onClick: onConfirm,
|
|
8882
|
-
className: "rounded-xl bg-ios-red px-3 py-
|
|
9006
|
+
className: "rounded-xl bg-ios-red px-3 py-3 text-sm font-semibold text-white hover:bg-ios-red-hover focus-visible:ring-2 focus-visible:ring-white/70",
|
|
8883
9007
|
children: resolvedConfirmLabel
|
|
8884
9008
|
}
|
|
8885
9009
|
)
|
|
@@ -9431,66 +9555,80 @@ var ACCENT_MAP = {
|
|
|
9431
9555
|
function PageEmptyState({ title, message, iconName }) {
|
|
9432
9556
|
const Icon = ICON_MAP[iconName] || FallbackIcon;
|
|
9433
9557
|
const accent = ACCENT_MAP[iconName] || ACCENT_MAP["folder-open"];
|
|
9434
|
-
|
|
9435
|
-
|
|
9558
|
+
const prefersReducedMotion2 = useReducedMotion();
|
|
9559
|
+
const noMotion = { opacity: 1, scale: 1, y: 0 };
|
|
9560
|
+
const noTransition = { duration: 0 };
|
|
9561
|
+
return /* @__PURE__ */ jsx(
|
|
9562
|
+
"div",
|
|
9436
9563
|
{
|
|
9437
|
-
|
|
9438
|
-
|
|
9439
|
-
|
|
9440
|
-
className: "
|
|
9441
|
-
children:
|
|
9442
|
-
|
|
9443
|
-
|
|
9444
|
-
{
|
|
9445
|
-
|
|
9446
|
-
|
|
9447
|
-
|
|
9448
|
-
|
|
9449
|
-
|
|
9450
|
-
}
|
|
9451
|
-
),
|
|
9452
|
-
/* @__PURE__ */ jsx(
|
|
9453
|
-
motion.h3,
|
|
9454
|
-
{
|
|
9455
|
-
initial: { y: 12, opacity: 0 },
|
|
9456
|
-
animate: { y: 0, opacity: 1 },
|
|
9457
|
-
transition: { ...springPresets.default, delay: 0.1 },
|
|
9458
|
-
className: "text-xl font-semibold text-gray-900 dark:text-white",
|
|
9459
|
-
children: title
|
|
9460
|
-
}
|
|
9461
|
-
),
|
|
9462
|
-
/* @__PURE__ */ jsx(
|
|
9463
|
-
motion.p,
|
|
9464
|
-
{
|
|
9465
|
-
initial: { y: 12, opacity: 0 },
|
|
9466
|
-
animate: { y: 0, opacity: 1 },
|
|
9467
|
-
transition: { ...springPresets.default, delay: 0.15 },
|
|
9468
|
-
className: "mt-3 text-sm text-gray-500 dark:text-gray-400 max-w-sm mx-auto leading-relaxed",
|
|
9469
|
-
children: message
|
|
9470
|
-
}
|
|
9471
|
-
),
|
|
9472
|
-
/* @__PURE__ */ jsx(
|
|
9473
|
-
motion.div,
|
|
9474
|
-
{
|
|
9475
|
-
initial: { opacity: 0 },
|
|
9476
|
-
animate: { opacity: 1 },
|
|
9477
|
-
transition: { delay: 0.3 },
|
|
9478
|
-
className: "mt-8 flex items-center justify-center gap-1.5",
|
|
9479
|
-
children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx(
|
|
9564
|
+
role: "region",
|
|
9565
|
+
"aria-label": title,
|
|
9566
|
+
"data-testid": "empty-state",
|
|
9567
|
+
className: "flex items-center justify-center py-20",
|
|
9568
|
+
children: /* @__PURE__ */ jsxs(
|
|
9569
|
+
motion.div,
|
|
9570
|
+
{
|
|
9571
|
+
initial: prefersReducedMotion2 ? false : { opacity: 0, scale: 0.95 },
|
|
9572
|
+
animate: prefersReducedMotion2 ? noMotion : { opacity: 1, scale: 1 },
|
|
9573
|
+
transition: prefersReducedMotion2 ? noTransition : springPresets.gentle,
|
|
9574
|
+
className: "liquid-surface w-full max-w-lg rounded-2xl px-8 py-14 text-center",
|
|
9575
|
+
children: [
|
|
9576
|
+
/* @__PURE__ */ jsx(
|
|
9480
9577
|
motion.div,
|
|
9481
9578
|
{
|
|
9482
|
-
initial: { scale: 0 },
|
|
9483
|
-
animate: { scale: 1 },
|
|
9484
|
-
transition:
|
|
9485
|
-
className: "
|
|
9486
|
-
|
|
9487
|
-
|
|
9488
|
-
)
|
|
9489
|
-
|
|
9490
|
-
|
|
9491
|
-
|
|
9579
|
+
initial: prefersReducedMotion2 ? false : { scale: 0.6, opacity: 0 },
|
|
9580
|
+
animate: prefersReducedMotion2 ? noMotion : { scale: 1, opacity: 1 },
|
|
9581
|
+
transition: prefersReducedMotion2 ? noTransition : springPresets.bouncy,
|
|
9582
|
+
className: "mx-auto mb-6",
|
|
9583
|
+
children: /* @__PURE__ */ jsx("div", { className: `inline-flex h-20 w-20 items-center justify-center rounded-full backdrop-blur-md border ${accent.container}`, children: /* @__PURE__ */ jsx(Icon, { className: `h-10 w-10 ${accent.icon}` }) })
|
|
9584
|
+
}
|
|
9585
|
+
),
|
|
9586
|
+
/* @__PURE__ */ jsx(
|
|
9587
|
+
motion.h3,
|
|
9588
|
+
{
|
|
9589
|
+
"data-testid": "empty-state-title",
|
|
9590
|
+
initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
|
|
9591
|
+
animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
|
|
9592
|
+
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.1 },
|
|
9593
|
+
className: "text-xl font-semibold text-gray-900 dark:text-white",
|
|
9594
|
+
children: title
|
|
9595
|
+
}
|
|
9596
|
+
),
|
|
9597
|
+
/* @__PURE__ */ jsx(
|
|
9598
|
+
motion.p,
|
|
9599
|
+
{
|
|
9600
|
+
"data-testid": "empty-state-message",
|
|
9601
|
+
initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
|
|
9602
|
+
animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
|
|
9603
|
+
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.15 },
|
|
9604
|
+
className: "mt-3 text-sm text-gray-500 dark:text-gray-400 max-w-sm mx-auto leading-relaxed",
|
|
9605
|
+
children: message
|
|
9606
|
+
}
|
|
9607
|
+
),
|
|
9608
|
+
/* @__PURE__ */ jsx(
|
|
9609
|
+
motion.div,
|
|
9610
|
+
{
|
|
9611
|
+
initial: prefersReducedMotion2 ? false : { opacity: 0 },
|
|
9612
|
+
animate: prefersReducedMotion2 ? noMotion : { opacity: 1 },
|
|
9613
|
+
transition: prefersReducedMotion2 ? noTransition : { delay: 0.3 },
|
|
9614
|
+
className: "mt-8 flex items-center justify-center gap-1.5",
|
|
9615
|
+
children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx(
|
|
9616
|
+
motion.div,
|
|
9617
|
+
{
|
|
9618
|
+
initial: prefersReducedMotion2 ? false : { scale: 0 },
|
|
9619
|
+
animate: prefersReducedMotion2 ? noMotion : { scale: 1 },
|
|
9620
|
+
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.bouncy, delay: 0.35 + i * 0.08 },
|
|
9621
|
+
className: "h-1.5 w-1.5 rounded-full bg-gray-300 dark:bg-gray-600"
|
|
9622
|
+
},
|
|
9623
|
+
i
|
|
9624
|
+
))
|
|
9625
|
+
}
|
|
9626
|
+
)
|
|
9627
|
+
]
|
|
9628
|
+
}
|
|
9629
|
+
)
|
|
9492
9630
|
}
|
|
9493
|
-
)
|
|
9631
|
+
);
|
|
9494
9632
|
}
|
|
9495
9633
|
var WINDSOCK_LOADER = { gradient: "from-emerald-500 to-teal-600", accentRing: "ring-emerald-500/30" };
|
|
9496
9634
|
var FUEL_PRICE_LOADER = { gradient: "from-blue-500 to-indigo-600", accentRing: "ring-blue-500/30" };
|
|
@@ -11130,7 +11268,7 @@ function NotificationBadge({ count, className = "" }) {
|
|
|
11130
11268
|
return /* @__PURE__ */ jsx(
|
|
11131
11269
|
"span",
|
|
11132
11270
|
{
|
|
11133
|
-
className: `absolute -top-1 -right-1 flex items-center justify-center min-w-[18px] h-[18px] px-1 text-[10px] font-bold text-white bg-red-500 rounded-full ring-2 ring-white dark:ring-gray-800 ${count > 0 ? "animate-pulse" : ""} ${className}`,
|
|
11271
|
+
className: `absolute -top-1 -right-1 flex items-center justify-center min-w-[18px] h-[18px] px-1 text-[10px] font-bold text-white bg-red-500 rounded-full ring-2 ring-white dark:ring-gray-800 ${count > 0 ? "animate-pulse motion-reduce:animate-none" : ""} ${className}`,
|
|
11134
11272
|
children: displayCount
|
|
11135
11273
|
}
|
|
11136
11274
|
);
|
|
@@ -12360,11 +12498,15 @@ function FilterPill({ icon, label, variant, onRemove }) {
|
|
|
12360
12498
|
{
|
|
12361
12499
|
type: "button",
|
|
12362
12500
|
onClick: onRemove,
|
|
12501
|
+
role: "option",
|
|
12502
|
+
"aria-selected": true,
|
|
12503
|
+
"aria-label": typeof label === "string" ? label : void 0,
|
|
12504
|
+
"data-testid": "filter-pill",
|
|
12363
12505
|
className: `liquid-pill liquid-pill-${variant}`,
|
|
12364
12506
|
children: [
|
|
12365
12507
|
icon,
|
|
12366
12508
|
label,
|
|
12367
|
-
/* @__PURE__ */ jsx(XMarkIcon$1, { className: "liquid-pill-dismiss" })
|
|
12509
|
+
/* @__PURE__ */ jsx(XMarkIcon$1, { className: "liquid-pill-dismiss", "data-testid": "filter-pill-remove" })
|
|
12368
12510
|
]
|
|
12369
12511
|
}
|
|
12370
12512
|
);
|
|
@@ -13850,5 +13992,5 @@ function PlatformShell({
|
|
|
13850
13992
|
}
|
|
13851
13993
|
|
|
13852
13994
|
export { ActionMenu, ActionSheet, ActiveFilterChips, AnalysisSkeleton, AnimatedNumber, AnimatedTableRow, AppLogo, AppNavigation, AppShell, ArchiveSwipeAction, AuthLayout, Avatar, AvatarButton, BRAZIL_ACCENT_MAP, BRAZIL_MACRO_REGIONS, BRAZIL_MAP_CENTER, BRAZIL_STATE_COORDINATES, BRAZIL_STATE_PALETTES, BR_THEME_CONFIG, BackupCodeGrid, BadRequestPage, Badge, BaseForm, BentoCard, BooleanFlagsPicker, BottomSafeArea, BrandFilterSkeleton, BrandedLoader, Breadcrumb, Button, Card, CardActionMenu, CardContent, CardDescription, CardDivider, CardFooter, CardGridSkeleton, CardHeader, CardSectionHeader, CardTitle, CategoryBadge, CategoryTab, CategoryTabs, ChipPicker, CircularRefreshIndicator, Code, CollapsibleGroupedList, CompactSegmentedControl, ContactCard, ContactSection, Container, ContextMenu, CookieConsent, CopyableId, CountPill, CreateActionButton, DashboardProgressShell, DataPagination, DatePicker, DeleteSwipeAction, Description4 as Description, DetailsPopover, DevModeBanner, Dialog4 as Dialog, DialogActions, DialogBody, DialogDescription, DialogTitle3 as DialogTitle, Divider, Dock, DockContainer, DockSkeleton, DotRefreshIndicator, Dropdown, DropdownButton, DropdownDivider, DropdownItem, DropdownLabel, DropdownMenu, DropdownSelect, DynamicIsland, DynamicIslandConfirm, DynamicIslandNotification, EdgeSwipeIndicator, EdgeSwipeProvider, EditSwipeAction, EmptyState, EntityCard, EntityDrawer, ErrorMessage, ErrorState, ExpandableHistoryList, ExpandingPageIndicator, FUEL_PRICE_LOADER, FavoriteSwipeAction, FeatureCard, FeedItemCard, Field2 as Field, FieldGroup, Fieldset2 as Fieldset, FilterBadge, FilterPill, FilterSectionHeader, FilterTileButton, FloatingActionButton, FlyoutMenu, FlyoutNavGrid, FlyoutQuickActions, ForceTouchMenu, Form, FormActions, FormActionsRow, FormCheckbox, FormField, FormGrid, FormInput, FormPriceInput, FormSection, FormSelect, FormTextarea, FormToggle, GeoMapCanvas, GeoMapLegend, GlassFormModal, GlassModal, GlassModalShell, Gradient, GradientBackground, GrowthIndicator, Heading, HeroPanel, HeroSection, IconButton, InfoPopover, InlineForm, InlineSpinner, Input, InteractiveGeoMap, ItemSummary, KORI_ERP_LOADER, Label2 as Label, LabeledToggle, LanguageSwitcher, LaunchpadGrid, Lead, Legend2 as Legend, LiquidFilterInput, ListCard, ListCardItem, ListItem, LoadingOverlay, ManagementPageLayout, ManagementSurface, MapZoomControls, MetricCard, MonthPicker, MultiColumnPicker, NavigationProgress, NoDataState, NoResultsState, NotFoundPage, NotificationBadge, NotificationBellButton, NotificationProvider, OfficeCard, OfflineState, OptionGrid, OtpInput, PageEmptyState, PageHeader, PageHeading, PageIndicator, PageLoadingState, PageSectionHeader, Pagination, PasswordInput, PasswordStrengthMeter, Pill, PlatformShell, PlusGrid, PlusGridItem, PlusGridRow, PreferenceSection, PriceChangeBadge, ProfileIdentityCard, Progress, ProgressIndicator, PullToRefreshContainer, PullToRefreshIndicator, RadiantHeading, RadiantStatCard, RadiantSubheading, RegionFilterSkeleton, RoleBadge, SafeArea, SafeAreaSpacer, SafeAreaView, SearchBar, SearchFilterToolbar, SearchInput, SectionCard, SectionHeader, SectionHeaderSkeleton, SegmentedControl, Select, SelectableChipPicker, SelectableListPicker, SelectableOptionsGrid, SelectableTableRow, SelectionCard, ServerErrorPage, SettingsDialog, SettingsModal, Sheet, SocialLoginButtons, SortableTableHeader, Spinner, Stat, StatCard, StatCardSkeleton, StatusBadge, StatusToggle, StepFormPage, StepNavigationButtons, StepTimeline, Strong, Subheading, SwipeableRow, Switch2 as Switch, Table, TableBody, TableCell, TableEmptyState, TableHead, TableHeader, TableRow, TableSkeleton, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TagBadge, Text, TextLink, Textarea, ThemeSwitch, ThemeToggle, ThemeToggleCompact, TimePicker, ToggleSwitch, TouchTarget, US_ACCENT_MAP, US_MACRO_REGIONS, US_MAP_CENTER, US_STATE_COORDINATES, US_STATE_PALETTES, US_THEME_CONFIG, UserAvatar, UserMobileInfo, WINDSOCK_LOADER, WIRE_LOADER, WheelPicker, WindsockIcon, buildDockActions, buildFlyoutNavItems, buildLaunchpadItems, buttonPress, buttonPressReduced, buttonTap, cardHover, cardHoverReduced, cardPress, createMotionProps, durations, durationsReduced, easings, fadeOnly, fadeScale, filterByPermission, formatCurrency, formatDate, formatPercentage, getBrazilAccent, getBrazilColors, getBrazilFlagUrl, getBrazilGradient, getBrazilHexColor, getBrazilPalette, getStatusColor, getSubdivisionAccent, getSubdivisionColors, getSubdivisionFlagUrl, getSubdivisionGradient, getSubdivisionHexColor, getSubdivisionPalette, getTransition, getUsAccent, getUsColors, getUsFlagUrl, getUsGradient, getUsHexColor, getUsPalette, getVariants, iosColors, isValidBrazilState, isValidSubdivision, isValidUsState, listItem, listItemReduced, notificationBanner, notificationBannerReduced, pageControlDot, prefersReducedMotion, registerSubdivisionTheme, resolveGlassAccentRgb, selectIsAuthenticated, selectShowShellChrome, selectUserInitial, selectUserName, shimmerClass, shimmerWhiteClass, slideDown, slideRight, slideUp, springPresets, springPresetsReduced, staggerContainer, swipeActionThreshold, swipeConstraints, useGeoMapState, useNotifications, usePlatformShellStore, usePullToRefresh };
|
|
13853
|
-
//# sourceMappingURL=chunk-
|
|
13854
|
-
//# sourceMappingURL=chunk-
|
|
13995
|
+
//# sourceMappingURL=chunk-WTPYTOK4.mjs.map
|
|
13996
|
+
//# sourceMappingURL=chunk-WTPYTOK4.mjs.map
|