@gamecp/ui 0.1.30 → 0.1.33

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
@@ -712,7 +712,7 @@ var paddingClasses2 = {
712
712
  none: "",
713
713
  sm: "p-4",
714
714
  md: "p-4 lg:p-6",
715
- lg: "p-4 lg:p-8"
715
+ lg: "px-4 sm:px-6 lg:px-6 py-6"
716
716
  };
717
717
  function Container({
718
718
  children,
@@ -812,7 +812,7 @@ function SmartDropdown({
812
812
  trigger,
813
813
  children,
814
814
  className = "",
815
- width = 384,
815
+ width = 300,
816
816
  maxHeight = 450,
817
817
  offset = 8,
818
818
  margin = 16,
@@ -860,7 +860,7 @@ function SmartDropdown({
860
860
  const availableLeftSpace = triggerRect.left - margin;
861
861
  const dynamicOffset = Math.max(20, availableLeftSpace * 0.2);
862
862
  right = viewportWidth - triggerRect.left + dynamicOffset;
863
- left = 0;
863
+ left = void 0;
864
864
  calculatedWidth = Math.min(
865
865
  calculatedWidth,
866
866
  triggerRect.left - dynamicOffset - margin
@@ -912,13 +912,13 @@ function SmartDropdown({
912
912
  finalMaxHeight = Math.min(maxHeight, spaceBelow);
913
913
  } else if (position === "top-left-aligned") {
914
914
  right = viewportWidth - triggerRect.right;
915
- left = 0;
915
+ left = void 0;
916
916
  top = triggerRect.top - offset;
917
917
  isAbove = true;
918
918
  finalMaxHeight = Math.min(maxHeight, spaceAbove);
919
919
  } else if (position === "bottom-left-aligned") {
920
920
  right = viewportWidth - triggerRect.right;
921
- left = 0;
921
+ left = void 0;
922
922
  top = triggerRect.bottom + offset;
923
923
  isAbove = false;
924
924
  finalMaxHeight = Math.min(maxHeight, spaceBelow);
@@ -1017,20 +1017,13 @@ function SmartDropdown({
1017
1017
  top: dropdownPosition.top,
1018
1018
  ...dropdownPosition.left !== void 0 ? { left: dropdownPosition.left } : {},
1019
1019
  ...dropdownPosition.right !== void 0 ? { right: dropdownPosition.right } : {},
1020
- width: width === "fit-content" ? "auto" : dropdownPosition.width,
1020
+ width: width ?? dropdownPosition.width,
1021
1021
  maxHeight: dropdownPosition.maxHeight
1022
1022
  },
1023
1023
  onClick: (e) => {
1024
1024
  e.stopPropagation();
1025
1025
  },
1026
- children: /* @__PURE__ */ jsxRuntime.jsx(
1027
- "div",
1028
- {
1029
- className: className ? className : "overflow-y-auto",
1030
- style: { maxHeight: dropdownPosition.maxHeight },
1031
- children: typeof children === "function" ? children({ isAbove: dropdownPosition.isAbove }) : children
1032
- }
1033
- )
1026
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: className ? className : "overflow-y-auto h-full", children: typeof children === "function" ? children({ isAbove: dropdownPosition.isAbove }) : children })
1034
1027
  }
1035
1028
  ),
1036
1029
  document.body
@@ -1050,6 +1043,8 @@ function SmartSelect({
1050
1043
  searchable = false,
1051
1044
  keepOpen = false,
1052
1045
  clearable = true,
1046
+ variant = "default",
1047
+ renderSelected,
1053
1048
  // API integration props
1054
1049
  onOpen,
1055
1050
  onClose,
@@ -1070,7 +1065,7 @@ function SmartSelect({
1070
1065
  );
1071
1066
  const hasSelection = multiple ? selectedValues.length > 0 : value && value !== "";
1072
1067
  const filteredOptions = searchable && searchTerm.trim() ? options.filter(
1073
- (option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()) || option.value.toLowerCase().includes(searchTerm.toLowerCase()) || option.description?.toLowerCase().includes(searchTerm.toLowerCase())
1068
+ (option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()) || option.value.toLowerCase().includes(searchTerm.toLowerCase()) || typeof option.description === "string" && option.description.toLowerCase().includes(searchTerm.toLowerCase())
1074
1069
  ) : options;
1075
1070
  const { focusedIndex, handleKeyDown, resetFocus } = useKeyboardNavigation({
1076
1071
  isOpen,
@@ -1179,10 +1174,10 @@ function SmartSelect({
1179
1174
  "aria-controls": "dropdown-listbox",
1180
1175
  "aria-autocomplete": "list",
1181
1176
  "aria-activedescendant": focusedIndex >= 0 ? `option-${focusedIndex}` : void 0,
1182
- className: `form-input truncate ${hasSelection ? "pr-12" : "pr-8"} ${disabled ? "opacity-50 cursor-not-allowed" : ""} ${className}`
1177
+ className: `form-input truncate ${hasSelection ? "pr-12" : "pr-8"} ${disabled ? "cursor-not-allowed" : ""} ${className}`
1183
1178
  }
1184
1179
  ),
1185
- hasSelection && clearable && /* @__PURE__ */ jsxRuntime.jsx(
1180
+ hasSelection && clearable && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
1186
1181
  "button",
1187
1182
  {
1188
1183
  type: "button",
@@ -1238,7 +1233,7 @@ function SmartSelect({
1238
1233
  "aria-controls": "dropdown-listbox",
1239
1234
  "aria-label": placeholder,
1240
1235
  "aria-activedescendant": focusedIndex >= 0 ? `option-${focusedIndex}` : void 0,
1241
- className: `form-input flex items-center justify-between text-left ${hasSelection ? "pr-12" : "pr-8"} ${disabled ? "opacity-60 cursor-not-allowed" : ""} ${className}`,
1236
+ className: `${variant === "compact" ? "bg-background border border-border rounded-lg px-2 py-1 text-xs h-auto min-h-0 hover:bg-muted/50" : "form-input"} flex items-center justify-between text-left ${hasSelection ? "pr-12" : "pr-8"} ${disabled ? "cursor-not-allowed" : ""} ${className}`,
1242
1237
  children: /* @__PURE__ */ jsxRuntime.jsx(
1243
1238
  "span",
1244
1239
  {
@@ -1249,7 +1244,7 @@ function SmartSelect({
1249
1244
  selectedOptions[0].icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: selectedOptions[0].icon }),
1250
1245
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: displayText })
1251
1246
  ] });
1252
- })() : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: placeholder }) : selectedOptions[0] ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1 min-w-0 flex-1", children: [
1247
+ })() : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: placeholder }) : selectedOptions[0] ? renderSelected ? renderSelected(selectedOptions[0]) : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1 min-w-0 flex-1", children: [
1253
1248
  selectedOptions[0].icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: selectedOptions[0].icon }),
1254
1249
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: selectedOptions[0].label })
1255
1250
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: placeholder })
@@ -1257,7 +1252,7 @@ function SmartSelect({
1257
1252
  )
1258
1253
  }
