@khipu/design-system 0.2.0-alpha.13 → 0.2.0-alpha.131
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/beercss/khipu-beercss.css +2308 -297
- package/dist/beercss/khipu-beercss.js +152 -4
- package/dist/beercss/khipu-beercss.min.css +1 -1
- package/dist/beercss/khipu-beercss.min.js +1 -1
- package/dist/beercss/khipu-beercss.scoped.css +9043 -0
- package/dist/beercss/khipu-beercss.scoped.min.css +1 -0
- package/dist/beercss/metadata.json +8 -4
- package/dist/index.d.mts +999 -266
- package/dist/index.d.ts +999 -266
- package/dist/index.js +1443 -522
- package/dist/index.mjs +1402 -496
- package/package.json +14 -10
- package/dist/khipu-logo-color-TV75AKOV.svg +0 -19
package/dist/index.mjs
CHANGED
|
@@ -34,6 +34,40 @@ function lighten(hex, amount) {
|
|
|
34
34
|
b + (255 - b) * amount
|
|
35
35
|
);
|
|
36
36
|
}
|
|
37
|
+
function formatDateTime(iso) {
|
|
38
|
+
if (!iso) {
|
|
39
|
+
return "";
|
|
40
|
+
}
|
|
41
|
+
const date = new Date(iso);
|
|
42
|
+
if (Number.isNaN(date.getTime())) {
|
|
43
|
+
return "";
|
|
44
|
+
}
|
|
45
|
+
const pad = (n) => n.toString().padStart(2, "0");
|
|
46
|
+
const datePart = `${pad(date.getDate())}-${pad(date.getMonth() + 1)}-${date.getFullYear()}`;
|
|
47
|
+
const timePart = `${pad(date.getHours())}:${pad(date.getMinutes())}`;
|
|
48
|
+
return `${datePart} ${timePart}`;
|
|
49
|
+
}
|
|
50
|
+
function formatDate(iso) {
|
|
51
|
+
if (!iso) {
|
|
52
|
+
return "";
|
|
53
|
+
}
|
|
54
|
+
const date = new Date(iso);
|
|
55
|
+
if (Number.isNaN(date.getTime())) {
|
|
56
|
+
return "";
|
|
57
|
+
}
|
|
58
|
+
return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`;
|
|
59
|
+
}
|
|
60
|
+
function formatTime(iso) {
|
|
61
|
+
if (!iso) {
|
|
62
|
+
return "";
|
|
63
|
+
}
|
|
64
|
+
const date = new Date(iso);
|
|
65
|
+
if (Number.isNaN(date.getTime())) {
|
|
66
|
+
return "";
|
|
67
|
+
}
|
|
68
|
+
const pad = (n) => n.toString().padStart(2, "0");
|
|
69
|
+
return `${pad(date.getHours())}:${pad(date.getMinutes())}`;
|
|
70
|
+
}
|
|
37
71
|
|
|
38
72
|
// src/theme/KdsThemeProvider.tsx
|
|
39
73
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -347,6 +381,8 @@ var semanticColors = {
|
|
|
347
381
|
// From Figma: warning/light
|
|
348
382
|
dark: "#E65100",
|
|
349
383
|
// From Figma: warning/dark
|
|
384
|
+
warm: "#8A6D1A",
|
|
385
|
+
// Warm/olive variant for header icons (LigoPay handoff v2)
|
|
350
386
|
container: "#FFFBEB",
|
|
351
387
|
// Light amber background for chips/badges
|
|
352
388
|
contrastText: "#FFFFFF"
|
|
@@ -365,6 +401,8 @@ var semanticColors = {
|
|
|
365
401
|
main: "#0288D1",
|
|
366
402
|
light: "#03A9F4",
|
|
367
403
|
dark: "#01579B",
|
|
404
|
+
blue: "#5A5FE0",
|
|
405
|
+
// Khipu-blue / LigoPay informational blue (distinct from cyan main)
|
|
368
406
|
container: "#EFF6FF",
|
|
369
407
|
// Light blue background for chips/badges
|
|
370
408
|
contrastText: "#FFFFFF"
|
|
@@ -391,6 +429,8 @@ var fontWeights = {
|
|
|
391
429
|
bold: 700
|
|
392
430
|
};
|
|
393
431
|
var fontSizes = {
|
|
432
|
+
"2xs": "0.625rem",
|
|
433
|
+
// 10px — tiny captions (version footer, fine print)
|
|
394
434
|
xs: "0.75rem",
|
|
395
435
|
// 12px
|
|
396
436
|
sm: "0.875rem",
|
|
@@ -407,8 +447,10 @@ var fontSizes = {
|
|
|
407
447
|
// 24px
|
|
408
448
|
"3xl": "1.875rem",
|
|
409
449
|
// 30px
|
|
410
|
-
"4xl": "2.25rem"
|
|
450
|
+
"4xl": "2.25rem",
|
|
411
451
|
// 36px
|
|
452
|
+
decimalSup: "0.5em"
|
|
453
|
+
// Relative size for decimal superscript in amount displays
|
|
412
454
|
};
|
|
413
455
|
var lineHeights = {
|
|
414
456
|
tight: 1.2,
|
|
@@ -811,6 +853,8 @@ var responsiveTypography = {
|
|
|
811
853
|
}
|
|
812
854
|
};
|
|
813
855
|
var responsiveBaseFontSizes = {
|
|
856
|
+
"2xs": { mobile: "0.5625rem", tablet: "0.625rem", desktop: "0.625rem" },
|
|
857
|
+
// 9px → 10px
|
|
814
858
|
xs: { mobile: "0.6875rem", tablet: "0.75rem", desktop: "0.75rem" },
|
|
815
859
|
// 11px → 12px
|
|
816
860
|
sm: { mobile: "0.8125rem", tablet: "0.875rem", desktop: "0.875rem" },
|
|
@@ -1040,7 +1084,7 @@ var KdsButton = forwardRef(
|
|
|
1040
1084
|
children: [
|
|
1041
1085
|
!loading && startIcon && /* @__PURE__ */ jsx2("span", { className: "kds-icon", children: /* @__PURE__ */ jsx2("i", { className: "material-symbols-outlined", children: startIcon }) }),
|
|
1042
1086
|
loading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1043
|
-
/* @__PURE__ */ jsx2("
|
|
1087
|
+
/* @__PURE__ */ jsx2("progress", { className: "circle indeterminate small" }),
|
|
1044
1088
|
/* @__PURE__ */ jsx2("span", { children })
|
|
1045
1089
|
] }) : /* @__PURE__ */ jsx2("span", { children }),
|
|
1046
1090
|
!loading && endIcon && /* @__PURE__ */ jsx2("span", { className: "kds-icon", children: /* @__PURE__ */ jsx2("i", { className: "material-symbols-outlined", children: endIcon }) })
|
|
@@ -1051,7 +1095,7 @@ var KdsButton = forwardRef(
|
|
|
1051
1095
|
KdsButton.displayName = "KdsButton";
|
|
1052
1096
|
|
|
1053
1097
|
// src/components/core/KdsTextField/KdsTextField.tsx
|
|
1054
|
-
import { forwardRef as forwardRef2 } from "react";
|
|
1098
|
+
import { forwardRef as forwardRef2, useState } from "react";
|
|
1055
1099
|
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
1056
1100
|
var KdsTextField = forwardRef2(
|
|
1057
1101
|
({
|
|
@@ -1059,14 +1103,31 @@ var KdsTextField = forwardRef2(
|
|
|
1059
1103
|
helperText,
|
|
1060
1104
|
error,
|
|
1061
1105
|
fullWidth = true,
|
|
1106
|
+
narrow = false,
|
|
1062
1107
|
readOnly,
|
|
1063
1108
|
startIcon,
|
|
1064
1109
|
endIcon,
|
|
1110
|
+
required,
|
|
1065
1111
|
className,
|
|
1066
1112
|
id,
|
|
1113
|
+
type,
|
|
1114
|
+
revealable,
|
|
1115
|
+
revealLabel = "Mostrar u ocultar contrase\xF1a",
|
|
1116
|
+
requiredMark = true,
|
|
1067
1117
|
...props
|
|
1068
1118
|
}, ref) => {
|
|
1119
|
+
const [revealed, setRevealed] = useState(false);
|
|
1069
1120
|
const fieldId = id || `kds-field-${label.toLowerCase().replace(/\s+/g, "-")}`;
|
|
1121
|
+
const isRevealable = !!revealable && !readOnly && !props.disabled;
|
|
1122
|
+
const inputType = isRevealable ? revealed ? "text" : "password" : type;
|
|
1123
|
+
const hasSuffix = !!endIcon || readOnly || isRevealable;
|
|
1124
|
+
const toggleReveal = () => setRevealed((v) => !v);
|
|
1125
|
+
const onToggleKeyDown = (e) => {
|
|
1126
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
1127
|
+
e.preventDefault();
|
|
1128
|
+
toggleReveal();
|
|
1129
|
+
}
|
|
1130
|
+
};
|
|
1070
1131
|
return /* @__PURE__ */ jsxs2(
|
|
1071
1132
|
"div",
|
|
1072
1133
|
{
|
|
@@ -1074,9 +1135,12 @@ var KdsTextField = forwardRef2(
|
|
|
1074
1135
|
"field",
|
|
1075
1136
|
"label",
|
|
1076
1137
|
"border",
|
|
1138
|
+
startIcon && "prefix",
|
|
1139
|
+
hasSuffix && "suffix",
|
|
1077
1140
|
error && "invalid",
|
|
1078
1141
|
readOnly && "locked",
|
|
1079
|
-
fullWidth && "kds-w-full",
|
|
1142
|
+
fullWidth && !narrow && "kds-w-full",
|
|
1143
|
+
narrow && "kds-field--narrow",
|
|
1080
1144
|
className
|
|
1081
1145
|
),
|
|
1082
1146
|
children: [
|
|
@@ -1086,14 +1150,32 @@ var KdsTextField = forwardRef2(
|
|
|
1086
1150
|
{
|
|
1087
1151
|
ref,
|
|
1088
1152
|
id: fieldId,
|
|
1089
|
-
|
|
1153
|
+
type: inputType,
|
|
1090
1154
|
readOnly,
|
|
1091
|
-
|
|
1155
|
+
required,
|
|
1156
|
+
...props,
|
|
1157
|
+
placeholder: " "
|
|
1092
1158
|
}
|
|
1093
1159
|
),
|
|
1094
|
-
/* @__PURE__ */
|
|
1160
|
+
/* @__PURE__ */ jsxs2("label", { htmlFor: fieldId, children: [
|
|
1161
|
+
label,
|
|
1162
|
+
required && requiredMark && " *"
|
|
1163
|
+
] }),
|
|
1095
1164
|
readOnly && /* @__PURE__ */ jsx3("i", { className: "material-symbols-outlined", children: "lock" }),
|
|
1096
|
-
|
|
1165
|
+
isRevealable && /* @__PURE__ */ jsx3(
|
|
1166
|
+
"a",
|
|
1167
|
+
{
|
|
1168
|
+
className: "kds-field-reveal",
|
|
1169
|
+
role: "button",
|
|
1170
|
+
tabIndex: 0,
|
|
1171
|
+
"aria-label": revealLabel,
|
|
1172
|
+
"aria-pressed": revealed,
|
|
1173
|
+
onClick: toggleReveal,
|
|
1174
|
+
onKeyDown: onToggleKeyDown,
|
|
1175
|
+
children: /* @__PURE__ */ jsx3("i", { className: "material-symbols-outlined", "aria-hidden": "true", children: revealed ? "visibility" : "visibility_off" })
|
|
1176
|
+
}
|
|
1177
|
+
),
|
|
1178
|
+
endIcon && !readOnly && !isRevealable && /* @__PURE__ */ jsx3("i", { className: "material-symbols-outlined", children: endIcon }),
|
|
1097
1179
|
helperText && /* @__PURE__ */ jsx3("span", { className: "helper", children: helperText })
|
|
1098
1180
|
]
|
|
1099
1181
|
}
|
|
@@ -1102,76 +1184,41 @@ var KdsTextField = forwardRef2(
|
|
|
1102
1184
|
);
|
|
1103
1185
|
KdsTextField.displayName = "KdsTextField";
|
|
1104
1186
|
|
|
1105
|
-
// src/components/core/
|
|
1187
|
+
// src/components/core/KdsSearchField/KdsSearchField.tsx
|
|
1106
1188
|
import { forwardRef as forwardRef3 } from "react";
|
|
1107
1189
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1108
|
-
var
|
|
1109
|
-
({
|
|
1110
|
-
const
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1190
|
+
var KdsSearchField = forwardRef3(
|
|
1191
|
+
({ className, withIcon = false, ...props }, ref) => {
|
|
1192
|
+
const input = /* @__PURE__ */ jsx4(
|
|
1193
|
+
"input",
|
|
1194
|
+
{
|
|
1195
|
+
ref,
|
|
1196
|
+
type: "search",
|
|
1197
|
+
className: clsx("kds-search-field", className),
|
|
1198
|
+
...props
|
|
1199
|
+
}
|
|
1200
|
+
);
|
|
1201
|
+
if (!withIcon) {
|
|
1202
|
+
return input;
|
|
1203
|
+
}
|
|
1204
|
+
return /* @__PURE__ */ jsxs3("div", { className: "kds-search-field-wrapper", children: [
|
|
1205
|
+
/* @__PURE__ */ jsx4("i", { className: "material-symbols-outlined kds-search-field-icon", "aria-hidden": "true", children: "search" }),
|
|
1206
|
+
input
|
|
1114
1207
|
] });
|
|
1115
1208
|
}
|
|
1116
1209
|
);
|
|
1117
|
-
|
|
1210
|
+
KdsSearchField.displayName = "KdsSearchField";
|
|
1118
1211
|
|
|
1119
|
-
// src/components/core/
|
|
1212
|
+
// src/components/core/KdsCheckbox/KdsCheckbox.tsx
|
|
1120
1213
|
import { forwardRef as forwardRef4 } from "react";
|
|
1121
|
-
import * as Dialog from "@radix-ui/react-dialog";
|
|
1122
1214
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1123
|
-
var
|
|
1124
|
-
({
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
description,
|
|
1129
|
-
footer,
|
|
1130
|
-
children,
|
|
1131
|
-
size = "md",
|
|
1132
|
-
showCloseButton = true,
|
|
1133
|
-
className
|
|
1134
|
-
}, ref) => /* @__PURE__ */ jsx5(
|
|
1135
|
-
Dialog.Root,
|
|
1136
|
-
{
|
|
1137
|
-
open,
|
|
1138
|
-
onOpenChange: (o) => {
|
|
1139
|
-
if (!o) onClose();
|
|
1140
|
-
},
|
|
1141
|
-
children: /* @__PURE__ */ jsxs4(Dialog.Portal, { children: [
|
|
1142
|
-
/* @__PURE__ */ jsx5(Dialog.Overlay, { className: "kds-bottom-sheet-scrim" }),
|
|
1143
|
-
/* @__PURE__ */ jsxs4(
|
|
1144
|
-
Dialog.Content,
|
|
1145
|
-
{
|
|
1146
|
-
ref,
|
|
1147
|
-
className: clsx(
|
|
1148
|
-
"kds-bottom-sheet",
|
|
1149
|
-
`kds-bottom-sheet-${size}`,
|
|
1150
|
-
className
|
|
1151
|
-
),
|
|
1152
|
-
children: [
|
|
1153
|
-
title && /* @__PURE__ */ jsxs4("div", { className: "kds-bottom-sheet-header", children: [
|
|
1154
|
-
/* @__PURE__ */ jsx5(Dialog.Title, { className: "kds-bottom-sheet-title", children: title }),
|
|
1155
|
-
showCloseButton && /* @__PURE__ */ jsx5(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx5(
|
|
1156
|
-
"button",
|
|
1157
|
-
{
|
|
1158
|
-
className: "kds-bottom-sheet-close",
|
|
1159
|
-
"aria-label": "Cerrar",
|
|
1160
|
-
children: /* @__PURE__ */ jsx5("i", { className: "material-symbols-outlined", children: "close" })
|
|
1161
|
-
}
|
|
1162
|
-
) })
|
|
1163
|
-
] }),
|
|
1164
|
-
description && /* @__PURE__ */ jsx5(Dialog.Description, { className: "kds-bottom-sheet-description", children: description }),
|
|
1165
|
-
/* @__PURE__ */ jsx5("div", { className: "kds-bottom-sheet-body", children }),
|
|
1166
|
-
footer && /* @__PURE__ */ jsx5("div", { className: "kds-bottom-sheet-actions", children: footer })
|
|
1167
|
-
]
|
|
1168
|
-
}
|
|
1169
|
-
)
|
|
1170
|
-
] })
|
|
1171
|
-
}
|
|
1172
|
-
)
|
|
1215
|
+
var KdsCheckbox = forwardRef4(
|
|
1216
|
+
({ label, className, ...props }, ref) => /* @__PURE__ */ jsxs4("label", { className: clsx("checkbox", className), children: [
|
|
1217
|
+
/* @__PURE__ */ jsx5("input", { ref, type: "checkbox", ...props }),
|
|
1218
|
+
/* @__PURE__ */ jsx5("span", { children: label })
|
|
1219
|
+
] })
|
|
1173
1220
|
);
|
|
1174
|
-
|
|
1221
|
+
KdsCheckbox.displayName = "KdsCheckbox";
|
|
1175
1222
|
|
|
1176
1223
|
// src/components/core/KdsCard/KdsCard.tsx
|
|
1177
1224
|
import { forwardRef as forwardRef5 } from "react";
|
|
@@ -1208,50 +1255,161 @@ KdsCardFooter.displayName = "KdsCardFooter";
|
|
|
1208
1255
|
// src/components/core/KdsSpinner/KdsSpinner.tsx
|
|
1209
1256
|
import { forwardRef as forwardRef6 } from "react";
|
|
1210
1257
|
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1258
|
+
var SIZE_CLASS = {
|
|
1259
|
+
small: "small",
|
|
1260
|
+
medium: null,
|
|
1261
|
+
large: "large"
|
|
1262
|
+
};
|
|
1211
1263
|
var KdsSpinner = forwardRef6(
|
|
1212
|
-
({ size = "medium", label, className, ...props }, ref) =>
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1264
|
+
({ size = "medium", label, className, ...props }, ref) => {
|
|
1265
|
+
const sizeClass = SIZE_CLASS[size];
|
|
1266
|
+
return /* @__PURE__ */ jsxs5(
|
|
1267
|
+
"div",
|
|
1268
|
+
{
|
|
1269
|
+
ref,
|
|
1270
|
+
className: clsx("kds-flex kds-flex-col kds-items-center kds-gap-2", className),
|
|
1271
|
+
role: "status",
|
|
1272
|
+
...props,
|
|
1273
|
+
children: [
|
|
1274
|
+
/* @__PURE__ */ jsx7("progress", { className: clsx("circle indeterminate", sizeClass) }),
|
|
1275
|
+
label && /* @__PURE__ */ jsx7("span", { className: "kds-text-body-small kds-text-muted", children: label }),
|
|
1276
|
+
!label && /* @__PURE__ */ jsx7("span", { className: "kds-hidden", children: "Cargando" })
|
|
1277
|
+
]
|
|
1278
|
+
}
|
|
1279
|
+
);
|
|
1280
|
+
}
|
|
1217
1281
|
);
|
|
1218
1282
|
KdsSpinner.displayName = "KdsSpinner";
|
|
1219
1283
|
|
|
1220
|
-
// src/components/core/
|
|
1284
|
+
// src/components/core/KdsSecureLoader/KdsSecureLoader.tsx
|
|
1221
1285
|
import { forwardRef as forwardRef7 } from "react";
|
|
1222
|
-
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
1223
|
-
var
|
|
1224
|
-
({
|
|
1286
|
+
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1287
|
+
var KdsSecureLoader = forwardRef7(
|
|
1288
|
+
({ title, message, className, ...props }, ref) => /* @__PURE__ */ jsxs6("div", { ref, className: clsx("kds-secure-loader", className), role: "status", "aria-busy": "true", ...props, children: [
|
|
1289
|
+
(title || message) && /* @__PURE__ */ jsxs6("div", { className: "kds-secure-loader-text", children: [
|
|
1290
|
+
title && /* @__PURE__ */ jsx8("p", { className: "kds-secure-loader-title", children: title }),
|
|
1291
|
+
message && /* @__PURE__ */ jsx8("p", { className: "kds-secure-loader-message", children: message })
|
|
1292
|
+
] }),
|
|
1293
|
+
/* @__PURE__ */ jsxs6("div", { className: "kds-secure-loader-spinner", children: [
|
|
1294
|
+
/* @__PURE__ */ jsx8(
|
|
1295
|
+
"svg",
|
|
1296
|
+
{
|
|
1297
|
+
className: "kds-secure-loader-ring",
|
|
1298
|
+
viewBox: "22 22 44 44",
|
|
1299
|
+
width: "100",
|
|
1300
|
+
height: "100",
|
|
1301
|
+
fill: "none",
|
|
1302
|
+
"aria-hidden": "true",
|
|
1303
|
+
children: /* @__PURE__ */ jsx8("circle", { cx: "44", cy: "44", r: "20.2", fill: "none" })
|
|
1304
|
+
}
|
|
1305
|
+
),
|
|
1306
|
+
/* @__PURE__ */ jsx8("i", { className: "material-symbols-outlined kds-secure-loader-lock", "aria-hidden": "true", children: "lock" })
|
|
1307
|
+
] })
|
|
1308
|
+
] })
|
|
1309
|
+
);
|
|
1310
|
+
KdsSecureLoader.displayName = "KdsSecureLoader";
|
|
1311
|
+
|
|
1312
|
+
// src/components/core/KdsCopyButton/KdsCopyButton.tsx
|
|
1313
|
+
import { forwardRef as forwardRef8 } from "react";
|
|
1314
|
+
|
|
1315
|
+
// src/components/core/hooks/useCopyToClipboard.ts
|
|
1316
|
+
import { useState as useState2, useCallback } from "react";
|
|
1317
|
+
function useCopyToClipboard(resetMs = 1200) {
|
|
1318
|
+
const [copied, setCopied] = useState2(false);
|
|
1319
|
+
const copy = useCallback(
|
|
1320
|
+
async (text) => {
|
|
1321
|
+
try {
|
|
1322
|
+
await navigator.clipboard.writeText(text);
|
|
1323
|
+
setCopied(true);
|
|
1324
|
+
setTimeout(() => setCopied(false), resetMs);
|
|
1325
|
+
} catch {
|
|
1326
|
+
}
|
|
1327
|
+
},
|
|
1328
|
+
[resetMs]
|
|
1329
|
+
);
|
|
1330
|
+
return { copied, copy };
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
// src/components/core/KdsCopyButton/KdsCopyButton.tsx
|
|
1334
|
+
import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1335
|
+
var KdsCopyButton = forwardRef8(
|
|
1336
|
+
({ value, copiedText = "Copiado", className, ...props }, ref) => {
|
|
1337
|
+
const { copied, copy } = useCopyToClipboard();
|
|
1338
|
+
return /* @__PURE__ */ jsxs7(
|
|
1339
|
+
"button",
|
|
1340
|
+
{
|
|
1341
|
+
ref,
|
|
1342
|
+
type: "button",
|
|
1343
|
+
className: clsx("kds-copy-button", copied && "copied", className),
|
|
1344
|
+
onClick: () => copy(value),
|
|
1345
|
+
"aria-label": `Copiar: ${value}`,
|
|
1346
|
+
...props,
|
|
1347
|
+
children: [
|
|
1348
|
+
/* @__PURE__ */ jsxs7("span", { className: "kds-copy-button-label", children: [
|
|
1349
|
+
/* @__PURE__ */ jsx9("span", { className: "kds-copy-button-value", "aria-hidden": copied || void 0, children: value }),
|
|
1350
|
+
/* @__PURE__ */ jsx9("span", { className: "kds-copy-button-copied", "aria-hidden": !copied || void 0, children: copiedText })
|
|
1351
|
+
] }),
|
|
1352
|
+
/* @__PURE__ */ jsx9("i", { className: "material-symbols-outlined", "aria-hidden": "true", children: copied ? "check" : "content_copy" })
|
|
1353
|
+
]
|
|
1354
|
+
}
|
|
1355
|
+
);
|
|
1356
|
+
}
|
|
1357
|
+
);
|
|
1358
|
+
KdsCopyButton.displayName = "KdsCopyButton";
|
|
1359
|
+
|
|
1360
|
+
// src/components/core/KdsLinearProgress/KdsLinearProgress.tsx
|
|
1361
|
+
import { forwardRef as forwardRef9 } from "react";
|
|
1362
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1363
|
+
var KdsLinearProgress = forwardRef9(
|
|
1364
|
+
({ value, max = 100, className, ...props }, ref) => /* @__PURE__ */ jsx10("progress", { ref, className: clsx("kds-progress", className), value, max, ...props })
|
|
1225
1365
|
);
|
|
1226
1366
|
KdsLinearProgress.displayName = "KdsLinearProgress";
|
|
1227
1367
|
|
|
1228
1368
|
// src/components/core/KdsAlert/KdsAlert.tsx
|
|
1229
|
-
import { forwardRef as
|
|
1230
|
-
import { jsx as
|
|
1231
|
-
var
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1369
|
+
import { forwardRef as forwardRef10 } from "react";
|
|
1370
|
+
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1371
|
+
var DEFAULT_ICONS = {
|
|
1372
|
+
success: "check_circle",
|
|
1373
|
+
info: "info",
|
|
1374
|
+
warning: "warning",
|
|
1375
|
+
error: "error"
|
|
1376
|
+
};
|
|
1377
|
+
var KdsAlert = forwardRef10(
|
|
1378
|
+
({ severity, title, icon, inline, onClose, children, className, ...props }, ref) => {
|
|
1379
|
+
const resolvedIcon = icon === false ? null : typeof icon === "string" ? icon : DEFAULT_ICONS[severity];
|
|
1380
|
+
return /* @__PURE__ */ jsxs8(
|
|
1381
|
+
"div",
|
|
1382
|
+
{
|
|
1383
|
+
ref,
|
|
1384
|
+
role: "alert",
|
|
1385
|
+
className: clsx("kds-alert", `kds-${severity}`, inline && "kds-alert-inline", className),
|
|
1386
|
+
...props,
|
|
1387
|
+
children: [
|
|
1388
|
+
resolvedIcon && /* @__PURE__ */ jsx11("div", { className: "kds-alert-icon", children: /* @__PURE__ */ jsx11("i", { className: "material-symbols-outlined", children: resolvedIcon }) }),
|
|
1389
|
+
/* @__PURE__ */ jsxs8("div", { className: "kds-alert-content", children: [
|
|
1390
|
+
title && /* @__PURE__ */ jsx11("p", { className: "kds-alert-title", children: title }),
|
|
1391
|
+
/* @__PURE__ */ jsx11("p", { className: "kds-alert-description", children })
|
|
1392
|
+
] }),
|
|
1393
|
+
onClose && /* @__PURE__ */ jsx11(
|
|
1394
|
+
"button",
|
|
1395
|
+
{
|
|
1396
|
+
type: "button",
|
|
1397
|
+
className: "kds-alert-close",
|
|
1398
|
+
onClick: onClose,
|
|
1399
|
+
"aria-label": "Cerrar",
|
|
1400
|
+
children: /* @__PURE__ */ jsx11("i", { className: "material-symbols-outlined", children: "close" })
|
|
1401
|
+
}
|
|
1402
|
+
)
|
|
1403
|
+
]
|
|
1404
|
+
}
|
|
1405
|
+
);
|
|
1406
|
+
}
|
|
1249
1407
|
);
|
|
1250
1408
|
KdsAlert.displayName = "KdsAlert";
|
|
1251
1409
|
|
|
1252
1410
|
// src/components/core/KdsTypography/KdsTypography.tsx
|
|
1253
|
-
import { forwardRef as
|
|
1254
|
-
import { jsx as
|
|
1411
|
+
import { forwardRef as forwardRef11 } from "react";
|
|
1412
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1255
1413
|
var variantTag = {
|
|
1256
1414
|
display1: "h1",
|
|
1257
1415
|
display2: "h2",
|
|
@@ -1263,13 +1421,18 @@ var variantTag = {
|
|
|
1263
1421
|
"body-small": "p",
|
|
1264
1422
|
label: "span",
|
|
1265
1423
|
"label-small": "span",
|
|
1424
|
+
"kv-label": "span",
|
|
1425
|
+
value: "span",
|
|
1426
|
+
code: "span",
|
|
1427
|
+
caption: "span",
|
|
1266
1428
|
muted: "p",
|
|
1267
|
-
link: "span"
|
|
1429
|
+
link: "span",
|
|
1430
|
+
strong: "span"
|
|
1268
1431
|
};
|
|
1269
|
-
var KdsTypography =
|
|
1432
|
+
var KdsTypography = forwardRef11(
|
|
1270
1433
|
({ variant = "body", color, as, children, className, ...props }, ref) => {
|
|
1271
1434
|
const Tag = as || variantTag[variant];
|
|
1272
|
-
return /* @__PURE__ */
|
|
1435
|
+
return /* @__PURE__ */ jsx12(
|
|
1273
1436
|
Tag,
|
|
1274
1437
|
{
|
|
1275
1438
|
ref,
|
|
@@ -1287,12 +1450,12 @@ var KdsTypography = forwardRef9(
|
|
|
1287
1450
|
KdsTypography.displayName = "KdsTypography";
|
|
1288
1451
|
|
|
1289
1452
|
// src/components/core/KdsTabs/KdsTabs.tsx
|
|
1290
|
-
import
|
|
1453
|
+
import React12, { forwardRef as forwardRef12, Children, useMemo } from "react";
|
|
1291
1454
|
|
|
1292
1455
|
// src/components/core/hooks/useTabsKeyboard.ts
|
|
1293
|
-
import { useCallback } from "react";
|
|
1456
|
+
import { useCallback as useCallback2 } from "react";
|
|
1294
1457
|
function useTabsKeyboard(tabCount, activeIndex, onChange) {
|
|
1295
|
-
const onKeyDown =
|
|
1458
|
+
const onKeyDown = useCallback2(
|
|
1296
1459
|
(e) => {
|
|
1297
1460
|
let next = activeIndex;
|
|
1298
1461
|
if (e.key === "ArrowRight") next = (activeIndex + 1) % tabCount;
|
|
@@ -1312,31 +1475,31 @@ function useTabsKeyboard(tabCount, activeIndex, onChange) {
|
|
|
1312
1475
|
}
|
|
1313
1476
|
|
|
1314
1477
|
// src/components/core/KdsTabs/KdsTabs.tsx
|
|
1315
|
-
import { jsx as
|
|
1316
|
-
var KdsTabs =
|
|
1317
|
-
({ activeIndex, onChange,
|
|
1478
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
1479
|
+
var KdsTabs = forwardRef12(
|
|
1480
|
+
({ activeIndex, onChange, children, className, style, ...props }, ref) => {
|
|
1318
1481
|
const tabCount = Children.count(children);
|
|
1319
1482
|
const { onKeyDown } = useTabsKeyboard(tabCount, activeIndex, onChange);
|
|
1320
|
-
const mergedStyle = useMemo(
|
|
1321
|
-
|
|
1322
|
-
return {
|
|
1483
|
+
const mergedStyle = useMemo(
|
|
1484
|
+
() => ({
|
|
1323
1485
|
...style,
|
|
1324
1486
|
"--_tab-count": tabCount,
|
|
1325
1487
|
"--_active-idx": activeIndex
|
|
1326
|
-
}
|
|
1327
|
-
|
|
1328
|
-
|
|
1488
|
+
}),
|
|
1489
|
+
[tabCount, activeIndex, style]
|
|
1490
|
+
);
|
|
1491
|
+
return /* @__PURE__ */ jsx13(
|
|
1329
1492
|
"div",
|
|
1330
1493
|
{
|
|
1331
1494
|
ref,
|
|
1332
1495
|
role: "tablist",
|
|
1333
|
-
className: clsx(
|
|
1496
|
+
className: clsx("kds-segmented-tabs", className),
|
|
1334
1497
|
style: mergedStyle,
|
|
1335
1498
|
onKeyDown,
|
|
1336
1499
|
...props,
|
|
1337
1500
|
children: Children.map(children, (child, i) => {
|
|
1338
|
-
if (!
|
|
1339
|
-
return
|
|
1501
|
+
if (!React12.isValidElement(child)) return child;
|
|
1502
|
+
return React12.cloneElement(child, {
|
|
1340
1503
|
_active: i === activeIndex,
|
|
1341
1504
|
_onClick: () => onChange(i)
|
|
1342
1505
|
});
|
|
@@ -1346,11 +1509,12 @@ var KdsTabs = forwardRef10(
|
|
|
1346
1509
|
}
|
|
1347
1510
|
);
|
|
1348
1511
|
KdsTabs.displayName = "KdsTabs";
|
|
1349
|
-
var KdsTab =
|
|
1350
|
-
({ _active, _onClick, children, className, ...props }, ref) => /* @__PURE__ */
|
|
1512
|
+
var KdsTab = forwardRef12(
|
|
1513
|
+
({ _active, _onClick, children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
1351
1514
|
"button",
|
|
1352
1515
|
{
|
|
1353
1516
|
ref,
|
|
1517
|
+
type: "button",
|
|
1354
1518
|
role: "tab",
|
|
1355
1519
|
"aria-selected": _active,
|
|
1356
1520
|
tabIndex: _active ? 0 : -1,
|
|
@@ -1362,8 +1526,8 @@ var KdsTab = forwardRef10(
|
|
|
1362
1526
|
)
|
|
1363
1527
|
);
|
|
1364
1528
|
KdsTab.displayName = "KdsTab";
|
|
1365
|
-
var KdsTabPanel =
|
|
1366
|
-
({ active, children, className, ...props }, ref) => /* @__PURE__ */
|
|
1529
|
+
var KdsTabPanel = forwardRef12(
|
|
1530
|
+
({ active, children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
1367
1531
|
"div",
|
|
1368
1532
|
{
|
|
1369
1533
|
ref,
|
|
@@ -1377,190 +1541,128 @@ var KdsTabPanel = forwardRef10(
|
|
|
1377
1541
|
);
|
|
1378
1542
|
KdsTabPanel.displayName = "KdsTabPanel";
|
|
1379
1543
|
|
|
1380
|
-
// src/components/core/KdsLogoHeader/KdsLogoHeader.tsx
|
|
1381
|
-
import { forwardRef as forwardRef11 } from "react";
|
|
1382
|
-
|
|
1383
|
-
// src/assets/images/khipu-logo-color.svg
|
|
1384
|
-
var khipu_logo_color_default = "./khipu-logo-color-TV75AKOV.svg";
|
|
1385
|
-
|
|
1386
|
-
// src/components/core/KdsLogoHeader/KdsLogoHeader.tsx
|
|
1387
|
-
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1388
|
-
var KhipuLogo = () => /* @__PURE__ */ jsx12(
|
|
1389
|
-
"img",
|
|
1390
|
-
{
|
|
1391
|
-
src: khipu_logo_color_default,
|
|
1392
|
-
alt: "Khipu",
|
|
1393
|
-
className: "kds-logo-header-logo-img"
|
|
1394
|
-
}
|
|
1395
|
-
);
|
|
1396
|
-
var KdsLogoHeaderLogo = forwardRef11(
|
|
1397
|
-
({ children, className, ...props }, ref) => {
|
|
1398
|
-
return /* @__PURE__ */ jsx12(
|
|
1399
|
-
"div",
|
|
1400
|
-
{
|
|
1401
|
-
ref,
|
|
1402
|
-
className: clsx("kds-logo-header-logo", className),
|
|
1403
|
-
...props,
|
|
1404
|
-
children: children || /* @__PURE__ */ jsx12(KhipuLogo, {})
|
|
1405
|
-
}
|
|
1406
|
-
);
|
|
1407
|
-
}
|
|
1408
|
-
);
|
|
1409
|
-
KdsLogoHeaderLogo.displayName = "KdsLogoHeaderLogo";
|
|
1410
|
-
var KdsLogoHeaderSeparator = forwardRef11(
|
|
1411
|
-
({ children = "|", className, ...props }, ref) => {
|
|
1412
|
-
return /* @__PURE__ */ jsx12(
|
|
1413
|
-
"span",
|
|
1414
|
-
{
|
|
1415
|
-
ref,
|
|
1416
|
-
className: clsx("kds-logo-header-separator", className),
|
|
1417
|
-
...props,
|
|
1418
|
-
children
|
|
1419
|
-
}
|
|
1420
|
-
);
|
|
1421
|
-
}
|
|
1422
|
-
);
|
|
1423
|
-
KdsLogoHeaderSeparator.displayName = "KdsLogoHeaderSeparator";
|
|
1424
|
-
var KdsLogoHeaderCode = forwardRef11(
|
|
1425
|
-
({ children, className, ...props }, ref) => {
|
|
1426
|
-
return /* @__PURE__ */ jsx12(
|
|
1427
|
-
"span",
|
|
1428
|
-
{
|
|
1429
|
-
ref,
|
|
1430
|
-
className: clsx("kds-logo-header-code", className),
|
|
1431
|
-
...props,
|
|
1432
|
-
children
|
|
1433
|
-
}
|
|
1434
|
-
);
|
|
1435
|
-
}
|
|
1436
|
-
);
|
|
1437
|
-
KdsLogoHeaderCode.displayName = "KdsLogoHeaderCode";
|
|
1438
|
-
var KdsLogoHeaderCloseButton = forwardRef11(
|
|
1439
|
-
({ onClose, className, ...props }, ref) => {
|
|
1440
|
-
return /* @__PURE__ */ jsx12("div", { className: "kds-logo-header-close-wrapper", children: /* @__PURE__ */ jsx12(
|
|
1441
|
-
"button",
|
|
1442
|
-
{
|
|
1443
|
-
ref,
|
|
1444
|
-
onClick: onClose,
|
|
1445
|
-
className: clsx("kds-btn kds-btn-icon", className),
|
|
1446
|
-
"aria-label": "close",
|
|
1447
|
-
...props,
|
|
1448
|
-
children: /* @__PURE__ */ jsx12("i", { className: "material-symbols-outlined", children: "close" })
|
|
1449
|
-
}
|
|
1450
|
-
) });
|
|
1451
|
-
}
|
|
1452
|
-
);
|
|
1453
|
-
KdsLogoHeaderCloseButton.displayName = "KdsLogoHeaderCloseButton";
|
|
1454
|
-
var KdsLogoHeader = forwardRef11(
|
|
1455
|
-
({ children, className, ...props }, ref) => {
|
|
1456
|
-
return /* @__PURE__ */ jsx12(
|
|
1457
|
-
"div",
|
|
1458
|
-
{
|
|
1459
|
-
ref,
|
|
1460
|
-
className: clsx("kds-brand-row", className),
|
|
1461
|
-
...props,
|
|
1462
|
-
children
|
|
1463
|
-
}
|
|
1464
|
-
);
|
|
1465
|
-
}
|
|
1466
|
-
);
|
|
1467
|
-
KdsLogoHeader.displayName = "KdsLogoHeader";
|
|
1468
|
-
|
|
1469
1544
|
// src/components/core/KdsRadioGroup/KdsRadioGroup.tsx
|
|
1470
|
-
import { forwardRef as
|
|
1471
|
-
import { jsx as
|
|
1472
|
-
var KdsRadioGroup =
|
|
1473
|
-
({ label, name, options, value, onChange, className, ...props }, ref) => /* @__PURE__ */
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1545
|
+
import { forwardRef as forwardRef13 } from "react";
|
|
1546
|
+
import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1547
|
+
var KdsRadioGroup = forwardRef13(
|
|
1548
|
+
({ label, name, options, value, onChange, size, variant, className, ...props }, ref) => /* @__PURE__ */ jsxs9(
|
|
1549
|
+
"fieldset",
|
|
1550
|
+
{
|
|
1551
|
+
ref,
|
|
1552
|
+
className: clsx("kds-radio-group", variant === "card" && "kds-radio-group--card", className),
|
|
1553
|
+
...props,
|
|
1554
|
+
children: [
|
|
1555
|
+
label && /* @__PURE__ */ jsx14("legend", { children: label }),
|
|
1556
|
+
options.map((opt) => /* @__PURE__ */ jsxs9("label", { className: clsx("radio", size), children: [
|
|
1557
|
+
/* @__PURE__ */ jsx14(
|
|
1558
|
+
"input",
|
|
1559
|
+
{
|
|
1560
|
+
type: "radio",
|
|
1561
|
+
name,
|
|
1562
|
+
value: opt.value,
|
|
1563
|
+
checked: value === opt.value,
|
|
1564
|
+
disabled: opt.disabled,
|
|
1565
|
+
onChange: () => onChange?.(opt.value)
|
|
1566
|
+
}
|
|
1567
|
+
),
|
|
1568
|
+
/* @__PURE__ */ jsx14("span", { children: opt.label })
|
|
1569
|
+
] }, opt.value))
|
|
1570
|
+
]
|
|
1571
|
+
}
|
|
1572
|
+
)
|
|
1490
1573
|
);
|
|
1491
1574
|
KdsRadioGroup.displayName = "KdsRadioGroup";
|
|
1492
1575
|
|
|
1493
1576
|
// src/components/core/KdsSelect/KdsSelect.tsx
|
|
1494
|
-
import { forwardRef as
|
|
1495
|
-
import
|
|
1496
|
-
|
|
1497
|
-
var KdsSelectRoot = forwardRef13(
|
|
1577
|
+
import { forwardRef as forwardRef14 } from "react";
|
|
1578
|
+
import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1579
|
+
var KdsSelect = forwardRef14(
|
|
1498
1580
|
({
|
|
1499
|
-
value,
|
|
1500
|
-
onValueChange,
|
|
1501
|
-
placeholder,
|
|
1502
1581
|
label,
|
|
1503
|
-
|
|
1582
|
+
options,
|
|
1583
|
+
placeholder,
|
|
1504
1584
|
helperText,
|
|
1505
|
-
|
|
1585
|
+
error,
|
|
1586
|
+
prefixIcon,
|
|
1506
1587
|
fullWidth = true,
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
className
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1588
|
+
disabled,
|
|
1589
|
+
required,
|
|
1590
|
+
className,
|
|
1591
|
+
id,
|
|
1592
|
+
...props
|
|
1593
|
+
}, ref) => {
|
|
1594
|
+
const fieldId = id || `kds-select-${label.toLowerCase().replace(/\s+/g, "-")}`;
|
|
1595
|
+
return /* @__PURE__ */ jsxs10(
|
|
1596
|
+
"div",
|
|
1597
|
+
{
|
|
1598
|
+
className: clsx(
|
|
1599
|
+
"field",
|
|
1600
|
+
"label",
|
|
1601
|
+
"border",
|
|
1602
|
+
prefixIcon && "prefix",
|
|
1603
|
+
error && "invalid",
|
|
1604
|
+
fullWidth && "kds-w-full",
|
|
1605
|
+
className
|
|
1606
|
+
),
|
|
1607
|
+
children: [
|
|
1608
|
+
prefixIcon && /* @__PURE__ */ jsx15("i", { className: "material-symbols-outlined", children: prefixIcon }),
|
|
1609
|
+
/* @__PURE__ */ jsxs10(
|
|
1610
|
+
"select",
|
|
1611
|
+
{
|
|
1612
|
+
ref,
|
|
1613
|
+
id: fieldId,
|
|
1614
|
+
disabled,
|
|
1615
|
+
required,
|
|
1616
|
+
...props,
|
|
1617
|
+
children: [
|
|
1618
|
+
placeholder !== void 0 && /* @__PURE__ */ jsx15("option", { value: "", children: placeholder }),
|
|
1619
|
+
options.map((opt) => /* @__PURE__ */ jsx15("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
|
|
1620
|
+
]
|
|
1621
|
+
}
|
|
1622
|
+
),
|
|
1623
|
+
/* @__PURE__ */ jsxs10("label", { htmlFor: fieldId, children: [
|
|
1624
|
+
label,
|
|
1625
|
+
required && " *"
|
|
1525
1626
|
] }),
|
|
1526
|
-
|
|
1527
|
-
]
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
)
|
|
1532
|
-
);
|
|
1533
|
-
KdsSelectRoot.displayName = "KdsSelect";
|
|
1534
|
-
var KdsSelectItem = forwardRef13(
|
|
1535
|
-
({ children, className, ...props }, ref) => /* @__PURE__ */ jsxs8(Select.Item, { ref, className: clsx("kds-select-item", className), ...props, children: [
|
|
1536
|
-
/* @__PURE__ */ jsx14(Select.ItemText, { children }),
|
|
1537
|
-
/* @__PURE__ */ jsx14(Select.ItemIndicator, { className: "kds-select-item-indicator", children: /* @__PURE__ */ jsx14("i", { className: "material-symbols-outlined", children: "check" }) })
|
|
1538
|
-
] })
|
|
1627
|
+
helperText && /* @__PURE__ */ jsx15("span", { className: "helper", children: helperText })
|
|
1628
|
+
]
|
|
1629
|
+
}
|
|
1630
|
+
);
|
|
1631
|
+
}
|
|
1539
1632
|
);
|
|
1540
|
-
|
|
1541
|
-
var KdsSelect = Object.assign(KdsSelectRoot, {
|
|
1542
|
-
Item: KdsSelectItem
|
|
1543
|
-
});
|
|
1633
|
+
KdsSelect.displayName = "KdsSelect";
|
|
1544
1634
|
|
|
1545
1635
|
// src/components/core/KdsChip/KdsChip.tsx
|
|
1546
|
-
import { forwardRef as
|
|
1547
|
-
import { jsx as
|
|
1548
|
-
var KdsChip =
|
|
1549
|
-
({ color, icon, onDelete, children, className, ...props }, ref) => /* @__PURE__ */
|
|
1550
|
-
icon && /* @__PURE__ */
|
|
1551
|
-
children,
|
|
1552
|
-
onDelete && /* @__PURE__ */
|
|
1636
|
+
import { forwardRef as forwardRef15 } from "react";
|
|
1637
|
+
import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1638
|
+
var KdsChip = forwardRef15(
|
|
1639
|
+
({ color, icon, onDelete, children, className, ...props }, ref) => /* @__PURE__ */ jsxs11("span", { ref, className: clsx("kds-badge", color, className), ...props, children: [
|
|
1640
|
+
icon && /* @__PURE__ */ jsx16("i", { className: "material-symbols-outlined", children: icon }),
|
|
1641
|
+
/* @__PURE__ */ jsx16("span", { children }),
|
|
1642
|
+
onDelete && /* @__PURE__ */ jsx16(
|
|
1643
|
+
"button",
|
|
1644
|
+
{
|
|
1645
|
+
type: "button",
|
|
1646
|
+
className: "kds-badge-close",
|
|
1647
|
+
onClick: (e) => {
|
|
1648
|
+
e.stopPropagation();
|
|
1649
|
+
onDelete();
|
|
1650
|
+
},
|
|
1651
|
+
"aria-label": "Eliminar",
|
|
1652
|
+
children: /* @__PURE__ */ jsx16("i", { className: "material-symbols-outlined", children: "close" })
|
|
1653
|
+
}
|
|
1654
|
+
)
|
|
1553
1655
|
] })
|
|
1554
1656
|
);
|
|
1555
1657
|
KdsChip.displayName = "KdsChip";
|
|
1556
1658
|
|
|
1557
1659
|
// src/components/core/KdsSnackbar/KdsSnackbar.tsx
|
|
1558
|
-
import { forwardRef as
|
|
1660
|
+
import { forwardRef as forwardRef16 } from "react";
|
|
1559
1661
|
|
|
1560
1662
|
// src/components/core/hooks/useAutoHide.ts
|
|
1561
|
-
import { useState, useEffect, useRef } from "react";
|
|
1663
|
+
import { useState as useState3, useEffect, useRef } from "react";
|
|
1562
1664
|
function useAutoHide(durationMs, onHide) {
|
|
1563
|
-
const [visible, setVisible] =
|
|
1665
|
+
const [visible, setVisible] = useState3(true);
|
|
1564
1666
|
const onHideRef = useRef(onHide);
|
|
1565
1667
|
onHideRef.current = onHide;
|
|
1566
1668
|
useEffect(() => {
|
|
@@ -1575,22 +1677,61 @@ function useAutoHide(durationMs, onHide) {
|
|
|
1575
1677
|
}
|
|
1576
1678
|
|
|
1577
1679
|
// src/components/core/KdsSnackbar/KdsSnackbar.tsx
|
|
1578
|
-
import { jsx as
|
|
1579
|
-
var
|
|
1580
|
-
|
|
1581
|
-
|
|
1680
|
+
import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1681
|
+
var DEFAULT_ICONS2 = {
|
|
1682
|
+
info: "info",
|
|
1683
|
+
success: "check_circle",
|
|
1684
|
+
error: "error"
|
|
1685
|
+
};
|
|
1686
|
+
var KdsSnackbar = forwardRef16(
|
|
1687
|
+
({
|
|
1688
|
+
message,
|
|
1689
|
+
type = "info",
|
|
1690
|
+
duration = 5e3,
|
|
1691
|
+
onClose,
|
|
1692
|
+
open = true,
|
|
1693
|
+
icon,
|
|
1694
|
+
className,
|
|
1695
|
+
style,
|
|
1696
|
+
...props
|
|
1697
|
+
}, ref) => {
|
|
1698
|
+
const autoDismiss = duration > 0;
|
|
1699
|
+
const { visible } = useAutoHide(autoDismiss ? duration : 0, onClose);
|
|
1582
1700
|
if (!open || !visible) return null;
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1701
|
+
const resolvedIcon = icon === false ? null : icon ?? DEFAULT_ICONS2[type];
|
|
1702
|
+
const mergedStyle = autoDismiss ? { ...style, ["--kds-snackbar-duration"]: `${duration}ms` } : style ?? {};
|
|
1703
|
+
return /* @__PURE__ */ jsxs12(
|
|
1704
|
+
"div",
|
|
1705
|
+
{
|
|
1706
|
+
ref,
|
|
1707
|
+
role: "status",
|
|
1708
|
+
className: clsx("snackbar", "active", type, className),
|
|
1709
|
+
"data-auto-dismiss": autoDismiss ? "true" : void 0,
|
|
1710
|
+
style: mergedStyle,
|
|
1711
|
+
...props,
|
|
1712
|
+
children: [
|
|
1713
|
+
resolvedIcon && /* @__PURE__ */ jsx17("i", { className: "material-symbols-outlined", children: resolvedIcon }),
|
|
1714
|
+
/* @__PURE__ */ jsx17("span", { className: "max", children: message }),
|
|
1715
|
+
onClose && /* @__PURE__ */ jsx17(
|
|
1716
|
+
"button",
|
|
1717
|
+
{
|
|
1718
|
+
type: "button",
|
|
1719
|
+
className: "kds-snackbar-close",
|
|
1720
|
+
onClick: onClose,
|
|
1721
|
+
"aria-label": "Cerrar",
|
|
1722
|
+
children: /* @__PURE__ */ jsx17("i", { className: "material-symbols-outlined", children: "close" })
|
|
1723
|
+
}
|
|
1724
|
+
)
|
|
1725
|
+
]
|
|
1726
|
+
}
|
|
1727
|
+
);
|
|
1728
|
+
}
|
|
1729
|
+
);
|
|
1589
1730
|
KdsSnackbar.displayName = "KdsSnackbar";
|
|
1590
1731
|
|
|
1591
1732
|
// src/components/core/KdsTooltip/KdsTooltip.tsx
|
|
1592
1733
|
import * as Tooltip from "@radix-ui/react-tooltip";
|
|
1593
|
-
import { jsx as
|
|
1734
|
+
import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1594
1735
|
function KdsTooltip({
|
|
1595
1736
|
content,
|
|
1596
1737
|
children,
|
|
@@ -1601,167 +1742,377 @@ function KdsTooltip({
|
|
|
1601
1742
|
onOpenChange,
|
|
1602
1743
|
delayDuration = 300
|
|
1603
1744
|
}) {
|
|
1604
|
-
return /* @__PURE__ */
|
|
1605
|
-
/* @__PURE__ */
|
|
1606
|
-
/* @__PURE__ */
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1745
|
+
return /* @__PURE__ */ jsx18(Tooltip.Provider, { delayDuration, children: /* @__PURE__ */ jsxs13(Tooltip.Root, { open, defaultOpen, onOpenChange, children: [
|
|
1746
|
+
/* @__PURE__ */ jsx18(Tooltip.Trigger, { asChild: true, children }),
|
|
1747
|
+
/* @__PURE__ */ jsx18(Tooltip.Portal, { children: /* @__PURE__ */ jsx18("div", { className: "kds-theme-root", style: { display: "contents" }, children: /* @__PURE__ */ jsxs13(
|
|
1748
|
+
Tooltip.Content,
|
|
1749
|
+
{
|
|
1750
|
+
className: clsx("kds-tooltip", className),
|
|
1751
|
+
side: placement,
|
|
1752
|
+
sideOffset: 6,
|
|
1753
|
+
collisionPadding: 8,
|
|
1754
|
+
children: [
|
|
1755
|
+
content,
|
|
1756
|
+
/* @__PURE__ */ jsx18(Tooltip.Arrow, { className: "kds-tooltip-arrow", width: 10, height: 5 })
|
|
1757
|
+
]
|
|
1758
|
+
}
|
|
1759
|
+
) }) })
|
|
1610
1760
|
] }) });
|
|
1611
1761
|
}
|
|
1612
1762
|
|
|
1613
1763
|
// src/components/core/KdsAccordion/KdsAccordion.tsx
|
|
1614
|
-
import { forwardRef as
|
|
1615
|
-
import { jsx as
|
|
1616
|
-
var KdsAccordion =
|
|
1617
|
-
({ children, className, ...props }, ref) => /* @__PURE__ */
|
|
1764
|
+
import { forwardRef as forwardRef17 } from "react";
|
|
1765
|
+
import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1766
|
+
var KdsAccordion = forwardRef17(
|
|
1767
|
+
({ children, className, ...props }, ref) => /* @__PURE__ */ jsx19("details", { ref, className: clsx("kds-accordion", className), ...props, children })
|
|
1618
1768
|
);
|
|
1619
1769
|
KdsAccordion.displayName = "KdsAccordion";
|
|
1620
|
-
var KdsAccordionSummary =
|
|
1621
|
-
({ children, className, ...props }, ref) => /* @__PURE__ */
|
|
1770
|
+
var KdsAccordionSummary = forwardRef17(
|
|
1771
|
+
({ children, className, ...props }, ref) => /* @__PURE__ */ jsxs14("summary", { ref, className: clsx("kds-accordion-summary", className), ...props, children: [
|
|
1622
1772
|
children,
|
|
1623
|
-
/* @__PURE__ */
|
|
1773
|
+
/* @__PURE__ */ jsx19("i", { className: "material-symbols-outlined", children: "expand_more" })
|
|
1624
1774
|
] })
|
|
1625
1775
|
);
|
|
1626
1776
|
KdsAccordionSummary.displayName = "KdsAccordionSummary";
|
|
1627
|
-
var KdsAccordionDetails =
|
|
1628
|
-
({ children, className, ...props }, ref) => /* @__PURE__ */
|
|
1777
|
+
var KdsAccordionDetails = forwardRef17(
|
|
1778
|
+
({ children, className, ...props }, ref) => /* @__PURE__ */ jsx19("div", { ref, className: clsx("kds-accordion-details", className), ...props, children })
|
|
1629
1779
|
);
|
|
1630
1780
|
KdsAccordionDetails.displayName = "KdsAccordionDetails";
|
|
1631
1781
|
|
|
1632
1782
|
// src/components/core/KdsDivider/KdsDivider.tsx
|
|
1633
|
-
import { forwardRef as
|
|
1634
|
-
import { jsx as
|
|
1635
|
-
var KdsDivider =
|
|
1636
|
-
({ dashed, className, ...props }, ref) => /* @__PURE__ */
|
|
1783
|
+
import { forwardRef as forwardRef18 } from "react";
|
|
1784
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1785
|
+
var KdsDivider = forwardRef18(
|
|
1786
|
+
({ dashed, className, ...props }, ref) => /* @__PURE__ */ jsx20("hr", { ref, className: clsx(dashed ? "kds-hr-dashed" : "kds-hr", className), ...props })
|
|
1637
1787
|
);
|
|
1638
1788
|
KdsDivider.displayName = "KdsDivider";
|
|
1639
1789
|
|
|
1640
1790
|
// src/components/core/KdsSectionNote/KdsSectionNote.tsx
|
|
1641
|
-
import { forwardRef as
|
|
1642
|
-
import { jsx as
|
|
1643
|
-
var KdsSectionNote =
|
|
1644
|
-
({ icon = "info", children, className, ...props }, ref) => /* @__PURE__ */
|
|
1645
|
-
/* @__PURE__ */
|
|
1646
|
-
/* @__PURE__ */
|
|
1791
|
+
import { forwardRef as forwardRef19 } from "react";
|
|
1792
|
+
import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1793
|
+
var KdsSectionNote = forwardRef19(
|
|
1794
|
+
({ icon = "info", children, className, ...props }, ref) => /* @__PURE__ */ jsxs15("p", { ref, className: clsx("kds-section-note", className), ...props, children: [
|
|
1795
|
+
/* @__PURE__ */ jsx21("i", { className: "material-symbols-outlined", children: icon }),
|
|
1796
|
+
/* @__PURE__ */ jsx21("span", { children })
|
|
1647
1797
|
] })
|
|
1648
1798
|
);
|
|
1649
1799
|
KdsSectionNote.displayName = "KdsSectionNote";
|
|
1650
1800
|
|
|
1651
1801
|
// src/components/core/KdsStatusBlock/KdsStatusBlock.tsx
|
|
1652
|
-
import { forwardRef as
|
|
1653
|
-
import { jsx as
|
|
1654
|
-
var KdsStatusBlock =
|
|
1655
|
-
({ status, icon, title, description, inline, className, ...props }, ref) => /* @__PURE__ */
|
|
1656
|
-
/* @__PURE__ */
|
|
1657
|
-
/* @__PURE__ */
|
|
1658
|
-
/* @__PURE__ */
|
|
1659
|
-
description && /* @__PURE__ */
|
|
1802
|
+
import { forwardRef as forwardRef20 } from "react";
|
|
1803
|
+
import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1804
|
+
var KdsStatusBlock = forwardRef20(
|
|
1805
|
+
({ status, icon, title, description, inline, className, ...props }, ref) => /* @__PURE__ */ jsxs16("div", { ref, className: clsx("kds-status-block", inline && "inline", className), "data-status": status, ...props, children: [
|
|
1806
|
+
/* @__PURE__ */ jsx22("div", { className: "kds-status-block-icon", children: icon && /* @__PURE__ */ jsx22("i", { className: "material-symbols-outlined", children: icon }) }),
|
|
1807
|
+
/* @__PURE__ */ jsxs16("div", { children: [
|
|
1808
|
+
/* @__PURE__ */ jsx22("h2", { className: "kds-status-block-title", children: title }),
|
|
1809
|
+
description && /* @__PURE__ */ jsx22("p", { className: "kds-status-block-description", children: description })
|
|
1660
1810
|
] })
|
|
1661
1811
|
] })
|
|
1662
1812
|
);
|
|
1663
1813
|
KdsStatusBlock.displayName = "KdsStatusBlock";
|
|
1664
1814
|
|
|
1665
1815
|
// src/components/core/KdsStepper/KdsStepper.tsx
|
|
1666
|
-
import { forwardRef as forwardRef20 } from "react";
|
|
1667
|
-
import { jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1668
|
-
var KdsStepper = forwardRef20(
|
|
1669
|
-
({ steps, current, className, ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, className: clsx("kds-stepper", className), "data-steps": steps, "data-current": current, ...props, children: Array.from({ length: steps }, (_, i) => /* @__PURE__ */ jsxs15("div", { className: clsx("kds-step", i < current && "completed", i === current && "current"), children: [
|
|
1670
|
-
/* @__PURE__ */ jsx22("div", { className: "kds-step-indicator", children: i < current ? "\u2713" : i + 1 }),
|
|
1671
|
-
i < steps - 1 && /* @__PURE__ */ jsx22("div", { className: "kds-step-line" })
|
|
1672
|
-
] }, i)) })
|
|
1673
|
-
);
|
|
1674
|
-
KdsStepper.displayName = "KdsStepper";
|
|
1675
|
-
|
|
1676
|
-
// src/components/core/KdsCopyRow/KdsCopyRow.tsx
|
|
1677
1816
|
import { forwardRef as forwardRef21 } from "react";
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
setTimeout(() => setCopied(false), resetMs);
|
|
1689
|
-
} catch {
|
|
1690
|
-
}
|
|
1817
|
+
import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1818
|
+
var KdsStepper = forwardRef21(
|
|
1819
|
+
({ steps, current, className, ...props }, ref) => /* @__PURE__ */ jsx23("div", { ref, className: clsx("kds-stepper", className), ...props, children: steps.map((label, i) => /* @__PURE__ */ jsxs17(
|
|
1820
|
+
"div",
|
|
1821
|
+
{
|
|
1822
|
+
className: clsx("kds-step", i < current && "completed", i === current && "current"),
|
|
1823
|
+
children: [
|
|
1824
|
+
/* @__PURE__ */ jsx23("div", { className: "kds-step-indicator" }),
|
|
1825
|
+
/* @__PURE__ */ jsx23("div", { className: "kds-step-label", children: label })
|
|
1826
|
+
]
|
|
1691
1827
|
},
|
|
1692
|
-
|
|
1693
|
-
)
|
|
1694
|
-
|
|
1695
|
-
|
|
1828
|
+
`${i}-${label}`
|
|
1829
|
+
)) })
|
|
1830
|
+
);
|
|
1831
|
+
KdsStepper.displayName = "KdsStepper";
|
|
1696
1832
|
|
|
1697
1833
|
// src/components/core/KdsCopyRow/KdsCopyRow.tsx
|
|
1698
|
-
import {
|
|
1699
|
-
|
|
1700
|
-
|
|
1834
|
+
import { forwardRef as forwardRef22 } from "react";
|
|
1835
|
+
import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1836
|
+
var KdsCopyRow = forwardRef22(
|
|
1837
|
+
({ label, value, copiedText = "Copiado", className, ...props }, ref) => {
|
|
1701
1838
|
const { copied, copy } = useCopyToClipboard();
|
|
1702
|
-
return /* @__PURE__ */
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1839
|
+
return /* @__PURE__ */ jsxs18(
|
|
1840
|
+
"button",
|
|
1841
|
+
{
|
|
1842
|
+
ref,
|
|
1843
|
+
type: "button",
|
|
1844
|
+
className: clsx("kds-copy-row", copied && "copied", className),
|
|
1845
|
+
"data-copy": value,
|
|
1846
|
+
onClick: () => copy(value),
|
|
1847
|
+
"aria-label": `Copiar ${label}: ${value}`,
|
|
1848
|
+
...props,
|
|
1849
|
+
children: [
|
|
1850
|
+
/* @__PURE__ */ jsx24("i", { className: "material-symbols-outlined", "aria-hidden": "true", children: "content_copy" }),
|
|
1851
|
+
/* @__PURE__ */ jsxs18("div", { children: [
|
|
1852
|
+
/* @__PURE__ */ jsx24("span", { className: "kds-copy-row-label", children: label }),
|
|
1853
|
+
/* @__PURE__ */ jsx24("span", { className: "kds-copy-row-value", children: value })
|
|
1854
|
+
] }),
|
|
1855
|
+
/* @__PURE__ */ jsxs18("span", { className: "kds-copy-toast", "aria-hidden": "true", children: [
|
|
1856
|
+
/* @__PURE__ */ jsx24("i", { className: "material-symbols-outlined", children: "check_circle" }),
|
|
1857
|
+
" ",
|
|
1858
|
+
copiedText
|
|
1859
|
+
] })
|
|
1860
|
+
]
|
|
1861
|
+
}
|
|
1862
|
+
);
|
|
1707
1863
|
}
|
|
1708
1864
|
);
|
|
1709
1865
|
KdsCopyRow.displayName = "KdsCopyRow";
|
|
1710
1866
|
|
|
1711
1867
|
// src/components/core/KdsCopyableTable/KdsCopyableTable.tsx
|
|
1712
|
-
import { forwardRef as
|
|
1713
|
-
import { Fragment as Fragment2, jsx as
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1868
|
+
import { forwardRef as forwardRef23, useState as useState4, useRef as useRef2, useCallback as useCallback3 } from "react";
|
|
1869
|
+
import { Fragment as Fragment2, jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1870
|
+
async function copyToClipboard(text) {
|
|
1871
|
+
try {
|
|
1872
|
+
if (navigator.clipboard?.writeText) {
|
|
1873
|
+
await navigator.clipboard.writeText(text);
|
|
1874
|
+
return true;
|
|
1875
|
+
}
|
|
1876
|
+
} catch {
|
|
1877
|
+
}
|
|
1878
|
+
const ta = document.createElement("textarea");
|
|
1879
|
+
ta.value = text;
|
|
1880
|
+
ta.style.position = "fixed";
|
|
1881
|
+
ta.style.opacity = "0";
|
|
1882
|
+
document.body.appendChild(ta);
|
|
1883
|
+
ta.select();
|
|
1884
|
+
try {
|
|
1885
|
+
document.execCommand("copy");
|
|
1886
|
+
return true;
|
|
1887
|
+
} catch {
|
|
1888
|
+
return false;
|
|
1889
|
+
} finally {
|
|
1890
|
+
document.body.removeChild(ta);
|
|
1891
|
+
}
|
|
1892
|
+
}
|
|
1893
|
+
var TRANSITION_MS = 300;
|
|
1894
|
+
function GridVariant({
|
|
1895
|
+
gridRows,
|
|
1896
|
+
disabled,
|
|
1897
|
+
className,
|
|
1898
|
+
forwardedRef,
|
|
1899
|
+
rest
|
|
1900
|
+
}) {
|
|
1901
|
+
return /* @__PURE__ */ jsx25(
|
|
1902
|
+
"div",
|
|
1903
|
+
{
|
|
1904
|
+
ref: forwardedRef,
|
|
1905
|
+
className: clsx("kds-copyable-table", "kds-copyable-table--grid", className),
|
|
1906
|
+
...rest,
|
|
1907
|
+
children: gridRows.map((cells, rowIndex) => /* @__PURE__ */ jsx25(
|
|
1908
|
+
"div",
|
|
1909
|
+
{
|
|
1910
|
+
className: "kds-copyable-table-row kds-copyable-table-row--grid",
|
|
1911
|
+
"data-testid": "kds-grid-row",
|
|
1912
|
+
children: cells.map((text, cellIndex) => /* @__PURE__ */ jsx25(
|
|
1913
|
+
"span",
|
|
1914
|
+
{
|
|
1915
|
+
className: clsx("kds-grid-cell", disabled && "kds-grid-cell--disabled"),
|
|
1916
|
+
children: text
|
|
1917
|
+
},
|
|
1918
|
+
cellIndex
|
|
1919
|
+
))
|
|
1920
|
+
},
|
|
1921
|
+
rowIndex
|
|
1922
|
+
))
|
|
1923
|
+
}
|
|
1924
|
+
);
|
|
1925
|
+
}
|
|
1926
|
+
function CopyableVariant({
|
|
1927
|
+
rows,
|
|
1928
|
+
copyAllLabel = "Copiar todos los datos",
|
|
1929
|
+
copiedAllLabel = "Datos copiados",
|
|
1930
|
+
showCopyAll = true,
|
|
1931
|
+
className,
|
|
1932
|
+
forwardedRef,
|
|
1933
|
+
rest
|
|
1934
|
+
}) {
|
|
1935
|
+
const copiedTimers = useRef2(/* @__PURE__ */ new Map());
|
|
1936
|
+
const settlingTimers = useRef2(/* @__PURE__ */ new Map());
|
|
1937
|
+
const [copiedRows, setCopiedRows] = useState4(/* @__PURE__ */ new Set());
|
|
1938
|
+
const [settlingRows, setSettlingRows] = useState4(/* @__PURE__ */ new Set());
|
|
1939
|
+
const [allCopied, setAllCopied] = useState4(false);
|
|
1940
|
+
const markCopied = useCallback3((indexes, duration = 1500) => {
|
|
1941
|
+
setCopiedRows((prev) => {
|
|
1942
|
+
const next = new Set(prev);
|
|
1943
|
+
indexes.forEach((i) => next.add(i));
|
|
1944
|
+
return next;
|
|
1945
|
+
});
|
|
1946
|
+
indexes.forEach((i) => {
|
|
1947
|
+
const st = settlingTimers.current.get(i);
|
|
1948
|
+
if (st) {
|
|
1949
|
+
clearTimeout(st);
|
|
1950
|
+
settlingTimers.current.delete(i);
|
|
1951
|
+
}
|
|
1952
|
+
});
|
|
1953
|
+
setSettlingRows((prev) => {
|
|
1954
|
+
const next = new Set(prev);
|
|
1955
|
+
indexes.forEach((i) => next.delete(i));
|
|
1956
|
+
return next;
|
|
1957
|
+
});
|
|
1958
|
+
indexes.forEach((i) => {
|
|
1959
|
+
const existing = copiedTimers.current.get(i);
|
|
1960
|
+
if (existing) clearTimeout(existing);
|
|
1961
|
+
const t = setTimeout(() => {
|
|
1962
|
+
setCopiedRows((prev) => {
|
|
1963
|
+
const next = new Set(prev);
|
|
1964
|
+
next.delete(i);
|
|
1965
|
+
return next;
|
|
1966
|
+
});
|
|
1967
|
+
setSettlingRows((prev) => {
|
|
1968
|
+
const next = new Set(prev);
|
|
1969
|
+
next.add(i);
|
|
1970
|
+
return next;
|
|
1971
|
+
});
|
|
1972
|
+
copiedTimers.current.delete(i);
|
|
1973
|
+
const settlingT = setTimeout(() => {
|
|
1974
|
+
setSettlingRows((prev) => {
|
|
1975
|
+
const next = new Set(prev);
|
|
1976
|
+
next.delete(i);
|
|
1977
|
+
return next;
|
|
1978
|
+
});
|
|
1979
|
+
settlingTimers.current.delete(i);
|
|
1980
|
+
}, TRANSITION_MS);
|
|
1981
|
+
settlingTimers.current.set(i, settlingT);
|
|
1982
|
+
}, duration);
|
|
1983
|
+
copiedTimers.current.set(i, t);
|
|
1984
|
+
});
|
|
1985
|
+
}, []);
|
|
1986
|
+
const handleRowCopy = async (row, index) => {
|
|
1987
|
+
const ok = await copyToClipboard(row.copy ?? row.value);
|
|
1988
|
+
if (ok) markCopied([index]);
|
|
1989
|
+
};
|
|
1990
|
+
const handleCopyAll = async () => {
|
|
1991
|
+
const text = rows.map((r) => `${r.label}: ${r.value}`).join("\n");
|
|
1992
|
+
const ok = await copyToClipboard(text);
|
|
1993
|
+
if (ok) {
|
|
1994
|
+
markCopied(rows.map((_, i) => i));
|
|
1995
|
+
setAllCopied(true);
|
|
1996
|
+
setTimeout(() => setAllCopied(false), 2e3);
|
|
1997
|
+
}
|
|
1998
|
+
};
|
|
1999
|
+
return /* @__PURE__ */ jsxs19(Fragment2, { children: [
|
|
2000
|
+
/* @__PURE__ */ jsx25("div", { ref: forwardedRef, className: clsx("kds-copyable-table", className), ...rest, children: rows.map((row, i) => /* @__PURE__ */ jsxs19(
|
|
2001
|
+
"div",
|
|
2002
|
+
{
|
|
2003
|
+
className: clsx(
|
|
2004
|
+
"kds-copyable-table-row",
|
|
2005
|
+
copiedRows.has(i) && "copied",
|
|
2006
|
+
settlingRows.has(i) && "settling"
|
|
2007
|
+
),
|
|
2008
|
+
role: "button",
|
|
2009
|
+
tabIndex: 0,
|
|
2010
|
+
onClick: () => handleRowCopy(row, i),
|
|
2011
|
+
onKeyDown: (e) => {
|
|
2012
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
2013
|
+
e.preventDefault();
|
|
2014
|
+
handleRowCopy(row, i);
|
|
2015
|
+
}
|
|
2016
|
+
},
|
|
2017
|
+
"aria-label": `Copiar ${row.label}: ${row.value}`,
|
|
2018
|
+
children: [
|
|
2019
|
+
/* @__PURE__ */ jsx25("span", { className: "kds-key", children: row.label }),
|
|
2020
|
+
/* @__PURE__ */ jsx25("span", { className: "kds-value", children: row.value })
|
|
2021
|
+
]
|
|
2022
|
+
},
|
|
2023
|
+
`${row.label}-${i}`
|
|
2024
|
+
)) }),
|
|
2025
|
+
showCopyAll && /* @__PURE__ */ jsxs19(
|
|
2026
|
+
"button",
|
|
2027
|
+
{
|
|
2028
|
+
type: "button",
|
|
2029
|
+
className: clsx(
|
|
2030
|
+
"kds-btn",
|
|
2031
|
+
"kds-btn-outlined",
|
|
2032
|
+
"kds-btn-block",
|
|
2033
|
+
"kds-copy-all-btn",
|
|
2034
|
+
allCopied && "copied"
|
|
2035
|
+
),
|
|
2036
|
+
onClick: handleCopyAll,
|
|
2037
|
+
"aria-label": allCopied ? copiedAllLabel : copyAllLabel,
|
|
2038
|
+
children: [
|
|
2039
|
+
/* @__PURE__ */ jsx25("span", { className: "kds-icon", children: /* @__PURE__ */ jsx25("i", { className: "material-symbols-outlined", children: allCopied ? "check" : "content_copy" }) }),
|
|
2040
|
+
/* @__PURE__ */ jsx25("span", { children: allCopied ? copiedAllLabel : copyAllLabel })
|
|
2041
|
+
]
|
|
2042
|
+
}
|
|
2043
|
+
)
|
|
2044
|
+
] });
|
|
2045
|
+
}
|
|
2046
|
+
var KdsCopyableTable = forwardRef23(
|
|
2047
|
+
({
|
|
2048
|
+
rows = [],
|
|
2049
|
+
variant = "copyable",
|
|
2050
|
+
gridRows = [],
|
|
2051
|
+
disabled = false,
|
|
2052
|
+
copyAllLabel,
|
|
2053
|
+
copiedAllLabel,
|
|
2054
|
+
showCopyAll,
|
|
2055
|
+
className,
|
|
2056
|
+
...props
|
|
2057
|
+
}, ref) => {
|
|
2058
|
+
if (variant === "grid") {
|
|
2059
|
+
return /* @__PURE__ */ jsx25(
|
|
2060
|
+
GridVariant,
|
|
2061
|
+
{
|
|
2062
|
+
gridRows,
|
|
2063
|
+
disabled,
|
|
2064
|
+
className,
|
|
2065
|
+
forwardedRef: ref,
|
|
2066
|
+
rest: props
|
|
2067
|
+
}
|
|
2068
|
+
);
|
|
2069
|
+
}
|
|
2070
|
+
return /* @__PURE__ */ jsx25(
|
|
2071
|
+
CopyableVariant,
|
|
2072
|
+
{
|
|
2073
|
+
rows,
|
|
2074
|
+
copyAllLabel,
|
|
2075
|
+
copiedAllLabel,
|
|
2076
|
+
showCopyAll,
|
|
2077
|
+
className,
|
|
2078
|
+
forwardedRef: ref,
|
|
2079
|
+
rest: props
|
|
2080
|
+
}
|
|
2081
|
+
);
|
|
1731
2082
|
}
|
|
1732
2083
|
);
|
|
1733
2084
|
KdsCopyableTable.displayName = "KdsCopyableTable";
|
|
1734
2085
|
|
|
1735
2086
|
// src/components/core/KdsExpandPanel/KdsExpandPanel.tsx
|
|
1736
|
-
import { forwardRef as
|
|
1737
|
-
import { jsx as
|
|
1738
|
-
var KdsExpandPanel =
|
|
2087
|
+
import { forwardRef as forwardRef24, useState as useState5 } from "react";
|
|
2088
|
+
import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2089
|
+
var KdsExpandPanel = forwardRef24(
|
|
1739
2090
|
({ label, defaultExpanded = false, children, className, ...props }, ref) => {
|
|
1740
|
-
const [expanded, setExpanded] =
|
|
1741
|
-
return /* @__PURE__ */
|
|
1742
|
-
/* @__PURE__ */
|
|
2091
|
+
const [expanded, setExpanded] = useState5(defaultExpanded);
|
|
2092
|
+
return /* @__PURE__ */ jsxs20("div", { ref, className, ...props, children: [
|
|
2093
|
+
/* @__PURE__ */ jsxs20(
|
|
1743
2094
|
"button",
|
|
1744
2095
|
{
|
|
1745
2096
|
className: "kds-expand-toggle",
|
|
1746
2097
|
onClick: () => setExpanded((v) => !v),
|
|
1747
2098
|
"aria-expanded": expanded,
|
|
1748
2099
|
children: [
|
|
1749
|
-
/* @__PURE__ */
|
|
1750
|
-
/* @__PURE__ */
|
|
2100
|
+
/* @__PURE__ */ jsx26("span", { children: label }),
|
|
2101
|
+
/* @__PURE__ */ jsx26("i", { className: "material-symbols-outlined", children: expanded ? "expand_less" : "expand_more" })
|
|
1751
2102
|
]
|
|
1752
2103
|
}
|
|
1753
2104
|
),
|
|
1754
|
-
/* @__PURE__ */
|
|
2105
|
+
/* @__PURE__ */ jsx26("div", { className: clsx("kds-expand-panel", expanded && "open"), hidden: !expanded, children })
|
|
1755
2106
|
] });
|
|
1756
2107
|
}
|
|
1757
2108
|
);
|
|
1758
2109
|
KdsExpandPanel.displayName = "KdsExpandPanel";
|
|
1759
2110
|
|
|
1760
2111
|
// src/components/core/KdsCountdown/KdsCountdown.tsx
|
|
1761
|
-
import { forwardRef as
|
|
2112
|
+
import { forwardRef as forwardRef25, useEffect as useEffect3, useRef as useRef3 } from "react";
|
|
1762
2113
|
|
|
1763
2114
|
// src/components/core/hooks/useCountdown.ts
|
|
1764
|
-
import { useState as
|
|
2115
|
+
import { useState as useState6, useEffect as useEffect2 } from "react";
|
|
1765
2116
|
function calcRemaining(deadline) {
|
|
1766
2117
|
const diff = Math.max(0, new Date(deadline).getTime() - Date.now());
|
|
1767
2118
|
const totalSeconds = Math.floor(diff / 1e3);
|
|
@@ -1774,7 +2125,7 @@ function calcRemaining(deadline) {
|
|
|
1774
2125
|
};
|
|
1775
2126
|
}
|
|
1776
2127
|
function useCountdown(deadline) {
|
|
1777
|
-
const [state, setState] =
|
|
2128
|
+
const [state, setState] = useState6(() => calcRemaining(deadline));
|
|
1778
2129
|
useEffect2(() => {
|
|
1779
2130
|
const tick = () => setState(calcRemaining(deadline));
|
|
1780
2131
|
const id = setInterval(tick, 1e3);
|
|
@@ -1784,11 +2135,11 @@ function useCountdown(deadline) {
|
|
|
1784
2135
|
}
|
|
1785
2136
|
|
|
1786
2137
|
// src/components/core/KdsCountdown/KdsCountdown.tsx
|
|
1787
|
-
import { jsx as
|
|
1788
|
-
var KdsCountdown =
|
|
2138
|
+
import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2139
|
+
var KdsCountdown = forwardRef25(
|
|
1789
2140
|
({ deadline, label, onExpire, className, ...props }, ref) => {
|
|
1790
2141
|
const { hours, minutes, seconds, expired, urgent } = useCountdown(deadline);
|
|
1791
|
-
const onExpireRef =
|
|
2142
|
+
const onExpireRef = useRef3(onExpire);
|
|
1792
2143
|
onExpireRef.current = onExpire;
|
|
1793
2144
|
useEffect3(() => {
|
|
1794
2145
|
if (expired) {
|
|
@@ -1799,9 +2150,9 @@ var KdsCountdown = forwardRef24(
|
|
|
1799
2150
|
return null;
|
|
1800
2151
|
}
|
|
1801
2152
|
const pad = (n) => String(n).padStart(2, "0");
|
|
1802
|
-
return /* @__PURE__ */
|
|
1803
|
-
label && /* @__PURE__ */
|
|
1804
|
-
/* @__PURE__ */
|
|
2153
|
+
return /* @__PURE__ */ jsxs21("div", { ref, className: clsx("kds-countdown", urgent && "urgent", className), ...props, children: [
|
|
2154
|
+
label && /* @__PURE__ */ jsx27("span", { className: "kds-countdown-label", children: label }),
|
|
2155
|
+
/* @__PURE__ */ jsxs21("span", { className: "kds-countdown-value", children: [
|
|
1805
2156
|
pad(hours),
|
|
1806
2157
|
":",
|
|
1807
2158
|
pad(minutes),
|
|
@@ -1814,96 +2165,122 @@ var KdsCountdown = forwardRef24(
|
|
|
1814
2165
|
KdsCountdown.displayName = "KdsCountdown";
|
|
1815
2166
|
|
|
1816
2167
|
// src/components/core/KdsSegmentedTabs/KdsSegmentedTabs.tsx
|
|
1817
|
-
import { forwardRef as
|
|
1818
|
-
import { jsx as
|
|
1819
|
-
var KdsSegmentedTabs =
|
|
1820
|
-
(props, ref) => /* @__PURE__ */
|
|
2168
|
+
import { forwardRef as forwardRef26 } from "react";
|
|
2169
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
2170
|
+
var KdsSegmentedTabs = forwardRef26(
|
|
2171
|
+
(props, ref) => /* @__PURE__ */ jsx28(KdsTabs, { ref, ...props })
|
|
1821
2172
|
);
|
|
1822
2173
|
KdsSegmentedTabs.displayName = "KdsSegmentedTabs";
|
|
1823
2174
|
|
|
1824
|
-
// src/components/
|
|
1825
|
-
import { forwardRef as
|
|
1826
|
-
import { jsx as
|
|
1827
|
-
var
|
|
1828
|
-
({
|
|
2175
|
+
// src/components/core/KdsFab/KdsFab.tsx
|
|
2176
|
+
import { forwardRef as forwardRef27 } from "react";
|
|
2177
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
2178
|
+
var KdsFab = forwardRef27(
|
|
2179
|
+
({ icon, position = "top-right", hidden = false, className, ...props }, ref) => /* @__PURE__ */ jsx29(
|
|
1829
2180
|
"button",
|
|
1830
2181
|
{
|
|
1831
2182
|
ref,
|
|
1832
2183
|
type: "button",
|
|
1833
|
-
className: clsx(
|
|
2184
|
+
className: clsx(
|
|
2185
|
+
"kds-fab",
|
|
2186
|
+
position !== "none" && `kds-fab--${position}`,
|
|
2187
|
+
hidden && "kds-fab--hidden",
|
|
2188
|
+
className
|
|
2189
|
+
),
|
|
2190
|
+
"aria-hidden": hidden || void 0,
|
|
2191
|
+
tabIndex: hidden ? -1 : void 0,
|
|
1834
2192
|
...props,
|
|
1835
|
-
children:
|
|
1836
|
-
/* @__PURE__ */ jsx28("span", { className: "kds-bank-row-logo", children: logoUrl ? /* @__PURE__ */ jsx28("img", { src: logoUrl, alt: name }) : /* @__PURE__ */ jsx28("span", { className: "initials", children: name.charAt(0) }) }),
|
|
1837
|
-
/* @__PURE__ */ jsx28("span", { className: "kds-bank-row-name", children: name }),
|
|
1838
|
-
/* @__PURE__ */ jsx28("i", { className: "material-symbols-outlined", children: selected ? "check_circle" : "chevron_right" })
|
|
1839
|
-
]
|
|
2193
|
+
children: /* @__PURE__ */ jsx29("i", { className: "material-symbols-outlined", children: icon })
|
|
1840
2194
|
}
|
|
1841
2195
|
)
|
|
1842
2196
|
);
|
|
2197
|
+
KdsFab.displayName = "KdsFab";
|
|
2198
|
+
|
|
2199
|
+
// src/components/domain/KdsBankRow/KdsBankRow.tsx
|
|
2200
|
+
import { forwardRef as forwardRef28 } from "react";
|
|
2201
|
+
import { jsx as jsx30, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2202
|
+
var KdsBankRow = forwardRef28(
|
|
2203
|
+
({ name, logoUrl, selected, hideLogo, className, ...props }, ref) => {
|
|
2204
|
+
const nameStr = typeof name === "string" ? name : "";
|
|
2205
|
+
return /* @__PURE__ */ jsxs22(
|
|
2206
|
+
"button",
|
|
2207
|
+
{
|
|
2208
|
+
ref,
|
|
2209
|
+
type: "button",
|
|
2210
|
+
className: clsx("kds-bank-row", selected && "selected", className),
|
|
2211
|
+
...props,
|
|
2212
|
+
children: [
|
|
2213
|
+
!hideLogo && /* @__PURE__ */ jsx30("span", { className: "kds-bank-row-logo", children: logoUrl ? /* @__PURE__ */ jsx30("img", { src: logoUrl, alt: nameStr }) : /* @__PURE__ */ jsx30("span", { className: "initials", children: nameStr.charAt(0) }) }),
|
|
2214
|
+
/* @__PURE__ */ jsx30("span", { className: "kds-bank-row-name", children: name }),
|
|
2215
|
+
/* @__PURE__ */ jsx30("i", { className: "material-symbols-outlined", children: selected ? "check_circle" : "chevron_right" })
|
|
2216
|
+
]
|
|
2217
|
+
}
|
|
2218
|
+
);
|
|
2219
|
+
}
|
|
2220
|
+
);
|
|
1843
2221
|
KdsBankRow.displayName = "KdsBankRow";
|
|
1844
2222
|
|
|
1845
2223
|
// src/components/domain/KdsBankList/KdsBankList.tsx
|
|
1846
|
-
import { forwardRef as
|
|
1847
|
-
import { jsx as
|
|
1848
|
-
var KdsBankList =
|
|
1849
|
-
({ children, className, ...props }, ref) => /* @__PURE__ */
|
|
2224
|
+
import { forwardRef as forwardRef29 } from "react";
|
|
2225
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
2226
|
+
var KdsBankList = forwardRef29(
|
|
2227
|
+
({ children, className, ...props }, ref) => /* @__PURE__ */ jsx31("div", { ref, className: clsx("kds-bank-list", className), role: "list", ...props, children })
|
|
1850
2228
|
);
|
|
1851
2229
|
KdsBankList.displayName = "KdsBankList";
|
|
1852
2230
|
|
|
1853
2231
|
// src/components/domain/KdsBankModal/KdsBankModal.tsx
|
|
1854
|
-
import { forwardRef as
|
|
1855
|
-
import * as
|
|
1856
|
-
import { jsx as
|
|
1857
|
-
var KdsBankModal =
|
|
2232
|
+
import { forwardRef as forwardRef30, useState as useState7 } from "react";
|
|
2233
|
+
import * as Dialog from "@radix-ui/react-dialog";
|
|
2234
|
+
import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2235
|
+
var KdsBankModal = forwardRef30(
|
|
1858
2236
|
({ open, onClose, title = "Selecciona tu banco", searchPlaceholder = "Buscar banco...", onSearch, children, className, container }, ref) => {
|
|
1859
|
-
const [query, setQuery] =
|
|
2237
|
+
const [query, setQuery] = useState7("");
|
|
1860
2238
|
const handleSearch = (value) => {
|
|
1861
2239
|
setQuery(value);
|
|
1862
2240
|
onSearch?.(value);
|
|
1863
2241
|
};
|
|
1864
|
-
return /* @__PURE__ */
|
|
2242
|
+
return /* @__PURE__ */ jsx32(Dialog.Root, { open, onOpenChange: (o) => {
|
|
1865
2243
|
if (!o) onClose();
|
|
1866
|
-
}, children: /* @__PURE__ */
|
|
1867
|
-
/* @__PURE__ */
|
|
1868
|
-
/* @__PURE__ */
|
|
1869
|
-
/* @__PURE__ */
|
|
2244
|
+
}, children: /* @__PURE__ */ jsx32(Dialog.Portal, { container, children: /* @__PURE__ */ jsx32(Dialog.Overlay, { className: "kds-bank-modal-scrim open", children: /* @__PURE__ */ jsxs23(Dialog.Content, { ref, className: clsx("kds-bank-modal", className), children: [
|
|
2245
|
+
/* @__PURE__ */ jsxs23("div", { className: "kds-bank-modal-header", children: [
|
|
2246
|
+
/* @__PURE__ */ jsx32(Dialog.Title, { asChild: true, children: /* @__PURE__ */ jsx32("h3", { children: title }) }),
|
|
2247
|
+
/* @__PURE__ */ jsx32(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx32("button", { className: "kds-bank-modal-close", "aria-label": "Cerrar", children: /* @__PURE__ */ jsx32("i", { className: "material-symbols-outlined", children: "close" }) }) })
|
|
1870
2248
|
] }),
|
|
1871
|
-
/* @__PURE__ */
|
|
1872
|
-
|
|
2249
|
+
/* @__PURE__ */ jsx32("div", { className: "kds-bank-modal-search", children: /* @__PURE__ */ jsx32(
|
|
2250
|
+
KdsSearchField,
|
|
1873
2251
|
{
|
|
1874
|
-
type: "text",
|
|
1875
2252
|
placeholder: searchPlaceholder,
|
|
1876
2253
|
value: query,
|
|
1877
2254
|
onChange: (e) => handleSearch(e.target.value)
|
|
1878
2255
|
}
|
|
1879
2256
|
) }),
|
|
1880
|
-
/* @__PURE__ */
|
|
2257
|
+
/* @__PURE__ */ jsx32("div", { className: "kds-bank-modal-body", children })
|
|
1881
2258
|
] }) }) }) });
|
|
1882
2259
|
}
|
|
1883
2260
|
);
|
|
1884
2261
|
KdsBankModal.displayName = "KdsBankModal";
|
|
1885
2262
|
|
|
1886
2263
|
// src/components/domain/KdsQrRow/KdsQrRow.tsx
|
|
1887
|
-
import { forwardRef as
|
|
1888
|
-
import { jsx as
|
|
1889
|
-
var KdsQrRow =
|
|
1890
|
-
({ name, description, badge, icon = "qr_code_2", className, ...props }, ref) => /* @__PURE__ */
|
|
1891
|
-
/* @__PURE__ */
|
|
1892
|
-
/* @__PURE__ */
|
|
1893
|
-
/* @__PURE__ */
|
|
1894
|
-
description && /* @__PURE__ */
|
|
2264
|
+
import { forwardRef as forwardRef31 } from "react";
|
|
2265
|
+
import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2266
|
+
var KdsQrRow = forwardRef31(
|
|
2267
|
+
({ name, description, badge, icon = "qr_code_2", className, ...props }, ref) => /* @__PURE__ */ jsxs24("button", { ref, type: "button", className: clsx("kds-qr-row", className), ...props, children: [
|
|
2268
|
+
/* @__PURE__ */ jsx33("span", { className: "kds-qr-avatar", "aria-hidden": "true", children: /* @__PURE__ */ jsx33("i", { className: "material-symbols-outlined", children: icon }) }),
|
|
2269
|
+
/* @__PURE__ */ jsxs24("span", { className: "kds-qr-text", children: [
|
|
2270
|
+
/* @__PURE__ */ jsx33("span", { className: "kds-qr-title", children: name }),
|
|
2271
|
+
description && /* @__PURE__ */ jsx33("span", { className: "kds-qr-subtitle", children: description })
|
|
1895
2272
|
] }),
|
|
1896
|
-
badge && /* @__PURE__ */
|
|
1897
|
-
/* @__PURE__ */
|
|
2273
|
+
badge && /* @__PURE__ */ jsx33("span", { className: "kds-qr-badge", children: badge }),
|
|
2274
|
+
/* @__PURE__ */ jsx33("i", { className: "material-symbols-outlined", children: "chevron_right" })
|
|
1898
2275
|
] })
|
|
1899
2276
|
);
|
|
1900
2277
|
KdsQrRow.displayName = "KdsQrRow";
|
|
1901
2278
|
|
|
1902
2279
|
// src/components/domain/KdsCardSelector/KdsCardSelector.tsx
|
|
1903
|
-
import { forwardRef as
|
|
1904
|
-
import { jsx as
|
|
1905
|
-
var KdsCardSelector =
|
|
1906
|
-
({ icon, title, description, selected, className, ...props }, ref) => /* @__PURE__ */
|
|
2280
|
+
import { forwardRef as forwardRef32 } from "react";
|
|
2281
|
+
import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2282
|
+
var KdsCardSelector = forwardRef32(
|
|
2283
|
+
({ icon, title, description, selected, className, ...props }, ref) => /* @__PURE__ */ jsxs25(
|
|
1907
2284
|
"button",
|
|
1908
2285
|
{
|
|
1909
2286
|
ref,
|
|
@@ -1911,9 +2288,9 @@ var KdsCardSelector = forwardRef30(
|
|
|
1911
2288
|
className: clsx("kds-card-selector", selected && "selected", className),
|
|
1912
2289
|
...props,
|
|
1913
2290
|
children: [
|
|
1914
|
-
icon && /* @__PURE__ */
|
|
1915
|
-
/* @__PURE__ */
|
|
1916
|
-
description && /* @__PURE__ */
|
|
2291
|
+
icon && /* @__PURE__ */ jsx34("span", { className: "kds-card-selector-icon", children: /* @__PURE__ */ jsx34("i", { className: "material-symbols-outlined", children: icon }) }),
|
|
2292
|
+
/* @__PURE__ */ jsx34("span", { className: "kds-card-selector-title", children: title }),
|
|
2293
|
+
description && /* @__PURE__ */ jsx34("span", { className: "kds-card-selector-description", children: description })
|
|
1917
2294
|
]
|
|
1918
2295
|
}
|
|
1919
2296
|
)
|
|
@@ -1921,26 +2298,26 @@ var KdsCardSelector = forwardRef30(
|
|
|
1921
2298
|
KdsCardSelector.displayName = "KdsCardSelector";
|
|
1922
2299
|
|
|
1923
2300
|
// src/components/domain/KdsCardPlan/KdsCardPlan.tsx
|
|
1924
|
-
import { forwardRef as
|
|
1925
|
-
import { jsx as
|
|
1926
|
-
var KdsCardPlan =
|
|
1927
|
-
({ title, price, period, features, recommended, badgeText, action, className, ...props }, ref) => /* @__PURE__ */
|
|
2301
|
+
import { forwardRef as forwardRef33 } from "react";
|
|
2302
|
+
import { jsx as jsx35, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2303
|
+
var KdsCardPlan = forwardRef33(
|
|
2304
|
+
({ title, price, period, features, recommended, badgeText, action, className, ...props }, ref) => /* @__PURE__ */ jsxs26(
|
|
1928
2305
|
"div",
|
|
1929
2306
|
{
|
|
1930
2307
|
ref,
|
|
1931
2308
|
className: clsx("kds-card-plan", recommended && "recommended", className),
|
|
1932
2309
|
...props,
|
|
1933
2310
|
children: [
|
|
1934
|
-
|
|
1935
|
-
/* @__PURE__ */
|
|
1936
|
-
|
|
1937
|
-
/* @__PURE__ */
|
|
1938
|
-
period && /* @__PURE__ */ jsxs24("span", { children: [
|
|
2311
|
+
/* @__PURE__ */ jsx35("div", { className: "kds-card-plan-header", children: /* @__PURE__ */ jsx35("h3", { children: title }) }),
|
|
2312
|
+
/* @__PURE__ */ jsxs26("div", { className: "kds-card-plan-price", children: [
|
|
2313
|
+
/* @__PURE__ */ jsx35("span", { className: "kds-price", children: price }),
|
|
2314
|
+
period && /* @__PURE__ */ jsxs26("span", { className: "kds-price-period", children: [
|
|
1939
2315
|
"/",
|
|
1940
2316
|
period
|
|
1941
2317
|
] })
|
|
1942
2318
|
] }),
|
|
1943
|
-
|
|
2319
|
+
badgeText && /* @__PURE__ */ jsx35("span", { className: "kds-card-plan-badge", children: badgeText }),
|
|
2320
|
+
features && features.length > 0 && /* @__PURE__ */ jsx35("ul", { className: "kds-card-plan-features", children: features.map((f, i) => /* @__PURE__ */ jsx35("li", { children: f }, i)) }),
|
|
1944
2321
|
action
|
|
1945
2322
|
]
|
|
1946
2323
|
}
|
|
@@ -1949,50 +2326,564 @@ var KdsCardPlan = forwardRef31(
|
|
|
1949
2326
|
KdsCardPlan.displayName = "KdsCardPlan";
|
|
1950
2327
|
|
|
1951
2328
|
// src/components/domain/KdsInvoiceSticky/KdsInvoiceSticky.tsx
|
|
1952
|
-
import { forwardRef as
|
|
1953
|
-
import { jsx as
|
|
1954
|
-
var KdsInvoiceSticky =
|
|
1955
|
-
({ children, className, ...props }, ref) => /* @__PURE__ */
|
|
2329
|
+
import { forwardRef as forwardRef34 } from "react";
|
|
2330
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
2331
|
+
var KdsInvoiceSticky = forwardRef34(
|
|
2332
|
+
({ children, className, ...props }, ref) => /* @__PURE__ */ jsx36(
|
|
2333
|
+
"article",
|
|
2334
|
+
{
|
|
2335
|
+
ref,
|
|
2336
|
+
className: clsx("kds-card-elevated", "kds-invoice-sticky", className),
|
|
2337
|
+
...props,
|
|
2338
|
+
children
|
|
2339
|
+
}
|
|
2340
|
+
)
|
|
1956
2341
|
);
|
|
1957
2342
|
KdsInvoiceSticky.displayName = "KdsInvoiceSticky";
|
|
1958
2343
|
|
|
1959
2344
|
// src/components/domain/KdsBottomSheet/KdsBottomSheet.tsx
|
|
1960
|
-
import { forwardRef as
|
|
1961
|
-
import * as
|
|
1962
|
-
import { jsx as
|
|
1963
|
-
var KdsBottomSheet =
|
|
1964
|
-
({
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
actions
|
|
1971
|
-
|
|
2345
|
+
import { forwardRef as forwardRef35 } from "react";
|
|
2346
|
+
import * as Dialog2 from "@radix-ui/react-dialog";
|
|
2347
|
+
import { jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2348
|
+
var KdsBottomSheet = forwardRef35(
|
|
2349
|
+
({
|
|
2350
|
+
open,
|
|
2351
|
+
onClose,
|
|
2352
|
+
title,
|
|
2353
|
+
description,
|
|
2354
|
+
children,
|
|
2355
|
+
actions,
|
|
2356
|
+
showGrabber = true,
|
|
2357
|
+
showCloseButton = false,
|
|
2358
|
+
container,
|
|
2359
|
+
className,
|
|
2360
|
+
...props
|
|
2361
|
+
}, ref) => /* @__PURE__ */ jsx37(
|
|
2362
|
+
Dialog2.Root,
|
|
2363
|
+
{
|
|
2364
|
+
open,
|
|
2365
|
+
onOpenChange: (o) => {
|
|
2366
|
+
if (!o) onClose();
|
|
2367
|
+
},
|
|
2368
|
+
children: /* @__PURE__ */ jsx37(Dialog2.Portal, { container, children: /* @__PURE__ */ jsx37("div", { className: "kds-theme-root", style: { display: "contents" }, children: /* @__PURE__ */ jsx37(Dialog2.Overlay, { className: "kds-bottom-sheet-scrim open", children: /* @__PURE__ */ jsxs27(
|
|
2369
|
+
Dialog2.Content,
|
|
2370
|
+
{
|
|
2371
|
+
ref,
|
|
2372
|
+
className: clsx("kds-bottom-sheet", className),
|
|
2373
|
+
onPointerDownOutside: (e) => {
|
|
2374
|
+
const target = e.target;
|
|
2375
|
+
if (target.closest(".kds-bottom-sheet")) e.preventDefault();
|
|
2376
|
+
},
|
|
2377
|
+
...props,
|
|
2378
|
+
children: [
|
|
2379
|
+
showGrabber && /* @__PURE__ */ jsx37("div", { className: "kds-bottom-sheet-grabber", "aria-hidden": "true" }),
|
|
2380
|
+
showCloseButton && /* @__PURE__ */ jsx37(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx37(
|
|
2381
|
+
"button",
|
|
2382
|
+
{
|
|
2383
|
+
type: "button",
|
|
2384
|
+
className: "kds-bottom-sheet-close",
|
|
2385
|
+
"aria-label": "Cerrar",
|
|
2386
|
+
children: /* @__PURE__ */ jsx37("i", { className: "material-symbols-outlined", children: "close" })
|
|
2387
|
+
}
|
|
2388
|
+
) }),
|
|
2389
|
+
title && /* @__PURE__ */ jsx37(Dialog2.Title, { className: "kds-bottom-sheet-title", children: title }),
|
|
2390
|
+
description && /* @__PURE__ */ jsx37(Dialog2.Description, { className: "kds-bottom-sheet-description", children: description }),
|
|
2391
|
+
/* @__PURE__ */ jsx37("div", { className: "kds-bottom-sheet-body", children }),
|
|
2392
|
+
actions && /* @__PURE__ */ jsx37("div", { className: "kds-bottom-sheet-actions", children: actions })
|
|
2393
|
+
]
|
|
2394
|
+
}
|
|
2395
|
+
) }) }) })
|
|
2396
|
+
}
|
|
2397
|
+
)
|
|
1972
2398
|
);
|
|
1973
2399
|
KdsBottomSheet.displayName = "KdsBottomSheet";
|
|
1974
2400
|
|
|
1975
2401
|
// src/components/domain/KdsSecureFooter/KdsSecureFooter.tsx
|
|
1976
|
-
import { forwardRef as
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
2402
|
+
import { forwardRef as forwardRef37 } from "react";
|
|
2403
|
+
|
|
2404
|
+
// src/components/domain/KdsSecureFooter/KhipuWordmark.tsx
|
|
2405
|
+
import { forwardRef as forwardRef36 } from "react";
|
|
2406
|
+
import { jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
2407
|
+
var KhipuWordmark = forwardRef36(
|
|
2408
|
+
({ className = "khipu-mark", ...props }, ref) => /* @__PURE__ */ jsxs28(
|
|
2409
|
+
"svg",
|
|
2410
|
+
{
|
|
2411
|
+
ref,
|
|
2412
|
+
viewBox: "0 0 45 15",
|
|
2413
|
+
role: "img",
|
|
2414
|
+
"aria-label": "Khipu",
|
|
2415
|
+
className,
|
|
2416
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2417
|
+
...props,
|
|
2418
|
+
children: [
|
|
2419
|
+
/* @__PURE__ */ jsx38("path", { d: "M16.6417 11.8339C16.7273 11.9196 16.8272 11.9624 16.9472 11.9624H18.9628C19.0798 11.9624 19.1826 11.9196 19.2682 11.8339C19.3539 11.7483 19.3967 11.6483 19.3967 11.5284V7.12891C19.3967 6.50081 19.3111 5.95551 19.1398 5.49586C18.9685 5.03621 18.7315 4.65937 18.4289 4.3596C18.1234 4.05983 17.758 3.83999 17.3326 3.69439C16.9043 3.55164 16.4361 3.47741 15.9251 3.47741C15.4226 3.47741 14.9801 3.58019 14.5975 3.7886C14.2121 3.99702 13.9295 4.214 13.7496 4.43668V1.03071C13.7496 0.913654 13.7068 0.810874 13.6211 0.728079C13.5355 0.642434 13.4355 0.599609 13.3185 0.599609H11.2943C11.1773 0.599609 11.0745 0.642434 10.9888 0.728079C10.9032 0.813729 10.8604 0.913654 10.8604 1.03071V11.5284C10.8604 11.6455 10.9032 11.7483 10.9888 11.8339C11.0745 11.9196 11.1744 11.9624 11.2943 11.9624H13.3099C13.427 11.9624 13.5298 11.9196 13.6126 11.8339C13.6982 11.7483 13.741 11.6483 13.741 11.5284V7.48006C13.741 7.02041 13.8495 6.65216 14.0693 6.37521C14.2892 6.09826 14.6375 5.95836 15.1171 5.95836C15.5968 5.95836 15.9479 6.09826 16.1735 6.37521C16.3961 6.65216 16.5103 7.02041 16.5103 7.48006V11.5284C16.5132 11.6483 16.556 11.7483 16.6417 11.8339Z", fill: "#8347AD" }),
|
|
2420
|
+
/* @__PURE__ */ jsx38("path", { d: "M23.6189 3.64014H21.6005C21.4834 3.64014 21.3806 3.68296 21.295 3.76861C21.2093 3.85426 21.1665 3.95418 21.1665 4.07124V11.5284C21.1665 11.6454 21.2093 11.7482 21.295 11.8339C21.3806 11.9195 21.4806 11.9623 21.6005 11.9623H23.6161C23.7331 11.9623 23.8359 11.9195 23.9187 11.8339C24.0044 11.7482 24.0472 11.6483 24.0472 11.5284V4.07124C24.0472 3.95418 24.0044 3.85141 23.9187 3.76861C23.8359 3.68296 23.736 3.64014 23.6189 3.64014Z", fill: "#8347AD" }),
|
|
2421
|
+
/* @__PURE__ */ jsx38("path", { d: "M34.1881 10.0723C34.3851 9.61264 34.4936 9.07019 34.5164 8.43924C34.5278 8.27934 34.5335 8.06239 34.5335 7.79114C34.5335 7.51994 34.5278 7.30294 34.5164 7.14309C34.4936 6.51499 34.3851 5.96969 34.1881 5.51004C33.9911 5.05039 33.7313 4.67068 33.4115 4.36519C33.0918 4.05971 32.7178 3.83702 32.2924 3.69427C31.8642 3.55152 31.4131 3.47729 30.9334 3.47729C30.5823 3.47729 30.2854 3.50584 30.0455 3.5658C29.8057 3.62575 29.603 3.69998 29.4374 3.78848C29.2718 3.87984 29.1348 3.98263 29.0206 4.09968C28.9093 4.21674 28.8036 4.32808 28.7094 4.43657V4.06828C28.7094 3.95122 28.6666 3.84844 28.5809 3.7628C28.4953 3.67715 28.3954 3.63432 28.2783 3.63432H26.3426C26.2256 3.63432 26.1228 3.67715 26.0372 3.7628C25.9515 3.84844 25.9087 3.94837 25.9087 4.06828V14.566C25.9087 14.683 25.9515 14.7858 26.0372 14.8715C26.1228 14.9571 26.2227 14.9999 26.3426 14.9999H28.3583C28.4753 14.9999 28.5781 14.9571 28.6637 14.8715C28.7494 14.7858 28.7922 14.6859 28.7922 14.566V11.1629C28.8664 11.2599 28.9635 11.3627 29.0806 11.474C29.1976 11.5854 29.3432 11.691 29.5117 11.7852C29.683 11.8823 29.8857 11.9622 30.1198 12.0251C30.3539 12.0879 30.6251 12.1221 30.9363 12.1221C31.4159 12.1221 31.8699 12.0479 32.2953 11.8994C32.7206 11.751 33.0946 11.5226 33.4144 11.22C33.7313 10.9145 33.9911 10.5319 34.1881 10.0723ZM31.65 8.24794C31.6186 8.62194 31.4959 8.94739 31.2817 9.22434C31.0676 9.50129 30.7107 9.64119 30.2083 9.64119C29.9742 9.64119 29.7715 9.60404 29.6002 9.52984C29.4289 9.45559 29.289 9.35569 29.1748 9.23289C29.0634 9.11014 28.9749 8.97309 28.9121 8.82464C28.8493 8.67619 28.8065 8.52204 28.7836 8.35929C28.7608 8.19939 28.7522 8.01384 28.7522 7.79974C28.7522 7.58559 28.7637 7.40004 28.7836 7.24014C28.8036 7.08029 28.8465 6.92609 28.9121 6.77479C28.9749 6.62634 29.0634 6.48929 29.1748 6.36654C29.2861 6.24374 29.4289 6.14384 29.6002 6.06959C29.7715 5.99539 29.9742 5.95824 30.2083 5.95824C30.7107 5.95824 31.0676 6.09814 31.2817 6.37509C31.4959 6.65204 31.6186 6.97749 31.65 7.35149C31.6843 7.65124 31.6843 7.95104 31.65 8.24794Z", fill: "#8347AD" }),
|
|
2422
|
+
/* @__PURE__ */ jsx38("path", { d: "M41.7481 11.8339C41.8337 11.9195 41.9337 11.9623 42.0536 11.9623H43.9093C44.0264 11.9623 44.1291 11.9195 44.2119 11.8339C44.2976 11.7482 44.3404 11.6483 44.3404 11.5284V4.07124C44.3404 3.95418 44.2976 3.85141 44.2119 3.76861C44.1263 3.68296 44.0264 3.64014 43.9093 3.64014H41.8937C41.7766 3.64014 41.6739 3.68296 41.5882 3.76861C41.5026 3.85426 41.4597 3.95418 41.4597 4.07124V8.1196C41.4597 8.57925 41.3598 8.94755 41.1628 9.22445C40.9658 9.5014 40.6318 9.6413 40.1636 9.6413C39.6954 9.6413 39.3585 9.5014 39.1558 9.22445C38.9531 8.94755 38.8503 8.57925 38.8503 8.1196V4.07124C38.8503 3.95418 38.8075 3.85141 38.7218 3.76861C38.6362 3.68296 38.5363 3.64014 38.4163 3.64014H36.4007C36.2837 3.64014 36.1809 3.68296 36.0953 3.76861C36.0096 3.85426 35.9668 3.95418 35.9668 4.07124V8.47075C35.9668 9.7298 36.2723 10.6519 36.8861 11.24C37.4999 11.8282 38.325 12.1194 39.3585 12.1194C39.6897 12.1194 39.9752 12.0908 40.215 12.0309C40.4548 11.9709 40.6661 11.8967 40.8459 11.8082C41.0286 11.7168 41.18 11.6169 41.3027 11.5027C41.4255 11.3914 41.5283 11.2772 41.6139 11.1601V11.5284C41.6196 11.6483 41.6624 11.7482 41.7481 11.8339Z", fill: "#8347AD" }),
|
|
2423
|
+
/* @__PURE__ */ jsx38("path", { d: "M22.5569 2.78074C21.7889 2.78074 21.1665 2.1555 21.1665 1.39037C21.1665 0.622385 21.7918 0 22.5569 0C23.3249 0 23.9473 0.62524 23.9473 1.39037C23.9501 2.1555 23.3249 2.78074 22.5569 2.78074Z", fill: "#3CB4E5" }),
|
|
2424
|
+
/* @__PURE__ */ jsx38("path", { d: "M3.1374 7.43996V4.78198L2.34372 5.77836C2.22095 5.93256 2.21524 6.14951 2.32944 6.31226L3.1374 7.43996Z", fill: "#743CEB" }),
|
|
2425
|
+
/* @__PURE__ */ jsx38("path", { d: "M2.96345 0.722369C2.88351 0.642434 2.78074 0.599609 2.66368 0.599609H0.40826C0.299771 0.599609 0.205557 0.639579 0.122763 0.722369C0.0428246 0.802309 0 0.905089 0 1.02214V11.557C0 11.6655 0.0399696 11.7597 0.122763 11.8425C0.202703 11.9224 0.299771 11.9652 0.40826 11.9652H2.66368C2.78359 11.9652 2.88351 11.9253 2.96345 11.8425C3.04339 11.7625 3.08622 11.6655 3.08622 11.557V8.41081L2.83783 8.08246L2.83212 8.07676L2.82642 8.06821L1.81576 6.65216C1.55024 6.28101 1.56166 5.76996 1.84716 5.41306L2.84069 4.16261L3.08622 3.84285V1.01929C3.08622 0.902234 3.04625 0.802309 2.96345 0.722369Z", fill: "#8347AD" }),
|
|
2426
|
+
/* @__PURE__ */ jsx38("path", { d: "M9.60962 11.9625C9.70667 11.9625 9.78947 11.9282 9.85227 11.8568C9.91797 11.7855 9.94937 11.7084 9.94937 11.6227C9.94937 11.5371 9.92652 11.4714 9.88367 11.4286L5.89242 6.0384L9.59247 1.13642C9.63532 1.08217 9.65812 1.01651 9.65812 0.942284C9.65812 0.856634 9.62387 0.776694 9.55252 0.708174C9.50967 0.665349 9.45832 0.633944 9.40407 0.616814C9.37267 0.608249 9.33552 0.602539 9.30127 0.602539H6.73752C6.56337 0.602539 6.42632 0.636799 6.32352 0.708174C6.22077 0.779549 6.14082 0.850924 6.08942 0.928009L3.32868 4.54525L2.32944 5.80145C2.27234 5.8728 2.24094 5.95845 2.24094 6.04695C2.23808 6.13545 2.26378 6.2211 2.31802 6.2982L2.83477 7.0205L3.32868 7.70855L6.29787 11.6199C6.32927 11.6627 6.39492 11.7312 6.49197 11.8226C6.55192 11.8797 6.63472 11.9197 6.73752 11.9425C6.80032 11.9568 6.86882 11.9625 6.94592 11.9625H9.60962Z", fill: "#3CB4E5" })
|
|
2427
|
+
]
|
|
2428
|
+
}
|
|
2429
|
+
)
|
|
2430
|
+
);
|
|
2431
|
+
KhipuWordmark.displayName = "KhipuWordmark";
|
|
2432
|
+
|
|
2433
|
+
// src/components/domain/KdsSecureFooter/KdsSecureFooter.tsx
|
|
2434
|
+
import { Fragment as Fragment3, jsx as jsx39, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
2435
|
+
var KdsSecureFooter = forwardRef37(
|
|
2436
|
+
({ variant = "default", showLogo = true, psp, children, className, ...props }, ref) => /* @__PURE__ */ jsxs29("footer", { ref, className: clsx("kds-secure-footer", variant === "inside" && "inside", className), ...props, children: [
|
|
2437
|
+
/* @__PURE__ */ jsxs29("svg", { className: "kds-secure-footer-lock", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
2438
|
+
/* @__PURE__ */ jsx39("rect", { x: "4.5", y: "10.5", width: "15", height: "10", rx: "2.25" }),
|
|
2439
|
+
/* @__PURE__ */ jsx39("path", { d: "M8 10.5V7a4 4 0 0 1 8 0v3.5" })
|
|
2440
|
+
] }),
|
|
2441
|
+
children || /* @__PURE__ */ jsx39("span", { children: "Pago seguro procesado por" }),
|
|
2442
|
+
showLogo && /* @__PURE__ */ jsx39(KhipuWordmark, {}),
|
|
2443
|
+
psp && /* @__PURE__ */ jsxs29(Fragment3, { children: [
|
|
2444
|
+
/* @__PURE__ */ jsx39("span", { className: "kds-secure-footer-sep", "aria-hidden": "true" }),
|
|
2445
|
+
psp
|
|
2446
|
+
] })
|
|
1982
2447
|
] })
|
|
1983
2448
|
);
|
|
1984
2449
|
KdsSecureFooter.displayName = "KdsSecureFooter";
|
|
1985
2450
|
|
|
1986
2451
|
// src/components/domain/KdsRecapList/KdsRecapList.tsx
|
|
1987
|
-
import { forwardRef as
|
|
1988
|
-
import { jsx as
|
|
1989
|
-
var KdsRecapList =
|
|
1990
|
-
({ items, className, ...props }, ref) => /* @__PURE__ */
|
|
1991
|
-
/* @__PURE__ */
|
|
1992
|
-
/* @__PURE__ */
|
|
2452
|
+
import { forwardRef as forwardRef38 } from "react";
|
|
2453
|
+
import { jsx as jsx40, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
2454
|
+
var KdsRecapList = forwardRef38(
|
|
2455
|
+
({ items, className, ...props }, ref) => /* @__PURE__ */ jsx40("ul", { ref, className: clsx("kds-recap-list", className), ...props, children: items.map((item, i) => /* @__PURE__ */ jsxs30("li", { children: [
|
|
2456
|
+
/* @__PURE__ */ jsx40("span", { className: "kds-key", children: item.label }),
|
|
2457
|
+
/* @__PURE__ */ jsx40("span", { className: clsx("kds-value", !item.value && item.placeholder && "placeholder"), children: item.value || item.placeholder || "-" })
|
|
1993
2458
|
] }, i)) })
|
|
1994
2459
|
);
|
|
1995
2460
|
KdsRecapList.displayName = "KdsRecapList";
|
|
2461
|
+
|
|
2462
|
+
// src/components/domain/KdsMontoRow/KdsMontoRow.tsx
|
|
2463
|
+
import { forwardRef as forwardRef39 } from "react";
|
|
2464
|
+
import { jsx as jsx41, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
2465
|
+
var KdsMontoRow = forwardRef39(
|
|
2466
|
+
({ title, value, deadline, className, ...props }, ref) => /* @__PURE__ */ jsxs31("div", { ref, className: clsx("kds-monto-row", className), ...props, children: [
|
|
2467
|
+
/* @__PURE__ */ jsxs31("div", { children: [
|
|
2468
|
+
/* @__PURE__ */ jsx41("div", { className: "kds-monto-row-title", children: title }),
|
|
2469
|
+
deadline && /* @__PURE__ */ jsx41("div", { className: "kds-monto-row-deadline", children: deadline })
|
|
2470
|
+
] }),
|
|
2471
|
+
/* @__PURE__ */ jsx41("div", { className: "kds-monto-row-value", children: value })
|
|
2472
|
+
] })
|
|
2473
|
+
);
|
|
2474
|
+
KdsMontoRow.displayName = "KdsMontoRow";
|
|
2475
|
+
|
|
2476
|
+
// src/components/domain/KdsMerchantTile/KdsMerchantTile.tsx
|
|
2477
|
+
import { forwardRef as forwardRef40 } from "react";
|
|
2478
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
2479
|
+
var KdsMerchantTile = forwardRef40(
|
|
2480
|
+
({ name, logoUrl, initials, compact, className, ...props }, ref) => {
|
|
2481
|
+
const displayInitials = (initials ?? name.slice(0, 2)).toUpperCase();
|
|
2482
|
+
return /* @__PURE__ */ jsx42(
|
|
2483
|
+
"div",
|
|
2484
|
+
{
|
|
2485
|
+
ref,
|
|
2486
|
+
className: clsx("kds-merchant-tile", logoUrl && "logo", compact && "compact", className),
|
|
2487
|
+
"aria-label": name,
|
|
2488
|
+
...props,
|
|
2489
|
+
children: logoUrl ? /* @__PURE__ */ jsx42("img", { src: logoUrl, alt: name }) : displayInitials
|
|
2490
|
+
}
|
|
2491
|
+
);
|
|
2492
|
+
}
|
|
2493
|
+
);
|
|
2494
|
+
KdsMerchantTile.displayName = "KdsMerchantTile";
|
|
2495
|
+
|
|
2496
|
+
// src/components/domain/KdsInvoiceMerchant/KdsInvoiceMerchant.tsx
|
|
2497
|
+
import { forwardRef as forwardRef41, useState as useState9 } from "react";
|
|
2498
|
+
|
|
2499
|
+
// src/components/domain/KdsInvoiceMerchant/useLogoBackdrop.ts
|
|
2500
|
+
import { useEffect as useEffect4, useState as useState8 } from "react";
|
|
2501
|
+
|
|
2502
|
+
// src/components/domain/KdsInvoiceMerchant/logoLuminance.ts
|
|
2503
|
+
var LIGHT_LOGO_LUMINANCE_THRESHOLD = 0.72;
|
|
2504
|
+
var SAMPLE_SIZE = 16;
|
|
2505
|
+
var ALPHA_THRESHOLD = 128;
|
|
2506
|
+
var MIN_OPAQUE_RATIO = 0.02;
|
|
2507
|
+
function measureLogoLuminance(url) {
|
|
2508
|
+
return new Promise((resolve) => {
|
|
2509
|
+
const probe = new Image();
|
|
2510
|
+
probe.crossOrigin = "anonymous";
|
|
2511
|
+
probe.onload = () => {
|
|
2512
|
+
try {
|
|
2513
|
+
const canvas = document.createElement("canvas");
|
|
2514
|
+
canvas.width = SAMPLE_SIZE;
|
|
2515
|
+
canvas.height = SAMPLE_SIZE;
|
|
2516
|
+
const context = canvas.getContext("2d");
|
|
2517
|
+
if (!context) {
|
|
2518
|
+
resolve(null);
|
|
2519
|
+
return;
|
|
2520
|
+
}
|
|
2521
|
+
context.drawImage(probe, 0, 0, SAMPLE_SIZE, SAMPLE_SIZE);
|
|
2522
|
+
const { data } = context.getImageData(0, 0, SAMPLE_SIZE, SAMPLE_SIZE);
|
|
2523
|
+
let sum = 0;
|
|
2524
|
+
let opaquePixels = 0;
|
|
2525
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
2526
|
+
if (data[i + 3] < ALPHA_THRESHOLD) continue;
|
|
2527
|
+
sum += (0.2126 * data[i] + 0.7152 * data[i + 1] + 0.0722 * data[i + 2]) / 255;
|
|
2528
|
+
opaquePixels++;
|
|
2529
|
+
}
|
|
2530
|
+
if (opaquePixels < SAMPLE_SIZE * SAMPLE_SIZE * MIN_OPAQUE_RATIO) {
|
|
2531
|
+
resolve(null);
|
|
2532
|
+
return;
|
|
2533
|
+
}
|
|
2534
|
+
resolve(sum / opaquePixels);
|
|
2535
|
+
} catch {
|
|
2536
|
+
resolve(null);
|
|
2537
|
+
}
|
|
2538
|
+
};
|
|
2539
|
+
probe.onerror = () => resolve(null);
|
|
2540
|
+
probe.src = url;
|
|
2541
|
+
});
|
|
2542
|
+
}
|
|
2543
|
+
function pickLogoBackdrop(luminance) {
|
|
2544
|
+
return luminance != null && luminance > LIGHT_LOGO_LUMINANCE_THRESHOLD ? "dark" : "light";
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2547
|
+
// src/components/domain/KdsInvoiceMerchant/useLogoBackdrop.ts
|
|
2548
|
+
function useLogoBackdrop(logoUrl) {
|
|
2549
|
+
const [backdrop, setBackdrop] = useState8("light");
|
|
2550
|
+
useEffect4(() => {
|
|
2551
|
+
let cancelled = false;
|
|
2552
|
+
setBackdrop("light");
|
|
2553
|
+
if (!logoUrl) {
|
|
2554
|
+
return void 0;
|
|
2555
|
+
}
|
|
2556
|
+
measureLogoLuminance(logoUrl).then((luminance) => {
|
|
2557
|
+
if (!cancelled) {
|
|
2558
|
+
setBackdrop(pickLogoBackdrop(luminance));
|
|
2559
|
+
}
|
|
2560
|
+
});
|
|
2561
|
+
return () => {
|
|
2562
|
+
cancelled = true;
|
|
2563
|
+
};
|
|
2564
|
+
}, [logoUrl]);
|
|
2565
|
+
return backdrop;
|
|
2566
|
+
}
|
|
2567
|
+
|
|
2568
|
+
// src/components/domain/KdsInvoiceMerchant/KdsInvoiceMerchant.tsx
|
|
2569
|
+
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
2570
|
+
var KdsInvoiceMerchant = forwardRef41(
|
|
2571
|
+
({ logoUrl, brandColor, className, style, ...props }, ref) => {
|
|
2572
|
+
const [failed, setFailed] = useState9(false);
|
|
2573
|
+
const showLogo = !!logoUrl && !failed;
|
|
2574
|
+
const backdrop = useLogoBackdrop(showLogo ? logoUrl : void 0);
|
|
2575
|
+
return /* @__PURE__ */ jsx43(
|
|
2576
|
+
"div",
|
|
2577
|
+
{
|
|
2578
|
+
ref,
|
|
2579
|
+
className: clsx(
|
|
2580
|
+
"kds-invoice-merchant",
|
|
2581
|
+
showLogo && "kds-invoice-merchant-neutral",
|
|
2582
|
+
showLogo && backdrop === "dark" && "dark",
|
|
2583
|
+
className
|
|
2584
|
+
),
|
|
2585
|
+
"aria-hidden": "true",
|
|
2586
|
+
style: !showLogo && brandColor ? { background: brandColor, ...style } : style,
|
|
2587
|
+
...props,
|
|
2588
|
+
children: showLogo ? /* @__PURE__ */ jsx43("img", { src: logoUrl, alt: "", onError: () => setFailed(true) }) : /* @__PURE__ */ jsx43("i", { className: "material-symbols-outlined", children: "storefront" })
|
|
2589
|
+
}
|
|
2590
|
+
);
|
|
2591
|
+
}
|
|
2592
|
+
);
|
|
2593
|
+
KdsInvoiceMerchant.displayName = "KdsInvoiceMerchant";
|
|
2594
|
+
|
|
2595
|
+
// src/components/domain/KdsPaymentTotal/KdsPaymentTotal.tsx
|
|
2596
|
+
import { forwardRef as forwardRef42 } from "react";
|
|
2597
|
+
import { jsx as jsx44, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
2598
|
+
var KdsPaymentTotal = forwardRef42(
|
|
2599
|
+
({
|
|
2600
|
+
variant = "default",
|
|
2601
|
+
tone = "brand",
|
|
2602
|
+
centered = false,
|
|
2603
|
+
amount,
|
|
2604
|
+
currency = "S/",
|
|
2605
|
+
decimals = 2,
|
|
2606
|
+
locale = "es-PE",
|
|
2607
|
+
label = "Monto a pagar",
|
|
2608
|
+
title = "Escanea el QR",
|
|
2609
|
+
titleMobile = "Descarga el QR",
|
|
2610
|
+
className,
|
|
2611
|
+
...props
|
|
2612
|
+
}, ref) => {
|
|
2613
|
+
const { integer, fraction } = formatAmount(amount, decimals, locale);
|
|
2614
|
+
const isEmail = variant === "email";
|
|
2615
|
+
const isInfoTone = tone === "info";
|
|
2616
|
+
return /* @__PURE__ */ jsxs32(
|
|
2617
|
+
"div",
|
|
2618
|
+
{
|
|
2619
|
+
ref,
|
|
2620
|
+
className: clsx(
|
|
2621
|
+
"kds-payment-total",
|
|
2622
|
+
isEmail && "kds-payment-total--email",
|
|
2623
|
+
isInfoTone && "kds-payment-total--tone-info",
|
|
2624
|
+
centered && "kds-payment-total--centered",
|
|
2625
|
+
className
|
|
2626
|
+
),
|
|
2627
|
+
...props,
|
|
2628
|
+
children: [
|
|
2629
|
+
!isEmail && title != null && /* @__PURE__ */ jsx44("h5", { className: "kds-payment-total-title", children: title }),
|
|
2630
|
+
!isEmail && titleMobile != null && /* @__PURE__ */ jsx44("h5", { className: "kds-payment-total-title-mobile", children: titleMobile }),
|
|
2631
|
+
label != null && /* @__PURE__ */ jsx44("h6", { className: "kds-payment-label", children: label }),
|
|
2632
|
+
/* @__PURE__ */ jsxs32("h5", { className: "kds-payment-amount", children: [
|
|
2633
|
+
currency,
|
|
2634
|
+
" ",
|
|
2635
|
+
integer,
|
|
2636
|
+
fraction !== null && /* @__PURE__ */ jsx44("sup", { className: "kds-payment-total-decimal-sup", children: fraction })
|
|
2637
|
+
] })
|
|
2638
|
+
]
|
|
2639
|
+
}
|
|
2640
|
+
);
|
|
2641
|
+
}
|
|
2642
|
+
);
|
|
2643
|
+
KdsPaymentTotal.displayName = "KdsPaymentTotal";
|
|
2644
|
+
function formatAmount(amount, decimals, locale) {
|
|
2645
|
+
const showDecimals = typeof decimals === "number" && decimals > 0;
|
|
2646
|
+
if (typeof amount === "number") {
|
|
2647
|
+
if (showDecimals) {
|
|
2648
|
+
const fixed = amount.toFixed(decimals);
|
|
2649
|
+
const [int, frac] = fixed.split(".");
|
|
2650
|
+
const formattedInt2 = new Intl.NumberFormat(locale, { maximumFractionDigits: 0 }).format(
|
|
2651
|
+
Number(int)
|
|
2652
|
+
);
|
|
2653
|
+
return { integer: formattedInt2, fraction: frac ?? null };
|
|
2654
|
+
}
|
|
2655
|
+
const formattedInt = new Intl.NumberFormat(locale, { maximumFractionDigits: 0 }).format(
|
|
2656
|
+
Math.trunc(amount)
|
|
2657
|
+
);
|
|
2658
|
+
return { integer: formattedInt, fraction: null };
|
|
2659
|
+
}
|
|
2660
|
+
const str = amount.trim();
|
|
2661
|
+
const dotIdx = str.indexOf(".");
|
|
2662
|
+
if (dotIdx === -1 || !showDecimals) {
|
|
2663
|
+
return { integer: str, fraction: null };
|
|
2664
|
+
}
|
|
2665
|
+
return {
|
|
2666
|
+
integer: str.slice(0, dotIdx),
|
|
2667
|
+
fraction: str.slice(dotIdx + 1)
|
|
2668
|
+
};
|
|
2669
|
+
}
|
|
2670
|
+
|
|
2671
|
+
// src/components/domain/KdsBillAttachment/KdsBillAttachment.tsx
|
|
2672
|
+
import { forwardRef as forwardRef43 } from "react";
|
|
2673
|
+
import { jsx as jsx45, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
2674
|
+
var KdsBillAttachment = forwardRef43(
|
|
2675
|
+
({ filename, href, icon = "attach_file", className, ...props }, ref) => /* @__PURE__ */ jsxs33(
|
|
2676
|
+
"a",
|
|
2677
|
+
{
|
|
2678
|
+
ref,
|
|
2679
|
+
href,
|
|
2680
|
+
target: "_blank",
|
|
2681
|
+
rel: "noopener noreferrer",
|
|
2682
|
+
className: clsx("kds-bill-attachment", className),
|
|
2683
|
+
...props,
|
|
2684
|
+
children: [
|
|
2685
|
+
/* @__PURE__ */ jsx45("i", { className: "material-symbols-outlined", children: icon }),
|
|
2686
|
+
/* @__PURE__ */ jsx45("span", { children: filename })
|
|
2687
|
+
]
|
|
2688
|
+
}
|
|
2689
|
+
)
|
|
2690
|
+
);
|
|
2691
|
+
KdsBillAttachment.displayName = "KdsBillAttachment";
|
|
2692
|
+
var KdsBillAttachments = forwardRef43(
|
|
2693
|
+
({ children, className, ...props }, ref) => /* @__PURE__ */ jsx45("div", { ref, className: clsx("kds-bill-attachments", className), ...props, children })
|
|
2694
|
+
);
|
|
2695
|
+
KdsBillAttachments.displayName = "KdsBillAttachments";
|
|
2696
|
+
|
|
2697
|
+
// src/components/core/hooks/useStickyInvoiceCollapse.ts
|
|
2698
|
+
import { useEffect as useEffect5, useRef as useRef4 } from "react";
|
|
2699
|
+
function useStickyInvoiceCollapse(options = {}) {
|
|
2700
|
+
const { onCollapseStart, collapseEnd = 20, mobileBreakpoint = 768 } = options;
|
|
2701
|
+
const onCollapseStartRef = useRef4(onCollapseStart);
|
|
2702
|
+
onCollapseStartRef.current = onCollapseStart;
|
|
2703
|
+
useEffect5(() => {
|
|
2704
|
+
let viewportOffset = 0;
|
|
2705
|
+
let ticking = false;
|
|
2706
|
+
let wasCollapsing = false;
|
|
2707
|
+
const isMobile = () => window.innerWidth < mobileBreakpoint;
|
|
2708
|
+
const closeOpenPanels = (sticky) => {
|
|
2709
|
+
const toggles = sticky.querySelectorAll(
|
|
2710
|
+
'[data-expand-toggle][aria-expanded="true"], .kds-expand-toggle[aria-expanded="true"]'
|
|
2711
|
+
);
|
|
2712
|
+
toggles.forEach((toggle) => {
|
|
2713
|
+
toggle.setAttribute("aria-expanded", "false");
|
|
2714
|
+
const panelId = toggle.getAttribute("aria-controls");
|
|
2715
|
+
const panel = panelId ? document.getElementById(panelId) : toggle.parentElement?.querySelector("[data-expand-panel], .kds-expand-panel");
|
|
2716
|
+
panel?.classList.remove("open");
|
|
2717
|
+
if (panel) panel.style.maxHeight = "";
|
|
2718
|
+
});
|
|
2719
|
+
};
|
|
2720
|
+
const apply = () => {
|
|
2721
|
+
ticking = false;
|
|
2722
|
+
const screen = document.querySelector(".kds-screen.active");
|
|
2723
|
+
if (!screen) return;
|
|
2724
|
+
const sticky = screen.querySelector(".kds-invoice-sticky");
|
|
2725
|
+
if (!sticky || !isMobile()) {
|
|
2726
|
+
screen.style.removeProperty("--collapse-progress");
|
|
2727
|
+
screen.style.removeProperty("--collapse-collapsible-h");
|
|
2728
|
+
sticky?.classList.remove("is-collapsed");
|
|
2729
|
+
wasCollapsing = false;
|
|
2730
|
+
return;
|
|
2731
|
+
}
|
|
2732
|
+
const scrollY = Math.max(window.scrollY || window.pageYOffset || 0, viewportOffset);
|
|
2733
|
+
const progress = Math.min(Math.max(scrollY / collapseEnd, 0), 1);
|
|
2734
|
+
if (!screen.style.getPropertyValue("--collapse-collapsible-h")) {
|
|
2735
|
+
const collapsible = sticky.querySelector(".kds-invoice-collapsible");
|
|
2736
|
+
if (collapsible) {
|
|
2737
|
+
screen.style.setProperty("--collapse-collapsible-h", `${collapsible.offsetHeight}px`);
|
|
2738
|
+
}
|
|
2739
|
+
}
|
|
2740
|
+
screen.style.setProperty("--collapse-progress", String(progress));
|
|
2741
|
+
sticky.classList.toggle("is-collapsed", progress >= 1);
|
|
2742
|
+
if (progress > 0) {
|
|
2743
|
+
if (!wasCollapsing) {
|
|
2744
|
+
wasCollapsing = true;
|
|
2745
|
+
closeOpenPanels(sticky);
|
|
2746
|
+
onCollapseStartRef.current?.();
|
|
2747
|
+
}
|
|
2748
|
+
} else {
|
|
2749
|
+
wasCollapsing = false;
|
|
2750
|
+
}
|
|
2751
|
+
};
|
|
2752
|
+
const onScroll = () => {
|
|
2753
|
+
if (ticking) return;
|
|
2754
|
+
ticking = true;
|
|
2755
|
+
window.requestAnimationFrame(apply);
|
|
2756
|
+
};
|
|
2757
|
+
const onMessage = (event) => {
|
|
2758
|
+
if (event.data && event.data.type === "VIEWPORT_OFFSET") {
|
|
2759
|
+
viewportOffset = Math.max(0, event.data.offsetTop || 0);
|
|
2760
|
+
onScroll();
|
|
2761
|
+
}
|
|
2762
|
+
};
|
|
2763
|
+
window.addEventListener("scroll", onScroll, { passive: true });
|
|
2764
|
+
window.addEventListener("resize", onScroll);
|
|
2765
|
+
window.addEventListener("message", onMessage);
|
|
2766
|
+
apply();
|
|
2767
|
+
return () => {
|
|
2768
|
+
window.removeEventListener("scroll", onScroll);
|
|
2769
|
+
window.removeEventListener("resize", onScroll);
|
|
2770
|
+
window.removeEventListener("message", onMessage);
|
|
2771
|
+
};
|
|
2772
|
+
}, [collapseEnd, mobileBreakpoint]);
|
|
2773
|
+
}
|
|
2774
|
+
|
|
2775
|
+
// src/components/core/hooks/useExpandToggle.ts
|
|
2776
|
+
import { useCallback as useCallback4, useId, useLayoutEffect, useRef as useRef5, useState as useState10 } from "react";
|
|
2777
|
+
function useExpandToggle(options = {}) {
|
|
2778
|
+
const { defaultOpen = false, open: controlledOpen, onOpenChange, id } = options;
|
|
2779
|
+
const generatedId = useId();
|
|
2780
|
+
const panelId = id ?? `kds-expand-${generatedId}`;
|
|
2781
|
+
const isControlled = controlledOpen !== void 0;
|
|
2782
|
+
const [uncontrolledOpen, setUncontrolledOpen] = useState10(defaultOpen);
|
|
2783
|
+
const open = isControlled ? controlledOpen : uncontrolledOpen;
|
|
2784
|
+
const panelRef = useRef5(null);
|
|
2785
|
+
const setPanelRef = useCallback4((node) => {
|
|
2786
|
+
panelRef.current = node;
|
|
2787
|
+
}, []);
|
|
2788
|
+
useLayoutEffect(() => {
|
|
2789
|
+
const panel = panelRef.current;
|
|
2790
|
+
if (!panel) return;
|
|
2791
|
+
panel.style.maxHeight = open ? `${panel.scrollHeight}px` : "";
|
|
2792
|
+
}, [open]);
|
|
2793
|
+
const setOpen = useCallback4(
|
|
2794
|
+
(next) => {
|
|
2795
|
+
if (!isControlled) {
|
|
2796
|
+
setUncontrolledOpen(next);
|
|
2797
|
+
}
|
|
2798
|
+
onOpenChange?.(next);
|
|
2799
|
+
},
|
|
2800
|
+
[isControlled, onOpenChange]
|
|
2801
|
+
);
|
|
2802
|
+
const toggle = useCallback4(() => setOpen(!open), [open, setOpen]);
|
|
2803
|
+
const getToggleProps = useCallback4(
|
|
2804
|
+
() => ({
|
|
2805
|
+
type: "button",
|
|
2806
|
+
"aria-expanded": open,
|
|
2807
|
+
"aria-controls": panelId,
|
|
2808
|
+
onClick: () => toggle()
|
|
2809
|
+
}),
|
|
2810
|
+
[open, panelId, toggle]
|
|
2811
|
+
);
|
|
2812
|
+
const getPanelProps = useCallback4(
|
|
2813
|
+
(baseClassName = "kds-expand-panel") => ({
|
|
2814
|
+
id: panelId,
|
|
2815
|
+
className: open ? `${baseClassName} open` : baseClassName,
|
|
2816
|
+
hidden: !open,
|
|
2817
|
+
ref: setPanelRef
|
|
2818
|
+
}),
|
|
2819
|
+
[open, panelId, setPanelRef]
|
|
2820
|
+
);
|
|
2821
|
+
return { open, setOpen, toggle, getToggleProps, getPanelProps };
|
|
2822
|
+
}
|
|
2823
|
+
|
|
2824
|
+
// src/components/core/hooks/useHideOnScroll.ts
|
|
2825
|
+
import { useEffect as useEffect6, useState as useState11 } from "react";
|
|
2826
|
+
function useHideOnScroll(options = {}) {
|
|
2827
|
+
const { threshold = 8, topOffset = 0 } = options;
|
|
2828
|
+
const [hidden, setHidden] = useState11(false);
|
|
2829
|
+
useEffect6(() => {
|
|
2830
|
+
let viewportOffset = 0;
|
|
2831
|
+
let lastY = 0;
|
|
2832
|
+
let ticking = false;
|
|
2833
|
+
const currentY = () => Math.max(window.scrollY || window.pageYOffset || 0, viewportOffset);
|
|
2834
|
+
const apply = () => {
|
|
2835
|
+
ticking = false;
|
|
2836
|
+
const y = currentY();
|
|
2837
|
+
if (y <= topOffset) {
|
|
2838
|
+
setHidden(false);
|
|
2839
|
+
lastY = y;
|
|
2840
|
+
return;
|
|
2841
|
+
}
|
|
2842
|
+
const delta = y - lastY;
|
|
2843
|
+
if (Math.abs(delta) < threshold) return;
|
|
2844
|
+
setHidden(delta > 0);
|
|
2845
|
+
lastY = y;
|
|
2846
|
+
};
|
|
2847
|
+
const onScroll = () => {
|
|
2848
|
+
if (ticking) return;
|
|
2849
|
+
ticking = true;
|
|
2850
|
+
window.requestAnimationFrame(apply);
|
|
2851
|
+
};
|
|
2852
|
+
const onMessage = (event) => {
|
|
2853
|
+
if (event.data && event.data.type === "VIEWPORT_OFFSET") {
|
|
2854
|
+
viewportOffset = Math.max(0, event.data.offsetTop || 0);
|
|
2855
|
+
onScroll();
|
|
2856
|
+
}
|
|
2857
|
+
};
|
|
2858
|
+
lastY = currentY();
|
|
2859
|
+
window.addEventListener("scroll", onScroll, { passive: true });
|
|
2860
|
+
window.addEventListener("resize", onScroll);
|
|
2861
|
+
window.addEventListener("message", onMessage);
|
|
2862
|
+
return () => {
|
|
2863
|
+
window.removeEventListener("scroll", onScroll);
|
|
2864
|
+
window.removeEventListener("resize", onScroll);
|
|
2865
|
+
window.removeEventListener("message", onMessage);
|
|
2866
|
+
};
|
|
2867
|
+
}, [threshold, topOffset]);
|
|
2868
|
+
return { hidden };
|
|
2869
|
+
}
|
|
2870
|
+
|
|
2871
|
+
// src/components/core/hooks/useMediaQuery.ts
|
|
2872
|
+
import { useEffect as useEffect7, useState as useState12 } from "react";
|
|
2873
|
+
function useMediaQuery(query) {
|
|
2874
|
+
const [matches, setMatches] = useState12(
|
|
2875
|
+
() => typeof window !== "undefined" ? window.matchMedia(query).matches : false
|
|
2876
|
+
);
|
|
2877
|
+
useEffect7(() => {
|
|
2878
|
+
if (typeof window === "undefined") return;
|
|
2879
|
+
const mql = window.matchMedia(query);
|
|
2880
|
+
setMatches(mql.matches);
|
|
2881
|
+
const onChange = (event) => setMatches(event.matches);
|
|
2882
|
+
mql.addEventListener("change", onChange);
|
|
2883
|
+
return () => mql.removeEventListener("change", onChange);
|
|
2884
|
+
}, [query]);
|
|
2885
|
+
return matches;
|
|
2886
|
+
}
|
|
1996
2887
|
export {
|
|
1997
2888
|
KdsAccordion,
|
|
1998
2889
|
KdsAccordionDetails,
|
|
@@ -2001,6 +2892,8 @@ export {
|
|
|
2001
2892
|
KdsBankList,
|
|
2002
2893
|
KdsBankModal,
|
|
2003
2894
|
KdsBankRow,
|
|
2895
|
+
KdsBillAttachment,
|
|
2896
|
+
KdsBillAttachments,
|
|
2004
2897
|
KdsBottomSheet,
|
|
2005
2898
|
KdsButton,
|
|
2006
2899
|
KdsCard,
|
|
@@ -2011,24 +2904,26 @@ export {
|
|
|
2011
2904
|
KdsCardSelector,
|
|
2012
2905
|
KdsCheckbox,
|
|
2013
2906
|
KdsChip,
|
|
2907
|
+
KdsCopyButton,
|
|
2014
2908
|
KdsCopyRow,
|
|
2015
2909
|
KdsCopyableTable,
|
|
2016
2910
|
KdsCountdown,
|
|
2017
2911
|
KdsDivider,
|
|
2018
2912
|
KdsExpandPanel,
|
|
2913
|
+
KdsFab,
|
|
2914
|
+
KdsInvoiceMerchant,
|
|
2019
2915
|
KdsInvoiceSticky,
|
|
2020
2916
|
KdsLinearProgress,
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
KdsLogoHeaderLogo,
|
|
2025
|
-
KdsLogoHeaderSeparator,
|
|
2026
|
-
KdsModal,
|
|
2917
|
+
KdsMerchantTile,
|
|
2918
|
+
KdsMontoRow,
|
|
2919
|
+
KdsPaymentTotal,
|
|
2027
2920
|
KdsQrRow,
|
|
2028
2921
|
KdsRadioGroup,
|
|
2029
2922
|
KdsRecapList,
|
|
2923
|
+
KdsSearchField,
|
|
2030
2924
|
KdsSectionNote,
|
|
2031
2925
|
KdsSecureFooter,
|
|
2926
|
+
KdsSecureLoader,
|
|
2032
2927
|
KdsSegmentedTabs,
|
|
2033
2928
|
KdsSelect,
|
|
2034
2929
|
KdsSnackbar,
|
|
@@ -2042,6 +2937,7 @@ export {
|
|
|
2042
2937
|
KdsThemeProvider,
|
|
2043
2938
|
KdsTooltip,
|
|
2044
2939
|
KdsTypography,
|
|
2940
|
+
LIGHT_LOGO_LUMINANCE_THRESHOLD,
|
|
2045
2941
|
borderRadius,
|
|
2046
2942
|
breakpoints,
|
|
2047
2943
|
clsx,
|
|
@@ -2050,10 +2946,15 @@ export {
|
|
|
2050
2946
|
fontFamilies,
|
|
2051
2947
|
fontSizes,
|
|
2052
2948
|
fontWeights,
|
|
2949
|
+
formatDate,
|
|
2950
|
+
formatDateTime,
|
|
2951
|
+
formatTime,
|
|
2053
2952
|
getContrastColor,
|
|
2054
2953
|
letterSpacings,
|
|
2055
2954
|
lighten,
|
|
2056
2955
|
lineHeights,
|
|
2956
|
+
measureLogoLuminance,
|
|
2957
|
+
pickLogoBackdrop,
|
|
2057
2958
|
semanticSpacing,
|
|
2058
2959
|
shadows,
|
|
2059
2960
|
spacing,
|
|
@@ -2064,6 +2965,11 @@ export {
|
|
|
2064
2965
|
useAutoHide,
|
|
2065
2966
|
useCopyToClipboard,
|
|
2066
2967
|
useCountdown,
|
|
2968
|
+
useExpandToggle,
|
|
2969
|
+
useHideOnScroll,
|
|
2970
|
+
useLogoBackdrop,
|
|
2971
|
+
useMediaQuery,
|
|
2972
|
+
useStickyInvoiceCollapse,
|
|
2067
2973
|
useTabsKeyboard,
|
|
2068
2974
|
zIndex
|
|
2069
2975
|
};
|