sellmate-design-system-react 9.0.0-beta.46 → 9.0.0-beta.48
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 +17 -6
- package/README.md +13 -0
- package/dist/components/SChatAttachedFile/README.md +33 -0
- package/dist/components/SChatAttachedFile/SChatAttachedFile.d.ts +13 -0
- package/dist/components/SChatAttachedFile/chatAttachedFile.config.d.ts +23 -0
- package/dist/components/SChatAttachedFile/index.d.ts +2 -0
- package/dist/components/SChatFile/README.md +33 -0
- package/dist/components/SChatFile/SChatFile.d.ts +37 -0
- package/dist/components/SChatFile/chatFile.config.d.ts +56 -0
- package/dist/components/SChatFile/index.d.ts +2 -0
- package/dist/components/SChatMessage/README.md +4 -2
- package/dist/components/SChatMessage/SChatMessage.d.ts +19 -2
- package/dist/components/SChatSystemMessage/README.md +12 -0
- package/dist/components/SChatSystemMessage/SChatSystemMessage.d.ts +18 -0
- package/dist/components/SChatSystemMessage/index.d.ts +1 -0
- package/dist/components/SGhostButton/README.md +2 -0
- package/dist/components/SIcon/README.md +4 -0
- package/dist/components/SIcon/icons.gen.d.ts +3 -1
- package/dist/components/SSystemActionButton/README.md +20 -0
- package/dist/fonts/LICENSE.txt +94 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.0.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.1.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.10.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.11.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.12.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.13.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.14.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.15.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.16.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.17.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.18.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.19.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.2.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.20.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.21.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.22.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.23.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.24.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.25.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.26.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.27.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.28.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.29.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.3.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.30.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.31.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.32.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.33.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.34.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.35.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.36.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.37.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.38.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.39.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.4.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.40.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.41.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.42.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.43.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.44.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.45.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.46.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.47.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.48.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.49.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.5.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.50.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.51.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.52.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.53.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.54.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.55.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.56.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.57.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.58.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.59.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.6.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.60.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.61.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.62.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.63.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.64.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.65.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.66.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.67.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.68.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.69.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.7.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.70.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.71.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.72.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.73.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.74.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.75.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.76.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.77.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.78.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.79.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.8.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.80.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.81.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.82.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.83.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.84.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.85.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.86.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.87.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.88.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.89.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.9.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.90.woff2 +0 -0
- package/dist/fonts/woff2-dynamic-subset/PretendardVariable.subset.91.woff2 +0 -0
- package/dist/index.cjs +391 -104
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +384 -105
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +118 -9
- package/dist/llms.txt +20 -9
- package/dist/pretendard.css +937 -0
- package/dist/styles.css +1001 -25
- package/dist/theme.css +90 -5
- package/eslint/scale.gen.mjs +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -559,6 +559,27 @@ var Icon_attachFile = (p) => {
|
|
|
559
559
|
}
|
|
560
560
|
);
|
|
561
561
|
};
|
|
562
|
+
var Icon_back = (p) => {
|
|
563
|
+
const { size = 24, ...rest } = p;
|
|
564
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
565
|
+
"svg",
|
|
566
|
+
{
|
|
567
|
+
width: size,
|
|
568
|
+
height: size,
|
|
569
|
+
viewBox: "0 0 24 24",
|
|
570
|
+
fill: "none",
|
|
571
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
572
|
+
...rest,
|
|
573
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
574
|
+
"path",
|
|
575
|
+
{
|
|
576
|
+
d: "M7.82001 2.38596C8.15933 2.14859 8.62646 2.23126 8.86395 2.57053C9.10129 2.90984 9.01864 3.37699 8.67938 3.61447L5.6286 5.75021H14.7497C18.6157 5.75021 21.7497 8.88422 21.7497 12.7502C21.7495 16.6161 18.6156 19.7502 14.7497 19.7502H4.9997C4.58572 19.75 4.24984 19.4142 4.2497 19.0002C4.2497 18.5861 4.58563 18.2504 4.9997 18.2502H14.7497C17.7872 18.2502 20.2495 15.7877 20.2497 12.7502C20.2497 9.71265 17.7873 7.25021 14.7497 7.25021H5.6286L8.67938 9.38596C9.01865 9.62345 9.10132 10.0906 8.86395 10.4299C8.62639 10.7689 8.15922 10.8518 7.82001 10.6145L3.98993 7.93381C2.99491 7.23718 2.99509 5.76338 3.98993 5.06662L7.82001 2.38596Z",
|
|
577
|
+
fill: "currentColor"
|
|
578
|
+
}
|
|
579
|
+
)
|
|
580
|
+
}
|
|
581
|
+
);
|
|
582
|
+
};
|
|
562
583
|
var Icon_barcode = (p) => {
|
|
563
584
|
const { size = 24, ...rest } = p;
|
|
564
585
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1347,6 +1368,29 @@ var Icon_copy = (p) => {
|
|
|
1347
1368
|
}
|
|
1348
1369
|
);
|
|
1349
1370
|
};
|
|
1371
|
+
var Icon_counsel = (p) => {
|
|
1372
|
+
const { size = 24, ...rest } = p;
|
|
1373
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1374
|
+
"svg",
|
|
1375
|
+
{
|
|
1376
|
+
width: size,
|
|
1377
|
+
height: size,
|
|
1378
|
+
viewBox: "0 0 24 24",
|
|
1379
|
+
fill: "none",
|
|
1380
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1381
|
+
...rest,
|
|
1382
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1383
|
+
"path",
|
|
1384
|
+
{
|
|
1385
|
+
fillRule: "evenodd",
|
|
1386
|
+
clipRule: "evenodd",
|
|
1387
|
+
d: "M12 1.75C17.3848 1.75 21.75 6.11522 21.75 11.5V16C21.75 19.1756 19.1756 21.75 16 21.75H12.5C12.0858 21.75 11.75 21.4142 11.75 21C11.75 20.5858 12.0858 20.25 12.5 20.25H16C17.3042 20.25 18.4694 19.6611 19.249 18.7363C19.1669 18.7437 19.084 18.75 19 18.75H18C16.4812 18.75 15.25 17.5188 15.25 16V13C15.25 11.4812 16.4812 10.25 18 10.25H19C19.4269 10.25 19.8299 10.3498 20.1904 10.5234C19.7072 6.4275 16.2258 3.25 12 3.25C7.77412 3.25 4.29172 6.42744 3.80859 10.5234C4.16932 10.3496 4.57276 10.25 5 10.25H6C7.51878 10.25 8.75 11.4812 8.75 13V16C8.75 17.5188 7.51878 18.75 6 18.75H5C3.48122 18.75 2.25 17.5188 2.25 16V11.5C2.25 6.11522 6.61522 1.75 12 1.75ZM5 11.75C4.30964 11.75 3.75 12.3096 3.75 13V16C3.75 16.6904 4.30964 17.25 5 17.25H6C6.69036 17.25 7.25 16.6904 7.25 16V13C7.25 12.3096 6.69036 11.75 6 11.75H5ZM18 11.75C17.3096 11.75 16.75 12.3096 16.75 13V16C16.75 16.6904 17.3096 17.25 18 17.25H19C19.6904 17.25 20.25 16.6904 20.25 16V13C20.25 12.3096 19.6904 11.75 19 11.75H18Z",
|
|
1388
|
+
fill: "currentColor"
|
|
1389
|
+
}
|
|
1390
|
+
)
|
|
1391
|
+
}
|
|
1392
|
+
);
|
|
1393
|
+
};
|
|
1350
1394
|
var Icon_coupon = (p) => {
|
|
1351
1395
|
const { size = 24, ...rest } = p;
|
|
1352
1396
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1471,52 +1515,6 @@ var Icon_date = (p) => {
|
|
|
1471
1515
|
}
|
|
1472
1516
|
);
|
|
1473
1517
|
};
|
|
1474
|
-
var Icon_delete = (p) => {
|
|
1475
|
-
const { size = 24, ...rest } = p;
|
|
1476
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1477
|
-
"svg",
|
|
1478
|
-
{
|
|
1479
|
-
width: size,
|
|
1480
|
-
height: size,
|
|
1481
|
-
viewBox: "0 0 24 24",
|
|
1482
|
-
fill: "none",
|
|
1483
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1484
|
-
...rest,
|
|
1485
|
-
children: [
|
|
1486
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1487
|
-
"path",
|
|
1488
|
-
{
|
|
1489
|
-
d: "M8.35254 10.7646C8.75858 10.6834 9.15395 10.9466 9.23535 11.3525L10.2354 16.3525C10.3166 16.7586 10.0534 17.1539 9.64746 17.2354C9.24142 17.3166 8.84605 17.0534 8.76465 16.6475L7.76465 11.6475C7.68344 11.2414 7.94658 10.8461 8.35254 10.7646Z",
|
|
1490
|
-
fill: "currentColor"
|
|
1491
|
-
}
|
|
1492
|
-
),
|
|
1493
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1494
|
-
"path",
|
|
1495
|
-
{
|
|
1496
|
-
d: "M12 10.75C12.4142 10.75 12.75 11.0858 12.75 11.5V16.5C12.75 16.9142 12.4142 17.25 12 17.25C11.5858 17.25 11.25 16.9142 11.25 16.5V11.5C11.25 11.0858 11.5858 10.75 12 10.75Z",
|
|
1497
|
-
fill: "currentColor"
|
|
1498
|
-
}
|
|
1499
|
-
),
|
|
1500
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1501
|
-
"path",
|
|
1502
|
-
{
|
|
1503
|
-
d: "M14.7646 11.3525C14.8461 10.9466 15.2414 10.6834 15.6475 10.7646C16.0534 10.8461 16.3166 11.2414 16.2354 11.6475L15.2354 16.6475C15.1539 17.0534 14.7586 17.3166 14.3525 17.2354C13.9466 17.1539 13.6834 16.7586 13.7646 16.3525L14.7646 11.3525Z",
|
|
1504
|
-
fill: "currentColor"
|
|
1505
|
-
}
|
|
1506
|
-
),
|
|
1507
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1508
|
-
"path",
|
|
1509
|
-
{
|
|
1510
|
-
fillRule: "evenodd",
|
|
1511
|
-
clipRule: "evenodd",
|
|
1512
|
-
d: "M13 2.0498C13.9664 2.0498 14.7499 2.8334 14.75 3.7998V4.25H20C20.4142 4.25 20.75 4.58579 20.75 5V8C20.75 8.41421 20.4142 8.75 20 8.75H19.6445L17.999 19.6123C17.7952 20.9565 16.6398 21.9502 15.2803 21.9502H8.71973C7.36018 21.9502 6.20481 20.9565 6.00098 19.6123L4.35547 8.75H4C3.58579 8.75 3.25 8.41421 3.25 8V5C3.25 4.58579 3.58579 4.25 4 4.25H8.75V3.7998C8.75011 2.8334 9.53357 2.0498 10.5 2.0498H13ZM7.48438 19.3877C7.57717 19.9985 8.10188 20.4502 8.71973 20.4502H15.2803C15.8981 20.4502 16.4228 19.9985 16.5156 19.3877L18.1279 8.75H5.87207L7.48438 19.3877ZM4.75 7.25H19.25V5.75H4.75V7.25ZM10.5 3.5498C10.362 3.5498 10.2501 3.66182 10.25 3.7998V4.25H13.25V3.7998C13.2499 3.66182 13.138 3.5498 13 3.5498H10.5Z",
|
|
1513
|
-
fill: "currentColor"
|
|
1514
|
-
}
|
|
1515
|
-
)
|
|
1516
|
-
]
|
|
1517
|
-
}
|
|
1518
|
-
);
|
|
1519
|
-
};
|
|
1520
1518
|
var Icon_dot = (p) => {
|
|
1521
1519
|
const { size = 24, ...rest } = p;
|
|
1522
1520
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1791,6 +1789,29 @@ var Icon_history = (p) => {
|
|
|
1791
1789
|
}
|
|
1792
1790
|
);
|
|
1793
1791
|
};
|
|
1792
|
+
var Icon_home = (p) => {
|
|
1793
|
+
const { size = 24, ...rest } = p;
|
|
1794
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1795
|
+
"svg",
|
|
1796
|
+
{
|
|
1797
|
+
width: size,
|
|
1798
|
+
height: size,
|
|
1799
|
+
viewBox: "0 0 24 24",
|
|
1800
|
+
fill: "none",
|
|
1801
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1802
|
+
...rest,
|
|
1803
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1804
|
+
"path",
|
|
1805
|
+
{
|
|
1806
|
+
fillRule: "evenodd",
|
|
1807
|
+
clipRule: "evenodd",
|
|
1808
|
+
d: "M10.8371 3.03041C11.5001 2.44103 12.5002 2.44103 13.1632 3.03041L21.4982 10.4396C21.8075 10.7148 21.8357 11.1887 21.5607 11.4982C21.2856 11.8075 20.8116 11.8355 20.5021 11.5607L19.7501 10.8917V20.0001C19.75 20.9664 18.9664 21.7501 18.0001 21.7501H16.5001C15.5338 21.7501 14.7503 20.9665 14.7501 20.0001V13.5001C14.7501 13.3621 14.6381 13.2502 14.5001 13.2501H9.50014C9.36207 13.2501 9.25014 13.3621 9.25014 13.5001V20.0001C9.24995 20.9664 8.46645 21.7501 7.50014 21.7501H6.00014C5.03376 21.7501 4.25033 20.9665 4.25014 20.0001V10.8917L3.49819 11.5607C3.18869 11.8356 2.71476 11.8074 2.43959 11.4982C2.16455 11.1886 2.19263 10.7148 2.50209 10.4396L10.8371 3.03041ZM12.1662 4.15151C12.0714 4.06731 11.9288 4.06731 11.8341 4.15151L5.75014 9.55873V20.0001C5.75033 20.1381 5.86219 20.2501 6.00014 20.2501H7.50014C7.63802 20.2501 7.74995 20.138 7.75014 20.0001V13.5001C7.75014 12.5336 8.53364 11.7501 9.50014 11.7501H14.5001C15.4666 11.7502 16.2501 12.5337 16.2501 13.5001V20.0001C16.2503 20.1381 16.3622 20.2501 16.5001 20.2501H18.0001C18.138 20.2501 18.25 20.138 18.2501 20.0001V9.55873L12.1662 4.15151Z",
|
|
1809
|
+
fill: "currentColor"
|
|
1810
|
+
}
|
|
1811
|
+
)
|
|
1812
|
+
}
|
|
1813
|
+
);
|
|
1814
|
+
};
|
|
1794
1815
|
var Icon_image = (p) => {
|
|
1795
1816
|
const { size = 24, ...rest } = p;
|
|
1796
1817
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3214,6 +3235,7 @@ var ICONS = {
|
|
|
3214
3235
|
arrowUp: Icon_arrowUp,
|
|
3215
3236
|
asterisk: Icon_asterisk,
|
|
3216
3237
|
attachFile: Icon_attachFile,
|
|
3238
|
+
back: Icon_back,
|
|
3217
3239
|
barcode: Icon_barcode,
|
|
3218
3240
|
bell: Icon_bell,
|
|
3219
3241
|
bellRinging: Icon_bellRinging,
|
|
@@ -3243,10 +3265,10 @@ var ICONS = {
|
|
|
3243
3265
|
close: Icon_close,
|
|
3244
3266
|
company: Icon_company,
|
|
3245
3267
|
copy: Icon_copy,
|
|
3268
|
+
counsel: Icon_counsel,
|
|
3246
3269
|
coupon: Icon_coupon,
|
|
3247
3270
|
dashboard: Icon_dashboard,
|
|
3248
3271
|
date: Icon_date,
|
|
3249
|
-
delete: Icon_delete,
|
|
3250
3272
|
dot: Icon_dot,
|
|
3251
3273
|
download: Icon_download,
|
|
3252
3274
|
drag: Icon_drag,
|
|
@@ -3257,6 +3279,7 @@ var ICONS = {
|
|
|
3257
3279
|
helpFill: Icon_helpFill,
|
|
3258
3280
|
helpOutline: Icon_helpOutline,
|
|
3259
3281
|
history: Icon_history,
|
|
3282
|
+
home: Icon_home,
|
|
3260
3283
|
image: Icon_image,
|
|
3261
3284
|
inline: Icon_inline,
|
|
3262
3285
|
launcher: Icon_launcher,
|
|
@@ -4658,10 +4681,9 @@ var STextarea = /* @__PURE__ */ react.forwardRef(function STextarea2({
|
|
|
4658
4681
|
);
|
|
4659
4682
|
});
|
|
4660
4683
|
var DEFAULT_PLACEHOLDER = "\uBA54\uC2DC\uC9C0\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694...";
|
|
4661
|
-
var FIELD_MIN_HEIGHT = 48;
|
|
4662
4684
|
var FIELD_BORDER = 1;
|
|
4663
|
-
var TEXTAREA_MIN_HEIGHT =
|
|
4664
|
-
var BUTTON_BOTTOM_INSET = `calc((
|
|
4685
|
+
var TEXTAREA_MIN_HEIGHT = `calc(var(--cmp-chatInput-buttonFrame-height) - ${FIELD_BORDER * 2}px)`;
|
|
4686
|
+
var BUTTON_BOTTOM_INSET = `calc((var(--cmp-chatInput-buttonFrame-height) - var(--cmp-ghostButton-md-size)) / 2)`;
|
|
4665
4687
|
var DEFAULT_MAX_ROWS = 5;
|
|
4666
4688
|
var SChatInputImpl = /* @__PURE__ */ react.forwardRef(function SChatInput({
|
|
4667
4689
|
value = "",
|
|
@@ -4690,8 +4712,8 @@ var SChatInputImpl = /* @__PURE__ */ react.forwardRef(function SChatInput({
|
|
|
4690
4712
|
e.preventDefault();
|
|
4691
4713
|
send();
|
|
4692
4714
|
};
|
|
4693
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col bg-(--
|
|
4694
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-
|
|
4715
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col bg-(--cmp-chatInput-bg)", className), style, children: [
|
|
4716
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-(--cmp-chatInput-gap) p-(--cmp-chatInput-padding)", children: [
|
|
4695
4717
|
onAttach != null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4696
4718
|
SGhostButton,
|
|
4697
4719
|
{
|
|
@@ -4751,12 +4773,183 @@ var SChatInputImpl = /* @__PURE__ */ react.forwardRef(function SChatInput({
|
|
|
4751
4773
|
] });
|
|
4752
4774
|
});
|
|
4753
4775
|
var SChatInput2 = /* @__PURE__ */ withDisplayName(SChatInputImpl, "SChatInput");
|
|
4776
|
+
|
|
4777
|
+
// src/components/SChatAttachedFile/chatAttachedFile.config.ts
|
|
4778
|
+
var CHAT_ATTACHED_FILE_CONFIG = {
|
|
4779
|
+
/** 바깥 상자 — 좌우·상하 여백·면·선·라운드 */
|
|
4780
|
+
box: "px-(--cmp-chatAttachedFile-paddingX) py-(--cmp-chatAttachedFile-paddingY) rounded-(--cmp-chatAttachedFile-radius) border-(length:--cmp-chatAttachedFile-border-width) border-(--cmp-chatAttachedFile-border-color) bg-(--cmp-chatAttachedFile-bg)",
|
|
4781
|
+
/** 콘텐츠 묶음 ↔ 제거 버튼 간격 */
|
|
4782
|
+
outerGap: "gap-(--cmp-chatAttachedFile-gap)",
|
|
4783
|
+
/** 아이콘 칩 ↔ 파일명 간격 */
|
|
4784
|
+
contentGap: "gap-(--cmp-chatAttachedFile-content-gap)",
|
|
4785
|
+
/** 클립 아이콘이 앉는 칩 — 내부 패딩·면·라운드 (높이는 아이콘+패딩이 정한다) */
|
|
4786
|
+
tile: "p-(--cmp-chatAttachedFile-icon-wrapper-padding) rounded-(--cmp-chatAttachedFile-icon-wrapper-radius) bg-(--cmp-chatAttachedFile-icon-wrapper-bg)",
|
|
4787
|
+
/** 칩 안 클립 아이콘 크기(px). SVG width/height 는 속성값이라 CSS 변수를 못 받아 값으로 둔다 (토큰 값과 동일) */
|
|
4788
|
+
iconSize: 16,
|
|
4789
|
+
/** 파일명 타이포 프리셋 */
|
|
4790
|
+
nameTypo: "typo-body-sm-default",
|
|
4791
|
+
/** 파일명 텍스트색 */
|
|
4792
|
+
textColor: "text-(--cmp-chatAttachedFile-filename-color)"
|
|
4793
|
+
};
|
|
4794
|
+
var SChatAttachedFileImpl = /* @__PURE__ */ react.forwardRef(
|
|
4795
|
+
function SChatAttachedFile({ name, onRemove, className, ...rest }, ref) {
|
|
4796
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4797
|
+
"div",
|
|
4798
|
+
{
|
|
4799
|
+
ref,
|
|
4800
|
+
className: cn(
|
|
4801
|
+
"inline-flex max-w-full items-center border-solid",
|
|
4802
|
+
CHAT_ATTACHED_FILE_CONFIG.box,
|
|
4803
|
+
CHAT_ATTACHED_FILE_CONFIG.outerGap,
|
|
4804
|
+
className
|
|
4805
|
+
),
|
|
4806
|
+
...rest,
|
|
4807
|
+
children: [
|
|
4808
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("flex min-w-0 items-center", CHAT_ATTACHED_FILE_CONFIG.contentGap), children: [
|
|
4809
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4810
|
+
"span",
|
|
4811
|
+
{
|
|
4812
|
+
className: cn(
|
|
4813
|
+
"inline-grid shrink-0 place-items-center text-(--sys-color-fg-accentLight)",
|
|
4814
|
+
CHAT_ATTACHED_FILE_CONFIG.tile
|
|
4815
|
+
),
|
|
4816
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "attachFile", color: "grey_65", size: CHAT_ATTACHED_FILE_CONFIG.iconSize })
|
|
4817
|
+
}
|
|
4818
|
+
),
|
|
4819
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4820
|
+
"span",
|
|
4821
|
+
{
|
|
4822
|
+
className: cn(
|
|
4823
|
+
"truncate",
|
|
4824
|
+
CHAT_ATTACHED_FILE_CONFIG.nameTypo,
|
|
4825
|
+
CHAT_ATTACHED_FILE_CONFIG.textColor
|
|
4826
|
+
),
|
|
4827
|
+
children: name
|
|
4828
|
+
}
|
|
4829
|
+
)
|
|
4830
|
+
] }),
|
|
4831
|
+
onRemove != null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4832
|
+
SGhostButton,
|
|
4833
|
+
{
|
|
4834
|
+
icon: "close",
|
|
4835
|
+
size: "xs",
|
|
4836
|
+
ariaLabel: `${name} \uC81C\uAC70`,
|
|
4837
|
+
onClick: onRemove,
|
|
4838
|
+
className: "shrink-0"
|
|
4839
|
+
}
|
|
4840
|
+
)
|
|
4841
|
+
]
|
|
4842
|
+
}
|
|
4843
|
+
);
|
|
4844
|
+
}
|
|
4845
|
+
);
|
|
4846
|
+
var SChatAttachedFile2 = /* @__PURE__ */ withDisplayName(SChatAttachedFileImpl, "SChatAttachedFile");
|
|
4847
|
+
|
|
4848
|
+
// src/components/SChatFile/chatFile.config.ts
|
|
4849
|
+
var CHAT_FILE_CONFIG = {
|
|
4850
|
+
/** 바깥 상자 — 좌우 비대칭 여백·상하 여백·면·선·라운드 */
|
|
4851
|
+
box: "pl-(--cmp-chatFile-paddingLeft) pr-(--cmp-chatFile-paddingRight) py-(--cmp-chatFile-paddingY) rounded-(--cmp-chatFile-radius) border-(length:--cmp-chatFile-border-width) border-(--cmp-chatFile-border-color) bg-(--cmp-chatFile-bg-default)",
|
|
4852
|
+
/** 아이콘 칩 ↔ 파일명 간격 */
|
|
4853
|
+
contentGap: "gap-(--cmp-chatFile-gap)",
|
|
4854
|
+
/**
|
|
4855
|
+
* 클립 아이콘이 앉는 칩 — 내부 패딩·면·라운드 (높이는 아이콘+패딩이 정한다).
|
|
4856
|
+
*
|
|
4857
|
+
* hover 면은 상자가 아니라 여기에도 걸린다 — 카드가 어두워질 때 칩은 반대로 밝아져
|
|
4858
|
+
* 칩이 배경에 묻히지 않는다. 상자의 hover 를 따라가야 하므로 group-hover 로 받는다.
|
|
4859
|
+
*
|
|
4860
|
+
* **`--sys-color-bg-frame` 은 임시다.** 시안의 hover 칩 색(`#FFFFFF`)에 대응하는
|
|
4861
|
+
* 컴포넌트 토큰이 없다 — `component.chatMessage.chatFile.icon.wrapper.bg` 는 값이 하나뿐이라
|
|
4862
|
+
* hover 를 담지 못한다. 상자의 `bg.default` 가 참조하는 것과 같은 시스템 토큰으로 대신 걸어 둔다.
|
|
4863
|
+
* 디자인팀에 `icon.wrapper.bg.hover` 를 요청해 나오는 대로 갈아끼운다.
|
|
4864
|
+
*/
|
|
4865
|
+
tile: "p-(--cmp-chatFile-icon-wrapper-padding) rounded-(--cmp-chatFile-icon-wrapper-radius) bg-(--cmp-chatFile-icon-wrapper-bg) group-hover/chat-file:bg-(--sys-color-bg-frame)",
|
|
4866
|
+
/** 칩 안 클립 아이콘 크기(px). SVG width/height 는 속성값이라 CSS 변수를 못 받아 값으로 둔다 (토큰 값과 동일) */
|
|
4867
|
+
iconSize: 20,
|
|
4868
|
+
/** 파일명 타이포 프리셋 */
|
|
4869
|
+
nameTypo: "typo-body-md-bold",
|
|
4870
|
+
/** 파일명·부가정보 텍스트색 */
|
|
4871
|
+
textColor: "text-(--cmp-chatFile-text-color)",
|
|
4872
|
+
/**
|
|
4873
|
+
* 눌리는 모양 — 커서·hover 면·포커스 링. 보낸 파일은 언제나 열 수 있으므로 늘 붙는다
|
|
4874
|
+
* (`onFileClick` 이 필수다).
|
|
4875
|
+
*
|
|
4876
|
+
* 상자의 여백·면·선과 따로 두는 이유: 이건 상호작용을 드러내는 값이라 성격이 다르다.
|
|
4877
|
+
* 링은 `SExpansionItem`·`SStepper` 와 같은 accent outline.
|
|
4878
|
+
*/
|
|
4879
|
+
interactive: "cursor-pointer hover:bg-(--cmp-chatFile-bg-hover) focus-visible:outline focus-visible:outline-2 focus-visible:outline-(--sys-color-border-accent)"
|
|
4880
|
+
};
|
|
4881
|
+
var SIZE_UNITS = ["B", "KB", "MB", "GB", "TB"];
|
|
4882
|
+
function formatFileSize(bytes) {
|
|
4883
|
+
if (!Number.isFinite(bytes) || bytes < 0) return "";
|
|
4884
|
+
let value = bytes;
|
|
4885
|
+
let unit = 0;
|
|
4886
|
+
while (value >= 1024 && unit < SIZE_UNITS.length - 1) {
|
|
4887
|
+
value /= 1024;
|
|
4888
|
+
unit += 1;
|
|
4889
|
+
}
|
|
4890
|
+
return unit === 0 ? `${Math.round(value)}${SIZE_UNITS[0]}` : `${value.toFixed(1)}${SIZE_UNITS[unit]}`;
|
|
4891
|
+
}
|
|
4892
|
+
function normalizeExtension(extension) {
|
|
4893
|
+
return extension.trim().replace(/^\.+/, "").toLowerCase();
|
|
4894
|
+
}
|
|
4895
|
+
function fileExtension(name) {
|
|
4896
|
+
const dot = name.lastIndexOf(".");
|
|
4897
|
+
return dot > 0 && dot < name.length - 1 ? name.slice(dot + 1).toLowerCase() : "";
|
|
4898
|
+
}
|
|
4899
|
+
var SChatFileImpl = /* @__PURE__ */ react.forwardRef(function SChatFile({ name, extension, size, onFileClick, className, ...rest }, ref) {
|
|
4900
|
+
const ext = extension != null ? normalizeExtension(extension) : fileExtension(name);
|
|
4901
|
+
const meta = [ext, size != null ? formatFileSize(size) : ""].filter(Boolean).join(" / ");
|
|
4902
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4903
|
+
"div",
|
|
4904
|
+
{
|
|
4905
|
+
ref,
|
|
4906
|
+
className: cn(
|
|
4907
|
+
// group/chat-file: 아이콘 칩이 상자의 hover 를 따라가야 해서 이름을 붙인다 (config.tile 참고)
|
|
4908
|
+
"group/chat-file inline-flex max-w-full items-center border-solid",
|
|
4909
|
+
CHAT_FILE_CONFIG.box,
|
|
4910
|
+
CHAT_FILE_CONFIG.contentGap,
|
|
4911
|
+
CHAT_FILE_CONFIG.interactive,
|
|
4912
|
+
className
|
|
4913
|
+
),
|
|
4914
|
+
...rest,
|
|
4915
|
+
role: "button",
|
|
4916
|
+
tabIndex: 0,
|
|
4917
|
+
onClick: (event) => {
|
|
4918
|
+
rest.onClick?.(event);
|
|
4919
|
+
onFileClick?.();
|
|
4920
|
+
},
|
|
4921
|
+
onKeyDown: (event) => {
|
|
4922
|
+
rest.onKeyDown?.(event);
|
|
4923
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
4924
|
+
event.preventDefault();
|
|
4925
|
+
onFileClick?.();
|
|
4926
|
+
},
|
|
4927
|
+
children: [
|
|
4928
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4929
|
+
"span",
|
|
4930
|
+
{
|
|
4931
|
+
className: cn(
|
|
4932
|
+
"inline-grid shrink-0 place-items-center text-(--sys-color-fg-accentLight)",
|
|
4933
|
+
CHAT_FILE_CONFIG.tile
|
|
4934
|
+
),
|
|
4935
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "attachFile", size: CHAT_FILE_CONFIG.iconSize })
|
|
4936
|
+
}
|
|
4937
|
+
),
|
|
4938
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-col", children: [
|
|
4939
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("truncate", CHAT_FILE_CONFIG.nameTypo, CHAT_FILE_CONFIG.textColor), children: name }),
|
|
4940
|
+
meta !== "" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("typo-body-xs-default truncate", CHAT_FILE_CONFIG.textColor), children: meta })
|
|
4941
|
+
] })
|
|
4942
|
+
]
|
|
4943
|
+
}
|
|
4944
|
+
);
|
|
4945
|
+
});
|
|
4946
|
+
var SChatFile2 = /* @__PURE__ */ withDisplayName(SChatFileImpl, "SChatFile");
|
|
4754
4947
|
var CHAT_MESSAGE_DIRECTIONS = ["incoming", "outgoing"];
|
|
4755
4948
|
var CHAT_MESSAGE_VARIANTS = ["default", "template"];
|
|
4756
4949
|
var BUBBLE_SURFACE = {
|
|
4757
|
-
incoming: "bg-(--
|
|
4758
|
-
outgoing: "bg-(--
|
|
4759
|
-
template: "bg-(--
|
|
4950
|
+
incoming: "bg-(--cmp-chatBubble-incoming-bg) text-(--cmp-chatBubble-incoming-content)",
|
|
4951
|
+
outgoing: "bg-(--cmp-chatBubble-outgoing-bg) text-(--cmp-chatBubble-outgoing-content)",
|
|
4952
|
+
template: "bg-(--cmp-chatBubble-templete-bg) text-(--cmp-chatBubble-templete-content)"
|
|
4760
4953
|
};
|
|
4761
4954
|
var CHAT_MESSAGE_READ_STATUSES = ["read", "unread"];
|
|
4762
4955
|
var READ_STATUS_LABEL = {
|
|
@@ -4764,8 +4957,8 @@ var READ_STATUS_LABEL = {
|
|
|
4764
4957
|
unread: "\uC548 \uC77D\uC74C"
|
|
4765
4958
|
};
|
|
4766
4959
|
var READ_STATUS_COLOR = {
|
|
4767
|
-
read: "text-(--
|
|
4768
|
-
unread: "text-(--
|
|
4960
|
+
read: "text-(--cmp-chatTimeStamp-color)",
|
|
4961
|
+
unread: "text-(--cmp-chatReadMark-color)"
|
|
4769
4962
|
};
|
|
4770
4963
|
var AVATAR_SIZE = 32;
|
|
4771
4964
|
var AVATAR_ROW_HEIGHT = 40;
|
|
@@ -4777,7 +4970,7 @@ function Avatar({ src, alt, placeholder }) {
|
|
|
4777
4970
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center", style: { height: AVATAR_ROW_HEIGHT }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4778
4971
|
"div",
|
|
4779
4972
|
{
|
|
4780
|
-
className: "relative overflow-hidden rounded-
|
|
4973
|
+
className: "relative overflow-hidden rounded-(--cmp-chatAvatar-radius) bg-(--cmp-chatAvatar-bg)",
|
|
4781
4974
|
style: { width: AVATAR_SIZE, height: AVATAR_SIZE },
|
|
4782
4975
|
children: src != null ? /* @__PURE__ */ jsxRuntime.jsx(SImage, { src, alt: alt ?? "", fit: "cover", className: "h-full w-full" }) : (
|
|
4783
4976
|
// 원 밖으로 나가는 만큼을 좌우로 나눠 가운데를 맞추고, 아래는 원이 자른다.
|
|
@@ -4786,7 +4979,7 @@ function Avatar({ src, alt, placeholder }) {
|
|
|
4786
4979
|
{
|
|
4787
4980
|
name: "user",
|
|
4788
4981
|
size: AVATAR_ICON_SIZE,
|
|
4789
|
-
color: "var(--
|
|
4982
|
+
color: "var(--cmp-chatAvatar-icon)",
|
|
4790
4983
|
className: "absolute top-0",
|
|
4791
4984
|
style: { left: (AVATAR_SIZE - AVATAR_ICON_SIZE) / 2 }
|
|
4792
4985
|
}
|
|
@@ -4806,12 +4999,14 @@ var SChatMessageImpl = /* @__PURE__ */ react.forwardRef(function SChatMessage({
|
|
|
4806
4999
|
variant = "default",
|
|
4807
5000
|
actions,
|
|
4808
5001
|
messages,
|
|
5002
|
+
attachments,
|
|
4809
5003
|
className,
|
|
4810
5004
|
...rest
|
|
4811
5005
|
}, ref) {
|
|
4812
5006
|
const outgoing = direction === "outgoing";
|
|
4813
|
-
const surface = variant === "template" ? "template" : direction;
|
|
5007
|
+
const surface = direction === "outgoing" && variant === "template" ? "template" : direction;
|
|
4814
5008
|
const bubbles = messages ?? [];
|
|
5009
|
+
const files = attachments ?? [];
|
|
4815
5010
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4816
5011
|
"div",
|
|
4817
5012
|
{
|
|
@@ -4819,50 +5014,112 @@ var SChatMessageImpl = /* @__PURE__ */ react.forwardRef(function SChatMessage({
|
|
|
4819
5014
|
className: cn(
|
|
4820
5015
|
// 아바타와 본문 열이 같은 줄에 서고, 보낸 메시지는 좌우를 뒤집는다.
|
|
4821
5016
|
// items-start 라 이름이 있든 없든 아바타는 언제나 첫 줄에 붙는다.
|
|
4822
|
-
"flex items-start gap-
|
|
5017
|
+
"flex items-start gap-(--cmp-chatMessage-avatarGap)",
|
|
4823
5018
|
outgoing && "flex-row-reverse",
|
|
4824
5019
|
className
|
|
4825
5020
|
),
|
|
4826
5021
|
...rest,
|
|
4827
5022
|
children: [
|
|
4828
5023
|
!outgoing && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src: avatarSrc, alt: avatarAlt, placeholder: continued }),
|
|
4829
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
5024
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5025
|
+
"div",
|
|
5026
|
+
{
|
|
5027
|
+
className: cn(
|
|
5028
|
+
"flex min-w-0 flex-col gap-(--cmp-chatMessage-contents-gap)",
|
|
5029
|
+
outgoing ? "items-end" : "items-start"
|
|
5030
|
+
),
|
|
5031
|
+
children: [
|
|
5032
|
+
!outgoing && !continued && sender != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-bold px-(--cmp-chatMessage-name-paddingX) text-(--cmp-chatMessage-name-color)", children: sender }),
|
|
5033
|
+
bubbles.length > 0 && // 말풍선끼리는 이름·시각과의 간격(4px)보다 벌려 한 덩어리 안의 여러 발화로 읽히게 한다.
|
|
5034
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4837
5035
|
"div",
|
|
4838
5036
|
{
|
|
4839
5037
|
className: cn(
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
// 한글은 기본 규칙으로 두면 어절 한가운데서도 줄이 바뀐다 — 띄어쓰기에서만 끊고,
|
|
4843
|
-
// 끊을 자리가 없는 긴 토큰(URL·주문번호)만 흘려보낸다.
|
|
4844
|
-
"break-keep wrap-break-word",
|
|
4845
|
-
BUBBLE_SURFACE[surface]
|
|
5038
|
+
"flex min-w-0 flex-col gap-(--cmp-chatMessage-group-bubble-gap)",
|
|
5039
|
+
outgoing ? "items-end" : "items-start"
|
|
4846
5040
|
),
|
|
4847
|
-
children: message
|
|
4848
|
-
|
|
4849
|
-
|
|
4850
|
-
|
|
4851
|
-
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
5041
|
+
children: bubbles.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5042
|
+
"div",
|
|
5043
|
+
{
|
|
5044
|
+
className: cn(
|
|
5045
|
+
"typo-body-md-medium max-w-full rounded-(--cmp-chatBubble-radius) px-(--cmp-chatBubble-paddingX) py-(--cmp-chatBubble-paddingY)",
|
|
5046
|
+
// 한글은 기본 규칙으로 두면 어절 한가운데서도 줄이 바뀐다 — 띄어쓰기에서만 끊고,
|
|
5047
|
+
// 끊을 자리가 없는 긴 토큰(URL·주문번호)만 흘려보낸다.
|
|
5048
|
+
"break-keep wrap-break-word",
|
|
5049
|
+
BUBBLE_SURFACE[surface]
|
|
5050
|
+
),
|
|
5051
|
+
children: message
|
|
5052
|
+
},
|
|
5053
|
+
index
|
|
5054
|
+
))
|
|
5055
|
+
}
|
|
5056
|
+
),
|
|
5057
|
+
files.length > 0 && // 파일 칸끼리는 말풍선과 같은 간격으로 벌린다 — 한 덩어리 안의 여러 발화로 읽힌다.
|
|
5058
|
+
// 말풍선과 달리 면으로 감싸지 않는다 (`attachments` 주석 참고).
|
|
5059
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5060
|
+
"div",
|
|
5061
|
+
{
|
|
5062
|
+
className: cn(
|
|
5063
|
+
"flex min-w-0 flex-col gap-(--cmp-chatMessage-group-bubble-gap)",
|
|
5064
|
+
outgoing ? "items-end" : "items-start"
|
|
5065
|
+
),
|
|
5066
|
+
children: files.map((file, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-full", children: file }, index))
|
|
5067
|
+
}
|
|
5068
|
+
),
|
|
5069
|
+
(readStatus != null || time != null) && // 읽음 표시와 시각은 한 줄에 선다 — 읽음이 먼저, 시각이 뒤다.
|
|
5070
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-(--cmp-chatMessage-subData-gap) px-(--cmp-chatMessage-subData-paddingX)", children: [
|
|
5071
|
+
readStatus != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("typo-body-sm-bold", READ_STATUS_COLOR[readStatus]), children: READ_STATUS_LABEL[readStatus] }),
|
|
5072
|
+
time != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-medium text-(--cmp-chatTimeStamp-color)", children: time })
|
|
5073
|
+
] }),
|
|
5074
|
+
actions != null && // 버튼이 많아 한 줄에 안 들어가면 감싼다 — 넘쳐서 잘리는 것보다 낫다.
|
|
5075
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5076
|
+
"div",
|
|
5077
|
+
{
|
|
5078
|
+
className: cn(
|
|
5079
|
+
"flex flex-wrap gap-sd-8 px-(--cmp-chatMessage-bottomButtons-paddingX)",
|
|
5080
|
+
outgoing && "justify-end"
|
|
5081
|
+
),
|
|
5082
|
+
children: actions
|
|
5083
|
+
}
|
|
5084
|
+
)
|
|
5085
|
+
]
|
|
5086
|
+
}
|
|
5087
|
+
)
|
|
4861
5088
|
]
|
|
4862
5089
|
}
|
|
4863
5090
|
);
|
|
4864
5091
|
});
|
|
4865
5092
|
var SChatMessage2 = /* @__PURE__ */ withDisplayName(SChatMessageImpl, "SChatMessage");
|
|
5093
|
+
var SChatSystemMessageImpl = /* @__PURE__ */ react.forwardRef(
|
|
5094
|
+
function SChatSystemMessage({ message, className, ...rest }, ref) {
|
|
5095
|
+
const notices = message ?? [];
|
|
5096
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("flex flex-col items-center gap-sd-8", className), ...rest, children: notices.map((notice, i) => (
|
|
5097
|
+
// 알약은 문구 길이만큼만 차지하고, 길면 줄바꿈해 여러 줄로 선다.
|
|
5098
|
+
// 안내는 HTML 문자열을 허용하되 sanitizeInlineHtml 로 살균 후 innerHTML 렌더 (XSS 방어)
|
|
5099
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5100
|
+
"span",
|
|
5101
|
+
{
|
|
5102
|
+
className: cn(
|
|
5103
|
+
// 라운드는 말풍선과 같은 토큰을 쓴다 — 여러 줄이 돼도 모서리가 상자 높이를 따라
|
|
5104
|
+
// 부풀지 않는다. 제 몫인 chatSystemMessage.radius 는 pill(9999px)이라 쓰지 않는다.
|
|
5105
|
+
// 두 줄부터 좌우가 커다란 반원이 되어 첫 글자가 안으로 밀리기 때문이다.
|
|
5106
|
+
"inline-flex max-w-full rounded-(--cmp-chatBubble-radius) border",
|
|
5107
|
+
"border-(--cmp-chatSystemMessage-border-color) bg-(--cmp-chatSystemMessage-bg)",
|
|
5108
|
+
"typo-body-sm-medium text-(--cmp-chatSystemMessage-color)",
|
|
5109
|
+
"px-(--cmp-chatSystemMessage-paddingX) py-(--cmp-chatSystemMessage-paddingY) text-center",
|
|
5110
|
+
// 한글은 기본 규칙으로 두면 어절 한가운데서도 줄이 바뀐다 — 띄어쓰기에서만 끊고,
|
|
5111
|
+
// 끊을 자리가 없는 긴 토큰(URL·주문번호)만 흘려보낸다 (SChatMessage 말풍선과 같은 규칙).
|
|
5112
|
+
// 가운데 정렬이라 마지막 줄에 한 단어만 남으면 특히 눈에 띄므로 text-pretty 로 줄을 고른다.
|
|
5113
|
+
"break-keep wrap-break-word text-pretty"
|
|
5114
|
+
),
|
|
5115
|
+
dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(notice) }
|
|
5116
|
+
},
|
|
5117
|
+
i
|
|
5118
|
+
)
|
|
5119
|
+
)) });
|
|
5120
|
+
}
|
|
5121
|
+
);
|
|
5122
|
+
var SChatSystemMessage2 = /* @__PURE__ */ withDisplayName(SChatSystemMessageImpl, "SChatSystemMessage");
|
|
4866
5123
|
|
|
4867
5124
|
// src/lib/z-index.ts
|
|
4868
5125
|
var Z_INDEX = {
|
|
@@ -5818,7 +6075,11 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
5818
6075
|
depth === 2 ? "pl-[36px]" : depth === 3 ? "pl-[56px]" : "pl-[16px]",
|
|
5819
6076
|
isExpanded && cn(
|
|
5820
6077
|
"text-(--cmp-listExpansionItem-title-text-expanded)",
|
|
5821
|
-
|
|
6078
|
+
// 펼침 배경(파랑)은 bordered 일 때만. 카드처럼 테두리로 경계가 잡힌
|
|
6079
|
+
// 아이템에서만 배경이 선택 상태를 나타낸다.
|
|
6080
|
+
// 테두리 없는 리스트에서는 accentStripe 가 그 역할을 하므로,
|
|
6081
|
+
// 배경까지 깔면 항목 경계가 없는 목록에서 선택 표시가 두 겹이 된다.
|
|
6082
|
+
isSelected && bordered && "bg-(--cmp-listExpansionItem-title-bg-expanded)"
|
|
5822
6083
|
)
|
|
5823
6084
|
),
|
|
5824
6085
|
children: [
|
|
@@ -6170,10 +6431,21 @@ function SCheckbox({
|
|
|
6170
6431
|
) })
|
|
6171
6432
|
}
|
|
6172
6433
|
),
|
|
6173
|
-
label && // 고스트(500) 텍스트로 너비를 고정 → 두께 400↔500 전환 시 레이아웃이 밀리지
|
|
6174
|
-
|
|
6175
|
-
|
|
6176
|
-
|
|
6434
|
+
label && // 고스트(500) 텍스트로 너비를 고정 → 두께 400↔500 전환 시 레이아웃이 밀리지 않음.
|
|
6435
|
+
// 한글은 기본 규칙으로 두면 어절 한가운데서도 줄이 바뀐다. 그러면 min-content 가 한 글자가
|
|
6436
|
+
// 되어, flex 아이템을 지켜 주는 min-width:auto 가 무력해지고 폭이 남는데도 라벨부터
|
|
6437
|
+
// 찌그러진다 — 띄어쓰기에서만 끊고, 끊을 자리가 없는 긴 토큰만 흘려보낸다
|
|
6438
|
+
// (SRadio·SSwitch 라벨과 같은 규칙). 두 사본에 함께 걸려야 하므로 바깥 grid 에 준다.
|
|
6439
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "grid break-keep wrap-break-word", style: { color: labelColor }, children: [
|
|
6440
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "typo-body-sm-medium invisible", style: { gridArea: "1 / 1" }, children: label }),
|
|
6441
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6442
|
+
"span",
|
|
6443
|
+
{
|
|
6444
|
+
className: isChecked ? "typo-body-sm-medium" : "typo-body-sm-default",
|
|
6445
|
+
style: { gridArea: "1 / 1" },
|
|
6446
|
+
children: label
|
|
6447
|
+
}
|
|
6448
|
+
)
|
|
6177
6449
|
] })
|
|
6178
6450
|
]
|
|
6179
6451
|
}
|
|
@@ -7627,7 +7899,7 @@ function SSwitch({
|
|
|
7627
7899
|
style
|
|
7628
7900
|
}) {
|
|
7629
7901
|
const right = rightLabel;
|
|
7630
|
-
const renderLabel = (text) => text ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "
|
|
7902
|
+
const renderLabel = (text) => text ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-medium break-keep wrap-break-word", children: text }) : null;
|
|
7631
7903
|
const trackBg = disabled ? value ? "var(--cmp-switch-bg-disabled-on)" : "var(--cmp-switch-bg-disabled-off)" : value ? "var(--cmp-switch-bg-on)" : "var(--cmp-switch-bg-off)";
|
|
7632
7904
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7633
7905
|
"label",
|
|
@@ -10636,11 +10908,15 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
10636
10908
|
...style
|
|
10637
10909
|
};
|
|
10638
10910
|
const hideAfterSlide = (hidden) => `visibility 0s linear ${hidden ? `${GNB_FOLD_MS}ms` : "0s"}`;
|
|
10639
|
-
const sideFoldStyle = {
|
|
10640
|
-
opacity:
|
|
10641
|
-
position:
|
|
10642
|
-
visibility:
|
|
10643
|
-
transition: `opacity ${GNB_FOLD_MS}ms ease-out, ${hideAfterSlide(
|
|
10911
|
+
const sideFoldStyle = railFolded ? {
|
|
10912
|
+
opacity: 0,
|
|
10913
|
+
position: "absolute",
|
|
10914
|
+
visibility: "hidden",
|
|
10915
|
+
transition: `opacity ${GNB_FOLD_MS}ms ease-out, ${hideAfterSlide(true)}`
|
|
10916
|
+
} : {
|
|
10917
|
+
opacity: 1,
|
|
10918
|
+
visibility: "visible",
|
|
10919
|
+
transition: `opacity ${GNB_FOLD_MS}ms ease-out, ${hideAfterSlide(false)}`
|
|
10644
10920
|
};
|
|
10645
10921
|
const launcherButton = onLauncherClick ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
10646
10922
|
SGhostButton,
|
|
@@ -11630,7 +11906,7 @@ var SPageHeader = /* @__PURE__ */ withDisplayName(
|
|
|
11630
11906
|
// plain 에는 전용 배경 토큰이 없어 시스템 흰 표면을 쓴다(토큰이 생기면 그것으로 갈아끼운다).
|
|
11631
11907
|
bar ? "h-(--cmp-pageHeader-bar-height) border-b border-(--cmp-pageHeader-bar-border) bg-(--cmp-pageHeader-bar-bg) py-(--cmp-pageHeader-bar-paddingY)" : cn(
|
|
11632
11908
|
// 스크롤되면 그림자를 더해 콘텐츠 위에 뜬 것처럼 보이게 한다.
|
|
11633
|
-
"bg-(--sys-color-bg-frame)
|
|
11909
|
+
"bg-(--sys-color-bg-frame) py-(--cmp-pageHeader-plain-paddingY)",
|
|
11634
11910
|
isScrolled && "shadow-floating"
|
|
11635
11911
|
),
|
|
11636
11912
|
className
|
|
@@ -11640,7 +11916,10 @@ var SPageHeader = /* @__PURE__ */ withDisplayName(
|
|
|
11640
11916
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11641
11917
|
"div",
|
|
11642
11918
|
{
|
|
11643
|
-
className:
|
|
11919
|
+
className: cn(
|
|
11920
|
+
"flex min-w-0 flex-1 gap-(--cmp-pageHeader-gap)",
|
|
11921
|
+
bar ? "items-center" : "items-start"
|
|
11922
|
+
),
|
|
11644
11923
|
style: rowStyle,
|
|
11645
11924
|
children: [
|
|
11646
11925
|
hasBack && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11650,7 +11929,7 @@ var SPageHeader = /* @__PURE__ */ withDisplayName(
|
|
|
11650
11929
|
size: "xs",
|
|
11651
11930
|
ariaLabel: "\uB4A4\uB85C\uAC00\uAE30",
|
|
11652
11931
|
onClick: onBack,
|
|
11653
|
-
className: "shrink-0"
|
|
11932
|
+
className: cn("shrink-0", bar ? "" : "mt-[3px]")
|
|
11654
11933
|
}
|
|
11655
11934
|
),
|
|
11656
11935
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -15783,7 +16062,7 @@ function SRadio({
|
|
|
15783
16062
|
label && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15784
16063
|
"span",
|
|
15785
16064
|
{
|
|
15786
|
-
className: "grid",
|
|
16065
|
+
className: "grid break-keep wrap-break-word",
|
|
15787
16066
|
style: {
|
|
15788
16067
|
color: disabled ? "var(--cmp-radio-label-disabled)" : "var(--cmp-radio-label-default)"
|
|
15789
16068
|
},
|
|
@@ -23420,6 +23699,8 @@ exports.CALENDAR_BOARD_DAY_COLORS = CALENDAR_BOARD_DAY_COLORS;
|
|
|
23420
23699
|
exports.CALENDAR_BOARD_EVENT_COLORS = CALENDAR_BOARD_EVENT_COLORS;
|
|
23421
23700
|
exports.CALENDAR_BOARD_EVENT_PRESETS = CALENDAR_BOARD_EVENT_PRESETS;
|
|
23422
23701
|
exports.CALENDAR_BOARD_MAX_VISIBLE_EVENTS = CALENDAR_BOARD_MAX_VISIBLE_EVENTS;
|
|
23702
|
+
exports.CHAT_ATTACHED_FILE_CONFIG = CHAT_ATTACHED_FILE_CONFIG;
|
|
23703
|
+
exports.CHAT_FILE_CONFIG = CHAT_FILE_CONFIG;
|
|
23423
23704
|
exports.CHAT_MESSAGE_DIRECTIONS = CHAT_MESSAGE_DIRECTIONS;
|
|
23424
23705
|
exports.CHAT_MESSAGE_READ_STATUSES = CHAT_MESSAGE_READ_STATUSES;
|
|
23425
23706
|
exports.CHAT_MESSAGE_VARIANTS = CHAT_MESSAGE_VARIANTS;
|
|
@@ -23456,8 +23737,11 @@ exports.SCalendar = SCalendar;
|
|
|
23456
23737
|
exports.SCalendarBoard = SCalendarBoard;
|
|
23457
23738
|
exports.SCallout = SCallout;
|
|
23458
23739
|
exports.SCard = SCard;
|
|
23740
|
+
exports.SChatAttachedFile = SChatAttachedFile2;
|
|
23741
|
+
exports.SChatFile = SChatFile2;
|
|
23459
23742
|
exports.SChatInput = SChatInput2;
|
|
23460
23743
|
exports.SChatMessage = SChatMessage2;
|
|
23744
|
+
exports.SChatSystemMessage = SChatSystemMessage2;
|
|
23461
23745
|
exports.SCheckbox = SCheckbox;
|
|
23462
23746
|
exports.SChip = SChip2;
|
|
23463
23747
|
exports.SChipFilter = SChipFilter;
|
|
@@ -23554,11 +23838,14 @@ exports.TIMEPICKER_SIZE_CONFIG = TIMEPICKER_SIZE_CONFIG;
|
|
|
23554
23838
|
exports.buttonPreset = buttonPreset;
|
|
23555
23839
|
exports.cn = cn;
|
|
23556
23840
|
exports.fieldWidthValue = fieldWidthValue;
|
|
23841
|
+
exports.fileExtension = fileExtension;
|
|
23557
23842
|
exports.findGnbAncestors = findGnbAncestors;
|
|
23558
23843
|
exports.findGnbRailValue = findGnbRailValue;
|
|
23844
|
+
exports.formatFileSize = formatFileSize;
|
|
23559
23845
|
exports.isColorKey = isColorKey;
|
|
23560
23846
|
exports.isFieldWidthGrade = isFieldWidthGrade;
|
|
23561
23847
|
exports.loading = loading;
|
|
23848
|
+
exports.normalizeExtension = normalizeExtension;
|
|
23562
23849
|
exports.resolveColor = resolveColor;
|
|
23563
23850
|
exports.useSLayout = useSLayout;
|
|
23564
23851
|
//# sourceMappingURL=index.cjs.map
|