sellmate-design-system-react 0.8.2 → 0.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/components/SBarcodeInput/SBarcodeInput.cjs +78 -2
  2. package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
  3. package/dist/components/SBarcodeInput/SBarcodeInput.js +78 -2
  4. package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
  5. package/dist/components/SCheckbox/SCheckbox.cjs +1 -1
  6. package/dist/components/SCheckbox/SCheckbox.cjs.map +1 -1
  7. package/dist/components/SCheckbox/SCheckbox.js +1 -1
  8. package/dist/components/SCheckbox/SCheckbox.js.map +1 -1
  9. package/dist/components/SChipInput/SChipInput.cjs +78 -2
  10. package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
  11. package/dist/components/SChipInput/SChipInput.js +78 -2
  12. package/dist/components/SChipInput/SChipInput.js.map +1 -1
  13. package/dist/components/SDatePicker/SDatePicker.cjs +78 -2
  14. package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
  15. package/dist/components/SDatePicker/SDatePicker.js +78 -2
  16. package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
  17. package/dist/components/SDateRangePicker/SDateRangePicker.cjs +78 -2
  18. package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
  19. package/dist/components/SDateRangePicker/SDateRangePicker.js +78 -2
  20. package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
  21. package/dist/components/SField/SField.cjs +78 -2
  22. package/dist/components/SField/SField.cjs.map +1 -1
  23. package/dist/components/SField/SField.js +78 -2
  24. package/dist/components/SField/SField.js.map +1 -1
  25. package/dist/components/SFilePicker/SFilePicker.cjs +78 -2
  26. package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
  27. package/dist/components/SFilePicker/SFilePicker.js +78 -2
  28. package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
  29. package/dist/components/SInput/SInput.cjs +78 -2
  30. package/dist/components/SInput/SInput.cjs.map +1 -1
  31. package/dist/components/SInput/SInput.js +78 -2
  32. package/dist/components/SInput/SInput.js.map +1 -1
  33. package/dist/components/SKeyValueTable/SKeyValueTable.cjs +229 -122
  34. package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
  35. package/dist/components/SKeyValueTable/SKeyValueTable.js +229 -122
  36. package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
  37. package/dist/components/SNumberInput/SNumberInput.cjs +78 -2
  38. package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
  39. package/dist/components/SNumberInput/SNumberInput.js +78 -2
  40. package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
  41. package/dist/components/SSelect/SSelect.cjs +159 -52
  42. package/dist/components/SSelect/SSelect.cjs.map +1 -1
  43. package/dist/components/SSelect/SSelect.js +159 -52
  44. package/dist/components/SSelect/SSelect.js.map +1 -1
  45. package/dist/components/SSelect/select.config.d.ts +7 -0
  46. package/dist/components/STable/STable.cjs +160 -53
  47. package/dist/components/STable/STable.cjs.map +1 -1
  48. package/dist/components/STable/STable.js +160 -53
  49. package/dist/components/STable/STable.js.map +1 -1
  50. package/dist/components/STextarea/STextarea.cjs +78 -2
  51. package/dist/components/STextarea/STextarea.cjs.map +1 -1
  52. package/dist/components/STextarea/STextarea.js +78 -2
  53. package/dist/components/STextarea/STextarea.js.map +1 -1
  54. package/dist/components/STimePicker/STimePicker.cjs +78 -2
  55. package/dist/components/STimePicker/STimePicker.cjs.map +1 -1
  56. package/dist/components/STimePicker/STimePicker.js +78 -2
  57. package/dist/components/STimePicker/STimePicker.js.map +1 -1
  58. package/dist/components/STimeRangePicker/STimeRangePicker.cjs +78 -2
  59. package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -1
  60. package/dist/components/STimeRangePicker/STimeRangePicker.js +78 -2
  61. package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -1
  62. package/dist/components/STooltip/STooltip.cjs +78 -2
  63. package/dist/components/STooltip/STooltip.cjs.map +1 -1
  64. package/dist/components/STooltip/STooltip.d.ts +1 -1
  65. package/dist/components/STooltip/STooltip.js +78 -2
  66. package/dist/components/STooltip/STooltip.js.map +1 -1
  67. package/dist/index.cjs +160 -53
  68. package/dist/index.cjs.map +1 -1
  69. package/dist/index.js +160 -53
  70. package/dist/index.js.map +1 -1
  71. package/dist/styles.css +4 -8
  72. package/package.json +1 -1
@@ -2900,6 +2900,75 @@ function usePortalContainer() {
2900
2900
  return react.useContext(PortalContainerContext) ?? void 0;
2901
2901
  }
2902
2902
 
