@sellmate/design-system 0.0.43 → 0.0.45

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 (239) hide show
  1. package/dist/{esm/resolveColor-BYf-ybt2.js → cjs/color-Oz29vj7L.js} +6 -14
  2. package/dist/cjs/color-Oz29vj7L.js.map +1 -0
  3. package/dist/cjs/design-system.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/resolveColor-CauSLF0s.js +18 -0
  6. package/dist/{esm/resolveColor-BYf-ybt2.js.map → cjs/resolveColor-CauSLF0s.js.map} +1 -1
  7. package/dist/cjs/sd-badge.cjs.entry.js +3 -2
  8. package/dist/cjs/sd-badge.entry.cjs.js.map +1 -1
  9. package/dist/cjs/sd-button.sd-checkbox.sd-icon.sd-input.sd-loading-spinner.sd-pagination.sd-portal.sd-select.sd-select-option.sd-table-backup.sd-tooltip.sd-tooltip-portal.entry.cjs.js.map +1 -0
  10. package/dist/cjs/{sd-button_15.cjs.entry.js → sd-button_12.cjs.entry.js} +184 -175
  11. package/dist/cjs/sd-card.cjs.entry.js +1 -1
  12. package/dist/cjs/sd-date-picker.cjs.entry.js +1 -1
  13. package/dist/cjs/sd-date-range-picker.cjs.entry.js +2 -2
  14. package/dist/cjs/sd-guide.cjs.entry.js +85 -0
  15. package/dist/cjs/sd-guide.entry.cjs.js.map +1 -0
  16. package/dist/cjs/sd-modal-card.cjs.entry.js +56 -0
  17. package/dist/cjs/sd-modal-card.entry.cjs.js.map +1 -0
  18. package/dist/cjs/sd-popover.cjs.entry.js +2 -3
  19. package/dist/cjs/sd-popover.entry.cjs.js.map +1 -1
  20. package/dist/cjs/sd-progress.cjs.entry.js +2 -2
  21. package/dist/cjs/sd-select-multiple-group.cjs.entry.js +2 -2
  22. package/dist/cjs/sd-select-multiple.cjs.entry.js +2 -2
  23. package/dist/cjs/sd-select-option-group.cjs.entry.js +3 -3
  24. package/dist/cjs/sd-table.cjs.entry.js +242 -0
  25. package/dist/cjs/sd-table.entry.cjs.js.map +1 -0
  26. package/dist/cjs/sd-tag.cjs.entry.js +1 -1
  27. package/dist/cjs/sd-tbody.sd-th.sd-tr.entry.cjs.js.map +1 -0
  28. package/dist/cjs/sd-tbody_3.cjs.entry.js +44 -0
  29. package/dist/cjs/sd-td.cjs.entry.js +2 -2
  30. package/dist/collection/collection-manifest.json +1 -0
  31. package/dist/collection/components/sd-badge/sd-badge.js +1 -1
  32. package/dist/collection/components/sd-button/sd-button.css +6 -0
  33. package/dist/collection/components/sd-card/sd-card.js +1 -1
  34. package/dist/collection/components/sd-date-picker/sd-date-picker.js +1 -1
  35. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +2 -2
  36. package/dist/collection/components/sd-guide/sd-guide.css +6 -0
  37. package/dist/collection/components/sd-guide/sd-guide.js +25 -4
  38. package/dist/collection/components/sd-guide/sd-guide.js.map +1 -1
  39. package/dist/collection/components/sd-icon/sd-icon.js +1 -1
  40. package/dist/collection/components/sd-input/sd-input.js +2 -2
  41. package/dist/collection/components/sd-loading-spinner/sd-loading-spinner.js +1 -1
  42. package/dist/collection/components/sd-modal-card/sd-modal-card.css +50 -0
  43. package/dist/collection/components/sd-modal-card/sd-modal-card.js +387 -0
  44. package/dist/collection/components/sd-modal-card/sd-modal-card.js.map +1 -0
  45. package/dist/collection/components/sd-pagination/sd-pagination.js +2 -17
  46. package/dist/collection/components/sd-pagination/sd-pagination.js.map +1 -1
  47. package/dist/collection/components/sd-popover/sd-popover.js +2 -3
  48. package/dist/collection/components/sd-popover/sd-popover.js.map +1 -1
  49. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  50. package/dist/collection/components/sd-progress/sd-progress.js +2 -2
  51. package/dist/collection/components/sd-select/sd-select-option/sd-select-option.js +1 -1
  52. package/dist/collection/components/sd-select/sd-select.js +2 -2
  53. package/dist/collection/components/sd-select-multiple/sd-select-multiple.js +2 -2
  54. package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.js +2 -2
  55. package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.js +3 -3
  56. package/dist/collection/components/sd-table/sd-table.js +3 -3
  57. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +1 -1
  58. package/dist/collection/components/sd-table/sd-td/sd-td.js +2 -2
  59. package/dist/collection/components/sd-table/sd-th/sd-th.js +1 -1
  60. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +1 -1
  61. package/dist/collection/components/sd-table-backup/sd-table-backup.css +14 -0
  62. package/dist/collection/components/sd-table-backup/sd-table-backup.js +176 -27
  63. package/dist/collection/components/sd-table-backup/sd-table-backup.js.map +1 -1
  64. package/dist/collection/components/sd-tag/sd-tag.js +1 -1
  65. package/dist/collection/components/sd-tooltip/sd-tooltip.js +4 -4
  66. package/dist/collection/components/sd-tooltip-portal/sd-tooltip-portal.js +1 -1
  67. package/dist/components/{p-DdLgl05o.js → p-B6GiEilD.js} +3 -3
  68. package/dist/components/{p-DdLgl05o.js.map → p-B6GiEilD.js.map} +1 -1
  69. package/dist/components/{p-zBDALS_T.js → p-BBhUxTuK.js} +9 -9
  70. package/dist/components/{p-zBDALS_T.js.map → p-BBhUxTuK.js.map} +1 -1
  71. package/dist/components/{p-vpG6iign.js → p-BlDZogGu.js} +3 -3
  72. package/dist/components/{p-vpG6iign.js.map → p-BlDZogGu.js.map} +1 -1
  73. package/dist/components/{p-CJYeJzO3.js → p-Bn_wuPsh.js} +7 -7
  74. package/dist/components/{p-CJYeJzO3.js.map → p-Bn_wuPsh.js.map} +1 -1
  75. package/dist/components/{p-DEpODYm6.js → p-C9qV_qzP.js} +5 -18
  76. package/dist/components/p-C9qV_qzP.js.map +1 -0
  77. package/dist/components/{p-DURogU3W.js → p-CIkSynaQ.js} +3 -3
  78. package/dist/components/{p-DURogU3W.js.map → p-CIkSynaQ.js.map} +1 -1
  79. package/dist/components/{p-CXuU0Q0J.js → p-CMcI4ZlP.js} +4 -4
  80. package/dist/components/p-CMcI4ZlP.js.map +1 -0
  81. package/dist/components/{p-4n8y_ubX.js → p-Cb33bhDR.js} +3 -3
  82. package/dist/components/{p-4n8y_ubX.js.map → p-Cb33bhDR.js.map} +1 -1
  83. package/dist/components/{p-B9diVGL_.js → p-D2rvzY8X.js} +3 -3
  84. package/dist/components/{p-B9diVGL_.js.map → p-D2rvzY8X.js.map} +1 -1
  85. package/dist/components/{p-DkdbagIN.js → p-DCDoqfn8.js} +3 -3
  86. package/dist/components/{p-DkdbagIN.js.map → p-DCDoqfn8.js.map} +1 -1
  87. package/dist/components/{p-C5VIAyqc.js → p-DWfls6IE.js} +9 -9
  88. package/dist/components/{p-C5VIAyqc.js.map → p-DWfls6IE.js.map} +1 -1
  89. package/dist/components/{p-D1PUeI-N.js → p-DsXAGqf9.js} +3 -3
  90. package/dist/components/{p-D1PUeI-N.js.map → p-DsXAGqf9.js.map} +1 -1
  91. package/dist/components/{p-CrKCm3ZD.js → p-WhZES_rm.js} +5 -5
  92. package/dist/components/{p-CrKCm3ZD.js.map → p-WhZES_rm.js.map} +1 -1
  93. package/dist/components/{p-CgMn3XX-.js → p-lS2AF6uZ.js} +5 -5
  94. package/dist/components/{p-CgMn3XX-.js.map → p-lS2AF6uZ.js.map} +1 -1
  95. package/dist/components/{p-CgvMD0f4.js → p-t7JZlmXM.js} +3 -3
  96. package/dist/components/{p-CgvMD0f4.js.map → p-t7JZlmXM.js.map} +1 -1
  97. package/dist/components/sd-badge.js +1 -1
  98. package/dist/components/sd-button.js +1 -1
  99. package/dist/components/sd-card.js +1 -1
  100. package/dist/components/sd-checkbox.js +1 -1
  101. package/dist/components/sd-date-picker.js +4 -4
  102. package/dist/components/sd-date-range-picker.js +5 -5
  103. package/dist/components/sd-guide.js +10 -8
  104. package/dist/components/sd-guide.js.map +1 -1
  105. package/dist/components/sd-icon.js +1 -1
  106. package/dist/components/sd-input.js +1 -1
  107. package/dist/components/sd-loading-spinner.js +1 -1
  108. package/dist/components/sd-modal-card.d.ts +11 -0
  109. package/dist/components/sd-modal-card.js +95 -0
  110. package/dist/components/sd-modal-card.js.map +1 -0
  111. package/dist/components/sd-pagination.js +1 -1
  112. package/dist/components/sd-popover.js +5 -6
  113. package/dist/components/sd-popover.js.map +1 -1
  114. package/dist/components/sd-portal.js +1 -1
  115. package/dist/components/sd-progress.js +2 -2
  116. package/dist/components/sd-select-multiple-group.js +7 -7
  117. package/dist/components/sd-select-multiple.js +7 -7
  118. package/dist/components/sd-select-option-group.js +1 -1
  119. package/dist/components/sd-select-option.js +1 -1
  120. package/dist/components/sd-select.js +1 -1
  121. package/dist/components/sd-table-backup.js +131 -39
  122. package/dist/components/sd-table-backup.js.map +1 -1
  123. package/dist/components/sd-table.js +16 -16
  124. package/dist/components/sd-tag.js +1 -1
  125. package/dist/components/sd-tbody.js +1 -1
  126. package/dist/components/sd-td.js +2 -2
  127. package/dist/components/sd-th.js +1 -1
  128. package/dist/components/sd-tooltip-portal.js +1 -1
  129. package/dist/components/sd-tooltip.js +1 -1
  130. package/dist/components/sd-tr.js +1 -1
  131. package/dist/design-system/design-system.esm.js +1 -1
  132. package/dist/design-system/p-059ca6cb.entry.js +2 -0
  133. package/dist/design-system/p-0d776157.entry.js +2 -0
  134. package/dist/design-system/p-0d776157.entry.js.map +1 -0
  135. package/dist/design-system/{p-da63329a.entry.js → p-3574f319.entry.js} +2 -2
  136. package/dist/design-system/{p-90e25920.entry.js → p-390283f7.entry.js} +2 -2
  137. package/dist/design-system/p-4386db36.entry.js +2 -0
  138. package/dist/design-system/p-4386db36.entry.js.map +1 -0
  139. package/dist/design-system/p-6320b9c6.entry.js +2 -0
  140. package/dist/design-system/{p-8b64e66b.entry.js.map → p-6320b9c6.entry.js.map} +1 -1
  141. package/dist/design-system/p-7b4fe5bf.entry.js +2 -0
  142. package/dist/design-system/p-7e8db11c.entry.js +2 -0
  143. package/dist/design-system/p-7e8db11c.entry.js.map +1 -0
  144. package/dist/design-system/p-826c6517.entry.js +2 -0
  145. package/dist/design-system/p-826c6517.entry.js.map +1 -0
  146. package/dist/design-system/{p-e76b69e2.entry.js → p-8734ded6.entry.js} +2 -2
  147. package/dist/design-system/p-BoLmB6pG.js +2 -0
  148. package/dist/design-system/{p-BYf-ybt2.js.map → p-BoLmB6pG.js.map} +1 -1
  149. package/dist/design-system/{p-BYf-ybt2.js → p-CgyTlXBV.js} +2 -2
  150. package/dist/design-system/p-CgyTlXBV.js.map +1 -0
  151. package/dist/design-system/{p-e1eb49de.entry.js → p-ce8fe1fd.entry.js} +2 -2
  152. package/dist/design-system/{p-c70b5ef1.entry.js → p-d4b5575e.entry.js} +2 -2
  153. package/dist/design-system/p-d4e043c5.entry.js +2 -0
  154. package/dist/design-system/p-d4e043c5.entry.js.map +1 -0
  155. package/dist/design-system/{p-2d43c3ce.entry.js → p-db0f705b.entry.js} +2 -2
  156. package/dist/design-system/p-de32d163.entry.js +2 -0
  157. package/dist/design-system/p-de32d163.entry.js.map +1 -0
  158. package/dist/design-system/p-f9d01bdb.entry.js +2 -0
  159. package/dist/design-system/p-f9d01bdb.entry.js.map +1 -0
  160. package/dist/design-system/sd-badge.entry.esm.js.map +1 -1
  161. package/dist/design-system/sd-button.sd-checkbox.sd-icon.sd-input.sd-loading-spinner.sd-pagination.sd-portal.sd-select.sd-select-option.sd-table-backup.sd-tooltip.sd-tooltip-portal.entry.esm.js.map +1 -0
  162. package/dist/design-system/sd-guide.entry.esm.js.map +1 -0
  163. package/dist/design-system/sd-modal-card.entry.esm.js.map +1 -0
  164. package/dist/design-system/sd-popover.entry.esm.js.map +1 -1
  165. package/dist/design-system/sd-table.entry.esm.js.map +1 -0
  166. package/dist/design-system/sd-tbody.sd-th.sd-tr.entry.esm.js.map +1 -0
  167. package/dist/{cjs/resolveColor-DxvExwgo.js → esm/color-CgyTlXBV.js} +4 -17
  168. package/dist/esm/color-CgyTlXBV.js.map +1 -0
  169. package/dist/esm/design-system.js +1 -1
  170. package/dist/esm/loader.js +1 -1
  171. package/dist/esm/resolveColor-CswQ9y2Q.js +16 -0
  172. package/dist/{cjs/resolveColor-DxvExwgo.js.map → esm/resolveColor-CswQ9y2Q.js.map} +1 -1
  173. package/dist/esm/sd-badge.entry.js +3 -2
  174. package/dist/esm/sd-badge.entry.js.map +1 -1
  175. package/dist/esm/sd-button.sd-checkbox.sd-icon.sd-input.sd-loading-spinner.sd-pagination.sd-portal.sd-select.sd-select-option.sd-table-backup.sd-tooltip.sd-tooltip-portal.entry.js.map +1 -0
  176. package/dist/esm/{sd-button_15.entry.js → sd-button_12.entry.js} +183 -171
  177. package/dist/esm/sd-card.entry.js +1 -1
  178. package/dist/esm/sd-date-picker.entry.js +1 -1
  179. package/dist/esm/sd-date-range-picker.entry.js +2 -2
  180. package/dist/esm/sd-guide.entry.js +83 -0
  181. package/dist/esm/sd-guide.entry.js.map +1 -0
  182. package/dist/esm/sd-modal-card.entry.js +54 -0
  183. package/dist/esm/sd-modal-card.entry.js.map +1 -0
  184. package/dist/esm/sd-popover.entry.js +2 -3
  185. package/dist/esm/sd-popover.entry.js.map +1 -1
  186. package/dist/esm/sd-progress.entry.js +2 -2
  187. package/dist/esm/sd-select-multiple-group.entry.js +2 -2
  188. package/dist/esm/sd-select-multiple.entry.js +2 -2
  189. package/dist/esm/sd-select-option-group.entry.js +3 -3
  190. package/dist/esm/sd-table.entry.js +240 -0
  191. package/dist/esm/sd-table.entry.js.map +1 -0
  192. package/dist/esm/sd-tag.entry.js +1 -1
  193. package/dist/esm/sd-tbody.sd-th.sd-tr.entry.js.map +1 -0
  194. package/dist/esm/sd-tbody_3.entry.js +40 -0
  195. package/dist/esm/sd-td.entry.js +2 -2
  196. package/dist/types/components/sd-guide/sd-guide.d.ts +1 -0
  197. package/dist/types/components/sd-modal-card/sd-modal-card.d.ts +25 -0
  198. package/dist/types/components/sd-pagination/sd-pagination.d.ts +0 -1
  199. package/dist/types/components/sd-table-backup/sd-table-backup.d.ts +15 -0
  200. package/dist/types/components.d.ts +129 -0
  201. package/hydrate/index.js +234 -85
  202. package/hydrate/index.mjs +234 -85
  203. package/package.json +2 -2
  204. package/dist/cjs/sd-button.sd-checkbox.sd-guide.sd-icon.sd-input.sd-pagination.sd-portal.sd-select.sd-select-option.sd-table.sd-tbody.sd-th.sd-tooltip.sd-tooltip-portal.sd-tr.entry.cjs.js.map +0 -1
  205. package/dist/cjs/sd-loading-spinner.cjs.entry.js +0 -18
  206. package/dist/cjs/sd-loading-spinner.entry.cjs.js.map +0 -1
  207. package/dist/cjs/sd-table-backup.cjs.entry.js +0 -278
  208. package/dist/cjs/sd-table-backup.entry.cjs.js.map +0 -1
  209. package/dist/components/p-CXuU0Q0J.js.map +0 -1
  210. package/dist/components/p-DEpODYm6.js.map +0 -1
  211. package/dist/design-system/p-34d84584.entry.js +0 -2
  212. package/dist/design-system/p-34d84584.entry.js.map +0 -1
  213. package/dist/design-system/p-5eb63212.entry.js +0 -2
  214. package/dist/design-system/p-66a3fe4d.entry.js +0 -2
  215. package/dist/design-system/p-66a3fe4d.entry.js.map +0 -1
  216. package/dist/design-system/p-7dbd4fe6.entry.js +0 -2
  217. package/dist/design-system/p-874ce442.entry.js +0 -2
  218. package/dist/design-system/p-874ce442.entry.js.map +0 -1
  219. package/dist/design-system/p-8b64e66b.entry.js +0 -2
  220. package/dist/design-system/p-9e5946b6.entry.js +0 -2
  221. package/dist/design-system/p-9e5946b6.entry.js.map +0 -1
  222. package/dist/design-system/p-e572253b.entry.js +0 -2
  223. package/dist/design-system/p-e572253b.entry.js.map +0 -1
  224. package/dist/design-system/sd-button.sd-checkbox.sd-guide.sd-icon.sd-input.sd-pagination.sd-portal.sd-select.sd-select-option.sd-table.sd-tbody.sd-th.sd-tooltip.sd-tooltip-portal.sd-tr.entry.esm.js.map +0 -1
  225. package/dist/design-system/sd-loading-spinner.entry.esm.js.map +0 -1
  226. package/dist/design-system/sd-table-backup.entry.esm.js.map +0 -1
  227. package/dist/esm/sd-button.sd-checkbox.sd-guide.sd-icon.sd-input.sd-pagination.sd-portal.sd-select.sd-select-option.sd-table.sd-tbody.sd-th.sd-tooltip.sd-tooltip-portal.sd-tr.entry.js.map +0 -1
  228. package/dist/esm/sd-loading-spinner.entry.js +0 -16
  229. package/dist/esm/sd-loading-spinner.entry.js.map +0 -1
  230. package/dist/esm/sd-table-backup.entry.js +0 -276
  231. package/dist/esm/sd-table-backup.entry.js.map +0 -1
  232. /package/dist/design-system/{p-5eb63212.entry.js.map → p-059ca6cb.entry.js.map} +0 -0
  233. /package/dist/design-system/{p-da63329a.entry.js.map → p-3574f319.entry.js.map} +0 -0
  234. /package/dist/design-system/{p-90e25920.entry.js.map → p-390283f7.entry.js.map} +0 -0
  235. /package/dist/design-system/{p-7dbd4fe6.entry.js.map → p-7b4fe5bf.entry.js.map} +0 -0
  236. /package/dist/design-system/{p-e76b69e2.entry.js.map → p-8734ded6.entry.js.map} +0 -0
  237. /package/dist/design-system/{p-e1eb49de.entry.js.map → p-ce8fe1fd.entry.js.map} +0 -0
  238. /package/dist/design-system/{p-c70b5ef1.entry.js.map → p-d4b5575e.entry.js.map} +0 -0
  239. /package/dist/design-system/{p-2d43c3ce.entry.js.map → p-db0f705b.entry.js.map} +0 -0
