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.
- package/AGENTS.md +510 -136
- 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/SPage/README.md +19 -0
- package/dist/components/SPage/SPage.d.ts +11 -2
- package/dist/components/SPage/index.d.ts +1 -1
- package/dist/components/SPage/page.config.d.ts +8 -0
- package/dist/components/SPieChart/README.md +1 -0
- package/dist/components/SPieChart/SPieChart.d.ts +6 -1
- package/dist/docs/RecipeGallery.d.ts +13 -0
- package/dist/index.cjs +338 -154
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +336 -154
- 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 +628 -140
- package/dist/llms.txt +512 -138
- package/dist/recipes/AppShell.d.ts +21 -0
- package/dist/recipes/ExcelFilePopupPage.d.ts +5 -0
- package/dist/recipes/LoginPage.d.ts +6 -0
- package/dist/recipes/ProductCreatePage.d.ts +1 -0
- package/dist/recipes/ProductCreateSectionsPage.d.ts +5 -0
- package/dist/recipes/ProductDetailInlineEditPage.d.ts +9 -0
- package/dist/recipes/ProductDetailPage.d.ts +1 -0
- package/dist/recipes/ProductListChipFilterPage.d.ts +1 -0
- package/dist/recipes/ProductListPage.d.ts +1 -0
- package/dist/recipes/TransferOrderPopupPage.d.ts +2 -0
- package/dist/recipes/api.d.ts +91 -0
- package/dist/recipes/recipe-story.d.ts +33 -0
- package/dist/recipes/router.d.ts +9 -0
- package/dist/styles.css +21 -3
- package/package.json +3 -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;
|
|
@@ -12661,6 +12761,10 @@ var BACKGROUND_CLASS = {
|
|
|
12661
12761
|
neutral: "bg-[var(--sys-color-bg-neutralLight)]",
|
|
12662
12762
|
screen: "bg-[var(--sys-color-bg-screen)]"
|
|
12663
12763
|
};
|
|
12764
|
+
var PADDING_CLASS2 = {
|
|
12765
|
+
default: "p-[var(--cmp-pageBody-padding-default)]",
|
|
12766
|
+
none: "p-0"
|
|
12767
|
+
};
|
|
12664
12768
|
var NATIVE_SCROLLBAR_BACKGROUND_CLASS = {
|
|
12665
12769
|
frame: `${SCROLLBAR_TRACK_BORDER_CLASS} ${SCROLLBAR_TRACK_BG_CLASS}`,
|
|
12666
12770
|
neutral: `${SCROLLBAR_TRACK_BORDER_CLASS} ${SCROLLBAR_TRACK_BG_WHITE_CLASS}`,
|
|
@@ -12676,6 +12780,7 @@ var setForwardedRef = (ref, node) => {
|
|
|
12676
12780
|
var SPage = /* @__PURE__ */ react.forwardRef(function SPage2({
|
|
12677
12781
|
background = "frame",
|
|
12678
12782
|
scrollEndSpacing = false,
|
|
12783
|
+
padding = "default",
|
|
12679
12784
|
overlayScrollbar = false,
|
|
12680
12785
|
contentHeight = "auto",
|
|
12681
12786
|
contentWidth = "full",
|
|
@@ -12714,7 +12819,8 @@ var SPage = /* @__PURE__ */ react.forwardRef(function SPage2({
|
|
|
12714
12819
|
{
|
|
12715
12820
|
ref: setMainRef,
|
|
12716
12821
|
className: cn(
|
|
12717
|
-
"box-border min-h-0 min-w-0 flex-1 overflow-auto
|
|
12822
|
+
"box-border min-h-0 min-w-0 flex-1 overflow-auto",
|
|
12823
|
+
PADDING_CLASS2[padding],
|
|
12718
12824
|
overlayScrollbar && "h-full",
|
|
12719
12825
|
!fill && scrollEndSpacing && "pb-[var(--cmp-pageBody-padding-scrollEnd)]",
|
|
12720
12826
|
overlayScrollbar ? SCROLLBAR_HIDDEN_CLASS : `${SCROLLBAR_CLASS} ${NATIVE_SCROLLBAR_BACKGROUND_CLASS[background]}`,
|
|
@@ -12754,6 +12860,7 @@ var SPage = /* @__PURE__ */ react.forwardRef(function SPage2({
|
|
|
12754
12860
|
// src/components/SPage/page.config.ts
|
|
12755
12861
|
var PAGE_BACKGROUNDS = ["frame", "neutral", "screen"];
|
|
12756
12862
|
var PAGE_CONTENT_HEIGHTS = ["auto", "fill"];
|
|
12863
|
+
var PAGE_PADDINGS = ["default", "none"];
|
|
12757
12864
|
var PAGE_CONTENT_WIDTHS = ["full", "fixed", "fixedCenter"];
|
|
12758
12865
|
var PAGE_HEADER_VARIANTS = ["plain", "bar"];
|
|
12759
12866
|
var SPageHeader = /* @__PURE__ */ withDisplayName(
|
|
@@ -16506,7 +16613,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
16506
16613
|
),
|
|
16507
16614
|
contextMenuOn && typeof document !== "undefined" && reactDom.createPortal(
|
|
16508
16615
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16509
|
-
|
|
16616
|
+
RDropdown5__namespace.Root,
|
|
16510
16617
|
{
|
|
16511
16618
|
modal: false,
|
|
16512
16619
|
open: contextMenuOpen,
|
|
@@ -16514,7 +16621,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
16514
16621
|
if (!open) setContextMenu((m) => m == null ? null : { ...m, open: false });
|
|
16515
16622
|
},
|
|
16516
16623
|
children: [
|
|
16517
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16624
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16518
16625
|
"span",
|
|
16519
16626
|
{
|
|
16520
16627
|
"aria-hidden": true,
|
|
@@ -16523,7 +16630,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
16523
16630
|
}
|
|
16524
16631
|
) }),
|
|
16525
16632
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16526
|
-
|
|
16633
|
+
RDropdown5__namespace.Content,
|
|
16527
16634
|
{
|
|
16528
16635
|
align: "start",
|
|
16529
16636
|
side: "bottom",
|
|
@@ -16537,7 +16644,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
16537
16644
|
FLOATING_SLIDE_ANIM
|
|
16538
16645
|
),
|
|
16539
16646
|
children: contextMenuItems?.map((item4) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16540
|
-
|
|
16647
|
+
RDropdown5__namespace.Item,
|
|
16541
16648
|
{
|
|
16542
16649
|
disabled: item4.disabled,
|
|
16543
16650
|
onSelect: () => onContextMenuItemClick?.(item4.value, contextMenu?.rows ?? []),
|
|
@@ -19432,6 +19539,7 @@ function ChartTooltip({
|
|
|
19432
19539
|
anchor,
|
|
19433
19540
|
bounds,
|
|
19434
19541
|
gapX = DEFAULT_GAP_X,
|
|
19542
|
+
footer,
|
|
19435
19543
|
className
|
|
19436
19544
|
}) {
|
|
19437
19545
|
const { ref, size } = useElementSize();
|
|
@@ -19482,7 +19590,8 @@ function ChartTooltip({
|
|
|
19482
19590
|
]
|
|
19483
19591
|
},
|
|
19484
19592
|
`${item4.label}-${index}`
|
|
19485
|
-
))
|
|
19593
|
+
)),
|
|
19594
|
+
footer != null && footer !== false && /* @__PURE__ */ jsxRuntime.jsx("div", { children: footer })
|
|
19486
19595
|
]
|
|
19487
19596
|
}
|
|
19488
19597
|
);
|
|
@@ -19573,6 +19682,7 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
19573
19682
|
formatValue = defaultFormat,
|
|
19574
19683
|
height,
|
|
19575
19684
|
onBarClick,
|
|
19685
|
+
tooltipFooter,
|
|
19576
19686
|
className,
|
|
19577
19687
|
style
|
|
19578
19688
|
}, ref) {
|
|
@@ -20001,7 +20111,16 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
20001
20111
|
items: tooltipItems,
|
|
20002
20112
|
anchor: tooltipAnchor,
|
|
20003
20113
|
bounds: size,
|
|
20004
|
-
gapX: tooltipGapX
|
|
20114
|
+
gapX: tooltipGapX,
|
|
20115
|
+
footer: tooltipFooter?.({
|
|
20116
|
+
categoryIndex: hoveredCategory,
|
|
20117
|
+
name: categories[hoveredCategory] ?? "",
|
|
20118
|
+
points: series.flatMap((s, seriesIndex) => {
|
|
20119
|
+
const value = s.data[hoveredCategory];
|
|
20120
|
+
if (value == null || !Number.isFinite(value)) return [];
|
|
20121
|
+
return [{ seriesIndex, categoryIndex: hoveredCategory, value }];
|
|
20122
|
+
})
|
|
20123
|
+
})
|
|
20005
20124
|
}
|
|
20006
20125
|
)
|
|
20007
20126
|
]
|
|
@@ -20063,7 +20182,8 @@ var POINT_HOVER_BG = "var(--cmp-chart-bg)";
|
|
|
20063
20182
|
var POINT_HOVER_EXTENT = POINT_HOVER_RADIUS + POINT_HOVER_BORDER_WIDTH / 2;
|
|
20064
20183
|
var BAND_MIN = 40;
|
|
20065
20184
|
var VALUE_LABEL_GAP2 = 6;
|
|
20066
|
-
var
|
|
20185
|
+
var AREA_OPACITY_TOP = "30%";
|
|
20186
|
+
var AREA_OPACITY_BOTTOM = "var(--opacity-005)";
|
|
20067
20187
|
var LINE_DATA_LABEL_COLOR = "var(--cmp-chart-bar-dataLabel-color-default)";
|
|
20068
20188
|
var LINE_DATA_LABEL_TYPO = "typo-body-sm-medium";
|
|
20069
20189
|
var LINE_DATA_LABEL_TYPO_HOVER = "typo-body-md-bold";
|
|
@@ -20159,6 +20279,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20159
20279
|
formatValue = defaultFormat2,
|
|
20160
20280
|
height,
|
|
20161
20281
|
onPointClick,
|
|
20282
|
+
tooltipFooter,
|
|
20162
20283
|
className,
|
|
20163
20284
|
style
|
|
20164
20285
|
}, ref) {
|
|
@@ -20166,6 +20287,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20166
20287
|
const { ref: plotRef, size } = useElementSize();
|
|
20167
20288
|
const { ref: axisTextRef, size: axisText } = useElementSize();
|
|
20168
20289
|
const { ref: axisSampleRef, size: axisSample } = useElementSize();
|
|
20290
|
+
const gradientId = react.useId();
|
|
20169
20291
|
const [hoveredCategory, setHoveredCategory] = react.useState(null);
|
|
20170
20292
|
const colorAt = react.useCallback(
|
|
20171
20293
|
(seriesIndex) => paletteColor(palette, seriesIndex, customColors),
|
|
@@ -20294,13 +20416,43 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20294
20416
|
{
|
|
20295
20417
|
"aria-hidden": true,
|
|
20296
20418
|
d,
|
|
20297
|
-
style: { fill:
|
|
20419
|
+
style: { fill: `url(#${gradientId}-area-${seriesIndex})` }
|
|
20298
20420
|
},
|
|
20299
20421
|
`area-${seriesIndex}-${runIndex}`
|
|
20300
20422
|
);
|
|
20301
20423
|
})
|
|
20302
20424
|
);
|
|
20303
|
-
}, [area, plotted, smooth,
|
|
20425
|
+
}, [area, plotted, smooth, gradientId]);
|
|
20426
|
+
const areaGradients = react.useMemo(() => {
|
|
20427
|
+
if (!area) return null;
|
|
20428
|
+
return /* @__PURE__ */ jsxRuntime.jsx("defs", { children: plotted.map((_, seriesIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20429
|
+
"linearGradient",
|
|
20430
|
+
{
|
|
20431
|
+
id: `${gradientId}-area-${seriesIndex}`,
|
|
20432
|
+
x1: "0",
|
|
20433
|
+
y1: "0",
|
|
20434
|
+
x2: "0",
|
|
20435
|
+
y2: "1",
|
|
20436
|
+
children: [
|
|
20437
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20438
|
+
"stop",
|
|
20439
|
+
{
|
|
20440
|
+
offset: "0",
|
|
20441
|
+
style: { stopColor: colorAt(seriesIndex), stopOpacity: AREA_OPACITY_TOP }
|
|
20442
|
+
}
|
|
20443
|
+
),
|
|
20444
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20445
|
+
"stop",
|
|
20446
|
+
{
|
|
20447
|
+
offset: "1",
|
|
20448
|
+
style: { stopColor: colorAt(seriesIndex), stopOpacity: AREA_OPACITY_BOTTOM }
|
|
20449
|
+
}
|
|
20450
|
+
)
|
|
20451
|
+
]
|
|
20452
|
+
},
|
|
20453
|
+
`area-gradient-${seriesIndex}`
|
|
20454
|
+
)) });
|
|
20455
|
+
}, [area, plotted, colorAt, gradientId]);
|
|
20304
20456
|
const lines = react.useMemo(
|
|
20305
20457
|
() => plotted.flatMap(
|
|
20306
20458
|
(row, seriesIndex) => runsOf(row).map((run, runIndex) => {
|
|
@@ -20482,6 +20634,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20482
20634
|
}
|
|
20483
20635
|
}
|
|
20484
20636
|
),
|
|
20637
|
+
areaGradients,
|
|
20485
20638
|
areas,
|
|
20486
20639
|
lines,
|
|
20487
20640
|
pointHalos,
|
|
@@ -20497,7 +20650,16 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20497
20650
|
items: tooltipItems,
|
|
20498
20651
|
anchor: tooltipAnchor,
|
|
20499
20652
|
bounds: size,
|
|
20500
|
-
gapX: { after: -4, before: -4 }
|
|
20653
|
+
gapX: { after: -4, before: -4 },
|
|
20654
|
+
footer: tooltipFooter?.({
|
|
20655
|
+
categoryIndex: hoveredCategory,
|
|
20656
|
+
name: categories[hoveredCategory] ?? "",
|
|
20657
|
+
points: rows.flatMap((row, seriesIndex) => {
|
|
20658
|
+
const point = row[hoveredCategory];
|
|
20659
|
+
if (point == null) return [];
|
|
20660
|
+
return [{ seriesIndex, categoryIndex: hoveredCategory, value: point.own }];
|
|
20661
|
+
})
|
|
20662
|
+
})
|
|
20501
20663
|
}
|
|
20502
20664
|
)
|
|
20503
20665
|
]
|
|
@@ -20515,9 +20677,11 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20515
20677
|
}
|
|
20516
20678
|
);
|
|
20517
20679
|
});
|
|
20518
|
-
var DONUT_INNER_RATIO = 0.
|
|
20680
|
+
var DONUT_INNER_RATIO = 0.4;
|
|
20519
20681
|
var LABEL_MIN_RATIO = 0.05;
|
|
20520
20682
|
var PIE_LABEL_RADIUS_RATIO = 0.65;
|
|
20683
|
+
var HOVER_GROW = 4;
|
|
20684
|
+
var HOVER_CORNER = 2;
|
|
20521
20685
|
var OPACITY_DEFAULT = "var(--cmp-chart-bar-opacity-default)";
|
|
20522
20686
|
var OPACITY_DIMMED = "var(--cmp-chart-bar-opacity-dimmed)";
|
|
20523
20687
|
var OPACITY_HOVER = 1;
|
|
@@ -20530,19 +20694,42 @@ var r2 = (value) => Math.round(value * 100) / 100;
|
|
|
20530
20694
|
function polar(center, radius, angle) {
|
|
20531
20695
|
return { x: center + radius * Math.sin(angle), y: center - radius * Math.cos(angle) };
|
|
20532
20696
|
}
|
|
20533
|
-
|
|
20697
|
+
var arc = (radius, large, sweep, p) => `A${r2(radius)} ${r2(radius)} 0 ${large} ${sweep} ${r2(p.x)} ${r2(p.y)}`;
|
|
20698
|
+
function fitCorner(corner, outer, inner, span) {
|
|
20699
|
+
if (corner <= 0 || outer <= 0) return 0;
|
|
20700
|
+
let fitted = Math.min(corner, (outer - inner) / 2);
|
|
20701
|
+
if (span < Math.PI) {
|
|
20702
|
+
const half = Math.sin(span / 2);
|
|
20703
|
+
fitted = Math.min(fitted, outer * half / (1 + half));
|
|
20704
|
+
if (inner > 0) fitted = Math.min(fitted, inner * half / (1 - half));
|
|
20705
|
+
}
|
|
20706
|
+
return fitted >= 0.5 ? fitted : 0;
|
|
20707
|
+
}
|
|
20708
|
+
function slicePath(center, outer, inner, start, end, corner = 0) {
|
|
20534
20709
|
if (end - start >= Math.PI * 2 - 1e-6) {
|
|
20535
20710
|
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
20711
|
return inner > 0 ? ring(outer) + ring(inner) : ring(outer);
|
|
20537
20712
|
}
|
|
20538
|
-
const
|
|
20539
|
-
const
|
|
20540
|
-
const
|
|
20541
|
-
const
|
|
20542
|
-
|
|
20543
|
-
const
|
|
20544
|
-
|
|
20545
|
-
|
|
20713
|
+
const span = end - start;
|
|
20714
|
+
const round = fitCorner(corner, outer, inner, span);
|
|
20715
|
+
const outerLine = Math.sqrt(Math.max(outer * outer - 2 * outer * round, 0));
|
|
20716
|
+
const outerPhi = round > 0 ? Math.asin(round / (outer - round)) : 0;
|
|
20717
|
+
const outerLarge = span - 2 * outerPhi > Math.PI ? 1 : 0;
|
|
20718
|
+
const o0 = polar(center, outerLine, start);
|
|
20719
|
+
let d = `M${r2(o0.x)} ${r2(o0.y)}`;
|
|
20720
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, outer, start + outerPhi));
|
|
20721
|
+
d += arc(outer, outerLarge, 1, polar(center, outer, end - outerPhi));
|
|
20722
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, outerLine, end));
|
|
20723
|
+
if (inner <= 0) return `${d}L${r2(center)} ${r2(center)}Z`;
|
|
20724
|
+
const innerLine = Math.sqrt(inner * inner + 2 * inner * round);
|
|
20725
|
+
const innerPhi = round > 0 ? Math.asin(round / (inner + round)) : 0;
|
|
20726
|
+
const innerLarge = span - 2 * innerPhi > Math.PI ? 1 : 0;
|
|
20727
|
+
const i0 = polar(center, innerLine, end);
|
|
20728
|
+
d += `L${r2(i0.x)} ${r2(i0.y)}`;
|
|
20729
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, inner, end - innerPhi));
|
|
20730
|
+
d += arc(inner, innerLarge, 0, polar(center, inner, start + innerPhi));
|
|
20731
|
+
if (round > 0) d += arc(round, 0, 1, polar(center, innerLine, start));
|
|
20732
|
+
return `${d}Z`;
|
|
20546
20733
|
}
|
|
20547
20734
|
var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
20548
20735
|
data,
|
|
@@ -20554,44 +20741,44 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20554
20741
|
showTooltip = true,
|
|
20555
20742
|
formatValue = defaultFormat3,
|
|
20556
20743
|
onSliceClick,
|
|
20744
|
+
tooltipFooter,
|
|
20557
20745
|
className,
|
|
20558
20746
|
style,
|
|
20559
20747
|
innerRatio,
|
|
20560
|
-
renderCenter,
|
|
20561
20748
|
kind
|
|
20562
20749
|
}, ref) {
|
|
20563
20750
|
const { ref: plotRef, size } = useElementSize();
|
|
20564
20751
|
const [hovered, setHovered] = react.useState(null);
|
|
20565
|
-
const
|
|
20752
|
+
const arcs = react.useMemo(() => {
|
|
20566
20753
|
const effective = palette === "custom" && !colors?.length ? "multi" : palette;
|
|
20567
|
-
const valid = data.map((
|
|
20568
|
-
const sum = valid.reduce((acc,
|
|
20754
|
+
const valid = data.map((slice2, index) => ({ ...slice2, index })).filter((slice2) => Number.isFinite(slice2.value) && slice2.value > 0);
|
|
20755
|
+
const sum = valid.reduce((acc, slice2) => acc + slice2.value, 0);
|
|
20569
20756
|
let angle = 0;
|
|
20570
|
-
const list = valid.map((
|
|
20571
|
-
const ratio =
|
|
20757
|
+
const list = valid.map((slice2) => {
|
|
20758
|
+
const ratio = slice2.value / sum;
|
|
20572
20759
|
const start = angle;
|
|
20573
20760
|
angle += ratio * Math.PI * 2;
|
|
20574
20761
|
return {
|
|
20575
|
-
index:
|
|
20576
|
-
name:
|
|
20577
|
-
value:
|
|
20762
|
+
index: slice2.index,
|
|
20763
|
+
name: slice2.name,
|
|
20764
|
+
value: slice2.value,
|
|
20578
20765
|
ratio,
|
|
20579
20766
|
start,
|
|
20580
20767
|
end: angle,
|
|
20581
|
-
color: paletteColor(effective,
|
|
20768
|
+
color: paletteColor(effective, slice2.index, colors)
|
|
20582
20769
|
};
|
|
20583
20770
|
});
|
|
20584
|
-
return
|
|
20771
|
+
return list;
|
|
20585
20772
|
}, [data, palette, colors]);
|
|
20586
20773
|
const diameter = size.width;
|
|
20587
20774
|
const center = diameter / 2;
|
|
20588
|
-
const outer = center;
|
|
20775
|
+
const outer = Math.max(center - HOVER_GROW, 0);
|
|
20589
20776
|
const inner = outer * innerRatio;
|
|
20590
|
-
const hoveredArc = arcs.find((
|
|
20777
|
+
const hoveredArc = arcs.find((arc2) => arc2.index === hovered) ?? null;
|
|
20591
20778
|
const legend = showLegend ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
20592
20779
|
ChartLegend,
|
|
20593
20780
|
{
|
|
20594
|
-
items: arcs.map((
|
|
20781
|
+
items: arcs.map((arc2) => ({ name: arc2.name, color: arc2.color })),
|
|
20595
20782
|
activeIndex: hoveredArc ? arcs.indexOf(hoveredArc) : null
|
|
20596
20783
|
}
|
|
20597
20784
|
) : null;
|
|
@@ -20602,6 +20789,17 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20602
20789
|
return { left: point.x, right: point.x, top: point.y };
|
|
20603
20790
|
}, [hoveredArc, diameter, center, outer, inner]);
|
|
20604
20791
|
const labelRadius = inner > 0 ? (outer + inner) / 2 : outer * PIE_LABEL_RADIUS_RATIO;
|
|
20792
|
+
const slice = (target) => {
|
|
20793
|
+
const picked = hovered === target.index;
|
|
20794
|
+
return slicePath(
|
|
20795
|
+
center,
|
|
20796
|
+
picked ? outer + HOVER_GROW : outer,
|
|
20797
|
+
picked ? Math.max(inner - HOVER_GROW, 0) : inner,
|
|
20798
|
+
target.start,
|
|
20799
|
+
target.end,
|
|
20800
|
+
picked ? HOVER_CORNER : 0
|
|
20801
|
+
);
|
|
20802
|
+
};
|
|
20605
20803
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20606
20804
|
ChartFrame,
|
|
20607
20805
|
{
|
|
@@ -20631,34 +20829,34 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20631
20829
|
style: { fill: "var(--cmp-chart-grid-line-color)" }
|
|
20632
20830
|
}
|
|
20633
20831
|
)
|
|
20634
|
-
) : arcs.map((
|
|
20635
|
-
const opacity = hovered == null ? OPACITY_DEFAULT : hovered ===
|
|
20832
|
+
) : arcs.map((arc2) => {
|
|
20833
|
+
const opacity = hovered == null ? OPACITY_DEFAULT : hovered === arc2.index ? OPACITY_HOVER : OPACITY_DIMMED;
|
|
20636
20834
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20637
20835
|
"path",
|
|
20638
20836
|
{
|
|
20639
|
-
d:
|
|
20837
|
+
d: slice(arc2),
|
|
20640
20838
|
fillRule: "evenodd",
|
|
20641
20839
|
className: "transition-opacity duration-200 ease-out motion-reduce:transition-none",
|
|
20642
20840
|
style: {
|
|
20643
|
-
fill:
|
|
20841
|
+
fill: arc2.color,
|
|
20644
20842
|
opacity,
|
|
20645
20843
|
cursor: onSliceClick ? "pointer" : void 0
|
|
20646
20844
|
},
|
|
20647
|
-
onMouseEnter: () => setHovered(
|
|
20845
|
+
onMouseEnter: () => setHovered(arc2.index),
|
|
20648
20846
|
onClick: onSliceClick ? () => onSliceClick({
|
|
20649
|
-
index:
|
|
20650
|
-
name:
|
|
20651
|
-
value:
|
|
20652
|
-
ratio:
|
|
20847
|
+
index: arc2.index,
|
|
20848
|
+
name: arc2.name,
|
|
20849
|
+
value: arc2.value,
|
|
20850
|
+
ratio: arc2.ratio
|
|
20653
20851
|
}) : void 0,
|
|
20654
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${
|
|
20852
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${arc2.name} ${formatValue(arc2.value)} (${formatRatio(arc2.ratio)})` })
|
|
20655
20853
|
},
|
|
20656
|
-
`slice-${
|
|
20854
|
+
`slice-${arc2.index}`
|
|
20657
20855
|
);
|
|
20658
20856
|
}),
|
|
20659
|
-
showValueLabel && arcs.map((
|
|
20660
|
-
if (
|
|
20661
|
-
const point = polar(center, labelRadius, (
|
|
20857
|
+
showValueLabel && arcs.map((arc2) => {
|
|
20858
|
+
if (arc2.ratio < LABEL_MIN_RATIO) return null;
|
|
20859
|
+
const point = polar(center, labelRadius, (arc2.start + arc2.end) / 2);
|
|
20662
20860
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20663
20861
|
"text",
|
|
20664
20862
|
{
|
|
@@ -20670,25 +20868,16 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20670
20868
|
className: "pointer-events-none typo-body-sm-bold transition-opacity duration-200 ease-out motion-reduce:transition-none",
|
|
20671
20869
|
style: {
|
|
20672
20870
|
fill: "var(--sys-color-fg-inverse)",
|
|
20673
|
-
opacity: hovered != null && hovered !==
|
|
20871
|
+
opacity: hovered != null && hovered !== arc2.index ? OPACITY_DIMMED : void 0
|
|
20674
20872
|
},
|
|
20675
|
-
children: formatRatio(
|
|
20873
|
+
children: formatRatio(arc2.ratio)
|
|
20676
20874
|
},
|
|
20677
|
-
`label-${
|
|
20875
|
+
`label-${arc2.index}`
|
|
20678
20876
|
);
|
|
20679
20877
|
})
|
|
20680
20878
|
]
|
|
20681
20879
|
}
|
|
20682
20880
|
),
|
|
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
20881
|
showTooltip && hoveredArc && tooltipAnchor && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20693
20882
|
ChartTooltip,
|
|
20694
20883
|
{
|
|
@@ -20701,19 +20890,19 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
20701
20890
|
}
|
|
20702
20891
|
],
|
|
20703
20892
|
anchor: tooltipAnchor,
|
|
20704
|
-
bounds: size
|
|
20893
|
+
bounds: size,
|
|
20894
|
+
footer: tooltipFooter?.({
|
|
20895
|
+
index: hoveredArc.index,
|
|
20896
|
+
name: hoveredArc.name,
|
|
20897
|
+
value: hoveredArc.value,
|
|
20898
|
+
ratio: hoveredArc.ratio
|
|
20899
|
+
})
|
|
20705
20900
|
}
|
|
20706
20901
|
)
|
|
20707
20902
|
] })
|
|
20708
20903
|
}
|
|
20709
20904
|
);
|
|
20710
20905
|
});
|
|
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
20906
|
var SPieChart = /* @__PURE__ */ react.forwardRef(function SPieChart2({
|
|
20718
20907
|
palette = "multi",
|
|
20719
20908
|
showValueLabel = false,
|
|
@@ -20737,17 +20926,12 @@ var SPieChart = /* @__PURE__ */ react.forwardRef(function SPieChart2({
|
|
|
20737
20926
|
}
|
|
20738
20927
|
);
|
|
20739
20928
|
});
|
|
20740
|
-
var defaultFormat4 = (value) => value.toLocaleString();
|
|
20741
20929
|
var SDonutChart = /* @__PURE__ */ react.forwardRef(function SDonutChart2({
|
|
20742
|
-
centerLabel,
|
|
20743
|
-
centerValue,
|
|
20744
|
-
hideCenter = false,
|
|
20745
20930
|
palette = "multi",
|
|
20746
20931
|
showValueLabel = false,
|
|
20747
20932
|
showLegend = true,
|
|
20748
20933
|
legendPosition = "top",
|
|
20749
20934
|
showTooltip = true,
|
|
20750
|
-
formatValue = defaultFormat4,
|
|
20751
20935
|
...props
|
|
20752
20936
|
}, ref) {
|
|
20753
20937
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20760,10 +20944,8 @@ var SDonutChart = /* @__PURE__ */ react.forwardRef(function SDonutChart2({
|
|
|
20760
20944
|
showLegend,
|
|
20761
20945
|
legendPosition,
|
|
20762
20946
|
showTooltip,
|
|
20763
|
-
formatValue,
|
|
20764
20947
|
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) })
|
|
20948
|
+
kind: "\uB3C4\uB11B \uADF8\uB798\uD504"
|
|
20767
20949
|
}
|
|
20768
20950
|
);
|
|
20769
20951
|
});
|
|
@@ -22049,7 +22231,7 @@ var PaletteItem = ({
|
|
|
22049
22231
|
className,
|
|
22050
22232
|
onSelect,
|
|
22051
22233
|
children
|
|
22052
|
-
}) => asMenu ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22234
|
+
}) => 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
22235
|
var ColorPalette = ({
|
|
22054
22236
|
colors,
|
|
22055
22237
|
columns,
|
|
@@ -22181,7 +22363,7 @@ var TableMenuItem = ({
|
|
|
22181
22363
|
disabled,
|
|
22182
22364
|
onSelect
|
|
22183
22365
|
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
22184
|
-
|
|
22366
|
+
RDropdown5__namespace.Item,
|
|
22185
22367
|
{
|
|
22186
22368
|
className: cn(menuItemClass, menuItemDisabledClass),
|
|
22187
22369
|
disabled,
|
|
@@ -22348,8 +22530,8 @@ function EditorToolbarBar({
|
|
|
22348
22530
|
const node = (item4) => {
|
|
22349
22531
|
switch (item4) {
|
|
22350
22532
|
case "heading":
|
|
22351
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22352
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22533
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
22534
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22353
22535
|
ToolbarButton,
|
|
22354
22536
|
{
|
|
22355
22537
|
label: "\uC81C\uBAA9 \uB2E8\uACC4",
|
|
@@ -22362,9 +22544,9 @@ function EditorToolbarBar({
|
|
|
22362
22544
|
]
|
|
22363
22545
|
}
|
|
22364
22546
|
) }),
|
|
22365
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22547
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22366
22548
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22367
|
-
|
|
22549
|
+
RDropdown5__namespace.Item,
|
|
22368
22550
|
{
|
|
22369
22551
|
className: menuItemClass,
|
|
22370
22552
|
onSelect: () => chain()?.setParagraph().run(),
|
|
@@ -22372,7 +22554,7 @@ function EditorToolbarBar({
|
|
|
22372
22554
|
}
|
|
22373
22555
|
),
|
|
22374
22556
|
SEDITOR_HEADING_LEVELS.map((level) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
22375
|
-
|
|
22557
|
+
RDropdown5__namespace.Item,
|
|
22376
22558
|
{
|
|
22377
22559
|
className: menuItemClass,
|
|
22378
22560
|
onSelect: () => chain()?.setHeading({ level }).run(),
|
|
@@ -22383,13 +22565,13 @@ function EditorToolbarBar({
|
|
|
22383
22565
|
] }) })
|
|
22384
22566
|
] }, item4);
|
|
22385
22567
|
case "fontSize":
|
|
22386
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22387
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22568
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
22569
|
+
/* @__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
22570
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-[20px]", children: activeFontSize ?? FONT_SIZE_DEFAULT_LABEL }),
|
|
22389
22571
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: 12 })
|
|
22390
22572
|
] }) }),
|
|
22391
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22392
|
-
|
|
22573
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22574
|
+
RDropdown5__namespace.Content,
|
|
22393
22575
|
{
|
|
22394
22576
|
sideOffset: 4,
|
|
22395
22577
|
align: "start",
|
|
@@ -22397,7 +22579,7 @@ function EditorToolbarBar({
|
|
|
22397
22579
|
style: { maxHeight: FONT_SIZE_MENU_MAX_HEIGHT },
|
|
22398
22580
|
children: [
|
|
22399
22581
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22400
|
-
|
|
22582
|
+
RDropdown5__namespace.Item,
|
|
22401
22583
|
{
|
|
22402
22584
|
className: cn(menuItemClass, activeFontSize === null && menuItemSelectedClass),
|
|
22403
22585
|
title: `${FONT_SIZE_DEFAULT_LABEL} (\uBCF8\uBB38 ${SEDITOR_DEFAULT_FONT_SIZE}px)`,
|
|
@@ -22406,7 +22588,7 @@ function EditorToolbarBar({
|
|
|
22406
22588
|
}
|
|
22407
22589
|
),
|
|
22408
22590
|
SEDITOR_FONT_SIZES.map((size) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
22409
|
-
|
|
22591
|
+
RDropdown5__namespace.Item,
|
|
22410
22592
|
{
|
|
22411
22593
|
ref: activeFontSize === size ? (el) => {
|
|
22412
22594
|
el?.scrollIntoView({ block: "nearest" });
|
|
@@ -22498,9 +22680,9 @@ function EditorToolbarBar({
|
|
|
22498
22680
|
},
|
|
22499
22681
|
item4
|
|
22500
22682
|
);
|
|
22501
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22502
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22503
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22683
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
22684
|
+
/* @__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 }) }) }) }),
|
|
22685
|
+
/* @__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
22686
|
ColorPalette,
|
|
22505
22687
|
{
|
|
22506
22688
|
asMenu: true,
|
|
@@ -22606,14 +22788,14 @@ function EditorToolbarBar({
|
|
|
22606
22788
|
case "list": {
|
|
22607
22789
|
const ListIcon = state2.orderedList ? IconOrderedList : state2.taskList ? IconTaskList : IconBulletList;
|
|
22608
22790
|
const listActive = state2.bulletList || state2.orderedList || state2.taskList;
|
|
22609
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22610
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22791
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Root, { modal: !insideModal, children: [
|
|
22792
|
+
/* @__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
22793
|
/* @__PURE__ */ jsxRuntime.jsx(ListIcon, { size: ICON_SIZE }),
|
|
22612
22794
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
|
|
22613
22795
|
] }) }),
|
|
22614
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22796
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22615
22797
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22616
|
-
|
|
22798
|
+
RDropdown5__namespace.Item,
|
|
22617
22799
|
{
|
|
22618
22800
|
className: menuItemClass,
|
|
22619
22801
|
onSelect: () => chain()?.toggleBulletList().run(),
|
|
@@ -22624,7 +22806,7 @@ function EditorToolbarBar({
|
|
|
22624
22806
|
}
|
|
22625
22807
|
),
|
|
22626
22808
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22627
|
-
|
|
22809
|
+
RDropdown5__namespace.Item,
|
|
22628
22810
|
{
|
|
22629
22811
|
className: menuItemClass,
|
|
22630
22812
|
onSelect: () => chain()?.toggleOrderedList().run(),
|
|
@@ -22635,7 +22817,7 @@ function EditorToolbarBar({
|
|
|
22635
22817
|
}
|
|
22636
22818
|
),
|
|
22637
22819
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22638
|
-
|
|
22820
|
+
RDropdown5__namespace.Item,
|
|
22639
22821
|
{
|
|
22640
22822
|
className: menuItemClass,
|
|
22641
22823
|
onSelect: () => chain()?.toggleTaskList().run(),
|
|
@@ -22739,17 +22921,17 @@ function EditorToolbarBar({
|
|
|
22739
22921
|
);
|
|
22740
22922
|
case "table":
|
|
22741
22923
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22742
|
-
|
|
22924
|
+
RDropdown5__namespace.Root,
|
|
22743
22925
|
{
|
|
22744
22926
|
open: tableOpen,
|
|
22745
22927
|
onOpenChange: setTableOpen,
|
|
22746
22928
|
modal: !insideModal,
|
|
22747
22929
|
children: [
|
|
22748
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22930
|
+
/* @__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
22931
|
/* @__PURE__ */ jsxRuntime.jsx(IconTable, { size: ICON_SIZE }),
|
|
22750
22932
|
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: CARET_SIZE })
|
|
22751
22933
|
] }) }),
|
|
22752
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22934
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(RDropdown5__namespace.Content, { sideOffset: 4, align: "start", className: menuClass, children: [
|
|
22753
22935
|
!state2.inTable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22754
22936
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22755
22937
|
TableSizePicker,
|
|
@@ -22761,7 +22943,7 @@ function EditorToolbarBar({
|
|
|
22761
22943
|
}
|
|
22762
22944
|
}
|
|
22763
22945
|
),
|
|
22764
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22946
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Separator, { className: menuSeparatorClass })
|
|
22765
22947
|
] }),
|
|
22766
22948
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22767
22949
|
TableMenuItem,
|
|
@@ -22795,7 +22977,7 @@ function EditorToolbarBar({
|
|
|
22795
22977
|
onSelect: () => chain()?.addColumnAfter().run()
|
|
22796
22978
|
}
|
|
22797
22979
|
),
|
|
22798
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22980
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Separator, { className: menuSeparatorClass }),
|
|
22799
22981
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22800
22982
|
TableMenuItem,
|
|
22801
22983
|
{
|
|
@@ -22828,7 +23010,7 @@ function EditorToolbarBar({
|
|
|
22828
23010
|
onSelect: () => chain()?.toggleHeaderColumn().run()
|
|
22829
23011
|
}
|
|
22830
23012
|
),
|
|
22831
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23013
|
+
/* @__PURE__ */ jsxRuntime.jsx(RDropdown5__namespace.Separator, { className: menuSeparatorClass }),
|
|
22832
23014
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22833
23015
|
TableMenuItem,
|
|
22834
23016
|
{
|
|
@@ -26834,6 +27016,7 @@ exports.PAGE_BACKGROUNDS = PAGE_BACKGROUNDS;
|
|
|
26834
27016
|
exports.PAGE_CONTENT_HEIGHTS = PAGE_CONTENT_HEIGHTS;
|
|
26835
27017
|
exports.PAGE_CONTENT_WIDTHS = PAGE_CONTENT_WIDTHS;
|
|
26836
27018
|
exports.PAGE_HEADER_VARIANTS = PAGE_HEADER_VARIANTS;
|
|
27019
|
+
exports.PAGE_PADDINGS = PAGE_PADDINGS;
|
|
26837
27020
|
exports.RangeCalendar = RangeCalendar;
|
|
26838
27021
|
exports.SAccountListBox = SAccountListBox;
|
|
26839
27022
|
exports.SActionModal = SActionModal;
|
|
@@ -26900,6 +27083,7 @@ exports.SLoadingModal = SLoadingModal;
|
|
|
26900
27083
|
exports.SLoadingViewport = SLoadingViewport;
|
|
26901
27084
|
exports.SLoginCard = SLoginCard2;
|
|
26902
27085
|
exports.SLogo = SLogo;
|
|
27086
|
+
exports.SMeatballButton = SMeatballButton2;
|
|
26903
27087
|
exports.SModal = SModal;
|
|
26904
27088
|
exports.SModalOutlet = SModalOutlet;
|
|
26905
27089
|
exports.SNumberInput = SNumberInput;
|