2903
+ // src/lib/sanitize-inline-html.ts
2904
+ var ALLOWED_INLINE_TAGS = /* @__PURE__ */ new Set(["A", "B", "STRONG", "I", "EM", "BR", "SPAN"]);
2905
+ var ALLOWED_ATTRS_BY_TAG = {
2906
+ A: /* @__PURE__ */ new Set(["href", "target", "rel", "class"])
2907
+ };
2908
+ var COMMON_ALLOWED_ATTRS = /* @__PURE__ */ new Set(["class"]);
2909
+ var SAFE_HREF_RE = /^(https?:|mailto:|tel:|\/|#|\.)/i;
2910
+ var DROP_CONTENT_TAGS = /* @__PURE__ */ new Set([
2911
+ "SCRIPT",
2912
+ "STYLE",
2913
+ "IFRAME",
2914
+ "OBJECT",
2915
+ "EMBED",
2916
+ "META",
2917
+ "LINK",
2918
+ "BASE",
2919
+ "NOSCRIPT",
2920
+ // SVG/MATH 는 foreign-content 파싱 모드로 전환되어 재직렬화 시 다른 트리로
2921
+ // 재파싱될 수 있다(mXSS 벡터). 인라인 라벨에 필요 없으므로 통째로 제거한다.
2922
+ "SVG",
2923
+ "MATH",
2924
+ "TEMPLATE"
2925
+ ]);
2926
+ var escapeHtml = (value) => value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
2927
+ var sanitizeNode = (node) => {
2928
+ if (node.nodeType === Node.COMMENT_NODE) {
2929
+ node.remove();
2930
+ return;
2931
+ }
2932
+ if (node.nodeType !== Node.ELEMENT_NODE) return;
2933
+ const element = node;
2934
+ const tagName = element.tagName;
2935
+ if (DROP_CONTENT_TAGS.has(tagName)) {
2936
+ element.remove();
2937
+ return;
2938
+ }
2939
+ Array.from(element.childNodes).forEach((child) => sanitizeNode(child));
2940
+ if (ALLOWED_INLINE_TAGS.has(tagName)) {
2941
+ if (element.hasAttribute("className")) {
2942
+ const val = element.getAttribute("className");
2943
+ element.removeAttribute("className");
2944
+ if (!element.hasAttribute("class")) element.setAttribute("class", val);
2945
+ }
2946
+ const allowedAttrs = ALLOWED_ATTRS_BY_TAG[tagName] ?? COMMON_ALLOWED_ATTRS;
2947
+ Array.from(element.attributes).forEach((attr) => {
2948
+ if (!allowedAttrs.has(attr.name)) element.removeAttribute(attr.name);
2949
+ });
2950
+ if (tagName === "A") {
2951
+ const href = element.getAttribute("href");
2952
+ if (href !== null && href !== "" && !SAFE_HREF_RE.test(href)) element.removeAttribute("href");
2953
+ if (element.hasAttribute("target")) {
2954
+ element.setAttribute("rel", "noopener noreferrer");
2955
+ }
2956
+ }
2957
+ return;
2958
+ }
2959
+ const parent = element.parentNode;
2960
+ if (parent == null) return;
2961
+ while (element.firstChild) parent.insertBefore(element.firstChild, element);
2962
+ parent.removeChild(element);
2963
+ };
2964
+ var sanitizeInlineHtml = (value) => {
2965
+ if (typeof document === "undefined") return escapeHtml(value);
2966
+ const template = document.createElement("template");
2967
+ template.innerHTML = value;
2968
+ Array.from(template.content.childNodes).forEach((child) => sanitizeNode(child));
2969
+ return template.innerHTML;
2970
+ };
2971
+
2903
2972
  // src/components/STag/tag.config.ts
2904
2973
  var TAG_SIZE_CONFIG = {
2905
2974
  xs: {
@@ -3098,7 +3167,14 @@ function useBody(content, message = []) {
3098
3167
  if (content != null) return content;
3099
3168
  if (message.length === 0) return null;
3100
3169
  const singleLine = message.length === 1;
3101
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: singleLine ? "leading-[24px]" : void 0, children: line }, i)) });
3170
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsxRuntime.jsx(
3171
+ "div",
3172
+ {
3173
+ className: singleLine ? "leading-[24px]" : void 0,
3174
+ dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(line) }
3175
+ },
3176
+ i
3177
+ )) });
3102
3178
  }
3103
3179
  var STooltip = react.forwardRef(function STooltip2({
3104
3180
  content,
@@ -3156,7 +3232,7 @@ var STooltip = react.forwardRef(function STooltip2({
3156
3232
  if (disabled || body == null) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: triggerNode });
3157
3233
  const isHover = trigger === "hover";
3158
3234
  const contentClass = cn(
3159
- "z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
3235
+ "z-50 w-fit whitespace-nowrap rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
3160
3236
  FLOATING_SLIDE_ANIM,
3161
3237
  className
3162
3238
  );