1259
1254
  ),
1260
- hasSelection && clearable && /* @__PURE__ */ jsxRuntime.jsx(
1255
+ hasSelection && clearable && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
1261
1256
  "button",
1262
1257
  {
1263
1258
  type: "button",
@@ -1308,18 +1303,42 @@ function SmartSelect({
1308
1303
  e.stopPropagation();
1309
1304
  handleSelect(option.value);
1310
1305
  },
1311
- className: `w-full px-3 py-2 text-left text-sm hover:bg-accent flex items-center justify-between min-h-[40px] transition-colors ${selectedValues.includes(option.value) ? "bg-accent border-l-2 border-l-ring" : index === focusedIndex ? "bg-muted text-muted-foreground ring-2 ring-ring" : ""}`,
1306
+ className: `w-full ${variant === "compact" ? "px-2 py-1.5 text-xs" : "px-3 py-1.5 text-sm"} text-left hover:bg-muted/50 flex items-center justify-between transition-colors ${selectedValues.includes(option.value) ? "bg-primary" : index === focusedIndex ? "bg-muted/50" : ""}`,
1312
1307
  children: [
1313
1308
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
1314
- option.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: option.icon }),
1309
+ option.icon && /* @__PURE__ */ jsxRuntime.jsx(
1310
+ "span",
1311
+ {
1312
+ className: `flex-shrink-0 ${selectedValues.includes(option.value) ? "text-primary-foreground" : ""}`,
1313
+ children: option.icon
1314
+ }
1315
+ ),
1315
1316
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
1316
1317
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
1317
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-foreground truncate", children: option.label }),
1318
+ /* @__PURE__ */ jsxRuntime.jsx(
1319
+ "div",
1320
+ {
1321
+ className: `font-medium truncate ${selectedValues.includes(option.value) ? "text-primary-foreground" : "text-foreground"}`,
1322
+ children: option.label
1323
+ }
1324
+ ),
1318
1325
  option.metadata?.isDefault && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium success-badge flex-shrink-0", children: "Default" })
1319
1326
  ] }),
