sellmate-design-system-react 7.1.0 → 8.1.0
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 +412 -18
- package/README.md +16 -1
- package/dist/components/SDraggableItem/README.md +1 -0
- package/dist/components/SDraggableItem/SDraggableItem.d.ts +3 -0
- package/dist/components/SDrawer/README.md +5 -4
- package/dist/components/SDrawer/SDrawer.d.ts +16 -5
- package/dist/components/SExpansionItem/README.md +1 -0
- package/dist/components/SExpansionItem/SExpansionItem.d.ts +3 -0
- package/dist/components/SGnb/README.md +7 -0
- package/dist/components/SGnb/SGnb.d.ts +27 -0
- package/dist/components/SGnb/gnb.config.d.ts +13 -0
- package/dist/components/SIcon/SIcon.d.ts +1 -1
- package/dist/components/SIcon/icons.gen.d.ts +8 -3
- package/dist/components/SLayout/SLayout.d.ts +6 -0
- package/dist/components/SListItem/README.md +1 -0
- package/dist/components/SListItem/SListItem.d.ts +3 -0
- package/dist/components/SModal/README.md +41 -6
- package/dist/components/SModal/SModalOutlet.d.ts +18 -0
- package/dist/components/SModal/index.d.ts +1 -0
- package/dist/components/SSplitter/README.md +27 -0
- package/dist/components/SSplitter/SSplitter.d.ts +32 -0
- package/dist/components/SSplitter/index.d.ts +2 -0
- package/dist/components/SSplitter/splitter.config.d.ts +15 -0
- package/dist/components/STooltip/README.md +2 -0
- package/dist/index.cjs +1034 -221
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1033 -223
- package/dist/index.js.map +1 -1
- package/dist/lib/autofill.d.ts +29 -0
- package/dist/lib/is-dev.d.ts +2 -0
- package/dist/lib/modal-outlet.d.ts +53 -0
- package/dist/llms-full.txt +502 -28
- package/dist/llms.txt +418 -20
- package/dist/styles.css +154 -17
- package/dist/theme.css +40 -10
- package/eslint/scale.gen.mjs +1 -1
- package/package.json +2 -1
package/dist/index.cjs
CHANGED
|
@@ -466,6 +466,27 @@ var Icon_arrowUp = (p) => {
|
|
|
466
466
|
}
|
|
467
467
|
);
|
|
468
468
|
};
|
|
469
|
+
var Icon_asterisk = (p) => {
|
|
470
|
+
const { size = 24, ...rest } = p;
|
|
471
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
472
|
+
"svg",
|
|
473
|
+
{
|
|
474
|
+
width: size,
|
|
475
|
+
height: size,
|
|
476
|
+
viewBox: "0 0 24 24",
|
|
477
|
+
fill: "none",
|
|
478
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
479
|
+
...rest,
|
|
480
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
481
|
+
"path",
|
|
482
|
+
{
|
|
483
|
+
d: "M12.1736 2.91895C12.3072 2.91895 12.4174 3.02382 12.4236 3.15723L12.7644 10.6738L19.4461 7.21191C19.5647 7.15042 19.7112 7.19288 19.7781 7.30859L19.9519 7.61035C20.0184 7.72598 19.9822 7.87332 19.8699 7.94531L13.53 11.999L19.8699 16.0547C19.9822 16.1267 20.0184 16.274 19.9519 16.3896L19.7781 16.6914C19.7113 16.8071 19.5647 16.8496 19.4461 16.7881L12.7654 13.3252L12.4236 20.8428C12.4174 20.9762 12.3072 21.0811 12.1736 21.0811H11.8259C11.6925 21.0809 11.5831 20.9761 11.5769 20.8428L11.2341 13.3252L4.55445 16.7881C4.43582 16.8496 4.28927 16.8071 4.22242 16.6914L4.04859 16.3896C3.98202 16.2739 4.01814 16.1266 4.13063 16.0547L10.4695 12L4.13063 7.94531C4.01813 7.87336 3.98201 7.72606 4.04859 7.61035L4.22242 7.30859C4.28928 7.19292 4.43582 7.15043 4.55445 7.21191L11.2341 10.6738L11.5769 3.15723C11.5831 3.02392 11.6925 2.91909 11.8259 2.91895H12.1736Z",
|
|
484
|
+
fill: "currentColor"
|
|
485
|
+
}
|
|
486
|
+
)
|
|
487
|
+
}
|
|
488
|
+
);
|
|
489
|
+
};
|
|
469
490
|
var Icon_attachFile = (p) => {
|
|
470
491
|
const { size = 24, ...rest } = p;
|
|
471
492
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -547,7 +568,7 @@ var Icon_barcode = (p) => {
|
|
|
547
568
|
};
|
|
548
569
|
var Icon_bell = (p) => {
|
|
549
570
|
const { size = 24, ...rest } = p;
|
|
550
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
571
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
551
572
|
"svg",
|
|
552
573
|
{
|
|
553
574
|
width: size,
|
|
@@ -556,22 +577,15 @@ var Icon_bell = (p) => {
|
|
|
556
577
|
fill: "none",
|
|
557
578
|
xmlns: "http://www.w3.org/2000/svg",
|
|
558
579
|
...rest,
|
|
559
|
-
children:
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
"path",
|
|
569
|
-
{
|
|
570
|
-
d: "M12.0002 2C12.5525 2.00002 13.0002 2.44772 13.0002 3V4.20898C15.9941 4.69573 18.2815 7.3314 18.2815 10.5107V14.1582C18.2815 15.0811 19.1207 15.8005 19.7629 16.4531C20.4046 17.1057 19.6388 17.957 18.7307 17.957H5.26976C4.36161 17.957 3.59581 17.1057 4.23754 16.4531C4.87979 15.8005 5.71898 15.0811 5.71898 14.1582V10.5107C5.71898 7.33139 8.00632 4.69572 11.0002 4.20898V3C11.0002 2.44772 11.4479 2 12.0002 2Z",
|
|
571
|
-
fill: "currentColor"
|
|
572
|
-
}
|
|
573
|
-
)
|
|
574
|
-
]
|
|
580
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
581
|
+
"path",
|
|
582
|
+
{
|
|
583
|
+
fillRule: "evenodd",
|
|
584
|
+
clipRule: "evenodd",
|
|
585
|
+
d: "M11.9997 2C12.8281 2 13.4997 2.67157 13.4997 3.5V4.16504C16.4633 4.82344 18.6734 7.38936 18.6735 10.4561V14.1465L18.6843 14.3301C18.7846 15.2926 19.607 16.8595 20.2468 17.4785C20.9292 18.1386 20.1161 19 19.1511 19H14.9938C14.9938 19.0028 14.994 19.0059 14.9938 19.0088C14.8967 20.6781 13.5933 22 11.9997 22C10.4062 21.9998 9.10269 20.678 9.00556 19.0088C9.00539 19.0059 9.00559 19.0028 9.00556 19H4.84833L4.66962 18.9902C3.78764 18.8932 3.11313 18.0974 3.75263 17.4785C4.39237 16.8596 5.21478 15.2927 5.31513 14.3301L5.32587 14.1465V10.4561C5.32596 7.38957 7.53635 4.82365 10.4997 4.16504V3.5C10.4997 2.67167 11.1714 2.00016 11.9997 2ZM11.9997 5.5C9.0949 5.50016 6.82597 7.76554 6.82587 10.4561V14.1465C6.82577 14.9672 6.47479 15.89 6.14423 16.5703C5.99522 16.8769 5.81805 17.1956 5.6247 17.5H18.3747C18.1813 17.1956 18.0042 16.8769 17.8552 16.5703C17.5246 15.89 17.1736 14.9671 17.1735 14.1465V10.4561C17.1734 7.76545 14.9046 5.5 11.9997 5.5Z",
|
|
586
|
+
fill: "currentColor"
|
|
587
|
+
}
|
|
588
|
+
)
|
|
575
589
|
}
|
|
576
590
|
);
|
|
577
591
|
};
|
|
@@ -1655,28 +1669,7 @@ var Icon_history = (p) => {
|
|
|
1655
1669
|
}
|
|
1656
1670
|
);
|
|
1657
1671
|
};
|
|
1658
|
-
var
|
|
1659
|
-
const { size = 24, ...rest } = p;
|
|
1660
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1661
|
-
"svg",
|
|
1662
|
-
{
|
|
1663
|
-
width: size,
|
|
1664
|
-
height: size,
|
|
1665
|
-
viewBox: "0 0 24 24",
|
|
1666
|
-
fill: "none",
|
|
1667
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1668
|
-
...rest,
|
|
1669
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1670
|
-
"path",
|
|
1671
|
-
{
|
|
1672
|
-
d: "M7.34277 10.165C7.43716 10.078 7.58268 10.0769 7.67871 10.1621L15.3535 16.9844C16.0043 17.5629 16.9817 17.575 17.6465 17.0127L22 13.3281V20C22 21.1046 21.1046 22 20 22H4C2.89543 22 2 21.1046 2 20V15.0967L7.34277 10.165ZM20 2C21.1046 2 22 2.89543 22 4V11.3633L16.6777 15.8672C16.5828 15.9475 16.4426 15.9459 16.3496 15.8633L8.67578 9.04102C8.00336 8.44333 6.98628 8.45327 6.3252 9.06348L2 13.0557V4C2 2.89543 2.89543 2 4 2H20ZM16.25 6C15.0074 6 14 7.00736 14 8.25C14 9.49264 15.0074 10.5 16.25 10.5C17.4926 10.5 18.5 9.49264 18.5 8.25C18.5 7.00736 17.4926 6 16.25 6Z",
|
|
1673
|
-
fill: "currentColor"
|
|
1674
|
-
}
|
|
1675
|
-
)
|
|
1676
|
-
}
|
|
1677
|
-
);
|
|
1678
|
-
};
|
|
1679
|
-
var Icon_imageOutline = (p) => {
|
|
1672
|
+
var Icon_image = (p) => {
|
|
1680
1673
|
const { size = 24, ...rest } = p;
|
|
1681
1674
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1682
1675
|
"svg",
|
|
@@ -1693,7 +1686,7 @@ var Icon_imageOutline = (p) => {
|
|
|
1693
1686
|
{
|
|
1694
1687
|
fillRule: "evenodd",
|
|
1695
1688
|
clipRule: "evenodd",
|
|
1696
|
-
d: "
|
|
1689
|
+
d: "M16 5.25C17.5188 5.25 18.75 6.48122 18.75 8C18.75 9.51878 17.5188 10.75 16 10.75C14.4812 10.75 13.25 9.51878 13.25 8C13.25 6.48122 14.4812 5.25 16 5.25ZM16 6.75C15.3096 6.75 14.75 7.30964 14.75 8C14.75 8.69036 15.3096 9.25 16 9.25C16.6904 9.25 17.25 8.69036 17.25 8C17.25 7.30964 16.6904 6.75 16 6.75Z",
|
|
1697
1690
|
fill: "currentColor"
|
|
1698
1691
|
}
|
|
1699
1692
|
),
|
|
@@ -1702,7 +1695,7 @@ var Icon_imageOutline = (p) => {
|
|
|
1702
1695
|
{
|
|
1703
1696
|
fillRule: "evenodd",
|
|
1704
1697
|
clipRule: "evenodd",
|
|
1705
|
-
d: "M19.2002 2.0498C20.7187 2.05002 21.9501 3.28123 21.9502 4.7998V19.2002C21.95 20.7187 20.7187 21.95 19.2002 21.9502H4.7998C3.28124 21.9501 2.05001 20.7187 2.0498 19.2002V4.7998C2.0499 3.28117 3.
|
|
1698
|
+
d: "M19.2002 2.0498C20.7187 2.05002 21.9501 3.28123 21.9502 4.7998V19.2002C21.95 20.7187 20.7187 21.95 19.2002 21.9502H4.7998C3.28124 21.9501 2.05001 20.7187 2.0498 19.2002V4.7998C2.0499 3.28117 3.28116 2.0499 4.7998 2.0498H19.2002ZM4.7998 3.5498C4.10959 3.5499 3.5499 4.10959 3.5498 4.7998V11.8037L6.76465 8.70801C7.1683 8.31972 7.81224 8.33867 8.19238 8.75L14.9121 16.0293C15.2496 16.3947 15.8042 16.457 16.2139 16.1748L19.4326 13.9561C19.7591 13.731 20.1435 13.7318 20.4502 13.8867V4.7998C20.4501 4.10966 19.8903 3.55002 19.2002 3.5498H4.7998Z",
|
|
1706
1699
|
fill: "currentColor"
|
|
1707
1700
|
}
|
|
1708
1701
|
)
|
|
@@ -1821,6 +1814,36 @@ var Icon_launcher = (p) => {
|
|
|
1821
1814
|
}
|
|
1822
1815
|
);
|
|
1823
1816
|
};
|
|
1817
|
+
var Icon_leftRight = (p) => {
|
|
1818
|
+
const { size = 24, ...rest } = p;
|
|
1819
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1820
|
+
"svg",
|
|
1821
|
+
{
|
|
1822
|
+
width: size,
|
|
1823
|
+
height: size,
|
|
1824
|
+
viewBox: "0 0 24 24",
|
|
1825
|
+
fill: "none",
|
|
1826
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1827
|
+
...rest,
|
|
1828
|
+
children: [
|
|
1829
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1830
|
+
"path",
|
|
1831
|
+
{
|
|
1832
|
+
d: "M6.46594 12.5001C6.7421 12.1916 7.21587 12.1655 7.52454 12.4415C7.83288 12.7177 7.85911 13.1915 7.58313 13.5001L4.67688 16.7501H21.0001C21.4142 16.7502 21.7501 17.086 21.7501 17.5001C21.75 17.9142 21.4142 18.25 21.0001 18.2501H4.67688L7.58313 21.5001C7.859 21.8088 7.83295 22.2826 7.52454 22.5587C7.21592 22.8347 6.74212 22.8085 6.46594 22.5001L2.44153 18.0001C2.18693 17.7154 2.18693 17.2848 2.44153 17.0001L6.46594 12.5001Z",
|
|
1833
|
+
fill: "currentColor"
|
|
1834
|
+
}
|
|
1835
|
+
),
|
|
1836
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1837
|
+
"path",
|
|
1838
|
+
{
|
|
1839
|
+
d: "M16.4757 1.44153C16.7844 1.16552 17.2582 1.19163 17.5343 1.50013L21.5587 6.00013C21.8132 6.28481 21.8132 6.71549 21.5587 7.00013L17.5343 11.5001C17.2582 11.8086 16.7844 11.8346 16.4757 11.5587C16.1672 11.2826 16.1411 10.8088 16.4171 10.5001L19.3234 7.25013H3.00012C2.58596 7.25013 2.2502 6.91428 2.25012 6.50013C2.25012 6.08591 2.58591 5.75013 3.00012 5.75013H19.3234L16.4171 2.50013C16.1411 2.19146 16.1672 1.71769 16.4757 1.44153Z",
|
|
1840
|
+
fill: "currentColor"
|
|
1841
|
+
}
|
|
1842
|
+
)
|
|
1843
|
+
]
|
|
1844
|
+
}
|
|
1845
|
+
);
|
|
1846
|
+
};
|
|
1824
1847
|
var Icon_line = (p) => {
|
|
1825
1848
|
const { size = 24, ...rest } = p;
|
|
1826
1849
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2439,6 +2462,27 @@ var Icon_search = (p) => {
|
|
|
2439
2462
|
}
|
|
2440
2463
|
);
|
|
2441
2464
|
};
|
|
2465
|
+
var Icon_send = (p) => {
|
|
2466
|
+
const { size = 24, ...rest } = p;
|
|
2467
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2468
|
+
"svg",
|
|
2469
|
+
{
|
|
2470
|
+
width: size,
|
|
2471
|
+
height: size,
|
|
2472
|
+
viewBox: "0 0 24 24",
|
|
2473
|
+
fill: "none",
|
|
2474
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2475
|
+
...rest,
|
|
2476
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2477
|
+
"path",
|
|
2478
|
+
{
|
|
2479
|
+
d: "M19.8551 3.15204C20.1245 3.06242 20.4219 3.13291 20.6226 3.33368C20.8233 3.53455 20.8931 3.83186 20.8033 4.10126L15.3209 20.5485C14.8017 22.1061 12.6164 22.1561 12.0269 20.6237L9.61191 14.3434L3.33261 11.9284C1.80035 11.3391 1.84967 9.15489 3.40683 8.63544L19.8551 3.15204ZM11.067 13.9479L13.4273 20.0847C13.5115 20.3036 13.8239 20.2964 13.898 20.0739L18.3756 6.64032L11.067 13.9479ZM3.88144 10.0583C3.65915 10.1325 3.65209 10.4437 3.8707 10.528L10.0064 12.8874L17.3141 5.58075L3.88144 10.0583Z",
|
|
2480
|
+
fill: "currentColor"
|
|
2481
|
+
}
|
|
2482
|
+
)
|
|
2483
|
+
}
|
|
2484
|
+
);
|
|
2485
|
+
};
|
|
2442
2486
|
var Icon_setting = (p) => {
|
|
2443
2487
|
const { size = 24, ...rest } = p;
|
|
2444
2488
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2460,7 +2504,7 @@ var Icon_setting = (p) => {
|
|
|
2460
2504
|
}
|
|
2461
2505
|
);
|
|
2462
2506
|
};
|
|
2463
|
-
var
|
|
2507
|
+
var Icon_settingOutline = (p) => {
|
|
2464
2508
|
const { size = 24, ...rest } = p;
|
|
2465
2509
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2466
2510
|
"svg",
|
|
@@ -2475,7 +2519,9 @@ var Icon_shield = (p) => {
|
|
|
2475
2519
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2476
2520
|
"path",
|
|
2477
2521
|
{
|
|
2478
|
-
|
|
2522
|
+
fillRule: "evenodd",
|
|
2523
|
+
clipRule: "evenodd",
|
|
2524
|
+
d: "M11.9996 8C14.2087 8 15.9996 9.79086 15.9996 12C15.9996 14.2091 14.2087 16 11.9996 16C9.79065 15.9998 7.9996 14.209 7.9996 12C7.9996 9.791 9.79065 8.00022 11.9996 8ZM11.9996 9.5C10.6191 9.50022 9.4996 10.6194 9.4996 12C9.4996 13.3806 10.6191 14.4998 11.9996 14.5C13.3803 14.5 14.4996 13.3807 14.4996 12C14.4996 10.6193 13.3803 9.5 11.9996 9.5Z",
|
|
2479
2525
|
fill: "currentColor"
|
|
2480
2526
|
}
|
|
2481
2527
|
),
|
|
@@ -2484,7 +2530,7 @@ var Icon_shield = (p) => {
|
|
|
2484
2530
|
{
|
|
2485
2531
|
fillRule: "evenodd",
|
|
2486
2532
|
clipRule: "evenodd",
|
|
2487
|
-
d: "
|
|
2533
|
+
d: "M13.1851 1C13.5085 1 13.7979 1.20161 13.9068 1.50293L14.6832 3.65527C14.9613 3.72452 15.2006 3.79367 15.4029 3.86621C15.5134 3.90579 15.64 3.95628 15.7828 4.0166L16.2613 4.22949L18.0689 3.27246C18.2163 3.19438 18.3856 3.16661 18.5504 3.19238C18.7153 3.21835 18.8676 3.29735 18.984 3.41699L20.5748 5.06152C20.7859 5.28042 20.8459 5.60054 20.7271 5.87988L19.8785 7.86719C20.0192 8.12546 20.1316 8.34655 20.2174 8.53125C20.3097 8.73243 20.4239 9.01001 20.5601 9.36719L22.5377 10.2148L22.6432 10.2695C22.8771 10.4155 23.016 10.6779 22.9986 10.9561L22.8531 13.2383L22.8375 13.3486C22.8141 13.4565 22.7672 13.5589 22.6998 13.6475L22.6266 13.7305C22.5476 13.8076 22.4523 13.8674 22.3473 13.9043L20.4752 14.5693C20.4213 14.8278 20.3647 15.0493 20.3053 15.2363L20.1519 15.666C20.0973 15.8078 20.0394 15.9488 19.9781 16.0879L20.9185 18.166L20.9586 18.2793C20.9899 18.3941 20.9942 18.5153 20.9693 18.6328L20.9351 18.7471C20.8923 18.8584 20.823 18.959 20.733 19.0391L18.9449 20.6357L18.8512 20.707C18.753 20.7705 18.6411 20.812 18.524 20.8262L18.4059 20.8311C18.2889 20.8272 18.1732 20.7964 18.0689 20.7412L16.2262 19.7647C15.9378 19.9173 15.6394 20.0519 15.3346 20.168L14.5299 20.4697L13.815 22.4502L13.7672 22.5547C13.7121 22.6552 13.6346 22.7424 13.5406 22.8096L13.442 22.8701C13.3398 22.9219 13.2264 22.9498 13.1109 22.9522L11.0211 23C10.9023 23.0031 10.7841 22.9783 10.6773 22.9287L10.5748 22.8711C10.4431 22.7831 10.3415 22.6557 10.2848 22.5078L9.44198 20.2783C9.1547 20.1801 8.86973 20.0733 8.58847 19.959C8.35848 19.8594 8.13142 19.7518 7.90878 19.6367L5.81894 20.5303L5.71347 20.5664C5.64162 20.5854 5.56705 20.594 5.49276 20.5918L5.38241 20.5801C5.27208 20.5606 5.1671 20.5175 5.07577 20.4541L4.98886 20.3838L3.44198 18.9326C3.35574 18.8519 3.28988 18.7525 3.2496 18.6426L3.21737 18.5303C3.18685 18.376 3.20586 18.2154 3.27109 18.0723L4.1705 16.1143C4.05101 15.8824 3.93933 15.6454 3.83749 15.4053C3.71871 15.1116 3.60934 14.814 3.50839 14.5137L1.53866 13.9141C1.41879 13.8777 1.31002 13.8122 1.22226 13.7246L1.14218 13.6299C1.04481 13.4941 0.994151 13.3291 0.999601 13.1621L1.07675 11.0498C1.08222 10.9121 1.1259 10.7782 1.20175 10.6631C1.25874 10.5767 1.33262 10.5026 1.41855 10.4463L1.50839 10.3965L3.57382 9.4043C3.6695 9.05348 3.75306 8.78014 3.82675 8.58106C3.9305 8.31518 4.0461 8.05376 4.17245 7.79785L3.27694 5.90625C3.20906 5.76263 3.18873 5.6004 3.21835 5.44434C3.24057 5.3276 3.2899 5.21813 3.36191 5.125L3.44198 5.03711L4.98593 3.57813C5.09409 3.47611 5.23034 3.40784 5.37655 3.38086C5.52273 3.354 5.67376 3.37002 5.81112 3.42676L7.89901 4.28906C8.12988 4.13515 8.33881 4.01023 8.52792 3.91016C8.75326 3.79034 9.05504 3.66547 9.43417 3.53027L10.1607 1.50488C10.2143 1.35699 10.3122 1.22899 10.441 1.13867C10.57 1.04839 10.7249 0.999723 10.8824 1H13.1851ZM10.8463 4.03613C10.6946 4.45908 10.3613 4.79149 9.93808 4.94238C9.5875 5.06739 9.36381 5.16528 9.23202 5.23535L9.23007 5.23633C9.09075 5.31005 8.9247 5.40801 8.73105 5.53711C8.31531 5.81413 7.78855 5.86633 7.32675 5.67578L5.67343 4.99219L4.86484 5.75586L5.52792 7.15625C5.72387 7.57031 5.71997 8.05117 5.51718 8.46192C5.41394 8.67102 5.31944 8.88459 5.23398 9.10156L5.14218 9.37598C5.10686 9.491 5.06681 9.63118 5.02109 9.79883C4.90655 10.2184 4.6153 10.5675 4.22323 10.7559L2.55917 11.5547L2.51913 12.6436L3.94491 13.0781L4.11386 13.1416C4.49659 13.3106 4.79411 13.6335 4.92929 14.0352C5.01804 14.2992 5.11534 14.5609 5.21933 14.8193L5.35507 15.126C5.40249 15.2271 5.45233 15.3275 5.50351 15.4268C5.71457 15.8364 5.72588 16.3204 5.53378 16.7393L4.85898 18.2061L5.66659 18.9639L7.31894 18.2578L7.47616 18.2012C7.84698 18.0894 8.24932 18.125 8.59726 18.3047C8.78187 18.4001 8.97024 18.4892 9.16073 18.5723C9.28594 18.6231 9.41211 18.6724 9.53866 18.7197L9.92733 18.8594L10.0816 18.9219C10.4317 19.0869 10.7069 19.382 10.8453 19.748L11.5025 21.4883L12.5748 21.4639L13.1187 19.96L13.1832 19.8096C13.3508 19.4678 13.6433 19.2005 14.0035 19.0654L14.8004 18.7666L15.1676 18.6143C15.288 18.5597 15.4071 18.5013 15.524 18.4395L15.692 18.3623C16.0928 18.2097 16.5441 18.236 16.9283 18.4395L18.3238 19.1787L19.3248 18.2842L18.6109 16.7061C18.4355 16.318 18.4336 15.8732 18.6051 15.4834C18.7075 15.2508 18.7973 15.0126 18.8775 14.7715C18.9163 14.6479 18.9608 14.4825 19.0064 14.2637L19.0582 14.0762C19.2064 13.6503 19.5409 13.3098 19.9723 13.1563L21.3873 12.6523L21.4674 11.3877L19.9703 10.7461C19.5971 10.5861 19.3035 10.2817 19.1588 9.90234C19.0283 9.56034 18.9273 9.31663 18.8541 9.15723C18.7854 9.00988 18.689 8.81973 18.5611 8.58496C18.3418 8.18212 18.3187 7.70024 18.4986 7.27832L19.1519 5.74707L18.2867 4.85352L16.9625 5.55567C16.5475 5.77509 16.0531 5.78799 15.6275 5.58984C15.2974 5.43614 15.0582 5.33606 14.8971 5.27832C14.7581 5.22851 14.5701 5.17338 14.3209 5.11133C13.8356 4.99032 13.4418 4.63455 13.2721 4.16406L12.6715 2.5H11.3971L10.8463 4.03613Z",
|
|
2488
2534
|
fill: "currentColor"
|
|
2489
2535
|
}
|
|
2490
2536
|
)
|
|
@@ -2492,9 +2538,9 @@ var Icon_shield = (p) => {
|
|
|
2492
2538
|
}
|
|
2493
2539
|
);
|
|
2494
2540
|
};
|
|
2495
|
-
var
|
|
2541
|
+
var Icon_shield = (p) => {
|
|
2496
2542
|
const { size = 24, ...rest } = p;
|
|
2497
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
2543
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2498
2544
|
"svg",
|
|
2499
2545
|
{
|
|
2500
2546
|
width: size,
|
|
@@ -2503,19 +2549,28 @@ var Icon_sidebar = (p) => {
|
|
|
2503
2549
|
fill: "none",
|
|
2504
2550
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2505
2551
|
...rest,
|
|
2506
|
-
children:
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2552
|
+
children: [
|
|
2553
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2554
|
+
"path",
|
|
2555
|
+
{
|
|
2556
|
+
d: "M16.2549 9.3486C16.5477 9.05582 17.0225 9.05602 17.3154 9.3486C17.6083 9.64149 17.6083 10.1163 17.3154 10.4091L12.0859 15.6386C11.6954 16.0291 11.0624 16.0291 10.6719 15.6386L7.46973 12.4365C7.17728 12.1436 7.17703 11.6687 7.46973 11.3759C7.76264 11.0833 8.23844 11.0831 8.53125 11.3759L11.3789 14.2246L16.2549 9.3486Z",
|
|
2557
|
+
fill: "currentColor"
|
|
2558
|
+
}
|
|
2559
|
+
),
|
|
2560
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2561
|
+
"path",
|
|
2562
|
+
{
|
|
2563
|
+
fillRule: "evenodd",
|
|
2564
|
+
clipRule: "evenodd",
|
|
2565
|
+
d: "M11.501 1.4404C11.8718 1.27889 12.3024 1.30624 12.6533 1.52145L20.1533 6.12204C20.5238 6.34931 20.7499 6.75284 20.75 7.18747V10.5302C20.75 11.8881 20.6005 13.3051 20.0645 14.6425C19.5554 15.9124 18.7155 17.6378 17.4502 19.1894C16.1835 20.7426 14.4592 22.1581 12.1816 22.7275L12 22.7734L11.8184 22.7275C9.54076 22.1581 7.81646 20.7426 6.5498 19.1894C5.2845 17.6378 4.4446 15.9124 3.93555 14.6425C3.39949 13.3051 3.25 11.8881 3.25 10.5302V7.18747C3.25007 6.75284 3.47619 6.34931 3.84668 6.12204L11.3467 1.52145L11.501 1.4404ZM4.75 7.32712V10.5302C4.75 11.7887 4.89082 12.9929 5.32812 14.084C5.80497 15.2735 6.57635 16.8486 7.71191 18.2412C8.80911 19.5866 10.2182 20.7255 12 21.2216C13.7818 20.7255 15.1909 19.5866 16.2881 18.2412C17.4236 16.8486 18.195 15.2735 18.6719 14.084C19.1092 12.9929 19.25 11.7887 19.25 10.5302V7.32712L12 2.87985L4.75 7.32712Z",
|
|
2566
|
+
fill: "currentColor"
|
|
2567
|
+
}
|
|
2568
|
+
)
|
|
2569
|
+
]
|
|
2515
2570
|
}
|
|
2516
2571
|
);
|
|
2517
2572
|
};
|
|
2518
|
-
var
|
|
2573
|
+
var Icon_sidebar = (p) => {
|
|
2519
2574
|
const { size = 24, ...rest } = p;
|
|
2520
2575
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2521
2576
|
"svg",
|
|
@@ -2529,7 +2584,9 @@ var Icon_star = (p) => {
|
|
|
2529
2584
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2530
2585
|
"path",
|
|
2531
2586
|
{
|
|
2532
|
-
|
|
2587
|
+
fillRule: "evenodd",
|
|
2588
|
+
clipRule: "evenodd",
|
|
2589
|
+
d: "M19 3C20.6569 3 22 4.34315 22 6V18L21.9961 18.1543C21.9184 19.6883 20.6883 20.9184 19.1543 20.9961L19 21H5L4.8457 20.9961C3.31166 20.9184 2.08163 19.6883 2.00391 18.1543L2 18V6C2 4.34315 3.34315 3 5 3H19ZM5 4.5C4.17157 4.5 3.5 5.17157 3.5 6V18C3.5 18.8284 4.17157 19.5 5 19.5H8V4.5H5ZM9.5 19.5H19C19.8284 19.5 20.5 18.8284 20.5 18V6C20.5 5.17157 19.8284 4.5 19 4.5H9.5V19.5Z",
|
|
2533
2590
|
fill: "currentColor"
|
|
2534
2591
|
}
|
|
2535
2592
|
)
|
|
@@ -2598,6 +2655,52 @@ var Icon_synchronize = (p) => {
|
|
|
2598
2655
|
}
|
|
2599
2656
|
);
|
|
2600
2657
|
};
|
|
2658
|
+
var Icon_thumbsDown = (p) => {
|
|
2659
|
+
const { size = 24, ...rest } = p;
|
|
2660
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2661
|
+
"svg",
|
|
2662
|
+
{
|
|
2663
|
+
width: size,
|
|
2664
|
+
height: size,
|
|
2665
|
+
viewBox: "0 0 24 24",
|
|
2666
|
+
fill: "none",
|
|
2667
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2668
|
+
...rest,
|
|
2669
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2670
|
+
"path",
|
|
2671
|
+
{
|
|
2672
|
+
fillRule: "evenodd",
|
|
2673
|
+
clipRule: "evenodd",
|
|
2674
|
+
d: "M13.5 21.25C14.7426 21.25 15.75 20.2426 15.75 19V15.5C15.75 15.3619 15.8619 15.25 16 15.25H18.8936C20.7018 15.25 22.0178 13.5347 21.5498 11.7881L20.1484 6.55762C19.5504 4.3259 17.4329 2.84845 15.1318 3.05664L8.05371 3.69727C7.76261 3.13498 7.17686 2.75 6.5 2.75H4.5C3.25736 2.75 2.25 3.75736 2.25 5V13C2.25 14.2426 3.25736 15.25 4.5 15.25H8.25V15.1689C8.57271 15.4885 8.90914 15.8467 9.23438 16.2344C10.0174 17.1678 10.7037 18.2229 11.0371 19.2568C11.3509 20.2303 12.2316 21.25 13.5 21.25ZM13.5 19.75C13.1116 19.75 12.6594 19.4004 12.4648 18.7969C12.0481 17.5041 11.2278 16.2778 10.3828 15.2705C9.6516 14.3988 8.87296 13.658 8.25 13.1416V5.18555L15.2676 4.55078C16.8419 4.40844 18.2901 5.41938 18.6992 6.94629L20.1006 12.1768C20.3132 12.9706 19.7154 13.75 18.8936 13.75H16C15.0335 13.75 14.25 14.5335 14.25 15.5V19C14.25 19.4142 13.9142 19.75 13.5 19.75Z",
|
|
2675
|
+
fill: "currentColor"
|
|
2676
|
+
}
|
|
2677
|
+
)
|
|
2678
|
+
}
|
|
2679
|
+
);
|
|
2680
|
+
};
|
|
2681
|
+
var Icon_thumbsUp = (p) => {
|
|
2682
|
+
const { size = 24, ...rest } = p;
|
|
2683
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2684
|
+
"svg",
|
|
2685
|
+
{
|
|
2686
|
+
width: size,
|
|
2687
|
+
height: size,
|
|
2688
|
+
viewBox: "0 0 24 24",
|
|
2689
|
+
fill: "none",
|
|
2690
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2691
|
+
...rest,
|
|
2692
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2693
|
+
"path",
|
|
2694
|
+
{
|
|
2695
|
+
fillRule: "evenodd",
|
|
2696
|
+
clipRule: "evenodd",
|
|
2697
|
+
d: "M13.5 2.75C14.7426 2.75 15.75 3.75736 15.75 5V8.5C15.75 8.63807 15.8619 8.75 16 8.75H18.8936C20.7018 8.75 22.0178 10.4653 21.5498 12.2119L20.1484 17.4424C19.5504 19.6741 17.4329 21.1516 15.1318 20.9434L8.05371 20.3027C7.76261 20.865 7.17686 21.25 6.5 21.25H4.5C3.25736 21.25 2.25 20.2426 2.25 19V11C2.25 9.75736 3.25736 8.75 4.5 8.75H8.25V8.83105C8.57271 8.51149 8.90914 8.15334 9.23438 7.76562C10.0174 6.83217 10.7037 5.77712 11.0371 4.74316C11.3509 3.76975 12.2316 2.75 13.5 2.75ZM13.5 4.25C13.1116 4.25 12.6594 4.59961 12.4648 5.20312C12.0481 6.49588 11.2278 7.72217 10.3828 8.72949C9.6516 9.60115 8.87296 10.342 8.25 10.8584V18.8145L15.2676 19.4492C16.8419 19.5916 18.2901 18.5806 18.6992 17.0537L20.1006 11.8232C20.3132 11.0294 19.7154 10.25 18.8936 10.25H16C15.0335 10.25 14.25 9.4665 14.25 8.5V5C14.25 4.58579 13.9142 4.25 13.5 4.25Z",
|
|
2698
|
+
fill: "currentColor"
|
|
2699
|
+
}
|
|
2700
|
+
)
|
|
2701
|
+
}
|
|
2702
|
+
);
|
|
2703
|
+
};
|
|
2601
2704
|
var Icon_updown = (p) => {
|
|
2602
2705
|
const { size = 24, ...rest } = p;
|
|
2603
2706
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2649,6 +2752,50 @@ var Icon_user = (p) => {
|
|
|
2649
2752
|
}
|
|
2650
2753
|
);
|
|
2651
2754
|
};
|
|
2755
|
+
var Icon_users = (p) => {
|
|
2756
|
+
const { size = 24, ...rest } = p;
|
|
2757
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2758
|
+
"svg",
|
|
2759
|
+
{
|
|
2760
|
+
width: size,
|
|
2761
|
+
height: size,
|
|
2762
|
+
viewBox: "0 0 24 24",
|
|
2763
|
+
fill: "none",
|
|
2764
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2765
|
+
...rest,
|
|
2766
|
+
children: [
|
|
2767
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2768
|
+
"path",
|
|
2769
|
+
{
|
|
2770
|
+
d: "M11.4062 13.5C14.5 13.5 17 16 17 19.0938C17 19.5938 16.5625 20 16.0625 20H3.90625C3.40625 20 3 19.5938 3 19.0938C3 16 5.46875 13.5 8.5625 13.5H11.4062Z",
|
|
2771
|
+
fill: "currentColor"
|
|
2772
|
+
}
|
|
2773
|
+
),
|
|
2774
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2775
|
+
"path",
|
|
2776
|
+
{
|
|
2777
|
+
d: "M15.4189 13.5C18.8153 13.5001 21.5 16.4402 21.5 20H20.5C20.5 16.9999 18.3097 14.6219 15.626 14.5049C15.1851 14.0929 14.6769 13.7528 14.1201 13.5H15.4189Z",
|
|
2778
|
+
fill: "currentColor"
|
|
2779
|
+
}
|
|
2780
|
+
),
|
|
2781
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2782
|
+
"path",
|
|
2783
|
+
{
|
|
2784
|
+
d: "M10 4C12.1875 4 14 5.8125 14 8C14 10.2188 12.1875 12 10 12C7.78125 12 6 10.2188 6 8C6 5.8125 7.78125 4 10 4Z",
|
|
2785
|
+
fill: "currentColor"
|
|
2786
|
+
}
|
|
2787
|
+
),
|
|
2788
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2789
|
+
"path",
|
|
2790
|
+
{
|
|
2791
|
+
d: "M14 4C16.1902 4 18 5.8098 18 8C18 10.2201 16.1877 12 14 12V11C15.6405 11 17 9.66273 17 8C17 6.36208 15.6379 5 14 5V4Z",
|
|
2792
|
+
fill: "currentColor"
|
|
2793
|
+
}
|
|
2794
|
+
)
|
|
2795
|
+
]
|
|
2796
|
+
}
|
|
2797
|
+
);
|
|
2798
|
+
};
|
|
2652
2799
|
var Icon_visibilityOff = (p) => {
|
|
2653
2800
|
const { size = 24, ...rest } = p;
|
|
2654
2801
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2868,6 +3015,7 @@ var ICONS = {
|
|
|
2868
3015
|
arrowLeft: Icon_arrowLeft,
|
|
2869
3016
|
arrowRight: Icon_arrowRight,
|
|
2870
3017
|
arrowUp: Icon_arrowUp,
|
|
3018
|
+
asterisk: Icon_asterisk,
|
|
2871
3019
|
attachFile: Icon_attachFile,
|
|
2872
3020
|
barcode: Icon_barcode,
|
|
2873
3021
|
bell: Icon_bell,
|
|
@@ -2910,10 +3058,10 @@ var ICONS = {
|
|
|
2910
3058
|
helpFill: Icon_helpFill,
|
|
2911
3059
|
helpOutline: Icon_helpOutline,
|
|
2912
3060
|
history: Icon_history,
|
|
2913
|
-
|
|
2914
|
-
imageOutline: Icon_imageOutline,
|
|
3061
|
+
image: Icon_image,
|
|
2915
3062
|
inline: Icon_inline,
|
|
2916
3063
|
launcher: Icon_launcher,
|
|
3064
|
+
leftRight: Icon_leftRight,
|
|
2917
3065
|
line: Icon_line,
|
|
2918
3066
|
location: Icon_location,
|
|
2919
3067
|
logout: Icon_logout,
|
|
@@ -2934,14 +3082,18 @@ var ICONS = {
|
|
|
2934
3082
|
row: Icon_row,
|
|
2935
3083
|
save: Icon_save,
|
|
2936
3084
|
search: Icon_search,
|
|
3085
|
+
send: Icon_send,
|
|
2937
3086
|
setting: Icon_setting,
|
|
3087
|
+
settingOutline: Icon_settingOutline,
|
|
2938
3088
|
shield: Icon_shield,
|
|
2939
3089
|
sidebar: Icon_sidebar,
|
|
2940
|
-
star: Icon_star,
|
|
2941
3090
|
store: Icon_store,
|
|
2942
3091
|
synchronize: Icon_synchronize,
|
|
3092
|
+
thumbsDown: Icon_thumbsDown,
|
|
3093
|
+
thumbsUp: Icon_thumbsUp,
|
|
2943
3094
|
updown: Icon_updown,
|
|
2944
3095
|
user: Icon_user,
|
|
3096
|
+
users: Icon_users,
|
|
2945
3097
|
visibilityOff: Icon_visibilityOff,
|
|
2946
3098
|
visibilityOn: Icon_visibilityOn,
|
|
2947
3099
|
warehouseFill: Icon_warehouseFill,
|
|
@@ -3039,6 +3191,7 @@ var SDraggableItemView = /* @__PURE__ */ react.forwardRef(
|
|
|
3039
3191
|
bordered,
|
|
3040
3192
|
selected,
|
|
3041
3193
|
dense,
|
|
3194
|
+
size,
|
|
3042
3195
|
dragging,
|
|
3043
3196
|
disabled,
|
|
3044
3197
|
hovered,
|
|
@@ -3052,6 +3205,8 @@ var SDraggableItemView = /* @__PURE__ */ react.forwardRef(
|
|
|
3052
3205
|
const supportingTextNode = renderSlot(supportingText, renderState);
|
|
3053
3206
|
const hasSupportingText = supportingTextNode != null && supportingTextNode !== "";
|
|
3054
3207
|
const trailingNode = renderSlot(trailing, renderState);
|
|
3208
|
+
const titleTypo = size === "sm" ? selected ? "typo-item-sm-selected" : "typo-item-sm-default" : selected ? "typo-item-md-selected" : "typo-item-md-default";
|
|
3209
|
+
const paddingYClass = dense ? size === "sm" ? "py-(--cmp-listDraggableItem-paddingY-sm-dense)" : "py-(--cmp-listDraggableItem-paddingY-md-dense)" : size === "sm" ? "py-(--cmp-listDraggableItem-paddingY-sm-normal)" : "py-(--cmp-listDraggableItem-paddingY-md-normal)";
|
|
3055
3210
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3056
3211
|
"div",
|
|
3057
3212
|
{
|
|
@@ -3059,10 +3214,12 @@ var SDraggableItemView = /* @__PURE__ */ react.forwardRef(
|
|
|
3059
3214
|
"aria-disabled": disabled || void 0,
|
|
3060
3215
|
"data-dragging": dragging || void 0,
|
|
3061
3216
|
className: cn(
|
|
3062
|
-
"relative flex w-full items-center gap-(--cmp-listDraggableItem-gap) overflow-hidden px-(--cmp-listDraggableItem-paddingX)
|
|
3063
|
-
|
|
3217
|
+
"relative flex w-full items-center gap-(--cmp-listDraggableItem-gap) overflow-hidden px-(--cmp-listDraggableItem-paddingX)",
|
|
3218
|
+
titleTypo,
|
|
3219
|
+
disabled ? "bg-(--cmp-listDraggableItem-bg-default) text-(--sys-color-disabled-text)" : selected ? "bg-(--cmp-listDraggableItem-bg-selected) text-(--cmp-listDraggableItem-text-selected)" : "bg-(--cmp-listDraggableItem-bg-default) text-(--cmp-listDraggableItem-text-default)",
|
|
3064
3220
|
!disabled && !selected && !dragging && "hover:bg-(--cmp-listDraggableItem-bg-hover)",
|
|
3065
|
-
hasSupportingText && supportingTextPosition === "bottom" ? dense ? "min-h-[52px]
|
|
3221
|
+
hasSupportingText && supportingTextPosition === "bottom" ? dense ? "min-h-[52px]" : "min-h-[60px]" : dense ? "h-[32px]" : "h-[40px]",
|
|
3222
|
+
paddingYClass,
|
|
3066
3223
|
bordered ? cn(
|
|
3067
3224
|
"rounded-(--cmp-listDraggableItem-radius-bordered) border border-(--cmp-listDraggableItem-border-default)",
|
|
3068
3225
|
!disabled && !selected && !dragging && "hover:border-(--cmp-listDraggableItem-bordered-border-hover)",
|
|
@@ -3120,7 +3277,7 @@ var SDraggableItemView = /* @__PURE__ */ react.forwardRef(
|
|
|
3120
3277
|
"span",
|
|
3121
3278
|
{
|
|
3122
3279
|
className: cn(
|
|
3123
|
-
"min-w-0 truncate text-
|
|
3280
|
+
"typo-body-sm-default min-w-0 truncate text-(--sys-color-fg-secondary)",
|
|
3124
3281
|
supportingTextPosition === "right" && "flex-1"
|
|
3125
3282
|
),
|
|
3126
3283
|
children: supportingTextNode
|
|
@@ -3148,6 +3305,7 @@ var SDraggableItemImpl = /* @__PURE__ */ react.forwardRef(function SDraggableIte
|
|
|
3148
3305
|
selected = false,
|
|
3149
3306
|
dragging = false,
|
|
3150
3307
|
dense = false,
|
|
3308
|
+
size = "sm",
|
|
3151
3309
|
disabled = false,
|
|
3152
3310
|
dragOverlay = true,
|
|
3153
3311
|
dragOverlayOpacity = 0.75,
|
|
@@ -3219,6 +3377,7 @@ var SDraggableItemImpl = /* @__PURE__ */ react.forwardRef(function SDraggableIte
|
|
|
3219
3377
|
bordered,
|
|
3220
3378
|
selected,
|
|
3221
3379
|
dense,
|
|
3380
|
+
size,
|
|
3222
3381
|
dragging: dragging || overlayVisible,
|
|
3223
3382
|
disabled,
|
|
3224
3383
|
hovered,
|
|
@@ -3253,6 +3412,7 @@ var SDraggableItemImpl = /* @__PURE__ */ react.forwardRef(function SDraggableIte
|
|
|
3253
3412
|
bordered,
|
|
3254
3413
|
selected,
|
|
3255
3414
|
dense,
|
|
3415
|
+
size,
|
|
3256
3416
|
dragging: true,
|
|
3257
3417
|
disabled,
|
|
3258
3418
|
hovered: true,
|
|
@@ -3604,6 +3764,7 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
3604
3764
|
interaction,
|
|
3605
3765
|
accentStripe = false,
|
|
3606
3766
|
dense = false,
|
|
3767
|
+
size = "sm",
|
|
3607
3768
|
disabled = false,
|
|
3608
3769
|
onToggle,
|
|
3609
3770
|
className,
|
|
@@ -3619,6 +3780,7 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
3619
3780
|
const hasChevronInteraction = interaction === "chevron";
|
|
3620
3781
|
const showInteractionChevron = hasChevronInteraction && !disabled && (isSelected || hovered);
|
|
3621
3782
|
const interactionChevronColor = isSelected ? "var(--sys-color-fg-brand)" : "var(--sys-color-fg-quaternary)";
|
|
3783
|
+
const titleTypo = size === "sm" ? isExpanded ? "typo-item-sm-selected" : "typo-item-sm-default" : isExpanded ? "typo-item-md-selected" : "typo-item-md-default";
|
|
3622
3784
|
const reportExpandedDescendant = react.useCallback(
|
|
3623
3785
|
(delta) => {
|
|
3624
3786
|
setExpandedDescendantCount((current) => Math.max(0, current + delta));
|
|
@@ -3676,7 +3838,8 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
3676
3838
|
onToggle?.(next, event);
|
|
3677
3839
|
},
|
|
3678
3840
|
className: cn(
|
|
3679
|
-
"group/expansion-item-button flex w-full cursor-pointer items-center justify-between border-0 text-left text-
|
|
3841
|
+
"group/expansion-item-button flex w-full cursor-pointer items-center justify-between border-0 text-left text-(--cmp-listExpansionItem-title-text-default) focus-visible:outline focus-visible:outline-2 focus-visible:outline-(--sys-color-border-accent) disabled:cursor-not-allowed disabled:text-(--sys-color-disabled-text)",
|
|
3842
|
+
titleTypo,
|
|
3680
3843
|
isExpanded && "border-b border-(--cmp-listExpansionItem-title-border)",
|
|
3681
3844
|
hasChevronInteraction ? "hover:bg-(--sys-color-bg-neutralBright)" : !isExpanded && "hover:bg-(--cmp-listExpansionItem-title-bg-hover)",
|
|
3682
3845
|
hasSupportingText && supportingTextPosition === "bottom" ? dense ? "min-h-[52px] py-(--cmp-listExpansionItem-title-paddingY-dense)" : "min-h-[60px] py-(--cmp-listExpansionItem-title-paddingY-normal)" : dense ? "h-[32px] py-(--cmp-listExpansionItem-title-paddingY-dense)" : "h-[40px] py-(--cmp-listExpansionItem-title-paddingY-normal)",
|
|
@@ -3713,7 +3876,7 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
3713
3876
|
"span",
|
|
3714
3877
|
{
|
|
3715
3878
|
className: cn(
|
|
3716
|
-
"min-w-0 truncate text-
|
|
3879
|
+
"typo-body-sm-default min-w-0 truncate text-(--sys-color-fg-secondary)",
|
|
3717
3880
|
supportingTextPosition === "right" && "flex-1"
|
|
3718
3881
|
),
|
|
3719
3882
|
children: supportingText
|
|
@@ -3757,6 +3920,7 @@ var SListItemImpl = /* @__PURE__ */ react.forwardRef(function SListItem({
|
|
|
3757
3920
|
interaction,
|
|
3758
3921
|
accentStripe = false,
|
|
3759
3922
|
dense = false,
|
|
3923
|
+
size = "sm",
|
|
3760
3924
|
disabled = false,
|
|
3761
3925
|
className,
|
|
3762
3926
|
onMouseEnter,
|
|
@@ -3775,6 +3939,7 @@ var SListItemImpl = /* @__PURE__ */ react.forwardRef(function SListItem({
|
|
|
3775
3939
|
const hasChevronInteraction = interaction === "chevron";
|
|
3776
3940
|
const showInteractionChevron = hasChevronInteraction && isInteractive && (isSelected || hovered);
|
|
3777
3941
|
const interactionChevronColor = isSelected ? "var(--sys-color-fg-brand)" : "var(--sys-color-fg-quaternary)";
|
|
3942
|
+
const titleTypo = size === "sm" ? isSelected ? "typo-item-sm-selected" : "typo-item-sm-default" : isSelected ? "typo-item-md-selected" : "typo-item-md-default";
|
|
3778
3943
|
const handleMouseEnter = (event) => {
|
|
3779
3944
|
if (isInteractive) setHovered(true);
|
|
3780
3945
|
onMouseEnter?.(event);
|
|
@@ -3791,7 +3956,8 @@ var SListItemImpl = /* @__PURE__ */ react.forwardRef(function SListItem({
|
|
|
3791
3956
|
onMouseEnter: handleMouseEnter,
|
|
3792
3957
|
onMouseLeave: handleMouseLeave,
|
|
3793
3958
|
className: cn(
|
|
3794
|
-
"group/list-item relative flex w-full items-center justify-between bg-(--cmp-listItem-bg-default) text-left text-
|
|
3959
|
+
"group/list-item relative flex w-full items-center justify-between bg-(--cmp-listItem-bg-default) text-left text-(--cmp-listItem-text-default)",
|
|
3960
|
+
titleTypo,
|
|
3795
3961
|
disabled ? "pointer-events-none cursor-not-allowed text-(--sys-color-disabled-text)" : isSelected ? cn(
|
|
3796
3962
|
"cursor-pointer text-(--cmp-listItem-text-selected)",
|
|
3797
3963
|
"bg-(--cmp-listItem-bg-selected)"
|
|
@@ -3832,7 +3998,7 @@ var SListItemImpl = /* @__PURE__ */ react.forwardRef(function SListItem({
|
|
|
3832
3998
|
"span",
|
|
3833
3999
|
{
|
|
3834
4000
|
className: cn(
|
|
3835
|
-
"min-w-0 truncate text-
|
|
4001
|
+
"typo-body-sm-default min-w-0 truncate text-(--sys-color-fg-secondary)",
|
|
3836
4002
|
supportingTextPosition === "right" && "flex-1"
|
|
3837
4003
|
),
|
|
3838
4004
|
children: supportingTextNode
|
|
@@ -4815,7 +4981,7 @@ var SSectionHeaderCardHeaderImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
4815
4981
|
required && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4816
4982
|
SIcon,
|
|
4817
4983
|
{
|
|
4818
|
-
name: "
|
|
4984
|
+
name: "asterisk",
|
|
4819
4985
|
size: 16,
|
|
4820
4986
|
color: "var(--sys-color-fg-accent)",
|
|
4821
4987
|
className: "shrink-0"
|
|
@@ -4934,6 +5100,225 @@ var SScrollArea = /* @__PURE__ */ react.forwardRef(function SScrollArea2({
|
|
|
4934
5100
|
// src/components/SScrollArea/scrollArea.config.ts
|
|
4935
5101
|
var SCROLL_AREA_AXES = ["vertical", "horizontal", "both"];
|
|
4936
5102
|
|
|
5103
|
+
// src/components/SSplitter/splitter.config.ts
|
|
5104
|
+
var SSPLITTER_UNITS = ["%", "px"];
|
|
5105
|
+
var SSPLITTER_DEFAULT_LIMITS = {
|
|
5106
|
+
"%": [10, 90],
|
|
5107
|
+
"px": [50, Infinity]
|
|
5108
|
+
};
|
|
5109
|
+
var SSPLITTER_DEFAULT_VALUE = {
|
|
5110
|
+
"%": 50,
|
|
5111
|
+
"px": 240
|
|
5112
|
+
};
|
|
5113
|
+
var SSPLITTER_KEY_STEP = {
|
|
5114
|
+
"%": { normal: 1, large: 10 },
|
|
5115
|
+
"px": { normal: 10, large: 50 }
|
|
5116
|
+
};
|
|
5117
|
+
var LINE = "var(--cmp-splitter-border-width)";
|
|
5118
|
+
var PAD = "var(--cmp-splitter-border-padding)";
|
|
5119
|
+
var HIT = `calc(${LINE} + ${PAD} * 2)`;
|
|
5120
|
+
var HIT_END = `calc(0px - ${PAD})`;
|
|
5121
|
+
var SSplitterContext = /* @__PURE__ */ react.createContext(null);
|
|
5122
|
+
function useSSplitterContext(who) {
|
|
5123
|
+
const ctx = react.useContext(SSplitterContext);
|
|
5124
|
+
if (!ctx) throw new Error(`${who} \uC740 <SSplitter> \uC548\uC5D0\uC11C\uB9CC \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`);
|
|
5125
|
+
return ctx;
|
|
5126
|
+
}
|
|
5127
|
+
var SSplitterRoot = /* @__PURE__ */ react.forwardRef(function SSplitter({
|
|
5128
|
+
value,
|
|
5129
|
+
defaultValue,
|
|
5130
|
+
onValueChange,
|
|
5131
|
+
unit = "%",
|
|
5132
|
+
limits,
|
|
5133
|
+
emitImmediately = false,
|
|
5134
|
+
vertical = false,
|
|
5135
|
+
disabled = false,
|
|
5136
|
+
dividerClassName,
|
|
5137
|
+
dividerStyle,
|
|
5138
|
+
className,
|
|
5139
|
+
style,
|
|
5140
|
+
children,
|
|
5141
|
+
...rest
|
|
5142
|
+
}, ref) {
|
|
5143
|
+
const rootRef = react.useRef(null);
|
|
5144
|
+
const setRootRef = react.useCallback(
|
|
5145
|
+
(node) => {
|
|
5146
|
+
rootRef.current = node;
|
|
5147
|
+
if (typeof ref === "function") ref(node);
|
|
5148
|
+
else if (ref) ref.current = node;
|
|
5149
|
+
},
|
|
5150
|
+
[ref]
|
|
5151
|
+
);
|
|
5152
|
+
const [uncontrolledValue, setUncontrolledValue] = react.useState(
|
|
5153
|
+
() => defaultValue ?? SSPLITTER_DEFAULT_VALUE[unit]
|
|
5154
|
+
);
|
|
5155
|
+
const isControlled = value !== void 0;
|
|
5156
|
+
const committedValue = isControlled ? value : uncontrolledValue;
|
|
5157
|
+
const [dragValue, setDragValue] = react.useState(null);
|
|
5158
|
+
const currentValue = dragValue ?? committedValue;
|
|
5159
|
+
const [dragging, setDragging] = react.useState(false);
|
|
5160
|
+
const [minLimit, maxLimit] = limits ?? SSPLITTER_DEFAULT_LIMITS[unit];
|
|
5161
|
+
const stateRef = react.useRef({ committedValue, unit, vertical, minLimit, maxLimit });
|
|
5162
|
+
stateRef.current = { committedValue, unit, vertical, minLimit, maxLimit };
|
|
5163
|
+
const emitRef = react.useRef({ onValueChange, emitImmediately, isControlled });
|
|
5164
|
+
emitRef.current = { onValueChange, emitImmediately, isControlled };
|
|
5165
|
+
const measure = react.useCallback(() => {
|
|
5166
|
+
const el = rootRef.current;
|
|
5167
|
+
if (!el) return 0;
|
|
5168
|
+
return stateRef.current.vertical ? el.clientHeight : el.clientWidth;
|
|
5169
|
+
}, []);
|
|
5170
|
+
const clamp4 = react.useCallback((next, containerSize) => {
|
|
5171
|
+
const { unit: u, minLimit: lo, maxLimit: hi } = stateRef.current;
|
|
5172
|
+
const unitMax = u === "%" ? 100 : containerSize;
|
|
5173
|
+
return Math.min(unitMax, hi, Math.max(lo, next));
|
|
5174
|
+
}, []);
|
|
5175
|
+
const commit = react.useCallback((next) => {
|
|
5176
|
+
if (next === stateRef.current.committedValue) return;
|
|
5177
|
+
stateRef.current.committedValue = next;
|
|
5178
|
+
if (!emitRef.current.isControlled) setUncontrolledValue(next);
|
|
5179
|
+
emitRef.current.onValueChange?.(next);
|
|
5180
|
+
}, []);
|
|
5181
|
+
const endDragRef = react.useRef(null);
|
|
5182
|
+
react.useEffect(() => () => endDragRef.current?.(), []);
|
|
5183
|
+
const startResize = react.useCallback(
|
|
5184
|
+
(event) => {
|
|
5185
|
+
if (disabled || typeof document === "undefined") return;
|
|
5186
|
+
event.preventDefault();
|
|
5187
|
+
event.currentTarget.focus();
|
|
5188
|
+
const isVertical = stateRef.current.vertical;
|
|
5189
|
+
const containerSize = measure();
|
|
5190
|
+
const startPos = isVertical ? event.clientY : event.clientX;
|
|
5191
|
+
const startValue = clamp4(stateRef.current.committedValue, containerSize);
|
|
5192
|
+
const multiplier = stateRef.current.unit === "%" ? containerSize === 0 ? 0 : 100 / containerSize : 1;
|
|
5193
|
+
let latest = startValue;
|
|
5194
|
+
const { body } = document;
|
|
5195
|
+
const prevUserSelect = body.style.userSelect;
|
|
5196
|
+
const prevCursor = body.style.cursor;
|
|
5197
|
+
body.style.userSelect = "none";
|
|
5198
|
+
body.style.cursor = isVertical ? "row-resize" : "col-resize";
|
|
5199
|
+
const onMove = (moveEvent) => {
|
|
5200
|
+
const delta = (isVertical ? moveEvent.clientY : moveEvent.clientX) - startPos;
|
|
5201
|
+
latest = clamp4(startValue + multiplier * delta, containerSize);
|
|
5202
|
+
setDragValue(latest);
|
|
5203
|
+
if (emitRef.current.emitImmediately) commit(latest);
|
|
5204
|
+
};
|
|
5205
|
+
const endDrag = () => {
|
|
5206
|
+
document.removeEventListener("mousemove", onMove);
|
|
5207
|
+
document.removeEventListener("mouseup", endDrag);
|
|
5208
|
+
body.style.userSelect = prevUserSelect;
|
|
5209
|
+
body.style.cursor = prevCursor;
|
|
5210
|
+
endDragRef.current = null;
|
|
5211
|
+
setDragging(false);
|
|
5212
|
+
setDragValue(null);
|
|
5213
|
+
commit(latest);
|
|
5214
|
+
};
|
|
5215
|
+
document.addEventListener("mousemove", onMove);
|
|
5216
|
+
document.addEventListener("mouseup", endDrag);
|
|
5217
|
+
endDragRef.current = endDrag;
|
|
5218
|
+
setDragging(true);
|
|
5219
|
+
},
|
|
5220
|
+
[disabled, measure, clamp4, commit]
|
|
5221
|
+
);
|
|
5222
|
+
const handleKeyDown = react.useCallback(
|
|
5223
|
+
(event) => {
|
|
5224
|
+
if (disabled) return;
|
|
5225
|
+
const { unit: u, vertical: isVertical, minLimit: lo } = stateRef.current;
|
|
5226
|
+
const step = SSPLITTER_KEY_STEP[u][event.shiftKey ? "large" : "normal"];
|
|
5227
|
+
const decrease = isVertical ? "ArrowUp" : "ArrowLeft";
|
|
5228
|
+
const increase = isVertical ? "ArrowDown" : "ArrowRight";
|
|
5229
|
+
let next = null;
|
|
5230
|
+
if (event.key === decrease) next = stateRef.current.committedValue - step;
|
|
5231
|
+
else if (event.key === increase) next = stateRef.current.committedValue + step;
|
|
5232
|
+
else if (event.key === "Home") next = lo;
|
|
5233
|
+
else if (event.key === "End") next = Number.MAX_SAFE_INTEGER;
|
|
5234
|
+
if (next === null) return;
|
|
5235
|
+
event.preventDefault();
|
|
5236
|
+
commit(clamp4(next, measure()));
|
|
5237
|
+
},
|
|
5238
|
+
[disabled, measure, clamp4, commit]
|
|
5239
|
+
);
|
|
5240
|
+
const sizeCss = unit === "%" ? `${currentValue}%` : `${Math.round(currentValue)}px`;
|
|
5241
|
+
const divider = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-[1] shrink-0", style: { flexBasis: LINE }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5242
|
+
"div",
|
|
5243
|
+
{
|
|
5244
|
+
role: "separator",
|
|
5245
|
+
"aria-orientation": vertical ? "horizontal" : "vertical",
|
|
5246
|
+
"aria-valuenow": Math.round(currentValue),
|
|
5247
|
+
"aria-valuemin": Math.round(minLimit),
|
|
5248
|
+
"aria-valuemax": Number.isFinite(maxLimit) ? Math.round(maxLimit) : void 0,
|
|
5249
|
+
"aria-valuetext": sizeCss,
|
|
5250
|
+
"aria-disabled": disabled || void 0,
|
|
5251
|
+
tabIndex: disabled ? -1 : 0,
|
|
5252
|
+
onMouseDown: startResize,
|
|
5253
|
+
onKeyDown: handleKeyDown,
|
|
5254
|
+
className: cn(
|
|
5255
|
+
"group absolute flex outline-none",
|
|
5256
|
+
vertical ? "inset-x-0 flex-col justify-center" : "inset-y-0 justify-center",
|
|
5257
|
+
disabled ? "cursor-default" : vertical ? "cursor-row-resize" : "cursor-col-resize",
|
|
5258
|
+
dividerClassName
|
|
5259
|
+
),
|
|
5260
|
+
style: {
|
|
5261
|
+
...vertical ? { bottom: HIT_END, height: HIT } : { right: HIT_END, width: HIT },
|
|
5262
|
+
...dividerStyle
|
|
5263
|
+
},
|
|
5264
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5265
|
+
"span",
|
|
5266
|
+
{
|
|
5267
|
+
"aria-hidden": true,
|
|
5268
|
+
className: cn(
|
|
5269
|
+
// 평상시엔 자리만 잡고 칠하지 않는다 — 색이 붙는 것 자체가 조절 가능하다는 신호다.
|
|
5270
|
+
"transition-colors",
|
|
5271
|
+
vertical ? "h-(--cmp-splitter-border-width)" : "w-(--cmp-splitter-border-width)",
|
|
5272
|
+
!disabled && "group-hover:bg-(--cmp-splitter-border-color) group-focus-visible:bg-(--cmp-splitter-border-color)",
|
|
5273
|
+
!disabled && dragging && "bg-(--cmp-splitter-border-color)"
|
|
5274
|
+
)
|
|
5275
|
+
}
|
|
5276
|
+
)
|
|
5277
|
+
}
|
|
5278
|
+
) });
|
|
5279
|
+
const ctx = { vertical, sizeCss, divider };
|
|
5280
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SSplitterContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5281
|
+
"div",
|
|
5282
|
+
{
|
|
5283
|
+
ref: setRootRef,
|
|
5284
|
+
className: cn("flex size-full", vertical ? "flex-col" : "flex-row", className),
|
|
5285
|
+
style,
|
|
5286
|
+
...rest,
|
|
5287
|
+
children
|
|
5288
|
+
}
|
|
5289
|
+
) });
|
|
5290
|
+
});
|
|
5291
|
+
function usePane(pane, className, style) {
|
|
5292
|
+
const ctx = useSSplitterContext(`SSplitter.${pane === "before" ? "Before" : "After"}`);
|
|
5293
|
+
const isSized = pane === "before";
|
|
5294
|
+
return {
|
|
5295
|
+
divider: ctx.divider,
|
|
5296
|
+
className: cn(
|
|
5297
|
+
"min-h-0 min-w-0 overflow-auto",
|
|
5298
|
+
isSized ? "shrink-0" : "flex-1 basis-0",
|
|
5299
|
+
className
|
|
5300
|
+
),
|
|
5301
|
+
style: isSized ? { [ctx.vertical ? "height" : "width"]: ctx.sizeCss, ...style } : style
|
|
5302
|
+
};
|
|
5303
|
+
}
|
|
5304
|
+
var SSplitterBeforeImpl = /* @__PURE__ */ react.forwardRef(function SSplitterBefore({ className, style, children, ...rest }, ref) {
|
|
5305
|
+
const pane = usePane("before", className, style);
|
|
5306
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5307
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: pane.className, style: pane.style, ...rest, children }),
|
|
5308
|
+
pane.divider
|
|
5309
|
+
] });
|
|
5310
|
+
});
|
|
5311
|
+
var SSplitterAfterImpl = /* @__PURE__ */ react.forwardRef(function SSplitterAfter({ className, style, children, ...rest }, ref) {
|
|
5312
|
+
const pane = usePane("after", className, style);
|
|
5313
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: pane.className, style: pane.style, ...rest, children });
|
|
5314
|
+
});
|
|
5315
|
+
var SSplitterBefore2 = /* @__PURE__ */ withDisplayName(SSplitterBeforeImpl, "SSplitter.Before");
|
|
5316
|
+
var SSplitterAfter2 = /* @__PURE__ */ withDisplayName(SSplitterAfterImpl, "SSplitter.After");
|
|
5317
|
+
var SSplitter2 = /* @__PURE__ */ Object.assign(SSplitterRoot, {
|
|
5318
|
+
Before: SSplitterBefore2,
|
|
5319
|
+
After: SSplitterAfter2
|
|
5320
|
+
});
|
|
5321
|
+
|
|
4937
5322
|
// src/components/SButton/button.config.ts
|
|
4938
5323
|
var BUTTON_COLORS = ["primary", "secondary", "neutral", "danger"];
|
|
4939
5324
|
var BUTTON_SIZES = ["xs", "sm", "md", "lg"];
|
|
@@ -6036,8 +6421,8 @@ function SFooter({
|
|
|
6036
6421
|
"footer",
|
|
6037
6422
|
{
|
|
6038
6423
|
className: cn(
|
|
6039
|
-
"relative flex w-full flex-shrink-0 items-center justify-end gap-[var(--cmp-overlay-footer-gap)] overflow-hidden px-[var(--cmp-overlay-footer-paddingX)] py-[var(--cmp-overlay-footer-paddingY)]
|
|
6040
|
-
isGrey ? "bg-[var(--cmp-overlay-footer-bg-neutral)]" : "bg-[var(--cmp-overlay-footer-bg-default)]",
|
|
6424
|
+
"relative flex w-full flex-shrink-0 items-center justify-end gap-[var(--cmp-overlay-footer-gap)] overflow-hidden px-[var(--cmp-overlay-footer-paddingX)] py-[var(--cmp-overlay-footer-paddingY)]",
|
|
6425
|
+
isGrey ? "bg-[var(--cmp-overlay-footer-bg-neutral)] border-t border-solid border-[color:var(--sys-color-border-default)]" : "bg-[var(--cmp-overlay-footer-bg-default)] shadow-[var(--shadow-spread-md)]",
|
|
6041
6426
|
className
|
|
6042
6427
|
),
|
|
6043
6428
|
style,
|
|
@@ -6686,6 +7071,8 @@ function SLoadingModal({
|
|
|
6686
7071
|
);
|
|
6687
7072
|
}
|
|
6688
7073
|
var CLOSE_ANIMATION_DURATION2 = 300;
|
|
7074
|
+
var RESIZE_KEY_STEP = { normal: 10, large: 50 };
|
|
7075
|
+
var RESIZE_HIT_WIDTH = "calc(var(--cmp-splitter-border-width) + var(--cmp-splitter-border-padding) * 2)";
|
|
6689
7076
|
function toPx(value, percentBase) {
|
|
6690
7077
|
if (typeof value === "number") return value;
|
|
6691
7078
|
if (typeof value !== "string") return void 0;
|
|
@@ -6723,6 +7110,7 @@ function SDrawer({
|
|
|
6723
7110
|
resizable = false,
|
|
6724
7111
|
minWidth,
|
|
6725
7112
|
maxWidth,
|
|
7113
|
+
onWidthChange,
|
|
6726
7114
|
footerLeft,
|
|
6727
7115
|
button,
|
|
6728
7116
|
children,
|
|
@@ -6735,11 +7123,16 @@ function SDrawer({
|
|
|
6735
7123
|
const [portalContainer, setPortalContainer] = react.useState(null);
|
|
6736
7124
|
const backdropPointerDownRef = react.useRef(false);
|
|
6737
7125
|
const contentRef = react.useRef(null);
|
|
7126
|
+
const panelRef = react.useRef(null);
|
|
6738
7127
|
const stackRegistrationRef = react.useRef(null);
|
|
6739
7128
|
const resizeCleanupRef = react.useRef(null);
|
|
6740
|
-
const resizeStateRef = react.useRef(null);
|
|
6741
7129
|
const [layerIndex, setLayerIndex] = react.useState(null);
|
|
6742
7130
|
const [currentWidth, setCurrentWidth] = react.useState(width);
|
|
7131
|
+
const [resizing, setResizing] = react.useState(false);
|
|
7132
|
+
const [measuredWidth, setMeasuredWidth] = react.useState(null);
|
|
7133
|
+
const [viewportWidth, setViewportWidth] = react.useState(
|
|
7134
|
+
() => typeof window === "undefined" ? void 0 : window.innerWidth
|
|
7135
|
+
);
|
|
6743
7136
|
react.useEffect(() => {
|
|
6744
7137
|
setCurrentWidth(width);
|
|
6745
7138
|
}, [width]);
|
|
@@ -6755,6 +7148,22 @@ function SDrawer({
|
|
|
6755
7148
|
react.useEffect(() => {
|
|
6756
7149
|
return () => resizeCleanupRef.current?.();
|
|
6757
7150
|
}, []);
|
|
7151
|
+
react.useEffect(() => {
|
|
7152
|
+
if (!rendered) return;
|
|
7153
|
+
const sync = () => setViewportWidth(window.innerWidth);
|
|
7154
|
+
sync();
|
|
7155
|
+
window.addEventListener("resize", sync);
|
|
7156
|
+
return () => window.removeEventListener("resize", sync);
|
|
7157
|
+
}, [rendered]);
|
|
7158
|
+
react.useEffect(() => {
|
|
7159
|
+
const panel = panelRef.current;
|
|
7160
|
+
if (!resizable || !rendered || !panel || typeof ResizeObserver === "undefined") return;
|
|
7161
|
+
const observer = new ResizeObserver(
|
|
7162
|
+
() => setMeasuredWidth(Math.round(panel.getBoundingClientRect().width))
|
|
7163
|
+
);
|
|
7164
|
+
observer.observe(panel);
|
|
7165
|
+
return () => observer.disconnect();
|
|
7166
|
+
}, [resizable, rendered]);
|
|
6758
7167
|
react.useEffect(() => {
|
|
6759
7168
|
if (!open) {
|
|
6760
7169
|
setEntered(false);
|
|
@@ -6796,41 +7205,80 @@ function SDrawer({
|
|
|
6796
7205
|
}
|
|
6797
7206
|
onOpenChange?.(false);
|
|
6798
7207
|
};
|
|
7208
|
+
const resizeBounds = () => {
|
|
7209
|
+
const limit = viewportWidth;
|
|
7210
|
+
if (limit === void 0) return { min: void 0, max: void 0 };
|
|
7211
|
+
const min = toPx(minWidth, limit);
|
|
7212
|
+
const max = toPx(maxWidth, limit);
|
|
7213
|
+
return {
|
|
7214
|
+
min: min === void 0 ? void 0 : Math.min(min, limit),
|
|
7215
|
+
max: max === void 0 ? limit : Math.min(max, limit)
|
|
7216
|
+
};
|
|
7217
|
+
};
|
|
7218
|
+
const commitWidth = (next, startWidth) => {
|
|
7219
|
+
const { min, max } = resizeBounds();
|
|
7220
|
+
const clamped = Math.round(clamp3(next, min, max));
|
|
7221
|
+
setCurrentWidth(clamped);
|
|
7222
|
+
if (clamped !== Math.round(startWidth)) onWidthChange?.(clamped);
|
|
7223
|
+
};
|
|
6799
7224
|
const handleResizeStart = (event) => {
|
|
7225
|
+
if (typeof document === "undefined") return;
|
|
7226
|
+
const panel = panelRef.current;
|
|
7227
|
+
if (!panel) return;
|
|
6800
7228
|
event.preventDefault();
|
|
6801
7229
|
event.stopPropagation();
|
|
6802
|
-
|
|
6803
|
-
|
|
6804
|
-
|
|
6805
|
-
|
|
6806
|
-
|
|
6807
|
-
|
|
6808
|
-
|
|
6809
|
-
|
|
7230
|
+
event.currentTarget.focus();
|
|
7231
|
+
const startX = event.clientX;
|
|
7232
|
+
const startWidth = panel.getBoundingClientRect().width;
|
|
7233
|
+
const { min, max } = resizeBounds();
|
|
7234
|
+
let latest = startWidth;
|
|
7235
|
+
const { body } = document;
|
|
7236
|
+
const previousCursor = body.style.cursor;
|
|
7237
|
+
const previousUserSelect = body.style.userSelect;
|
|
6810
7238
|
const onMove = (moveEvent) => {
|
|
6811
|
-
|
|
6812
|
-
|
|
6813
|
-
const nextWidth = resizeState.startWidth + resizeState.startX - moveEvent.clientX;
|
|
6814
|
-
setCurrentWidth(clamp3(nextWidth, resizeState.minWidth, resizeState.maxWidth));
|
|
7239
|
+
latest = Math.round(clamp3(startWidth + (startX - moveEvent.clientX), min, max));
|
|
7240
|
+
setCurrentWidth(latest);
|
|
6815
7241
|
};
|
|
6816
|
-
resizeCleanupRef.current?.();
|
|
6817
|
-
const previousCursor = document.body.style.cursor;
|
|
6818
|
-
const previousUserSelect = document.body.style.userSelect;
|
|
6819
7242
|
const cleanupResize = () => {
|
|
6820
|
-
|
|
6821
|
-
|
|
6822
|
-
document.body.style.userSelect = previousUserSelect;
|
|
7243
|
+
body.style.cursor = previousCursor;
|
|
7244
|
+
body.style.userSelect = previousUserSelect;
|
|
6823
7245
|
document.removeEventListener("mousemove", onMove);
|
|
6824
7246
|
document.removeEventListener("mouseup", cleanupResize);
|
|
6825
7247
|
resizeCleanupRef.current = null;
|
|
7248
|
+
setResizing(false);
|
|
7249
|
+
commitWidth(latest, startWidth);
|
|
6826
7250
|
};
|
|
7251
|
+
resizeCleanupRef.current?.();
|
|
6827
7252
|
resizeCleanupRef.current = cleanupResize;
|
|
6828
|
-
|
|
6829
|
-
|
|
7253
|
+
body.style.cursor = "col-resize";
|
|
7254
|
+
body.style.userSelect = "none";
|
|
6830
7255
|
document.addEventListener("mousemove", onMove);
|
|
6831
7256
|
document.addEventListener("mouseup", cleanupResize);
|
|
7257
|
+
setResizing(true);
|
|
7258
|
+
};
|
|
7259
|
+
const handleResizeKeyDown = (event) => {
|
|
7260
|
+
const panel = panelRef.current;
|
|
7261
|
+
if (!panel) return;
|
|
7262
|
+
const startWidth = panel.getBoundingClientRect().width;
|
|
7263
|
+
const { min, max } = resizeBounds();
|
|
7264
|
+
const step = RESIZE_KEY_STEP[event.shiftKey ? "large" : "normal"];
|
|
7265
|
+
let next = null;
|
|
7266
|
+
if (event.key === "ArrowLeft") next = startWidth + step;
|
|
7267
|
+
else if (event.key === "ArrowRight") next = startWidth - step;
|
|
7268
|
+
else if (event.key === "Home" && min !== void 0) next = min;
|
|
7269
|
+
else if (event.key === "End" && max !== void 0) next = max;
|
|
7270
|
+
if (next === null) return;
|
|
7271
|
+
event.preventDefault();
|
|
7272
|
+
commitWidth(next, startWidth);
|
|
6832
7273
|
};
|
|
6833
7274
|
const modalHost = getModalHost();
|
|
7275
|
+
const resizeValueNow = measuredWidth ?? (typeof currentWidth === "number" ? Math.round(currentWidth) : void 0);
|
|
7276
|
+
const { min: resizeMinPx, max: resizeMaxPx } = resizeBounds();
|
|
7277
|
+
const resizeValueMin = resizeMinPx === void 0 ? void 0 : Math.round(resizeMinPx);
|
|
7278
|
+
const resizeValueMax = resizeMaxPx === void 0 ? void 0 : Math.round(resizeMaxPx);
|
|
7279
|
+
const appliedWidth = typeof currentWidth === "number" && viewportWidth !== void 0 ? Math.min(currentWidth, viewportWidth) : currentWidth;
|
|
7280
|
+
const appliedMinWidth = resizeMinPx ?? minWidth;
|
|
7281
|
+
const appliedMaxWidth = resizeMaxPx ?? maxWidth;
|
|
6834
7282
|
return /* @__PURE__ */ jsxRuntime.jsx(RDialog__namespace.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsx(RDialog__namespace.Portal, { container: modalHost, forceMount: rendered ? true : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pointer-events-none absolute inset-0", style: { zIndex: layerIndex ?? 0 }, children: [
|
|
6835
7283
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6836
7284
|
RDialog__namespace.Overlay,
|
|
@@ -6872,6 +7320,7 @@ function SDrawer({
|
|
|
6872
7320
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6873
7321
|
"div",
|
|
6874
7322
|
{
|
|
7323
|
+
ref: panelRef,
|
|
6875
7324
|
className: cn(
|
|
6876
7325
|
"pointer-events-auto relative flex h-full max-w-full translate-x-full flex-col overflow-hidden bg-[var(--cmp-drawer-bg)] shadow-[var(--shadow-overlay)] transition-transform duration-300 ease-out data-[state=open]:translate-x-0 data-[state=closed]:translate-x-full",
|
|
6877
7326
|
shaking && "animate-drawer-shake",
|
|
@@ -6879,20 +7328,45 @@ function SDrawer({
|
|
|
6879
7328
|
),
|
|
6880
7329
|
"data-s-drawer-panel": true,
|
|
6881
7330
|
"data-state": open && entered ? "open" : "closed",
|
|
6882
|
-
style: {
|
|
7331
|
+
style: {
|
|
7332
|
+
width: appliedWidth,
|
|
7333
|
+
minWidth: appliedMinWidth,
|
|
7334
|
+
maxWidth: appliedMaxWidth,
|
|
7335
|
+
...style
|
|
7336
|
+
},
|
|
6883
7337
|
onAnimationEnd: (event) => {
|
|
6884
7338
|
if (event.animationName === "drawer-shake") setShaking(false);
|
|
6885
7339
|
},
|
|
6886
7340
|
children: [
|
|
6887
|
-
resizable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6888
|
-
"
|
|
7341
|
+
resizable && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7342
|
+
"div",
|
|
6889
7343
|
{
|
|
6890
|
-
|
|
7344
|
+
role: "separator",
|
|
7345
|
+
"aria-orientation": "vertical",
|
|
6891
7346
|
"aria-label": "Drawer \uB108\uBE44 \uC870\uC808",
|
|
6892
|
-
|
|
6893
|
-
|
|
7347
|
+
"aria-valuenow": resizeValueNow,
|
|
7348
|
+
"aria-valuemin": resizeValueMin,
|
|
7349
|
+
"aria-valuemax": resizeValueMax,
|
|
7350
|
+
"aria-valuetext": resizeValueNow === void 0 ? void 0 : `${resizeValueNow}px`,
|
|
7351
|
+
tabIndex: 0,
|
|
7352
|
+
onMouseDown: handleResizeStart,
|
|
7353
|
+
onKeyDown: handleResizeKeyDown,
|
|
7354
|
+
className: "group absolute inset-y-0 left-0 z-[1] flex cursor-col-resize touch-none justify-start outline-none",
|
|
7355
|
+
style: { width: RESIZE_HIT_WIDTH },
|
|
7356
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7357
|
+
"span",
|
|
7358
|
+
{
|
|
7359
|
+
"aria-hidden": true,
|
|
7360
|
+
className: cn(
|
|
7361
|
+
// 평상시엔 자리만 잡고 칠하지 않는다 — 색이 붙는 것 자체가 조절 가능하다는 신호다.
|
|
7362
|
+
"w-(--cmp-splitter-border-width) transition-colors",
|
|
7363
|
+
"group-hover:bg-(--cmp-splitter-border-color) group-focus-visible:bg-(--cmp-splitter-border-color)",
|
|
7364
|
+
resizing && "bg-(--cmp-splitter-border-color)"
|
|
7365
|
+
)
|
|
7366
|
+
}
|
|
7367
|
+
)
|
|
6894
7368
|
}
|
|
6895
|
-
),
|
|
7369
|
+
) }),
|
|
6896
7370
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6897
7371
|
SOverlayHeader,
|
|
6898
7372
|
{
|
|
@@ -6922,6 +7396,72 @@ function SDrawer({
|
|
|
6922
7396
|
)
|
|
6923
7397
|
] }) }) });
|
|
6924
7398
|
}
|
|
7399
|
+
|
|
7400
|
+
// src/lib/is-dev.ts
|
|
7401
|
+
function isDev() {
|
|
7402
|
+
return typeof process === "undefined" || process?.env?.NODE_ENV !== "production";
|
|
7403
|
+
}
|
|
7404
|
+
|
|
7405
|
+
// src/lib/modal-outlet.ts
|
|
7406
|
+
var EMPTY = [];
|
|
7407
|
+
var entries2 = EMPTY;
|
|
7408
|
+
var listeners2 = /* @__PURE__ */ new Set();
|
|
7409
|
+
var outletRendered = false;
|
|
7410
|
+
var outletCount = 0;
|
|
7411
|
+
var nextId2 = 0;
|
|
7412
|
+
function emit2() {
|
|
7413
|
+
for (const listener of listeners2) listener();
|
|
7414
|
+
}
|
|
7415
|
+
function subscribeModalEntries(listener) {
|
|
7416
|
+
listeners2.add(listener);
|
|
7417
|
+
return () => {
|
|
7418
|
+
listeners2.delete(listener);
|
|
7419
|
+
};
|
|
7420
|
+
}
|
|
7421
|
+
function getModalEntries() {
|
|
7422
|
+
return entries2;
|
|
7423
|
+
}
|
|
7424
|
+
function getServerModalEntries() {
|
|
7425
|
+
return EMPTY;
|
|
7426
|
+
}
|
|
7427
|
+
function markModalOutletRendered() {
|
|
7428
|
+
outletRendered = true;
|
|
7429
|
+
}
|
|
7430
|
+
function registerModalOutlet() {
|
|
7431
|
+
outletCount += 1;
|
|
7432
|
+
outletRendered = true;
|
|
7433
|
+
return () => {
|
|
7434
|
+
outletCount -= 1;
|
|
7435
|
+
if (outletCount === 0) queueMicrotask(sweepOrphans);
|
|
7436
|
+
};
|
|
7437
|
+
}
|
|
7438
|
+
function sweepOrphans() {
|
|
7439
|
+
if (outletCount > 0) return;
|
|
7440
|
+
outletRendered = false;
|
|
7441
|
+
if (entries2 === EMPTY) return;
|
|
7442
|
+
const orphans = entries2;
|
|
7443
|
+
entries2 = EMPTY;
|
|
7444
|
+
emit2();
|
|
7445
|
+
for (const entry of orphans) entry.onOrphan();
|
|
7446
|
+
}
|
|
7447
|
+
function hasModalOutlet() {
|
|
7448
|
+
return outletRendered;
|
|
7449
|
+
}
|
|
7450
|
+
function isModalOutletMounted() {
|
|
7451
|
+
return outletCount > 0;
|
|
7452
|
+
}
|
|
7453
|
+
function addModalEntry(host, node, onOrphan) {
|
|
7454
|
+
const id = ++nextId2;
|
|
7455
|
+
entries2 = [...entries2, { id, host, node, onOrphan }];
|
|
7456
|
+
emit2();
|
|
7457
|
+
return id;
|
|
7458
|
+
}
|
|
7459
|
+
function removeModalEntry(id) {
|
|
7460
|
+
const next = entries2.filter((entry) => entry.id !== id);
|
|
7461
|
+
if (next.length === entries2.length) return;
|
|
7462
|
+
entries2 = next;
|
|
7463
|
+
emit2();
|
|
7464
|
+
}
|
|
6925
7465
|
var EXIT_DURATION = 300;
|
|
6926
7466
|
var EXIT_BUFFER = 100;
|
|
6927
7467
|
var SModalRefImpl = class {
|
|
@@ -6929,6 +7469,7 @@ var SModalRefImpl = class {
|
|
|
6929
7469
|
this.pendingClose = false;
|
|
6930
7470
|
this.pendingPatches = [];
|
|
6931
7471
|
this.dismissRequested = false;
|
|
7472
|
+
this.torndown = false;
|
|
6932
7473
|
}
|
|
6933
7474
|
onOk(fn) {
|
|
6934
7475
|
this.okFn = fn;
|
|
@@ -6960,10 +7501,10 @@ var SModalRefImpl = class {
|
|
|
6960
7501
|
return this;
|
|
6961
7502
|
}
|
|
6962
7503
|
// 닫힘 트리거 — 이미 닫힘이 시작됐으면 무시(중복 콜백 방지)
|
|
6963
|
-
settle(
|
|
7504
|
+
settle(emit3) {
|
|
6964
7505
|
if (this.dismissRequested) return;
|
|
6965
7506
|
this.dismissRequested = true;
|
|
6966
|
-
|
|
7507
|
+
emit3();
|
|
6967
7508
|
if (this.closeBinding) this.closeBinding();
|
|
6968
7509
|
else this.pendingClose = true;
|
|
6969
7510
|
}
|
|
@@ -6996,11 +7537,18 @@ var SModalRefImpl = class {
|
|
|
6996
7537
|
this.pendingPatches = [];
|
|
6997
7538
|
}
|
|
6998
7539
|
}
|
|
6999
|
-
/** @internal
|
|
7000
|
-
|
|
7001
|
-
this.root = root;
|
|
7540
|
+
/** @internal host 주입 — 렌더 전에 호출해야 마운트 검사(_getHost)가 성립한다 */
|
|
7541
|
+
_setHost(host) {
|
|
7002
7542
|
this.host = host;
|
|
7003
7543
|
}
|
|
7544
|
+
/** @internal outlet 경로 정리 대상(스토어 엔트리) 주입 */
|
|
7545
|
+
_setEntry(id) {
|
|
7546
|
+
this.entryId = id;
|
|
7547
|
+
}
|
|
7548
|
+
/** @internal 폴백(createRoot) 경로 정리 대상 주입 */
|
|
7549
|
+
_setRoot(root) {
|
|
7550
|
+
this.root = root;
|
|
7551
|
+
}
|
|
7004
7552
|
/** @internal create 의 마운트 검사용 host 조회 */
|
|
7005
7553
|
_getHost() {
|
|
7006
7554
|
return this.host;
|
|
@@ -7031,9 +7579,21 @@ var SModalRefImpl = class {
|
|
|
7031
7579
|
}
|
|
7032
7580
|
/** @internal 닫힘 애니메이션 종료 후 언마운트 */
|
|
7033
7581
|
_teardown() {
|
|
7582
|
+
if (this.torndown) return;
|
|
7583
|
+
this.torndown = true;
|
|
7584
|
+
if (this.entryId !== void 0) {
|
|
7585
|
+
removeModalEntry(this.entryId);
|
|
7586
|
+
return;
|
|
7587
|
+
}
|
|
7034
7588
|
this.root?.unmount();
|
|
7035
7589
|
this.host?.remove();
|
|
7036
7590
|
}
|
|
7591
|
+
/** @internal 렌더 실패·outlet 소멸로 모달이 사라졌을 때 — 콜백을 마무리하고 정리한다 */
|
|
7592
|
+
_fail() {
|
|
7593
|
+
this.dismissRequested = true;
|
|
7594
|
+
this._emitDismissed();
|
|
7595
|
+
this._teardown();
|
|
7596
|
+
}
|
|
7037
7597
|
};
|
|
7038
7598
|
function useExitTeardown(open, refImpl) {
|
|
7039
7599
|
const dismissedRef = react.useRef(false);
|
|
@@ -7100,8 +7660,15 @@ function LoadingMount({ options, refImpl }) {
|
|
|
7100
7660
|
}
|
|
7101
7661
|
);
|
|
7102
7662
|
}
|
|
7663
|
+
var outletWarned = false;
|
|
7664
|
+
var NO_OUTLET_CAUSE = "SModalOutlet \uC774 \uC571 \uD2B8\uB9AC\uC5D0 \uC5C6\uC5B4 \uC774 \uBAA8\uB2EC\uC740 \uBCC4\uB3C4 React \uB8E8\uD2B8(createRoot)\uB85C \uB9C8\uC6B4\uD2B8\uB429\uB2C8\uB2E4. React Context \uB294 DOM \uC774 \uC544\uB2C8\uB77C \uB80C\uB354 \uD2B8\uB9AC\uB97C \uD0C0\uBBC0\uB85C \uC571\uC758 Provider(QueryClient\xB7Router\xB7Theme \uB4F1)\uAC00 \uB2FF\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC571 \uBD80\uD2B8\uC2A4\uD2B8\uB7A9\uC5D0\uC11C Provider \uC548\uCABD\uC5D0 <SModalOutlet /> \uC744 \uD55C \uBC88 \uB80C\uB354\uD558\uC138\uC694.";
|
|
7665
|
+
function warnMissingOutlet() {
|
|
7666
|
+
if (!isDev() || outletWarned) return;
|
|
7667
|
+
outletWarned = true;
|
|
7668
|
+
console.warn(`[SModal] ${NO_OUTLET_CAUSE}`);
|
|
7669
|
+
}
|
|
7103
7670
|
function warnIfNotModal(host, component) {
|
|
7104
|
-
if (
|
|
7671
|
+
if (!isDev()) return;
|
|
7105
7672
|
if (!host || host.childElementCount === 0) return;
|
|
7106
7673
|
const name = component?.name || "component";
|
|
7107
7674
|
console.warn(
|
|
@@ -7109,14 +7676,14 @@ function warnIfNotModal(host, component) {
|
|
|
7109
7676
|
);
|
|
7110
7677
|
}
|
|
7111
7678
|
function CreateMount({ options, refImpl }) {
|
|
7112
|
-
const { component:
|
|
7679
|
+
const { component: Component2, componentProps } = options;
|
|
7113
7680
|
const [open, setOpen] = react.useState(true);
|
|
7114
7681
|
react.useEffect(() => {
|
|
7115
7682
|
refImpl._bindClose(() => setOpen(false));
|
|
7116
7683
|
refImpl._bindUpdate(() => {
|
|
7117
7684
|
});
|
|
7118
|
-
warnIfNotModal(refImpl._getHost(),
|
|
7119
|
-
}, [refImpl,
|
|
7685
|
+
warnIfNotModal(refImpl._getHost(), Component2);
|
|
7686
|
+
}, [refImpl, Component2]);
|
|
7120
7687
|
useExitTeardown(open, refImpl);
|
|
7121
7688
|
const componentAllProps = {
|
|
7122
7689
|
...componentProps,
|
|
@@ -7128,15 +7695,42 @@ function CreateMount({ options, refImpl }) {
|
|
|
7128
7695
|
onClose: () => refImpl._emitClose(),
|
|
7129
7696
|
modalRef: refImpl
|
|
7130
7697
|
};
|
|
7131
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7698
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...componentAllProps });
|
|
7132
7699
|
}
|
|
7700
|
+
var ModalErrorBoundary = class extends react.Component {
|
|
7701
|
+
constructor() {
|
|
7702
|
+
super(...arguments);
|
|
7703
|
+
this.state = { failed: false };
|
|
7704
|
+
}
|
|
7705
|
+
static getDerivedStateFromError() {
|
|
7706
|
+
return { failed: true };
|
|
7707
|
+
}
|
|
7708
|
+
componentDidCatch(error) {
|
|
7709
|
+
console.error(
|
|
7710
|
+
this.props.standalone ? `[SModal] \uBAA8\uB2EC \uB80C\uB354\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. ${NO_OUTLET_CAUSE}` : "[SModal] \uBAA8\uB2EC \uB80C\uB354\uC5D0 \uC2E4\uD328\uD574 \uBAA8\uB2EC\uC744 \uB2EB\uC2B5\uB2C8\uB2E4.",
|
|
7711
|
+
error
|
|
7712
|
+
);
|
|
7713
|
+
setTimeout(() => this.props.onError(), 0);
|
|
7714
|
+
}
|
|
7715
|
+
render() {
|
|
7716
|
+
return this.state.failed ? null : this.props.children;
|
|
7717
|
+
}
|
|
7718
|
+
};
|
|
7133
7719
|
function mount(render) {
|
|
7134
7720
|
const host = document.createElement("div");
|
|
7135
7721
|
document.body.appendChild(host);
|
|
7136
7722
|
const refImpl = new SModalRefImpl();
|
|
7723
|
+
refImpl._setHost(host);
|
|
7724
|
+
const useOutlet = hasModalOutlet();
|
|
7725
|
+
const node = /* @__PURE__ */ jsxRuntime.jsx(ModalErrorBoundary, { standalone: !useOutlet, onError: () => refImpl._fail(), children: render(refImpl) });
|
|
7726
|
+
if (useOutlet) {
|
|
7727
|
+
refImpl._setEntry(addModalEntry(host, node, () => refImpl._fail()));
|
|
7728
|
+
return refImpl;
|
|
7729
|
+
}
|
|
7730
|
+
warnMissingOutlet();
|
|
7137
7731
|
const root = client.createRoot(host);
|
|
7138
|
-
refImpl.
|
|
7139
|
-
root.render(
|
|
7732
|
+
refImpl._setRoot(root);
|
|
7733
|
+
root.render(node);
|
|
7140
7734
|
return refImpl;
|
|
7141
7735
|
}
|
|
7142
7736
|
var SModal = {
|
|
@@ -7160,8 +7754,32 @@ var SModal = {
|
|
|
7160
7754
|
return mount((refImpl) => /* @__PURE__ */ jsxRuntime.jsx(CreateMount, { options, refImpl }));
|
|
7161
7755
|
}
|
|
7162
7756
|
};
|
|
7757
|
+
function SModalEntryPortal({ entry }) {
|
|
7758
|
+
react.useEffect(() => {
|
|
7759
|
+
if (!entry.host.isConnected) document.body.appendChild(entry.host);
|
|
7760
|
+
return () => entry.host.remove();
|
|
7761
|
+
}, [entry]);
|
|
7762
|
+
return reactDom.createPortal(entry.node, entry.host);
|
|
7763
|
+
}
|
|
7764
|
+
function SModalOutlet() {
|
|
7765
|
+
markModalOutletRendered();
|
|
7766
|
+
const entries3 = react.useSyncExternalStore(
|
|
7767
|
+
subscribeModalEntries,
|
|
7768
|
+
getModalEntries,
|
|
7769
|
+
getServerModalEntries
|
|
7770
|
+
);
|
|
7771
|
+
react.useEffect(() => {
|
|
7772
|
+
if (isDev() && isModalOutletMounted()) {
|
|
7773
|
+
console.warn(
|
|
7774
|
+
"[SModalOutlet] \uC774\uBBF8 \uB80C\uB354\uB41C SModalOutlet \uC774 \uC788\uC2B5\uB2C8\uB2E4. \uC571 \uC804\uCCB4\uC5D0 \uD558\uB098\uB9CC \uB450\uC138\uC694 \u2014 \uB458 \uC774\uC0C1\uC774\uBA74 \uAC19\uC740 \uBAA8\uB2EC\uC774 \uC911\uBCF5\uC73C\uB85C \uADF8\uB824\uC9D1\uB2C8\uB2E4."
|
|
7775
|
+
);
|
|
7776
|
+
}
|
|
7777
|
+
return registerModalOutlet();
|
|
7778
|
+
}, []);
|
|
7779
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PortalContainerProvider, { value: null, children: /* @__PURE__ */ jsxRuntime.jsx(InsideModalProvider, { value: false, children: entries3.map((entry) => /* @__PURE__ */ jsxRuntime.jsx(SModalEntryPortal, { entry }, entry.id)) }) });
|
|
7780
|
+
}
|
|
7163
7781
|
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? react.useLayoutEffect : react.useEffect;
|
|
7164
|
-
var isSameNav = (a, b) => a === b || !!a && !!b && a.columnWidth === b.columnWidth && a.topHeight === b.topHeight && a.foldMs === b.foldMs && a.requireFullHeader === b.requireFullHeader;
|
|
7782
|
+
var isSameNav = (a, b) => a === b || !!a && !!b && a.columnWidth === b.columnWidth && a.topHeight === b.topHeight && a.foldMs === b.foldMs && a.requireFullHeader === b.requireFullHeader && a.resizing === b.resizing;
|
|
7165
7783
|
var SLayoutContext = /* @__PURE__ */ react.createContext(null);
|
|
7166
7784
|
var SLAYOUT_MIN_WIDTH = 1366;
|
|
7167
7785
|
var SLAYOUT_MIN_WIDTH_VAR = "--s-layout-min-width";
|
|
@@ -7221,7 +7839,8 @@ var SLayout = /* @__PURE__ */ react.forwardRef(function SLayout2({
|
|
|
7221
7839
|
gridTemplateRows: `${nav?.topHeight ?? "0px"} 1fr`,
|
|
7222
7840
|
// 메뉴가 미끄러지는 동안 페이지 열도 같은 길이로 따라와야 한 덩어리로 읽힌다.
|
|
7223
7841
|
// (fix 는 SGnb 가 제 폭을 직접 전환하므로 프레임이 손댈 게 없다)
|
|
7224
|
-
|
|
7842
|
+
// 단 폭을 끄는 중에는 전환을 끈다 — 그러지 않으면 열이 손보다 늦게 따라온다.
|
|
7843
|
+
transition: nav?.resizing ? "none" : `grid-template-columns ${nav?.foldMs ?? 0}ms ease-out`
|
|
7225
7844
|
} : void 0;
|
|
7226
7845
|
return /* @__PURE__ */ jsxRuntime.jsx(SLayoutContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7227
7846
|
"div",
|
|
@@ -7364,6 +7983,10 @@ var GNB_RAIL_WIDTH = 68;
|
|
|
7364
7983
|
var GNB_FOLD_MS = 200;
|
|
7365
7984
|
var GNB_EXPAND_MS = 200;
|
|
7366
7985
|
var GNB_MENU_WIDTH = 240;
|
|
7986
|
+
var GNB_MENU_MIN_WIDTH = 200;
|
|
7987
|
+
var GNB_MENU_MAX_WIDTH = 300;
|
|
7988
|
+
var GNB_MENU_RESIZE_KEY_STEP = { normal: 10, large: 50 };
|
|
7989
|
+
var clampGnbMenuWidth = (width) => Math.min(GNB_MENU_MAX_WIDTH, Math.max(GNB_MENU_MIN_WIDTH, Math.round(width)));
|
|
7367
7990
|
var GNB_FULL_LOGO_WIDTH = 140;
|
|
7368
7991
|
var GNB_TOP_ICON_GAP = 8;
|
|
7369
7992
|
var GNB_TOP_ICON_SIZE = 24;
|
|
@@ -7400,6 +8023,7 @@ function findGnbAncestors(items, value) {
|
|
|
7400
8023
|
};
|
|
7401
8024
|
return walk(items, []) ?? [];
|
|
7402
8025
|
}
|
|
8026
|
+
var LABEL_TIP_HIDE_DELAY_MS = 100;
|
|
7403
8027
|
var DEPTH_PADDING_LEFT = (M, depth) => depth === 1 ? M.depth1PaddingLeft : depth === 2 ? M.depth2PaddingLeft : M.depth3PaddingLeft;
|
|
7404
8028
|
var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
7405
8029
|
type: typeProp,
|
|
@@ -7415,9 +8039,16 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7415
8039
|
onLauncherClick,
|
|
7416
8040
|
logo,
|
|
7417
8041
|
topContent,
|
|
8042
|
+
railTop,
|
|
7418
8043
|
railFooter,
|
|
8044
|
+
menuTop,
|
|
7419
8045
|
menuFooter,
|
|
8046
|
+
foldedTop,
|
|
7420
8047
|
foldedFooter,
|
|
8048
|
+
resizable = false,
|
|
8049
|
+
menuWidth: menuWidthProp,
|
|
8050
|
+
defaultMenuWidth,
|
|
8051
|
+
onMenuWidthChange,
|
|
7421
8052
|
ariaLabel = "global navigation",
|
|
7422
8053
|
className,
|
|
7423
8054
|
style,
|
|
@@ -7436,6 +8067,46 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7436
8067
|
() => new Set(findGnbAncestors(items, value))
|
|
7437
8068
|
);
|
|
7438
8069
|
const [hoveredKey, setHoveredKey] = react.useState(null);
|
|
8070
|
+
const [labelTip, setLabelTip] = react.useState(null);
|
|
8071
|
+
const labelTipHideRef = react.useRef(null);
|
|
8072
|
+
const portalContainer = usePortalContainer();
|
|
8073
|
+
const labelTipAnchorRef = react.useMemo(
|
|
8074
|
+
() => ({
|
|
8075
|
+
current: {
|
|
8076
|
+
getBoundingClientRect: () => labelTip?.el.getBoundingClientRect() ?? new DOMRect()
|
|
8077
|
+
}
|
|
8078
|
+
}),
|
|
8079
|
+
[labelTip?.el]
|
|
8080
|
+
);
|
|
8081
|
+
const cancelLabelTipHide = () => {
|
|
8082
|
+
if (labelTipHideRef.current === null) return;
|
|
8083
|
+
clearTimeout(labelTipHideRef.current);
|
|
8084
|
+
labelTipHideRef.current = null;
|
|
8085
|
+
};
|
|
8086
|
+
const showLabelTipIfTruncated = (row, label) => {
|
|
8087
|
+
cancelLabelTipHide();
|
|
8088
|
+
const el = row.querySelector("[data-gnb-label]");
|
|
8089
|
+
if (!el || el.scrollWidth <= el.clientWidth) {
|
|
8090
|
+
setLabelTip(null);
|
|
8091
|
+
return;
|
|
8092
|
+
}
|
|
8093
|
+
setLabelTip((prev) => prev?.el === el && prev.label === label ? prev : { label, el });
|
|
8094
|
+
};
|
|
8095
|
+
const startLabelTipHide = () => {
|
|
8096
|
+
cancelLabelTipHide();
|
|
8097
|
+
labelTipHideRef.current = setTimeout(() => setLabelTip(null), LABEL_TIP_HIDE_DELAY_MS);
|
|
8098
|
+
};
|
|
8099
|
+
react.useEffect(() => cancelLabelTipHide, []);
|
|
8100
|
+
const rowHoverProps = (item) => ({
|
|
8101
|
+
onMouseEnter: (event) => {
|
|
8102
|
+
setHoveredKey(item.value);
|
|
8103
|
+
showLabelTipIfTruncated(event.currentTarget, item.label);
|
|
8104
|
+
},
|
|
8105
|
+
onMouseLeave: () => {
|
|
8106
|
+
setHoveredKey((prev) => prev === item.value ? null : prev);
|
|
8107
|
+
startLabelTipHide();
|
|
8108
|
+
}
|
|
8109
|
+
});
|
|
7439
8110
|
const [activeRail, setActiveRail] = react.useState(
|
|
7440
8111
|
() => findGnbRailValue(items, value) ?? items[0]?.value
|
|
7441
8112
|
);
|
|
@@ -7515,11 +8186,17 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7515
8186
|
cursor: item.disabled ? "not-allowed" : "pointer"
|
|
7516
8187
|
},
|
|
7517
8188
|
onClick: () => handleRailClick(item),
|
|
7518
|
-
|
|
7519
|
-
onMouseLeave: () => setHoveredKey((prev) => prev === item.value ? null : prev),
|
|
8189
|
+
...rowHoverProps(item),
|
|
7520
8190
|
children: [
|
|
7521
8191
|
item.icon && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: item.icon, size: GNB_RAIL.itemIcon, className: "shrink-0" }),
|
|
7522
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8192
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8193
|
+
"span",
|
|
8194
|
+
{
|
|
8195
|
+
"data-gnb-label": true,
|
|
8196
|
+
className: "w-full overflow-hidden text-ellipsis whitespace-nowrap text-center",
|
|
8197
|
+
children: item.label
|
|
8198
|
+
}
|
|
8199
|
+
)
|
|
7523
8200
|
]
|
|
7524
8201
|
}
|
|
7525
8202
|
) }, item.value);
|
|
@@ -7563,8 +8240,7 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7563
8240
|
className: "box-border flex select-none items-center border-none bg-transparent text-left transition-colors duration-150",
|
|
7564
8241
|
style: itemStyle,
|
|
7565
8242
|
onClick: () => handleItemClick(item),
|
|
7566
|
-
|
|
7567
|
-
onMouseLeave: () => setHoveredKey((prev) => prev === item.value ? null : prev),
|
|
8243
|
+
...rowHoverProps(item),
|
|
7568
8244
|
children: [
|
|
7569
8245
|
depth === 1 && item.icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7570
8246
|
SIcon,
|
|
@@ -7575,16 +8251,23 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7575
8251
|
className: "shrink-0"
|
|
7576
8252
|
}
|
|
7577
8253
|
),
|
|
7578
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0 flex-1
|
|
8254
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 items-center", children: [
|
|
7579
8255
|
depth > 1 && iconBranch ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7580
8256
|
"div",
|
|
7581
8257
|
{
|
|
7582
|
-
className: "w-[20px]
|
|
8258
|
+
className: "mr-[8px] flex w-[20px] shrink-0 items-center justify-center",
|
|
7583
8259
|
style: { height: M.itemLineHeight },
|
|
7584
8260
|
children: "-"
|
|
7585
8261
|
}
|
|
7586
8262
|
) : null,
|
|
7587
|
-
|
|
8263
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8264
|
+
"span",
|
|
8265
|
+
{
|
|
8266
|
+
"data-gnb-label": true,
|
|
8267
|
+
className: "min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap",
|
|
8268
|
+
children: item.label
|
|
8269
|
+
}
|
|
8270
|
+
)
|
|
7588
8271
|
] }),
|
|
7589
8272
|
item.tag !== void 0 && item.tag !== "" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7590
8273
|
STag,
|
|
@@ -7636,7 +8319,14 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7636
8319
|
const railItems = useRail ? items : [];
|
|
7637
8320
|
const menuItems = useRail ? items.find((item) => item.value === activeRail)?.children ?? [] : items;
|
|
7638
8321
|
const showMenu = !useRail || menuItems.length > 0;
|
|
7639
|
-
const
|
|
8322
|
+
const [uncontrolledMenuWidth, setUncontrolledMenuWidth] = react.useState(
|
|
8323
|
+
() => defaultMenuWidth ?? GNB_MENU_WIDTH
|
|
8324
|
+
);
|
|
8325
|
+
const [dragMenuWidth, setDragMenuWidth] = react.useState(null);
|
|
8326
|
+
const committedMenuWidth = menuWidthProp ?? uncontrolledMenuWidth;
|
|
8327
|
+
const menuWidth = clampGnbMenuWidth(dragMenuWidth ?? committedMenuWidth);
|
|
8328
|
+
const [resizing, setResizing] = react.useState(false);
|
|
8329
|
+
const bodyWidth = (useRail ? GNB_RAIL_WIDTH : 0) + (showMenu ? menuWidth : 0);
|
|
7640
8330
|
const registerNav = layout?.registerNav;
|
|
7641
8331
|
useIsomorphicLayoutEffect(() => {
|
|
7642
8332
|
if (!registerNav) return;
|
|
@@ -7644,21 +8334,109 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7644
8334
|
columnWidth: bodyWidth,
|
|
7645
8335
|
topHeight: H.topHeight,
|
|
7646
8336
|
foldMs: GNB_FOLD_MS,
|
|
7647
|
-
requireFullHeader: railHasLeaf
|
|
8337
|
+
requireFullHeader: railHasLeaf,
|
|
8338
|
+
resizing
|
|
7648
8339
|
});
|
|
7649
8340
|
return () => registerNav(null);
|
|
7650
|
-
}, [registerNav, bodyWidth, H.topHeight, railHasLeaf]);
|
|
8341
|
+
}, [registerNav, bodyWidth, H.topHeight, railHasLeaf, resizing]);
|
|
8342
|
+
const canResize = resizable && showMenu && !folded;
|
|
8343
|
+
const menuWidthRef = react.useRef(menuWidth);
|
|
8344
|
+
menuWidthRef.current = menuWidth;
|
|
8345
|
+
const commitMenuWidth = (next) => {
|
|
8346
|
+
const clamped = clampGnbMenuWidth(next);
|
|
8347
|
+
setDragMenuWidth(null);
|
|
8348
|
+
if (menuWidthProp === void 0) setUncontrolledMenuWidth(clamped);
|
|
8349
|
+
if (clamped !== committedMenuWidth) onMenuWidthChange?.(clamped);
|
|
8350
|
+
};
|
|
8351
|
+
const endResizeRef = react.useRef(null);
|
|
8352
|
+
react.useEffect(() => () => endResizeRef.current?.(), []);
|
|
8353
|
+
const startMenuResize = (event) => {
|
|
8354
|
+
if (!canResize || typeof document === "undefined") return;
|
|
8355
|
+
event.preventDefault();
|
|
8356
|
+
event.currentTarget.focus();
|
|
8357
|
+
const startX = event.clientX;
|
|
8358
|
+
const startWidth = menuWidthRef.current;
|
|
8359
|
+
let latest = startWidth;
|
|
8360
|
+
const { body } = document;
|
|
8361
|
+
const prevUserSelect = body.style.userSelect;
|
|
8362
|
+
const prevCursor = body.style.cursor;
|
|
8363
|
+
body.style.userSelect = "none";
|
|
8364
|
+
body.style.cursor = "col-resize";
|
|
8365
|
+
const onMove = (moveEvent) => {
|
|
8366
|
+
latest = clampGnbMenuWidth(startWidth + (moveEvent.clientX - startX));
|
|
8367
|
+
setDragMenuWidth(latest);
|
|
8368
|
+
};
|
|
8369
|
+
const endResize = () => {
|
|
8370
|
+
document.removeEventListener("mousemove", onMove);
|
|
8371
|
+
document.removeEventListener("mouseup", endResize);
|
|
8372
|
+
body.style.userSelect = prevUserSelect;
|
|
8373
|
+
body.style.cursor = prevCursor;
|
|
8374
|
+
endResizeRef.current = null;
|
|
8375
|
+
setResizing(false);
|
|
8376
|
+
commitMenuWidth(latest);
|
|
8377
|
+
};
|
|
8378
|
+
document.addEventListener("mousemove", onMove);
|
|
8379
|
+
document.addEventListener("mouseup", endResize);
|
|
8380
|
+
endResizeRef.current = endResize;
|
|
8381
|
+
setResizing(true);
|
|
8382
|
+
};
|
|
8383
|
+
const handleMenuResizeKeyDown = (event) => {
|
|
8384
|
+
if (!canResize) return;
|
|
8385
|
+
const step = GNB_MENU_RESIZE_KEY_STEP[event.shiftKey ? "large" : "normal"];
|
|
8386
|
+
let next = null;
|
|
8387
|
+
if (event.key === "ArrowLeft") next = menuWidthRef.current - step;
|
|
8388
|
+
else if (event.key === "ArrowRight") next = menuWidthRef.current + step;
|
|
8389
|
+
else if (event.key === "Home") next = GNB_MENU_MIN_WIDTH;
|
|
8390
|
+
else if (event.key === "End") next = GNB_MENU_MAX_WIDTH;
|
|
8391
|
+
if (next === null) return;
|
|
8392
|
+
event.preventDefault();
|
|
8393
|
+
commitMenuWidth(next);
|
|
8394
|
+
};
|
|
7651
8395
|
const railFolded = folded && header === "fix";
|
|
7652
8396
|
const isFull = header === "full";
|
|
7653
8397
|
const isFullFrame = isFull && !!layout;
|
|
7654
8398
|
const rightBorder = color === "light" ? `1px solid ${C.topBorder}` : void 0;
|
|
8399
|
+
const resizeHitWidth = "calc(var(--cmp-splitter-border-width) + var(--cmp-splitter-border-padding) * 2)";
|
|
8400
|
+
const menuResizeHandle = canResize ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8401
|
+
"div",
|
|
8402
|
+
{
|
|
8403
|
+
role: "separator",
|
|
8404
|
+
"aria-orientation": "vertical",
|
|
8405
|
+
"aria-label": `${ariaLabel} width`,
|
|
8406
|
+
"aria-valuenow": menuWidth,
|
|
8407
|
+
"aria-valuemin": GNB_MENU_MIN_WIDTH,
|
|
8408
|
+
"aria-valuemax": GNB_MENU_MAX_WIDTH,
|
|
8409
|
+
"aria-valuetext": `${menuWidth}px`,
|
|
8410
|
+
tabIndex: 0,
|
|
8411
|
+
onMouseDown: startMenuResize,
|
|
8412
|
+
onKeyDown: handleMenuResizeKeyDown,
|
|
8413
|
+
className: "group absolute inset-y-0 z-[1] flex cursor-col-resize justify-end outline-none",
|
|
8414
|
+
style: {
|
|
8415
|
+
width: resizeHitWidth,
|
|
8416
|
+
...isFull && !isFullFrame ? { left: `calc(${bodyWidth}px - ${resizeHitWidth})` } : { right: 0 }
|
|
8417
|
+
},
|
|
8418
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8419
|
+
"span",
|
|
8420
|
+
{
|
|
8421
|
+
"aria-hidden": true,
|
|
8422
|
+
className: cn(
|
|
8423
|
+
// 평상시엔 자리만 잡고 칠하지 않는다 — 색이 붙는 것 자체가 조절 가능하다는 신호다.
|
|
8424
|
+
"w-(--cmp-splitter-border-width) transition-colors",
|
|
8425
|
+
"group-hover:bg-(--cmp-splitter-border-color) group-focus-visible:bg-(--cmp-splitter-border-color)",
|
|
8426
|
+
resizing && "bg-(--cmp-splitter-border-color)"
|
|
8427
|
+
)
|
|
8428
|
+
}
|
|
8429
|
+
)
|
|
8430
|
+
}
|
|
8431
|
+
) }) : null;
|
|
7655
8432
|
const rootStyle = isFullFrame ? { display: "contents", ...style } : isFull ? (
|
|
7656
8433
|
// 단독 full — 상단바가 전폭이어야 하므로 루트도 전폭이고, 배경·선은 상단바·메뉴가 각자 그린다.
|
|
7657
8434
|
{ width: "100%", ...style }
|
|
7658
8435
|
) : {
|
|
7659
8436
|
// fix 를 닫으면 48px 레일로 좁혀진다.
|
|
7660
8437
|
width: folded ? GNB_COMMON.foldWidth : bodyWidth,
|
|
7661
|
-
|
|
8438
|
+
// 폭을 끄는 중에는 전환을 끈다 — 접힘용 전환이 걸려 있으면 컬럼이 손보다 늦게 따라온다.
|
|
8439
|
+
transition: resizing ? "none" : `width ${GNB_FOLD_MS}ms ease-out`,
|
|
7662
8440
|
backgroundColor: C.panelBg,
|
|
7663
8441
|
borderRight: rightBorder,
|
|
7664
8442
|
...style
|
|
@@ -7735,7 +8513,8 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7735
8513
|
ref,
|
|
7736
8514
|
className: cn(
|
|
7737
8515
|
"box-border",
|
|
7738
|
-
|
|
8516
|
+
// relative: fix 의 조절선이 루트(=GNB 컬럼) 오른쪽 끝을 기준으로 서야 상단바까지 이어진다.
|
|
8517
|
+
!isFullFrame && "relative flex h-full shrink-0 flex-col overflow-hidden",
|
|
7739
8518
|
className
|
|
7740
8519
|
),
|
|
7741
8520
|
style: rootStyle,
|
|
@@ -7773,86 +8552,109 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
7773
8552
|
] })
|
|
7774
8553
|
}
|
|
7775
8554
|
),
|
|
7776
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8555
|
+
railFolded && foldedTop && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-[24px] flex shrink-0 items-center justify-center", children: foldedTop }),
|
|
8556
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7777
8557
|
"div",
|
|
7778
8558
|
{
|
|
7779
|
-
className: cn("overflow-hidden", !isFullFrame && "min-h-0 flex-1"),
|
|
8559
|
+
className: cn("relative overflow-hidden", !isFullFrame && "min-h-0 flex-1"),
|
|
7780
8560
|
style: isFullFrame ? { gridArea: "nav" } : void 0,
|
|
7781
|
-
children:
|
|
7782
|
-
|
|
7783
|
-
|
|
7784
|
-
|
|
7785
|
-
|
|
7786
|
-
|
|
7787
|
-
|
|
7788
|
-
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
|
|
7797
|
-
|
|
7798
|
-
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
7802
|
-
|
|
7803
|
-
|
|
7804
|
-
|
|
7805
|
-
|
|
7806
|
-
"
|
|
7807
|
-
|
|
7808
|
-
"
|
|
7809
|
-
|
|
7810
|
-
"
|
|
7811
|
-
|
|
7812
|
-
|
|
7813
|
-
|
|
7814
|
-
|
|
7815
|
-
|
|
7816
|
-
|
|
7817
|
-
|
|
7818
|
-
|
|
7819
|
-
|
|
7820
|
-
|
|
7821
|
-
|
|
7822
|
-
|
|
7823
|
-
|
|
7824
|
-
|
|
7825
|
-
|
|
7826
|
-
|
|
7827
|
-
|
|
7828
|
-
|
|
7829
|
-
|
|
7830
|
-
|
|
7831
|
-
|
|
7832
|
-
|
|
7833
|
-
|
|
7834
|
-
{
|
|
7835
|
-
|
|
7836
|
-
|
|
7837
|
-
|
|
7838
|
-
|
|
7839
|
-
|
|
7840
|
-
|
|
7841
|
-
|
|
7842
|
-
|
|
7843
|
-
|
|
7844
|
-
|
|
7845
|
-
|
|
7846
|
-
|
|
7847
|
-
|
|
7848
|
-
|
|
7849
|
-
|
|
7850
|
-
|
|
7851
|
-
|
|
7852
|
-
|
|
7853
|
-
|
|
8561
|
+
children: [
|
|
8562
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8563
|
+
"div",
|
|
8564
|
+
{
|
|
8565
|
+
className: "flex h-full flex-row",
|
|
8566
|
+
style: {
|
|
8567
|
+
width: bodyWidth,
|
|
8568
|
+
transform: folded ? "translateX(-100%)" : "none",
|
|
8569
|
+
visibility: folded ? "hidden" : "visible",
|
|
8570
|
+
transition: `transform ${GNB_FOLD_MS}ms ease-out, ${hideAfterSlide(folded)}`
|
|
8571
|
+
},
|
|
8572
|
+
children: [
|
|
8573
|
+
useRail && // 레일 컬럼 — 스크롤되는 아이템 목록(nav)을 가운데 두고 위아래에 고정 슬롯(top/footer)을 붙인다.
|
|
8574
|
+
// 두 슬롯은 내비게이션이 아니므로 nav(landmark) 밖에 두고, 컬럼 폭·구분선·배경은 이 래퍼가
|
|
8575
|
+
// 전체 높이에 걸쳐 책임진다(그래야 슬롯 자리까지 배경·오른쪽 선이 이어진다).
|
|
8576
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8577
|
+
"div",
|
|
8578
|
+
{
|
|
8579
|
+
className: "flex shrink-0 flex-col overflow-hidden",
|
|
8580
|
+
style: {
|
|
8581
|
+
width: GNB_RAIL_WIDTH,
|
|
8582
|
+
borderRight: `1px solid ${C.topBorder}`,
|
|
8583
|
+
backgroundColor: C.panelBg
|
|
8584
|
+
},
|
|
8585
|
+
children: [
|
|
8586
|
+
railTop && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: railTop }),
|
|
8587
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8588
|
+
"nav",
|
|
8589
|
+
{
|
|
8590
|
+
"aria-label": `${ariaLabel} rail`,
|
|
8591
|
+
className: cn(
|
|
8592
|
+
"flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto",
|
|
8593
|
+
SCROLLBAR_HIDDEN_CLASS
|
|
8594
|
+
),
|
|
8595
|
+
style: { padding: GNB_RAIL.padding },
|
|
8596
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "m-0 flex list-none flex-col p-0", style: { gap: GNB_RAIL.gap }, children: railItems.map(renderRailItem) })
|
|
8597
|
+
}
|
|
8598
|
+
),
|
|
8599
|
+
railFooter && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: railFooter })
|
|
8600
|
+
]
|
|
8601
|
+
}
|
|
8602
|
+
),
|
|
8603
|
+
showMenu && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8604
|
+
"div",
|
|
8605
|
+
{
|
|
8606
|
+
className: "flex shrink-0 flex-col overflow-hidden",
|
|
8607
|
+
style: {
|
|
8608
|
+
width: menuWidth,
|
|
8609
|
+
backgroundColor: C.panelBg,
|
|
8610
|
+
// full 은 루트가 오른쪽 선을 못 그리므로(전폭이거나 아예 없다) 메뉴 오른쪽(페이지 경계)이 대신 그린다.
|
|
8611
|
+
borderRight: isFull ? rightBorder : void 0
|
|
8612
|
+
},
|
|
8613
|
+
children: [
|
|
8614
|
+
menuTop && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: menuTop }),
|
|
8615
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8616
|
+
"nav",
|
|
8617
|
+
{
|
|
8618
|
+
"aria-label": ariaLabel,
|
|
8619
|
+
className: cn(
|
|
8620
|
+
"flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto",
|
|
8621
|
+
SCROLLBAR_HIDDEN_CLASS
|
|
8622
|
+
),
|
|
8623
|
+
style: {
|
|
8624
|
+
paddingTop: M.bodyPaddingY,
|
|
8625
|
+
paddingBottom: M.bodyPaddingY
|
|
8626
|
+
},
|
|
8627
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "m-0 flex list-none flex-col p-0", children: menuItems.map((item) => renderItem(item, 1)) })
|
|
8628
|
+
}
|
|
8629
|
+
),
|
|
8630
|
+
menuFooter && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: menuFooter })
|
|
8631
|
+
]
|
|
8632
|
+
}
|
|
8633
|
+
)
|
|
8634
|
+
]
|
|
8635
|
+
}
|
|
8636
|
+
),
|
|
8637
|
+
header === "full" && menuResizeHandle
|
|
8638
|
+
]
|
|
7854
8639
|
}
|
|
7855
8640
|
),
|
|
8641
|
+
header === "fix" && menuResizeHandle,
|
|
8642
|
+
/* @__PURE__ */ jsxRuntime.jsxs(RPopover2__namespace.Root, { open: labelTip !== null, onOpenChange: (open) => !open && setLabelTip(null), children: [
|
|
8643
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover2__namespace.Anchor, { virtualRef: labelTipAnchorRef }),
|
|
8644
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover2__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8645
|
+
RPopover2__namespace.Content,
|
|
8646
|
+
{
|
|
8647
|
+
side: "right",
|
|
8648
|
+
sideOffset: 4,
|
|
8649
|
+
className: cn("z-50", FLOATING_SLIDE_ANIM),
|
|
8650
|
+
"aria-hidden": true,
|
|
8651
|
+
onOpenAutoFocus: (event) => event.preventDefault(),
|
|
8652
|
+
onMouseEnter: cancelLabelTipHide,
|
|
8653
|
+
onMouseLeave: startLabelTipHide,
|
|
8654
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(STag, { shape: "square", size: "xs", color: "grey", label: labelTip?.label ?? "" })
|
|
8655
|
+
}
|
|
8656
|
+
) })
|
|
8657
|
+
] }),
|
|
7856
8658
|
railFolded && foldedFooter && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center justify-center mb-[24px]", children: foldedFooter })
|
|
7857
8659
|
]
|
|
7858
8660
|
}
|
|
@@ -8962,7 +9764,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
8962
9764
|
}, [value]);
|
|
8963
9765
|
const selectedRef = react.useRef(selected);
|
|
8964
9766
|
selectedRef.current = selected;
|
|
8965
|
-
const
|
|
9767
|
+
const emit3 = (next) => {
|
|
8966
9768
|
if (!onValueChange) return;
|
|
8967
9769
|
const mapped = next.map(
|
|
8968
9770
|
(v) => emitValue ? rawByValue.get(v) ?? v : optionByValue.get(v) ?? { value: v, label: v }
|
|
@@ -9066,14 +9868,14 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
9066
9868
|
const handleSelect = (nextValue) => {
|
|
9067
9869
|
if (multi) {
|
|
9068
9870
|
const next = selected.includes(nextValue) ? selected.filter((v) => v !== nextValue) : [...selected, nextValue];
|
|
9069
|
-
|
|
9871
|
+
emit3(next);
|
|
9070
9872
|
return;
|
|
9071
9873
|
}
|
|
9072
|
-
|
|
9874
|
+
emit3([nextValue]);
|
|
9073
9875
|
commitOpen(false, [nextValue]);
|
|
9074
9876
|
};
|
|
9075
9877
|
const handleSelectAll = () => {
|
|
9076
|
-
|
|
9878
|
+
emit3(allSelected ? [] : allValues);
|
|
9077
9879
|
};
|
|
9078
9880
|
const handleToggleGroup = (leafValues) => {
|
|
9079
9881
|
if (leafValues.length === 0) return;
|
|
@@ -9081,9 +9883,9 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
9081
9883
|
const allSelectedInGroup = leafValues.every((v) => selectedSet.has(v));
|
|
9082
9884
|
if (allSelectedInGroup) {
|
|
9083
9885
|
const remove = new Set(leafValues);
|
|
9084
|
-
|
|
9886
|
+
emit3(selected.filter((v) => !remove.has(v)));
|
|
9085
9887
|
} else {
|
|
9086
|
-
|
|
9888
|
+
emit3([...selected, ...leafValues.filter((v) => !selectedSet.has(v))]);
|
|
9087
9889
|
}
|
|
9088
9890
|
};
|
|
9089
9891
|
react.useEffect(() => {
|
|
@@ -10160,6 +10962,9 @@ var STableBar = /* @__PURE__ */ react.forwardRef(function STableBar2({ total, se
|
|
|
10160
10962
|
}
|
|
10161
10963
|
);
|
|
10162
10964
|
});
|
|
10965
|
+
|
|
10966
|
+
// src/lib/autofill.ts
|
|
10967
|
+
var AUTOFILL_RESET_CLASS = "autofill:[-webkit-text-fill-color:currentColor] autofill:[box-shadow:0_0_0_1000px_var(--sys-color-field-bg-default)_inset] autofill:[transition:background-color_5000s_ease-in-out_0s] [&:-webkit-autofill]:[-webkit-text-fill-color:currentColor] [&:-webkit-autofill]:[box-shadow:0_0_0_1000px_var(--sys-color-field-bg-default)_inset] [&:-webkit-autofill]:[transition:background-color_5000s_ease-in-out_0s]";
|
|
10163
10968
|
var FONT = {
|
|
10164
10969
|
sm: { fontSize: 12, lineHeight: 20, paddingX: "var(--cmp-textinput-sm-paddingX)" },
|
|
10165
10970
|
md: { fontSize: 14, lineHeight: 24, paddingX: "var(--cmp-textinput-md-paddingX)" }
|
|
@@ -10274,6 +11079,7 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
10274
11079
|
},
|
|
10275
11080
|
className: cn(
|
|
10276
11081
|
"h-full min-w-0 flex-1 border-0 bg-transparent p-0 outline-none placeholder:text-[color:var(--sys-color-field-text-placeholder)] disabled:cursor-not-allowed",
|
|
11082
|
+
AUTOFILL_RESET_CLASS,
|
|
10277
11083
|
inputClass
|
|
10278
11084
|
),
|
|
10279
11085
|
style: {
|
|
@@ -10312,7 +11118,7 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
10312
11118
|
}
|
|
10313
11119
|
);
|
|
10314
11120
|
});
|
|
10315
|
-
var
|
|
11121
|
+
var PAD2 = { fontSize: 12, paddingX: 12, paddingY: 4 };
|
|
10316
11122
|
var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
10317
11123
|
value,
|
|
10318
11124
|
onValueChange,
|
|
@@ -10344,7 +11150,7 @@ var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
|
10344
11150
|
style,
|
|
10345
11151
|
...rest
|
|
10346
11152
|
}, ref) {
|
|
10347
|
-
const p =
|
|
11153
|
+
const p = PAD2;
|
|
10348
11154
|
const [ruleError, setRuleError] = react.useState("");
|
|
10349
11155
|
useFormField({
|
|
10350
11156
|
name: rest.name,
|
|
@@ -10401,6 +11207,7 @@ var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
|
10401
11207
|
},
|
|
10402
11208
|
className: cn(
|
|
10403
11209
|
"w-full resize-y border-0 bg-transparent outline-none placeholder:text-[color:var(--sys-color-field-text-placeholder)] disabled:cursor-not-allowed",
|
|
11210
|
+
AUTOFILL_RESET_CLASS,
|
|
10404
11211
|
textareaClass
|
|
10405
11212
|
),
|
|
10406
11213
|
style: {
|
|
@@ -10417,7 +11224,7 @@ var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
|
10417
11224
|
}
|
|
10418
11225
|
);
|
|
10419
11226
|
});
|
|
10420
|
-
var
|
|
11227
|
+
var PAD3 = {
|
|
10421
11228
|
sm: { fontSize: 12, lineHeight: 20, stepper: 20, icon: 12 },
|
|
10422
11229
|
md: { fontSize: 14, lineHeight: 24, stepper: 24, icon: 14 }
|
|
10423
11230
|
};
|
|
@@ -10509,7 +11316,7 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
10509
11316
|
className,
|
|
10510
11317
|
style
|
|
10511
11318
|
}, ref) {
|
|
10512
|
-
const p =
|
|
11319
|
+
const p = PAD3[size];
|
|
10513
11320
|
const padX = `var(--cmp-numberInput-${size}-paddingX)`;
|
|
10514
11321
|
const decimalLimit = getDecimalLimit(useDecimal, maxDecimalLength);
|
|
10515
11322
|
const numValue = applyDecimalLimit(toNumber(value), decimalLimit);
|
|
@@ -10553,7 +11360,7 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
10553
11360
|
target.value = display;
|
|
10554
11361
|
restoreCaret(display, Math.min(logicalCaret, display.replace(/,/g, "").length));
|
|
10555
11362
|
};
|
|
10556
|
-
const
|
|
11363
|
+
const emit3 = (n, logicalCaret) => {
|
|
10557
11364
|
const next = applyDecimalLimit(n, decimalLimit);
|
|
10558
11365
|
const nextDisplay = formatWithCommas(next);
|
|
10559
11366
|
setDisplayWithCaret(nextDisplay, logicalCaret);
|
|
@@ -10565,13 +11372,13 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
10565
11372
|
if (incDisabled) return;
|
|
10566
11373
|
const cur = numValue ?? (min === Number.NEGATIVE_INFINITY ? 0 : min);
|
|
10567
11374
|
const next = applyDecimalLimit(Math.min(cur + step, max), decimalLimit);
|
|
10568
|
-
if (next !== cur)
|
|
11375
|
+
if (next !== cur) emit3(next);
|
|
10569
11376
|
};
|
|
10570
11377
|
const decrement = () => {
|
|
10571
11378
|
if (decDisabled) return;
|
|
10572
11379
|
const cur = numValue ?? (min === Number.NEGATIVE_INFINITY ? 0 : min);
|
|
10573
11380
|
const next = applyDecimalLimit(Math.max(cur - step, min), decimalLimit);
|
|
10574
|
-
if (next !== cur)
|
|
11381
|
+
if (next !== cur) emit3(next);
|
|
10575
11382
|
};
|
|
10576
11383
|
const handleInput = (event) => {
|
|
10577
11384
|
const target = event.currentTarget;
|
|
@@ -10714,7 +11521,7 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
10714
11521
|
const cleaned = display.replace(/,/g, "");
|
|
10715
11522
|
const n = toNumber(cleaned);
|
|
10716
11523
|
const clamped = n === null ? null : Math.min(Math.max(n, min), max);
|
|
10717
|
-
if (clamped !== n)
|
|
11524
|
+
if (clamped !== n) emit3(clamped);
|
|
10718
11525
|
else setDisplay(n === null ? "" : formatInputWithCommas(cleaned));
|
|
10719
11526
|
if (rules && rules.length > 0) setRuleError(runRules(clamped, rules));
|
|
10720
11527
|
onBlur?.(e);
|
|
@@ -10723,6 +11530,7 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
10723
11530
|
// h-full 대신 라인박스 높이 그대로 두어 prefix/suffix 와 동일하게 flex 로 수직 센터링
|
|
10724
11531
|
// (h-full 이면 input 내부 텍스트 센터링을 브라우저가 수행해 1px 어긋날 수 있음)
|
|
10725
11532
|
"min-w-0 flex-1 border-0 bg-transparent p-0 outline-none placeholder:text-[color:var(--cmp-numberInput-text-placeholder)] disabled:cursor-not-allowed",
|
|
11533
|
+
AUTOFILL_RESET_CLASS,
|
|
10726
11534
|
inputClass
|
|
10727
11535
|
),
|
|
10728
11536
|
style: {
|
|
@@ -11323,7 +12131,7 @@ function RangeCalendar({
|
|
|
11323
12131
|
const inRange = (d) => !!(rStart && rEnd && d > rStart && d < rEnd);
|
|
11324
12132
|
const RANGE_BG = "var(--cmp-datepicker-calendar-range-bg)";
|
|
11325
12133
|
const pad = (v) => String(Number(v) || 0).padStart(2, "0");
|
|
11326
|
-
const
|
|
12134
|
+
const emit3 = (dateStart, dateEnd, time) => {
|
|
11327
12135
|
const t = time ?? { sH, sM, eH, eM };
|
|
11328
12136
|
const range = useTimePicker ? [`${dateStart} ${pad(t.sH)}:${pad(t.sM)}`, `${dateEnd} ${pad(t.eH)}:${pad(t.eM)}`] : [dateStart, dateEnd];
|
|
11329
12137
|
lastEmitted.current = JSON.stringify(range);
|
|
@@ -11346,7 +12154,7 @@ function RangeCalendar({
|
|
|
11346
12154
|
}
|
|
11347
12155
|
setEnd(d);
|
|
11348
12156
|
onPendingStartChange?.(null);
|
|
11349
|
-
|
|
12157
|
+
emit3(start, d, useTimePicker ? { sH, sM, eH: "23", eM: "59" } : void 0);
|
|
11350
12158
|
};
|
|
11351
12159
|
const changeTime = (which, part, raw) => {
|
|
11352
12160
|
const digits = raw.replace(/\D/g, "").slice(0, 2);
|
|
@@ -11359,7 +12167,7 @@ function RangeCalendar({
|
|
|
11359
12167
|
setSM(nextTime.sM);
|
|
11360
12168
|
setEH(nextTime.eH);
|
|
11361
12169
|
setEM(nextTime.eM);
|
|
11362
|
-
if (start && end)
|
|
12170
|
+
if (start && end) emit3(start, end, nextTime);
|
|
11363
12171
|
};
|
|
11364
12172
|
const blurTime = (which, part) => {
|
|
11365
12173
|
if (which === "start") {
|
|
@@ -12086,7 +12894,7 @@ function SKeyValueTable({
|
|
|
12086
12894
|
style
|
|
12087
12895
|
}) {
|
|
12088
12896
|
if (fields.length === 0) return null;
|
|
12089
|
-
const
|
|
12897
|
+
const emit3 = (name, value) => onChange?.({
|
|
12090
12898
|
name,
|
|
12091
12899
|
value,
|
|
12092
12900
|
values: { ...values, [name]: value }
|
|
@@ -12097,7 +12905,7 @@ function SKeyValueTable({
|
|
|
12097
12905
|
if (f.render) return f.render;
|
|
12098
12906
|
const opt = { ...f.options ?? {} };
|
|
12099
12907
|
if (Object.prototype.hasOwnProperty.call(values, f.name)) opt.value = values[f.name];
|
|
12100
|
-
const up = (v) =>
|
|
12908
|
+
const up = (v) => emit3(f.name, v);
|
|
12101
12909
|
switch (f.type) {
|
|
12102
12910
|
case "input":
|
|
12103
12911
|
return /* @__PURE__ */ jsxRuntime.jsx(SInput, { width: "100%", ...opt, onValueChange: up });
|
|
@@ -12186,7 +12994,7 @@ function SKeyValueTable({
|
|
|
12186
12994
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full w-full items-center justify-between gap-[var(--cmp-table-header-gap)]", children: [
|
|
12187
12995
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-[8px]", children: [
|
|
12188
12996
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] font-bold leading-[20px] text-[color:var(--sys-color-fg-primary)]", children: f.label }),
|
|
12189
|
-
f.required && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "
|
|
12997
|
+
f.required && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "asterisk", size: 12, color: "var(--sys-color-fg-accent)" })
|
|
12190
12998
|
] }),
|
|
12191
12999
|
f.helpText && f.helpText.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12192
13000
|
STooltip2,
|
|
@@ -12951,6 +13759,7 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
12951
13759
|
size: 1,
|
|
12952
13760
|
className: cn(
|
|
12953
13761
|
"s-chip-input__input col-start-1 row-start-1 w-full border-0 bg-transparent p-0 font-normal text-(--cmp-chip-content-focus) outline-none placeholder:text-(--cmp-chipInput-text-placeholder) disabled:cursor-not-allowed",
|
|
13762
|
+
AUTOFILL_RESET_CLASS,
|
|
12954
13763
|
size === "md" ? "text-14 leading-sd-24" : "text-12 leading-sd-20"
|
|
12955
13764
|
),
|
|
12956
13765
|
style: {
|
|
@@ -13243,6 +14052,7 @@ var SBarcodeInput = /* @__PURE__ */ react.forwardRef(
|
|
|
13243
14052
|
},
|
|
13244
14053
|
className: cn(
|
|
13245
14054
|
"h-full min-w-0 flex-1 border-0 bg-transparent p-0 outline-none placeholder:text-[color:var(--cmp-textinput-text-placeholder)] disabled:cursor-not-allowed",
|
|
14055
|
+
AUTOFILL_RESET_CLASS,
|
|
13246
14056
|
inputClass
|
|
13247
14057
|
),
|
|
13248
14058
|
style: {
|
|
@@ -14229,6 +15039,7 @@ exports.SLoadingContainer = SLoadingContainer;
|
|
|
14229
15039
|
exports.SLoadingModal = SLoadingModal;
|
|
14230
15040
|
exports.SLoadingViewport = SLoadingViewport;
|
|
14231
15041
|
exports.SModal = SModal;
|
|
15042
|
+
exports.SModalOutlet = SModalOutlet;
|
|
14232
15043
|
exports.SNumberInput = SNumberInput;
|
|
14233
15044
|
exports.SPage = SPage;
|
|
14234
15045
|
exports.SPagination = SPagination;
|
|
@@ -14238,9 +15049,11 @@ exports.SPortal = SPortal;
|
|
|
14238
15049
|
exports.SRadio = SRadio;
|
|
14239
15050
|
exports.SRadioButton = SRadioButton;
|
|
14240
15051
|
exports.SRadioGroup = SRadioGroup;
|
|
15052
|
+
exports.SSPLITTER_UNITS = SSPLITTER_UNITS;
|
|
14241
15053
|
exports.SScrollArea = SScrollArea;
|
|
14242
15054
|
exports.SSectionHeaderCard = SSectionHeaderCard2;
|
|
14243
15055
|
exports.SSelect = SSelect2;
|
|
15056
|
+
exports.SSplitter = SSplitter2;
|
|
14244
15057
|
exports.SStepper = SStepper;
|
|
14245
15058
|
exports.SSwitch = SSwitch;
|
|
14246
15059
|
exports.STEPPER_SIZES = STEPPER_SIZES;
|