sellmate-design-system-react 9.0.0-beta.61 → 9.0.0-beta.62
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/AGENTS.md +27 -7
- package/dist/components/SBarChart/README.md +15 -0
- package/dist/components/SBarChart/SBarChart.d.ts +15 -1
- package/dist/components/SBarChart/index.d.ts +1 -1
- package/dist/components/SCallout/README.md +1 -0
- package/dist/components/SCallout/SCallout.d.ts +6 -1
- package/dist/components/SDonutChart/README.md +2 -4
- package/dist/components/SDonutChart/SDonutChart.d.ts +9 -10
- package/dist/components/SGhostButton/README.md +2 -0
- package/dist/components/SLineChart/README.md +15 -0
- package/dist/components/SLineChart/SLineChart.d.ts +15 -1
- package/dist/components/SLineChart/index.d.ts +1 -1
- package/dist/components/SLineChart/lineChart.config.d.ts +8 -5
- package/dist/components/SMeatballButton/README.md +67 -0
- package/dist/components/SMeatballButton/SMeatballButton.d.ts +36 -0
- package/dist/components/SMeatballButton/index.d.ts +1 -0
- package/dist/components/SPieChart/README.md +1 -0
- package/dist/components/SPieChart/SPieChart.d.ts +6 -1
- package/dist/index.cjs +329 -153
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +328 -153
- package/dist/index.js.map +1 -1
- package/dist/lib/chart/radial.d.ts +22 -11
- package/dist/lib/chart/tooltip.d.ts +18 -1
- package/dist/lib/dropdown-menu.d.ts +19 -0
- package/dist/llms-full.txt +126 -11
- package/dist/llms.txt +29 -9
- package/dist/styles.css +6 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -10,7 +10,7 @@ var reactDom = require('react-dom');
|
|
|
10
10
|
var RCheckbox = require('@radix-ui/react-checkbox');
|
|
11
11
|
var client = require('react-dom/client');
|
|
12
12
|
var RTooltip = require('@radix-ui/react-tooltip');
|
|
13
|
-
var
|
|
13
|
+
var RDropdown5 = require('@radix-ui/react-dropdown-menu');
|
|
14
14
|
var RSwitch = require('@radix-ui/react-switch');
|
|
15
15
|
var RDialog = require('@radix-ui/react-dialog');
|
|
16
16
|
var Ariakit = require('@ariakit/react');
|
|
@@ -36,7 +36,7 @@ function _interopNamespace(e) {
|
|
|
36
36
|
var RPopover12__namespace = /*#__PURE__*/_interopNamespace(RPopover12);
|
|
37
37
|
var RCheckbox__namespace = /*#__PURE__*/_interopNamespace(RCheckbox);
|
|
38
38
|
var RTooltip__namespace = /*#__PURE__*/_interopNamespace(RTooltip);
|
|
39
|
-
var
|
|
39
|
+
var RDropdown5__namespace = /*#__PURE__*/_interopNamespace(RDropdown5);
|
|
40
40
|
var RSwitch__namespace = /*#__PURE__*/_interopNamespace(RSwitch);
|
|
41
41
|
var RDialog__namespace = /*#__PURE__*/_interopNamespace(RDialog);
|
|
42
42
|
var Ariakit__namespace = /*#__PURE__*/_interopNamespace(Ariakit);
|
|
@@ -8035,8 +8035,8 @@ function renderItems(message, depth = 1) {
|
|
|
8035
8035
|
});
|
|
8036
8036
|
return out;
|
|
8037
8037
|
}
|
|
8038
|
-
var SCallout = /* @__PURE__ */ react.forwardRef(function SCallout2({ type = "default", message = [], children, className, style }, ref) {
|
|
8039
|
-
const
|
|
8038
|
+
var SCallout = /* @__PURE__ */ react.forwardRef(function SCallout2({ type = "default", showTitle = true, message = [], children, className, style }, ref) {
|
|
8039
|
+
const hasDangerTitle = type === "danger" && showTitle;
|
|
8040
8040
|
const surface = SURFACE[type];
|
|
8041
8041
|
const vars = {
|
|
8042
8042
|
"--co-bg": surface.bg,
|
|
@@ -8055,7 +8055,7 @@ var SCallout = /* @__PURE__ */ react.forwardRef(function SCallout2({ type = "def
|
|
|
8055
8055
|
),
|
|
8056
8056
|
style: { ...vars, ...style },
|
|
8057
8057
|
children: [
|
|
8058
|
-
|
|
8058
|
+
hasDangerTitle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8059
8059
|
"div",
|
|
8060
8060
|
{
|
|
8061
8061
|
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]",
|
|
@@ -8382,6 +8382,58 @@ function clampToAvailableWidth(value, availableWidth) {
|
|
|
8382
8382
|
const css = typeof value === "number" ? `${value}px` : value;
|
|
8383
8383
|
return `min(${css}, ${availableWidth})`;
|
|
8384
8384
|
}
|
|
8385
|
+
var VIEWPORT_PADDING = 12;
|
|
8386
|
+
var itemClass = cn(
|
|
8387
|
+
"flex min-h-[28px] cursor-pointer select-none items-center gap-[8px] rounded-[2px] px-[12px] py-[4px] text-[12px] leading-[20px] outline-none",
|
|
8388
|
+
"text-[color:var(--sys-color-fg-secondary)]",
|
|
8389
|
+
"data-[disabled]:cursor-not-allowed data-[disabled]:text-[color:var(--cmp-button-text-disabled)]",
|
|
8390
|
+
"data-[highlighted]:bg-[var(--sys-color-bg-accent)] data-[highlighted]:text-[color:var(--sys-color-fg-inverse)]"
|
|
8391
|
+
);
|
|
8392
|
+
function DropdownMenuContent({
|
|
8393
|
+
items,
|
|
8394
|
+
onItemClick,
|
|
8395
|
+
align = "start",
|
|
8396
|
+
className,
|
|
8397
|
+
...contentProps
|
|
8398
|
+
}) {
|
|
8399
|
+
const portalContainer = usePortalContainer();
|
|
8400
|
+
return /* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8401
|
+
RDropdown5__namespace.Content,
|
|
8402
|
+
{
|
|
8403
|
+
sideOffset: 4,
|
|
8404
|
+
align,
|
|
8405
|
+
collisionPadding: VIEWPORT_PADDING,
|
|
8406
|
+
className: cn(
|
|
8407
|
+
"z-50 overflow-hidden rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] shadow-normal-sm",
|
|
8408
|
+
// 창보다 넓은 메뉴는 창 폭에 맞춰 줄인다. 호출부가 하한(min-width)을 줄 때도 같은
|
|
8409
|
+
// 상한으로 감싸야 한다 — min-width 가 max-width 를 이기기 때문이다.
|
|
8410
|
+
"max-w-[var(--radix-dropdown-menu-content-available-width)]",
|
|
8411
|
+
FLOATING_SLIDE_ANIM,
|
|
8412
|
+
className
|
|
8413
|
+
),
|
|
8414
|
+
...contentProps,
|
|
8415
|
+
children: items.map((it) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8416
|
+
RDropdown5__namespace.Item,
|
|
8417
|
+
{
|
|
8418
|
+
disabled: it.disabled,
|
|
8419
|
+
onSelect: () => onItemClick?.(it.value),
|
|
8420
|
+
className: itemClass,
|
|
8421
|
+
children: [
|
|
8422
|
+
it.icon && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: it.icon, size: 12 }),
|
|
8423
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8424
|
+
"span",
|
|
8425
|
+
{
|
|
8426
|
+
className: "min-w-0 break-words",
|
|
8427
|
+
dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(it.label) }
|
|
8428
|
+
}
|
|
8429
|
+
)
|
|
8430
|
+
]
|
|
8431
|
+
},
|
|
8432
|
+
it.value
|
|
8433
|
+
))
|
|
8434
|
+
}
|
|
8435
|
+
) });
|
|
8436
|
+
}
|
|
8385
8437
|
var SIZE2 = {
|
|
8386
8438
|
xs: { height: 24, paddingX: 8, gap: 6, arrow: 12, fontSize: 12, minWidth: 64, splitMinWidth: 72 },
|
|
8387
8439
|
sm: {
|
|
@@ -8418,13 +8470,6 @@ function splitDivider(color, outline) {
|
|
|
8418
8470
|
};
|
|
8419
8471
|
return (outline ? outlined : solid)[color];
|
|
8420
8472
|
}
|
|
8421
|
-
var VIEWPORT_PADDING = 12;
|
|
8422
|
-
var itemClass = cn(
|
|
8423
|
-
"flex min-h-[28px] cursor-pointer select-none items-center gap-[8px] rounded-[2px] px-[12px] py-[4px] text-[12px] leading-[20px] outline-none",
|
|
8424
|
-
"text-[color:var(--sys-color-fg-secondary)]",
|
|
8425
|
-
"data-[disabled]:cursor-not-allowed data-[disabled]:text-[color:var(--cmp-button-text-disabled)]",
|
|
8426
|
-
"data-[highlighted]:bg-[var(--sys-color-bg-accent)] data-[highlighted]:text-[color:var(--sys-color-fg-inverse)]"
|
|
8427
|
-
);
|
|
8428
8473
|
var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
8429
8474
|
function SDropdownButton({
|
|
8430
8475
|
color = "primary",
|
|
@@ -8440,7 +8485,6 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8440
8485
|
className,
|
|
8441
8486
|
style
|
|
8442
8487
|
}, ref) {
|
|
8443
|
-
const portalContainer = usePortalContainer();
|
|
8444
8488
|
const insideModal = useInsideModal();
|
|
8445
8489
|
const [open, setOpen] = react.useState(false);
|
|
8446
8490
|
const splitWrapRef = react.useRef(null);
|
|
@@ -8494,45 +8538,20 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8494
8538
|
"border-[color:var(--dd-border)] bg-[var(--dd-bg)] text-[color:var(--dd-text)]",
|
|
8495
8539
|
disabled ? "cursor-not-allowed" : "cursor-pointer hover:bg-[var(--dd-bg-hover)]"
|
|
8496
8540
|
);
|
|
8497
|
-
const menu = /* @__PURE__ */ jsxRuntime.jsx(
|
|
8498
|
-
|
|
8541
|
+
const menu = /* @__PURE__ */ jsxRuntime.jsx(
|
|
8542
|
+
DropdownMenuContent,
|
|
8499
8543
|
{
|
|
8500
|
-
|
|
8501
|
-
|
|
8544
|
+
items,
|
|
8545
|
+
onItemClick,
|
|
8502
8546
|
alignOffset: split ? splitAlignOffset : 0,
|
|
8503
|
-
collisionPadding: VIEWPORT_PADDING,
|
|
8504
8547
|
className: cn(
|
|
8505
|
-
"
|
|
8506
|
-
// 창보다 넓은 메뉴는 창 폭에 맞춰 줄인다. 트리거 너비를 따르는 하한도 같은 상한으로
|
|
8507
|
-
// 감싸야 한다 — min-width 가 max-width 를 이기기 때문이다.
|
|
8508
|
-
"max-w-[var(--radix-dropdown-menu-content-available-width)]",
|
|
8509
|
-
!split && "min-w-[min(var(--radix-dropdown-menu-trigger-width),var(--radix-dropdown-menu-content-available-width))]",
|
|
8510
|
-
FLOATING_SLIDE_ANIM
|
|
8548
|
+
!split && "min-w-[min(var(--radix-dropdown-menu-trigger-width),var(--radix-dropdown-menu-content-available-width))]"
|
|
8511
8549
|
),
|
|
8512
|
-
style: split ? { minWidth: clampToAvailableWidth(splitWidth, DROPDOWN_AVAILABLE_WIDTH) } : void 0
|
|
8513
|
-
children: items.map((it) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8514
|
-
RDropdown3__namespace.Item,
|
|
8515
|
-
{
|
|
8516
|
-
disabled: it.disabled,
|
|
8517
|
-
onSelect: () => onItemClick?.(it.value),
|
|
8518
|
-
className: itemClass,
|
|
8519
|
-
children: [
|
|
8520
|
-
it.icon && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: it.icon, size: 12 }),
|
|
8521
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8522
|
-
"span",
|
|
8523
|
-
{
|
|
8524
|
-
className: "min-w-0 break-words",
|
|
8525
|
-
dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(it.label) }
|
|
8526
|
-
}
|
|
8527
|
-
)
|
|
8528
|
-
]
|
|
8529
|
-
},
|
|
8530
|
-
it.value
|
|
8531
|
-
))
|
|
8550
|
+
style: split ? { minWidth: clampToAvailableWidth(splitWidth, DROPDOWN_AVAILABLE_WIDTH) } : void 0
|
|
8532
8551
|
}
|
|
8533
|
-
)
|
|
8552
|
+
);
|
|
8534
8553
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8535
|
-
|
|
8554
|
+
RDropdown5__namespace.Root,
|
|
8536
8555
|
{
|
|
8537
8556
|
modal: !insideModal,
|
|
8538
8557
|
open,
|
|
@@ -8564,7 +8583,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8564
8583
|
children: label
|
|
8565
8584
|
}
|
|
8566
8585
|
),
|
|
8567
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8586
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8568
8587
|
"button",
|
|
8569
8588
|
{
|
|
8570
8589
|
ref: splitToggleRef,
|
|
@@ -8583,7 +8602,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8583
8602
|
) })
|
|
8584
8603
|
]
|
|
8585
8604
|
}
|
|
8586
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
8605
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8587
8606
|
"button",
|
|
8588
8607
|
{
|
|
8589
8608
|
type: "button",
|
|
@@ -8611,6 +8630,87 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8611
8630
|
}
|
|
8612
8631
|
);
|
|
8613
8632
|
var SDropdownButton2 = /* @__PURE__ */ withDisplayName(SDropdownButtonImpl, "SDropdownButton");
|
|
8633
|
+
var DEFAULT_LABEL = "\uAE30\uB2A5 \uB354 \uBCF4\uAE30";
|
|
8634
|
+
var SMeatballButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
8635
|
+
function SMeatballButton({
|
|
8636
|
+
size = "sm",
|
|
8637
|
+
intent = "default",
|
|
8638
|
+
items = [],
|
|
8639
|
+
// 기본값을 리터럴로 둬야 README(docs:gen)에 실제 문구가 찍힌다
|
|
8640
|
+
tooltipText = "\uAE30\uB2A5 \uB354 \uBCF4\uAE30",
|
|
8641
|
+
ariaLabel,
|
|
8642
|
+
disabled = false,
|
|
8643
|
+
onItemClick,
|
|
8644
|
+
onOpenChange,
|
|
8645
|
+
className,
|
|
8646
|
+
style
|
|
8647
|
+
}, ref) {
|
|
8648
|
+
const insideModal = useInsideModal();
|
|
8649
|
+
const [open, setOpen] = react.useState(false);
|
|
8650
|
+
const buttonRef = react.useRef(null);
|
|
8651
|
+
const pointerRef = react.useRef(false);
|
|
8652
|
+
const setMenuOpen = (o) => {
|
|
8653
|
+
setOpen(o);
|
|
8654
|
+
onOpenChange?.(o);
|
|
8655
|
+
};
|
|
8656
|
+
react.useImperativeHandle(
|
|
8657
|
+
ref,
|
|
8658
|
+
() => ({
|
|
8659
|
+
open: () => setOpen(true),
|
|
8660
|
+
close: () => setOpen(false)
|
|
8661
|
+
}),
|
|
8662
|
+
[]
|
|
8663
|
+
);
|
|
8664
|
+
const label = ariaLabel?.trim() || tooltipText.trim() || DEFAULT_LABEL;
|
|
8665
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8666
|
+
RDropdown5__namespace.Root,
|
|
8667
|
+
{
|
|
8668
|
+
modal: !insideModal,
|
|
8669
|
+
open,
|
|
8670
|
+
onOpenChange: setMenuOpen,
|
|
8671
|
+
children: [
|
|
8672
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8673
|
+
"span",
|
|
8674
|
+
{
|
|
8675
|
+
className: cn("inline-flex", className),
|
|
8676
|
+
style,
|
|
8677
|
+
onPointerDownCapture: () => pointerRef.current = true,
|
|
8678
|
+
onKeyDownCapture: () => pointerRef.current = false,
|
|
8679
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8680
|
+
SGhostButton,
|
|
8681
|
+
{
|
|
8682
|
+
ref: buttonRef,
|
|
8683
|
+
icon: "etc",
|
|
8684
|
+
size,
|
|
8685
|
+
intent,
|
|
8686
|
+
tooltipText: open ? "" : tooltipText,
|
|
8687
|
+
ariaLabel: label,
|
|
8688
|
+
ariaExpanded: open,
|
|
8689
|
+
disabled
|
|
8690
|
+
}
|
|
8691
|
+
)
|
|
8692
|
+
}
|
|
8693
|
+
) }),
|
|
8694
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8695
|
+
DropdownMenuContent,
|
|
8696
|
+
{
|
|
8697
|
+
items,
|
|
8698
|
+
onItemClick,
|
|
8699
|
+
onPointerDown: () => pointerRef.current = true,
|
|
8700
|
+
onPointerDownOutside: () => pointerRef.current = true,
|
|
8701
|
+
onKeyDown: () => pointerRef.current = false,
|
|
8702
|
+
onCloseAutoFocus: (e) => {
|
|
8703
|
+
e.preventDefault();
|
|
8704
|
+
if (!pointerRef.current) buttonRef.current?.focus();
|
|
8705
|
+
}
|
|
8706
|
+
}
|
|
8707
|
+
)
|
|
8708
|
+
]
|
|
8709
|
+
}
|
|
8710
|
+
);
|
|
8711
|
+
}
|
|
8712
|
+
);
|
|
8713
|
+
var SMeatballButton2 = /* @__PURE__ */ withDisplayName(SMeatballButtonImpl, "SMeatballButton");
|
|
8614
8714
|
function SSwitch({
|
|
8615
8715
|
value = false,
|
|
8616
8716
|
leftLabel,
|
|
@@ -9586,7 +9686,7 @@ var SPopup = /* @__PURE__ */ react.forwardRef(function SPopup2({
|
|
|
9586
9686
|
}
|
|
9587
9687
|
);
|
|
9588
9688
|
});
|
|
9589
|
-
var
|
|
9689
|
+
var DEFAULT_LABEL2 = { tip: "\uD65C\uC6A9 TIP", notion: "\uC0AC\uC6A9\uBC95 \uC548\uB0B4" };
|
|
9590
9690
|
var ICON = { tip: "helpOutline", notion: "notion" };
|
|
9591
9691
|
var VIEWPORT_GUTTER = 24;
|
|
9592
9692
|
var CLOSE_INSET = 12;
|
|
@@ -9608,7 +9708,7 @@ function SGuide({
|
|
|
9608
9708
|
const portalContainer = usePortalContainer();
|
|
9609
9709
|
const isNotion = type === "notion";
|
|
9610
9710
|
const isAutoWidth = popupWidth === "auto";
|
|
9611
|
-
const defaultLabel =
|
|
9711
|
+
const defaultLabel = DEFAULT_LABEL2[type];
|
|
9612
9712
|
const iconName = ICON[type];
|
|
9613
9713
|
const messages = flattenMessages(message);
|
|
9614
9714
|
const active = open;
|
|
@@ -16506,7 +16606,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
16506
16606
|
),
|
|
16507
16607
|
contextMenuOn && typeof document !== "undefined" && reactDom.createPortal(
|
|
16508
16608
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16509
|
-
|
|
16609
|
+
RDropdown5__namespace.Root,
|
|
16510
16610
|
{
|
|
16511
16611
|
modal: false,
|
|
16512
16612
|
open: contextMenuOpen,
|
|
@@ -16514,7 +16614,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
16514
16614
|
if (!open) setContextMenu((m) => m == null ? null : { ...m, open: false });
|
|
16515
16615
|
},
|
|
16516
16616
|
children: [
|
|
16517
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16617
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16518
16618
|
"span",
|
|
16519
16619
|
{
|
|
16520
16620
|
"aria-hidden": true,
|
|
@@ -16523,7 +16623,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
16523
16623
|
}
|
|
16524
16624
|
) }),
|
|
16525
16625
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16526
|
-
|
|
16626
|
+
RDropdown5__namespace.Content,
|
|
16527
16627
|
{
|
|
16528
16628
|
align: "start",
|
|
16529
16629
|
side: "bottom",
|
|
@@ -16537,7 +16637,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
16537
16637
|
FLOATING_SLIDE_ANIM
|
|
16538
16638
|
),
|
|
16539
16639
|
children: contextMenuItems?.map((item4) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16540
|
-
|
|
16640
|
+
RDropdown5__namespace.Item,
|
|
16541
16641
|
{
|
|
16542
16642
|
disabled: item4.disabled,
|
|
16543
16643
|
onSelect: () => onContextMenuItemClick?.(item4.value, contextMenu?.rows ?? []),
|
|
@@ -19432,6 +19532,7 @@ function ChartTooltip({
|
|
|
19432
19532
|
anchor,
|
|
19433
19533
|
bounds,
|
|
19434
19534
|
gapX = DEFAULT_GAP_X,
|
|
19535
|
+
footer,
|
|
19435
19536
|
className
|
|
19436
19537
|
}) {
|
|
19437
19538
|
const { ref, size } = useElementSize();
|
|
@@ -19482,7 +19583,8 @@ function ChartTooltip({
|
|
|
19482
19583
|
]
|
|
19483
19584
|
},
|
|
19484
19585
|
`${item4.label}-${index}`
|
|
19485
|
-
))
|
|
19586
|
+
)),
|
|
19587
|
+
footer != null && footer !== false && /* @__PURE__ */ jsxRuntime.jsx("div", { children: footer })
|
|
19486
19588
|
]
|
|
19487
19589
|
}
|
|
19488
19590
|
);
|
|
@@ -19573,6 +19675,7 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
19573
19675
|
formatValue = defaultFormat,
|
|
19574
19676
|
height,
|
|
19575
19677
|
onBarClick,
|
|
19678
|
+
tooltipFooter,
|
|
19576
19679
|
className,
|
|
19577
19680
|
style
|
|
19578
19681
|
}, ref) {
|
|
@@ -20001,7 +20104,16 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
20001
20104
|
items: tooltipItems,
|
|
20002
20105
|
anchor: tooltipAnchor,
|
|
20003
20106
|
bounds: size,
|
|
20004
|
-
gapX: tooltipGapX
|
|
20107
|
+
gapX: tooltipGapX,
|
|
20108
|
+
footer: tooltipFooter?.({
|
|
20109
|
+
categoryIndex: hoveredCategory,
|
|
20110
|
+
name: categories[hoveredCategory] ?? "",
|
|
20111
|
+
points: series.flatMap((s, seriesIndex) => {
|
|
20112
|
+
const value = s.data[hoveredCategory];
|
|
20113
|
+
if (value == null || !Number.isFinite(value)) return [];
|
|
20114
|
+
return [{ seriesIndex, categoryIndex: hoveredCategory, value }];
|
|
20115
|
+
})
|
|
20116
|
+
})
|
|
20005
20117
|
}
|
|
20006
20118
|
)
|
|
20007
20119
|
]
|
|
@@ -20063,7 +20175,8 @@ var POINT_HOVER_BG = "var(--cmp-chart-bg)";
|
|
|
20063
20175
|
var POINT_HOVER_EXTENT = POINT_HOVER_RADIUS + POINT_HOVER_BORDER_WIDTH / 2;
|
|
20064
20176
|
var BAND_MIN = 40;
|
|
20065
20177
|
var VALUE_LABEL_GAP2 = 6;
|
|
20066
|
-
var
|
|
20178
|
+
var AREA_OPACITY_TOP = "30%";
|
|
20179
|
+
var AREA_OPACITY_BOTTOM = "var(--opacity-005)";
|
|
20067
20180
|
var LINE_DATA_LABEL_COLOR = "var(--cmp-chart-bar-dataLabel-color-default)";
|
|
20068
20181
|
var LINE_DATA_LABEL_TYPO = "typo-body-sm-medium";
|
|
20069
20182
|
var LINE_DATA_LABEL_TYPO_HOVER = "typo-body-md-bold";
|
|
@@ -20159,6 +20272,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20159
20272
|
formatValue = defaultFormat2,
|
|
20160
20273
|
height,
|
|
20161
20274
|
onPointClick,
|
|
20275
|
+
tooltipFooter,
|
|
20162
20276
|
className,
|
|
20163
20277
|
style
|
|
20164
20278
|
}, ref) {
|
|
@@ -20166,6 +20280,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20166
20280
|
const { ref: plotRef, size } = useElementSize();
|
|
20167
20281
|
const { ref: axisTextRef, size: axisText } = useElementSize();
|
|
20168
20282
|
const { ref: axisSampleRef, size: axisSample } = useElementSize();
|
|
20283
|
+
const gradientId = react.useId();
|
|
20169
20284
|
const [hoveredCategory, setHoveredCategory] = react.useState(null);
|
|
20170
20285
|
const colorAt = react.useCallback(
|
|
20171
20286
|
(seriesIndex) => paletteColor(palette, seriesIndex, customColors),
|
|
@@ -20294,13 +20409,43 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20294
20409
|
{
|
|
20295
20410
|
"aria-hidden": true,
|
|
20296
20411
|
d,
|
|
20297
|
-
style: { fill:
|
|
20412
|
+
style: { fill: `url(#${gradientId}-area-${seriesIndex})` }
|
|
20298
20413
|
},
|
|
20299
20414
|
`area-${seriesIndex}-${runIndex}`
|
|
20300
20415
|
);
|
|
20301
20416
|
})
|
|
20302
20417
|
);
|
|
20303
|
-
}, [area, plotted, smooth,
|
|
20418
|
+
}, [area, plotted, smooth, gradientId]);
|
|
20419
|
+
const areaGradients = react.useMemo(() => {
|
|
20420
|
+
if (!area) return null;
|
|
20421
|
+
return /* @__PURE__ */ jsxRuntime.jsx("defs", { children: plotted.map((_, seriesIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20422
|
+
"linearGradient",
|
|
20423
|
+
{
|
|
20424
|
+
id: `${gradientId}-area-${seriesIndex}`,
|
|
20425
|
+
x1: "0",
|
|
20426
|
+
y1: "0",
|
|
20427
|
+
x2: "0",
|
|
20428
|
+
y2: "1",
|
|
20429
|
+
children: [
|
|
20430
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20431
|
+
"stop",
|
|
20432
|
+
{
|
|
20433
|
+
offset: "0",
|
|
20434
|
+
style: { stopColor: colorAt(seriesIndex), stopOpacity: AREA_OPACITY_TOP }
|
|
20435
|
+
}
|
|
20436
|
+
),
|
|
20437
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20438
|
+
"stop",
|
|
20439
|
+
{
|
|
20440
|
+
offset: "1",
|
|
20441
|
+
style: { stopColor: colorAt(seriesIndex), stopOpacity: AREA_OPACITY_BOTTOM }
|
|
20442
|
+
}
|
|
20443
|
+
)
|
|
20444
|
+
]
|
|
20445
|
+
},
|
|
20446
|
+
`area-gradient-${seriesIndex}`
|
|
20447
|
+
)) });
|
|
20448
|
+
}, [area, plotted, colorAt, gradientId]);
|
|
20304
20449
|
const lines = react.useMemo(
|
|
20305
20450
|
() => plotted.flatMap(
|
|
20306
20451
|
(row, seriesIndex) => runsOf(row).map((run, runIndex) => {
|
|
@@ -20482,6 +20627,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20482
20627
|
}
|
|
20483
20628
|
}
|
|
20484
20629
|
),
|
|
20630
|
+
areaGradients,
|
|
20485
20631
|
areas,
|
|
20486
20632
|
lines,
|
|
20487
20633
|
pointHalos,
|
|
@@ -20497,7 +20643,16 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20497
20643
|
items: tooltipItems,
|
|
20498
20644
|
anchor: tooltipAnchor,
|
|
20499
20645
|
bounds: size,
|
|
20500
|
-
gapX: { after: -4, before: -4 }
|
|
20646
|
+
gapX: { after: -4, before: -4 },
|
|
20647
|
+
footer: tooltipFooter?.({
|
|
20648
|
+
categoryIndex: hoveredCategory,
|
|
20649
|
+
name: categories[hoveredCategory] ?? "",
|
|
20650
|
+
points: rows.flatMap((row, seriesIndex) => {
|
|
20651
|
+
const point = row[hoveredCategory];
|
|
20652
|
+
if (point == null) return [];
|
|
20653
|
+
return [{ seriesIndex, categoryIndex: hoveredCategory, value: point.own }];
|
|
20654
|
+
})
|
|
20655
|
+
})
|
|
20501
20656
|
}
|
|
20502
20657
|
)
|
|
20503
20658
|
]
|
|
@@ -20515,9 +20670,11 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20515
20670
|
}
|
|
20516
20671
|
);
|
|
20517
20672
|
});
|
|
20518
|
-
var DONUT_INNER_RATIO = 0.
|
|
20673
|
+
var DONUT_INNER_RATIO = 0.4;
|
|
20519
20674
|
var LABEL_MIN_RATIO = 0.05;
|
|
20520
20675
|
var PIE_LABEL_RADIUS_RATIO = 0.65;
|
|
20676
|
+
var HOVER_GROW = 4;
|
|
20677
|
+
var HOVER_CORNER = 2;
|
|
20521
20678
|
var OPACITY_DEFAULT = "var(--cmp-chart-bar-opacity-default)";
|
|
20522
20679
|
var OPACITY_DIMMED = "var(--cmp-chart-bar-opacity-dimmed)";
|
|
20523
20680
|
var OPACITY_HOVER = 1;
|
|
@@ -20530,19 +20687,42 @@ var r2 = (value) => Math.round(value * 100) / 100;
|
|
|
20530
20687
|
function polar(center, radius, angle) {
|
|
20531
20688
|
return { x: center + radius * Math.sin(angle), y: center - radius * Math.cos(angle) };
|
|
20532
20689
|
}
|
|
20533
|
-
|
|
20690
|
+
var arc = (radius, large, sweep, p) => `A${r2(radius)} ${r2(radius)} 0 ${large} ${sweep} ${r2(p.x)} ${r2(p.y)}`;
|
|
20691
|
+
function fitCorner(corner, outer, inner, span) {
|
|
20692
|
+
if (corner <= 0 || outer <= 0) return 0;
|
|
20693
|
+
let fitted = Math.min(corner, (outer - inner) / 2);
|
|
20694
|
+
if (span < Math.PI) {
|
|
20695
|
+
const half = Math.sin(span / 2);
|
|
20696
|
+
fitted = Math.min(fitted, outer * half / (1 + half));
|
|
20697
|
+
if (inner > 0) fitted = Math.min(fitted, inner * half / (1 - half));
|
|
20698
|
+
}
|
|
20699
|
+
return fitted >= 0.5 ? fitted : 0;
|
|
20700
|
+
}
|
|
20701
|
+
function slicePath(center, outer, inner, start, end, corner = 0) {
|
|
20534
20702
|
if (end - start >= Math.PI * 2 - 1e-6) {
|
|
20535
20703
|
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`;
|
|
20536
20704
|
return inner > 0 ? ring(outer) + ring(inner) : ring(outer);
|
|
20537
20705
|
}
|
|
20538
|
-
const
|
|
20539
|
-
const
|
|
20540
|
-
const
|
|
20541
|
-
const
|
|
20542
|
-
|
|
20543
|
-
const
|
|
20544
|
-
|
|
20545
|
-
|
|
20706
|
+
const span = end - start;
|
|
20707
|
+
const round = fitCorner(corner, outer, inner, span);
|
|
20708
|
+
const outerLine = Math.sqrt(Math.max(outer * outer - 2 * outer * round, 0));
|
|
20709
|
+
const outerPhi = round > 0 ? Math.asin(round / (outer - round)) : 0;
|
|
20710
|
+
const outerLarge = span - 2 * outerPhi > Math.PI ? 1 : 0;
|
|
20711
|
+
const o0 = polar(center, outerLine, start);
|
|
20712
|
+
let d = `M${r2(o0.x)} ${r2(o0.y)}`;
|
|
20713
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, outer, start + outerPhi));
|
|
20714
|
+
d += arc(outer, outerLarge, 1, polar(center, outer, end - outerPhi));
|
|
20715
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, outerLine, end));
|
|
20716
|
+
if (inner <= 0) return `${d}L${r2(center)} ${r2(center)}Z`;
|
|
20717
|
+
const innerLine = Math.sqrt(inner * inner + 2 * inner * round);
|
|
20718
|
+
const innerPhi = round > 0 ? Math.asin(round / (inner + round)) : 0;
|
|
20719
|
+
const innerLarge = span - 2 * innerPhi > Math.PI ? 1 : 0;
|
|
20720
|
+
const i0 = polar(center, innerLine, end);
|
|
20721
|
+
d += `L${r2(i0.x)} ${r2(i0.y)}`;
|
|
20722
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, inner, end - innerPhi));
|
|
20723
|
+
d += arc(inner, innerLarge, 0, polar(center, inner, start + innerPhi));
|
|
20724
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, innerLine, start));
|
|
20725
|
+
return `${d}Z`;
|
|
20546
20726
|
}
|
|
20547
20727
|
var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
20548
20728
|
data,
|
|
@@ -20554,44 +20734,44 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20554
20734
|
showTooltip = true,
|
|
20555
20735
|
formatValue = defaultFormat3,
|
|
20556
20736
|
onSliceClick,
|
|
20737
|
+
tooltipFooter,
|
|
20557
20738
|
className,
|
|
20558
20739
|
style,
|
|
20559
20740
|
innerRatio,
|
|
20560
|
-
renderCenter,
|
|
20561
20741
|
kind
|
|
20562
20742
|
}, ref) {
|
|
20563
20743
|
const { ref: plotRef, size } = useElementSize();
|
|
20564
20744
|
const [hovered, setHovered] = react.useState(null);
|
|
20565
|
-
const
|
|
20745
|
+
const arcs = react.useMemo(() => {
|
|
20566
20746
|
const effective = palette === "custom" && !colors?.length ? "multi" : palette;
|
|
20567
|
-
const valid = data.map((
|
|
20568
|
-
const sum = valid.reduce((acc,
|
|
20747
|
+
const valid = data.map((slice2, index) => ({ ...slice2, index })).filter((slice2) => Number.isFinite(slice2.value) && slice2.value > 0);
|
|
20748
|
+
const sum = valid.reduce((acc, slice2) => acc + slice2.value, 0);
|
|
20569
20749
|
let angle = 0;
|
|
20570
|
-
const list = valid.map((
|
|
20571
|
-
const ratio =
|
|
20750
|
+
const list = valid.map((slice2) => {
|
|
20751
|
+
const ratio = slice2.value / sum;
|
|
20572
20752
|
const start = angle;
|
|
20573
20753
|
angle += ratio * Math.PI * 2;
|
|
20574
20754
|
return {
|
|
20575
|
-
index:
|
|
20576
|
-
name:
|
|
20577
|
-
value:
|
|
20755
|
+
index: slice2.index,
|
|
20756
|
+
name: slice2.name,
|
|
20757
|
+
value: slice2.value,
|
|
20578
20758
|
ratio,
|
|
20579
20759
|
start,
|
|
20580
20760
|
end: angle,
|
|
20581
|
-
color: paletteColor(effective,
|
|
20761
|
+
color: paletteColor(effective, slice2.index, colors)
|
|
20582
20762
|
};
|
|
20583
20763
|
});
|
|
20584
|
-
return
|
|
20764
|
+
return list;
|
|
20585
20765
|
}, [data, palette, colors]);
|
|
20586
20766
|
const diameter = size.width;
|
|
20587
20767
|
const center = diameter / 2;
|
|
20588
|
-
const outer = center;
|
|
20768
|
+
const outer = Math.max(center - HOVER_GROW, 0);
|
|
20589
20769
|
const inner = outer * innerRatio;
|
|
20590
|
-
const hoveredArc = arcs.find((
|
|
20770
|
+
const hoveredArc = arcs.find((arc2) => arc2.index === hovered) ?? null;
|
|
20591
20771
|
const legend = showLegend ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20592
20772
|
ChartLegend,
|
|
20593
20773
|
{
|
|
20594
|
-
items: arcs.map((
|
|
20774
|
+
items: arcs.map((arc2) => ({ name: arc2.name, color: arc2.color })),
|
|
20595
20775
|
activeIndex: hoveredArc ? arcs.indexOf(hoveredArc) : null
|
|
20596
20776
|
}
|
|
20597
20777
|
) : null;
|
|
@@ -20602,6 +20782,17 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20602
20782
|
return { left: point.x, right: point.x, top: point.y };
|
|
20603
20783
|
}, [hoveredArc, diameter, center, outer, inner]);
|
|
20604
20784
|
const labelRadius = inner > 0 ? (outer + inner) / 2 : outer * PIE_LABEL_RADIUS_RATIO;
|
|
20785
|
+
const slice = (target) => {
|
|
20786
|
+
const picked = hovered === target.index;
|
|
20787
|
+
return slicePath(
|
|
20788
|
+
center,
|
|
20789
|
+
picked ? outer + HOVER_GROW : outer,
|
|
20790
|
+
picked ? Math.max(inner - HOVER_GROW, 0) : inner,
|
|
20791
|
+
target.start,
|
|
20792
|
+
target.end,
|
|
20793
|
+
picked ? HOVER_CORNER : 0
|
|
20794
|
+
);
|
|
20795
|
+
};
|
|
20605
20796
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20606
20797
|
ChartFrame,
|
|
20607
20798
|
{
|
|
@@ -20631,34 +20822,34 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20631
20822
|
style: { fill: "var(--cmp-chart-grid-line-color)" }
|
|
20632
20823
|
}
|
|
20633
20824
|
)
|
|
20634
|
-
) : arcs.map((
|
|
20635
|
-
const opacity = hovered == null ? OPACITY_DEFAULT : hovered ===
|
|
20825
|
+
) : arcs.map((arc2) => {
|
|
20826
|
+
const opacity = hovered == null ? OPACITY_DEFAULT : hovered === arc2.index ? OPACITY_HOVER : OPACITY_DIMMED;
|
|
20636
20827
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20637
20828
|
"path",
|
|
20638
20829
|
{
|
|
20639
|
-
d:
|
|
20830
|
+
d: slice(arc2),
|
|
20640
20831
|
fillRule: "evenodd",
|
|
20641
20832
|
className: "transition-opacity duration-200 ease-out motion-reduce:transition-none",
|
|
20642
20833
|
style: {
|
|
20643
|
-
fill:
|
|
20834
|
+
fill: arc2.color,
|
|
20644
20835
|
opacity,
|
|
20645
20836
|
cursor: onSliceClick ? "pointer" : void 0
|
|
20646
20837
|
},
|
|
20647
|
-
onMouseEnter: () => setHovered(
|
|
20838
|
+
onMouseEnter: () => setHovered(arc2.index),
|
|
20648
20839
|
onClick: onSliceClick ? () => onSliceClick({
|
|
20649
|
-
index:
|
|
20650
|
-
name:
|
|
20651
|
-
value:
|
|
20652
|
-
ratio:
|
|
20840
|
+
index: arc2.index,
|
|
20841
|
+
name: arc2.name,
|
|
20842
|
+
value: arc2.value,
|
|
20843
|
+
ratio: arc2.ratio
|
|
20653
20844
|
}) : void 0,
|
|
20654
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${
|
|
20845
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${arc2.name} ${formatValue(arc2.value)} (${formatRatio(arc2.ratio)})` })
|
|
20655
20846
|
},
|
|
20656
|
-
`slice-${
|
|
20847
|
+
`slice-${arc2.index}`
|
|
20657
20848
|
);
|
|
20658
20849
|
}),
|
|
20659
|
-
showValueLabel && arcs.map((
|
|
20660
|
-
if (
|
|
20661
|
-
const point = polar(center, labelRadius, (
|
|
20850
|
+
showValueLabel && arcs.map((arc2) => {
|
|
20851
|
+
if (arc2.ratio < LABEL_MIN_RATIO) return null;
|
|
20852
|
+
const point = polar(center, labelRadius, (arc2.start + arc2.end) / 2);
|
|
20662
20853
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20663
20854
|
"text",
|
|
20664
20855
|
{
|
|
@@ -20670,25 +20861,16 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20670
20861
|
className: "pointer-events-none typo-body-sm-bold transition-opacity duration-200 ease-out motion-reduce:transition-none",
|
|
20671
20862
|
style: {
|
|
20672
20863
|
fill: "var(--sys-color-fg-inverse)",
|
|
20673
|
-
opacity: hovered != null && hovered !==
|
|
20864
|
+
opacity: hovered != null && hovered !== arc2.index ? OPACITY_DIMMED : void 0
|
|
20674
20865
|
},
|
|
20675
|
-
children: formatRatio(
|
|
20866
|
+
children: formatRatio(arc2.ratio)
|
|
20676
20867
|
},
|
|
20677
|
-
`label-${
|
|
20868
|
+
`label-${arc2.index}`
|
|
20678
20869
|
);
|
|
20679
20870
|
})
|
|
20680
20871
|
]
|
|
20681
20872
|
}
|
|
20682
20873
|
),
|
|
20683
|
-
renderCenter && diameter > 0 && // 가운데 글자는 조각을 가리지 않도록 마우스를 통과시킨다.
|
|
20684
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20685
|
-
"div",
|
|
20686
|
-
{
|
|
20687
|
-
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",
|
|
20688
|
-
style: { maxWidth: inner * Math.SQRT2 },
|
|
20689
|
-
children: renderCenter(total)
|
|
20690
|
-
}
|
|
20691
|
-
),
|
|
20692
20874
|
showTooltip && hoveredArc && tooltipAnchor && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20693
20875
|
ChartTooltip,
|
|
20694
20876
|
{
|
|
@@ -20701,19 +20883,19 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20701
20883
|
}
|
|
20702
20884
|
],
|
|
20703
20885
|
anchor: tooltipAnchor,
|
|
20704
|
-
bounds: size
|
|
20886
|
+
bounds: size,
|
|
20887
|
+
footer: tooltipFooter?.({
|
|
20888
|
+
index: hoveredArc.index,
|
|
20889
|
+
name: hoveredArc.name,
|
|
20890
|
+
value: hoveredArc.value,
|
|
20891
|
+
ratio: hoveredArc.ratio
|
|
20892
|
+
})
|
|
20705
20893
|
}
|
|
20706
20894
|
)
|
|
20707
20895
|
] })
|
|
20708
20896
|
}
|
|
20709
20897
|
);
|
|
20710
20898
|
});
|
|
20711
|
-
function RadialCenter({ label, value }) {
|
|
20712
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20713
|
-
label != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("typo-body-sm-medium text-(--cmp-chart-axis-color)"), children: label }),
|
|
20714
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-lg-bold break-all text-(--cmp-chart-bar-dataLabel-color-default)", children: value })
|
|
20715
|
-
] });
|
|
20716
|
-
}
|
|
20717
20899
|
var SPieChart = /* @__PURE__ */ react.forwardRef(function SPieChart2({
|
|
20718
20900
|
palette = "multi",
|
|
20719
20901
|
showValueLabel = false,
|
|
@@ -20737,17 +20919,12 @@ var SPieChart = /* @__PURE__ */ react.forwardRef(function SPieChart2({
|
|
|
20737
20919
|
}
|
|
20738
20920
|
);
|
|
20739
20921
|
});
|
|
20740
|
-
var defaultFormat4 = (value) => value.toLocaleString();
|
|
20741
20922
|
var SDonutChart = /* @__PURE__ */ react.forwardRef(function SDonutChart2({
|
|
20742
|
-
centerLabel,
|
|
20743
|
-
centerValue,
|
|
20744
|
-
hideCenter = false,
|
|
20745
20923
|
palette = "multi",
|
|
20746
20924
|
showValueLabel = false,
|
|
20747
20925
|
showLegend = true,
|
|
20748
20926
|
legendPosition = "top",
|
|
20749
20927
|
showTooltip = true,
|
|
20750
|
-
formatValue = defaultFormat4,
|
|
20751
20928
|
...props
|
|
20752
20929
|
}, ref) {
|
|
20753
20930
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20760,10 +20937,8 @@ var SDonutChart = /* @__PURE__ */ react.forwardRef(function SDonutChart2({
|
|
|
20760
20937
|
showLegend,
|
|
20761
20938
|
legendPosition,
|
|
20762
20939
|
showTooltip,
|
|
20763
|
-
formatValue,
|
|
20764
20940
|
innerRatio: DONUT_INNER_RATIO,
|
|
20765
|
-
kind: "\uB3C4\uB11B \uADF8\uB798\uD504"
|
|
20766
|
-
renderCenter: hideCenter ? void 0 : (total) => /* @__PURE__ */ jsxRuntime.jsx(RadialCenter, { label: centerLabel, value: centerValue ?? formatValue(total) })
|
|
20941
|
+
kind: "\uB3C4\uB11B \uADF8\uB798\uD504"
|
|
20767
20942
|
}
|
|
20768
20943
|
);
|
|
20769
20944
|
});
|
|
@@ -22049,7 +22224,7 @@ var PaletteItem = ({
|
|
|
22049
22224
|
className,
|
|
22050
22225
|
onSelect,
|
|
22051
22226
|
children
|
|
22052
|
-
}) => asMenu ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22227
|
+
}) => asMenu ? /* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Item, { title: label, "aria-label": label, className, onSelect, children }) : /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", title: label, "aria-label": label, className, onClick: onSelect, children });
|
|
22053
22228
|
var ColorPalette = ({
|
|
22054
22229
|
colors,
|
|
22055
22230
|
columns,
|
|
@@ -22181,7 +22356,7 @@ var TableMenuItem = ({
|
|
|
22181
22356
|
disabled,
|
|
22182
22357
|
onSelect
|
|
22183
22358
|
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
22184
|
-
|
|
22359
|
+
RDropdown5__namespace.Item,
|
|
22185
22360
|
{
|
|
22186
22361
|
className: cn(menuItemClass, menuItemDisabledClass),
|
|
22187
22362
|
disabled,
|
|
@@ -22348,8 +22523,8 @@ function EditorToolbarBar({
|
|
|
22348
22523
|
const node = (item4) => {
|
|
22349
22524
|
switch (item4) {
|
|
22350
22525
|
case "heading":
|
|
22351
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22352
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22526
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
22527
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22353
22528
|
ToolbarButton,
|
|
22354
22529
|
{
|
|
22355
22530
|
label: "\uC81C\uBAA9 \uB2E8\uACC4",
|
|
@@ -22362,9 +22537,9 @@ function EditorToolbarBar({
|
|
|
22362
22537
|
]
|
|
22363
22538
|
}
|
|
22364
22539
|
) }),
|
|
22365
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22540
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22366
22541
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22367
|
-
|
|
22542
|
+
RDropdown5__namespace.Item,
|
|
22368
22543
|
{
|
|
22369
22544
|
className: menuItemClass,
|
|
22370
22545
|
onSelect: () => chain()?.setParagraph().run(),
|
|
@@ -22372,7 +22547,7 @@ function EditorToolbarBar({
|
|
|
22372
22547
|
}
|
|
22373
22548
|
),
|
|
22374
22549
|
SEDITOR_HEADING_LEVELS.map((level) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
22375
|
-
|
|
22550
|
+
RDropdown5__namespace.Item,
|
|
22376
22551
|
{
|
|
22377
22552
|
className: menuItemClass,
|
|
22378
22553
|
onSelect: () => chain()?.setHeading({ level }).run(),
|
|
@@ -22383,13 +22558,13 @@ function EditorToolbarBar({
|
|
|
22383
22558
|
] }) })
|
|
22384
22559
|
] }, item4);
|
|
22385
22560
|
case "fontSize":
|
|
22386
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22387
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22561
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
22562
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(ToolbarButton, { label: "\uAE00\uC790 \uD06C\uAE30", disabled: off, className: "px-[6px]", children: [
|
|
22388
22563
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-[20px]", children: activeFontSize ?? FONT_SIZE_DEFAULT_LABEL }),
|
|
22389
22564
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: 12 })
|
|
22390
22565
|
] }) }),
|
|
22391
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22392
|
-
|
|
22566
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22567
|
+
RDropdown5__namespace.Content,
|
|
22393
22568
|
{
|
|
22394
22569
|
sideOffset: 4,
|
|
22395
22570
|
align: "start",
|
|
@@ -22397,7 +22572,7 @@ function EditorToolbarBar({
|
|
|
22397
22572
|
style: { maxHeight: FONT_SIZE_MENU_MAX_HEIGHT },
|
|
22398
22573
|
children: [
|
|
22399
22574
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22400
|
-
|
|
22575
|
+
RDropdown5__namespace.Item,
|
|
22401
22576
|
{
|
|
22402
22577
|
className: cn(menuItemClass, activeFontSize === null && menuItemSelectedClass),
|
|
22403
22578
|
title: `${FONT_SIZE_DEFAULT_LABEL} (\uBCF8\uBB38 ${SEDITOR_DEFAULT_FONT_SIZE}px)`,
|
|
@@ -22406,7 +22581,7 @@ function EditorToolbarBar({
|
|
|
22406
22581
|
}
|
|
22407
22582
|
),
|
|
22408
22583
|
SEDITOR_FONT_SIZES.map((size) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
22409
|
-
|
|
22584
|
+
RDropdown5__namespace.Item,
|
|
22410
22585
|
{
|
|
22411
22586
|
ref: activeFontSize === size ? (el) => {
|
|
22412
22587
|
el?.scrollIntoView({ block: "nearest" });
|
|
@@ -22498,9 +22673,9 @@ function EditorToolbarBar({
|
|
|
22498
22673
|
},
|
|
22499
22674
|
item4
|
|
22500
22675
|
);
|
|
22501
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22502
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22503
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22676
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
22677
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { label: "\uAE00\uC790\uC0C9", disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ColorIndicator, { color: off ? "currentColor" : activeColor, children: /* @__PURE__ */ jsxRuntime.jsx(IconTextColor, { size: ICON_SIZE }) }) }) }),
|
|
22678
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
22504
22679
|
ColorPalette,
|
|
22505
22680
|
{
|
|
22506
22681
|
asMenu: true,
|
|
@@ -22606,14 +22781,14 @@ function EditorToolbarBar({
|
|
|
22606
22781
|
case "list": {
|
|
22607
22782
|
const ListIcon = state2.orderedList ? IconOrderedList : state2.taskList ? IconTaskList : IconBulletList;
|
|
22608
22783
|
const listActive = state2.bulletList || state2.orderedList || state2.taskList;
|
|
22609
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22610
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22784
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
22785
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(ToolbarButton, { label: "\uBAA9\uB85D", active: listActive, disabled: off, className: "px-[4px]", children: [
|
|
22611
22786
|
/* @__PURE__ */ jsxRuntime.jsx(ListIcon, { size: ICON_SIZE }),
|
|
22612
22787
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
|
|
22613
22788
|
] }) }),
|
|
22614
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22789
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22615
22790
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22616
|
-
|
|
22791
|
+
RDropdown5__namespace.Item,
|
|
22617
22792
|
{
|
|
22618
22793
|
className: menuItemClass,
|
|
22619
22794
|
onSelect: () => chain()?.toggleBulletList().run(),
|
|
@@ -22624,7 +22799,7 @@ function EditorToolbarBar({
|
|
|
22624
22799
|
}
|
|
22625
22800
|
),
|
|
22626
22801
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22627
|
-
|
|
22802
|
+
RDropdown5__namespace.Item,
|
|
22628
22803
|
{
|
|
22629
22804
|
className: menuItemClass,
|
|
22630
22805
|
onSelect: () => chain()?.toggleOrderedList().run(),
|
|
@@ -22635,7 +22810,7 @@ function EditorToolbarBar({
|
|
|
22635
22810
|
}
|
|
22636
22811
|
),
|
|
22637
22812
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22638
|
-
|
|
22813
|
+
RDropdown5__namespace.Item,
|
|
22639
22814
|
{
|
|
22640
22815
|
className: menuItemClass,
|
|
22641
22816
|
onSelect: () => chain()?.toggleTaskList().run(),
|
|
@@ -22739,17 +22914,17 @@ function EditorToolbarBar({
|
|
|
22739
22914
|
);
|
|
22740
22915
|
case "table":
|
|
22741
22916
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22742
|
-
|
|
22917
|
+
RDropdown5__namespace.Root,
|
|
22743
22918
|
{
|
|
22744
22919
|
open: tableOpen,
|
|
22745
22920
|
onOpenChange: setTableOpen,
|
|
22746
22921
|
modal: !insideModal,
|
|
22747
22922
|
children: [
|
|
22748
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22923
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(ToolbarButton, { label: "\uD45C", active: state2.inTable, disabled: off, className: "px-[6px]", children: [
|
|
22749
22924
|
/* @__PURE__ */ jsxRuntime.jsx(IconTable, { size: ICON_SIZE }),
|
|
22750
22925
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
|
|
22751
22926
|
] }) }),
|
|
22752
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22927
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22753
22928
|
!state2.inTable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22754
22929
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22755
22930
|
TableSizePicker,
|
|
@@ -22761,7 +22936,7 @@ function EditorToolbarBar({
|
|
|
22761
22936
|
}
|
|
22762
22937
|
}
|
|
22763
22938
|
),
|
|
22764
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22939
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Separator, { className: menuSeparatorClass })
|
|
22765
22940
|
] }),
|
|
22766
22941
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22767
22942
|
TableMenuItem,
|
|
@@ -22795,7 +22970,7 @@ function EditorToolbarBar({
|
|
|
22795
22970
|
onSelect: () => chain()?.addColumnAfter().run()
|
|
22796
22971
|
}
|
|
22797
22972
|
),
|
|
22798
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22973
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Separator, { className: menuSeparatorClass }),
|
|
22799
22974
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22800
22975
|
TableMenuItem,
|
|
22801
22976
|
{
|
|
@@ -22828,7 +23003,7 @@ function EditorToolbarBar({
|
|
|
22828
23003
|
onSelect: () => chain()?.toggleHeaderColumn().run()
|
|
22829
23004
|
}
|
|
22830
23005
|
),
|
|
22831
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23006
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Separator, { className: menuSeparatorClass }),
|
|
22832
23007
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22833
23008
|
TableMenuItem,
|
|
22834
23009
|
{
|
|
@@ -26900,6 +27075,7 @@ exports.SLoadingModal = SLoadingModal;
|
|
|
26900
27075
|
exports.SLoadingViewport = SLoadingViewport;
|
|
26901
27076
|
exports.SLoginCard = SLoginCard2;
|
|
26902
27077
|
exports.SLogo = SLogo;
|
|
27078
|
+
exports.SMeatballButton = SMeatballButton2;
|
|
26903
27079
|
exports.SModal = SModal;
|
|
26904
27080
|
exports.SModalOutlet = SModalOutlet;
|
|
26905
27081
|
exports.SNumberInput = SNumberInput;
|