1320
- option.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground truncate", children: option.description }),
1321
- option.metadata?.args && option.metadata.args.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1", children: [
1322
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-secondary-foreground mb-1", children: "Arguments:" }),
1327
+ option.description && /* @__PURE__ */ jsxRuntime.jsx(
1328
+ "div",
1329
+ {
1330
+ className: `text-xs truncate ${selectedValues.includes(option.value) ? "text-primary-foreground/80" : "text-muted-foreground"}`,
1331
+ children: option.description
1332
+ }
1333
+ ),
1334
+ option.metadata?.args && option.metadata.args.length > 0 && (!option.metadata.commandType || option.metadata.commandType === "command") && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1", children: [
1335
+ /* @__PURE__ */ jsxRuntime.jsx(
1336
+ "div",
1337
+ {
1338
+ className: `text-xs mb-1 ${selectedValues.includes(option.value) ? "text-primary-foreground/80" : "text-muted-foreground"}`,
1339
+ children: "Arguments:"
1340
+ }
1341
+ ),
1323
1342
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap gap-1", children: [
1324
1343
  option.metadata.args.slice(0, 3).map((arg, argIndex) => /* @__PURE__ */ jsxRuntime.jsx(
1325
1344
  "span",
@@ -1329,11 +1348,17 @@ function SmartSelect({
1329
1348
  },
1330
1349
  argIndex
1331
1350
  )),
1332
- option.metadata.args.length > 3 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-secondary-foreground", children: [
1333
- "+",
1334
- option.metadata.args.length - 3,
1335
- " more"
1336
- ] })
1351
+ option.metadata.args.length > 3 && /* @__PURE__ */ jsxRuntime.jsxs(
1352
+ "span",
1353
+ {
1354
+ className: `text-xs ${selectedValues.includes(option.value) ? "text-primary-foreground/80" : "text-muted-foreground"}`,
1355
+ children: [
1356
+ "+",
1357
+ option.metadata.args.length - 3,
1358
+ " more"
1359
+ ]
1360
+ }
1361
+ )
1337
1362
  ] })
1338
1363
  ] })
1339
1364
  ] })
@@ -1347,11 +1372,11 @@ function SmartSelect({
1347
1372
  },
1348
1373
  className: "w-4 h-4 text-primary bg-muted border-border rounded focus:ring-primary focus:ring-2"
1349
1374
  }
1350
- ) : selectedValues.includes(option.value) && /* @__PURE__ */ jsxRuntime.jsx(ri.RiCheckLine, { className: "w-4 h-4 text-primary flex-shrink-0" })
1375
+ ) : selectedValues.includes(option.value) && /* @__PURE__ */ jsxRuntime.jsx(ri.RiCheckLine, { className: "w-4 h-4 text-primary-foreground flex-shrink-0" })
1351
1376
  ]
