@exem-ui/react 0.3.4-next.20260630003548 → 0.3.4-next.20260701100258

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
@@ -401,14 +401,41 @@ Breadcrumb.Path.displayName = "Breadcrumb.Path";
401
401
  Breadcrumb.Separator.displayName = "Breadcrumb.Separator";
402
402
  Breadcrumb.Ellipsis.displayName = "Breadcrumb.Ellipsis";
403
403
  var colorStyles = {
404
+ primary: {
405
+ solid: {
406
+ button: "bg-solid-primary-default hover:bg-solid-primary-hovered disabled:bg-solid-primary-disabled",
407
+ icon: "text-icon-inverse group-disabled/button:text-icon-inverse",
408
+ text: "text-text-inverse group-disabled/button:text-text-inverse"
409
+ },
410
+ assistive: {
411
+ button: "bg-elevation-elevation-2 hover:bg-elevation-elevation-3 disabled:bg-elevation-elevation-2",
412
+ icon: "text-icon-secondary group-disabled/button:text-icon-disabled",
413
+ text: "text-text-secondary group-disabled/button:text-text-disabled"
414
+ },
415
+ outlined: {
416
+ button: "border border-border-primary disabled:border-border-primary hover:bg-elevation-elevation-2",
417
+ icon: "text-icon-secondary group-disabled/button:text-icon-disabled",
418
+ text: "text-text-secondary group-disabled/button:text-text-disabled"
419
+ },
420
+ invisible: {
421
+ button: "hover:bg-elevation-elevation-2",
422
+ icon: "text-icon-secondary group-disabled/button:text-icon-disabled",
423
+ text: "text-text-secondary group-disabled/button:text-text-disabled"
424
+ }
425
+ },
404
426
  accent: {
405
- contained: {
427
+ solid: {
406
428
  button: "bg-solid-accent-default hover:bg-solid-accent-hovered disabled:bg-solid-accent-disabled",
407
429
  icon: "text-icon-static-light group-disabled/button:text-icon-inverse-disabled",
408
430
  text: "text-text-static-light group-disabled/button:text-text-inverse-disabled"
409
431
  },
432
+ assistive: {
433
+ button: "bg-elevation-accent-0 hover:bg-elevation-accent-1 disabled:bg-elevation-accent-0",
434
+ icon: "text-text-accent group-disabled/button:text-text-accent-disabled",
435
+ text: "text-text-accent group-disabled/button:text-text-accent-disabled"
436
+ },
410
437
  outlined: {
411
- button: "border border-border-accent hover:bg-elevation-accent-0 disabled:border-border-accent-disabled",
438
+ button: "border border-border-primary disabled:border-border-primary hover:bg-elevation-accent-0",
412
439
  icon: "text-text-accent group-disabled/button:text-text-accent-disabled",
413
440
  text: "text-text-accent group-disabled/button:text-text-accent-disabled"
414
441
  },
@@ -418,21 +445,19 @@ var colorStyles = {
418
445
  text: "text-text-accent group-disabled/button:text-text-accent-disabled"
419
446
  }
420
447
  },
421
- assistive: {
422
- contained: {
423
- button: "bg-elevation-elevation-2 hover:bg-elevation-elevation-3 disabled:bg-elevation-elevation-2",
424
- icon: "text-icon-secondary group-disabled/button:text-icon-disabled",
425
- text: "text-text-secondary group-disabled/button:text-text-disabled"
426
- }
427
- },
428
448
  critical: {
429
- contained: {
449
+ solid: {
430
450
  button: "bg-solid-critical-default hover:bg-solid-critical-hovered disabled:bg-solid-critical-disabled",
431
451
  icon: "text-icon-static-light group-disabled/button:text-icon-inverse-disabled",
432
452
  text: "text-text-static-light group-disabled/button:text-text-inverse-disabled"
433
453
  },
454
+ assistive: {
455
+ button: "bg-elevation-critical-0 hover:bg-elevation-critical-1 disabled:bg-elevation-critical-0",
456
+ icon: "text-text-critical group-disabled/button:text-text-critical-disabled",
457
+ text: "text-text-critical group-disabled/button:text-text-critical-disabled"
458
+ },
434
459
  outlined: {
435
- button: "border border-border-critical hover:bg-elevation-critical-0 disabled:border-border-critical-disabled",
460
+ button: "border border-border-primary disabled:border-border-primary hover:bg-elevation-critical-0",
436
461
  icon: "text-text-critical group-disabled/button:text-text-critical-disabled",
437
462
  text: "text-text-critical group-disabled/button:text-text-critical-disabled"
438
463
  },
@@ -441,30 +466,6 @@ var colorStyles = {
441
466
  icon: "text-text-critical group-disabled/button:text-text-critical-disabled",
442
467
  text: "text-text-critical group-disabled/button:text-text-critical-disabled"
443
468
  }
444
- },
445
- inverse: {
446
- contained: {
447
- button: "bg-elevation-elevation-0 hover:bg-elevation-elevation-2 disabled:bg-elevation-elevation-2",
448
- icon: "text-icon-secondary group-disabled/button:text-icon-disabled",
449
- text: "text-text-secondary group-disabled/button:text-text-disabled"
450
- }
451
- },
452
- primary: {
453
- contained: {
454
- button: "bg-solid-primary-default hover:bg-solid-primary-hovered disabled:bg-solid-primary-disabled",
455
- icon: "text-icon-inverse group-disabled/button:text-icon-inverse",
456
- text: "text-text-inverse group-disabled/button:text-text-inverse"
457
- },
458
- outlined: {
459
- button: "border border-border-primary hover:bg-elevation-elevation-2 disabled:border-border-primary",
460
- icon: "text-icon-secondary group-disabled/button:text-icon-disabled",
461
- text: "text-text-secondary group-disabled/button:text-text-disabled"
462
- },
463
- invisible: {
464
- button: "hover:bg-elevation-elevation-2",
465
- icon: "text-icon-secondary group-disabled/button:text-icon-disabled",
466
- text: "text-text-secondary group-disabled/button:text-text-disabled"
467
- }
468
469
  }
469
470
  };
470
471
  var buttonVariants = cva(
@@ -472,77 +473,41 @@ var buttonVariants = cva(
472
473
  {
473
474
  compoundVariants: [
474
475
  // Primary 색상 조합
475
- {
476
- className: colorStyles.primary.contained.button,
477
- color: "primary",
478
- variant: "contained"
479
- },
480
- {
481
- className: colorStyles.primary.outlined.button,
482
- color: "primary",
483
- variant: "outlined"
484
- },
485
- {
486
- className: colorStyles.primary.invisible.button,
487
- color: "primary",
488
- variant: "invisible"
489
- },
476
+ { className: colorStyles.primary.solid.button, color: "primary", variant: "solid" },
477
+ { className: colorStyles.primary.assistive.button, color: "primary", variant: "assistive" },
478
+ { className: colorStyles.primary.outlined.button, color: "primary", variant: "outlined" },
479
+ { className: colorStyles.primary.invisible.button, color: "primary", variant: "invisible" },
490
480
  // Accent 색상 조합
491
- {
492
- className: colorStyles.accent.contained.button,
493
- color: "accent",
494
- variant: "contained"
495
- },
496
- {
497
- className: colorStyles.accent.outlined.button,
498
- color: "accent",
499
- variant: "outlined"
500
- },
501
- {
502
- className: colorStyles.accent.invisible.button,
503
- color: "accent",
504
- variant: "invisible"
505
- },
481
+ { className: colorStyles.accent.solid.button, color: "accent", variant: "solid" },
482
+ { className: colorStyles.accent.assistive.button, color: "accent", variant: "assistive" },
483
+ { className: colorStyles.accent.outlined.button, color: "accent", variant: "outlined" },
484
+ { className: colorStyles.accent.invisible.button, color: "accent", variant: "invisible" },
506
485
  // Critical 색상 조합
486
+ { className: colorStyles.critical.solid.button, color: "critical", variant: "solid" },
487
+ { className: colorStyles.critical.assistive.button, color: "critical", variant: "assistive" },
488
+ { className: colorStyles.critical.outlined.button, color: "critical", variant: "outlined" },
489
+ { className: colorStyles.critical.invisible.button, color: "critical", variant: "invisible" },
490
+ // background 표면은 outlined/invisible 에서만 추가
507
491
  {
508
- className: colorStyles.critical.contained.button,
509
- color: "critical",
510
- variant: "contained"
511
- },
512
- {
513
- className: colorStyles.critical.outlined.button,
514
- color: "critical",
515
- variant: "outlined"
516
- },
517
- {
518
- className: colorStyles.critical.invisible.button,
519
- color: "critical",
520
- variant: "invisible"
521
- },
522
- // Assistive 색상 조합 (contained만 지원)
523
- {
524
- className: colorStyles.assistive.contained.button,
525
- color: "assistive",
526
- variant: "contained"
527
- },
528
- // Inverse 색상 조합 (contained만 지원)
529
- {
530
- className: colorStyles.inverse.contained.button,
531
- color: "inverse",
532
- variant: "contained"
492
+ className: "bg-elevation-elevation-0",
493
+ background: "fill",
494
+ variant: ["outlined", "invisible"]
533
495
  }
534
496
  ],
535
497
  defaultVariants: {
498
+ background: "none",
536
499
  color: "primary",
537
500
  size: "medium",
538
- variant: "contained"
501
+ variant: "solid"
539
502
  },
540
503
  variants: {
504
+ background: {
505
+ none: "",
506
+ fill: ""
507
+ },
541
508
  color: {
542
509
  accent: "",
543
- assistive: "",
544
510
  critical: "",
545
- inverse: "",
546
511
  primary: ""
547
512
  },
548
513
  size: {
@@ -553,9 +518,10 @@ var buttonVariants = cva(
553
518
  xlarge: "h-12 gap-1 px-3 text-title-2 font-medium"
554
519
  },
555
520
  variant: {
556
- contained: "",
557
- outlined: "bg-transparent",
558
- invisible: "bg-transparent"
521
+ solid: "",
522
+ assistive: "",
523
+ outlined: "",
524
+ invisible: ""
559
525
  }
560
526
  }
561
527
  }
@@ -570,27 +536,31 @@ var IconSizeMap = {
570
536
  var Button = forwardRef(
571
537
  ({
572
538
  className,
573
- variant = "contained",
539
+ variant = "solid",
574
540
  color = "primary",
541
+ background,
575
542
  size = "medium",
576
543
  icon,
577
544
  children,
578
545
  ...props
579
546
  }, ref) => {
580
- const validColorStyle = color === "assistive" || color === "inverse" ? colorStyles[color].contained : colorStyles[color][variant];
581
547
  const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
582
548
  icon && cloneElement(icon, {
583
549
  className: cn(
584
550
  "shrink-0 [&>path]:fill-current",
585
- validColorStyle.icon,
551
+ colorStyles[color][variant].icon,
586
552
  icon.props.className
587
553
  ),
588
- size: icon.props.size ?? IconSizeMap[size ?? "medium"]
554
+ size: icon.props.size ?? IconSizeMap[size]
589
555
  }),
590
556
  typeof children === "string" ? /* @__PURE__ */ jsx(
591
557
  "span",
592
558
  {
593
- className: cn("truncate", size === "xlarge" ? "px-1" : "px-0.5", validColorStyle.text),
559
+ className: cn(
560
+ "truncate",
561
+ size === "xlarge" ? "px-1" : "px-0.5",
562
+ colorStyles[color][variant].text
563
+ ),
594
564
  children
595
565
  }
596
566
  ) : children
@@ -600,6 +570,7 @@ var Button = forwardRef(
600
570
  {
601
571
  className: cn(
602
572
  buttonVariants({
573
+ background,
603
574
  className,
604
575
  color,
605
576
  size,
@@ -623,21 +594,11 @@ var iconButtonSizeClasses = {
623
594
  xlarge: "size-12"
624
595
  };
625
596
  var IconButton = forwardRef(
626
- ({
627
- className,
628
- tooltip,
629
- variant = "contained",
630
- icon,
631
- size = "medium",
632
- color = "primary",
633
- ...props
634
- }, ref) => {
597
+ ({ className, tooltip, icon, size = "medium", ...props }, ref) => {
635
598
  const buttonProps = {
636
599
  className: cn(iconButtonSizeClasses[size], "px-0", className),
637
- color,
638
600
  icon,
639
601
  size,
640
- variant,
641
602
  ...props
642
603
  };
643
604
  return /* @__PURE__ */ jsx(ConditionalTooltip, { tooltip, children: /* @__PURE__ */ jsx(Button, { ref, ...buttonProps }) });
@@ -684,7 +645,7 @@ var ButtonGroup = forwardRef(
684
645
  onClick: item.onClick,
685
646
  size
686
647
  };
687
- return /* @__PURE__ */ jsx(ConditionalTooltip, { tooltip: item.tooltip, children: variant === "contained" ? /* @__PURE__ */ jsx(IconButton, { ...iconBaseProps, color: "assistive", variant: "contained" }) : /* @__PURE__ */ jsx(IconButton, { ...iconBaseProps, color: "primary", variant: "outlined" }) }, item.id);
648
+ return /* @__PURE__ */ jsx(ConditionalTooltip, { tooltip: item.tooltip, children: variant === "contained" ? /* @__PURE__ */ jsx(IconButton, { ...iconBaseProps, variant: "assistive" }) : /* @__PURE__ */ jsx(IconButton, { ...iconBaseProps, color: "primary", variant: "outlined" }) }, item.id);
688
649
  }
689
650
  const buttonBaseProps = {
690
651
  className: cn(roundedClasses, dividerClasses, mergeClasses, hoverClasses),
@@ -692,7 +653,7 @@ var ButtonGroup = forwardRef(
692
653
  onClick: item.onClick,
693
654
  size
694
655
  };
695
- return /* @__PURE__ */ jsx(ConditionalTooltip, { tooltip: item.tooltip, children: variant === "contained" ? /* @__PURE__ */ jsx(Button, { ...buttonBaseProps, color: "assistive", variant: "contained", children: item.label }) : /* @__PURE__ */ jsx(Button, { ...buttonBaseProps, color: "primary", variant: "outlined", children: item.label }) }, item.id);
656
+ return /* @__PURE__ */ jsx(ConditionalTooltip, { tooltip: item.tooltip, children: variant === "contained" ? /* @__PURE__ */ jsx(Button, { ...buttonBaseProps, variant: "assistive", children: item.label }) : /* @__PURE__ */ jsx(Button, { ...buttonBaseProps, color: "primary", variant: "outlined", children: item.label }) }, item.id);
696
657
  })
697
658
  }
698
659
  );
@@ -1671,8 +1632,7 @@ Modal.Close = forwardRef(({ size, ...props }, ref) => {
1671
1632
  {
1672
1633
  ...props,
1673
1634
  ref,
1674
- color: "assistive",
1675
- variant: "contained",
1635
+ variant: "assistive",
1676
1636
  size: size ?? (modalSize === "fullsize" ? "large" : "medium")
1677
1637
  }
1678
1638
  ) });
@@ -1820,7 +1780,7 @@ Modal.Action = forwardRef(
1820
1780
  ...props,
1821
1781
  ref,
1822
1782
  color,
1823
- variant: "contained",
1783
+ variant: "solid",
1824
1784
  size: size ?? (modalSize === "fullsize" ? "large" : "medium")
1825
1785
  }
1826
1786
  ) });
@@ -2220,7 +2180,7 @@ MessageBox.Actions = forwardRef(
2220
2180
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-row gap-2", className), ...props })
2221
2181
  );
2222
2182
  MessageBox.Cancel = forwardRef(
2223
- ({ size = "medium", ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { ref, color: "assistive", variant: "contained", size, ...props }) })
2183
+ ({ size = "medium", ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { ref, variant: "assistive", size, ...props }) })
2224
2184
  );
2225
2185
  MessageBox.Action = forwardRef(
2226
2186
  ({ size = "medium", ...props }, ref) => {
@@ -2230,7 +2190,7 @@ MessageBox.Action = forwardRef(
2230
2190
  {
2231
2191
  ref,
2232
2192
  color: variant === "critical" ? "critical" : "primary",
2233
- variant: "contained",
2193
+ variant: "solid",
2234
2194
  size,
2235
2195
  ...props
2236
2196
  }