@rehagro/ui 1.0.25 → 1.0.27

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.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React8 = require('react');
4
+ var React9 = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
9
- var React8__default = /*#__PURE__*/_interopDefault(React8);
9
+ var React9__default = /*#__PURE__*/_interopDefault(React9);
10
10
 
11
11
  // src/provider/RehagroProvider.tsx
12
12
 
@@ -421,7 +421,7 @@ var closeStyles = {
421
421
  "neutral-light": "rh-text-gray-500 hover:rh-text-gray-800",
422
422
  "neutral-outline": "rh-text-text-muted hover:rh-text-text"
423
423
  };
424
- var Toast = React8.forwardRef(function Toast2({
424
+ var Toast = React9.forwardRef(function Toast2({
425
425
  title,
426
426
  description,
427
427
  link,
@@ -529,9 +529,9 @@ function AnimatedToastItem({
529
529
  onRequestDismiss,
530
530
  children
531
531
  }) {
532
- const [entered, setEntered] = React8.useState(false);
533
- const leaveTimerRef = React8.useRef(null);
534
- React8.useEffect(() => {
532
+ const [entered, setEntered] = React9.useState(false);
533
+ const leaveTimerRef = React9.useRef(null);
534
+ React9.useEffect(() => {
535
535
  if (!isDismissing) return;
536
536
  leaveTimerRef.current = setTimeout(() => {
537
537
  onRemove(id);
@@ -540,10 +540,10 @@ function AnimatedToastItem({
540
540
  if (leaveTimerRef.current) clearTimeout(leaveTimerRef.current);
541
541
  };
542
542
  }, [id, isDismissing, onRemove]);
543
- const handleAnimationEnd = React8.useCallback(() => {
543
+ const handleAnimationEnd = React9.useCallback(() => {
544
544
  if (!entered) setEntered(true);
545
545
  }, [entered]);
546
- const handleClose = React8.useCallback(() => {
546
+ const handleClose = React9.useCallback(() => {
547
547
  onRequestDismiss(id);
548
548
  }, [id, onRequestDismiss]);
549
549
  const animClass = isDismissing ? leaveClass[animDir] : entered ? "" : enterClass[animDir];
@@ -589,15 +589,15 @@ function ToastContainer() {
589
589
  }
590
590
  );
591
591
  }
592
- var ToastContext = React8.createContext(null);
592
+ var ToastContext = React9.createContext(null);
593
593
  function ToastProvider({
594
594
  children,
595
595
  position = "top-right"
596
596
  }) {
597
- const [toasts, setToasts] = React8.useState([]);
598
- const [dismissingIds, setDismissingIds] = React8.useState(/* @__PURE__ */ new Set());
599
- const counterRef = React8.useRef(0);
600
- const remove = React8.useCallback((id) => {
597
+ const [toasts, setToasts] = React9.useState([]);
598
+ const [dismissingIds, setDismissingIds] = React9.useState(/* @__PURE__ */ new Set());
599
+ const counterRef = React9.useRef(0);
600
+ const remove = React9.useCallback((id) => {
601
601
  setToasts((prev) => prev.filter((t) => t.id !== id));
602
602
  setDismissingIds((prev) => {
603
603
  const next = new Set(prev);
@@ -605,10 +605,10 @@ function ToastProvider({
605
605
  return next;
606
606
  });
607
607
  }, []);
608
- const requestDismiss = React8.useCallback((id) => {
608
+ const requestDismiss = React9.useCallback((id) => {
609
609
  setDismissingIds((prev) => new Set(prev).add(id));
610
610
  }, []);
611
- const add = React8.useCallback(
611
+ const add = React9.useCallback(
612
612
  (item) => {
613
613
  const id = `rh-toast-${++counterRef.current}`;
614
614
  const toast = { ...item, id };
@@ -626,7 +626,7 @@ function ToastProvider({
626
626
  ] });
627
627
  }
628
628
  function useToastContext() {
629
- const ctx = React8.useContext(ToastContext);
629
+ const ctx = React9.useContext(ToastContext);
630
630
  if (!ctx) {
631
631
  throw new Error("useToastContext must be used inside ToastProvider");
632
632
  }
@@ -634,7 +634,7 @@ function useToastContext() {
634
634
  }
635
635
  function useToast() {
636
636
  const { add, requestDismiss } = useToastContext();
637
- const createToast = React8.useCallback(
637
+ const createToast = React9.useCallback(
638
638
  (variant) => (title, options = {}) => {
639
639
  return add({
640
640
  title,
@@ -647,7 +647,7 @@ function useToast() {
647
647
  },
648
648
  [add]
649
649
  );
650
- const toast = React8.useCallback(
650
+ const toast = React9.useCallback(
651
651
  (title, options = {}) => {
652
652
  return add({
653
653
  title,
@@ -690,7 +690,7 @@ function toRgbTriplet(value) {
690
690
  return void 0;
691
691
  }
692
692
  function RehagroProvider({ theme, toastPosition, children }) {
693
- const style = React8.useMemo(() => {
693
+ const style = React9.useMemo(() => {
694
694
  if (!theme) return void 0;
695
695
  const vars = {};
696
696
  for (const [key, config] of Object.entries(TOKEN_MAP)) {
@@ -746,12 +746,12 @@ var variantColorClasses = {
746
746
  info: "rh-bg-info rh-text-surface rh-border-info hover:rh-bg-info-hover hover:rh-border-info-hover"
747
747
  },
748
748
  outline: {
749
- primary: "rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface",
750
- secondary: "rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary hover:rh-text-surface",
751
- danger: "rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger hover:rh-text-surface",
752
- warning: "rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning hover:rh-text-surface",
753
- success: "rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success hover:rh-text-surface",
754
- info: "rh-bg-transparent rh-text-info rh-border-info hover:rh-bg-info hover:rh-text-surface"
749
+ primary: "rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary/[0.16]",
750
+ secondary: "rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary/[0.16]",
751
+ danger: "rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger/[0.16]",
752
+ warning: "rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning/[0.16]",
753
+ success: "rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success/[0.16]",
754
+ info: "rh-bg-transparent rh-text-info rh-border-info hover:rh-bg-info/[0.16]"
755
755
  },
756
756
  ghost: {
757
757
  primary: "rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10",
@@ -782,7 +782,7 @@ var radiusClasses = {
782
782
  xl: "rh-rounded-xl",
783
783
  full: "rh-rounded-full"
784
784
  };
785
- var Button = React8.forwardRef(function Button2({
785
+ var Button = React9.forwardRef(function Button2({
786
786
  variant = "solid",
787
787
  size = "md",
788
788
  radius = "sm",
@@ -798,9 +798,9 @@ var Button = React8.forwardRef(function Button2({
798
798
  children,
799
799
  ...rest
800
800
  }, ref) {
801
- const isDisabled = React8__default.default.useMemo(() => disabled || loading, [disabled, loading]);
801
+ const isDisabled = React9__default.default.useMemo(() => disabled || loading, [disabled, loading]);
802
802
  const preset = isPresetColor(color);
803
- const computedStyle = React8__default.default.useMemo(() => {
803
+ const computedStyle = React9__default.default.useMemo(() => {
804
804
  const baseStyle = preset ? hoverColor ? { [`--rh-${color}-hover`]: toRgbTriplet2(hoverColor) ?? hoverColor } : {} : getArbitraryColorStyle(variant, color);
805
805
  const hoverVars = hoverStyle ? {
806
806
  "--btn-hover-bg": hoverStyle.backgroundColor,
@@ -925,7 +925,7 @@ var radiusClasses2 = {
925
925
  xl: "rh-rounded-xl",
926
926
  full: "rh-rounded-full"
927
927
  };
928
- var IconButton = React8.forwardRef(function IconButton2({
928
+ var IconButton = React9.forwardRef(function IconButton2({
929
929
  variant = "ghost",
930
930
  size = "md",
931
931
  radius = "full",
@@ -939,7 +939,7 @@ var IconButton = React8.forwardRef(function IconButton2({
939
939
  }, ref) {
940
940
  const isDisabled = disabled || loading;
941
941
  const preset = isPresetColor2(color);
942
- const computedStyle = React8__default.default.useMemo(
942
+ const computedStyle = React9__default.default.useMemo(
943
943
  () => preset ? style ?? {} : { ...style, ...getArbitraryColorStyle2(variant, color) },
944
944
  [preset, color, variant, style]
945
945
  );
@@ -1030,7 +1030,7 @@ var labelWeightClasses = {
1030
1030
  semibold: "rh-font-semibold",
1031
1031
  bold: "rh-font-bold"
1032
1032
  };
1033
- var TextInput = React8.forwardRef(function TextInput2({
1033
+ var TextInput = React9.forwardRef(function TextInput2({
1034
1034
  label,
1035
1035
  labelWeight = "medium",
1036
1036
  subtitle,
@@ -1046,7 +1046,7 @@ var TextInput = React8.forwardRef(function TextInput2({
1046
1046
  id,
1047
1047
  ...rest
1048
1048
  }, ref) {
1049
- const inputId = id || React8__default.default.useId();
1049
+ const inputId = id || React9__default.default.useId();
1050
1050
  return /* @__PURE__ */ jsxRuntime.jsxs(
1051
1051
  "div",
1052
1052
  {
@@ -1063,6 +1063,7 @@ var TextInput = React8.forwardRef(function TextInput2({
1063
1063
  "rh-flex rh-items-center rh-gap-2",
1064
1064
  "rh-border rh-bg-surface rh-font-body",
1065
1065
  "rh-transition-colors rh-duration-150",
1066
+ "rh-overflow-hidden",
1066
1067
  statusClasses[status],
1067
1068
  radiusClasses3[radius],
1068
1069
  sizeClasses3[size],
@@ -1090,7 +1091,7 @@ var TextInput = React8.forwardRef(function TextInput2({
1090
1091
  "aria-invalid": status === "error" || void 0,
1091
1092
  "aria-describedby": helperText ? `${inputId}-helper` : void 0,
1092
1093
  className: [
1093
- "rh-flex-1 rh-bg-transparent rh-outline-none",
1094
+ "rh-flex-1 rh-min-w-0 rh-bg-transparent rh-outline-none",
1094
1095
  "rh-text-text placeholder:rh-text-text-muted",
1095
1096
  disabled ? "rh-cursor-not-allowed" : ""
1096
1097
  ].filter(Boolean).join(" "),
@@ -1175,7 +1176,7 @@ var MinusIcon = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx(
1175
1176
  children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 1H9", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })
1176
1177
  }
1177
1178
  );
1178
- var Checkbox = React8.forwardRef(function Checkbox2({
1179
+ var Checkbox = React9.forwardRef(function Checkbox2({
1179
1180
  size = "md",
1180
1181
  label,
1181
1182
  indeterminate = false,
@@ -1187,10 +1188,10 @@ var Checkbox = React8.forwardRef(function Checkbox2({
1187
1188
  onChange,
1188
1189
  ...rest
1189
1190
  }, ref) {
1190
- const innerRef = React8__default.default.useRef(null);
1191
- const inputId = id || React8__default.default.useId();
1192
- React8__default.default.useImperativeHandle(ref, () => innerRef.current);
1193
- React8__default.default.useEffect(() => {
1191
+ const innerRef = React9__default.default.useRef(null);
1192
+ const inputId = id || React9__default.default.useId();
1193
+ React9__default.default.useImperativeHandle(ref, () => innerRef.current);
1194
+ React9__default.default.useEffect(() => {
1194
1195
  if (innerRef.current) {
1195
1196
  innerRef.current.indeterminate = indeterminate;
1196
1197
  }
@@ -1245,6 +1246,177 @@ var Checkbox = React8.forwardRef(function Checkbox2({
1245
1246
  }
1246
1247
  );
1247
1248
  });
1249
+ var RadioGroupContext = React9.createContext(null);
1250
+ var useRadioGroup = () => React9.useContext(RadioGroupContext);
1251
+ var labelSizeClasses2 = {
1252
+ sm: "rh-text-sm",
1253
+ md: "rh-text-sm",
1254
+ lg: "rh-text-base"
1255
+ };
1256
+ var descriptionSizeClasses = {
1257
+ sm: "rh-text-xs",
1258
+ md: "rh-text-xs",
1259
+ lg: "rh-text-sm"
1260
+ };
1261
+ var gapClasses = {
1262
+ sm: "rh-gap-2",
1263
+ md: "rh-gap-3",
1264
+ lg: "rh-gap-4"
1265
+ };
1266
+ var PRESET_COLORS3 = /* @__PURE__ */ new Set([
1267
+ "primary",
1268
+ "secondary",
1269
+ "danger",
1270
+ "warning",
1271
+ "success",
1272
+ "info"
1273
+ ]);
1274
+ var isPresetColor3 = (color) => PRESET_COLORS3.has(color);
1275
+ var inputSizeClasses = {
1276
+ sm: "rh-w-4 rh-h-4",
1277
+ md: "rh-w-5 rh-h-5",
1278
+ lg: "rh-w-6 rh-h-6"
1279
+ };
1280
+ var Radio = React9.forwardRef(function Radio2({
1281
+ size = "md",
1282
+ label,
1283
+ description,
1284
+ color = "primary",
1285
+ disabled,
1286
+ checked,
1287
+ defaultChecked,
1288
+ className = "",
1289
+ id,
1290
+ onChange,
1291
+ ...rest
1292
+ }, ref) {
1293
+ const inputId = id || React9__default.default.useId();
1294
+ const getAccentColor = () => {
1295
+ if (isPresetColor3(color)) {
1296
+ return `rgb(var(--rh-${color}))`;
1297
+ }
1298
+ return color;
1299
+ };
1300
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1301
+ "label",
1302
+ {
1303
+ htmlFor: inputId,
1304
+ className: [
1305
+ "rh-inline-flex rh-items-start rh-gap-2 rh-font-body rh-select-none",
1306
+ disabled ? "rh-cursor-not-allowed rh-opacity-50" : "rh-cursor-pointer",
1307
+ className
1308
+ ].filter(Boolean).join(" "),
1309
+ children: [
1310
+ /* @__PURE__ */ jsxRuntime.jsx(
1311
+ "input",
1312
+ {
1313
+ ref,
1314
+ id: inputId,
1315
+ type: "radio",
1316
+ disabled,
1317
+ checked,
1318
+ defaultChecked,
1319
+ onChange,
1320
+ className: [
1321
+ inputSizeClasses[size],
1322
+ "rh-accent-current rh-cursor-pointer",
1323
+ disabled ? "rh-cursor-not-allowed" : ""
1324
+ ].filter(Boolean).join(" "),
1325
+ style: { accentColor: getAccentColor() },
1326
+ ...rest
1327
+ }
1328
+ ),
1329
+ (label || description) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "rh-flex rh-flex-col", children: [
1330
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: ["rh-text-text", labelSizeClasses2[size]].join(" "), children: label }),
1331
+ description && /* @__PURE__ */ jsxRuntime.jsx(
1332
+ "span",
1333
+ {
1334
+ className: [
1335
+ "rh-text-text-muted",
1336
+ descriptionSizeClasses[size]
1337
+ ].join(" "),
1338
+ children: description
1339
+ }
1340
+ )
1341
+ ] })
1342
+ ]
1343
+ }
1344
+ );
1345
+ });
1346
+ var RadioOption = React9.forwardRef(function RadioOption2({ value, size, color, disabled, ...rest }, ref) {
1347
+ const group = useRadioGroup();
1348
+ const mergedSize = size ?? group?.size ?? "md";
1349
+ const mergedColor = color ?? group?.color ?? "primary";
1350
+ const mergedDisabled = disabled ?? group?.disabled ?? false;
1351
+ const isChecked = group?.value === value;
1352
+ const handleChange = () => {
1353
+ group?.onChange?.(value);
1354
+ };
1355
+ return /* @__PURE__ */ jsxRuntime.jsx(
1356
+ Radio,
1357
+ {
1358
+ ref,
1359
+ name: group?.name,
1360
+ value,
1361
+ size: mergedSize,
1362
+ color: mergedColor,
1363
+ disabled: mergedDisabled,
1364
+ checked: isChecked,
1365
+ onChange: handleChange,
1366
+ ...rest
1367
+ }
1368
+ );
1369
+ });
1370
+ var RadioGroup = React9.forwardRef(function RadioGroup2({
1371
+ children,
1372
+ value,
1373
+ defaultValue,
1374
+ onChange,
1375
+ size = "md",
1376
+ orientation = "vertical",
1377
+ color = "primary",
1378
+ disabled = false,
1379
+ name,
1380
+ gap = "md",
1381
+ className = "",
1382
+ ...rest
1383
+ }, ref) {
1384
+ const [internalValue, setInternalValue] = React9__default.default.useState(defaultValue);
1385
+ const groupName = name || React9__default.default.useId();
1386
+ const currentValue = value ?? internalValue;
1387
+ const handleChange = (newValue) => {
1388
+ setInternalValue(newValue);
1389
+ onChange?.(newValue);
1390
+ };
1391
+ return /* @__PURE__ */ jsxRuntime.jsx(
1392
+ RadioGroupContext.Provider,
1393
+ {
1394
+ value: {
1395
+ name: groupName,
1396
+ value: currentValue,
1397
+ onChange: handleChange,
1398
+ size,
1399
+ color,
1400
+ disabled
1401
+ },
1402
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1403
+ "div",
1404
+ {
1405
+ ref,
1406
+ role: "radiogroup",
1407
+ className: [
1408
+ "rh-flex",
1409
+ orientation === "vertical" ? "rh-flex-col" : "rh-flex-row rh-flex-wrap",
1410
+ gapClasses[gap],
1411
+ className
1412
+ ].filter(Boolean).join(" "),
1413
+ ...rest,
1414
+ children
1415
+ }
1416
+ )
1417
+ }
1418
+ );
1419
+ });
1248
1420
  var statusClasses2 = {
1249
1421
  default: "rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2",
1250
1422
  error: "rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2"
@@ -1321,7 +1493,7 @@ var CheckIcon2 = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx(
1321
1493
  )
1322
1494
  }
1323
1495
  );
1324
- var Select = React8.forwardRef(function Select2(props, ref) {
1496
+ var Select = React9.forwardRef(function Select2(props, ref) {
1325
1497
  const {
1326
1498
  options,
1327
1499
  label,
@@ -1336,16 +1508,16 @@ var Select = React8.forwardRef(function Select2(props, ref) {
1336
1508
  wrapperClassName = "",
1337
1509
  multiple = false
1338
1510
  } = props;
1339
- const triggerId = React8__default.default.useId();
1340
- const listboxId = React8__default.default.useId();
1341
- const helperId = React8__default.default.useId();
1342
- const [isOpen, setIsOpen] = React8__default.default.useState(false);
1343
- const [activeIndex, setActiveIndex] = React8__default.default.useState(-1);
1344
- const wrapperRef = React8__default.default.useRef(null);
1345
- const innerRef = React8__default.default.useRef(null);
1346
- const listboxRef = React8__default.default.useRef(null);
1347
- React8__default.default.useImperativeHandle(ref, () => innerRef.current);
1348
- const [internalValue, setInternalValue] = React8__default.default.useState(() => {
1511
+ const triggerId = React9__default.default.useId();
1512
+ const listboxId = React9__default.default.useId();
1513
+ const helperId = React9__default.default.useId();
1514
+ const [isOpen, setIsOpen] = React9__default.default.useState(false);
1515
+ const [activeIndex, setActiveIndex] = React9__default.default.useState(-1);
1516
+ const wrapperRef = React9__default.default.useRef(null);
1517
+ const innerRef = React9__default.default.useRef(null);
1518
+ const listboxRef = React9__default.default.useRef(null);
1519
+ React9__default.default.useImperativeHandle(ref, () => innerRef.current);
1520
+ const [internalValue, setInternalValue] = React9__default.default.useState(() => {
1349
1521
  if (props.defaultValue !== void 0) {
1350
1522
  return Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue];
1351
1523
  }
@@ -1367,7 +1539,7 @@ var Select = React8.forwardRef(function Select2(props, ref) {
1367
1539
  innerRef.current?.focus();
1368
1540
  }
1369
1541
  };
1370
- const displayText = React8__default.default.useMemo(() => {
1542
+ const displayText = React9__default.default.useMemo(() => {
1371
1543
  if (selectedValues.length === 0) return null;
1372
1544
  if (!multiple) {
1373
1545
  return options.find((o) => o.value === selectedValues[0])?.label ?? null;
@@ -1377,7 +1549,7 @@ var Select = React8.forwardRef(function Select2(props, ref) {
1377
1549
  if (selectedLabels.length === 1) return selectedLabels[0];
1378
1550
  return `${selectedLabels.length} selected`;
1379
1551
  }, [selectedValues, options, multiple]);
1380
- React8__default.default.useEffect(() => {
1552
+ React9__default.default.useEffect(() => {
1381
1553
  if (!isOpen) return;
1382
1554
  const handleClickOutside = (e) => {
1383
1555
  if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {
@@ -1387,7 +1559,7 @@ var Select = React8.forwardRef(function Select2(props, ref) {
1387
1559
  document.addEventListener("mousedown", handleClickOutside);
1388
1560
  return () => document.removeEventListener("mousedown", handleClickOutside);
1389
1561
  }, [isOpen]);
1390
- React8__default.default.useEffect(() => {
1562
+ React9__default.default.useEffect(() => {
1391
1563
  if (!isOpen) return;
1392
1564
  const handleEscape = (e) => {
1393
1565
  if (e.key === "Escape") {
@@ -1398,7 +1570,7 @@ var Select = React8.forwardRef(function Select2(props, ref) {
1398
1570
  document.addEventListener("keydown", handleEscape);
1399
1571
  return () => document.removeEventListener("keydown", handleEscape);
1400
1572
  }, [isOpen]);
1401
- React8__default.default.useEffect(() => {
1573
+ React9__default.default.useEffect(() => {
1402
1574
  if (!isOpen || activeIndex < 0) return;
1403
1575
  const listbox = listboxRef.current;
1404
1576
  if (!listbox) return;
@@ -1407,7 +1579,7 @@ var Select = React8.forwardRef(function Select2(props, ref) {
1407
1579
  activeEl.scrollIntoView({ block: "nearest" });
1408
1580
  }
1409
1581
  }, [activeIndex, isOpen]);
1410
- React8__default.default.useEffect(() => {
1582
+ React9__default.default.useEffect(() => {
1411
1583
  if (isOpen) {
1412
1584
  const firstSelectedIdx = options.findIndex(
1413
1585
  (o) => !o.disabled && selectedValues.includes(o.value)
@@ -1667,7 +1839,7 @@ var arrowPlacementClasses = {
1667
1839
  "right-start": "rh-left-0 rh-top-3 rh--translate-x-1/2 rh-rotate-45",
1668
1840
  "right-end": "rh-left-0 rh-bottom-3 rh--translate-x-1/2 rh-rotate-45"
1669
1841
  };
1670
- var Tooltip = React8.forwardRef(
1842
+ var Tooltip = React9.forwardRef(
1671
1843
  function Tooltip2({
1672
1844
  title,
1673
1845
  description,
@@ -1683,12 +1855,12 @@ var Tooltip = React8.forwardRef(
1683
1855
  children,
1684
1856
  className = ""
1685
1857
  }, ref) {
1686
- const [internalOpen, setInternalOpen] = React8.useState(false);
1687
- const enterTimerRef = React8.useRef(null);
1688
- const leaveTimerRef = React8.useRef(null);
1858
+ const [internalOpen, setInternalOpen] = React9.useState(false);
1859
+ const enterTimerRef = React9.useRef(null);
1860
+ const leaveTimerRef = React9.useRef(null);
1689
1861
  const isControlled = controlledOpen !== void 0;
1690
1862
  const isOpen = isControlled ? controlledOpen : internalOpen;
1691
- const setOpen = React8.useCallback(
1863
+ const setOpen = React9.useCallback(
1692
1864
  (value) => {
1693
1865
  if (!isControlled) {
1694
1866
  setInternalOpen(value);
@@ -1697,7 +1869,7 @@ var Tooltip = React8.forwardRef(
1697
1869
  },
1698
1870
  [isControlled, onOpenChange]
1699
1871
  );
1700
- const clearTimers = React8.useCallback(() => {
1872
+ const clearTimers = React9.useCallback(() => {
1701
1873
  if (enterTimerRef.current) {
1702
1874
  clearTimeout(enterTimerRef.current);
1703
1875
  enterTimerRef.current = null;
@@ -1707,27 +1879,27 @@ var Tooltip = React8.forwardRef(
1707
1879
  leaveTimerRef.current = null;
1708
1880
  }
1709
1881
  }, []);
1710
- const handleEnter = React8.useCallback(() => {
1882
+ const handleEnter = React9.useCallback(() => {
1711
1883
  clearTimers();
1712
1884
  enterTimerRef.current = setTimeout(() => {
1713
1885
  setOpen(true);
1714
1886
  }, enterDelay);
1715
1887
  }, [clearTimers, enterDelay, setOpen]);
1716
- const handleLeave = React8.useCallback(() => {
1888
+ const handleLeave = React9.useCallback(() => {
1717
1889
  clearTimers();
1718
1890
  leaveTimerRef.current = setTimeout(() => {
1719
1891
  setOpen(false);
1720
1892
  }, leaveDelay);
1721
1893
  }, [clearTimers, leaveDelay, setOpen]);
1722
- const handleClose = React8.useCallback(() => {
1894
+ const handleClose = React9.useCallback(() => {
1723
1895
  clearTimers();
1724
1896
  setOpen(false);
1725
1897
  }, [clearTimers, setOpen]);
1726
- React8.useEffect(() => {
1898
+ React9.useEffect(() => {
1727
1899
  return () => clearTimers();
1728
1900
  }, [clearTimers]);
1729
- const triggerChild = React8__default.default.Children.only(children);
1730
- const triggerElement = React8__default.default.cloneElement(triggerChild, {
1901
+ const triggerChild = React9__default.default.Children.only(children);
1902
+ const triggerElement = React9__default.default.cloneElement(triggerChild, {
1731
1903
  onMouseEnter: (e) => {
1732
1904
  handleEnter();
1733
1905
  triggerChild.props.onMouseEnter?.(e);
@@ -1883,10 +2055,10 @@ var variantClasses2 = {
1883
2055
  circle: "rh-rounded-full",
1884
2056
  square: "rh-rounded-sm"
1885
2057
  };
1886
- var Avatar = React8.forwardRef(function Avatar2({ src, alt = "", initials, size = "md", variant = "circle", colorFromName = false, className = "", style, ...rest }, ref) {
1887
- const [imgError, setImgError] = React8.useState(false);
2058
+ var Avatar = React9.forwardRef(function Avatar2({ src, alt = "", initials, size = "md", variant = "circle", colorFromName = false, className = "", style, ...rest }, ref) {
2059
+ const [imgError, setImgError] = React9.useState(false);
1888
2060
  const showImage = src && !imgError;
1889
- const avatarColors = React8.useMemo(() => {
2061
+ const avatarColors = React9.useMemo(() => {
1890
2062
  if (!colorFromName) return null;
1891
2063
  const name = initials || alt || "";
1892
2064
  return name ? getAvatarColors(name) : null;
@@ -1923,7 +2095,7 @@ var Avatar = React8.forwardRef(function Avatar2({ src, alt = "", initials, size
1923
2095
  }
1924
2096
  );
1925
2097
  });
1926
- var PRESET_COLORS3 = /* @__PURE__ */ new Set([
2098
+ var PRESET_COLORS4 = /* @__PURE__ */ new Set([
1927
2099
  "primary",
1928
2100
  "secondary",
1929
2101
  "danger",
@@ -1931,7 +2103,7 @@ var PRESET_COLORS3 = /* @__PURE__ */ new Set([
1931
2103
  "success",
1932
2104
  "info"
1933
2105
  ]);
1934
- var isPresetColor3 = (color) => PRESET_COLORS3.has(color);
2106
+ var isPresetColor4 = (color) => PRESET_COLORS4.has(color);
1935
2107
  var activePresetClasses = {
1936
2108
  primary: "rh-bg-primary rh-text-surface rh-border-primary",
1937
2109
  secondary: "rh-bg-secondary rh-text-surface rh-border-secondary",
@@ -1979,7 +2151,7 @@ function getCustomColorStyles(color, active) {
1979
2151
  color
1980
2152
  };
1981
2153
  }
1982
- var Tag = React8.forwardRef(function Tag2({
2154
+ var Tag = React9.forwardRef(function Tag2({
1983
2155
  color = "primary",
1984
2156
  size = "md",
1985
2157
  active = false,
@@ -1992,7 +2164,7 @@ var Tag = React8.forwardRef(function Tag2({
1992
2164
  children,
1993
2165
  ...rest
1994
2166
  }, ref) {
1995
- const preset = isPresetColor3(color);
2167
+ const preset = isPresetColor4(color);
1996
2168
  const clickable = !!rest.onClick && !disabled;
1997
2169
  const colorClasses3 = preset ? active ? activePresetClasses[color] : inactivePresetClasses[color] : "";
1998
2170
  const hoverClasses = clickable && preset ? active ? hoverActivePresetClasses[color] : hoverInactivePresetClasses[color] : clickable ? "hover:rh-brightness-95" : "";
@@ -2066,7 +2238,7 @@ var addButtonSizeClasses = {
2066
2238
  md: "rh-w-5 rh-h-5",
2067
2239
  lg: "rh-w-5 rh-h-5"
2068
2240
  };
2069
- var TagInput = React8.forwardRef(function TagInput2({
2241
+ var TagInput = React9.forwardRef(function TagInput2({
2070
2242
  label,
2071
2243
  subtitle,
2072
2244
  options = [],
@@ -2081,10 +2253,10 @@ var TagInput = React8.forwardRef(function TagInput2({
2081
2253
  className = "",
2082
2254
  wrapperClassName = ""
2083
2255
  }, ref) {
2084
- const inputId = React8__default.default.useId();
2085
- const [isOpen, setIsOpen] = React8.useState(false);
2086
- const containerRef = React8.useRef(null);
2087
- React8.useEffect(() => {
2256
+ const inputId = React9__default.default.useId();
2257
+ const [isOpen, setIsOpen] = React9.useState(false);
2258
+ const containerRef = React9.useRef(null);
2259
+ React9.useEffect(() => {
2088
2260
  const handleClickOutside = (event) => {
2089
2261
  if (containerRef.current && !containerRef.current.contains(event.target)) {
2090
2262
  setIsOpen(false);
@@ -2306,7 +2478,7 @@ var TagInput = React8.forwardRef(function TagInput2({
2306
2478
  }
2307
2479
  );
2308
2480
  });
2309
- var ProgressBar = React8.forwardRef(function ProgressBar2({ value, label, size = "sm", showPercentage = true, barColor, bgColor, className = "" }, ref) {
2481
+ var ProgressBar = React9.forwardRef(function ProgressBar2({ value, label, size = "sm", showPercentage = true, barColor, bgColor, className = "" }, ref) {
2310
2482
  const clampedValue = Math.min(100, Math.max(0, value));
2311
2483
  if (size === "lg") {
2312
2484
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2374,7 +2546,7 @@ var ProgressBar = React8.forwardRef(function ProgressBar2({ value, label, size =
2374
2546
  }
2375
2547
  );
2376
2548
  });
2377
- var PRESET_COLORS4 = /* @__PURE__ */ new Set([
2549
+ var PRESET_COLORS5 = /* @__PURE__ */ new Set([
2378
2550
  "primary",
2379
2551
  "secondary",
2380
2552
  "danger",
@@ -2382,7 +2554,7 @@ var PRESET_COLORS4 = /* @__PURE__ */ new Set([
2382
2554
  "success",
2383
2555
  "info"
2384
2556
  ]);
2385
- var isPresetColor4 = (color) => PRESET_COLORS4.has(color);
2557
+ var isPresetColor5 = (color) => PRESET_COLORS5.has(color);
2386
2558
  var sizeClasses10 = {
2387
2559
  sm: { container: "rh-h-8", button: "rh-px-2 rh-text-xs" },
2388
2560
  md: { container: "rh-h-9", button: "rh-px-3 rh-text-sm" },
@@ -2412,7 +2584,7 @@ function ToggleGroupInner({
2412
2584
  className = "",
2413
2585
  ...rest
2414
2586
  }, ref) {
2415
- const preset = isPresetColor4(color);
2587
+ const preset = isPresetColor5(color);
2416
2588
  return /* @__PURE__ */ jsxRuntime.jsx(
2417
2589
  "div",
2418
2590
  {
@@ -2462,7 +2634,7 @@ function ToggleGroupInner({
2462
2634
  }
2463
2635
  );
2464
2636
  }
2465
- var ToggleGroup = React8.forwardRef(ToggleGroupInner);
2637
+ var ToggleGroup = React9.forwardRef(ToggleGroupInner);
2466
2638
  var variantClasses3 = {
2467
2639
  elevated: "rh-bg-surface rh-shadow-md rh-border-0",
2468
2640
  outlined: "rh-bg-surface rh-border rh-border-border rh-shadow-none",
@@ -2482,7 +2654,7 @@ var paddingClasses = {
2482
2654
  md: "rh-p-4",
2483
2655
  lg: "rh-p-6"
2484
2656
  };
2485
- var Card = React8.forwardRef(function Card2({
2657
+ var Card = React9.forwardRef(function Card2({
2486
2658
  variant = "outlined",
2487
2659
  radius = "sm",
2488
2660
  padding = "md",
@@ -2514,7 +2686,7 @@ var Card = React8.forwardRef(function Card2({
2514
2686
  }
2515
2687
  );
2516
2688
  });
2517
- var CardHeader = React8.forwardRef(function CardHeader2({ className = "", children, ...rest }, ref) {
2689
+ var CardHeader = React9.forwardRef(function CardHeader2({ className = "", children, ...rest }, ref) {
2518
2690
  return /* @__PURE__ */ jsxRuntime.jsx(
2519
2691
  "div",
2520
2692
  {
@@ -2525,10 +2697,10 @@ var CardHeader = React8.forwardRef(function CardHeader2({ className = "", childr
2525
2697
  }
2526
2698
  );
2527
2699
  });
2528
- var CardContent = React8.forwardRef(function CardContent2({ className = "", children, ...rest }, ref) {
2700
+ var CardContent = React9.forwardRef(function CardContent2({ className = "", children, ...rest }, ref) {
2529
2701
  return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: ["rh-mt-2", className].filter(Boolean).join(" "), ...rest, children });
2530
2702
  });
2531
- var CardFooter = React8.forwardRef(function CardFooter2({ className = "", children, ...rest }, ref) {
2703
+ var CardFooter = React9.forwardRef(function CardFooter2({ className = "", children, ...rest }, ref) {
2532
2704
  return /* @__PURE__ */ jsxRuntime.jsx(
2533
2705
  "div",
2534
2706
  {
@@ -2542,7 +2714,7 @@ var CardFooter = React8.forwardRef(function CardFooter2({ className = "", childr
2542
2714
  }
2543
2715
  );
2544
2716
  });
2545
- var PRESET_COLORS5 = /* @__PURE__ */ new Set([
2717
+ var PRESET_COLORS6 = /* @__PURE__ */ new Set([
2546
2718
  "primary",
2547
2719
  "secondary",
2548
2720
  "danger",
@@ -2550,7 +2722,7 @@ var PRESET_COLORS5 = /* @__PURE__ */ new Set([
2550
2722
  "success",
2551
2723
  "info"
2552
2724
  ]);
2553
- var isPresetColor5 = (color) => PRESET_COLORS5.has(color);
2725
+ var isPresetColor6 = (color) => PRESET_COLORS6.has(color);
2554
2726
  var sizeClasses11 = {
2555
2727
  xs: "rh-w-3 rh-h-3",
2556
2728
  sm: "rh-w-4 rh-h-4",
@@ -2566,8 +2738,8 @@ var colorClasses = {
2566
2738
  success: "rh-text-success",
2567
2739
  info: "rh-text-info"
2568
2740
  };
2569
- var Spinner = React8.forwardRef(function Spinner2({ size = "md", color = "primary", label = "Carregando...", className = "", style, ...rest }, ref) {
2570
- const preset = isPresetColor5(color);
2741
+ var Spinner = React9.forwardRef(function Spinner2({ size = "md", color = "primary", label = "Carregando...", className = "", style, ...rest }, ref) {
2742
+ const preset = isPresetColor6(color);
2571
2743
  const colorClass = preset ? colorClasses[color] : "";
2572
2744
  const customStyle = preset ? style : { ...style, color };
2573
2745
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2776,7 +2948,7 @@ function TableInner({
2776
2948
  }
2777
2949
  ) });
2778
2950
  }
2779
- var Table = React8.forwardRef(TableInner);
2951
+ var Table = React9.forwardRef(TableInner);
2780
2952
  var defaultElements = {
2781
2953
  h1: "h1",
2782
2954
  h2: "h2",
@@ -2786,66 +2958,105 @@ var defaultElements = {
2786
2958
  h6: "h6",
2787
2959
  bodyLg: "p",
2788
2960
  body: "p",
2961
+ bodySm: "p",
2789
2962
  label: "span",
2790
2963
  labelSm: "span",
2964
+ labelLg: "span",
2965
+ formLabel: "label",
2966
+ formText: "span",
2967
+ formHelper: "span",
2968
+ sectionTitle: "h3",
2969
+ modalTitle: "h2",
2791
2970
  caption: "span",
2792
2971
  captionSm: "span",
2793
2972
  menu: "span",
2794
- overline: "span"
2973
+ overline: "span",
2974
+ link: "span"
2795
2975
  };
2796
2976
  var variantClasses4 = {
2797
2977
  // Headings - Sora font
2798
2978
  h1: "rh-text-4xl rh-font-bold rh-leading-tight rh-font-display",
2799
- // 32px
2979
+ // 36px Sora Bold
2800
2980
  h2: "rh-text-2xl rh-font-bold rh-leading-snug rh-font-display",
2801
- // 24px
2981
+ // 24px Sora Bold
2802
2982
  h3: "rh-text-xl rh-font-semibold rh-leading-snug rh-font-display",
2803
- // 20px
2983
+ // 20px Sora SemiBold
2804
2984
  h4: "rh-text-lg rh-font-semibold rh-leading-snug rh-font-display",
2805
- // 18px
2985
+ // 18px Sora SemiBold
2806
2986
  h5: "rh-text-base rh-font-bold rh-leading-normal rh-font-display",
2807
2987
  // 16px Sora Bold
2808
2988
  h6: "rh-text-sm rh-font-bold rh-leading-normal rh-font-display",
2809
2989
  // 14px Sora Bold
2810
2990
  // Body - Inter font
2811
2991
  bodyLg: "rh-text-base rh-font-normal rh-leading-normal rh-font-body",
2812
- // 16px
2992
+ // 16px Inter
2813
2993
  body: "rh-text-sm rh-font-normal rh-leading-normal rh-font-body",
2814
- // 14px
2994
+ // 14px Inter
2995
+ bodySm: "rh-text-xs rh-font-normal rh-leading-normal rh-font-body",
2996
+ // 12px Inter
2815
2997
  // Labels - Inter font
2816
2998
  label: "rh-text-sm rh-font-medium rh-leading-normal rh-font-body",
2817
- // 14px Medium
2818
- labelSm: "rh-text-sm rh-font-semibold rh-leading-normal rh-font-body",
2819
- // 14px SemiBold
2999
+ // 14px Inter Medium
3000
+ labelSm: "rh-text-xs rh-font-medium rh-leading-normal rh-font-body",
3001
+ // 12px Inter Medium
3002
+ labelLg: "rh-text-base rh-font-medium rh-leading-normal rh-font-body",
3003
+ // 16px Inter Medium
3004
+ // Form specific - Inter font (mais usados no projeto)
3005
+ formLabel: "rh-text-sm rh-font-semibold rh-leading-normal rh-font-body",
3006
+ // 14px Inter SemiBold
3007
+ formText: "rh-text-sm rh-font-normal rh-leading-normal rh-font-body",
3008
+ // 14px Inter Normal
3009
+ formHelper: "rh-text-xs rh-font-normal rh-leading-normal rh-font-body",
3010
+ // 12px Inter Normal
3011
+ // Section titles - Inter font
3012
+ sectionTitle: "rh-text-base rh-font-semibold rh-leading-normal rh-font-body",
3013
+ // 16px Inter SemiBold (Dados da empresa:)
3014
+ modalTitle: "rh-text-base rh-font-bold rh-leading-normal rh-font-display",
3015
+ // 16px Sora Bold (títulos de modal)
2820
3016
  // Captions - Inter font
2821
3017
  caption: "rh-text-xs rh-font-normal rh-leading-normal rh-font-body",
2822
- // 12px
3018
+ // 12px Inter
2823
3019
  captionSm: "rh-text-2xs rh-font-normal rh-leading-tight rh-font-body",
2824
- // 10px
2825
- // Special - Sora/Inter font
3020
+ // 10px Inter
3021
+ // Special
2826
3022
  menu: "rh-text-xs rh-font-bold rh-leading-normal rh-font-display",
2827
3023
  // 12px Sora Bold
2828
- overline: "rh-text-2xs rh-font-semibold rh-leading-tight rh-font-body rh-tracking-wide"
2829
- // 10px Inter SemiBold
3024
+ overline: "rh-text-2xs rh-font-semibold rh-leading-tight rh-font-body rh-tracking-wide rh-uppercase",
3025
+ // 10px Inter SemiBold UPPERCASE
3026
+ link: "rh-text-sm rh-font-medium rh-leading-normal rh-font-body rh-underline"
3027
+ // 14px Inter Medium underline
2830
3028
  };
2831
3029
  var colorClasses2 = {
2832
3030
  default: "rh-text-text",
2833
3031
  muted: "rh-text-text-muted",
2834
3032
  primary: "rh-text-primary",
3033
+ secondary: "rh-text-secondary",
2835
3034
  danger: "rh-text-danger",
2836
3035
  success: "rh-text-success",
2837
- warning: "rh-text-warning"
3036
+ warning: "rh-text-warning",
3037
+ info: "rh-text-info"
2838
3038
  };
2839
- var Typography = React8.forwardRef(function Typography2({ variant = "body", color = "default", bold = false, as, className = "", children, ...rest }, ref) {
3039
+ var Typography = React9.forwardRef(function Typography2({
3040
+ variant = "body",
3041
+ color = "default",
3042
+ bold = false,
3043
+ semibold = false,
3044
+ medium = false,
3045
+ as,
3046
+ className = "",
3047
+ children,
3048
+ ...rest
3049
+ }, ref) {
2840
3050
  const element = as ?? defaultElements[variant];
2841
- return React8__default.default.createElement(
3051
+ const weightClass = bold ? "rh-font-bold" : semibold ? "rh-font-semibold" : medium ? "rh-font-medium" : "";
3052
+ return React9__default.default.createElement(
2842
3053
  element,
2843
3054
  {
2844
3055
  ref,
2845
3056
  className: [
2846
3057
  variantClasses4[variant],
2847
3058
  colorClasses2[color],
2848
- bold ? "rh-font-bold" : "",
3059
+ weightClass,
2849
3060
  className
2850
3061
  ].filter(Boolean).join(" "),
2851
3062
  ...rest
@@ -2890,7 +3101,7 @@ function getVisiblePages(currentPage, totalPages, maxVisible) {
2890
3101
  }
2891
3102
  return pages;
2892
3103
  }
2893
- var Pagination = React8.forwardRef(function Pagination2({
3104
+ var Pagination = React9.forwardRef(function Pagination2({
2894
3105
  currentPage,
2895
3106
  totalPages,
2896
3107
  onPageChange,
@@ -2899,7 +3110,7 @@ var Pagination = React8.forwardRef(function Pagination2({
2899
3110
  className = "",
2900
3111
  disabled = false
2901
3112
  }, ref) {
2902
- const visiblePages = React8.useMemo(
3113
+ const visiblePages = React9.useMemo(
2903
3114
  () => getVisiblePages(currentPage, totalPages, maxVisible),
2904
3115
  [currentPage, totalPages, maxVisible]
2905
3116
  );
@@ -3006,7 +3217,7 @@ var Pagination = React8.forwardRef(function Pagination2({
3006
3217
  }
3007
3218
  );
3008
3219
  });
3009
- var Container = React8.forwardRef(
3220
+ var Container = React9.forwardRef(
3010
3221
  function Container2({ fluid = false, className = "", children, ...rest }, ref) {
3011
3222
  return /* @__PURE__ */ jsxRuntime.jsx(
3012
3223
  "div",
@@ -3038,7 +3249,7 @@ var colsClasses = {
3038
3249
  11: "rh-grid-cols-11",
3039
3250
  12: "rh-grid-cols-12"
3040
3251
  };
3041
- var GridContainer = React8.forwardRef(
3252
+ var GridContainer = React9.forwardRef(
3042
3253
  function GridContainer2({ columns, spacing, className = "", style, children, ...rest }, ref) {
3043
3254
  const colClass = columns ? colsClasses[columns] : "rh-grid-cols-4 desktop-xs:rh-grid-cols-12";
3044
3255
  const gapStyle = spacing !== void 0 ? { gap: `${spacing}px`, ...style } : style;
@@ -3139,7 +3350,7 @@ var desktopLgSpanClasses = {
3139
3350
  11: "desktop-lg:rh-col-span-11",
3140
3351
  12: "desktop-lg:rh-col-span-12"
3141
3352
  };
3142
- var GridItem = React8.forwardRef(
3353
+ var GridItem = React9.forwardRef(
3143
3354
  function GridItem2({
3144
3355
  mobile = 4,
3145
3356
  mobileSm,
@@ -3197,6 +3408,9 @@ exports.NeutralIcon = NeutralIcon;
3197
3408
  exports.Pagination = Pagination;
3198
3409
  exports.PlusIcon = PlusIcon;
3199
3410
  exports.ProgressBar = ProgressBar;
3411
+ exports.Radio = Radio;
3412
+ exports.RadioGroup = RadioGroup;
3413
+ exports.RadioOption = RadioOption;
3200
3414
  exports.RehagroProvider = RehagroProvider;
3201
3415
  exports.SearchIcon = SearchIcon;
3202
3416
  exports.Select = Select;