1352
1377
  },
1353
1378
  option.value
1354
- )) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-2 text-sm text-secondary-foreground flex items-center gap-2", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1379
+ )) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-2 text-sm text-muted-foreground flex items-center gap-2", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1355
1380
  /* @__PURE__ */ jsxRuntime.jsx(ri.RiLoader4Line, { className: "w-4 h-4 animate-spin" }),
1356
1381
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Loading..." })
1357
1382
  ] }) : searchTerm.trim() ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: "No results found" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: "No options available" }) }) })
@@ -2496,7 +2521,7 @@ function FormInput({
2496
2521
  }
2497
2522
  )
2498
2523
  ] }),
2499
- footerDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs mt-1", children: footerDescription }),
2524
+ footerDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground mt-1", children: footerDescription }),
2500
2525
  error && /* @__PURE__ */ jsxRuntime.jsx("div", { id: `${name}-error`, className: "form-error", role: "alert", children: typeof error === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: error }) : error })
2501
2526
  ] }) });
2502
2527
  }
@@ -2539,30 +2564,123 @@ function Grid({
2539
2564
  };
2540
2565
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `grid ${colClasses[cols]} ${gapClasses[gap]} ${className}`, children });
2541
2566
  }
2542
- var variantConfig = {
2543
- default: { borderAccent: "gray", titleColor: "text-foreground" },
2544
- warning: { borderAccent: "amber", titleColor: "text-amber" },
2545
- info: { borderAccent: "info", titleColor: "text-info" },
2546
- success: { borderAccent: "success", titleColor: "text-success" },
2547
- danger: { borderAccent: "danger", titleColor: "text-danger" }
2567
+ var variantStyles = {
2568
+ info: {
2569
+ bg: "bg-info/5",
2570
+ accent: "bg-info",
2571
+ iconBg: "bg-info/10",
2572
+ iconColor: "text-info",
2573
+ titleColor: "text-info"
2574
+ },
2575
+ warning: {
2576
+ bg: "bg-amber/5",
2577
+ accent: "bg-amber",
2578
+ iconBg: "bg-amber/10",
2579
+ iconColor: "text-amber",
2580
+ titleColor: "text-amber"
2581
+ },
2582
+ success: {
2583
+ bg: "bg-success/5",
2584
+ accent: "bg-success",
2585
+ iconBg: "bg-success/10",
2586
+ iconColor: "text-success",
2587
+ titleColor: "text-success"
2588
+ },
2589
+ danger: {
2590
+ bg: "bg-danger/5",
2591
+ accent: "bg-danger",
2592
+ iconBg: "bg-danger/10",
2593
+ iconColor: "text-danger",
2594
+ titleColor: "text-danger"
2595
+ },
2596
+ default: {
2597
+ bg: "bg-muted/50",
2598
+ accent: "bg-border",
2599
+ iconBg: "bg-muted",
2600
+ iconColor: "text-muted-foreground",
2601
+ titleColor: "text-foreground"
2602
+ }
2603
+ };
2604
+ var defaultIcons = {
2605
+ info: ri.RiInformationLine,
2606
+ warning: ri.RiAlertLine,
2607
+ success: ri.RiCheckLine,
2608
+ danger: ri.RiErrorWarningLine,
2609
+ default: ri.RiInformationLine
2548
2610
  };
2611
+ function Notice({
2612
+ children,
2613
+ variant = "info",
2614
+ icon,
2615
+ title,
2616
+ className = "",
2617
+ showIcon = true,
2618
+ action,
2619
+ compact = false
2620
+ }) {
2621
+ const styles = variantStyles[variant] || variantStyles.default;
2622
+ const IconComponent = defaultIcons[variant] || defaultIcons.default;
2623
+ const padding = compact ? "px-3 py-2.5" : "px-4 py-4";
2624
+ const iconSize = compact ? "w-4 h-4" : "w-5 h-5";
2625
+ const iconPadding = compact ? "p-1.5" : "p-2";
2626
+ const textSize = compact ? "text-xs" : "text-sm";
2627
+ const titleSize = compact ? "text-sm" : "text-base";
2628
+ const gap = compact ? "gap-2.5" : "gap-3";
2629
+ const displayIcon = showIcon ? icon || /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: iconSize }) : null;
2630
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2631
+ "div",
2632
+ {
2633
+ className: `relative flex items-start ${gap} ${padding} rounded-lg overflow-hidden ${styles.bg} ${className}`,
2634
+ children: [
2635
+ /* @__PURE__ */ jsxRuntime.jsx(
2636
+ "div",
2637
+ {
2638
+ className: `absolute left-0 top-0 bottom-0 w-1 ${styles.accent}`
2639
+ }
2640
+ ),
2641
+ displayIcon && /* @__PURE__ */ jsxRuntime.jsx(
2642
+ "div",
2643
+ {
2644
+ className: `flex-shrink-0 ${iconPadding} rounded-lg ${styles.iconBg} ${styles.iconColor}`,
2645
+ children: displayIcon
2646
+ }
2647
+ ),
2648
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
2649
+ title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `font-medium ${titleSize} ${styles.titleColor} mb-1`, children: title }),
2650
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${textSize} text-muted-foreground leading-relaxed space-y-1 [&>ul]:list-disc [&>ul]:list-outside [&>ul]:pl-3 [&>ol]:list-decimal [&>ol]:list-outside [&>ol]:pl-4`, children })
2651
+ ] }),
2652
+ action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0", children: action })
2653
+ ]
2654
+ }
2655
+ );
2656
+ }
2657
+ function InfoNotice(props) {
2658
+ return /* @__PURE__ */ jsxRuntime.jsx(Notice, { variant: "info", ...props });
2659
+ }
2660
+ function WarningNotice(props) {
2661
+ return /* @__PURE__ */ jsxRuntime.jsx(Notice, { variant: "warning", ...props });
2662
+ }
2663
+ function SuccessNotice(props) {
2664
+ return /* @__PURE__ */ jsxRuntime.jsx(Notice, { variant: "success", ...props });
2665
+ }
2666
+ function DangerNotice(props) {
2667
+ return /* @__PURE__ */ jsxRuntime.jsx(Notice, { variant: "danger", ...props });
2668
+ }
2549
2669
  function InfoBox({
2550
2670
  title,
2551
2671
  children,
2552
2672
  variant = "default",
2553
- className = ""
2673
+ className = "",
2674
+ compact = false
2554
2675
  }) {
2555
- const config = variantConfig[variant] || variantConfig.default;
2556
- return /* @__PURE__ */ jsxRuntime.jsxs(
2557
- Card,
2676
+ return /* @__PURE__ */ jsxRuntime.jsx(
2677
+ Notice,
2558
2678
  {
2559
- borderAccent: config.borderAccent,
2560
- padding: "md",
2679
+ variant,
2680
+ title,
2561
2681
  className,
2562
- children: [
2563
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: `font-medium mb-2 ${config.titleColor}`, children: title }),
2564
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground space-y-1 [&>ul]:list-disc [&>ul]:list-outside [&>ul]:pl-3 [&>ol]:list-decimal [&>ol]:list-outside [&>ol]:pl-4", children })
2565
- ]
2682
+ compact,
2683
+ children
2566
2684
  }
2567
2685
  );
2568
2686
  }
@@ -2776,32 +2894,32 @@ function Switch({
2776
2894
  const variants = {
2777
2895
  default: {
2778
2896
  checked: "bg-primary",
2779
- unchecked: "bg-input",
2897
+ unchecked: "bg-muted-foreground/40",
2780
2898
  ring: "focus:ring-primary"
2781
2899
  },
2782
2900
  success: {
2783
2901
  checked: "bg-success",
2784
- unchecked: "bg-input",
2902
+ unchecked: "bg-muted-foreground/40",
2785
2903
  ring: "focus:ring-success"
2786
2904
  },
2787
2905
  danger: {
2788
2906
  checked: "bg-destructive",
2789
- unchecked: "bg-input",
2907
+ unchecked: "bg-muted-foreground/40",
2790
2908
  ring: "focus:ring-destructive"
2791
2909
  },
2792
2910
  warning: {
2793
2911
  checked: "bg-warning",
2794
- unchecked: "bg-input",
2912
+ unchecked: "bg-muted-foreground/40",
2795
2913
  ring: "focus:ring-warning"
2796
2914
  },
2797
2915
  info: {
2798
2916
  checked: "bg-info",
2799
- unchecked: "bg-input",
2917
+ unchecked: "bg-muted-foreground/40",
2800
2918
  ring: "focus:ring-info"
2801
2919
  },
2802
2920
  embedded: {
2803
2921
  checked: "bg-success",
2804
- unchecked: "bg-input",
2922
+ unchecked: "bg-muted-foreground/40",
2805
2923
  ring: "focus:ring-success"
2806
2924
  }
2807
2925
  };
@@ -2822,9 +2940,9 @@ function Switch({
2822
2940
  disabled,
2823
2941
  onClick: toggle,
2824
2942
  className: `
