sellmate-design-system-react 9.0.0-beta.61 → 9.0.0-beta.63

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.
Files changed (48) hide show
  1. package/AGENTS.md +510 -136
  2. package/dist/components/SBarChart/README.md +15 -0
  3. package/dist/components/SBarChart/SBarChart.d.ts +15 -1
  4. package/dist/components/SBarChart/index.d.ts +1 -1
  5. package/dist/components/SCallout/README.md +1 -0
  6. package/dist/components/SCallout/SCallout.d.ts +6 -1
  7. package/dist/components/SDonutChart/README.md +2 -4
  8. package/dist/components/SDonutChart/SDonutChart.d.ts +9 -10
  9. package/dist/components/SGhostButton/README.md +2 -0
  10. package/dist/components/SLineChart/README.md +15 -0
  11. package/dist/components/SLineChart/SLineChart.d.ts +15 -1
  12. package/dist/components/SLineChart/index.d.ts +1 -1
  13. package/dist/components/SLineChart/lineChart.config.d.ts +8 -5
  14. package/dist/components/SMeatballButton/README.md +67 -0
  15. package/dist/components/SMeatballButton/SMeatballButton.d.ts +36 -0
  16. package/dist/components/SMeatballButton/index.d.ts +1 -0
  17. package/dist/components/SPage/README.md +19 -0
  18. package/dist/components/SPage/SPage.d.ts +11 -2
  19. package/dist/components/SPage/index.d.ts +1 -1
  20. package/dist/components/SPage/page.config.d.ts +8 -0
  21. package/dist/components/SPieChart/README.md +1 -0
  22. package/dist/components/SPieChart/SPieChart.d.ts +6 -1
  23. package/dist/docs/RecipeGallery.d.ts +13 -0
  24. package/dist/index.cjs +338 -154
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +336 -154
  28. package/dist/index.js.map +1 -1
  29. package/dist/lib/chart/radial.d.ts +22 -11
  30. package/dist/lib/chart/tooltip.d.ts +18 -1
  31. package/dist/lib/dropdown-menu.d.ts +19 -0
  32. package/dist/llms-full.txt +628 -140
  33. package/dist/llms.txt +512 -138
  34. package/dist/recipes/AppShell.d.ts +21 -0
  35. package/dist/recipes/ExcelFilePopupPage.d.ts +5 -0
  36. package/dist/recipes/LoginPage.d.ts +6 -0
  37. package/dist/recipes/ProductCreatePage.d.ts +1 -0
  38. package/dist/recipes/ProductCreateSectionsPage.d.ts +5 -0
  39. package/dist/recipes/ProductDetailInlineEditPage.d.ts +9 -0
  40. package/dist/recipes/ProductDetailPage.d.ts +1 -0
  41. package/dist/recipes/ProductListChipFilterPage.d.ts +1 -0
  42. package/dist/recipes/ProductListPage.d.ts +1 -0
  43. package/dist/recipes/TransferOrderPopupPage.d.ts +2 -0
  44. package/dist/recipes/api.d.ts +91 -0
  45. package/dist/recipes/recipe-story.d.ts +33 -0
  46. package/dist/recipes/router.d.ts +9 -0
  47. package/dist/styles.css +21 -3
  48. package/package.json +3 -1
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import { createPortal } from 'react-dom';
8
8
  import * as RCheckbox from '@radix-ui/react-checkbox';
9
9
  import { createRoot } from 'react-dom/client';
10
10
  import * as RTooltip from '@radix-ui/react-tooltip';
11
- import * as RDropdown3 from '@radix-ui/react-dropdown-menu';
11
+ import * as RDropdown5 from '@radix-ui/react-dropdown-menu';
12
12
  import * as RSwitch from '@radix-ui/react-switch';
13
13
  import * as RDialog from '@radix-ui/react-dialog';
14
14
  import * as Ariakit from '@ariakit/react';
@@ -8007,8 +8007,8 @@ function renderItems(message, depth = 1) {
8007
8007
  });
8008
8008
  return out;
8009
8009
  }