@@ -1,9 +1,10 @@
1
1
  import { r as registerInstance, c as createEvent, a as getElement, h, H as Host, F as Fragment } from './index-B2T3tS5r.js';
2
- import { r as resolveColor, c as colors } from './resolveColor-BYf-ybt2.js';
2
+ import { r as resolveColor } from './resolveColor-CswQ9y2Q.js';
3
3
  import { B as BaseDropdownEvent, S as SelectKeyboardNavigation } from './select-keyboard-navigation-C2JaR3A6.js';
4
4
  import { T as TooltipArrow } from './tooltipArrow-Pa2XQhpp.js';
5
+ import './color-CgyTlXBV.js';
5
6
 
6
- const sdButtonCss = ".sd-button{text-decoration:none;cursor:pointer;border-radius:4px;transition:all 0.2s ease-in-out;position:relative;overflow:hidden;white-space:nowrap;-webkit-user-select:none;user-select:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center}.sd-button--xs{padding:0 8px;font-size:12px;font-weight:500;line-height:20px;min-height:24px}.sd-button--sm{padding:0 12px;font-size:12px;font-weight:500;line-height:20px;min-height:28px}.sd-button--md{padding:0 20px;font-size:16px;font-weight:500;line-height:26px;min-height:34px}.sd-button--lg{padding:0 28px;font-size:18px;font-weight:500;line-height:30px;min-height:62px}.sd-button--primary{background-color:var(--button-color);color:white;transition:filter 0.2s ease}.sd-button--primary::before{content:\"\";position:absolute;inset:0;background:#000000;opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--primary:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.25}.sd-button--outline{background:white;border:1px solid var(--button-color);color:var(--button-color)}.sd-button--outline::before{content:\"\";position:absolute;inset:0;background:var(--button-color);opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--outline:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.15}.sd-button--outline .sd-button__content{position:relative;z-index:1}.sd-button--ghost{background-color:transparent;color:var(--button-color);border-color:transparent}.sd-button--ghost::before{content:\"\";position:absolute;inset:0;background:var(--button-color);opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--ghost:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.15}.sd-button--ghost .sd-button__content{position:relative;z-index:1}.sd-button--disabled{border:1px solid #cccccc;background:#e1e1e1;color:#888888;cursor:not-allowed !important}.sd-button--icon-only{padding:0;width:fit-content;height:fit-content;aspect-ratio:1/1}.sd-button--no-hover:hover::before{opacity:0 !important}.sd-button .sd-button__content{display:inline-flex;align-items:center;justify-content:center;gap:4px;z-index:1;font-weight:500}";
7
+ const sdButtonCss = "sd-button{display:inline-block;width:fit-content;height:fit-content}.sd-button{text-decoration:none;cursor:pointer;border-radius:4px;transition:all 0.2s ease-in-out;position:relative;overflow:hidden;white-space:nowrap;-webkit-user-select:none;user-select:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center}.sd-button--xs{padding:0 8px;font-size:12px;font-weight:500;line-height:20px;min-height:24px}.sd-button--sm{padding:0 12px;font-size:12px;font-weight:500;line-height:20px;min-height:28px}.sd-button--md{padding:0 20px;font-size:16px;font-weight:500;line-height:26px;min-height:34px}.sd-button--lg{padding:0 28px;font-size:18px;font-weight:500;line-height:30px;min-height:62px}.sd-button--primary{background-color:var(--button-color);color:white;transition:filter 0.2s ease}.sd-button--primary::before{content:\"\";position:absolute;inset:0;background:#000000;opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--primary:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.25}.sd-button--outline{background:white;border:1px solid var(--button-color);color:var(--button-color)}.sd-button--outline::before{content:\"\";position:absolute;inset:0;background:var(--button-color);opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--outline:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.15}.sd-button--outline .sd-button__content{position:relative;z-index:1}.sd-button--ghost{background-color:transparent;color:var(--button-color);border-color:transparent}.sd-button--ghost::before{content:\"\";position:absolute;inset:0;background:var(--button-color);opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--ghost:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.15}.sd-button--ghost .sd-button__content{position:relative;z-index:1}.sd-button--disabled{border:1px solid #cccccc;background:#e1e1e1;color:#888888;cursor:not-allowed !important}.sd-button--icon-only{padding:0;width:fit-content;height:fit-content;aspect-ratio:1/1}.sd-button--no-hover:hover::before{opacity:0 !important}.sd-button .sd-button__content{display:inline-flex;align-items:center;justify-content:center;gap:4px;z-index:1;font-weight:500}";
7
8
 