2825
- relative inline-flex flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent
2943
+ relative inline-flex flex-shrink-0 cursor-pointer rounded-full border-2
2826
2944
  transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 ${currentVariant.ring} focus:ring-offset-2
2827
- ${checked ? currentVariant.checked : currentVariant.unchecked}
2945
+ ${checked ? `${currentVariant.checked} border-transparent` : `${currentVariant.unchecked} border-muted-foreground/30`}
2828
2946
  ${disabled ? "opacity-50 cursor-not-allowed" : ""}
2829
2947
  ${currentSize.track}
2830
2948
  `,
@@ -3319,7 +3437,7 @@ function ActionButton({
3319
3437
  return null;
3320
3438
  }
3321
3439
  };
3322
- const variantConfig2 = getVariantConfig();
3440
+ const variantConfig = getVariantConfig();
3323
3441
  const variantClasses5 = {
3324
3442
  primary: "btn-primary",
3325
3443
  secondary: "btn-secondary",
@@ -3329,7 +3447,7 @@ function ActionButton({
3329
3447
  info: "bg-muted text-muted-foreground hover:bg-primary hover:text-primary-foreground border border-ring transition-all duration-300 ease-in-out",
3330
3448
  metrics: "bg-purple/10 text-purple hover:bg-purple/20 hover:text-purple-700 border border-purple-200 transition-all duration-300 ease-in-out"
3331
3449
  };
3332
- let variantClass = variantConfig2 ? variantConfig2.className : variant ? variantClasses5[variant] : "";
3450
+ let variantClass = variantConfig ? variantConfig.className : variant ? variantClasses5[variant] : "";
3333
3451
  if (terminalMode && variantClass) {
3334
3452
  const hoverMatch = variantClass.match(/hover:text-(\w+)-(\d+)/);
3335
3453
  const hoverColor = hoverMatch ? `hover:text-${hoverMatch[1]}-${hoverMatch[2]}` : "hover:text-muted-foreground";
@@ -3356,13 +3474,13 @@ function ActionButton({
3356
3474
  }
3357
3475
  )
3358
3476
  }
3359
- ) : (variantConfig2?.icon || IconComponent) && /* @__PURE__ */ jsxRuntime.jsx(
3477
+ ) : (variantConfig?.icon || IconComponent) && /* @__PURE__ */ jsxRuntime.jsx(
3360
3478
  "div",
3361
3479
  {
3362
3480
  className: `${iconSizes[size]} flex items-center justify-center flex-shrink-0`,
3363
3481
  "aria-hidden": "true",
3364
- children: variantConfig2?.icon ? /* @__PURE__ */ jsxRuntime.jsx(
3365
- variantConfig2.icon,
3482
+ children: variantConfig?.icon ? /* @__PURE__ */ jsxRuntime.jsx(
3483
+ variantConfig.icon,
3366
3484
  {
3367
3485
  className: "w-full h-full",
3368
3486
  "aria-hidden": "true"
@@ -3370,11 +3488,11 @@ function ActionButton({
3370
3488
  ) : IconComponent ? /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "w-full h-full", "aria-hidden": "true" }) : null
3371
3489
  }
3372
3490
  ),
3373
- !iconOnly && (restProps.children ? restProps.children : (variantConfig2?.label || label) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center", children: variantConfig2?.label || label }))
3491
+ !iconOnly && (restProps.children ? restProps.children : (variantConfig?.label || label) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center", children: variantConfig?.label || label }))
3374
3492
  ] });
3375
- const accessibleLabel = title || (iconOnly ? variantConfig2?.label || label : void 0);
3376
- const buttonAriaLabel = iconOnly && !accessibleLabel ? variantConfig2?.label || label || "Action button" : accessibleLabel;
3377
- const tooltipContent = title || (iconOnly ? variantConfig2?.label || label : void 0);
3493
+ const accessibleLabel = title || (iconOnly ? variantConfig?.label || label : void 0);
3494
+ const buttonAriaLabel = iconOnly && !accessibleLabel ? variantConfig?.label || label || "Action button" : accessibleLabel;
3495
+ const tooltipContent = title || (iconOnly ? variantConfig?.label || label : void 0);
3378
3496
  const buttonClassName = `