8010
- var SCallout = /* @__PURE__ */ forwardRef(function SCallout2({ type = "default", message = [], children, className, style }, ref) {
8011
- const isDanger = type === "danger";
8010
+ var SCallout = /* @__PURE__ */ forwardRef(function SCallout2({ type = "default", showTitle = true, message = [], children, className, style }, ref) {
8011
+ const hasDangerTitle = type === "danger" && showTitle;
8012
8012
  const surface = SURFACE[type];
8013
8013
  const vars = {
8014
8014
  "--co-bg": surface.bg,
@@ -8027,7 +8027,7 @@ var SCallout = /* @__PURE__ */ forwardRef(function SCallout2({ type = "default",
8027
8027
  ),
8028
8028
  style: { ...vars, ...style },
8029
8029
  children: [
8030
- isDanger && /* @__PURE__ */ jsxs(
8030
+ hasDangerTitle && /* @__PURE__ */ jsxs(
8031
8031
  "div",
8032
8032
  {
8033
8033
  className: "flex shrink-0 flex-col items-center justify-center gap-[var(--cmp-callout-danger-title-gap)] px-[var(--cmp-callout-danger-title-paddingX)] py-[8px] text-[16px] font-bold leading-[26px]",
@@ -8354,6 +8354,58 @@ function clampToAvailableWidth(value, availableWidth) {
8354
8354
  const css = typeof value === "number" ? `${value}px` : value;
8355
8355
  return `min(${css}, ${availableWidth})`;
8356
8356
  }
8357
+ var VIEWPORT_PADDING = 12;
8358
+ var itemClass = cn(
8359
+ "flex min-h-[28px] cursor-pointer select-none items-center gap-[8px] rounded-[2px] px-[12px] py-[4px] text-[12px] leading-[20px] outline-none",
8360
+ "text-[color:var(--sys-color-fg-secondary)]",
8361
+ "data-[disabled]:cursor-not-allowed data-[disabled]:text-[color:var(--cmp-button-text-disabled)]",
8362
+ "data-[highlighted]:bg-[var(--sys-color-bg-accent)] data-[highlighted]:text-[color:var(--sys-color-fg-inverse)]"
8363
+ );
8364
+ function DropdownMenuContent({
8365
+ items,
8366
+ onItemClick,
8367
+ align = "start",
8368
+ className,
8369
+ ...contentProps
8370
+ }) {
8371
+ const portalContainer = usePortalContainer();
8372
+ return /* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
8373
+ RDropdown5.Content,
8374
+ {
8375
+ sideOffset: 4,
8376
+ align,
8377
+ collisionPadding: VIEWPORT_PADDING,
8378
+ className: cn(
8379
+ "z-50 overflow-hidden rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] shadow-normal-sm",
8380
+ // 창보다 넓은 메뉴는 창 폭에 맞춰 줄인다. 호출부가 하한(min-width)을 줄 때도 같은
8381
+ // 상한으로 감싸야 한다 — min-width 가 max-width 를 이기기 때문이다.
8382
+ "max-w-[var(--radix-dropdown-menu-content-available-width)]",
8383
+ FLOATING_SLIDE_ANIM,
8384
+ className
8385
+ ),
8386
+ ...contentProps,
8387
+ children: items.map((it) => /* @__PURE__ */ jsxs(
8388
+ RDropdown5.Item,
8389
+ {
8390
+ disabled: it.disabled,
8391
+ onSelect: () => onItemClick?.(it.value),
8392
+ className: itemClass,
8393
+ children: [
8394
+ it.icon && /* @__PURE__ */ jsx(SIcon, { name: it.icon, size: 12 }),
8395
+ /* @__PURE__ */ jsx(
8396
+ "span",
8397
+ {
8398
+ className: "min-w-0 break-words",
8399
+ dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(it.label) }
8400
+ }
8401
+ )
8402
+ ]
8403
+ },
8404
+ it.value
8405
+ ))
8406
+ }
8407
+ ) });
8408
+ }
8357
8409
  var SIZE2 = {
8358
8410
  xs: { height: 24, paddingX: 8, gap: 6, arrow: 12, fontSize: 12, minWidth: 64, splitMinWidth: 72 },
8359
8411
  sm: {
@@ -8390,13 +8442,6 @@ function splitDivider(color, outline) {
8390
8442
  };
8391
8443
  return (outline ? outlined : solid)[color];
8392
8444
  }
8393
- var VIEWPORT_PADDING = 12;
8394
- var itemClass = cn(
8395
- "flex min-h-[28px] cursor-pointer select-none items-center gap-[8px] rounded-[2px] px-[12px] py-[4px] text-[12px] leading-[20px] outline-none",
8396
- "text-[color:var(--sys-color-fg-secondary)]",
8397
- "data-[disabled]:cursor-not-allowed data-[disabled]:text-[color:var(--cmp-button-text-disabled)]",
8398
- "data-[highlighted]:bg-[var(--sys-color-bg-accent)] data-[highlighted]:text-[color:var(--sys-color-fg-inverse)]"
8399
- );
8400
8445
  var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
8401
8446
  function SDropdownButton({
8402
8447
  color = "primary",
@@ -8412,7 +8457,6 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
8412
8457
  className,
8413
8458
  style
8414
8459
  }, ref) {
8415
- const portalContainer = usePortalContainer();
8416
8460
  const insideModal = useInsideModal();
8417
8461
  const [open, setOpen] = useState(false);
8418
8462
  const splitWrapRef = useRef(null);
@@ -8466,45 +8510,20 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
8466
8510
  "border-[color:var(--dd-border)] bg-[var(--dd-bg)] text-[color:var(--dd-text)]",
8467
8511
  disabled ? "cursor-not-allowed" : "cursor-pointer hover:bg-[var(--dd-bg-hover)]"
8468
8512
  );
8469
- const menu = /* @__PURE__ */ jsx(RDropdown3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
8470
- RDropdown3.Content,
8513
+ const menu = /* @__PURE__ */ jsx(
8514
+ DropdownMenuContent,
8471
8515
  {
8472
- sideOffset: 4,
8473
- align: "start",
8516
+ items,
8517
+ onItemClick,
8474
8518
  alignOffset: split ? splitAlignOffset : 0,
8475
- collisionPadding: VIEWPORT_PADDING,
8476
8519
  className: cn(
8477
- "z-50 overflow-hidden rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] shadow-normal-sm",
8478
- // 창보다 넓은 메뉴는 창 폭에 맞춰 줄인다. 트리거 너비를 따르는 하한도 같은 상한으로
8479
- // 감싸야 한다 — min-width 가 max-width 를 이기기 때문이다.
8480
- "max-w-[var(--radix-dropdown-menu-content-available-width)]",
8481
- !split && "min-w-[min(var(--radix-dropdown-menu-trigger-width),var(--radix-dropdown-menu-content-available-width))]",
8482
- FLOATING_SLIDE_ANIM
8520
+ !split && "min-w-[min(var(--radix-dropdown-menu-trigger-width),var(--radix-dropdown-menu-content-available-width))]"
8483
8521
  ),
8484
- style: split ? { minWidth: clampToAvailableWidth(splitWidth, DROPDOWN_AVAILABLE_WIDTH) } : void 0,
8485
- children: items.map((it) => /* @__PURE__ */ jsxs(
8486
- RDropdown3.Item,
8487
- {
8488
- disabled: it.disabled,
8489
- onSelect: () => onItemClick?.(it.value),
8490
- className: itemClass,
8491
- children: [
8492
- it.icon && /* @__PURE__ */ jsx(SIcon, { name: it.icon, size: 12 }),
8493
- /* @__PURE__ */ jsx(
8494
- "span",
8495
- {
8496
- className: "min-w-0 break-words",
8497
- dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(it.label) }
8498
- }
8499
- )
8500
- ]
8501
- },
8502
- it.value
8503
- ))
8522
+ style: split ? { minWidth: clampToAvailableWidth(splitWidth, DROPDOWN_AVAILABLE_WIDTH) } : void 0
8504
8523
  }
8505
- ) });
8524
+ );
8506
8525
  return /* @__PURE__ */ jsxs(
8507
- RDropdown3.Root,
8526
+ RDropdown5.Root,
8508
8527
  {
8509
8528
  modal: !insideModal,
8510
8529
  open,
@@ -8536,7 +8555,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
8536
8555
  children: label
8537
8556
  }
8538
8557
  ),
8539
- /* @__PURE__ */ jsx(RDropdown3.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(
8558
+ /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(
8540
8559
  "button",
8541
8560
  {
8542
8561
  ref: splitToggleRef,
@@ -8555,7 +8574,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
8555
8574
  ) })
8556
8575
  ]
8557
8576
  }
8558
- ) : /* @__PURE__ */ jsx(RDropdown3.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
8577
+ ) : /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
8559
8578
  "button",
8560
8579
  {
8561
8580
  type: "button",
@@ -8583,6 +8602,87 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
8583
8602
  }
8584
8603
  );
8585
8604
  var SDropdownButton2 = /* @__PURE__ */ withDisplayName(SDropdownButtonImpl, "SDropdownButton");
