@khipu/design-system 0.2.0-alpha.6 → 0.2.0-alpha.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -347,6 +347,8 @@ var semanticColors = {
347
347
  // From Figma: warning/light
348
348
  dark: "#E65100",
349
349
  // From Figma: warning/dark
350
+ warm: "#8A6D1A",
351
+ // Warm/olive variant for header icons (LigoPay handoff v2)
350
352
  container: "#FFFBEB",
351
353
  // Light amber background for chips/badges
352
354
  contrastText: "#FFFFFF"
@@ -365,6 +367,8 @@ var semanticColors = {
365
367
  main: "#0288D1",
366
368
  light: "#03A9F4",
367
369
  dark: "#01579B",
370
+ blue: "#5A5FE0",
371
+ // Khipu-blue / LigoPay informational blue (distinct from cyan main)
368
372
  container: "#EFF6FF",
369
373
  // Light blue background for chips/badges
370
374
  contrastText: "#FFFFFF"
@@ -407,8 +411,10 @@ var fontSizes = {
407
411
  // 24px
408
412
  "3xl": "1.875rem",
409
413
  // 30px
410
- "4xl": "2.25rem"
414
+ "4xl": "2.25rem",
411
415
  // 36px
416
+ decimalSup: "0.5em"
417
+ // Relative size for decimal superscript in amount displays
412
418
  };
413
419
  var lineHeights = {
414
420
  tight: 1.2,
@@ -1040,7 +1046,7 @@ var KdsButton = forwardRef(
1040
1046
  children: [
1041
1047
  !loading && startIcon && /* @__PURE__ */ jsx2("span", { className: "kds-icon", children: /* @__PURE__ */ jsx2("i", { className: "material-symbols-outlined", children: startIcon }) }),
1042
1048
  loading ? /* @__PURE__ */ jsxs(Fragment, { children: [
1043
- /* @__PURE__ */ jsx2("span", { className: "loader small" }),
1049
+ /* @__PURE__ */ jsx2("progress", { className: "circle indeterminate small" }),
1044
1050
  /* @__PURE__ */ jsx2("span", { children })
1045
1051
  ] }) : /* @__PURE__ */ jsx2("span", { children }),
1046
1052
  !loading && endIcon && /* @__PURE__ */ jsx2("span", { className: "kds-icon", children: /* @__PURE__ */ jsx2("i", { className: "material-symbols-outlined", children: endIcon }) })
@@ -1051,7 +1057,7 @@ var KdsButton = forwardRef(
1051
1057
  KdsButton.displayName = "KdsButton";
1052
1058
 
1053
1059
  // src/components/core/KdsTextField/KdsTextField.tsx
1054
- import { forwardRef as forwardRef2 } from "react";
1060
+ import { forwardRef as forwardRef2, useState } from "react";
1055
1061
  import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1056
1062
  var KdsTextField = forwardRef2(
1057
1063
  ({
@@ -1059,14 +1065,31 @@ var KdsTextField = forwardRef2(
1059
1065
  helperText,
1060
1066
  error,
1061
1067
  fullWidth = true,
1068
+ narrow = false,
1062
1069
  readOnly,
1063
1070
  startIcon,
1064
1071
  endIcon,
1072
+ required,
1065
1073
  className,
1066
1074
  id,
1075
+ type,
1076
+ revealable,
1077
+ revealLabel = "Mostrar u ocultar contrase\xF1a",
1078
+ requiredMark = true,
1067
1079
  ...props
1068
1080
  }, ref) => {
1081
+ const [revealed, setRevealed] = useState(false);
1069
1082
  const fieldId = id || `kds-field-${label.toLowerCase().replace(/\s+/g, "-")}`;
1083
+ const isRevealable = !!revealable && !readOnly && !props.disabled;
1084
+ const inputType = isRevealable ? revealed ? "text" : "password" : type;
1085
+ const hasSuffix = !!endIcon || readOnly || isRevealable;
1086
+ const toggleReveal = () => setRevealed((v) => !v);
1087
+ const onToggleKeyDown = (e) => {
1088
+ if (e.key === "Enter" || e.key === " ") {
1089
+ e.preventDefault();
1090
+ toggleReveal();
1091
+ }
1092
+ };
1070
1093
  return /* @__PURE__ */ jsxs2(
1071
1094
  "div",
1072
1095
  {
@@ -1074,9 +1097,12 @@ var KdsTextField = forwardRef2(
1074
1097
  "field",
1075
1098
  "label",
1076
1099
  "border",
1100
+ startIcon && "prefix",
1101
+ hasSuffix && "suffix",
1077
1102
  error && "invalid",
1078
1103
  readOnly && "locked",
1079
- fullWidth && "kds-w-full",
1104
+ fullWidth && !narrow && "kds-w-full",
1105
+ narrow && "kds-field--narrow",
1080
1106
  className
1081
1107
  ),
1082
1108
  children: [
@@ -1086,14 +1112,32 @@ var KdsTextField = forwardRef2(
1086
1112
  {
1087
1113
  ref,
1088
1114
  id: fieldId,
1089
- placeholder: " ",
1115
+ type: inputType,
1090
1116
  readOnly,
1091
- ...props
1117
+ required,
1118
+ ...props,
1119
+ placeholder: " "
1092
1120
  }
1093
1121
  ),
1094
- /* @__PURE__ */ jsx3("label", { htmlFor: fieldId, children: label }),
1122
+ /* @__PURE__ */ jsxs2("label", { htmlFor: fieldId, children: [
1123
+ label,
1124
+ required && requiredMark && " *"
1125
+ ] }),
1095
1126
  readOnly && /* @__PURE__ */ jsx3("i", { className: "material-symbols-outlined", children: "lock" }),
1096
- endIcon && !readOnly && /* @__PURE__ */ jsx3("i", { className: "material-symbols-outlined", children: endIcon }),
1127
+ isRevealable && /* @__PURE__ */ jsx3(
1128
+ "a",
1129
+ {
1130
+ className: "kds-field-reveal",
1131
+ role: "button",
1132
+ tabIndex: 0,
1133
+ "aria-label": revealLabel,
1134
+ "aria-pressed": revealed,
1135
+ onClick: toggleReveal,
1136
+ onKeyDown: onToggleKeyDown,
1137
+ children: /* @__PURE__ */ jsx3("i", { className: "material-symbols-outlined", "aria-hidden": "true", children: revealed ? "visibility" : "visibility_off" })
1138
+ }
1139
+ ),
1140
+ endIcon && !readOnly && !isRevealable && /* @__PURE__ */ jsx3("i", { className: "material-symbols-outlined", children: endIcon }),
1097
1141
  helperText && /* @__PURE__ */ jsx3("span", { className: "helper", children: helperText })
1098
1142
  ]
1099
1143
  }
@@ -1102,76 +1146,41 @@ var KdsTextField = forwardRef2(
1102
1146
  );
1103
1147
  KdsTextField.displayName = "KdsTextField";
1104
1148
 
1105
- // src/components/core/KdsCheckbox/KdsCheckbox.tsx
1149
+ // src/components/core/KdsSearchField/KdsSearchField.tsx
1106
1150
  import { forwardRef as forwardRef3 } from "react";
1107
1151
  import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1108
- var KdsCheckbox = forwardRef3(
1109
- ({ label, className, id, ...props }, ref) => {
1110
- const fieldId = id || `kds-cb-${label?.toLowerCase().replace(/\s+/g, "-") || "check"}`;
1111
- return /* @__PURE__ */ jsxs3("label", { className: clsx("field", className), htmlFor: fieldId, children: [
1112
- /* @__PURE__ */ jsx4("input", { ref, type: "checkbox", id: fieldId, ...props }),
1113
- /* @__PURE__ */ jsx4("span", { children: label })
1152
+ var KdsSearchField = forwardRef3(
1153
+ ({ className, withIcon = false, ...props }, ref) => {
1154
+ const input = /* @__PURE__ */ jsx4(
1155
+ "input",
1156
+ {
1157
+ ref,
1158
+ type: "search",
1159
+ className: clsx("kds-search-field", className),
1160
+ ...props
1161
+ }
1162
+ );
1163
+ if (!withIcon) {
1164
+ return input;
1165
+ }
1166
+ return /* @__PURE__ */ jsxs3("div", { className: "kds-search-field-wrapper", children: [
1167
+ /* @__PURE__ */ jsx4("i", { className: "material-symbols-outlined kds-search-field-icon", "aria-hidden": "true", children: "search" }),
1168
+ input
1114
1169
  ] });
1115
1170
  }
1116
1171
  );
1117
- KdsCheckbox.displayName = "KdsCheckbox";
1172
+ KdsSearchField.displayName = "KdsSearchField";
1118
1173
 
1119
- // src/components/core/KdsModal/KdsModal.tsx
1174
+ // src/components/core/KdsCheckbox/KdsCheckbox.tsx
1120
1175
  import { forwardRef as forwardRef4 } from "react";
1121
- import * as Dialog from "@radix-ui/react-dialog";
1122
1176
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1123
- var KdsModal = forwardRef4(
1124
- ({
1125
- open,
1126
- onClose,
1127
- title,
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
- )
1177
+ var KdsCheckbox = forwardRef4(
1178
+ ({ label, className, ...props }, ref) => /* @__PURE__ */ jsxs4("label", { className: clsx("checkbox", className), children: [
1179
+ /* @__PURE__ */ jsx5("input", { ref, type: "checkbox", ...props }),
1180
+ /* @__PURE__ */ jsx5("span", { children: label })
1181
+ ] })
1173
1182
  );
1174
- KdsModal.displayName = "KdsModal";
1183
+ KdsCheckbox.displayName = "KdsCheckbox";
1175
1184
 
1176
1185
  // src/components/core/KdsCard/KdsCard.tsx
1177
1186
  import { forwardRef as forwardRef5 } from "react";
@@ -1208,50 +1217,161 @@ KdsCardFooter.displayName = "KdsCardFooter";
1208
1217
  // src/components/core/KdsSpinner/KdsSpinner.tsx
1209
1218
  import { forwardRef as forwardRef6 } from "react";
1210
1219
  import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
1220
+ var SIZE_CLASS = {
1221
+ small: "small",
1222
+ medium: null,
1223
+ large: "large"
1224
+ };
1211
1225
  var KdsSpinner = forwardRef6(
1212
- ({ size = "medium", label, className, ...props }, ref) => /* @__PURE__ */ jsxs5("div", { ref, className: clsx("kds-flex kds-flex-col kds-items-center kds-gap-2", className), role: "status", ...props, children: [
1213
- /* @__PURE__ */ jsx7("span", { className: clsx("loader", size) }),
1214
- label && /* @__PURE__ */ jsx7("span", { className: "kds-text-body-small kds-text-muted", children: label }),
1215
- !label && /* @__PURE__ */ jsx7("span", { className: "kds-hidden", children: "Cargando" })
1216
- ] })
1226
+ ({ size = "medium", label, className, ...props }, ref) => {
1227
+ const sizeClass = SIZE_CLASS[size];
1228
+ return /* @__PURE__ */ jsxs5(
1229
+ "div",
1230
+ {
1231
+ ref,
1232
+ className: clsx("kds-flex kds-flex-col kds-items-center kds-gap-2", className),
1233
+ role: "status",
1234
+ ...props,
1235
+ children: [
1236
+ /* @__PURE__ */ jsx7("progress", { className: clsx("circle indeterminate", sizeClass) }),
1237
+ label && /* @__PURE__ */ jsx7("span", { className: "kds-text-body-small kds-text-muted", children: label }),
1238
+ !label && /* @__PURE__ */ jsx7("span", { className: "kds-hidden", children: "Cargando" })
1239
+ ]
1240
+ }
1241
+ );
1242
+ }
1217
1243
  );
1218
1244
  KdsSpinner.displayName = "KdsSpinner";
1219
1245
 
1220
- // src/components/core/KdsLinearProgress/KdsLinearProgress.tsx
1246
+ // src/components/core/KdsSecureLoader/KdsSecureLoader.tsx
1221
1247
  import { forwardRef as forwardRef7 } from "react";
1222
- import { jsx as jsx8 } from "react/jsx-runtime";
1223
- var KdsLinearProgress = forwardRef7(
1224
- ({ value, max = 100, className, ...props }, ref) => /* @__PURE__ */ jsx8("progress", { ref, className: clsx("kds-progress", className), value, max, ...props })
1248
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1249
+ var KdsSecureLoader = forwardRef7(
1250
+ ({ title, message, className, ...props }, ref) => /* @__PURE__ */ jsxs6("div", { ref, className: clsx("kds-secure-loader", className), role: "status", "aria-busy": "true", ...props, children: [
1251
+ (title || message) && /* @__PURE__ */ jsxs6("div", { className: "kds-secure-loader-text", children: [
1252
+ title && /* @__PURE__ */ jsx8("p", { className: "kds-secure-loader-title", children: title }),
1253
+ message && /* @__PURE__ */ jsx8("p", { className: "kds-secure-loader-message", children: message })
1254
+ ] }),
1255
+ /* @__PURE__ */ jsxs6("div", { className: "kds-secure-loader-spinner", children: [
1256
+ /* @__PURE__ */ jsx8(
1257
+ "svg",
1258
+ {
1259
+ className: "kds-secure-loader-ring",
1260
+ viewBox: "22 22 44 44",
1261
+ width: "100",
1262
+ height: "100",
1263
+ fill: "none",
1264
+ "aria-hidden": "true",
1265
+ children: /* @__PURE__ */ jsx8("circle", { cx: "44", cy: "44", r: "20.2", fill: "none" })
1266
+ }
1267
+ ),
1268
+ /* @__PURE__ */ jsx8("i", { className: "material-symbols-outlined kds-secure-loader-lock", "aria-hidden": "true", children: "lock" })
1269
+ ] })
1270
+ ] })
1271
+ );
1272
+ KdsSecureLoader.displayName = "KdsSecureLoader";
1273
+
1274
+ // src/components/core/KdsCopyButton/KdsCopyButton.tsx
1275
+ import { forwardRef as forwardRef8 } from "react";
1276
+
1277
+ // src/components/core/hooks/useCopyToClipboard.ts
1278
+ import { useState as useState2, useCallback } from "react";
1279
+ function useCopyToClipboard(resetMs = 1200) {
1280
+ const [copied, setCopied] = useState2(false);
1281
+ const copy = useCallback(
1282
+ async (text) => {
1283
+ try {
1284
+ await navigator.clipboard.writeText(text);
1285
+ setCopied(true);
1286
+ setTimeout(() => setCopied(false), resetMs);
1287
+ } catch {
1288
+ }
1289
+ },
1290
+ [resetMs]
1291
+ );
1292
+ return { copied, copy };
1293
+ }
1294
+
1295
+ // src/components/core/KdsCopyButton/KdsCopyButton.tsx
1296
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1297
+ var KdsCopyButton = forwardRef8(
1298
+ ({ value, copiedText = "Copiado", className, ...props }, ref) => {
1299
+ const { copied, copy } = useCopyToClipboard();
1300
+ return /* @__PURE__ */ jsxs7(
1301
+ "button",
1302
+ {
1303
+ ref,
1304
+ type: "button",
1305
+ className: clsx("kds-copy-button", copied && "copied", className),
1306
+ onClick: () => copy(value),
1307
+ "aria-label": `Copiar: ${value}`,
1308
+ ...props,
1309
+ children: [
1310
+ /* @__PURE__ */ jsxs7("span", { className: "kds-copy-button-label", children: [
1311
+ /* @__PURE__ */ jsx9("span", { className: "kds-copy-button-value", "aria-hidden": copied || void 0, children: value }),
1312
+ /* @__PURE__ */ jsx9("span", { className: "kds-copy-button-copied", "aria-hidden": !copied || void 0, children: copiedText })
1313
+ ] }),
1314
+ /* @__PURE__ */ jsx9("i", { className: "material-symbols-outlined", "aria-hidden": "true", children: copied ? "check" : "content_copy" })
1315
+ ]
1316
+ }
1317
+ );
1318
+ }
1319
+ );
1320
+ KdsCopyButton.displayName = "KdsCopyButton";
1321
+
1322
+ // src/components/core/KdsLinearProgress/KdsLinearProgress.tsx
1323
+ import { forwardRef as forwardRef9 } from "react";
1324
+ import { jsx as jsx10 } from "react/jsx-runtime";
1325
+ var KdsLinearProgress = forwardRef9(
1326
+ ({ value, max = 100, className, ...props }, ref) => /* @__PURE__ */ jsx10("progress", { ref, className: clsx("kds-progress", className), value, max, ...props })
1225
1327
  );
1226
1328
  KdsLinearProgress.displayName = "KdsLinearProgress";
1227
1329
 
1228
1330
  // src/components/core/KdsAlert/KdsAlert.tsx
1229
- import { forwardRef as forwardRef8 } from "react";
1230
- import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
1231
- var KdsAlert = forwardRef8(
1232
- ({ severity, title, icon, inline, onClose, children, className, ...props }, ref) => /* @__PURE__ */ jsxs6(
1233
- "div",
1234
- {
1235
- ref,
1236
- role: "alert",
1237
- className: clsx("kds-alert", `kds-${severity}`, inline && "kds-alert-inline", className),
1238
- ...props,
1239
- children: [
1240
- icon && /* @__PURE__ */ jsx9("div", { className: "kds-alert-icon", children: /* @__PURE__ */ jsx9("i", { className: "material-symbols-outlined", children: icon }) }),
1241
- /* @__PURE__ */ jsxs6("div", { className: "kds-alert-content", children: [
1242
- title && /* @__PURE__ */ jsx9("p", { className: "kds-alert-title", children: title }),
1243
- /* @__PURE__ */ jsx9("p", { className: "kds-alert-description", children })
1244
- ] }),
1245
- onClose && /* @__PURE__ */ jsx9("button", { className: "kds-btn kds-btn-text kds-btn-sm", onClick: onClose, "aria-label": "Cerrar", children: /* @__PURE__ */ jsx9("i", { className: "material-symbols-outlined", children: "close" }) })
1246
- ]
1247
- }
1248
- )
1331
+ import { forwardRef as forwardRef10 } from "react";
1332
+ import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
1333
+ var DEFAULT_ICONS = {
1334
+ success: "check_circle",
1335
+ info: "info",
1336
+ warning: "warning",
1337
+ error: "error"
1338
+ };
1339
+ var KdsAlert = forwardRef10(
1340
+ ({ severity, title, icon, inline, onClose, children, className, ...props }, ref) => {
1341
+ const resolvedIcon = icon === false ? null : typeof icon === "string" ? icon : DEFAULT_ICONS[severity];
1342
+ return /* @__PURE__ */ jsxs8(
1343
+ "div",
1344
+ {
1345
+ ref,
1346
+ role: "alert",
1347
+ className: clsx("kds-alert", `kds-${severity}`, inline && "kds-alert-inline", className),
1348
+ ...props,
1349
+ children: [
1350
+ resolvedIcon && /* @__PURE__ */ jsx11("div", { className: "kds-alert-icon", children: /* @__PURE__ */ jsx11("i", { className: "material-symbols-outlined", children: resolvedIcon }) }),
1351
+ /* @__PURE__ */ jsxs8("div", { className: "kds-alert-content", children: [
1352
+ title && /* @__PURE__ */ jsx11("p", { className: "kds-alert-title", children: title }),
1353
+ /* @__PURE__ */ jsx11("p", { className: "kds-alert-description", children })
1354
+ ] }),
1355
+ onClose && /* @__PURE__ */ jsx11(
1356
+ "button",
1357
+ {
1358
+ type: "button",
1359
+ className: "kds-alert-close",
1360
+ onClick: onClose,
1361
+ "aria-label": "Cerrar",
1362
+ children: /* @__PURE__ */ jsx11("i", { className: "material-symbols-outlined", children: "close" })
1363
+ }
1364
+ )
1365
+ ]
1366
+ }
1367
+ );
1368
+ }
1249
1369
  );
1250
1370
  KdsAlert.displayName = "KdsAlert";
1251
1371
 
1252
1372
  // src/components/core/KdsTypography/KdsTypography.tsx
1253
- import { forwardRef as forwardRef9 } from "react";
1254
- import { jsx as jsx10 } from "react/jsx-runtime";
1373
+ import { forwardRef as forwardRef11 } from "react";
1374
+ import { jsx as jsx12 } from "react/jsx-runtime";
1255
1375
  var variantTag = {
1256
1376
  display1: "h1",
1257
1377
  display2: "h2",
@@ -1264,12 +1384,13 @@ var variantTag = {
1264
1384
  label: "span",
1265
1385
  "label-small": "span",
1266
1386
  muted: "p",
1267
- link: "span"
1387
+ link: "span",
1388
+ strong: "span"
1268
1389
  };
1269
- var KdsTypography = forwardRef9(
1390
+ var KdsTypography = forwardRef11(
1270
1391
  ({ variant = "body", color, as, children, className, ...props }, ref) => {
1271
1392
  const Tag = as || variantTag[variant];
1272
- return /* @__PURE__ */ jsx10(
1393
+ return /* @__PURE__ */ jsx12(
1273
1394
  Tag,
1274
1395
  {
1275
1396
  ref,
@@ -1287,12 +1408,12 @@ var KdsTypography = forwardRef9(
1287
1408
  KdsTypography.displayName = "KdsTypography";
1288
1409
 
1289
1410
  // src/components/core/KdsTabs/KdsTabs.tsx
1290
- import React10, { forwardRef as forwardRef10, Children, useMemo } from "react";
1411
+ import React12, { forwardRef as forwardRef12, Children, useMemo } from "react";
1291
1412
 
1292
1413
  // src/components/core/hooks/useTabsKeyboard.ts
1293
- import { useCallback } from "react";
1414
+ import { useCallback as useCallback2 } from "react";
1294
1415
  function useTabsKeyboard(tabCount, activeIndex, onChange) {
1295
- const onKeyDown = useCallback(
1416
+ const onKeyDown = useCallback2(
1296
1417
  (e) => {
1297
1418
  let next = activeIndex;
1298
1419
  if (e.key === "ArrowRight") next = (activeIndex + 1) % tabCount;
@@ -1312,31 +1433,31 @@ function useTabsKeyboard(tabCount, activeIndex, onChange) {
1312
1433
  }
1313
1434
 
1314
1435
  // src/components/core/KdsTabs/KdsTabs.tsx
1315
- import { jsx as jsx11 } from "react/jsx-runtime";
1316
- var KdsTabs = forwardRef10(
1317
- ({ activeIndex, onChange, variant = "standard", children, className, style, ...props }, ref) => {
1436
+ import { jsx as jsx13 } from "react/jsx-runtime";
1437
+ var KdsTabs = forwardRef12(
1438
+ ({ activeIndex, onChange, children, className, style, ...props }, ref) => {
1318
1439
  const tabCount = Children.count(children);
1319
1440
  const { onKeyDown } = useTabsKeyboard(tabCount, activeIndex, onChange);
1320
- const mergedStyle = useMemo(() => {
1321
- if (variant !== "segmented") return style;
1322
- return {
1441
+ const mergedStyle = useMemo(
1442
+ () => ({
1323
1443
  ...style,
1324
1444
  "--_tab-count": tabCount,
1325
1445
  "--_active-idx": activeIndex
1326
- };
1327
- }, [variant, tabCount, activeIndex, style]);
1328
- return /* @__PURE__ */ jsx11(
1446
+ }),
1447
+ [tabCount, activeIndex, style]
1448
+ );
1449
+ return /* @__PURE__ */ jsx13(
1329
1450
  "div",
1330
1451
  {
1331
1452
  ref,
1332
1453
  role: "tablist",
1333
- className: clsx(variant === "segmented" ? "kds-segmented-tabs" : "kds-tabs", className),
1454
+ className: clsx("kds-segmented-tabs", className),
1334
1455
  style: mergedStyle,
1335
1456
  onKeyDown,
1336
1457
  ...props,
1337
1458
  children: Children.map(children, (child, i) => {
1338
- if (!React10.isValidElement(child)) return child;
1339
- return React10.cloneElement(child, {
1459
+ if (!React12.isValidElement(child)) return child;
1460
+ return React12.cloneElement(child, {
1340
1461
  _active: i === activeIndex,
1341
1462
  _onClick: () => onChange(i)
1342
1463
  });
@@ -1346,11 +1467,12 @@ var KdsTabs = forwardRef10(
1346
1467
  }
1347
1468
  );
1348
1469
  KdsTabs.displayName = "KdsTabs";
1349
- var KdsTab = forwardRef10(
1350
- ({ _active, _onClick, children, className, ...props }, ref) => /* @__PURE__ */ jsx11(
1470
+ var KdsTab = forwardRef12(
1471
+ ({ _active, _onClick, children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
1351
1472
  "button",
1352
1473
  {
1353
1474
  ref,
1475
+ type: "button",
1354
1476
  role: "tab",
1355
1477
  "aria-selected": _active,
1356
1478
  tabIndex: _active ? 0 : -1,
@@ -1362,8 +1484,8 @@ var KdsTab = forwardRef10(
1362
1484
  )
1363
1485
  );
1364
1486
  KdsTab.displayName = "KdsTab";
1365
- var KdsTabPanel = forwardRef10(
1366
- ({ active, children, className, ...props }, ref) => /* @__PURE__ */ jsx11(
1487
+ var KdsTabPanel = forwardRef12(
1488
+ ({ active, children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
1367
1489
  "div",
1368
1490
  {
1369
1491
  ref,
@@ -1377,190 +1499,128 @@ var KdsTabPanel = forwardRef10(
1377
1499
  );
1378
1500
  KdsTabPanel.displayName = "KdsTabPanel";
1379
1501
 
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
1502
  // src/components/core/KdsRadioGroup/KdsRadioGroup.tsx
1470
- import { forwardRef as forwardRef12 } from "react";
1471
- import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
1472
- var KdsRadioGroup = forwardRef12(
1473
- ({ label, name, options, value, onChange, className, ...props }, ref) => /* @__PURE__ */ jsxs7("fieldset", { ref, className: clsx("kds-radio-group", className), ...props, children: [
1474
- label && /* @__PURE__ */ jsx13("legend", { children: label }),
1475
- options.map((opt) => /* @__PURE__ */ jsxs7("label", { className: "field", children: [
1476
- /* @__PURE__ */ jsx13(
1477
- "input",
1478
- {
1479
- type: "radio",
1480
- name,
1481
- value: opt.value,
1482
- checked: value === opt.value,
1483
- disabled: opt.disabled,
1484
- onChange: () => onChange?.(opt.value)
1485
- }
1486
- ),
1487
- /* @__PURE__ */ jsx13("span", { children: opt.label })
1488
- ] }, opt.value))
1489
- ] })
1503
+ import { forwardRef as forwardRef13 } from "react";
1504
+ import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
1505
+ var KdsRadioGroup = forwardRef13(
1506
+ ({ label, name, options, value, onChange, size, variant, className, ...props }, ref) => /* @__PURE__ */ jsxs9(
1507
+ "fieldset",
1508
+ {
1509
+ ref,
1510
+ className: clsx("kds-radio-group", variant === "card" && "kds-radio-group--card", className),
1511
+ ...props,
1512
+ children: [
1513
+ label && /* @__PURE__ */ jsx14("legend", { children: label }),
1514
+ options.map((opt) => /* @__PURE__ */ jsxs9("label", { className: clsx("radio", size), children: [
1515
+ /* @__PURE__ */ jsx14(
1516
+ "input",
1517
+ {
1518
+ type: "radio",
1519
+ name,
1520
+ value: opt.value,
1521
+ checked: value === opt.value,
1522
+ disabled: opt.disabled,
1523
+ onChange: () => onChange?.(opt.value)
1524
+ }
1525
+ ),
1526
+ /* @__PURE__ */ jsx14("span", { children: opt.label })
1527
+ ] }, opt.value))
1528
+ ]
1529
+ }
1530
+ )
1490
1531
  );
1491
1532
  KdsRadioGroup.displayName = "KdsRadioGroup";
1492
1533
 
1493
1534
  // src/components/core/KdsSelect/KdsSelect.tsx
1494
- import { forwardRef as forwardRef13 } from "react";
1495
- import * as Select from "@radix-ui/react-select";
1496
- import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
1497
- var KdsSelectRoot = forwardRef13(
1535
+ import { forwardRef as forwardRef14 } from "react";
1536
+ import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
1537
+ var KdsSelect = forwardRef14(
1498
1538
  ({
1499
- value,
1500
- onValueChange,
1501
- placeholder,
1502
1539
  label,
1503
- error,
1540
+ options,
1541
+ placeholder,
1504
1542
  helperText,
1505
- disabled,
1543
+ error,
1544
+ prefixIcon,
1506
1545
  fullWidth = true,
1507
- children,
1508
- className
1509
- }, ref) => /* @__PURE__ */ jsxs8(
1510
- "div",
1511
- {
1512
- ref,
1513
- className: clsx(
1514
- "kds-select",
1515
- error && "kds-select-error",
1516
- fullWidth && "kds-select-full",
1517
- className
1518
- ),
1519
- children: [
1520
- label && /* @__PURE__ */ jsx14("label", { className: "kds-select-label", children: label }),
1521
- /* @__PURE__ */ jsxs8(Select.Root, { value, onValueChange, disabled, children: [
1522
- /* @__PURE__ */ jsxs8(Select.Trigger, { className: "kds-select-trigger", children: [
1523
- /* @__PURE__ */ jsx14(Select.Value, { placeholder }),
1524
- /* @__PURE__ */ jsx14(Select.Icon, { className: "kds-select-icon", children: /* @__PURE__ */ jsx14("i", { className: "material-symbols-outlined", children: "expand_more" }) })
1546
+ disabled,
1547
+ required,
1548
+ className,
1549
+ id,
1550
+ ...props
1551
+ }, ref) => {
1552
+ const fieldId = id || `kds-select-${label.toLowerCase().replace(/\s+/g, "-")}`;
1553
+ return /* @__PURE__ */ jsxs10(
1554
+ "div",
1555
+ {
1556
+ className: clsx(
1557
+ "field",
1558
+ "label",
1559
+ "border",
1560
+ prefixIcon && "prefix",
1561
+ error && "invalid",
1562
+ fullWidth && "kds-w-full",
1563
+ className
1564
+ ),
1565
+ children: [
1566
+ prefixIcon && /* @__PURE__ */ jsx15("i", { className: "material-symbols-outlined", children: prefixIcon }),
1567
+ /* @__PURE__ */ jsxs10(
1568
+ "select",
1569
+ {
1570
+ ref,
1571
+ id: fieldId,
1572
+ disabled,
1573
+ required,
1574
+ ...props,
1575
+ children: [
1576
+ placeholder !== void 0 && /* @__PURE__ */ jsx15("option", { value: "", children: placeholder }),
1577
+ options.map((opt) => /* @__PURE__ */ jsx15("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
1578
+ ]
1579
+ }
1580
+ ),
1581
+ /* @__PURE__ */ jsxs10("label", { htmlFor: fieldId, children: [
1582
+ label,
1583
+ required && " *"
1525
1584
  ] }),
1526
- /* @__PURE__ */ jsx14(Select.Portal, { children: /* @__PURE__ */ jsx14(Select.Content, { className: "kds-select-content", position: "popper", sideOffset: 4, children: /* @__PURE__ */ jsx14(Select.Viewport, { className: "kds-select-viewport", children }) }) })
1527
- ] }),
1528
- helperText && /* @__PURE__ */ jsx14("span", { className: clsx("kds-select-helper", error && "kds-select-helper-error"), children: helperText })
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
- ] })
1585
+ helperText && /* @__PURE__ */ jsx15("span", { className: "helper", children: helperText })
1586
+ ]
1587
+ }
1588
+ );
1589
+ }
1539
1590
  );
1540
- KdsSelectItem.displayName = "KdsSelect.Item";
1541
- var KdsSelect = Object.assign(KdsSelectRoot, {
1542
- Item: KdsSelectItem
1543
- });
1591
+ KdsSelect.displayName = "KdsSelect";
1544
1592
 
1545
1593
  // src/components/core/KdsChip/KdsChip.tsx
1546
- import { forwardRef as forwardRef14 } from "react";
1547
- import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1548
- var KdsChip = forwardRef14(
1549
- ({ color, icon, onDelete, children, className, ...props }, ref) => /* @__PURE__ */ jsxs9("span", { ref, className: clsx("kds-badge", color, className), ...props, children: [
1550
- icon && /* @__PURE__ */ jsx15("i", { className: "material-symbols-outlined", children: icon }),
1551
- children,
1552
- onDelete && /* @__PURE__ */ jsx15("button", { className: "kds-btn kds-btn-text kds-btn-sm", onClick: onDelete, "aria-label": "Eliminar", children: /* @__PURE__ */ jsx15("i", { className: "material-symbols-outlined", children: "close" }) })
1594
+ import { forwardRef as forwardRef15 } from "react";
1595
+ import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
1596
+ var KdsChip = forwardRef15(
1597
+ ({ color, icon, onDelete, children, className, ...props }, ref) => /* @__PURE__ */ jsxs11("span", { ref, className: clsx("kds-badge", color, className), ...props, children: [
1598
+ icon && /* @__PURE__ */ jsx16("i", { className: "material-symbols-outlined", children: icon }),
1599
+ /* @__PURE__ */ jsx16("span", { children }),
1600
+ onDelete && /* @__PURE__ */ jsx16(
1601
+ "button",
1602
+ {
1603
+ type: "button",
1604
+ className: "kds-badge-close",
1605
+ onClick: (e) => {
1606
+ e.stopPropagation();
1607
+ onDelete();
1608
+ },
1609
+ "aria-label": "Eliminar",
1610
+ children: /* @__PURE__ */ jsx16("i", { className: "material-symbols-outlined", children: "close" })
1611
+ }
1612
+ )
1553
1613
  ] })
1554
1614
  );
1555
1615
  KdsChip.displayName = "KdsChip";
1556
1616
 
1557
1617
  // src/components/core/KdsSnackbar/KdsSnackbar.tsx
1558
- import { forwardRef as forwardRef15 } from "react";
1618
+ import { forwardRef as forwardRef16 } from "react";
1559
1619
 
1560
1620
  // src/components/core/hooks/useAutoHide.ts
1561
- import { useState, useEffect, useRef } from "react";
1621
+ import { useState as useState3, useEffect, useRef } from "react";
1562
1622
  function useAutoHide(durationMs, onHide) {
1563
- const [visible, setVisible] = useState(true);
1623
+ const [visible, setVisible] = useState3(true);
1564
1624
  const onHideRef = useRef(onHide);
1565
1625
  onHideRef.current = onHide;
1566
1626
  useEffect(() => {
@@ -1575,22 +1635,61 @@ function useAutoHide(durationMs, onHide) {
1575
1635
  }
1576
1636
 
1577
1637
  // src/components/core/KdsSnackbar/KdsSnackbar.tsx
1578
- import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1579
- var KdsSnackbar = forwardRef15(
1580
- ({ message, type, duration = 5e3, onClose, open = true, className, ...props }, ref) => {
1581
- const { visible } = useAutoHide(duration, onClose);
1638
+ import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
1639
+ var DEFAULT_ICONS2 = {
1640
+ info: "info",
1641
+ success: "check_circle",
1642
+ error: "error"
1643
+ };
1644
+ var KdsSnackbar = forwardRef16(
1645
+ ({
1646
+ message,
1647
+ type = "info",
1648
+ duration = 5e3,
1649
+ onClose,
1650
+ open = true,
1651
+ icon,
1652
+ className,
1653
+ style,
1654
+ ...props
1655
+ }, ref) => {
1656
+ const autoDismiss = duration > 0;
1657
+ const { visible } = useAutoHide(autoDismiss ? duration : 0, onClose);
1582
1658
  if (!open || !visible) return null;
1583
- return /* @__PURE__ */ jsxs10("div", { ref, role: "status", className: clsx("snackbar", "active", type, className), ...props, children: [
1584
- /* @__PURE__ */ jsx16("span", { children: message }),
1585
- onClose && /* @__PURE__ */ jsx16("button", { onClick: onClose, "aria-label": "Cerrar", children: /* @__PURE__ */ jsx16("i", { className: "material-symbols-outlined", children: "close" }) })
1586
- ] });
1659
+ const resolvedIcon = icon === false ? null : icon ?? DEFAULT_ICONS2[type];
1660
+ const mergedStyle = autoDismiss ? { ...style, ["--kds-snackbar-duration"]: `${duration}ms` } : style ?? {};
1661
+ return /* @__PURE__ */ jsxs12(
1662
+ "div",
1663
+ {
1664
+ ref,
1665
+ role: "status",
1666
+ className: clsx("snackbar", "active", type, className),
1667
+ "data-auto-dismiss": autoDismiss ? "true" : void 0,
1668
+ style: mergedStyle,
1669
+ ...props,
1670
+ children: [
1671
+ resolvedIcon && /* @__PURE__ */ jsx17("i", { className: "material-symbols-outlined", children: resolvedIcon }),
1672
+ /* @__PURE__ */ jsx17("span", { className: "max", children: message }),
1673
+ onClose && /* @__PURE__ */ jsx17(
1674
+ "button",
1675
+ {
1676
+ type: "button",
1677
+ className: "kds-snackbar-close",
1678
+ onClick: onClose,
1679
+ "aria-label": "Cerrar",
1680
+ children: /* @__PURE__ */ jsx17("i", { className: "material-symbols-outlined", children: "close" })
1681
+ }
1682
+ )
1683
+ ]
1684
+ }
1685
+ );
1587
1686
  }
1588
1687
  );
1589
1688
  KdsSnackbar.displayName = "KdsSnackbar";
1590
1689
 
1591
1690
  // src/components/core/KdsTooltip/KdsTooltip.tsx
1592
1691
  import * as Tooltip from "@radix-ui/react-tooltip";
1593
- import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1692
+ import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
1594
1693
  function KdsTooltip({
1595
1694
  content,
1596
1695
  children,
@@ -1601,167 +1700,377 @@ function KdsTooltip({
1601
1700
  onOpenChange,
1602
1701
  delayDuration = 300
1603
1702
  }) {
1604
- return /* @__PURE__ */ jsx17(Tooltip.Provider, { delayDuration, children: /* @__PURE__ */ jsxs11(Tooltip.Root, { open, defaultOpen, onOpenChange, children: [
1605
- /* @__PURE__ */ jsx17(Tooltip.Trigger, { asChild: true, children }),
1606
- /* @__PURE__ */ jsx17(Tooltip.Portal, { children: /* @__PURE__ */ jsxs11(Tooltip.Content, { className: clsx("kds-tooltip", className), side: placement, sideOffset: 4, children: [
1607
- content,
1608
- /* @__PURE__ */ jsx17(Tooltip.Arrow, { className: "kds-tooltip-arrow" })
1609
- ] }) })
1703
+ return /* @__PURE__ */ jsx18(Tooltip.Provider, { delayDuration, children: /* @__PURE__ */ jsxs13(Tooltip.Root, { open, defaultOpen, onOpenChange, children: [
1704
+ /* @__PURE__ */ jsx18(Tooltip.Trigger, { asChild: true, children }),
1705
+ /* @__PURE__ */ jsx18(Tooltip.Portal, { children: /* @__PURE__ */ jsxs13(
1706
+ Tooltip.Content,
1707
+ {
1708
+ className: clsx("kds-tooltip", className),
1709
+ side: placement,
1710
+ sideOffset: 6,
1711
+ collisionPadding: 8,
1712
+ children: [
1713
+ content,
1714
+ /* @__PURE__ */ jsx18(Tooltip.Arrow, { className: "kds-tooltip-arrow", width: 10, height: 5 })
1715
+ ]
1716
+ }
1717
+ ) })
1610
1718
  ] }) });
1611
1719
  }
1612
1720
 
1613
1721
  // src/components/core/KdsAccordion/KdsAccordion.tsx
1614
- import { forwardRef as forwardRef16 } from "react";
1615
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1616
- var KdsAccordion = forwardRef16(
1617
- ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx18("details", { ref, className: clsx("kds-accordion", className), ...props, children })
1722
+ import { forwardRef as forwardRef17 } from "react";
1723
+ import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
1724
+ var KdsAccordion = forwardRef17(
1725
+ ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx19("details", { ref, className: clsx("kds-accordion", className), ...props, children })
1618
1726
  );
1619
1727
  KdsAccordion.displayName = "KdsAccordion";
1620
- var KdsAccordionSummary = forwardRef16(
1621
- ({ children, className, ...props }, ref) => /* @__PURE__ */ jsxs12("summary", { ref, className: clsx("kds-accordion-summary", className), ...props, children: [
1728
+ var KdsAccordionSummary = forwardRef17(
1729
+ ({ children, className, ...props }, ref) => /* @__PURE__ */ jsxs14("summary", { ref, className: clsx("kds-accordion-summary", className), ...props, children: [
1622
1730
  children,
1623
- /* @__PURE__ */ jsx18("i", { className: "material-symbols-outlined", children: "expand_more" })
1731
+ /* @__PURE__ */ jsx19("i", { className: "material-symbols-outlined", children: "expand_more" })
1624
1732
  ] })
1625
1733
  );
1626
1734
  KdsAccordionSummary.displayName = "KdsAccordionSummary";
1627
- var KdsAccordionDetails = forwardRef16(
1628
- ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx18("div", { ref, className: clsx("kds-accordion-details", className), ...props, children })
1735
+ var KdsAccordionDetails = forwardRef17(
1736
+ ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx19("div", { ref, className: clsx("kds-accordion-details", className), ...props, children })
1629
1737
  );
1630
1738
  KdsAccordionDetails.displayName = "KdsAccordionDetails";
1631
1739
 
1632
1740
  // src/components/core/KdsDivider/KdsDivider.tsx
1633
- import { forwardRef as forwardRef17 } from "react";
1634
- import { jsx as jsx19 } from "react/jsx-runtime";
1635
- var KdsDivider = forwardRef17(
1636
- ({ dashed, className, ...props }, ref) => /* @__PURE__ */ jsx19("hr", { ref, className: clsx(dashed ? "kds-hr-dashed" : "kds-hr", className), ...props })
1741
+ import { forwardRef as forwardRef18 } from "react";
1742
+ import { jsx as jsx20 } from "react/jsx-runtime";
1743
+ var KdsDivider = forwardRef18(
1744
+ ({ dashed, className, ...props }, ref) => /* @__PURE__ */ jsx20("hr", { ref, className: clsx(dashed ? "kds-hr-dashed" : "kds-hr", className), ...props })
1637
1745
  );
1638
1746
  KdsDivider.displayName = "KdsDivider";
1639
1747
 
1640
1748
  // src/components/core/KdsSectionNote/KdsSectionNote.tsx
1641
- import { forwardRef as forwardRef18 } from "react";
1642
- import { jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
1643
- var KdsSectionNote = forwardRef18(
1644
- ({ icon = "info", children, className, ...props }, ref) => /* @__PURE__ */ jsxs13("p", { ref, className: clsx("kds-section-note", className), ...props, children: [
1645
- /* @__PURE__ */ jsx20("i", { className: "material-symbols-outlined", children: icon }),
1646
- /* @__PURE__ */ jsx20("span", { children })
1749
+ import { forwardRef as forwardRef19 } from "react";
1750
+ import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
1751
+ var KdsSectionNote = forwardRef19(
1752
+ ({ icon = "info", children, className, ...props }, ref) => /* @__PURE__ */ jsxs15("p", { ref, className: clsx("kds-section-note", className), ...props, children: [
1753
+ /* @__PURE__ */ jsx21("i", { className: "material-symbols-outlined", children: icon }),
1754
+ /* @__PURE__ */ jsx21("span", { children })
1647
1755
  ] })
1648
1756
  );
1649
1757
  KdsSectionNote.displayName = "KdsSectionNote";
1650
1758
 
1651
1759
  // src/components/core/KdsStatusBlock/KdsStatusBlock.tsx
1652
- import { forwardRef as forwardRef19 } from "react";
1653
- import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
1654
- var KdsStatusBlock = forwardRef19(
1655
- ({ status, icon, title, description, inline, className, ...props }, ref) => /* @__PURE__ */ jsxs14("div", { ref, className: clsx("kds-status-block", inline && "inline", className), "data-status": status, ...props, children: [
1656
- /* @__PURE__ */ jsx21("div", { className: "kds-status-block-icon", children: icon && /* @__PURE__ */ jsx21("i", { className: "material-symbols-outlined", children: icon }) }),
1657
- /* @__PURE__ */ jsxs14("div", { children: [
1658
- /* @__PURE__ */ jsx21("h2", { className: "kds-status-block-title", children: title }),
1659
- description && /* @__PURE__ */ jsx21("p", { className: "kds-status-block-description", children: description })
1760
+ import { forwardRef as forwardRef20 } from "react";
1761
+ import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
1762
+ var KdsStatusBlock = forwardRef20(
1763
+ ({ 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: [
1764
+ /* @__PURE__ */ jsx22("div", { className: "kds-status-block-icon", children: icon && /* @__PURE__ */ jsx22("i", { className: "material-symbols-outlined", children: icon }) }),
1765
+ /* @__PURE__ */ jsxs16("div", { children: [
1766
+ /* @__PURE__ */ jsx22("h2", { className: "kds-status-block-title", children: title }),
1767
+ description && /* @__PURE__ */ jsx22("p", { className: "kds-status-block-description", children: description })
1660
1768
  ] })
1661
1769
  ] })
1662
1770
  );
1663
1771
  KdsStatusBlock.displayName = "KdsStatusBlock";
1664
1772
 
1665
1773
  // 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
1774
  import { forwardRef as forwardRef21 } from "react";
1678
-
1679
- // src/components/core/hooks/useCopyToClipboard.ts
1680
- import { useState as useState2, useCallback as useCallback2 } from "react";
1681
- function useCopyToClipboard(resetMs = 1200) {
1682
- const [copied, setCopied] = useState2(false);
1683
- const copy = useCallback2(
1684
- async (text) => {
1685
- try {
1686
- await navigator.clipboard.writeText(text);
1687
- setCopied(true);
1688
- setTimeout(() => setCopied(false), resetMs);
1689
- } catch {
1690
- }
1775
+ import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
1776
+ var KdsStepper = forwardRef21(
1777
+ ({ steps, current, className, ...props }, ref) => /* @__PURE__ */ jsx23("div", { ref, className: clsx("kds-stepper", className), ...props, children: steps.map((label, i) => /* @__PURE__ */ jsxs17(
1778
+ "div",
1779
+ {
1780
+ className: clsx("kds-step", i < current && "completed", i === current && "current"),
1781
+ children: [
1782
+ /* @__PURE__ */ jsx23("div", { className: "kds-step-indicator" }),
1783
+ /* @__PURE__ */ jsx23("div", { className: "kds-step-label", children: label })
1784
+ ]
1691
1785
  },
1692
- [resetMs]
1693
- );
1694
- return { copied, copy };
1695
- }
1786
+ `${i}-${label}`
1787
+ )) })
1788
+ );
1789
+ KdsStepper.displayName = "KdsStepper";
1696
1790
 
1697
1791
  // src/components/core/KdsCopyRow/KdsCopyRow.tsx
1698
- import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
1699
- var KdsCopyRow = forwardRef21(
1700
- ({ label, value, className, ...props }, ref) => {
1792
+ import { forwardRef as forwardRef22 } from "react";
1793
+ import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
1794
+ var KdsCopyRow = forwardRef22(
1795
+ ({ label, value, copiedText = "Copiado", className, ...props }, ref) => {
1701
1796
  const { copied, copy } = useCopyToClipboard();
1702
- return /* @__PURE__ */ jsxs16("div", { ref, className: clsx("kds-copy-row", copied && "copied", className), ...props, children: [
1703
- /* @__PURE__ */ jsx23("span", { className: "kds-copy-row-label", children: label }),
1704
- /* @__PURE__ */ jsx23("span", { className: "kds-copy-row-value", children: value }),
1705
- /* @__PURE__ */ jsx23("button", { className: "kds-copy-row-btn", onClick: () => copy(value), "aria-label": `Copiar ${label}`, children: /* @__PURE__ */ jsx23("i", { className: "material-symbols-outlined", children: copied ? "check" : "content_copy" }) })
1706
- ] });
1797
+ return /* @__PURE__ */ jsxs18(
1798
+ "button",
1799
+ {
1800
+ ref,
1801
+ type: "button",
1802
+ className: clsx("kds-copy-row", copied && "copied", className),
1803
+ "data-copy": value,
1804
+ onClick: () => copy(value),
1805
+ "aria-label": `Copiar ${label}: ${value}`,
1806
+ ...props,
1807
+ children: [
1808
+ /* @__PURE__ */ jsx24("i", { className: "material-symbols-outlined", "aria-hidden": "true", children: "content_copy" }),
1809
+ /* @__PURE__ */ jsxs18("div", { children: [
1810
+ /* @__PURE__ */ jsx24("span", { className: "kds-copy-row-label", children: label }),
1811
+ /* @__PURE__ */ jsx24("span", { className: "kds-copy-row-value", children: value })
1812
+ ] }),
1813
+ /* @__PURE__ */ jsxs18("span", { className: "kds-copy-toast", "aria-hidden": "true", children: [
1814
+ /* @__PURE__ */ jsx24("i", { className: "material-symbols-outlined", children: "check_circle" }),
1815
+ " ",
1816
+ copiedText
1817
+ ] })
1818
+ ]
1819
+ }
1820
+ );
1707
1821
  }
1708
1822
  );
1709
1823
  KdsCopyRow.displayName = "KdsCopyRow";
1710
1824
 
1711
1825
  // src/components/core/KdsCopyableTable/KdsCopyableTable.tsx
1712
- import { forwardRef as forwardRef22 } from "react";
1713
- import { Fragment as Fragment2, jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
1714
- var KdsCopyableTable = forwardRef22(
1715
- ({ rows, className, ...props }, ref) => {
1716
- const { copied, copy } = useCopyToClipboard();
1717
- const handleCopyAll = () => {
1718
- const text = rows.map((r) => `${r.label}: ${r.value}`).join("\n");
1719
- copy(text);
1720
- };
1721
- return /* @__PURE__ */ jsxs17(Fragment2, { children: [
1722
- /* @__PURE__ */ jsx24("div", { ref, className: clsx("kds-copyable-table", className), ...props, children: rows.map((row) => /* @__PURE__ */ jsxs17("div", { className: "kds-copyable-table-row", children: [
1723
- /* @__PURE__ */ jsx24("span", { className: "kds-copyable-table-label", children: row.label }),
1724
- /* @__PURE__ */ jsx24("span", { className: "kds-copyable-table-value", children: row.value })
1725
- ] }, row.label)) }),
1726
- /* @__PURE__ */ jsxs17("button", { className: `kds-btn kds-btn-outlined kds-btn-block kds-copy-all-btn${copied ? " copied" : ""}`, onClick: handleCopyAll, "aria-label": "Copiar todo", children: [
1727
- /* @__PURE__ */ jsx24("span", { className: "kds-icon", children: /* @__PURE__ */ jsx24("i", { className: "material-symbols-outlined", children: copied ? "check" : "content_copy" }) }),
1728
- /* @__PURE__ */ jsx24("span", { children: copied ? "Copiado" : "Copiar todos los datos" })
1729
- ] })
1730
- ] });
1826
+ import { forwardRef as forwardRef23, useState as useState4, useRef as useRef2, useCallback as useCallback3 } from "react";
1827
+ import { Fragment as Fragment2, jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
1828
+ async function copyToClipboard(text) {
1829
+ try {
1830
+ if (navigator.clipboard?.writeText) {
1831
+ await navigator.clipboard.writeText(text);
1832
+ return true;
1833
+ }
1834
+ } catch {
1835
+ }
1836
+ const ta = document.createElement("textarea");
1837
+ ta.value = text;
1838
+ ta.style.position = "fixed";
1839
+ ta.style.opacity = "0";
1840
+ document.body.appendChild(ta);
1841
+ ta.select();
1842
+ try {
1843
+ document.execCommand("copy");
1844
+ return true;
1845
+ } catch {
1846
+ return false;
1847
+ } finally {
1848
+ document.body.removeChild(ta);
1849
+ }
1850
+ }
1851
+ var TRANSITION_MS = 300;
1852
+ function GridVariant({
1853
+ gridRows,
1854
+ disabled,
1855
+ className,
1856
+ forwardedRef,
1857
+ rest
1858
+ }) {
1859
+ return /* @__PURE__ */ jsx25(
1860
+ "div",
1861
+ {
1862
+ ref: forwardedRef,
1863
+ className: clsx("kds-copyable-table", "kds-copyable-table--grid", className),
1864
+ ...rest,
1865
+ children: gridRows.map((cells, rowIndex) => /* @__PURE__ */ jsx25(
1866
+ "div",
1867
+ {
1868
+ className: "kds-copyable-table-row kds-copyable-table-row--grid",
1869
+ "data-testid": "kds-grid-row",
1870
+ children: cells.map((text, cellIndex) => /* @__PURE__ */ jsx25(
1871
+ "span",
1872
+ {
1873
+ className: clsx("kds-grid-cell", disabled && "kds-grid-cell--disabled"),
1874
+ children: text
1875
+ },
1876
+ cellIndex
1877
+ ))
1878
+ },
1879
+ rowIndex
1880
+ ))
1881
+ }
1882
+ );
1883
+ }
1884
+ function CopyableVariant({
1885
+ rows,
1886
+ copyAllLabel = "Copiar todos los datos",
1887
+ copiedAllLabel = "Datos copiados",
1888
+ showCopyAll = true,
1889
+ className,
1890
+ forwardedRef,
1891
+ rest
1892
+ }) {
1893
+ const copiedTimers = useRef2(/* @__PURE__ */ new Map());
1894
+ const settlingTimers = useRef2(/* @__PURE__ */ new Map());
1895
+ const [copiedRows, setCopiedRows] = useState4(/* @__PURE__ */ new Set());
1896
+ const [settlingRows, setSettlingRows] = useState4(/* @__PURE__ */ new Set());
1897
+ const [allCopied, setAllCopied] = useState4(false);
1898
+ const markCopied = useCallback3((indexes, duration = 1500) => {
1899
+ setCopiedRows((prev) => {
1900
+ const next = new Set(prev);
1901
+ indexes.forEach((i) => next.add(i));
1902
+ return next;
1903
+ });
1904
+ indexes.forEach((i) => {
1905
+ const st = settlingTimers.current.get(i);
1906
+ if (st) {
1907
+ clearTimeout(st);
1908
+ settlingTimers.current.delete(i);
1909
+ }
1910
+ });
1911
+ setSettlingRows((prev) => {
1912
+ const next = new Set(prev);
1913
+ indexes.forEach((i) => next.delete(i));
1914
+ return next;
1915
+ });
1916
+ indexes.forEach((i) => {
1917
+ const existing = copiedTimers.current.get(i);
1918
+ if (existing) clearTimeout(existing);
1919
+ const t = setTimeout(() => {
1920
+ setCopiedRows((prev) => {
1921
+ const next = new Set(prev);
1922
+ next.delete(i);
1923
+ return next;
1924
+ });
1925
+ setSettlingRows((prev) => {
1926
+ const next = new Set(prev);
1927
+ next.add(i);
1928
+ return next;
1929
+ });
1930
+ copiedTimers.current.delete(i);
1931
+ const settlingT = setTimeout(() => {
1932
+ setSettlingRows((prev) => {
1933
+ const next = new Set(prev);
1934
+ next.delete(i);
1935
+ return next;
1936
+ });
1937
+ settlingTimers.current.delete(i);
1938
+ }, TRANSITION_MS);
1939
+ settlingTimers.current.set(i, settlingT);
1940
+ }, duration);
1941
+ copiedTimers.current.set(i, t);
1942
+ });
1943
+ }, []);
1944
+ const handleRowCopy = async (row, index) => {
1945
+ const ok = await copyToClipboard(row.copy ?? row.value);
1946
+ if (ok) markCopied([index]);
1947
+ };
1948
+ const handleCopyAll = async () => {
1949
+ const text = rows.map((r) => `${r.label}: ${r.value}`).join("\n");
1950
+ const ok = await copyToClipboard(text);
1951
+ if (ok) {
1952
+ markCopied(rows.map((_, i) => i));
1953
+ setAllCopied(true);
1954
+ setTimeout(() => setAllCopied(false), 2e3);
1955
+ }
1956
+ };
1957
+ return /* @__PURE__ */ jsxs19(Fragment2, { children: [
1958
+ /* @__PURE__ */ jsx25("div", { ref: forwardedRef, className: clsx("kds-copyable-table", className), ...rest, children: rows.map((row, i) => /* @__PURE__ */ jsxs19(
1959
+ "div",
1960
+ {
1961
+ className: clsx(
1962
+ "kds-copyable-table-row",
1963
+ copiedRows.has(i) && "copied",
1964
+ settlingRows.has(i) && "settling"
1965
+ ),
1966
+ role: "button",
1967
+ tabIndex: 0,
1968
+ onClick: () => handleRowCopy(row, i),
1969
+ onKeyDown: (e) => {
1970
+ if (e.key === "Enter" || e.key === " ") {
1971
+ e.preventDefault();
1972
+ handleRowCopy(row, i);
1973
+ }
1974
+ },
1975
+ "aria-label": `Copiar ${row.label}: ${row.value}`,
1976
+ children: [
1977
+ /* @__PURE__ */ jsx25("span", { className: "kds-key", children: row.label }),
1978
+ /* @__PURE__ */ jsx25("span", { className: "kds-value", children: row.value })
1979
+ ]
1980
+ },
1981
+ `${row.label}-${i}`
1982
+ )) }),
1983
+ showCopyAll && /* @__PURE__ */ jsxs19(
1984
+ "button",
1985
+ {
1986
+ type: "button",
1987
+ className: clsx(
1988
+ "kds-btn",
1989
+ "kds-btn-outlined",
1990
+ "kds-btn-block",
1991
+ "kds-copy-all-btn",
1992
+ allCopied && "copied"
1993
+ ),
1994
+ onClick: handleCopyAll,
1995
+ "aria-label": allCopied ? copiedAllLabel : copyAllLabel,
1996
+ children: [
1997
+ /* @__PURE__ */ jsx25("span", { className: "kds-icon", children: /* @__PURE__ */ jsx25("i", { className: "material-symbols-outlined", children: allCopied ? "check" : "content_copy" }) }),
1998
+ /* @__PURE__ */ jsx25("span", { children: allCopied ? copiedAllLabel : copyAllLabel })
1999
+ ]
2000
+ }
2001
+ )
2002
+ ] });
2003
+ }
2004
+ var KdsCopyableTable = forwardRef23(
2005
+ ({
2006
+ rows = [],
2007
+ variant = "copyable",
2008
+ gridRows = [],
2009
+ disabled = false,
2010
+ copyAllLabel,
2011
+ copiedAllLabel,
2012
+ showCopyAll,
2013
+ className,
2014
+ ...props
2015
+ }, ref) => {
2016
+ if (variant === "grid") {
2017
+ return /* @__PURE__ */ jsx25(
2018
+ GridVariant,
2019
+ {
2020
+ gridRows,
2021
+ disabled,
2022
+ className,
2023
+ forwardedRef: ref,
2024
+ rest: props
2025
+ }
2026
+ );
2027
+ }
2028
+ return /* @__PURE__ */ jsx25(
2029
+ CopyableVariant,
2030
+ {
2031
+ rows,
2032
+ copyAllLabel,
2033
+ copiedAllLabel,
2034
+ showCopyAll,
2035
+ className,
2036
+ forwardedRef: ref,
2037
+ rest: props
2038
+ }
2039
+ );
1731
2040
  }
1732
2041
  );
1733
2042
  KdsCopyableTable.displayName = "KdsCopyableTable";
1734
2043
 
1735
2044
  // src/components/core/KdsExpandPanel/KdsExpandPanel.tsx
1736
- import { forwardRef as forwardRef23, useState as useState3 } from "react";
1737
- import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
1738
- var KdsExpandPanel = forwardRef23(
2045
+ import { forwardRef as forwardRef24, useState as useState5 } from "react";
2046
+ import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
2047
+ var KdsExpandPanel = forwardRef24(
1739
2048
  ({ label, defaultExpanded = false, children, className, ...props }, ref) => {
1740
- const [expanded, setExpanded] = useState3(defaultExpanded);
1741
- return /* @__PURE__ */ jsxs18("div", { ref, className, ...props, children: [
1742
- /* @__PURE__ */ jsxs18(
2049
+ const [expanded, setExpanded] = useState5(defaultExpanded);
2050
+ return /* @__PURE__ */ jsxs20("div", { ref, className, ...props, children: [
2051
+ /* @__PURE__ */ jsxs20(
1743
2052
  "button",
1744
2053
  {
1745
2054
  className: "kds-expand-toggle",
1746
2055
  onClick: () => setExpanded((v) => !v),
1747
2056
  "aria-expanded": expanded,
1748
2057
  children: [
1749
- /* @__PURE__ */ jsx25("span", { children: label }),
1750
- /* @__PURE__ */ jsx25("i", { className: "material-symbols-outlined", children: expanded ? "expand_less" : "expand_more" })
2058
+ /* @__PURE__ */ jsx26("span", { children: label }),
2059
+ /* @__PURE__ */ jsx26("i", { className: "material-symbols-outlined", children: expanded ? "expand_less" : "expand_more" })
1751
2060
  ]
1752
2061
  }
1753
2062
  ),
1754
- /* @__PURE__ */ jsx25("div", { className: clsx("kds-expand-panel", expanded && "open"), hidden: !expanded, children })
2063
+ /* @__PURE__ */ jsx26("div", { className: clsx("kds-expand-panel", expanded && "open"), hidden: !expanded, children })
1755
2064
  ] });
1756
2065
  }
1757
2066
  );
1758
2067
  KdsExpandPanel.displayName = "KdsExpandPanel";
1759
2068
 
1760
2069
  // src/components/core/KdsCountdown/KdsCountdown.tsx
1761
- import { forwardRef as forwardRef24, useEffect as useEffect3, useRef as useRef2 } from "react";
2070
+ import { forwardRef as forwardRef25, useEffect as useEffect3, useRef as useRef3 } from "react";
1762
2071
 
1763
2072
  // src/components/core/hooks/useCountdown.ts
1764
- import { useState as useState4, useEffect as useEffect2 } from "react";
2073
+ import { useState as useState6, useEffect as useEffect2 } from "react";
1765
2074
  function calcRemaining(deadline) {
1766
2075
  const diff = Math.max(0, new Date(deadline).getTime() - Date.now());
1767
2076
  const totalSeconds = Math.floor(diff / 1e3);
@@ -1774,7 +2083,7 @@ function calcRemaining(deadline) {
1774
2083
  };
1775
2084
  }
1776
2085
  function useCountdown(deadline) {
1777
- const [state, setState] = useState4(() => calcRemaining(deadline));
2086
+ const [state, setState] = useState6(() => calcRemaining(deadline));
1778
2087
  useEffect2(() => {
1779
2088
  const tick = () => setState(calcRemaining(deadline));
1780
2089
  const id = setInterval(tick, 1e3);
@@ -1784,11 +2093,11 @@ function useCountdown(deadline) {
1784
2093
  }
1785
2094
 
1786
2095
  // src/components/core/KdsCountdown/KdsCountdown.tsx
1787
- import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
1788
- var KdsCountdown = forwardRef24(
2096
+ import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
2097
+ var KdsCountdown = forwardRef25(
1789
2098
  ({ deadline, label, onExpire, className, ...props }, ref) => {
1790
2099
  const { hours, minutes, seconds, expired, urgent } = useCountdown(deadline);
1791
- const onExpireRef = useRef2(onExpire);
2100
+ const onExpireRef = useRef3(onExpire);
1792
2101
  onExpireRef.current = onExpire;
1793
2102
  useEffect3(() => {
1794
2103
  if (expired) {
@@ -1799,9 +2108,9 @@ var KdsCountdown = forwardRef24(
1799
2108
  return null;
1800
2109
  }
1801
2110
  const pad = (n) => String(n).padStart(2, "0");
1802
- return /* @__PURE__ */ jsxs19("div", { ref, className: clsx("kds-countdown", urgent && "urgent", className), ...props, children: [
1803
- label && /* @__PURE__ */ jsx26("span", { className: "kds-countdown-label", children: label }),
1804
- /* @__PURE__ */ jsxs19("span", { className: "kds-countdown-value", children: [
2111
+ return /* @__PURE__ */ jsxs21("div", { ref, className: clsx("kds-countdown", urgent && "urgent", className), ...props, children: [
2112
+ label && /* @__PURE__ */ jsx27("span", { className: "kds-countdown-label", children: label }),
2113
+ /* @__PURE__ */ jsxs21("span", { className: "kds-countdown-value", children: [
1805
2114
  pad(hours),
1806
2115
  ":",
1807
2116
  pad(minutes),
@@ -1814,96 +2123,98 @@ var KdsCountdown = forwardRef24(
1814
2123
  KdsCountdown.displayName = "KdsCountdown";
1815
2124
 
1816
2125
  // src/components/core/KdsSegmentedTabs/KdsSegmentedTabs.tsx
1817
- import { forwardRef as forwardRef25 } from "react";
1818
- import { jsx as jsx27 } from "react/jsx-runtime";
1819
- var KdsSegmentedTabs = forwardRef25(
1820
- (props, ref) => /* @__PURE__ */ jsx27(KdsTabs, { ref, variant: "segmented", ...props })
2126
+ import { forwardRef as forwardRef26 } from "react";
2127
+ import { jsx as jsx28 } from "react/jsx-runtime";
2128
+ var KdsSegmentedTabs = forwardRef26(
2129
+ (props, ref) => /* @__PURE__ */ jsx28(KdsTabs, { ref, ...props })
1821
2130
  );
1822
2131
  KdsSegmentedTabs.displayName = "KdsSegmentedTabs";
1823
2132
 
1824
2133
  // src/components/domain/KdsBankRow/KdsBankRow.tsx
1825
- import { forwardRef as forwardRef26 } from "react";
1826
- import { jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
1827
- var KdsBankRow = forwardRef26(
1828
- ({ name, logoUrl, selected, className, ...props }, ref) => /* @__PURE__ */ jsxs20(
1829
- "button",
1830
- {
1831
- ref,
1832
- type: "button",
1833
- className: clsx("kds-bank-row", selected && "selected", className),
1834
- ...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
- ]
1840
- }
1841
- )
2134
+ import { forwardRef as forwardRef27 } from "react";
2135
+ import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
2136
+ var KdsBankRow = forwardRef27(
2137
+ ({ name, logoUrl, selected, hideLogo, className, ...props }, ref) => {
2138
+ const nameStr = typeof name === "string" ? name : "";
2139
+ return /* @__PURE__ */ jsxs22(
2140
+ "button",
2141
+ {
2142
+ ref,
2143
+ type: "button",
2144
+ className: clsx("kds-bank-row", selected && "selected", className),
2145
+ ...props,
2146
+ children: [
2147
+ !hideLogo && /* @__PURE__ */ jsx29("span", { className: "kds-bank-row-logo", children: logoUrl ? /* @__PURE__ */ jsx29("img", { src: logoUrl, alt: nameStr }) : /* @__PURE__ */ jsx29("span", { className: "initials", children: nameStr.charAt(0) }) }),
2148
+ /* @__PURE__ */ jsx29("span", { className: "kds-bank-row-name", children: name }),
2149
+ /* @__PURE__ */ jsx29("i", { className: "material-symbols-outlined", children: selected ? "check_circle" : "chevron_right" })
2150
+ ]
2151
+ }
2152
+ );
2153
+ }
1842
2154
  );
1843
2155
  KdsBankRow.displayName = "KdsBankRow";
1844
2156
 
1845
2157
  // src/components/domain/KdsBankList/KdsBankList.tsx
1846
- import { forwardRef as forwardRef27 } from "react";
1847
- import { jsx as jsx29 } from "react/jsx-runtime";
1848
- var KdsBankList = forwardRef27(
1849
- ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx29("div", { ref, className: clsx("kds-bank-list", className), role: "list", ...props, children })
2158
+ import { forwardRef as forwardRef28 } from "react";
2159
+ import { jsx as jsx30 } from "react/jsx-runtime";
2160
+ var KdsBankList = forwardRef28(
2161
+ ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx30("div", { ref, className: clsx("kds-bank-list", className), role: "list", ...props, children })
1850
2162
  );
1851
2163
  KdsBankList.displayName = "KdsBankList";
1852
2164
 
1853
2165
  // src/components/domain/KdsBankModal/KdsBankModal.tsx
1854
- import { forwardRef as forwardRef28, useState as useState5 } from "react";
1855
- import * as Dialog2 from "@radix-ui/react-dialog";
1856
- import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
1857
- var KdsBankModal = forwardRef28(
2166
+ import { forwardRef as forwardRef29, useState as useState7 } from "react";
2167
+ import * as Dialog from "@radix-ui/react-dialog";
2168
+ import { jsx as jsx31, jsxs as jsxs23 } from "react/jsx-runtime";
2169
+ var KdsBankModal = forwardRef29(
1858
2170
  ({ open, onClose, title = "Selecciona tu banco", searchPlaceholder = "Buscar banco...", onSearch, children, className, container }, ref) => {
1859
- const [query, setQuery] = useState5("");
2171
+ const [query, setQuery] = useState7("");
1860
2172
  const handleSearch = (value) => {
1861
2173
  setQuery(value);
1862
2174
  onSearch?.(value);
1863
2175
  };
1864
- return /* @__PURE__ */ jsx30(Dialog2.Root, { open, onOpenChange: (o) => {
2176
+ return /* @__PURE__ */ jsx31(Dialog.Root, { open, onOpenChange: (o) => {
1865
2177
  if (!o) onClose();
1866
- }, children: /* @__PURE__ */ jsx30(Dialog2.Portal, { container, children: /* @__PURE__ */ jsx30(Dialog2.Overlay, { className: "kds-bank-modal-scrim open", children: /* @__PURE__ */ jsxs21(Dialog2.Content, { ref, className: clsx("kds-bank-modal", className), children: [
1867
- /* @__PURE__ */ jsxs21("div", { className: "kds-bank-modal-header", children: [
1868
- /* @__PURE__ */ jsx30(Dialog2.Title, { asChild: true, children: /* @__PURE__ */ jsx30("h3", { children: title }) }),
1869
- /* @__PURE__ */ jsx30(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx30("button", { className: "kds-bank-modal-close", "aria-label": "Cerrar", children: /* @__PURE__ */ jsx30("i", { className: "material-symbols-outlined", children: "close" }) }) })
2178
+ }, children: /* @__PURE__ */ jsx31(Dialog.Portal, { container, children: /* @__PURE__ */ jsx31(Dialog.Overlay, { className: "kds-bank-modal-scrim open", children: /* @__PURE__ */ jsxs23(Dialog.Content, { ref, className: clsx("kds-bank-modal", className), children: [
2179
+ /* @__PURE__ */ jsxs23("div", { className: "kds-bank-modal-header", children: [
2180
+ /* @__PURE__ */ jsx31(Dialog.Title, { asChild: true, children: /* @__PURE__ */ jsx31("h3", { children: title }) }),
2181
+ /* @__PURE__ */ jsx31(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx31("button", { className: "kds-bank-modal-close", "aria-label": "Cerrar", children: /* @__PURE__ */ jsx31("i", { className: "material-symbols-outlined", children: "close" }) }) })
1870
2182
  ] }),
1871
- /* @__PURE__ */ jsx30("div", { className: "kds-bank-modal-search", children: /* @__PURE__ */ jsx30(
1872
- "input",
2183
+ /* @__PURE__ */ jsx31("div", { className: "kds-bank-modal-search", children: /* @__PURE__ */ jsx31(
2184
+ KdsSearchField,
1873
2185
  {
1874
- type: "text",
1875
2186
  placeholder: searchPlaceholder,
1876
2187
  value: query,
1877
2188
  onChange: (e) => handleSearch(e.target.value)
1878
2189
  }
1879
2190
  ) }),
1880
- /* @__PURE__ */ jsx30("div", { className: "kds-bank-modal-body", children })
2191
+ /* @__PURE__ */ jsx31("div", { className: "kds-bank-modal-body", children })
1881
2192
  ] }) }) }) });
1882
2193
  }
1883
2194
  );
1884
2195
  KdsBankModal.displayName = "KdsBankModal";
1885
2196
 
1886
2197
  // src/components/domain/KdsQrRow/KdsQrRow.tsx
1887
- import { forwardRef as forwardRef29 } from "react";
1888
- import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
1889
- var KdsQrRow = forwardRef29(
1890
- ({ name, description, badge, icon = "qr_code_2", className, ...props }, ref) => /* @__PURE__ */ jsxs22("button", { ref, type: "button", className: clsx("kds-qr-row", className), ...props, children: [
1891
- /* @__PURE__ */ jsx31("span", { className: "kds-qr-avatar", "aria-hidden": "true", children: /* @__PURE__ */ jsx31("i", { className: "material-symbols-outlined", children: icon }) }),
1892
- /* @__PURE__ */ jsxs22("span", { className: "kds-qr-text", children: [
1893
- /* @__PURE__ */ jsx31("span", { className: "title", children: name }),
1894
- description && /* @__PURE__ */ jsx31("span", { className: "sub", children: description })
2198
+ import { forwardRef as forwardRef30 } from "react";
2199
+ import { jsx as jsx32, jsxs as jsxs24 } from "react/jsx-runtime";
2200
+ var KdsQrRow = forwardRef30(
2201
+ ({ name, description, badge, icon = "qr_code_2", className, ...props }, ref) => /* @__PURE__ */ jsxs24("button", { ref, type: "button", className: clsx("kds-qr-row", className), ...props, children: [
2202
+ /* @__PURE__ */ jsx32("span", { className: "kds-qr-avatar", "aria-hidden": "true", children: /* @__PURE__ */ jsx32("i", { className: "material-symbols-outlined", children: icon }) }),
2203
+ /* @__PURE__ */ jsxs24("span", { className: "kds-qr-text", children: [
2204
+ /* @__PURE__ */ jsx32("span", { className: "kds-qr-title", children: name }),
2205
+ description && /* @__PURE__ */ jsx32("span", { className: "kds-qr-subtitle", children: description })
1895
2206
  ] }),
1896
- badge && /* @__PURE__ */ jsx31("span", { className: "kds-qr-badge", children: badge }),
1897
- /* @__PURE__ */ jsx31("i", { className: "material-symbols-outlined", children: "chevron_right" })
2207
+ badge && /* @__PURE__ */ jsx32("span", { className: "kds-qr-badge", children: badge }),
2208
+ /* @__PURE__ */ jsx32("i", { className: "material-symbols-outlined", children: "chevron_right" })
1898
2209
  ] })
1899
2210
  );
1900
2211
  KdsQrRow.displayName = "KdsQrRow";
1901
2212
 
1902
2213
  // src/components/domain/KdsCardSelector/KdsCardSelector.tsx
1903
- import { forwardRef as forwardRef30 } from "react";
1904
- import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
1905
- var KdsCardSelector = forwardRef30(
1906
- ({ icon, title, description, selected, className, ...props }, ref) => /* @__PURE__ */ jsxs23(
2214
+ import { forwardRef as forwardRef31 } from "react";
2215
+ import { jsx as jsx33, jsxs as jsxs25 } from "react/jsx-runtime";
2216
+ var KdsCardSelector = forwardRef31(
2217
+ ({ icon, title, description, selected, className, ...props }, ref) => /* @__PURE__ */ jsxs25(
1907
2218
  "button",
1908
2219
  {
1909
2220
  ref,
@@ -1911,9 +2222,9 @@ var KdsCardSelector = forwardRef30(
1911
2222
  className: clsx("kds-card-selector", selected && "selected", className),
1912
2223
  ...props,
1913
2224
  children: [
1914
- icon && /* @__PURE__ */ jsx32("span", { className: "kds-card-selector-icon", children: /* @__PURE__ */ jsx32("i", { className: "material-symbols-outlined", children: icon }) }),
1915
- /* @__PURE__ */ jsx32("span", { className: "kds-card-selector-title", children: title }),
1916
- description && /* @__PURE__ */ jsx32("span", { className: "kds-card-selector-description", children: description })
2225
+ icon && /* @__PURE__ */ jsx33("span", { className: "kds-card-selector-icon", children: /* @__PURE__ */ jsx33("i", { className: "material-symbols-outlined", children: icon }) }),
2226
+ /* @__PURE__ */ jsx33("span", { className: "kds-card-selector-title", children: title }),
2227
+ description && /* @__PURE__ */ jsx33("span", { className: "kds-card-selector-description", children: description })
1917
2228
  ]
1918
2229
  }
1919
2230
  )
@@ -1921,26 +2232,26 @@ var KdsCardSelector = forwardRef30(
1921
2232
  KdsCardSelector.displayName = "KdsCardSelector";
1922
2233
 
1923
2234
  // src/components/domain/KdsCardPlan/KdsCardPlan.tsx
1924
- import { forwardRef as forwardRef31 } from "react";
1925
- import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
1926
- var KdsCardPlan = forwardRef31(
1927
- ({ title, price, period, features, recommended, badgeText, action, className, ...props }, ref) => /* @__PURE__ */ jsxs24(
2235
+ import { forwardRef as forwardRef32 } from "react";
2236
+ import { jsx as jsx34, jsxs as jsxs26 } from "react/jsx-runtime";
2237
+ var KdsCardPlan = forwardRef32(
2238
+ ({ title, price, period, features, recommended, badgeText, action, className, ...props }, ref) => /* @__PURE__ */ jsxs26(
1928
2239
  "div",
1929
2240
  {
1930
2241
  ref,
1931
2242
  className: clsx("kds-card-plan", recommended && "recommended", className),
1932
2243
  ...props,
1933
2244
  children: [
1934
- badgeText && /* @__PURE__ */ jsx33("span", { className: "kds-card-plan-badge", children: badgeText }),
1935
- /* @__PURE__ */ jsx33("div", { className: "kds-card-plan-header", children: /* @__PURE__ */ jsx33("h3", { children: title }) }),
1936
- /* @__PURE__ */ jsxs24("div", { className: "kds-card-plan-price", children: [
1937
- /* @__PURE__ */ jsx33("span", { children: price }),
1938
- period && /* @__PURE__ */ jsxs24("span", { children: [
2245
+ /* @__PURE__ */ jsx34("div", { className: "kds-card-plan-header", children: /* @__PURE__ */ jsx34("h3", { children: title }) }),
2246
+ /* @__PURE__ */ jsxs26("div", { className: "kds-card-plan-price", children: [
2247
+ /* @__PURE__ */ jsx34("span", { className: "kds-price", children: price }),
2248
+ period && /* @__PURE__ */ jsxs26("span", { className: "kds-price-period", children: [
1939
2249
  "/",
1940
2250
  period
1941
2251
  ] })
1942
2252
  ] }),
1943
- features && features.length > 0 && /* @__PURE__ */ jsx33("ul", { className: "kds-card-plan-features", children: features.map((f, i) => /* @__PURE__ */ jsx33("li", { children: f }, i)) }),
2253
+ badgeText && /* @__PURE__ */ jsx34("span", { className: "kds-card-plan-badge", children: badgeText }),
2254
+ features && features.length > 0 && /* @__PURE__ */ jsx34("ul", { className: "kds-card-plan-features", children: features.map((f, i) => /* @__PURE__ */ jsx34("li", { children: f }, i)) }),
1944
2255
  action
1945
2256
  ]
1946
2257
  }
@@ -1949,50 +2260,225 @@ var KdsCardPlan = forwardRef31(
1949
2260
  KdsCardPlan.displayName = "KdsCardPlan";
1950
2261
 
1951
2262
  // src/components/domain/KdsInvoiceSticky/KdsInvoiceSticky.tsx
1952
- import { forwardRef as forwardRef32 } from "react";
1953
- import { jsx as jsx34 } from "react/jsx-runtime";
1954
- var KdsInvoiceSticky = forwardRef32(
1955
- ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx34("div", { ref, className: clsx("kds-card-elevated", "kds-invoice-sticky", className), ...props, children })
2263
+ import { forwardRef as forwardRef33 } from "react";
2264
+ import { jsx as jsx35 } from "react/jsx-runtime";
2265
+ var KdsInvoiceSticky = forwardRef33(
2266
+ ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx35("div", { ref, className: clsx("kds-card-elevated", "kds-invoice-sticky", className), ...props, children })
1956
2267
  );
1957
2268
  KdsInvoiceSticky.displayName = "KdsInvoiceSticky";
1958
2269
 
1959
2270
  // src/components/domain/KdsBottomSheet/KdsBottomSheet.tsx
1960
- import { forwardRef as forwardRef33 } from "react";
1961
- import * as Dialog3 from "@radix-ui/react-dialog";
1962
- import { jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
1963
- var KdsBottomSheet = forwardRef33(
1964
- ({ open, onClose, title, children, actions, className, container }, ref) => /* @__PURE__ */ jsx35(Dialog3.Root, { open, onOpenChange: (o) => {
1965
- if (!o) onClose();
1966
- }, children: /* @__PURE__ */ jsx35(Dialog3.Portal, { container, children: /* @__PURE__ */ jsx35(Dialog3.Overlay, { className: "kds-bottom-sheet-scrim open", children: /* @__PURE__ */ jsxs25(Dialog3.Content, { ref, className: clsx("kds-bottom-sheet", className), children: [
1967
- /* @__PURE__ */ jsx35("div", { className: "kds-bottom-sheet-grabber" }),
1968
- title && /* @__PURE__ */ jsx35(Dialog3.Title, { className: "kds-bottom-sheet-title", children: title }),
1969
- /* @__PURE__ */ jsx35("div", { className: "kds-bottom-sheet-body", children }),
1970
- actions && /* @__PURE__ */ jsx35("div", { className: "kds-bottom-sheet-actions", children: actions })
1971
- ] }) }) }) })
2271
+ import { forwardRef as forwardRef34 } from "react";
2272
+ import * as Dialog2 from "@radix-ui/react-dialog";
2273
+ import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
2274
+ var KdsBottomSheet = forwardRef34(
2275
+ ({
2276
+ open,
2277
+ onClose,
2278
+ title,
2279
+ description,
2280
+ children,
2281
+ actions,
2282
+ showGrabber = true,
2283
+ showCloseButton = false,
2284
+ container,
2285
+ className
2286
+ }, ref) => /* @__PURE__ */ jsx36(
2287
+ Dialog2.Root,
2288
+ {
2289
+ open,
2290
+ onOpenChange: (o) => {
2291
+ if (!o) onClose();
2292
+ },
2293
+ children: /* @__PURE__ */ jsx36(Dialog2.Portal, { container, children: /* @__PURE__ */ jsx36(Dialog2.Overlay, { className: "kds-bottom-sheet-scrim open", children: /* @__PURE__ */ jsxs27(
2294
+ Dialog2.Content,
2295
+ {
2296
+ ref,
2297
+ className: clsx("kds-bottom-sheet", className),
2298
+ onPointerDownOutside: (e) => {
2299
+ const target = e.target;
2300
+ if (target.closest(".kds-bottom-sheet")) e.preventDefault();
2301
+ },
2302
+ children: [
2303
+ showGrabber && /* @__PURE__ */ jsx36("div", { className: "kds-bottom-sheet-grabber", "aria-hidden": "true" }),
2304
+ showCloseButton && /* @__PURE__ */ jsx36(Dialog2.Close, { asChild: true, children: /* @__PURE__ */ jsx36(
2305
+ "button",
2306
+ {
2307
+ type: "button",
2308
+ className: "kds-bottom-sheet-close",
2309
+ "aria-label": "Cerrar",
2310
+ children: /* @__PURE__ */ jsx36("i", { className: "material-symbols-outlined", children: "close" })
2311
+ }
2312
+ ) }),
2313
+ title && /* @__PURE__ */ jsx36(Dialog2.Title, { className: "kds-bottom-sheet-title", children: title }),
2314
+ description && /* @__PURE__ */ jsx36(Dialog2.Description, { className: "kds-bottom-sheet-description", children: description }),
2315
+ /* @__PURE__ */ jsx36("div", { className: "kds-bottom-sheet-body", children }),
2316
+ actions && /* @__PURE__ */ jsx36("div", { className: "kds-bottom-sheet-actions", children: actions })
2317
+ ]
2318
+ }
2319
+ ) }) })
2320
+ }
2321
+ )
1972
2322
  );
1973
2323
  KdsBottomSheet.displayName = "KdsBottomSheet";
1974
2324
 
1975
2325
  // src/components/domain/KdsSecureFooter/KdsSecureFooter.tsx
1976
- import { forwardRef as forwardRef34 } from "react";
1977
- import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
1978
- var KdsSecureFooter = forwardRef34(
1979
- ({ variant = "default", children, className, ...props }, ref) => /* @__PURE__ */ jsxs26("footer", { ref, className: clsx("kds-secure-footer", variant === "inside" && "inside", className), ...props, children: [
1980
- /* @__PURE__ */ jsx36("i", { className: "material-symbols-outlined", children: "lock" }),
1981
- children || /* @__PURE__ */ jsx36("span", { children: "Pago seguro con Khipu" })
2326
+ import { forwardRef as forwardRef35 } from "react";
2327
+ import { jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
2328
+ var KdsSecureFooter = forwardRef35(
2329
+ ({ variant = "default", children, className, ...props }, ref) => /* @__PURE__ */ jsxs28("footer", { ref, className: clsx("kds-secure-footer", variant === "inside" && "inside", className), ...props, children: [
2330
+ /* @__PURE__ */ jsx37("i", { className: "material-symbols-outlined", children: "lock" }),
2331
+ children || /* @__PURE__ */ jsx37("span", { children: "Pago seguro con Khipu" })
1982
2332
  ] })
1983
2333
  );
1984
2334
  KdsSecureFooter.displayName = "KdsSecureFooter";
1985
2335
 
1986
2336
  // src/components/domain/KdsRecapList/KdsRecapList.tsx
1987
- import { forwardRef as forwardRef35 } from "react";
1988
- import { jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
1989
- var KdsRecapList = forwardRef35(
1990
- ({ items, className, ...props }, ref) => /* @__PURE__ */ jsx37("ul", { ref, className: clsx("kds-recap-list", className), ...props, children: items.map((item, i) => /* @__PURE__ */ jsxs27("li", { children: [
1991
- /* @__PURE__ */ jsx37("span", { className: "k", children: item.label }),
1992
- /* @__PURE__ */ jsx37("span", { className: clsx("v", !item.value && item.placeholder && "placeholder"), children: item.value || item.placeholder || "-" })
2337
+ import { forwardRef as forwardRef36 } from "react";
2338
+ import { jsx as jsx38, jsxs as jsxs29 } from "react/jsx-runtime";
2339
+ var KdsRecapList = forwardRef36(
2340
+ ({ items, className, ...props }, ref) => /* @__PURE__ */ jsx38("ul", { ref, className: clsx("kds-recap-list", className), ...props, children: items.map((item, i) => /* @__PURE__ */ jsxs29("li", { children: [
2341
+ /* @__PURE__ */ jsx38("span", { className: "kds-key", children: item.label }),
2342
+ /* @__PURE__ */ jsx38("span", { className: clsx("kds-value", !item.value && item.placeholder && "placeholder"), children: item.value || item.placeholder || "-" })
1993
2343
  ] }, i)) })
1994
2344
  );
1995
2345
  KdsRecapList.displayName = "KdsRecapList";
2346
+
2347
+ // src/components/domain/KdsMontoRow/KdsMontoRow.tsx
2348
+ import { forwardRef as forwardRef37 } from "react";
2349
+ import { jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
2350
+ var KdsMontoRow = forwardRef37(
2351
+ ({ title, value, deadline, className, ...props }, ref) => /* @__PURE__ */ jsxs30("div", { ref, className: clsx("kds-monto-row", className), ...props, children: [
2352
+ /* @__PURE__ */ jsxs30("div", { children: [
2353
+ /* @__PURE__ */ jsx39("div", { className: "kds-monto-row-title", children: title }),
2354
+ deadline && /* @__PURE__ */ jsx39("div", { className: "kds-monto-row-deadline", children: deadline })
2355
+ ] }),
2356
+ /* @__PURE__ */ jsx39("div", { className: "kds-monto-row-value", children: value })
2357
+ ] })
2358
+ );
2359
+ KdsMontoRow.displayName = "KdsMontoRow";
2360
+
2361
+ // src/components/domain/KdsMerchantTile/KdsMerchantTile.tsx
2362
+ import { forwardRef as forwardRef38 } from "react";
2363
+ import { jsx as jsx40 } from "react/jsx-runtime";
2364
+ var KdsMerchantTile = forwardRef38(
2365
+ ({ name, logoUrl, initials, compact, className, ...props }, ref) => {
2366
+ const displayInitials = (initials ?? name.slice(0, 2)).toUpperCase();
2367
+ return /* @__PURE__ */ jsx40(
2368
+ "div",
2369
+ {
2370
+ ref,
2371
+ className: clsx("kds-merchant-tile", logoUrl && "logo", compact && "compact", className),
2372
+ "aria-label": name,
2373
+ ...props,
2374
+ children: logoUrl ? /* @__PURE__ */ jsx40("img", { src: logoUrl, alt: name }) : displayInitials
2375
+ }
2376
+ );
2377
+ }
2378
+ );
2379
+ KdsMerchantTile.displayName = "KdsMerchantTile";
2380
+
2381
+ // src/components/domain/KdsPaymentTotal/KdsPaymentTotal.tsx
2382
+ import { forwardRef as forwardRef39 } from "react";
2383
+ import { jsx as jsx41, jsxs as jsxs31 } from "react/jsx-runtime";
2384
+ var KdsPaymentTotal = forwardRef39(
2385
+ ({
2386
+ variant = "default",
2387
+ tone = "brand",
2388
+ centered = false,
2389
+ amount,
2390
+ currency = "S/",
2391
+ decimals = 2,
2392
+ locale = "es-PE",
2393
+ label = "Monto a pagar",
2394
+ title = "Escanea el QR",
2395
+ titleMobile = "Descarga el QR",
2396
+ className,
2397
+ ...props
2398
+ }, ref) => {
2399
+ const { integer, fraction } = formatAmount(amount, decimals, locale);
2400
+ const isEmail = variant === "email";
2401
+ const isInfoTone = tone === "info";
2402
+ return /* @__PURE__ */ jsxs31(
2403
+ "div",
2404
+ {
2405
+ ref,
2406
+ className: clsx(
2407
+ "kds-payment-total",
2408
+ isEmail && "kds-payment-total--email",
2409
+ isInfoTone && "kds-payment-total--tone-info",
2410
+ centered && "kds-payment-total--centered",
2411
+ className
2412
+ ),
2413
+ ...props,
2414
+ children: [
2415
+ !isEmail && title != null && /* @__PURE__ */ jsx41("h5", { className: "kds-payment-total-title", children: title }),
2416
+ !isEmail && titleMobile != null && /* @__PURE__ */ jsx41("h5", { className: "kds-payment-total-title-mobile", children: titleMobile }),
2417
+ label != null && /* @__PURE__ */ jsx41("h6", { className: "kds-payment-label", children: label }),
2418
+ /* @__PURE__ */ jsxs31("h5", { className: "kds-payment-amount", children: [
2419
+ currency,
2420
+ " ",
2421
+ integer,
2422
+ fraction !== null && /* @__PURE__ */ jsx41("sup", { className: "kds-payment-total-decimal-sup", children: fraction })
2423
+ ] })
2424
+ ]
2425
+ }
2426
+ );
2427
+ }
2428
+ );
2429
+ KdsPaymentTotal.displayName = "KdsPaymentTotal";
2430
+ function formatAmount(amount, decimals, locale) {
2431
+ const showDecimals = typeof decimals === "number" && decimals > 0;
2432
+ if (typeof amount === "number") {
2433
+ if (showDecimals) {
2434
+ const fixed = amount.toFixed(decimals);
2435
+ const [int, frac] = fixed.split(".");
2436
+ const formattedInt2 = new Intl.NumberFormat(locale, { maximumFractionDigits: 0 }).format(
2437
+ Number(int)
2438
+ );
2439
+ return { integer: formattedInt2, fraction: frac ?? null };
2440
+ }
2441
+ const formattedInt = new Intl.NumberFormat(locale, { maximumFractionDigits: 0 }).format(
2442
+ Math.trunc(amount)
2443
+ );
2444
+ return { integer: formattedInt, fraction: null };
2445
+ }
2446
+ const str = amount.trim();
2447
+ const dotIdx = str.indexOf(".");
2448
+ if (dotIdx === -1 || !showDecimals) {
2449
+ return { integer: str, fraction: null };
2450
+ }
2451
+ return {
2452
+ integer: str.slice(0, dotIdx),
2453
+ fraction: str.slice(dotIdx + 1)
2454
+ };
2455
+ }
2456
+
2457
+ // src/components/domain/KdsBillAttachment/KdsBillAttachment.tsx
2458
+ import { forwardRef as forwardRef40 } from "react";
2459
+ import { jsx as jsx42, jsxs as jsxs32 } from "react/jsx-runtime";
2460
+ var KdsBillAttachment = forwardRef40(
2461
+ ({ filename, href, icon = "attach_file", className, ...props }, ref) => /* @__PURE__ */ jsxs32(
2462
+ "a",
2463
+ {
2464
+ ref,
2465
+ href,
2466
+ target: "_blank",
2467
+ rel: "noopener noreferrer",
2468
+ className: clsx("kds-bill-attachment", className),
2469
+ ...props,
2470
+ children: [
2471
+ /* @__PURE__ */ jsx42("i", { className: "material-symbols-outlined", children: icon }),
2472
+ /* @__PURE__ */ jsx42("span", { children: filename })
2473
+ ]
2474
+ }
2475
+ )
2476
+ );
2477
+ KdsBillAttachment.displayName = "KdsBillAttachment";
2478
+ var KdsBillAttachments = forwardRef40(
2479
+ ({ children, className, ...props }, ref) => /* @__PURE__ */ jsx42("div", { ref, className: clsx("kds-bill-attachments", className), ...props, children })
2480
+ );
2481
+ KdsBillAttachments.displayName = "KdsBillAttachments";
1996
2482
  export {
1997
2483
  KdsAccordion,
1998
2484
  KdsAccordionDetails,
@@ -2001,6 +2487,8 @@ export {
2001
2487
  KdsBankList,
2002
2488
  KdsBankModal,
2003
2489
  KdsBankRow,
2490
+ KdsBillAttachment,
2491
+ KdsBillAttachments,
2004
2492
  KdsBottomSheet,
2005
2493
  KdsButton,
2006
2494
  KdsCard,
@@ -2011,6 +2499,7 @@ export {
2011
2499
  KdsCardSelector,
2012
2500
  KdsCheckbox,
2013
2501
  KdsChip,
2502
+ KdsCopyButton,
2014
2503
  KdsCopyRow,
2015
2504
  KdsCopyableTable,
2016
2505
  KdsCountdown,
@@ -2018,17 +2507,16 @@ export {
2018
2507
  KdsExpandPanel,
2019
2508
  KdsInvoiceSticky,
2020
2509
  KdsLinearProgress,
2021
- KdsLogoHeader,
2022
- KdsLogoHeaderCloseButton,
2023
- KdsLogoHeaderCode,
2024
- KdsLogoHeaderLogo,
2025
- KdsLogoHeaderSeparator,
2026
- KdsModal,
2510
+ KdsMerchantTile,
2511
+ KdsMontoRow,
2512
+ KdsPaymentTotal,
2027
2513
  KdsQrRow,
2028
2514
  KdsRadioGroup,
2029
2515
  KdsRecapList,
2516
+ KdsSearchField,
2030
2517
  KdsSectionNote,
2031
2518
  KdsSecureFooter,
2519
+ KdsSecureLoader,
2032
2520
  KdsSegmentedTabs,
2033
2521
  KdsSelect,
2034
2522
  KdsSnackbar,