3379
3497
 
3380
3498
  ${terminalMode ? "btn-terminal" : `btn ${variantClass} ${paddingClasses3} ${heightClasses[size]} ${className} ${isDisabled ? "opacity-50 cursor-not-allowed" : ""}`}`;
@@ -3694,6 +3812,7 @@ exports.Button = Button_default;
3694
3812
  exports.Card = Card;
3695
3813
  exports.ConfirmDialog = ConfirmDialog_default;
3696
3814
  exports.Container = Container;
3815
+ exports.DangerNotice = DangerNotice;
3697
3816
  exports.DataTable = DataTable;
3698
3817
  exports.DataTableActions = DataTableActions;
3699
3818
  exports.DataTableBody = DataTableBody;
@@ -3711,10 +3830,12 @@ exports.FormSection = FormSection;
3711
3830
  exports.Grid = Grid;
3712
3831
  exports.IconButtonWithCount = IconButtonWithCount;
3713
3832
  exports.InfoBox = InfoBox;
3833
+ exports.InfoNotice = InfoNotice;
3714
3834
  exports.Link = Link_default;
3715
3835
  exports.LoadingSpinner = LoadingSpinner_default;
3716
3836
  exports.MobileSearchLayout = MobileSearchLayout;
3717
3837
  exports.Modal = Modal;
3838
+ exports.Notice = Notice;
3718
3839
  exports.PageHeader = PageHeader;
3719
3840
  exports.RefreshButton = RefreshButton;
3720
3841
  exports.SearchCard = SearchCard;
@@ -3748,10 +3869,12 @@ exports.SmartSelect = SmartSelect;
3748
3869
  exports.Spinner = Spinner_default;
3749
3870
  exports.StatusBadge = StatusBadge;
3750
3871
  exports.StickyActionsColumn = StickyActionsColumn;
3872
+ exports.SuccessNotice = SuccessNotice;
3751
3873
  exports.Switch = Switch;
3752
3874
  exports.Typography = Typography;
3753
3875
  exports.VERSION = VERSION;
3754
3876
  exports.ViewToggle = ViewToggle;
3877
+ exports.WarningNotice = WarningNotice;
3755
3878
  exports.useConfirmDialog = useConfirmDialog;
3756
3879
  //# sourceMappingURL=index.js.map
3757
3880
  //# sourceMappingURL=index.js.map