8605
+ var DEFAULT_LABEL = "\uAE30\uB2A5 \uB354 \uBCF4\uAE30";
8606
+ var SMeatballButtonImpl = /* @__PURE__ */ forwardRef(
8607
+ function SMeatballButton({
8608
+ size = "sm",
8609
+ intent = "default",
8610
+ items = [],
8611
+ // 기본값을 리터럴로 둬야 README(docs:gen)에 실제 문구가 찍힌다
8612
+ tooltipText = "\uAE30\uB2A5 \uB354 \uBCF4\uAE30",
8613
+ ariaLabel,
8614
+ disabled = false,
8615
+ onItemClick,
8616
+ onOpenChange,
8617
+ className,
8618
+ style
8619
+ }, ref) {
8620
+ const insideModal = useInsideModal();
8621
+ const [open, setOpen] = useState(false);
8622
+ const buttonRef = useRef(null);
8623
+ const pointerRef = useRef(false);
8624
+ const setMenuOpen = (o) => {
8625
+ setOpen(o);
8626
+ onOpenChange?.(o);
8627
+ };
8628
+ useImperativeHandle(
8629
+ ref,
8630
+ () => ({
8631
+ open: () => setOpen(true),
8632
+ close: () => setOpen(false)
8633
+ }),
8634
+ []
8635
+ );
8636
+ const label = ariaLabel?.trim() || tooltipText.trim() || DEFAULT_LABEL;
8637
+ return /* @__PURE__ */ jsxs(
8638
+ RDropdown5.Root,
8639
+ {
8640
+ modal: !insideModal,
8641
+ open,
8642
+ onOpenChange: setMenuOpen,
8643
+ children: [
8644
+ /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx(
8645
+ "span",
8646
+ {
8647
+ className: cn("inline-flex", className),
8648
+ style,
8649
+ onPointerDownCapture: () => pointerRef.current = true,
8650
+ onKeyDownCapture: () => pointerRef.current = false,
8651
+ children: /* @__PURE__ */ jsx(
8652
+ SGhostButton,
8653
+ {
8654
+ ref: buttonRef,
8655
+ icon: "etc",
8656
+ size,
8657
+ intent,
8658
+ tooltipText: open ? "" : tooltipText,
8659
+ ariaLabel: label,
8660
+ ariaExpanded: open,
8661
+ disabled
8662
+ }
8663
+ )
8664
+ }
8665
+ ) }),
8666
+ /* @__PURE__ */ jsx(
8667
+ DropdownMenuContent,
8668
+ {
8669
+ items,
8670
+ onItemClick,
8671
+ onPointerDown: () => pointerRef.current = true,
8672
+ onPointerDownOutside: () => pointerRef.current = true,
8673
+ onKeyDown: () => pointerRef.current = false,
8674
+ onCloseAutoFocus: (e) => {
8675
+ e.preventDefault();
8676
+ if (!pointerRef.current) buttonRef.current?.focus();
8677
+ }
8678
+ }
8679
+ )
8680
+ ]
8681
+ }
8682
+ );
8683
+ }
8684
+ );
8685
+ var SMeatballButton2 = /* @__PURE__ */ withDisplayName(SMeatballButtonImpl, "SMeatballButton");
8586
8686
  function SSwitch({
8587
8687
  value = false,
8588
8688
  leftLabel,
@@ -9558,7 +9658,7 @@ var SPopup = /* @__PURE__ */ forwardRef(function SPopup2({
9558
9658
  }
9559
9659
  );
9560
9660
  });
9561
- var DEFAULT_LABEL = { tip: "\uD65C\uC6A9 TIP", notion: "\uC0AC\uC6A9\uBC95 \uC548\uB0B4" };
9661
+ var DEFAULT_LABEL2 = { tip: "\uD65C\uC6A9 TIP", notion: "\uC0AC\uC6A9\uBC95 \uC548\uB0B4" };
9562
9662
  var ICON = { tip: "helpOutline", notion: "notion" };
9563
9663
  var VIEWPORT_GUTTER = 24;
9564
9664
  var CLOSE_INSET = 12;
@@ -9580,7 +9680,7 @@ function SGuide({
9580
9680
  const portalContainer = usePortalContainer();
9581
9681
  const isNotion = type === "notion";
9582
9682
  const isAutoWidth = popupWidth === "auto";
9583
- const defaultLabel = DEFAULT_LABEL[type];
9683
+ const defaultLabel = DEFAULT_LABEL2[type];
9584
9684
  const iconName = ICON[type];
9585
9685
  const messages = flattenMessages(message);
9586
9686
  const active = open;
@@ -12633,6 +12733,10 @@ var BACKGROUND_CLASS = {
12633
12733
  neutral: "bg-[var(--sys-color-bg-neutralLight)]",
12634
12734
  screen: "bg-[var(--sys-color-bg-screen)]"
12635
12735
  };
12736
+ var PADDING_CLASS2 = {
12737
+ default: "p-[var(--cmp-pageBody-padding-default)]",
12738
+ none: "p-0"
12739
+ };
12636
12740
  var NATIVE_SCROLLBAR_BACKGROUND_CLASS = {
12637
12741
  frame: `${SCROLLBAR_TRACK_BORDER_CLASS} ${SCROLLBAR_TRACK_BG_CLASS}`,
12638
12742
  neutral: `${SCROLLBAR_TRACK_BORDER_CLASS} ${SCROLLBAR_TRACK_BG_WHITE_CLASS}`,
@@ -12648,6 +12752,7 @@ var setForwardedRef = (ref, node) => {
12648
12752
  var SPage = /* @__PURE__ */ forwardRef(function SPage2({
12649
12753
  background = "frame",
12650
12754
  scrollEndSpacing = false,
12755
+ padding = "default",
12651
12756
  overlayScrollbar = false,
12652
12757
  contentHeight = "auto",
12653
12758
  contentWidth = "full",
@@ -12686,7 +12791,8 @@ var SPage = /* @__PURE__ */ forwardRef(function SPage2({
12686
12791
  {
12687
12792
  ref: setMainRef,
12688
12793
  className: cn(
12689
- "box-border min-h-0 min-w-0 flex-1 overflow-auto p-[var(--cmp-pageBody-padding-default)]",
12794
+ "box-border min-h-0 min-w-0 flex-1 overflow-auto",
12795
+ PADDING_CLASS2[padding],
12690
12796
  overlayScrollbar && "h-full",
12691
12797
  !fill && scrollEndSpacing && "pb-[var(--cmp-pageBody-padding-scrollEnd)]",
12692
12798
  overlayScrollbar ? SCROLLBAR_HIDDEN_CLASS : `${SCROLLBAR_CLASS} ${NATIVE_SCROLLBAR_BACKGROUND_CLASS[background]}`,
@@ -12726,6 +12832,7 @@ var SPage = /* @__PURE__ */ forwardRef(function SPage2({
12726
12832
  // src/components/SPage/page.config.ts
12727
12833
  var PAGE_BACKGROUNDS = ["frame", "neutral", "screen"];
12728
12834
  var PAGE_CONTENT_HEIGHTS = ["auto", "fill"];
12835
+ var PAGE_PADDINGS = ["default", "none"];
12729
12836
  var PAGE_CONTENT_WIDTHS = ["full", "fixed", "fixedCenter"];
12730
12837
  var PAGE_HEADER_VARIANTS = ["plain", "bar"];
12731
12838
  var SPageHeader = /* @__PURE__ */ withDisplayName(
@@ -16478,7 +16585,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
16478
16585
  ),
16479
16586
  contextMenuOn && typeof document !== "undefined" && createPortal(
16480
16587
  /* @__PURE__ */ jsxs(
16481
- RDropdown3.Root,
16588
+ RDropdown5.Root,
16482
16589
  {
16483
16590
  modal: false,
16484
16591
  open: contextMenuOpen,
@@ -16486,7 +16593,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
16486
16593
  if (!open) setContextMenu((m) => m == null ? null : { ...m, open: false });
16487
16594
  },
16488
16595
  children: [
16489
- /* @__PURE__ */ jsx(RDropdown3.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(
16596
+ /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(
16490
16597
  "span",
16491
16598
  {
16492
16599
  "aria-hidden": true,
@@ -16495,7 +16602,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
16495
16602
  }
16496
16603
  ) }),
16497
16604
  /* @__PURE__ */ jsx(
16498
- RDropdown3.Content,
16605
+ RDropdown5.Content,
16499
16606
  {
16500
16607
  align: "start",
16501
16608
  side: "bottom",
@@ -16509,7 +16616,7 @@ var STable = /* @__PURE__ */ forwardRef(function STable2({
16509
16616
  FLOATING_SLIDE_ANIM
16510
16617
  ),
16511
16618
  children: contextMenuItems?.map((item4) => /* @__PURE__ */ jsxs(
16512
- RDropdown3.Item,
16619
+ RDropdown5.Item,
16513
16620
  {
16514
16621
  disabled: item4.disabled,
16515
16622
  onSelect: () => onContextMenuItemClick?.(item4.value, contextMenu?.rows ?? []),
@@ -19404,6 +19511,7 @@ function ChartTooltip({
19404
19511
  anchor,
19405
19512
  bounds,
19406
19513
  gapX = DEFAULT_GAP_X,
19514
+ footer,
19407
19515
  className
19408
19516
  }) {
19409
19517
  const { ref, size } = useElementSize();
@@ -19454,7 +19562,8 @@ function ChartTooltip({
19454
19562
  ]
19455
19563
  },
19456
19564
  `${item4.label}-${index}`
19457
- ))
19565
+ )),
19566
+ footer != null && footer !== false && /* @__PURE__ */ jsx("div", { children: footer })
19458
19567
  ]
19459
19568
  }
19460
19569
  );
@@ -19545,6 +19654,7 @@ var SBarChart = /* @__PURE__ */ forwardRef(function SBarChart2({
19545
19654
  formatValue = defaultFormat,
19546
19655
  height,
19547
19656
  onBarClick,
19657
+ tooltipFooter,
19548
19658
  className,
19549
19659
  style
19550
19660
  }, ref) {
@@ -19973,7 +20083,16 @@ var SBarChart = /* @__PURE__ */ forwardRef(function SBarChart2({
19973
20083
  items: tooltipItems,
19974
20084
  anchor: tooltipAnchor,
19975
20085
  bounds: size,
19976
- gapX: tooltipGapX
20086
+ gapX: tooltipGapX,
20087
+ footer: tooltipFooter?.({
20088
+ categoryIndex: hoveredCategory,
20089
+ name: categories[hoveredCategory] ?? "",
20090
+ points: series.flatMap((s, seriesIndex) => {
20091
+ const value = s.data[hoveredCategory];
20092
+ if (value == null || !Number.isFinite(value)) return [];
20093
+ return [{ seriesIndex, categoryIndex: hoveredCategory, value }];
20094
+ })
20095
+ })
19977
20096
  }
19978
20097
  )
19979
20098
  ]
@@ -20035,7 +20154,8 @@ var POINT_HOVER_BG = "var(--cmp-chart-bg)";
20035
20154
  var POINT_HOVER_EXTENT = POINT_HOVER_RADIUS + POINT_HOVER_BORDER_WIDTH / 2;
20036
20155
  var BAND_MIN = 40;
20037
20156
  var VALUE_LABEL_GAP2 = 6;
20038
- var AREA_OPACITY = "var(--opacity-040)";
20157
+ var AREA_OPACITY_TOP = "30%";
20158
+ var AREA_OPACITY_BOTTOM = "var(--opacity-005)";
20039
20159
  var LINE_DATA_LABEL_COLOR = "var(--cmp-chart-bar-dataLabel-color-default)";
20040
20160
  var LINE_DATA_LABEL_TYPO = "typo-body-sm-medium";
20041
20161
  var LINE_DATA_LABEL_TYPO_HOVER = "typo-body-md-bold";
@@ -20131,6 +20251,7 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
20131
20251
  formatValue = defaultFormat2,
20132
20252
  height,
20133
20253
  onPointClick,
20254
+ tooltipFooter,
20134
20255
  className,
20135
20256
  style
20136
20257
  }, ref) {
@@ -20138,6 +20259,7 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
20138
20259
  const { ref: plotRef, size } = useElementSize();
20139
20260
  const { ref: axisTextRef, size: axisText } = useElementSize();
20140
20261
  const { ref: axisSampleRef, size: axisSample } = useElementSize();
20262
+ const gradientId = useId();
20141
20263
  const [hoveredCategory, setHoveredCategory] = useState(null);
20142
20264
  const colorAt = useCallback(
20143
20265
  (seriesIndex) => paletteColor(palette, seriesIndex, customColors),
@@ -20266,13 +20388,43 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
20266
20388
  {
20267
20389
  "aria-hidden": true,
20268
20390
  d,
20269
- style: { fill: colorAt(seriesIndex), fillOpacity: AREA_OPACITY }
20391
+ style: { fill: `url(#${gradientId}-area-${seriesIndex})` }
20270
20392
  },
20271
20393
  `area-${seriesIndex}-${runIndex}`
20272
20394
  );
20273
20395
  })
20274
20396
  );
20275
- }, [area, plotted, smooth, colorAt]);
20397
+ }, [area, plotted, smooth, gradientId]);
20398
+ const areaGradients = useMemo(() => {
20399
+ if (!area) return null;
20400
+ return /* @__PURE__ */ jsx("defs", { children: plotted.map((_, seriesIndex) => /* @__PURE__ */ jsxs(
20401
+ "linearGradient",
20402
+ {
20403
+ id: `${gradientId}-area-${seriesIndex}`,
20404
+ x1: "0",
20405
+ y1: "0",
20406
+ x2: "0",
20407
+ y2: "1",
20408
+ children: [
20409
+ /* @__PURE__ */ jsx(
20410
+ "stop",
20411
+ {
20412
+ offset: "0",
20413
+ style: { stopColor: colorAt(seriesIndex), stopOpacity: AREA_OPACITY_TOP }
20414
+ }
20415
+ ),
20416
+ /* @__PURE__ */ jsx(
20417
+ "stop",
20418
+ {
20419
+ offset: "1",
20420
+ style: { stopColor: colorAt(seriesIndex), stopOpacity: AREA_OPACITY_BOTTOM }
20421
+ }
20422
+ )
20423
+ ]
20424
+ },
20425
+ `area-gradient-${seriesIndex}`
20426
+ )) });
20427
+ }, [area, plotted, colorAt, gradientId]);
20276
20428
  const lines = useMemo(
20277
20429
  () => plotted.flatMap(
20278
20430
  (row, seriesIndex) => runsOf(row).map((run, runIndex) => {
@@ -20454,6 +20606,7 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
20454
20606
  }
20455
20607
  }
20456
20608
  ),
20609
+ areaGradients,
20457
20610
  areas,
20458
20611
  lines,
20459
20612
  pointHalos,
@@ -20469,7 +20622,16 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
20469
20622
  items: tooltipItems,
20470
20623
  anchor: tooltipAnchor,
20471
20624
  bounds: size,
20472
- gapX: { after: -4, before: -4 }
20625
+ gapX: { after: -4, before: -4 },
20626
+ footer: tooltipFooter?.({
20627
+ categoryIndex: hoveredCategory,
20628
+ name: categories[hoveredCategory] ?? "",
20629
+ points: rows.flatMap((row, seriesIndex) => {
20630
+ const point = row[hoveredCategory];
20631
+ if (point == null) return [];
20632
+ return [{ seriesIndex, categoryIndex: hoveredCategory, value: point.own }];
20633
+ })
20634
+ })
20473
20635
  }
20474
20636
  )
20475
20637
  ]
@@ -20487,9 +20649,11 @@ var SLineChart = /* @__PURE__ */ forwardRef(function SLineChart2({
20487
20649
  }
20488
20650
  );
20489
20651
  });
20490
- var DONUT_INNER_RATIO = 0.6;
20652
+ var DONUT_INNER_RATIO = 0.4;
20491
20653
  var LABEL_MIN_RATIO = 0.05;
20492
20654
  var PIE_LABEL_RADIUS_RATIO = 0.65;
20655
+ var HOVER_GROW = 4;
20656
+ var HOVER_CORNER = 2;
20493
20657
  var OPACITY_DEFAULT = "var(--cmp-chart-bar-opacity-default)";
20494
20658
  var OPACITY_DIMMED = "var(--cmp-chart-bar-opacity-dimmed)";
20495
20659
  var OPACITY_HOVER = 1;
@@ -20502,19 +20666,42 @@ var r2 = (value) => Math.round(value * 100) / 100;
20502
20666
  function polar(center, radius, angle) {
20503
20667
  return { x: center + radius * Math.sin(angle), y: center - radius * Math.cos(angle) };
20504
20668
  }
20505
- function slicePath(center, outer, inner, start, end) {
20669
+ var arc = (radius, large, sweep, p) => `A${r2(radius)} ${r2(radius)} 0 ${large} ${sweep} ${r2(p.x)} ${r2(p.y)}`;
20670
+ function fitCorner(corner, outer, inner, span) {
20671
+ if (corner <= 0 || outer <= 0) return 0;
20672
+ let fitted = Math.min(corner, (outer - inner) / 2);
20673
+ if (span < Math.PI) {
20674
+ const half = Math.sin(span / 2);
20675
+ fitted = Math.min(fitted, outer * half / (1 + half));
20676
+ if (inner > 0) fitted = Math.min(fitted, inner * half / (1 - half));
20677
+ }
20678
+ return fitted >= 0.5 ? fitted : 0;
20679
+ }
20680
+ function slicePath(center, outer, inner, start, end, corner = 0) {
20506
20681
  if (end - start >= Math.PI * 2 - 1e-6) {
20507
20682
  const ring = (radius) => `M${r2(center - radius)} ${r2(center)}A${r2(radius)} ${r2(radius)} 0 1 1 ${r2(center + radius)} ${r2(center)}A${r2(radius)} ${r2(radius)} 0 1 1 ${r2(center - radius)} ${r2(center)}Z`;
20508
20683
  return inner > 0 ? ring(outer) + ring(inner) : ring(outer);
20509
20684
  }
20510
- const large = end - start > Math.PI ? 1 : 0;
20511
- const o0 = polar(center, outer, start);
20512
- const o1 = polar(center, outer, end);
20513
- const outerArc = `M${r2(o0.x)} ${r2(o0.y)}A${r2(outer)} ${r2(outer)} 0 ${large} 1 ${r2(o1.x)} ${r2(o1.y)}`;
20514
- if (inner <= 0) return `${outerArc}L${r2(center)} ${r2(center)}Z`;
20515
- const i1 = polar(center, inner, end);
20516
- const i0 = polar(center, inner, start);
20517
- return `${outerArc}L${r2(i1.x)} ${r2(i1.y)}A${r2(inner)} ${r2(inner)} 0 ${large} 0 ${r2(i0.x)} ${r2(i0.y)}Z`;
20685
+ const span = end - start;
20686
+ const round = fitCorner(corner, outer, inner, span);
20687
+ const outerLine = Math.sqrt(Math.max(outer * outer - 2 * outer * round, 0));
20688
+ const outerPhi = round > 0 ? Math.asin(round / (outer - round)) : 0;
20689
+ const outerLarge = span - 2 * outerPhi > Math.PI ? 1 : 0;
20690
+ const o0 = polar(center, outerLine, start);
20691
+ let d = `M${r2(o0.x)} ${r2(o0.y)}`;
20692
+ if (round > 0) d += arc(round, 0, 1, polar(center, outer, start + outerPhi));
20693
+ d += arc(outer, outerLarge, 1, polar(center, outer, end - outerPhi));
20694
+ if (round > 0) d += arc(round, 0, 1, polar(center, outerLine, end));
20695
+ if (inner <= 0) return `${d}L${r2(center)} ${r2(center)}Z`;
20696
+ const innerLine = Math.sqrt(inner * inner + 2 * inner * round);
20697
+ const innerPhi = round > 0 ? Math.asin(round / (inner + round)) : 0;
20698
+ const innerLarge = span - 2 * innerPhi > Math.PI ? 1 : 0;
20699
+ const i0 = polar(center, innerLine, end);
20700
+ d += `L${r2(i0.x)} ${r2(i0.y)}`;
20701
+ if (round > 0) d += arc(round, 0, 1, polar(center, inner, end - innerPhi));
20702
+ d += arc(inner, innerLarge, 0, polar(center, inner, start + innerPhi));
20703
+ if (round > 0) d += arc(round, 0, 1, polar(center, innerLine, start));
20704
+ return `${d}Z`;
20518
20705
  }
20519
20706
  var RadialChart = /* @__PURE__ */ forwardRef(function RadialChart2({
20520
20707
  data,
@@ -20526,44 +20713,44 @@ var RadialChart = /* @__PURE__ */ forwardRef(function RadialChart2({
20526
20713
  showTooltip = true,
20527
20714
  formatValue = defaultFormat3,
20528
20715
  onSliceClick,
20716
+ tooltipFooter,
20529
20717
  className,
20530
20718
  style,
20531
20719
  innerRatio,
20532
- renderCenter,
20533
20720
  kind
20534
20721
  }, ref) {
20535
20722
  const { ref: plotRef, size } = useElementSize();
20536
20723
  const [hovered, setHovered] = useState(null);
20537
- const { arcs, total } = useMemo(() => {
20724
+ const arcs = useMemo(() => {
20538
20725
  const effective = palette === "custom" && !colors?.length ? "multi" : palette;
20539
- const valid = data.map((slice, index) => ({ ...slice, index })).filter((slice) => Number.isFinite(slice.value) && slice.value > 0);
20540
- const sum = valid.reduce((acc, slice) => acc + slice.value, 0);
20726
+ const valid = data.map((slice2, index) => ({ ...slice2, index })).filter((slice2) => Number.isFinite(slice2.value) && slice2.value > 0);
20727
+ const sum = valid.reduce((acc, slice2) => acc + slice2.value, 0);
20541
20728
  let angle = 0;
20542
- const list = valid.map((slice) => {
20543
- const ratio = slice.value / sum;
20729
+ const list = valid.map((slice2) => {
20730
+ const ratio = slice2.value / sum;
20544
20731
  const start = angle;
20545
20732
  angle += ratio * Math.PI * 2;
20546
20733
  return {
20547
- index: slice.index,
20548
- name: slice.name,
20549
- value: slice.value,
20734
+ index: slice2.index,
20735
+ name: slice2.name,
20736
+ value: slice2.value,
20550
20737
  ratio,
20551
20738
  start,
20552
20739
  end: angle,
20553
- color: paletteColor(effective, slice.index, colors)
20740
+ color: paletteColor(effective, slice2.index, colors)
20554
20741
  };
20555
20742
  });
20556
- return { arcs: list, total: sum };
20743
+ return list;
20557
20744
  }, [data, palette, colors]);
20558
20745
  const diameter = size.width;
20559
20746
  const center = diameter / 2;
20560
- const outer = center;
20747
+ const outer = Math.max(center - HOVER_GROW, 0);
20561
20748
  const inner = outer * innerRatio;
20562
- const hoveredArc = arcs.find((arc) => arc.index === hovered) ?? null;
20749
+ const hoveredArc = arcs.find((arc2) => arc2.index === hovered) ?? null;
20563
20750
  const legend = showLegend ? /* @__PURE__ */ jsx(
20564
20751
  ChartLegend,
20565
20752
  {
20566
- items: arcs.map((arc) => ({ name: arc.name, color: arc.color })),
20753
+ items: arcs.map((arc2) => ({ name: arc2.name, color: arc2.color })),
20567
20754
  activeIndex: hoveredArc ? arcs.indexOf(hoveredArc) : null
20568
20755
  }
20569
20756
  ) : null;
@@ -20574,6 +20761,17 @@ var RadialChart = /* @__PURE__ */ forwardRef(function RadialChart2({
20574
20761
  return { left: point.x, right: point.x, top: point.y };
20575
20762
  }, [hoveredArc, diameter, center, outer, inner]);
20576
20763
  const labelRadius = inner > 0 ? (outer + inner) / 2 : outer * PIE_LABEL_RADIUS_RATIO;
20764
+ const slice = (target) => {
20765
+ const picked = hovered === target.index;
20766
+ return slicePath(
20767
+ center,
20768
+ picked ? outer + HOVER_GROW : outer,
20769
+ picked ? Math.max(inner - HOVER_GROW, 0) : inner,
20770
+ target.start,
20771
+ target.end,
20772
+ picked ? HOVER_CORNER : 0
20773
+ );
20774
+ };
20577
20775
  return /* @__PURE__ */ jsx(
20578
20776
  ChartFrame,
20579
20777
  {
@@ -20603,34 +20801,34 @@ var RadialChart = /* @__PURE__ */ forwardRef(function RadialChart2({
20603
20801
  style: { fill: "var(--cmp-chart-grid-line-color)" }
20604
20802
  }
20605
20803
  )
20606
- ) : arcs.map((arc) => {
20607
- const opacity = hovered == null ? OPACITY_DEFAULT : hovered === arc.index ? OPACITY_HOVER : OPACITY_DIMMED;
20804
+ ) : arcs.map((arc2) => {
20805
+ const opacity = hovered == null ? OPACITY_DEFAULT : hovered === arc2.index ? OPACITY_HOVER : OPACITY_DIMMED;
20608
20806
  return /* @__PURE__ */ jsx(
20609
20807
  "path",
20610
20808
  {
20611
- d: slicePath(center, outer, inner, arc.start, arc.end),
20809
+ d: slice(arc2),
20612
20810
  fillRule: "evenodd",
20613
20811
  className: "transition-opacity duration-200 ease-out motion-reduce:transition-none",
20614
20812
  style: {
20615
- fill: arc.color,
20813
+ fill: arc2.color,
20616
20814
  opacity,
20617
20815
  cursor: onSliceClick ? "pointer" : void 0
20618
20816
  },
20619
- onMouseEnter: () => setHovered(arc.index),
20817
+ onMouseEnter: () => setHovered(arc2.index),
20620
20818
  onClick: onSliceClick ? () => onSliceClick({
20621
- index: arc.index,
20622
- name: arc.name,
20623
- value: arc.value,
20624
- ratio: arc.ratio
20819
+ index: arc2.index,
20820
+ name: arc2.name,
20821
+ value: arc2.value,
20822
+ ratio: arc2.ratio
20625
20823
  }) : void 0,
20626
- children: /* @__PURE__ */ jsx("title", { children: `${arc.name} ${formatValue(arc.value)} (${formatRatio(arc.ratio)})` })
20824
+ children: /* @__PURE__ */ jsx("title", { children: `${arc2.name} ${formatValue(arc2.value)} (${formatRatio(arc2.ratio)})` })
20627
20825
  },
20628
- `slice-${arc.index}`
20826
+ `slice-${arc2.index}`
20629
20827
  );
20630
20828
  }),
20631
- showValueLabel && arcs.map((arc) => {
20632
- if (arc.ratio < LABEL_MIN_RATIO) return null;
20633
- const point = polar(center, labelRadius, (arc.start + arc.end) / 2);
20829
+ showValueLabel && arcs.map((arc2) => {
20830
+ if (arc2.ratio < LABEL_MIN_RATIO) return null;
20831
+ const point = polar(center, labelRadius, (arc2.start + arc2.end) / 2);
20634
20832
  return /* @__PURE__ */ jsx(
20635
20833
  "text",
20636
20834
  {
@@ -20642,25 +20840,16 @@ var RadialChart = /* @__PURE__ */ forwardRef(function RadialChart2({
20642
20840
  className: "pointer-events-none typo-body-sm-bold transition-opacity duration-200 ease-out motion-reduce:transition-none",
20643
20841
  style: {
20644
20842
  fill: "var(--sys-color-fg-inverse)",
20645
- opacity: hovered != null && hovered !== arc.index ? OPACITY_DIMMED : void 0
20843
+ opacity: hovered != null && hovered !== arc2.index ? OPACITY_DIMMED : void 0
20646
20844
  },
20647
- children: formatRatio(arc.ratio)
20845
+ children: formatRatio(arc2.ratio)
20648
20846
  },
20649
- `label-${arc.index}`
20847
+ `label-${arc2.index}`
20650
20848
  );
20651
20849
  })
20652
20850
  ]
20653
20851
  }
20654
20852
  ),
20655
- renderCenter && diameter > 0 && // 가운데 글자는 조각을 가리지 않도록 마우스를 통과시킨다.
20656
- /* @__PURE__ */ jsx(
20657
- "div",
20658
- {
20659
- className: "pointer-events-none absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 flex-col items-center text-center",
20660
- style: { maxWidth: inner * Math.SQRT2 },
20661
- children: renderCenter(total)
20662
- }
20663
- ),
20664
20853
  showTooltip && hoveredArc && tooltipAnchor && /* @__PURE__ */ jsx(
20665
20854
  ChartTooltip,
20666
20855
  {
@@ -20673,19 +20862,19 @@ var RadialChart = /* @__PURE__ */ forwardRef(function RadialChart2({
20673
20862
  }
20674
20863
  ],
20675
20864
  anchor: tooltipAnchor,
20676
- bounds: size
20865
+ bounds: size,
20866
+ footer: tooltipFooter?.({
20867
+ index: hoveredArc.index,
20868
+ name: hoveredArc.name,
20869
+ value: hoveredArc.value,
20870
+ ratio: hoveredArc.ratio
20871
+ })
20677
20872
  }
20678
20873
  )
20679
20874
  ] })
20680
20875
  }
20681
20876
  );
20682
20877
  });
20683
- function RadialCenter({ label, value }) {
20684
- return /* @__PURE__ */ jsxs(Fragment, { children: [
20685
- label != null && /* @__PURE__ */ jsx("span", { className: cn("typo-body-sm-medium text-(--cmp-chart-axis-color)"), children: label }),
20686
- /* @__PURE__ */ jsx("span", { className: "typo-body-lg-bold break-all text-(--cmp-chart-bar-dataLabel-color-default)", children: value })
20687
- ] });
20688
- }
20689
20878
  var SPieChart = /* @__PURE__ */ forwardRef(function SPieChart2({
20690
20879
  palette = "multi",
20691
20880
  showValueLabel = false,
@@ -20709,17 +20898,12 @@ var SPieChart = /* @__PURE__ */ forwardRef(function SPieChart2({
20709
20898
  }
20710
20899
  );
20711
20900
  });
20712
- var defaultFormat4 = (value) => value.toLocaleString();
20713
20901
  var SDonutChart = /* @__PURE__ */ forwardRef(function SDonutChart2({
20714
- centerLabel,
20715
- centerValue,
20716
- hideCenter = false,
20717
20902
  palette = "multi",
20718
20903
  showValueLabel = false,
20719
20904
  showLegend = true,
20720
20905
  legendPosition = "top",
20721
20906
  showTooltip = true,
20722
- formatValue = defaultFormat4,
20723
20907
  ...props
20724
20908
  }, ref) {
20725
20909
  return /* @__PURE__ */ jsx(
@@ -20732,10 +20916,8 @@ var SDonutChart = /* @__PURE__ */ forwardRef(function SDonutChart2({
20732
20916
  showLegend,
20733
20917
  legendPosition,
20734
20918
  showTooltip,
20735
- formatValue,
20736
20919
  innerRatio: DONUT_INNER_RATIO,
20737
- kind: "\uB3C4\uB11B \uADF8\uB798\uD504",
20738
- renderCenter: hideCenter ? void 0 : (total) => /* @__PURE__ */ jsx(RadialCenter, { label: centerLabel, value: centerValue ?? formatValue(total) })
20920
+ kind: "\uB3C4\uB11B \uADF8\uB798\uD504"
20739
20921
  }
20740
20922
  );
20741
20923
  });
@@ -22021,7 +22203,7 @@ var PaletteItem = ({
22021
22203
  className,
22022
22204
  onSelect,
22023
22205
  children
22024
- }) => asMenu ? /* @__PURE__ */ jsx(RDropdown3.Item, { title: label, "aria-label": label, className, onSelect, children }) : /* @__PURE__ */ jsx("button", { type: "button", title: label, "aria-label": label, className, onClick: onSelect, children });
22206
+ }) => asMenu ? /* @__PURE__ */ jsx(RDropdown5.Item, { title: label, "aria-label": label, className, onSelect, children }) : /* @__PURE__ */ jsx("button", { type: "button", title: label, "aria-label": label, className, onClick: onSelect, children });
22025
22207
  var ColorPalette = ({
22026
22208
  colors,
22027
22209
  columns,
@@ -22153,7 +22335,7 @@ var TableMenuItem = ({
22153
22335
  disabled,
22154
22336
  onSelect
22155
22337
  }) => /* @__PURE__ */ jsx(
22156
- RDropdown3.Item,
22338
+ RDropdown5.Item,
22157
22339
  {
22158
22340
  className: cn(menuItemClass, menuItemDisabledClass),
22159
22341
  disabled,
@@ -22320,8 +22502,8 @@ function EditorToolbarBar({
22320
22502
  const node = (item4) => {
22321
22503
  switch (item4) {
22322
22504
  case "heading":
22323
- return /* @__PURE__ */ jsxs(RDropdown3.Root, { modal: !insideModal, children: [
22324
- /* @__PURE__ */ jsx(RDropdown3.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(
22505
+ return /* @__PURE__ */ jsxs(RDropdown5.Root, { modal: !insideModal, children: [
22506
+ /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(
22325
22507
  ToolbarButton,
22326
22508
  {
22327
22509
  label: "\uC81C\uBAA9 \uB2E8\uACC4",
@@ -22334,9 +22516,9 @@ function EditorToolbarBar({
22334
22516
  ]
22335
22517
  }
22336
22518
  ) }),
22337
- /* @__PURE__ */ jsx(RDropdown3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown3.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
22519
+ /* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown5.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
22338
22520
  /* @__PURE__ */ jsx(
22339
- RDropdown3.Item,
22521
+ RDropdown5.Item,
22340
22522
  {
22341
22523
  className: menuItemClass,
22342
22524
  onSelect: () => chain()?.setParagraph().run(),
@@ -22344,7 +22526,7 @@ function EditorToolbarBar({
22344
22526
  }
22345
22527
  ),
22346
22528
  SEDITOR_HEADING_LEVELS.map((level) => /* @__PURE__ */ jsx(
22347
- RDropdown3.Item,
22529
+ RDropdown5.Item,
22348
22530
  {
22349
22531
  className: menuItemClass,
22350
22532
  onSelect: () => chain()?.setHeading({ level }).run(),
@@ -22355,13 +22537,13 @@ function EditorToolbarBar({
22355
22537
  ] }) })
22356
22538
  ] }, item4);
22357
22539
  case "fontSize":
22358
- return /* @__PURE__ */ jsxs(RDropdown3.Root, { modal: !insideModal, children: [
22359
- /* @__PURE__ */ jsx(RDropdown3.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uAE00\uC790 \uD06C\uAE30", disabled: off, className: "px-[6px]", children: [
22540
+ return /* @__PURE__ */ jsxs(RDropdown5.Root, { modal: !insideModal, children: [
22541
+ /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uAE00\uC790 \uD06C\uAE30", disabled: off, className: "px-[6px]", children: [
22360
22542
  /* @__PURE__ */ jsx("span", { className: "text-[12px] leading-[20px]", children: activeFontSize ?? FONT_SIZE_DEFAULT_LABEL }),
22361
22543
  /* @__PURE__ */ jsx(SIcon, { name: "caretDown", size: 12 })
22362
22544
  ] }) }),
22363
- /* @__PURE__ */ jsx(RDropdown3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(
22364
- RDropdown3.Content,
22545
+ /* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(
22546
+ RDropdown5.Content,
22365
22547
  {
22366
22548
  sideOffset: 4,
22367
22549
  align: "start",
@@ -22369,7 +22551,7 @@ function EditorToolbarBar({
22369
22551
  style: { maxHeight: FONT_SIZE_MENU_MAX_HEIGHT },
22370
22552
  children: [
22371
22553
  /* @__PURE__ */ jsx(
22372
- RDropdown3.Item,
22554
+ RDropdown5.Item,
22373
22555
  {
22374
22556
  className: cn(menuItemClass, activeFontSize === null && menuItemSelectedClass),
22375
22557
  title: `${FONT_SIZE_DEFAULT_LABEL} (\uBCF8\uBB38 ${SEDITOR_DEFAULT_FONT_SIZE}px)`,
@@ -22378,7 +22560,7 @@ function EditorToolbarBar({
22378
22560
  }
22379
22561
  ),
22380
22562
  SEDITOR_FONT_SIZES.map((size) => /* @__PURE__ */ jsx(
22381
- RDropdown3.Item,
22563
+ RDropdown5.Item,
22382
22564
  {
22383
22565
  ref: activeFontSize === size ? (el) => {
22384
22566
  el?.scrollIntoView({ block: "nearest" });
@@ -22470,9 +22652,9 @@ function EditorToolbarBar({
22470
22652
  },
22471
22653
  item4
22472
22654
  );
22473
- return /* @__PURE__ */ jsxs(RDropdown3.Root, { modal: !insideModal, children: [
22474
- /* @__PURE__ */ jsx(RDropdown3.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsx(ToolbarButton, { label: "\uAE00\uC790\uC0C9", disabled: off, children: /* @__PURE__ */ jsx(ColorIndicator, { color: off ? "currentColor" : activeColor, children: /* @__PURE__ */ jsx(IconTextColor, { size: ICON_SIZE }) }) }) }),
22475
- /* @__PURE__ */ jsx(RDropdown3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(RDropdown3.Content, { sideOffset: 4, align: "start", className: menuClass, children: /* @__PURE__ */ jsx(
22655
+ return /* @__PURE__ */ jsxs(RDropdown5.Root, { modal: !insideModal, children: [
22656
+ /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsx(ToolbarButton, { label: "\uAE00\uC790\uC0C9", disabled: off, children: /* @__PURE__ */ jsx(ColorIndicator, { color: off ? "currentColor" : activeColor, children: /* @__PURE__ */ jsx(IconTextColor, { size: ICON_SIZE }) }) }) }),
22657
+ /* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(RDropdown5.Content, { sideOffset: 4, align: "start", className: menuClass, children: /* @__PURE__ */ jsx(
22476
22658
  ColorPalette,
22477
22659
  {
22478
22660
  asMenu: true,
@@ -22578,14 +22760,14 @@ function EditorToolbarBar({
22578
22760
  case "list": {
22579
22761
  const ListIcon = state2.orderedList ? IconOrderedList : state2.taskList ? IconTaskList : IconBulletList;
22580
22762
  const listActive = state2.bulletList || state2.orderedList || state2.taskList;
22581
- return /* @__PURE__ */ jsxs(RDropdown3.Root, { modal: !insideModal, children: [
22582
- /* @__PURE__ */ jsx(RDropdown3.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uBAA9\uB85D", active: listActive, disabled: off, className: "px-[4px]", children: [
22763
+ return /* @__PURE__ */ jsxs(RDropdown5.Root, { modal: !insideModal, children: [
22764
+ /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uBAA9\uB85D", active: listActive, disabled: off, className: "px-[4px]", children: [
22583
22765
  /* @__PURE__ */ jsx(ListIcon, { size: ICON_SIZE }),
22584
22766
  /* @__PURE__ */ jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
22585
22767
  ] }) }),
22586
- /* @__PURE__ */ jsx(RDropdown3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown3.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
22768
+ /* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown5.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
22587
22769
  /* @__PURE__ */ jsxs(
22588
- RDropdown3.Item,
22770
+ RDropdown5.Item,
22589
22771
  {
22590
22772
  className: menuItemClass,
22591
22773
  onSelect: () => chain()?.toggleBulletList().run(),
@@ -22596,7 +22778,7 @@ function EditorToolbarBar({
22596
22778
  }
22597
22779
  ),
22598
22780
  /* @__PURE__ */ jsxs(
22599
- RDropdown3.Item,
22781
+ RDropdown5.Item,
22600
22782
  {
22601
22783
  className: menuItemClass,
22602
22784
  onSelect: () => chain()?.toggleOrderedList().run(),
@@ -22607,7 +22789,7 @@ function EditorToolbarBar({
22607
22789
  }
22608
22790
  ),
22609
22791
  /* @__PURE__ */ jsxs(
22610
- RDropdown3.Item,
22792
+ RDropdown5.Item,
22611
22793
  {
22612
22794
  className: menuItemClass,
22613
22795
  onSelect: () => chain()?.toggleTaskList().run(),
@@ -22711,17 +22893,17 @@ function EditorToolbarBar({
22711
22893
  );
22712
22894
  case "table":
22713
22895
  return /* @__PURE__ */ jsxs(
22714
- RDropdown3.Root,
22896
+ RDropdown5.Root,
22715
22897
  {
22716
22898
  open: tableOpen,
22717
22899
  onOpenChange: setTableOpen,
22718
22900
  modal: !insideModal,
22719
22901
  children: [
22720
- /* @__PURE__ */ jsx(RDropdown3.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uD45C", active: state2.inTable, disabled: off, className: "px-[6px]", children: [
22902
+ /* @__PURE__ */ jsx(RDropdown5.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxs(ToolbarButton, { label: "\uD45C", active: state2.inTable, disabled: off, className: "px-[6px]", children: [
22721
22903
  /* @__PURE__ */ jsx(IconTable, { size: ICON_SIZE }),
22722
22904
  /* @__PURE__ */ jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
22723
22905
  ] }) }),
22724
- /* @__PURE__ */ jsx(RDropdown3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown3.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
22906
+ /* @__PURE__ */ jsx(RDropdown5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(RDropdown5.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
22725
22907
  !state2.inTable && /* @__PURE__ */ jsxs(Fragment, { children: [
22726
22908
  /* @__PURE__ */ jsx(
22727
22909
  TableSizePicker,
@@ -22733,7 +22915,7 @@ function EditorToolbarBar({
22733
22915
  }
22734
22916
  }
22735
22917
  ),
22736
- /* @__PURE__ */ jsx(RDropdown3.Separator, { className: menuSeparatorClass })
22918
+ /* @__PURE__ */ jsx(RDropdown5.Separator, { className: menuSeparatorClass })
22737
22919
  ] }),
22738
22920
  /* @__PURE__ */ jsx(
22739
22921
  TableMenuItem,
@@ -22767,7 +22949,7 @@ function EditorToolbarBar({
22767
22949
  onSelect: () => chain()?.addColumnAfter().run()
22768
22950
  }
22769
22951
  ),
22770
- /* @__PURE__ */ jsx(RDropdown3.Separator, { className: menuSeparatorClass }),
22952
+ /* @__PURE__ */ jsx(RDropdown5.Separator, { className: menuSeparatorClass }),
22771
22953
  /* @__PURE__ */ jsx(
22772
22954
  TableMenuItem,
22773
22955
  {
@@ -22800,7 +22982,7 @@ function EditorToolbarBar({
22800
22982
  onSelect: () => chain()?.toggleHeaderColumn().run()
22801
22983
  }
22802
22984
  ),
22803
- /* @__PURE__ */ jsx(RDropdown3.Separator, { className: menuSeparatorClass }),
22985
+ /* @__PURE__ */ jsx(RDropdown5.Separator, { className: menuSeparatorClass }),
22804
22986
  /* @__PURE__ */ jsx(
22805
22987
  TableMenuItem,
22806
22988
  {
@@ -26753,6 +26935,6 @@ function STimeRangePicker({
26753
26935
  );
26754
26936
  }
26755
26937
 
26756
- export { ACCOUNT_LIST_BOX_ICONS, ACCOUNT_LIST_BOX_ITEM_TONES, ACCOUNT_LIST_BOX_LABELS, ACCOUNT_LIST_BOX_LAYOUT, ACCOUNT_LIST_BOX_TONE_CONFIG, BADGE_COLORS, BAR_GAP, BAR_SIZE_MAX, BAR_SIZE_MIN, BUTTON_COLORS, BUTTON_SIZES, CALENDAR_BOARD_DAY_BG, CALENDAR_BOARD_DAY_COLORS, CALENDAR_BOARD_EVENT_COLORS, CALENDAR_BOARD_EVENT_PRESETS, CALENDAR_BOARD_MAX_VISIBLE_EVENTS, CHAT_ATTACHED_FILE_CONFIG, CHAT_FILE_CONFIG, CHAT_MESSAGE_DIRECTIONS, CHAT_MESSAGE_READ_STATUSES, CHAT_MESSAGE_VARIANTS, CHIP_COLORS, COLOR_KEYS, FIELD_WIDTH_GRADES, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_FULL_LOGO_WIDTH, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, GNB_SYSTEM_COLORS, GNB_SYSTEM_COLOR_CONFIG, GNB_SYSTEM_LAYOUT, GNB_SYSTEM_PLACEMENTS, GNB_SYSTEM_TOP_COLOR_CONFIG, ICONS, IMAGE_FITS, LAUNCHER_LIST_BOX_LAYOUT, LAUNCHER_LIST_BOX_LOGO_HEIGHT, LAUNCHER_LIST_BOX_LOGO_SERVICE_GAP, LAUNCHER_LIST_BOX_TRAILING_ICON, LAUNCHER_LIST_BOX_WIDTH, LAUNCHER_SERVICES, LAUNCHER_SERVICE_CATALOG, LOGO_DEFAULT_SIZE, LOGO_NAMES, PAGE_BACKGROUNDS, PAGE_CONTENT_HEIGHTS, PAGE_CONTENT_WIDTHS, PAGE_HEADER_VARIANTS, RangeCalendar, SAccountListBox, SActionModal, SBadge, SBarChart, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCalendarBoard, SCallout, SCard, SChatAttachedFile2 as SChatAttachedFile, SChatFile2 as SChatFile, SChatInput2 as SChatInput, SChatMessage2 as SChatMessage, SChatSystemMessage2 as SChatSystemMessage, SCheckbox, SChip2 as SChip, SChipFilter, SChipInput, SCircleProgress, SConfirmModal, SDatePicker, SDatePickerMonthListbox, SDatePickerYearListbox, SDateRangePicker, SDivider, SDonutChart, SDraggableGroup, SDraggableItem2 as SDraggableItem, SDraggableList, SDraggableProvider, SDrawer, SDropdownButton2 as SDropdownButton, SEDITOR_DEFAULT_FONT_SIZE, SEDITOR_HEADING_LABELS, SEDITOR_HEADING_LEVELS, SEditor, SExpansionItem, SExpansionList2 as SExpansionList, SField, SFilePicker, SForm, SGhostButton, SGnb, SGnbSystem, SGnbSystemContext, SGuide, SIcon, SImage, SInput, SKeyValueTable, SLAYOUT_MIN_WIDTH, SLauncherListBox, SLayout, SLayoutContext, SLineChart, SLinearProgress, SList2 as SList, SListItem2 as SListItem, SLoadingContainer, SLoadingModal, SLoadingViewport, SLoginCard2 as SLoginCard, SLogo, SModal, SModalOutlet, SNumberInput, SPage, SPageHeader, SPagination, SPieChart, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioCard, SRadioCardGroup, SRadioGroup, SSPLITTER_UNITS, SScrollArea, SSearchInput, SSectionHeaderCard2 as SSectionHeaderCard, SSelect2 as SSelect, SSplitter2 as SSplitter, SStepper, SSwitch, SSystemActionButton, STEPPER_SIZES, STable, STableBar, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, SToast, SToastContainer, SToggle, STooltip2 as STooltip, STree2 as STree, STreeItem2 as STreeItem, SYSTEM_ACTION_BUTTON_COLORS, SYSTEM_ACTION_BUTTON_COLOR_CONFIG, SYSTEM_ACTION_BUTTON_LAYOUT, SYSTEM_ACTION_BUTTON_TYPES, SYSTEM_ACTION_BUTTON_TYPE_CONFIG, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, fieldWidthValue, fileExtension, findGnbAncestors, findGnbRailValue, formatFileSize, isColorKey, isFieldWidthGrade, loading, normalizeExtension, resolveColor, useSLayout };
26938
+ export { ACCOUNT_LIST_BOX_ICONS, ACCOUNT_LIST_BOX_ITEM_TONES, ACCOUNT_LIST_BOX_LABELS, ACCOUNT_LIST_BOX_LAYOUT, ACCOUNT_LIST_BOX_TONE_CONFIG, BADGE_COLORS, BAR_GAP, BAR_SIZE_MAX, BAR_SIZE_MIN, BUTTON_COLORS, BUTTON_SIZES, CALENDAR_BOARD_DAY_BG, CALENDAR_BOARD_DAY_COLORS, CALENDAR_BOARD_EVENT_COLORS, CALENDAR_BOARD_EVENT_PRESETS, CALENDAR_BOARD_MAX_VISIBLE_EVENTS, CHAT_ATTACHED_FILE_CONFIG, CHAT_FILE_CONFIG, CHAT_MESSAGE_DIRECTIONS, CHAT_MESSAGE_READ_STATUSES, CHAT_MESSAGE_VARIANTS, CHIP_COLORS, COLOR_KEYS, FIELD_WIDTH_GRADES, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_FULL_LOGO_WIDTH, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, GNB_SYSTEM_COLORS, GNB_SYSTEM_COLOR_CONFIG, GNB_SYSTEM_LAYOUT, GNB_SYSTEM_PLACEMENTS, GNB_SYSTEM_TOP_COLOR_CONFIG, ICONS, IMAGE_FITS, LAUNCHER_LIST_BOX_LAYOUT, LAUNCHER_LIST_BOX_LOGO_HEIGHT, LAUNCHER_LIST_BOX_LOGO_SERVICE_GAP, LAUNCHER_LIST_BOX_TRAILING_ICON, LAUNCHER_LIST_BOX_WIDTH, LAUNCHER_SERVICES, LAUNCHER_SERVICE_CATALOG, LOGO_DEFAULT_SIZE, LOGO_NAMES, PAGE_BACKGROUNDS, PAGE_CONTENT_HEIGHTS, PAGE_CONTENT_WIDTHS, PAGE_HEADER_VARIANTS, PAGE_PADDINGS, RangeCalendar, SAccountListBox, SActionModal, SBadge, SBarChart, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCalendarBoard, SCallout, SCard, SChatAttachedFile2 as SChatAttachedFile, SChatFile2 as SChatFile, SChatInput2 as SChatInput, SChatMessage2 as SChatMessage, SChatSystemMessage2 as SChatSystemMessage, SCheckbox, SChip2 as SChip, SChipFilter, SChipInput, SCircleProgress, SConfirmModal, SDatePicker, SDatePickerMonthListbox, SDatePickerYearListbox, SDateRangePicker, SDivider, SDonutChart, SDraggableGroup, SDraggableItem2 as SDraggableItem, SDraggableList, SDraggableProvider, SDrawer, SDropdownButton2 as SDropdownButton, SEDITOR_DEFAULT_FONT_SIZE, SEDITOR_HEADING_LABELS, SEDITOR_HEADING_LEVELS, SEditor, SExpansionItem, SExpansionList2 as SExpansionList, SField, SFilePicker, SForm, SGhostButton, SGnb, SGnbSystem, SGnbSystemContext, SGuide, SIcon, SImage, SInput, SKeyValueTable, SLAYOUT_MIN_WIDTH, SLauncherListBox, SLayout, SLayoutContext, SLineChart, SLinearProgress, SList2 as SList, SListItem2 as SListItem, SLoadingContainer, SLoadingModal, SLoadingViewport, SLoginCard2 as SLoginCard, SLogo, SMeatballButton2 as SMeatballButton, SModal, SModalOutlet, SNumberInput, SPage, SPageHeader, SPagination, SPieChart, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioCard, SRadioCardGroup, SRadioGroup, SSPLITTER_UNITS, SScrollArea, SSearchInput, SSectionHeaderCard2 as SSectionHeaderCard, SSelect2 as SSelect, SSplitter2 as SSplitter, SStepper, SSwitch, SSystemActionButton, STEPPER_SIZES, STable, STableBar, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, SToast, SToastContainer, SToggle, STooltip2 as STooltip, STree2 as STree, STreeItem2 as STreeItem, SYSTEM_ACTION_BUTTON_COLORS, SYSTEM_ACTION_BUTTON_COLOR_CONFIG, SYSTEM_ACTION_BUTTON_LAYOUT, SYSTEM_ACTION_BUTTON_TYPES, SYSTEM_ACTION_BUTTON_TYPE_CONFIG, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, fieldWidthValue, fileExtension, findGnbAncestors, findGnbRailValue, formatFileSize, isColorKey, isFieldWidthGrade, loading, normalizeExtension, resolveColor, useSLayout };
26757
26939
  //# sourceMappingURL=index.js.map
26758
26940
  //# sourceMappingURL=index.js.map