8
9
  const ICON_SIZES = {
9
10
  xs: 12,
@@ -145,83 +146,6 @@ const SdCheckbox = class {
145
146
  };
146
147
  SdCheckbox.style = sdCheckboxCss;
147
148
 
148
- const sdGuideCss = "@charset \"UTF-8\";.sd-button{text-decoration:none;cursor:pointer;border-radius:4px;transition:all 0.2s ease-in-out;position:relative;overflow:hidden;white-space:nowrap;-webkit-user-select:none;user-select:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center}.sd-button--xs{padding:0 8px;font-size:12px;font-weight:500;line-height:20px;min-height:24px}.sd-button--sm{padding:0 12px;font-size:12px;font-weight:500;line-height:20px;min-height:28px}.sd-button--md{padding:0 20px;font-size:16px;font-weight:500;line-height:26px;min-height:34px}.sd-button--lg{padding:0 28px;font-size:18px;font-weight:500;line-height:30px;min-height:62px}.sd-button--primary{background-color:var(--button-color);color:white;transition:filter 0.2s ease}.sd-button--primary::before{content:\"\";position:absolute;inset:0;background:#000000;opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--primary:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.25}.sd-button--outline{background:white;border:1px solid var(--button-color);color:var(--button-color)}.sd-button--outline::before{content:\"\";position:absolute;inset:0;background:var(--button-color);opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--outline:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.15}.sd-button--outline .sd-button__content{position:relative;z-index:1}.sd-button--ghost{background-color:transparent;color:var(--button-color);border-color:transparent}.sd-button--ghost::before{content:\"\";position:absolute;inset:0;background:var(--button-color);opacity:0;transition:opacity 0.2s ease;z-index:0}.sd-button--ghost:hover:not(.sd-button--disabled):not(.sd-button--loading)::before{opacity:0.15}.sd-button--ghost .sd-button__content{position:relative;z-index:1}.sd-button--disabled{border:1px solid #cccccc;background:#e1e1e1;color:#888888;cursor:not-allowed !important}.sd-button--icon-only{padding:0;width:fit-content;height:fit-content;aspect-ratio:1/1}.sd-button--no-hover:hover::before{opacity:0 !important}.sd-button .sd-button__content{display:inline-flex;align-items:center;justify-content:center;gap:4px;z-index:1;font-weight:500}sd-guide{display:inline-block;height:fit-content}sd-guide .sd-guide{display:inline-block}sd-guide .sd-guide .sd-button{padding:0 16px 0 12px;border-radius:16px;color:#333333 !important;display:flex;align-items:center;transition:none}sd-guide .sd-guide .sd-button .sd-button__content{color:#333333 !important}sd-guide .sd-guide .sd-button .sd-button__content .sd-button__label{color:#333333 !important;margin-left:4px}sd-guide .sd-guide--active .sd-button{border:1px solid #12b553}sd-guide .sd-guide--active .sd-button .sd-button__content .sd-button__label{color:white !important}.sd-guide__popup{position:relative;padding:20px 32px;border-radius:8px;box-shadow:4px 4px 24px 4px rgba(0, 0, 0, 0.1);background:white}.sd-guide__popup>.sd-guide__popup__close{position:absolute;top:12px;right:12px}.sd-guide__popup__header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.sd-guide__popup__header .sd-guide__popup__title{margin-top:0;font-size:16px;font-weight:700;line-height:26px;color:#333333}.sd-guide__popup__list{width:100%;padding:0;margin:0}.sd-guide__popup__list__item{display:flex;width:100%;align-items:start;list-style:none;color:#333333;font-size:12px;font-weight:400}.sd-guide__popup__list__item p{width:100%;padding:0;margin:0;word-wrap:break-word;word-break:break-word;white-space:normal;overflow-wrap:break-word;min-width:0}.sd-guide__popup__list__item::before{display:block;content:\"-\";width:6px;color:#333333;font-size:12px;font-weight:400;margin-left:10px;margin-right:12px;flex-shrink:0}.sd-guide__popup__list__item--depth-2::before{content:\"•\"}.sd-guide__popup__list__item--depth-2{padding-left:26px}";
149
-
150
- const GUIDE_LABEL = {
151
- help: '활용 TIP',
152
- pdf: 'PDF Guide',
153
- youtube: 'Video Guide',
154
- notion: '사용 가이드',
155
- event: 'Event Button',
156
- };
157
- const GUIDE_ICON = {
158
- help: {
159
- name: 'helpOutline',
160
- size: 20,
161
- color: colors.green_70,
162
- },
163
- pdf: { name: 'pdf', size: 20, color: colors.red_75 },
164
- youtube: { name: 'youtube', size: 20, color: colors.red_75 },
165
- notion: { name: 'notion', size: 16, color: colors.black },
166
- event: { name: 'event', size: 16, color: colors.brilliantblue_70 },
167
- };
168
- const SdGuide = class {
169
- constructor(hostRef) {
170
- registerInstance(this, hostRef);
171
- }
172
- get el() { return getElement(this); }
173
- type = 'help';
174
- label = '';
175
- message = '';
176
- guideUrl = '';
177
- popupWidth;
178
- popupShow = false;
179
- guideRef;
180
- handleClickGuide = () => {
181
- if (this.type === 'help') {
182
- this.popupShow = !this.popupShow;
183
- return;
184
- }
185
- if (this.guideUrl) {
186
- window.open(this.guideUrl, '_blank');
187
- }
188
- };
189
- get guideClass() {
190
- const classes = ['sd-guide', `sd-guide--${this.type}`];
191
- if (this.popupShow)
192
- classes.push('sd-guide--active');
193
- return classes.join(' ');
194
- }
195
- closeDropdown = () => {
196
- this.popupShow = false;
197
- };
198
- render() {
199
- const { name: iconName, size: iconSize, color: iconColor } = GUIDE_ICON[this.type];
200
- return (h(Host, { key: '151e2b8148ed0dc26f97fd81902be88edc10933a', style: {
201
- '--sd-guide-color': GUIDE_ICON[this.type].color,
202
- } }, h("sd-button", { key: '05d6fdf5721d1ef5be5646227b6db112560f944e', ref: el => (this.guideRef = el), class: this.guideClass, variant: this.popupShow ? 'primary' : 'outline', label: GUIDE_LABEL[this.type], size: "sm", color: this.popupShow ? GUIDE_ICON[this.type].color : 'grey_45', icon: iconName, iconColor: this.popupShow ? 'white' : iconColor, iconSize: iconSize, noHover: this.popupShow, onSdClick: this.handleClickGuide }), this.type === 'help' && this.popupShow && (h("sd-portal", { key: '63b86edca7f72a5a74477140d01be873bc2a6fbc', open: this.popupShow, parentRef: this.guideRef, onSdClose: this.closeDropdown, offset: [0, 4] }, h("div", { key: '8a5cae088afd50f005a10eebcf66ae57f3661710', class: "sd-guide__popup", style: { width: this.popupWidth ? this.popupWidth + 'px' : '426px' } }, h("sd-button", { key: '2734f07d8b9fcbbeaa2942c9219461f5888e38b0', class: "sd-guide__popup__close", icon: "close", color: colors.grey_65, size: "md", variant: "ghost", noHover: true,
203
- // buttonStyle={{ padding: '0px', minHeight: '0px' }}
204
- onSdClick: this.closeDropdown }), h("div", { key: '5b602905d247032b7bb09c1635de094505295178', class: "sd-guide__popup__header" }, h("sd-icon", { key: '9156d751748598fbe657626899d5e6730a0c0ba2', name: "helpOutline", size: 24, color: colors.green_65 }), h("h3", { key: '881b74e449725b1953b6a81c4c042748ae609319', class: "sd-guide__popup__title" }, this.label || GUIDE_LABEL[this.type])), h("ul", { key: '51a13a02e2c1beefcfc11a1cdc602f433572e157', class: "sd-guide__popup__list" }, this.renderListItem(this.message)))))));
205
- }
206
- // 현재 2depth까지만 스타일 적용
207
- renderListItem(message, depth = 0) {
208
- const listItems = [];
209
- if (Array.isArray(message)) {
210
- const depthMsg = message.map(msg => this.renderListItem(msg, depth + 1));
211
- listItems.push(...depthMsg.flat());
212
- }
213
- else {
214
- listItems.push(this.renderLi(message, depth));
215
- }
216
- return listItems;
217
- }
218
- renderLi = (message, depth) => {
219
- const listContent = message.replace(/ /gi, ' ');
220
- return (h("li", { class: `sd-guide__popup__list__item sd-guide__popup__list__item--depth-${depth}` }, h("p", { innerHTML: listContent })));
221
- };
222
- };
223
- SdGuide.style = sdGuideCss;
224
-
225
149
  const Add8 = (props) => (h("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, h("path", { d: "M3.99969 0.633484C4.16537 0.633484 4.29948 0.767622 4.2995 0.933289V3.69989H7.06708C7.23245 3.70014 7.36672 3.8343 7.36688 3.99969C7.36688 4.16523 7.23255 4.29925 7.06708 4.2995H4.2995V7.06708C4.29925 7.23255 4.16523 7.36688 3.99969 7.36688C3.8343 7.36672 3.70014 7.23245 3.69989 7.06708V4.2995H0.933289C0.767622 4.29948 0.633484 4.16537 0.633484 3.99969C0.633648 3.83416 0.767724 3.69991 0.933289 3.69989H3.69989V0.933289C3.69991 0.767724 3.83416 0.633648 3.99969 0.633484Z", fill: "currentColor" })));
226
150
 
227
151
  const Add10 = (props) => (h("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, h("path", { d: "M5 0.766602C5.22088 0.766602 5.40034 0.946123 5.40039 1.16699V4.59961H8.83398C9.05461 4.59978 9.23317 4.77939 9.2334 5C9.2334 5.22081 9.05475 5.40022 8.83398 5.40039H5.40039V8.83398C5.40021 9.05475 5.22081 9.2334 5 9.2334C4.77939 9.23317 4.59979 9.05461 4.59961 8.83398V5.40039H1.16699C0.946123 5.40034 0.766602 5.22088 0.766602 5C0.766833 4.77931 0.946265 4.59966 1.16699 4.59961H4.59961V1.16699C4.59966 0.946265 4.77931 0.766833 5 0.766602Z", fill: "currentColor" })));
@@ -2231,7 +2155,7 @@ const SdIcon = class {
2231
2155
  }
2232
2156
  render() {
2233
2157
  const IconComponent = Icons[this.name]?.[this.size];
2234
- return (h("i", { key: '6e960b0cd16604be33d46a82e51f681cb3c16cbf', class: this.getIconClasses(), style: this.iconStyle }, h(IconComponent, { key: '61ed4a9607f3dcc656b991b0705e6623d1c690db', color: this.resolvedColor })));
2158
+ return (h("i", { key: '738453a8bc8d1b9bb67fbaaffb7de203c2982c30', class: this.getIconClasses(), style: this.iconStyle }, h(IconComponent, { key: '2f970609756be608b660a522949dd79cca64fcc8', color: this.resolvedColor })));
2235
2159
  }
2236
2160
  };
2237
2161
  SdIcon.style = sdIconCss;
@@ -2336,11 +2260,11 @@ const SdInput = class {
2336
2260
  '--input-width': typeof this.width === 'number' ? `${this.width}px` : this.width,
2337
2261
  }
2338
2262
  : {};
2339
- return (h(Host, { key: '331f9b3473c6fbd88b05013dc9a3fdd8d88a8a43', style: inputWidth }, this.label && h("div", { key: '9f998c7e3e0350cb4c81fb40881bf60bd85262fd', class: "sd-input__label" }, this.label), h("label", { key: '201572ad47dcbae9da7ea68247e3af729c815578', class: {
2263
+ return (h(Host, { key: '87a102220530a2e06620619967f1925f193b4794', style: inputWidth }, this.label && h("div", { key: 'dec1ef5b27dadc7b2c6c0e9f5dab978b338b5a45', class: "sd-input__label" }, this.label), h("label", { key: '72ba8b8b0019fd1bfc222207df4b42735457873d', class: {
2340
2264
  'sd-input': true,
2341
2265
  [this.getInputStatus()]: true,
2342
2266
  'sd-input--barcode': !!this.barcode,
2343
- }, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: this.inputStyle }, h("slot", { key: '976c8e1a97dc03ffe30216f2b9a331da1e5e80bd', name: "prefix" }), h("input", { key: '42bb9cfd1864294550422f23f7989cf391da732a', ref: el => (this.nativeEl = el), class: `sd-input__native_element ${this.inputClass}`, type: "text", value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onChange: this.handleChange, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event) }), h("slot", { key: '55a23ec021df0f071eeef45092cd71527ede09c5', name: "suffix" }), this.clearable && this.internalValue && (h("sd-icon", { key: 'a96f46a1b1fce96da2547c40173b3f044686813e', name: "close", color: "#888", class: "sd-input__clear-icon", onClick: () => {
2267
+ }, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: this.inputStyle }, h("slot", { key: '7745177f5638351670adb3610325d44df156826e', name: "prefix" }), h("input", { key: '976949537b8071a409d94e93f803128946d73d48', ref: el => (this.nativeEl = el), class: `sd-input__native_element ${this.inputClass}`, type: "text", value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onChange: this.handleChange, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event) }), h("slot", { key: 'b62387e0c2122cfb9f5599a108d54682df59fef6', name: "suffix" }), this.clearable && this.internalValue && (h("sd-icon", { key: 'b860d9c2387adf97d7317bba550b169ac9f4ac49', name: "close", color: "#888", class: "sd-input__clear-icon", onClick: () => {
2344
2268
  this.internalValue = '';
2345
2269
  this.sdChange?.emit(this.internalValue);
2346
2270
  this.sdInput?.emit(this.internalValue);
@@ -2353,6 +2277,18 @@ const SdInput = class {
2353
2277
  };
2354
2278
  SdInput.style = sdInputCss;
2355
2279
 
2280
+ const sdLoadingSpinnerCss = "sd-loading-spinner{display:block}sd-loading-spinner .sd-loading-spinner{animation:sd-loading-spin 2s linear infinite;transform-origin:center center}sd-loading-spinner .sd-loading-spinner .path{animation:sd-loading-spin-path 1.5s ease-in-out infinite}@keyframes sd-loading-spin{0%{transform:rotate3d(0, 0, 1, 0deg)}25%{transform:rotate3d(0, 0, 1, 90deg)}50%{transform:rotate3d(0, 0, 1, 180deg)}75%{transform:rotate3d(0, 0, 1, 270deg)}100%{transform:rotate3d(0, 0, 1, 359deg)}}@keyframes sd-loading-spin-path{0%{stroke-dasharray:1, 200;stroke-dashoffset:0}50%{stroke-dasharray:89, 200;stroke-dashoffset:-35px}100%{stroke-dasharray:89, 200;stroke-dashoffset:-124px}}";
2281
+
2282
+ const SdLoadingSpinner = class {
2283
+ constructor(hostRef) {
2284
+ registerInstance(this, hostRef);
2285
+ }
2286
+ render() {
2287
+ return (h(Host, { key: '54446b42c83eff572c2d0d63c367a7e407d722a5' }, h("svg", { key: '92ad1f0446dc5912a656512d09ab4b8b3b262156', class: "sd-loading-spinner text-positive", width: "72px", height: "72px", viewBox: "25 25 50 50" }, h("circle", { key: 'b9b0c2ea5233fb5f5c784d0262c6ba526dc00622', class: "path", cx: "50", cy: "50", r: "20", fill: "none", stroke: "currentColor", "stroke-width": "5", "stroke-miterlimit": "10" }))));
2288
+ }
2289
+ };
2290
+ SdLoadingSpinner.style = sdLoadingSpinnerCss;
2291
+
2356
2292
  const sdPaginationCss = ".sd-pagination{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center;gap:8px;color:#555555;width:100%;font-size:12px}.sd-pagination .prepend-btns{display:flex;flex-flow:row nowrap;align-items:center;gap:8px;width:60px}.sd-pagination .prepend-btns button{width:26px;height:26px;border:0;background:none}.sd-pagination .prepend-btns button:hover{border:1px solid #006ac1;border-radius:14px}.sd-pagination .append-btns{display:flex;flex-flow:row nowrap;align-items:center;gap:8px;width:60px}.sd-pagination .append-btns button{width:26px;height:26px;border:0;background:none}.sd-pagination .append-btns button:hover{border:1px solid #006ac1;border-radius:14px}.sd-pagination .pagination-btn{display:flex;align-items:center;justify-content:center;border-radius:14px;outline:none;border:none;cursor:pointer;height:26px;color:#555555;width:var(--pagination-btn-width, 26px)}.sd-pagination .pagination-btn--selected{background-color:#006ac1;color:white}.sd-pagination .pagination-btn:hover{border:1px solid #006ac1}.sd-pagination--simple .pagination-info{line-height:26px;display:flex;flex-flow:row nowrap;align-items:center;gap:8px}.sd-pagination--simple .pagination-info .current-page,.sd-pagination--simple .pagination-info .last-page{padding:0 2px}";
2357
2293
 
2358
2294
  const BUTTON_WIDTH = {
@@ -2372,12 +2308,6 @@ const SdPagination = class {
2372
2308
  lastPage = 1;
2373
2309
  simple = false;
2374
2310
  pageChange;
2375
- onPropChange() {
2376
- console.log('Pagination props changed', {
2377
- currentPage: this.currentPage,
2378
- lastPage: this.lastPage,
2379
- });
2380
- }
2381
2311
  get paginationClasses() {
2382
2312
  const classes = ['sd-pagination'];
2383
2313
  if (this.simple) {
@@ -2433,17 +2363,13 @@ const SdPagination = class {
2433
2363
  }
2434
2364
  }
2435
2365
  render() {
2436
- return (h("div", { key: 'c200da844c5cd3bac4693979edfd4936fca50e96', class: this.paginationClasses }, h("div", { key: 'aebfbdc184eb7c71e05db5fd42ec8b5f6bf3603f', class: "prepend-btns" }, this.renderPrevButtons()), this.simple ? (h("div", { class: "pagination-info" }, h("span", { class: "current-page" }, this.currentPage), h("span", null, "/"), h("span", { class: "last-page" }, this.lastPage))) : (this.pageNumbers.map(n => (h("button", { type: "button", "aria-current": this.currentPage === n ? 'page' : undefined, class: {
2366
+ return (h("div", { key: '3b65d74d4b70b8b3292a20daa5d89ffb7d9a66e7', class: this.paginationClasses }, h("div", { key: 'a3be2b1c24ac6ac7ecde25223d9208e63e558bf3', class: "prepend-btns" }, this.renderPrevButtons()), this.simple ? (h("div", { class: "pagination-info" }, h("span", { class: "current-page" }, this.currentPage), h("span", null, "/"), h("span", { class: "last-page" }, this.lastPage))) : (this.pageNumbers.map(n => (h("button", { type: "button", "aria-current": this.currentPage === n ? 'page' : undefined, class: {
2437
2367
  'pagination-btn': true,
2438
2368
  'pagination-btn--selected': this.currentPage === n,
2439
2369
  }, disabled: this.currentPage === n, style: {
2440
2370
  '--pagination-btn-width': `${this.buttonWidth}px`,
2441
- }, onClick: () => this.handlePageChange(n) }, n)))), h("div", { key: '9b15a86715af6e7f4aa89bd43494211449d7b683', class: "append-btns" }, this.renderNextButtons())));
2371
+ }, onClick: () => this.handlePageChange(n) }, n)))), h("div", { key: '9c145c18eacc2ab0115d162cbb50e5ad3ea62c80', class: "append-btns" }, this.renderNextButtons())));
2442
2372
  }
2443
- static get watchers() { return {
2444
- "currentPage": ["onPropChange"],
2445
- "lastPage": ["onPropChange"]
2446
- }; }
2447
2373
  };
2448
2374
  SdPagination.style = sdPaginationCss;
2449
2375
 
@@ -2565,7 +2491,7 @@ const SdPortal = class {
2565
2491
  this.sdClose.emit();
2566
2492
  }
2567
2493
  render() {
2568
- return h("slot", { key: '120ce8e686e5935293738aa5a470b960dfd518c5' });
2494
+ return h("slot", { key: 'b24b7f844564365e887dc8cee8b98e26a94961cd' });
2569
2495
  }
2570
2496
  };
2571
2497
 
@@ -2773,11 +2699,11 @@ const SdSelect = class extends BaseDropdownEvent {
2773
2699
  '--select-width': this.width || '200px',
2774
2700
  '--select-dropdown-height': this.dropdownHeight || '260px',
2775
2701
  };
2776
- return (h(Host, { key: '8706a1e60e18e90e05429bb838de6d3a4da6d4bc', style: style }, h("div", { key: 'fbec6760ae66d6ca43c504ab7ab6e1655d72b267', class: {
2702
+ return (h(Host, { key: '94880c07678eb6a478c9c80de0c42c5c7724936e', style: style }, h("div", { key: '872f918214118adb99b50533c323e9de7ca27353', class: {
2777
2703
  'sd-select': true,
2778
2704
  'sd-select--open': this.isOpen,
2779
2705
  'sd-select--disabled': this.disabled,
2780
- }, ref: el => (this.selectRef = el) }, this.renderLabel(this.label), h("div", { key: 'b8ecf2553fc65a009cda2fabe3d4fdafdd4cf57c', class: "sd-select__container" }, this.renderTrigger(), this.renderDropdown()))));
2706
+ }, ref: el => (this.selectRef = el) }, this.renderLabel(this.label), h("div", { key: '30e44d67c6d8b81c59c798ffa4de43337de6f195', class: "sd-select__container" }, this.renderTrigger(), this.renderDropdown()))));
2781
2707
  }
2782
2708
  renderLabel(label) {
2783
2709
  if (!label)
@@ -2848,7 +2774,7 @@ const SdSelectOption = class {
2848
2774
  }
2849
2775
  };
2850
2776
  render() {
2851
- return (h(Host, { key: '70e4b495a158c9da1b2a5d6298a5053f70b84a7b' }, h("div", { key: '6c37c08ce1cb4654bf8ea53ceb52daee1dcfe79f', class: {
2777
+ return (h(Host, { key: 'f1874b4e539573ddaa48cb2bdc9d13ea96bf350e' }, h("div", { key: '5a3bbd66f6623a1c02d5e1295bb974e82883b8a1', class: {
2852
2778
  'sd-select__option': true,
2853
2779
  'sd-select__option--selected': this.isSelected,
2854
2780
  'sd-select__option--disabled': !!this.option.disabled,
@@ -2870,7 +2796,7 @@ const SdSelectOption = class {
2870
2796
  };
2871
2797
  SdSelectOption.style = sdSelectOptionCss;
2872
2798
 
2873
- const sdTableCss = ".sd-table__wrapper .sd-table__container .sd-table__middle{overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar{opacity:0;background:#e5e5e5}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar:horizontal{height:8px}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar:vertical{width:8px}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar-thumb{height:80px;background-color:#cccccc;border-radius:4px}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar-track{background-color:transparent}.sd-table__wrapper{height:var(--table-height, auto);width:var(--table-width, 100%);color:#222222}.sd-table__wrapper .sd-table__container{width:100%;height:auto;border:1px solid #e1e1e1;border-radius:8px;font-size:12px;overflow:hidden}.sd-table__wrapper .sd-table__container .sd-table__middle{overflow:auto;will-change:scroll-position;height:var(--table-height, auto)}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table{background-color:white;display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;position:relative}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--selectable td.sd-td--selected,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--selectable th.sd-th--selected{width:52px !important;max-width:52px !important;min-width:52px !important;padding:0 10px 0 24px;text-align:left}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-header thead{position:sticky;top:0;z-index:120}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column th.sticky-left,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column th.sticky-right{position:sticky;background-color:#f5faff;z-index:110 !important}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column td.sticky-left,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column td.sticky-right{position:sticky;background-color:white;z-index:100 !important}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column .sticky-left{left:var(--sticky-left-offset, 0)}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column .sticky-right{right:var(--sticky-right-offset, 0)}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column th.sticky-cell{position:sticky;z-index:102;background-color:#f5faff}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column td.sticky-cell{position:sticky;z-index:101;background-color:white}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-left th.sticky-left-edge,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-left td.sticky-left-edge{overflow:visible}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-left th.sticky-left-edge:after,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-left td.sticky-left-edge:after{content:\"\";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:1;pointer-events:none}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-right th.sticky-right-edge,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-right td.sticky-right-edge{overflow:visible}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-right th.sticky-right-edge:after,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-right td.sticky-right-edge:after{content:\"\";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:1;pointer-events:none}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--no-data thead{opacity:0.4}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--no-data thead tr th.sd-th{border-bottom:1px solid rgba(225, 225, 225, 0.4) !important}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-td,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-th,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table .sd-th__content--label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead{height:36px}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead sd-tr{width:100%}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead sd-tr sd-th{background:#f5faff;height:36px;padding:0 16px;font-weight:500;vertical-align:middle;border-bottom:1px solid #e1e1e1;-webkit-user-select:none;user-select:none;position:relative}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead sd-tr sd-th.sd-th .sd-th__content{display:flex;flex-flow:row nowrap;align-items:center;gap:4px}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead sd-tr sd-th.sd-th .sd-th__content--left{justify-content:flex-start}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead sd-tr sd-th.sd-th .sd-th__content--center{justify-content:center}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead sd-tr sd-th.sd-th .sd-th__content--right{justify-content:flex-end}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead sd-tr sd-th.sd-th .sd-th__resizer{position:absolute;top:50%;right:0;transform:translateY(-50%);width:4px;height:16px;cursor:col-resize;z-index:3;border-left:1px solid #cccccc;border-right:1px solid #cccccc}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-tbody .sd-table__loading{position:absolute;top:0;left:0;width:100%;height:calc(var(--table-height, auto) - 36px);min-height:calc(100% - 36px);background:rgba(255, 255, 255, 0.6);z-index:200;display:flex;align-items:center;justify-content:center}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-tbody sd-tr:last-of-type sd-td{border-bottom:none}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-tbody sd-tr sd-td{height:44px;padding:0 16px;border-bottom:1px solid #e1e1e1;background:white;vertical-align:middle}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-tbody sd-tr sd-td.sd-td--left{text-align:left}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-tbody sd-tr sd-td.sd-td--center{text-align:center}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-tbody sd-tr sd-td.sd-td--right{text-align:right}.sd-table__wrapper .sd-table__container .sd-table__bottom{background:white;text-align:center}.sd-table__wrapper .sd-table__pagination{position:relative;background:#f9f9f9;height:48px;display:flex;align-items:center;justify-content:center;border:1px solid #e1e1e1;border-top:none;border-radius:8px}.sd-table__wrapper .sd-table__pagination sd-select{position:absolute;right:10px;top:50%;transform:translateY(-50%)}";
2799
+ const sdTableBackupCss = ".sd-table__wrapper .sd-table__container .sd-table__middle{overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar{opacity:0;background:#e5e5e5}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar:horizontal{height:8px}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar:vertical{width:8px}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar-thumb{height:80px;background-color:#cccccc;border-radius:4px}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar-track{background-color:transparent}.sd-table__wrapper{height:var(--table-height, auto);width:var(--table-width, 100%);color:#222222}.sd-table__wrapper .sd-table__container{width:100%;height:var(--table-height, auto);position:relative;border:1px solid #e1e1e1;border-radius:8px;font-size:12px;overflow:hidden;background:#ffffff}.sd-table__wrapper .sd-table__container .sd-table__middle{overflow:auto;will-change:scroll-position}.sd-table__wrapper .sd-table__container .sd-table__middle--scrollable{height:var(--table-height, auto)}.sd-table__wrapper .sd-table__container .sd-table__middle--loading{overflow:hidden !important}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table{background-color:white;display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody.sd-table-tbody--virtual-scroll{position:relative;height:var(--total-virtual-height, auto)}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody.sd-table-tbody--virtual-scroll tr:not([aria-hidden=true]){width:100%}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody.sd-table-tbody--virtual-scroll tr[aria-hidden=true]{padding:0;border:none}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody.sd-table-tbody--virtual-scroll tr[aria-hidden=true] td{display:none}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--selectable td.sd-td--selected,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--selectable th.sd-th--selected{width:52px !important;max-width:52px !important;min-width:52px !important;padding:0 10px 0 24px;text-align:left}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-header thead{position:sticky;top:0;z-index:120}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column th.sticky-left,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column th.sticky-right{position:sticky;background-color:#f5faff;z-index:110 !important}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column td.sticky-left,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column td.sticky-right{position:sticky;background-color:white;z-index:100 !important}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column .sticky-left{left:var(--sticky-left-offset, 0)}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column .sticky-right{right:var(--sticky-right-offset, 0)}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column th.sticky-cell{position:sticky;z-index:102;background-color:#f5faff}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--sticky-column td.sticky-cell{position:sticky;z-index:101;background-color:white}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-left th.sticky-left-edge,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-left td.sticky-left-edge{overflow:visible}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-left th.sticky-left-edge:after,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-left td.sticky-left-edge:after{content:\"\";position:absolute;top:0;left:100%;right:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset 12px 0 20px -25px;opacity:1;pointer-events:none}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-right th.sticky-right-edge,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-right td.sticky-right-edge{overflow:visible}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-right th.sticky-right-edge:after,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--scrolled-right td.sticky-right-edge:after{content:\"\";position:absolute;top:0;left:-20px;width:20px;height:100%;z-index:101 !important;box-shadow:inset -12px 0 20px -25px;opacity:1;pointer-events:none}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--no-data thead{opacity:0.4}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table--no-data thead tr th.sd-th{border-bottom:1px solid rgba(225, 225, 225, 0.4) !important}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-td,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table sd-th,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table .sd-th__content--label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:keep-all}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead{height:36px}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead tr{width:100%}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead tr th{background:#f5faff;height:36px;padding:0 16px;font-weight:500;vertical-align:middle;border-bottom:1px solid #e1e1e1;-webkit-user-select:none;user-select:none;position:relative}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead tr th.sd-th .sd-th__content{display:flex;flex-flow:row nowrap;align-items:center;gap:4px}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead tr th.sd-th .sd-th__content--left{justify-content:flex-start}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead tr th.sd-th .sd-th__content--center{justify-content:center}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead tr th.sd-th .sd-th__content--right{justify-content:flex-end}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table thead tr th.sd-th .sd-th__resizer{position:absolute;top:50%;right:0;transform:translateY(-50%);width:4px;height:16px;cursor:col-resize;z-index:3;border-left:1px solid #cccccc;border-right:1px solid #cccccc}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody .sd-table__loading{position:absolute;top:0;left:0;width:100%;height:100%;min-height:100%;background:rgba(255, 255, 255, 0.6);z-index:200;display:flex;align-items:center;justify-content:center}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody tr td{height:44px;padding:0 16px;border-bottom:1px solid #e1e1e1;background:white;vertical-align:middle}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody tr td.sd-td--left{text-align:left}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody tr td.sd-td--center{text-align:center}.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table tbody tr td.sd-td--right{text-align:right}.sd-table__wrapper .sd-table__container .sd-table__bottom{background:white;text-align:center}.sd-table__wrapper .sd-table__container .sd-table__bottom .sd-table__no-data{padding-top:15%;color:#888888}.sd-table__wrapper .sd-table__pagination{position:relative;background:#f9f9f9;height:48px;display:flex;align-items:center;justify-content:center;border:1px solid #e1e1e1;border-top:none;border-radius:8px}.sd-table__wrapper .sd-table__pagination sd-select{position:absolute;right:10px;top:50%;transform:translateY(-50%)}";
2874
2800
 
2875
2801
  const SdTable = class {
2876
2802
  constructor(hostRef) {
@@ -2902,6 +2828,9 @@ const SdTable = class {
2902
2828
  { label: '50개씩 보기', value: 50 },
2903
2829
  { label: '100개씩 보기', value: 100 },
2904
2830
  ];
2831
+ useVirtualScroll = false; // 가상 스크롤 사용 여부
2832
+ virtualRowHeight = 44; // 가상 스크롤 사용시 각 행의 높이 - 가상 스크롤 사용시 필수값
2833
+ virtualBufferSize = 5; // 가상 스크롤 위아래 버퍼 크기
2905
2834
  sdSelectChange;
2906
2835
  sdPageChange;
2907
2836
  sdRowsPerPageChange;
@@ -2911,23 +2840,42 @@ const SdTable = class {
2911
2840
  columnWidths = [];
2912
2841
  scrolledLeft = false;
2913
2842
  scrolledRight = false;
2843
+ virtualStartIndex = 0; // 렌더링 시작 인덱스
2844
+ virtualEndIndex = 0; // 렌더링 종료 인덱스
2845
+ scrollTopPosition = 0;
2846
+ scrollRequestAnimationFrame = null;
2847
+ scrollContainer = null;
2914
2848
  handleColumnsChange(newCols) {
2915
2849
  this.columnWidths = newCols.map(c => parseInt(c.width || '120', 10));
2916
2850
  }
2917
2851
  handleRowsChange(newRows) {
2918
2852
  this.innerRows = [...newRows];
2853
+ if (this.useVirtualScroll) {
2854
+ requestAnimationFrame(() => {
2855
+ this.calculateVisibleRange();
2856
+ });
2857
+ }
2919
2858
  }
2920
2859
  handleSelectedChange(newSelected) {
2921
2860
  this.innerSelected = new Set(newSelected);
2922
2861
  }
2923
2862
  handlePaginationChange(newVal) {
2924
- if (newVal?.page && newVal.page !== this.currentPage)
2863
+ if (newVal?.page && newVal.page !== this.currentPage) {
2925
2864
  this.currentPage = newVal.page;
2865
+ if (this.useVirtualScroll && this.scrollContainer) {
2866
+ this.scrollContainer.scrollTop = 0;
2867
+ this.scrollTopPosition = 0;
2868
+ this.calculateVisibleRange();
2869
+ }
2870
+ }
2926
2871
  }
2927
2872
  componentWillLoad() {
2928
2873
  this.innerRows = [...(this.rows || [])];
2929
2874
  this.innerSelected = new Set(this.selected);
2930
2875
  this.columnWidths = (this.columns || []).map(c => parseInt(c.width || '120', 10));
2876
+ if (this.pagination?.page) {
2877
+ this.currentPage = this.pagination.page;
2878
+ }
2931
2879
  }
2932
2880
  componentDidLoad() {
2933
2881
  // SSR 환경 체크
@@ -2936,14 +2884,30 @@ const SdTable = class {
2936
2884
  const middle = this.el.querySelector('.sd-table__middle');
2937
2885
  if (!middle)
2938
2886
  return;
2887
+ this.scrollContainer = middle;
2939
2888
  const onScroll = () => {
2940
- const { scrollLeft, scrollWidth, clientWidth } = middle;
2889
+ const { scrollLeft, scrollWidth, clientWidth, scrollTop } = middle;
2941
2890
  this.scrolledLeft = scrollLeft > 0;
2942
2891
  this.scrolledRight = scrollLeft + clientWidth < scrollWidth;
2892
+ if (this.useVirtualScroll) {
2893
+ if (this.scrollRequestAnimationFrame !== null) {
2894
+ cancelAnimationFrame(this.scrollRequestAnimationFrame);
2895
+ }
2896
+ this.scrollRequestAnimationFrame = requestAnimationFrame(() => {
2897
+ this.scrollTopPosition = scrollTop;
2898
+ this.calculateVisibleRange();
2899
+ this.scrollRequestAnimationFrame = null;
2900
+ });
2901
+ }
2943
2902
  };
2944
2903
  middle.addEventListener('scroll', onScroll, { passive: true });
2945
2904
  onScroll();
2946
2905
  }
2906
+ disconnectedCallback() {
2907
+ if (this.scrollRequestAnimationFrame !== null) {
2908
+ cancelAnimationFrame(this.scrollRequestAnimationFrame);
2909
+ }
2910
+ }
2947
2911
  // ----- Derived getters -----
2948
2912
  get visibleColumns() {
2949
2913
  return this.columns.filter(col => col.visible !== false);
@@ -2955,6 +2919,33 @@ const SdTable = class {
2955
2919
  const result = this.innerRows.slice((this.currentPage - 1) * rowsPerPage, this.currentPage * rowsPerPage);
2956
2920
  return result;
2957
2921
  }
2922
+ get virtualRows() {
2923
+ if (!this.useVirtualScroll) {
2924
+ return this.paginatedRows.map((row, idx) => ({ row, actualIndex: idx }));
2925
+ }
2926
+ return this.paginatedRows
2927
+ .slice(this.virtualStartIndex, this.virtualEndIndex + 1)
2928
+ .map((row, relativeIdx) => ({
2929
+ row,
2930
+ actualIndex: this.virtualStartIndex + relativeIdx,
2931
+ }));
2932
+ }
2933
+ get topSpacerHeight() {
2934
+ if (!this.useVirtualScroll || this.virtualStartIndex === 0)
2935
+ return 0;
2936
+ return this.virtualStartIndex * this.virtualRowHeight;
2937
+ }
2938
+ get bottomSpacerHeight() {
2939
+ if (!this.useVirtualScroll)
2940
+ return 0;
2941
+ const remainingRows = this.paginatedRows.length - this.virtualEndIndex - 1;
2942
+ return remainingRows > 0 ? remainingRows * this.virtualRowHeight : 0;
2943
+ }
2944
+ get totalVirtualHeight() {
2945
+ if (!this.useVirtualScroll)
2946
+ return 0;
2947
+ return this.paginatedRows.length * this.virtualRowHeight;
2948
+ }
2958
2949
  get lastPageNumber() {
2959
2950
  const { lastPage, rowsPerPage = this.rows.length } = this.pagination || {};
2960
2951
  return lastPage ?? Math.max(1, Math.ceil(this.rows.length / rowsPerPage));
@@ -2975,20 +2966,21 @@ const SdTable = class {
2975
2966
  .join(' ');
2976
2967
  }
2977
2968
  // ----- Selection -----
2978
- // private isRowSelected(row: Row): boolean {
2979
- // return Array.from(this.innerSelected).some(r => r[this.rowKey] === row[this.rowKey]);
2980
- // }
2981
- // private updateRowSelect(row: Row) {
2982
- // const selectedArray = Array.from(this.innerSelected);
2983
- // const exists = this.isRowSelected(row);
2984
- // const newSelected = exists
2985
- // ? selectedArray.filter(r => r[this.rowKey] !== row[this.rowKey])
2986
- // : [...selectedArray, row];
2987
- // // 동일 상태면 set하지 않음 → 불필요 렌더 방지
2988
- // if (newSelected.length === selectedArray.length) return;
2989
- // this.innerSelected = new Set(newSelected);
2990
- // this.sdSelectChange.emit(Array.from(this.innerSelected));
2991
- // }
2969
+ isRowSelected(row) {
2970
+ return Array.from(this.innerSelected).some(r => r[this.rowKey] === row[this.rowKey]);
2971
+ }
2972
+ updateRowSelect(row) {
2973
+ const selectedArray = Array.from(this.innerSelected);
2974
+ const exists = this.isRowSelected(row);
2975
+ const newSelected = exists
2976
+ ? selectedArray.filter(r => r[this.rowKey] !== row[this.rowKey])
2977
+ : [...selectedArray, row];
2978
+ // 동일 상태면 set하지 않음 → 불필요 렌더 방지
2979
+ if (newSelected.length === selectedArray.length)
2980
+ return;
2981
+ this.innerSelected = new Set(newSelected);
2982
+ this.sdSelectChange.emit(Array.from(this.innerSelected));
2983
+ }
2992
2984
  toggleSelectAll(checked) {
2993
2985
  if (checked) {
2994
2986
  const pageRows = new Set([...this.paginatedRows]);
@@ -3009,6 +3001,20 @@ const SdTable = class {
3009
3001
  return true; // 전부 선택됨
3010
3002
  return null; // 일부만 선택됨
3011
3003
  }
3004
+ calculateVisibleRange() {
3005
+ if (!this.useVirtualScroll) {
3006
+ this.virtualStartIndex = 0;
3007
+ this.virtualEndIndex = this.paginatedRows.length - 1;
3008
+ return;
3009
+ }
3010
+ const scrollTop = this.scrollTopPosition;
3011
+ const containerHeight = this.scrollContainer?.clientHeight || 0;
3012
+ const startIndex = Math.floor(scrollTop / this.virtualRowHeight);
3013
+ const visibleCount = Math.ceil(containerHeight / this.virtualRowHeight);
3014
+ const endIndex = startIndex + visibleCount;
3015
+ this.virtualStartIndex = Math.max(0, startIndex - this.virtualBufferSize);
3016
+ this.virtualEndIndex = Math.min(this.paginatedRows.length - 1, endIndex + this.virtualBufferSize);
3017
+ }
3012
3018
  // ----- Helpers -----
3013
3019
  getStickyStyle(colIdx) {
3014
3020
  const leftOffset = this.columnWidths.slice(0, colIdx).reduce((a, b) => a + b, 0) + (this.selectable ? 52 : 0);
@@ -3030,7 +3036,12 @@ const SdTable = class {
3030
3036
  const startX = event.clientX;
3031
3037
  const startWidth = this.columnWidths[index];
3032
3038
  const handleMouseMove = (moveEvent) => {
3033
- const newWidth = Math.max(startWidth + moveEvent.clientX - startX, 50);
3039
+ const targetColumn = this.columnWidths[index];
3040
+ if (!targetColumn)
3041
+ return;
3042
+ const minWidth = this.columns[index]?.minWidth || 50;
3043
+ const maxWidth = this.columns[index]?.maxWidth || 9999;
3044
+ const newWidth = Math.min(Math.max(startWidth + moveEvent.clientX - startX, minWidth), maxWidth);
3034
3045
  this.columnWidths = this.columnWidths.map((width, idx) => (idx === index ? newWidth : width));
3035
3046
  };
3036
3047
  const handleMouseUp = () => {
@@ -3040,20 +3051,20 @@ const SdTable = class {
3040
3051
  document.addEventListener('mousemove', handleMouseMove);
3041
3052
  document.addEventListener('mouseup', handleMouseUp);
3042
3053
  }
3043
- // private getCellValue(column: SdTableColumn, row: Row) {
3044
- // const { field, format, name } = column;
3045
- // const value = typeof field === 'function' ? field(row) : field ? row[field] : row[name];
3046
- // return format ? format(value, row) : value;
3047
- // }
3054
+ getCellValue(column, row) {
3055
+ const { field, format, name } = column;
3056
+ const value = typeof field === 'function' ? field(row) : field ? row[field] : row[name];
3057
+ return format ? format(value, row) : value;
3058
+ }
3048
3059
  // ----- Render -----
3049
3060
  renderHeader() {
3050
- return (h("thead", null, h("sd-tr", null, this.selectable && (h("sd-th", { class: {
3061
+ return (h("thead", null, h("tr", null, this.selectable && (h("th", { class: {
3051
3062
  'sd-th': true,
3052
3063
  'sd-th--selected': true,
3053
3064
  'sticky-left': Boolean(this.stickyColumn.left && this.stickyColumn.left > 0),
3054
3065
  }, style: {
3055
3066
  '--sticky-left-offset': '0px',
3056
- } }, h("sd-checkbox", { checked: this.isAllChecked, disabled: !this.paginatedRows.length, onSdChange: (e) => this.toggleSelectAll(e.detail) }))), this.visibleColumns.map((col, colIdx) => (h("sd-th", { key: col.name, class: {
3067
+ } }, h("sd-checkbox", { checked: this.isAllChecked, disabled: !this.paginatedRows.length, onSdChange: (e) => this.toggleSelectAll(e.detail) }))), this.visibleColumns.map((col, colIdx) => (h("th", { key: col.name, class: {
3057
3068
  'sd-th': true,
3058
3069
  [`${col.thClass}`]: Boolean(col.thClass),
3059
3070
  'sticky-left': Boolean(this.stickyColumn.left && colIdx < this.stickyColumn.left),
@@ -3061,13 +3072,50 @@ const SdTable = class {
3061
3072
  'sticky-left-edge': Boolean(this.stickyColumn.left && colIdx === this.stickyColumn.left - 1),
3062
3073
  'sticky-right-edge': Boolean(this.stickyColumn.right &&
3063
3074
  colIdx === this.visibleColumns.length - this.stickyColumn.right),
3064
- }, style: this.getStickyStyle(colIdx) }, h("div", { class: `sd-th__content sd-th__content--${col.align || 'left'}` }, h("slot", { name: `header-cell-${col.name}` }, h("div", { class: "sd-th__content--label" }, col.label)), col.usePageMoveIcon && h("sd-icon", { name: "pageMove", size: "12", color: "#006AC1" }), col.tooltip && (h("sd-tooltip", { ...col.tooltipOptions }, h("div", { slot: "content" }, col.tooltip.map(text => (h("p", null, text))))))), this.resizable && typeof window !== 'undefined' && (h("div", { class: "sd-th__resizer", onMouseDown: (evt) => this.handleResize(colIdx, evt) }))))))));
3075
+ }, style: { ...col.thStyle, ...this.getStickyStyle(colIdx) } }, h("div", { class: `sd-th__content sd-th__content--${col.align || 'left'}` }, h("slot", { name: `header-cell-${col.name}` }, h("div", { class: "sd-th__content--label" }, col.label)), col.usePageMoveIcon && h("sd-icon", { name: "pageMove", size: "12", color: "#006AC1" }), col.tooltip && (h("sd-tooltip", { ...col.tooltipOptions }, h("div", { slot: "content" }, col.tooltip.map(text => (h("p", null, text))))))), this.resizable && typeof window !== 'undefined' && (h("div", { class: "sd-th__resizer", onMouseDown: (evt) => this.handleResize(colIdx, evt) }))))))));
3076
+ }
3077
+ renderBody() {
3078
+ return (h("tbody", { ...(!this.paginatedRows.length && { part: 'tbody-empty' }), class: `sd-table-tbody ${this.useVirtualScroll ? 'sd-table-tbody--virtual-scroll' : ''}`, style: { '--total-virtual-height': `${this.totalVirtualHeight}px` } }, this.isLoading && (h("div", { class: "sd-table__loading" }, h("sd-loading-spinner", null))), this.useVirtualScroll && this.topSpacerHeight > 0 && (h("tr", { key: "virtual-top-spacer", style: {
3079
+ height: `${this.topSpacerHeight}px`,
3080
+ }, "aria-hidden": "true" })), this.paginatedRows.length > 0 &&
3081
+ this.virtualRows.map(({ row, actualIndex }) => this.renderRow(row, actualIndex)), this.useVirtualScroll && this.bottomSpacerHeight > 0 && (h("tr", { key: "virtual-bottom-spacer", style: {
3082
+ height: `${this.bottomSpacerHeight}px`,
3083
+ }, "aria-hidden": "true" }))));
3084
+ }
3085
+ renderRow(row, rowIdx) {
3086
+ return (h("tr", { key: row[this.rowKey], class: "hover:bg-Grey_Lighten-6", style: this.useVirtualScroll
3087
+ ? {
3088
+ height: `${this.virtualRowHeight}px`,
3089
+ }
3090
+ : {} }, this.selectable && (h("td", { class: {
3091
+ 'sd-td': true,
3092
+ 'sd-td--selected': true,
3093
+ 'sticky-left': Boolean(this.stickyColumn.left && this.stickyColumn.left > 0),
3094
+ }, style: {
3095
+ '--sticky-left-offset': '0px',
3096
+ } }, h("sd-checkbox", { checked: this.isRowSelected(row), disabled: !this.paginatedRows.length, onSdChange: () => this.updateRowSelect(row) }))), this.visibleColumns.map((column, colIdx) => {
3097
+ const rendered = this.bodyCellRenderer?.(column, row);
3098
+ return (h("td", { key: column.name, part: `td-${column.name}`, class: {
3099
+ 'sd-td': true,
3100
+ [`sd-td--${column.align || 'left'}`]: true,
3101
+ 'sticky-left': Boolean(this.stickyColumn.left && colIdx < this.stickyColumn.left),
3102
+ 'sticky-right': Boolean(this.stickyColumn.right && colIdx >= this.visibleColumns.length - this.stickyColumn.right),
3103
+ 'sticky-left-edge': Boolean(this.stickyColumn.left && colIdx === this.stickyColumn.left - 1),
3104
+ 'sticky-right-edge': Boolean(this.stickyColumn.right &&
3105
+ colIdx === this.visibleColumns.length - this.stickyColumn.right),
3106
+ [`${column.tdClass}`]: Boolean(column.tdClass),
3107
+ }, style: this.getStickyStyle(colIdx) }, h("slot", { name: `body-cell-${column.name}-${rowIdx}` }, rendered ? (typeof rendered === 'string' ? (h("span", { innerHTML: rendered })) : (rendered)) : (this.getCellValue(column, row)))));
3108
+ })));
3065
3109
  }
3066
3110
  render() {
3067
- return (h(Host, { key: 'f5a96627bda89ab76d03781d8a84931cfac9d4d9' }, h("div", { key: '8f96a9381579acb56b5551de90b2f1dcb02db2ef', class: "sd-table__wrapper", style: {
3111
+ return (h(Host, { key: 'd115d90e244b233e0387352e7c26b3dea94e26a5' }, h("div", { key: '8c4f4b675a8448e9acddc5411a6ab2cb3ef489c5', class: "sd-table__wrapper", style: {
3068
3112
  '--table-width': this.width,
3069
3113
  '--table-height': this.height,
3070
- } }, h("div", { key: 'acf8435ff60702d0b54477edcea0f7a92dfe66ca', class: "sd-table__container" }, h("div", { key: 'ec02d6ceb21021c1cb9605a5bda1d0f44fbbd5af', class: "sd-table__middle", role: "table" }, h("div", { key: '40544c9ab218f8931ce2add45e1d8adb83423472', part: "table", class: this.sdTableClasses }, this.renderHeader(), h("sd-tbody", { key: '706311e5a9ddddacadcf632b22a25871cc066ce3' }, h("slot", { key: 'f6c415352bb3b3f91acf5852e3b6b53bd6567238' })))), h("div", { key: '5b95f5bb444839da29ded159327c7e09f3a07a58', class: "sd-table__bottom" })), this.pagination && this.innerRows.length > 0 && (h("div", { key: 'bdfadea5466840f4185bef70e06392cbc4b9d87b', class: "sd-table__pagination" }, h("sd-pagination", { key: '0683704cd48839846201048097836b337e4cf534', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onPageChange: (e) => {
3114
+ } }, h("div", { key: 'dd5c88ed37ab202dacb295c503ff2184b6440f5b', class: "sd-table__container" }, h("div", { key: '5cf3e8b5c99a486e494803319d76a7e32cf0f9a9', class: {
3115
+ 'sd-table__middle': true,
3116
+ 'sd-table__middle--scrollable': this.paginatedRows.length > 0,
3117
+ 'sd-table__middle--loading': this.isLoading,
3118
+ } }, h("table", { key: 'e73f16d894af4ef1c9ed657db6c1bc98ce855961', part: "table", class: this.sdTableClasses }, this.renderHeader(), this.renderBody())), h("div", { key: '462ad10d70dcff218b39a68a610cef43fe976de6', class: "sd-table__bottom" }, !this.paginatedRows.length && (h("div", { key: '865e54d58c0f7b67d7ad6b323f671bb837e074e4', class: "sd-table__no-data" }, h("slot", { key: '29b4a7f1eeaf588a4e6eed9d58adfd366b0dcce0', name: "no-data" }, this.noDataLabel))))), this.pagination && this.innerRows.length > 0 && (h("div", { key: '870b309d1876ea9880342d1d5da70619bb8fcaad', class: "sd-table__pagination" }, h("sd-pagination", { key: '1f037172e2220912c9f81a106ae6dcc30e267273', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onPageChange: (e) => {
3071
3119
  if (!this.useInternalPagination) {
3072
3120
  this.sdPageChange.emit(e.detail);
3073
3121
  }
@@ -3075,7 +3123,7 @@ const SdTable = class {
3075
3123
  this.currentPage = e.detail;
3076
3124
  this.sdPageChange.emit(this.currentPage);
3077
3125
  }
3078
- } }), this.useRowsPerPageSelect && (h("sd-select", { key: '6a555c46a088cf181b820da1b3ab312bf5e50c04', value: this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", onSdChange: (e) => {
3126
+ } }), this.useRowsPerPageSelect && (h("sd-select", { key: 'c767d22ce24a4c10886eeee8410362ac9391b22d', value: this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", onSdChange: (e) => {
3079
3127
  const changedRowsPerPage = e.detail.value ? Number(e.detail.value) : 0;
3080
3128
  if (!this.useInternalPagination) {
3081
3129
  this.sdRowsPerPageChange.emit(changedRowsPerPage);
@@ -3104,31 +3152,7 @@ const SdTable = class {
3104
3152
  "pagination": ["handlePaginationChange"]
3105
3153
  }; }
3106
3154
  };
3107
- SdTable.style = sdTableCss;
3108
-
3109
- const sdTbodyCss = "sd-tbody{display:table-row-group}";
3110
-
3111
- const SdTbody = class {
3112
- constructor(hostRef) {
3113
- registerInstance(this, hostRef);
3114
- }
3115
- render() {
3116
- return (h(Host, { key: '210b6c0005314fab15c92697347a3f21dd70ef6f' }, h("slot", { key: 'ea78b27ab6c8b131d4940d1b2fea20d90e6393f3' })));
3117
- }
3118
- };
3119
- SdTbody.style = sdTbodyCss;
3120
-
3121
- const sdThCss = "sd-th{display:table-cell;padding:12px;font-weight:bold;text-align:left;border-bottom:2px solid #ddd;background-color:#f1f1f1}";
3122
-
3123
- const SdTh = class {
3124
- constructor(hostRef) {
3125
- registerInstance(this, hostRef);
3126
- }
3127
- render() {
3128
- return (h(Host, { key: '1c1c403a374a1d575739457ea011e72cbbae2a8a', role: "columnheader" }, h("slot", { key: 'f5653df6fc113940f3c6fae07a74b43f5f116dae' })));
3129
- }
3130
- };
3131
- SdTh.style = sdThCss;
3155
+ SdTable.style = sdTableBackupCss;
3132
3156
 
3133
3157
  const sdTooltipCss = "sd-tooltip [slot=content]{display:none}sd-tooltip .sd-tooltip{position:relative;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.sd-tooltip-menu{width:fit-content;padding:8px 16px;border-radius:4px;font-size:12px;position:relative;box-sizing:border-box;display:flex;align-items:start;justify-content:center;gap:12px}.sd-tooltip-menu--with-close{padding-right:12px !important}.sd-tooltip-menu__arrow{position:absolute;display:flex;width:9.6px;height:7.2px}.sd-tooltip-menu__arrow svg{width:100%;height:100%}.sd-tooltip-menu__arrow--top{bottom:-7.2px;left:50%;transform:translateX(-50%)}.sd-tooltip-menu__arrow--bottom{top:-7.2px;left:50%;transform:translateX(-50%) rotate(180deg)}.sd-tooltip-menu__arrow--left{right:-7.2px;top:50%;transform:translateY(-50%) rotate(-90deg)}.sd-tooltip-menu__arrow--right{left:-7.2px;top:50%;transform:translateY(-50%) rotate(90deg)}.sd-tooltip-menu__content{line-height:20px;font-weight:500}.sd-tooltip-menu__content p{margin:0}.sd-tooltip-menu__close-button{padding-top:4px;display:flex}.sd-tooltip-menu__close-button button{padding:0;background:none;border:none;cursor:pointer}";
3134
3158
 
@@ -3178,20 +3202,20 @@ const SdTooltip = class {
3178
3202
  : {
3179
3203
  onClick: () => (this.showTooltip = !this.showTooltip),
3180
3204
  };
3181
- return (h(Fragment, { key: '11cc88df1f3afd9c6227f7e0bbf908605ab32f31' }, this.label ? (h("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: this.icon, size: this.buttonSize, color: this.color, variant: this.buttonVariant, class: "sd-tooltip", ...handleTrigger })) : (h("sd-icon", { ref: el => (this.buttonEl = el), name: this.icon, size: this.iconSize, color: this.color, class: "sd-tooltip", ...handleTrigger })), this.showTooltip && (h("sd-tooltip-portal", { key: 'b1c1d591b08d76b576ae307c752ff5399bf4e7ee', parentRef: this.buttonEl, onSdClose: () => this.handleClose(), placement: this.placement }, h("div", { key: '836d1ce210fb6358d92ac65a992ec111d53ef0a5', class: {
3205
+ return (h(Fragment, { key: 'fc892ba2872491bca673db93fed5c4b724c7141d' }, this.label ? (h("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: this.icon, size: this.buttonSize, color: this.color, variant: this.buttonVariant, class: "sd-tooltip", ...handleTrigger })) : (h("sd-icon", { ref: el => (this.buttonEl = el), name: this.icon, size: this.iconSize, color: this.color, class: "sd-tooltip", ...handleTrigger })), this.showTooltip && (h("sd-tooltip-portal", { key: 'd6b8099b49ffc120c05bd797e3eb2c2c9c40238e', parentRef: this.buttonEl, onSdClose: () => this.handleClose(), placement: this.placement }, h("div", { key: '06eca5d091eec639a556472605140bdccf6c4869', class: {
3182
3206
  'sd-tooltip-menu': true,
3183
3207
  [`sd-tooltip-menu--${this.type}`]: true,
3184
3208
  [`sd-tooltip-menu--${this.placement}`]: true,
3185
3209
  'sd-tooltip-menu--with-close': this.useClose,
3186
3210
  [`bg-${SdTooltip.COLOR_OF_TYPE[this.type].background}`]: true,
3187
3211
  [`text-${SdTooltip.COLOR_OF_TYPE[this.type].text}`]: true,
3188
- } }, h("i", { key: '43f7dfc3afde28f61d1b2a757f605c22712568dd', class: `sd-tooltip-menu__arrow sd-tooltip-menu__arrow--${this.placement}` }, h(TooltipArrow, { key: '58ddae5a489c5ae5ca8208f3e1d2003373a68d4e', class: {
3212
+ } }, h("i", { key: '38ad3f0461c6578140e9a0f253c1f0cd5343f0bf', class: `sd-tooltip-menu__arrow sd-tooltip-menu__arrow--${this.placement}` }, h(TooltipArrow, { key: '58b5d5e25512f191ee652c34815f8ad33a496a31', class: {
3189
3213
  [`text-${SdTooltip.COLOR_OF_TYPE[this.type].background}`]: true,
3190
- } })), h("div", { key: '259e21849cbd581f4b83247bb609efc3adffc62d', class: "sd-tooltip-menu__content", ref: el => {
3214
+ } })), h("div", { key: 'a29c4aa221aa9b833b9b0de101b658f5c5351ec0', class: "sd-tooltip-menu__content", ref: el => {
3191
3215
  if (el && this.slotContent && !el.hasChildNodes()) {
3192
3216
  el.appendChild(this.slotContent.cloneNode(true));
3193
3217
  }
3194
- } }, !this.slotContent && h("span", { key: '43aeb9bc7b62f880a80b14771a8a49f9af45dfe3' }, this.el.textContent)), this.useClose && (h("div", { key: '1d71390a6abec398a0f0be0955bc089116f880a0', class: "sd-tooltip-menu__close-button" }, h("button", { key: 'f3ff311db0b8633a2b7b692c9e6b51f5171bcaa7', type: "button", "aria-label": "Close tooltip", title: "Close tooltip", onClick: () => this.handleClose() }, h("sd-icon", { key: '6dc3a1234ba43406659707cb64b3fa21e96f25d2', name: "close", size: "12", color: "#AAAAAA" })))))))));
3218
+ } }, !this.slotContent && h("span", { key: 'a9e016d086156d522980b99187c9b040ccb232b9' }, this.el.textContent)), this.useClose && (h("div", { key: 'ae54793f18dcb7e759bd4ea2d7570cd56f45eb9a', class: "sd-tooltip-menu__close-button" }, h("button", { key: '1c3dc26d1bba1eaaed42757dae9a38613a86aea8', type: "button", "aria-label": "Close tooltip", title: "Close tooltip", onClick: () => this.handleClose() }, h("sd-icon", { key: '3b7f9dafaa7f1a3686f123a12acae6b35fd1849d', name: "close", size: "12", color: "#AAAAAA" })))))))));
3195
3219
  }
3196
3220
  };
3197
3221
  SdTooltip.style = sdTooltipCss;
@@ -3345,21 +3369,9 @@ const SdTooltipPortal = class {
3345
3369
  this.sdClose.emit();
3346
3370
  }
3347
3371
  render() {
3348
- return h("slot", { key: '918c09f6f9b248a6ba08e622c375b63adb36d0c3' });
3349
- }
3350
- };
3351
-
3352
- const sdTrCss = "sd-tr{display:table-row}";
3353
-
3354
- const SdTr = class {
3355
- constructor(hostRef) {
3356
- registerInstance(this, hostRef);
3357
- }
3358
- render() {
3359
- return (h(Host, { key: '2dc11b6c66458e889e231c422c06b5ddee7ae88a', role: "row" }, h("slot", { key: '66640e770921eda343e2798a0b167bae5db1fbca' })));
3372
+ return h("slot", { key: 'b8c60526ca9acb16821b1952b526fad452d1d5e7' });
3360
3373
  }
3361
3374
  };
3362
- SdTr.style = sdTrCss;
3363
3375
 
3364
- export { SdButton as sd_button, SdCheckbox as sd_checkbox, SdGuide as sd_guide, SdIcon as sd_icon, SdInput as sd_input, SdPagination as sd_pagination, SdPortal as sd_portal, SdSelect as sd_select, SdSelectOption as sd_select_option, SdTable as sd_table, SdTbody as sd_tbody, SdTh as sd_th, SdTooltip as sd_tooltip, SdTooltipPortal as sd_tooltip_portal, SdTr as sd_tr };
3365
- //# sourceMappingURL=sd-button.sd-checkbox.sd-guide.sd-icon.sd-input.sd-pagination.sd-portal.sd-select.sd-select-option.sd-table.sd-tbody.sd-th.sd-tooltip.sd-tooltip-portal.sd-tr.entry.js.map
3376
+ export { SdButton as sd_button, SdCheckbox as sd_checkbox, SdIcon as sd_icon, SdInput as sd_input, SdLoadingSpinner as sd_loading_spinner, SdPagination as sd_pagination, SdPortal as sd_portal, SdSelect as sd_select, SdSelectOption as sd_select_option, SdTable as sd_table_backup, SdTooltip as sd_tooltip, SdTooltipPortal as sd_tooltip_portal };
3377
+ //# sourceMappingURL=sd-button.sd-checkbox.sd-icon.sd-input.sd-loading-spinner.sd-pagination.sd-portal.sd-select.sd-select-option.sd-table-backup.sd-tooltip.sd-tooltip-portal.entry.js.map