@sellmate/design-system 0.0.24 → 0.0.26

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 (231) hide show
  1. package/dist/cjs/design-system.cjs.js +2 -2
  2. package/dist/cjs/{index-BjPOPvqs.js → index-DXo1Fhkn.js} +3 -3
  3. package/dist/cjs/index-DXo1Fhkn.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/{esm/color-CgyTlXBV.js → cjs/resolveColor-DxvExwgo.js} +17 -4
  6. package/dist/{esm/resolveColor-CswQ9y2Q.js.map → cjs/resolveColor-DxvExwgo.js.map} +1 -1
  7. package/dist/cjs/sd-badge.cjs.entry.js +3 -4
  8. package/dist/cjs/sd-badge.entry.cjs.js.map +1 -1
  9. 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-tooltip.sd-tooltip-portal.entry.cjs.js.map +1 -0
  10. package/dist/cjs/{sd-checkbox_9.cjs.entry.js → sd-button_12.cjs.entry.js} +739 -817
  11. package/dist/cjs/sd-card.cjs.entry.js +2 -2
  12. package/dist/cjs/sd-date-box.cjs.entry.js +1 -1
  13. package/dist/cjs/sd-date-picker.cjs.entry.js +3 -3
  14. package/dist/cjs/sd-date-range-picker.cjs.entry.js +3 -3
  15. package/dist/cjs/sd-popover.cjs.entry.js +4 -4
  16. package/dist/cjs/sd-select-multiple-group.cjs.entry.js +380 -0
  17. package/dist/cjs/sd-select-multiple-group.entry.cjs.js.map +1 -0
  18. package/dist/cjs/sd-select-multiple.cjs.entry.js +263 -0
  19. package/dist/cjs/sd-select-multiple.entry.cjs.js.map +1 -0
  20. package/dist/cjs/sd-select-option-group.cjs.entry.js +69 -0
  21. package/dist/cjs/sd-select-option-group.entry.cjs.js.map +1 -0
  22. package/dist/cjs/sd-tag.cjs.entry.js +2 -2
  23. package/dist/cjs/select-keyboard-navigation-6fO_V4En.js +119 -0
  24. package/dist/cjs/select-keyboard-navigation-6fO_V4En.js.map +1 -0
  25. package/dist/cjs/{tooltipArrow-qwvq153k.js → tooltipArrow-DNiGFQNW.js} +3 -3
  26. package/dist/cjs/{tooltipArrow-qwvq153k.js.map → tooltipArrow-DNiGFQNW.js.map} +1 -1
  27. package/dist/collection/components/sd-badge/sd-badge.js +1 -1
  28. package/dist/collection/components/sd-card/sd-card.js +1 -1
  29. package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
  30. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +2 -2
  31. package/dist/collection/components/sd-guide/sd-guide.css +6 -1
  32. package/dist/collection/components/sd-guide/sd-guide.js +4 -4
  33. package/dist/collection/components/sd-guide/sd-guide.js.map +1 -1
  34. package/dist/collection/components/sd-icon/sd-icon.js +1 -1
  35. package/dist/collection/components/sd-input/sd-input.js +2 -2
  36. package/dist/collection/components/sd-pagination/sd-pagination.js +2 -3
  37. package/dist/collection/components/sd-pagination/sd-pagination.js.map +1 -1
  38. package/dist/collection/components/sd-popover/sd-popover.js +2 -2
  39. package/dist/collection/components/sd-portal/sd-portal.js +25 -4
  40. package/dist/collection/components/sd-portal/sd-portal.js.map +1 -1
  41. package/dist/collection/components/sd-select/sd-select-option/sd-select-option.js +1 -1
  42. package/dist/collection/components/sd-select/sd-select.css +0 -6
  43. package/dist/collection/components/sd-select-multiple/sd-select-multiple.css +0 -6
  44. package/dist/collection/components/sd-select-multiple/sd-select-multiple.js +2 -2
  45. package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.css +0 -6
  46. package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.js +3 -3
  47. package/dist/collection/components/sd-table/sd-table.css +7 -1316
  48. package/dist/collection/components/sd-table/sd-table.js +70 -5
  49. package/dist/collection/components/sd-table/sd-table.js.map +1 -1
  50. package/dist/collection/components/sd-tag/sd-tag.js +1 -1
  51. package/dist/collection/components/sd-tooltip/sd-tooltip.css +67 -1
  52. package/dist/collection/components/sd-tooltip/sd-tooltip.js +4 -5
  53. package/dist/collection/components/sd-tooltip/sd-tooltip.js.map +1 -1
  54. package/dist/collection/components/sd-tooltip-portal/sd-tooltip-portal.js +1 -1
  55. package/dist/components/index.js +1 -1
  56. package/dist/components/{p-Bl-wgv-z.js → p-B9QE7fbR.js} +6 -6
  57. package/dist/components/{p-Bl-wgv-z.js.map → p-B9QE7fbR.js.map} +1 -1
  58. package/dist/components/{p-CZG8wDBH.js → p-BWF8FOjZ.js} +4 -4
  59. package/dist/components/{p-CZG8wDBH.js.map → p-BWF8FOjZ.js.map} +1 -1
  60. package/dist/components/{p-Cxrr7vOk.js → p-BhRUodRD.js} +13 -14
  61. package/dist/components/p-BhRUodRD.js.map +1 -0
  62. package/dist/components/{p-nehvpX7w.js → p-BtS3tSh2.js} +4 -4
  63. package/dist/components/{p-nehvpX7w.js.map → p-BtS3tSh2.js.map} +1 -1
  64. package/dist/components/{p-DpiRZxT1.js → p-BttJlXkp.js} +6 -6
  65. package/dist/components/{p-DpiRZxT1.js.map → p-BttJlXkp.js.map} +1 -1
  66. package/dist/components/{p-Bfro0I6y.js → p-BvuTaRpn.js} +3 -3
  67. package/dist/components/{p-Bfro0I6y.js.map → p-BvuTaRpn.js.map} +1 -1
  68. package/dist/components/{p-DNUN6dGL.js → p-CMFEznYN.js} +7 -8
  69. package/dist/components/p-CMFEznYN.js.map +1 -0
  70. package/dist/components/{p-e74imoE0.js → p-Cafw-qR4.js} +3 -3
  71. package/dist/components/{p-e74imoE0.js.map → p-Cafw-qR4.js.map} +1 -1
  72. package/dist/components/{p-DzRr3BEe.js → p-CbnL1UUF.js} +3 -3
  73. package/dist/components/p-CbnL1UUF.js.map +1 -0
  74. package/dist/components/p-CkHD07WH.js +323 -0
  75. package/dist/components/p-CkHD07WH.js.map +1 -0
  76. package/dist/components/{p-BqIcTSCQ.js → p-Cs1Kf3Tx.js} +4 -4
  77. package/dist/components/{p-BqIcTSCQ.js.map → p-Cs1Kf3Tx.js.map} +1 -1
  78. package/dist/components/{p-aU8C4Pcb.js → p-DWYqZdbI.js} +8 -8
  79. package/dist/components/{p-aU8C4Pcb.js.map → p-DWYqZdbI.js.map} +1 -1
  80. package/dist/components/{p-CbTvFUCY.js → p-DtOWZESA.js} +28 -7
  81. package/dist/components/p-DtOWZESA.js.map +1 -0
  82. package/dist/components/{p-QBJzxOWs.js → p-hf6YF2Mx.js} +4 -4
  83. package/dist/components/{p-QBJzxOWs.js.map → p-hf6YF2Mx.js.map} +1 -1
  84. package/dist/components/{p-BvOGkIDI.js → p-wA4KCOG0.js} +3 -3
  85. package/dist/components/{p-BvOGkIDI.js.map → p-wA4KCOG0.js.map} +1 -1
  86. package/dist/components/sd-badge.js +2 -2
  87. package/dist/components/sd-button.js +1 -1
  88. package/dist/components/sd-card.js +2 -2
  89. package/dist/components/sd-checkbox.js +1 -1
  90. package/dist/components/sd-date-box.js +1 -1
  91. package/dist/components/sd-date-picker.js +7 -7
  92. package/dist/components/sd-date-range-picker.js +7 -7
  93. package/dist/components/sd-guide.js +9 -9
  94. package/dist/components/sd-guide.js.map +1 -1
  95. package/dist/components/sd-icon.js +1 -1
  96. package/dist/components/sd-input.js +1 -1
  97. package/dist/components/sd-pagination.js +1 -1
  98. package/dist/components/sd-popover.js +7 -7
  99. package/dist/components/sd-portal.js +1 -1
  100. package/dist/components/sd-select-multiple-group.js +8 -8
  101. package/dist/components/sd-select-multiple-group.js.map +1 -1
  102. package/dist/components/sd-select-multiple.js +10 -10
  103. package/dist/components/sd-select-multiple.js.map +1 -1
  104. package/dist/components/sd-select-option-group.js +1 -1
  105. package/dist/components/sd-select-option.js +1 -1
  106. package/dist/components/sd-select.js +1 -318
  107. package/dist/components/sd-select.js.map +1 -1
  108. package/dist/components/sd-table.js +64 -17
  109. package/dist/components/sd-table.js.map +1 -1
  110. package/dist/components/sd-tag.js +2 -2
  111. package/dist/components/sd-tooltip-portal.js +1 -1
  112. package/dist/components/sd-tooltip.js +1 -1
  113. package/dist/design-system/design-system.css +1 -1
  114. package/dist/design-system/design-system.esm.js +1 -1
  115. package/dist/design-system/p-054ae376.entry.js +2 -0
  116. package/dist/design-system/p-054ae376.entry.js.map +1 -0
  117. package/dist/design-system/{p-b537f724.entry.js → p-12134716.entry.js} +2 -2
  118. package/dist/design-system/p-12b6c1a5.entry.js +2 -0
  119. package/dist/design-system/p-12b6c1a5.entry.js.map +1 -0
  120. package/dist/design-system/p-3d9fccae.entry.js +2 -0
  121. package/dist/design-system/p-3d9fccae.entry.js.map +1 -0
  122. package/dist/design-system/{p-691dc436.entry.js → p-871c8d66.entry.js} +2 -2
  123. package/dist/design-system/p-9975f6f3.entry.js +2 -0
  124. package/dist/design-system/p-9975f6f3.entry.js.map +1 -0
  125. package/dist/design-system/{p-CqOU6L62.js → p-B2T3tS5r.js} +3 -3
  126. package/dist/design-system/p-B2T3tS5r.js.map +1 -0
  127. package/dist/design-system/p-BE6EMCXm.js +2 -0
  128. package/dist/design-system/{p-BUzABVug.js.map → p-BE6EMCXm.js.map} +1 -1
  129. package/dist/design-system/{p-CgyTlXBV.js → p-BYf-ybt2.js} +2 -2
  130. package/dist/design-system/{p-BoLmB6pG.js.map → p-BYf-ybt2.js.map} +1 -1
  131. package/dist/design-system/p-C2JaR3A6.js +2 -0
  132. package/dist/design-system/p-C2JaR3A6.js.map +1 -0
  133. package/dist/design-system/{p-2aef624e.entry.js → p-a7ab1b43.entry.js} +2 -2
  134. package/dist/design-system/p-af3a1dbb.entry.js +2 -0
  135. package/dist/design-system/p-d1aa75e7.entry.js +2 -0
  136. package/dist/design-system/p-e061c4f8.entry.js +2 -0
  137. package/dist/design-system/p-e061c4f8.entry.js.map +1 -0
  138. package/dist/design-system/{p-c4f5ed94.entry.js → p-e25d96e4.entry.js} +2 -2
  139. package/dist/design-system/sd-badge.entry.esm.js.map +1 -1
  140. 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-tooltip.sd-tooltip-portal.entry.esm.js.map +1 -0
  141. package/dist/design-system/sd-select-multiple-group.entry.esm.js.map +1 -0
  142. package/dist/design-system/sd-select-multiple.entry.esm.js.map +1 -0
  143. package/dist/design-system/sd-select-option-group.entry.esm.js.map +1 -0
  144. package/dist/esm/design-system.js +3 -3
  145. package/dist/esm/{index-CqOU6L62.js → index-B2T3tS5r.js} +3 -3
  146. package/dist/esm/index-B2T3tS5r.js.map +1 -0
  147. package/dist/esm/loader.js +3 -3
  148. package/dist/{cjs/color-Oz29vj7L.js → esm/resolveColor-BYf-ybt2.js} +14 -6
  149. package/dist/{cjs/resolveColor-CauSLF0s.js.map → esm/resolveColor-BYf-ybt2.js.map} +1 -1
  150. package/dist/esm/sd-badge.entry.js +3 -4
  151. package/dist/esm/sd-badge.entry.js.map +1 -1
  152. 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-tooltip.sd-tooltip-portal.entry.js.map +1 -0
  153. package/dist/esm/{sd-checkbox_9.entry.js → sd-button_12.entry.js} +732 -813
  154. package/dist/esm/sd-card.entry.js +2 -2
  155. package/dist/esm/sd-date-box.entry.js +1 -1
  156. package/dist/esm/sd-date-picker.entry.js +3 -3
  157. package/dist/esm/sd-date-range-picker.entry.js +3 -3
  158. package/dist/esm/sd-popover.entry.js +4 -4
  159. package/dist/esm/sd-select-multiple-group.entry.js +378 -0
  160. package/dist/esm/sd-select-multiple-group.entry.js.map +1 -0
  161. package/dist/esm/sd-select-multiple.entry.js +261 -0
  162. package/dist/esm/sd-select-multiple.entry.js.map +1 -0
  163. package/dist/esm/sd-select-option-group.entry.js +67 -0
  164. package/dist/esm/sd-select-option-group.entry.js.map +1 -0
  165. package/dist/esm/sd-tag.entry.js +2 -2
  166. package/dist/esm/select-keyboard-navigation-C2JaR3A6.js +116 -0
  167. package/dist/esm/select-keyboard-navigation-C2JaR3A6.js.map +1 -0
  168. package/dist/esm/{tooltipArrow-hOEWkZyH.js → tooltipArrow-Pa2XQhpp.js} +3 -3
  169. package/dist/esm/{tooltipArrow-hOEWkZyH.js.map → tooltipArrow-Pa2XQhpp.js.map} +1 -1
  170. package/dist/types/components/sd-table/sd-table.d.ts +3 -0
  171. package/dist/types/components.d.ts +16 -0
  172. package/hydrate/index.js +90 -46
  173. package/hydrate/index.mjs +90 -46
  174. package/package.json +2 -2
  175. package/dist/cjs/color-Oz29vj7L.js.map +0 -1
  176. package/dist/cjs/index-BjPOPvqs.js.map +0 -1
  177. package/dist/cjs/resolveColor-CauSLF0s.js +0 -18
  178. package/dist/cjs/sd-button.sd-tooltip-portal.entry.cjs.js.map +0 -1
  179. package/dist/cjs/sd-button_2.cjs.entry.js +0 -221
  180. package/dist/cjs/sd-checkbox.sd-icon.sd-input.sd-portal.sd-select.sd-select-multiple.sd-select-multiple-group.sd-select-option.sd-select-option-group.entry.cjs.js.map +0 -1
  181. package/dist/cjs/sd-guide.cjs.entry.js +0 -84
  182. package/dist/cjs/sd-guide.entry.cjs.js.map +0 -1
  183. package/dist/cjs/sd-pagination.sd-tooltip.entry.cjs.js.map +0 -1
  184. package/dist/cjs/sd-pagination_2.cjs.entry.js +0 -168
  185. package/dist/cjs/sd-table.cjs.entry.js +0 -237
  186. package/dist/cjs/sd-table.entry.cjs.js.map +0 -1
  187. package/dist/components/p-CbTvFUCY.js.map +0 -1
  188. package/dist/components/p-Cxrr7vOk.js.map +0 -1
  189. package/dist/components/p-DNUN6dGL.js.map +0 -1
  190. package/dist/components/p-DzRr3BEe.js.map +0 -1
  191. package/dist/design-system/p-158f9392.entry.js +0 -2
  192. package/dist/design-system/p-158f9392.entry.js.map +0 -1
  193. package/dist/design-system/p-37042d15.entry.js +0 -2
  194. package/dist/design-system/p-37042d15.entry.js.map +0 -1
  195. package/dist/design-system/p-949de8eb.entry.js +0 -2
  196. package/dist/design-system/p-949de8eb.entry.js.map +0 -1
  197. package/dist/design-system/p-9f5eed30.entry.js +0 -2
  198. package/dist/design-system/p-BUzABVug.js +0 -2
  199. package/dist/design-system/p-BoLmB6pG.js +0 -2
  200. package/dist/design-system/p-CgyTlXBV.js.map +0 -1
  201. package/dist/design-system/p-CqOU6L62.js.map +0 -1
  202. package/dist/design-system/p-adee3154.entry.js +0 -2
  203. package/dist/design-system/p-adee3154.entry.js.map +0 -1
  204. package/dist/design-system/p-bda05b6f.entry.js +0 -2
  205. package/dist/design-system/p-bda05b6f.entry.js.map +0 -1
  206. package/dist/design-system/p-f015c024.entry.js +0 -2
  207. package/dist/design-system/p-f6a1ff99.entry.js +0 -2
  208. package/dist/design-system/p-f6a1ff99.entry.js.map +0 -1
  209. package/dist/design-system/sd-button.sd-tooltip-portal.entry.esm.js.map +0 -1
  210. package/dist/design-system/sd-checkbox.sd-icon.sd-input.sd-portal.sd-select.sd-select-multiple.sd-select-multiple-group.sd-select-option.sd-select-option-group.entry.esm.js.map +0 -1
  211. package/dist/design-system/sd-guide.entry.esm.js.map +0 -1
  212. package/dist/design-system/sd-pagination.sd-tooltip.entry.esm.js.map +0 -1
  213. package/dist/design-system/sd-table.entry.esm.js.map +0 -1
  214. package/dist/esm/color-CgyTlXBV.js.map +0 -1
  215. package/dist/esm/index-CqOU6L62.js.map +0 -1
  216. package/dist/esm/resolveColor-CswQ9y2Q.js +0 -16
  217. package/dist/esm/sd-button.sd-tooltip-portal.entry.js.map +0 -1
  218. package/dist/esm/sd-button_2.entry.js +0 -218
  219. package/dist/esm/sd-checkbox.sd-icon.sd-input.sd-portal.sd-select.sd-select-multiple.sd-select-multiple-group.sd-select-option.sd-select-option-group.entry.js.map +0 -1
  220. package/dist/esm/sd-guide.entry.js +0 -82
  221. package/dist/esm/sd-guide.entry.js.map +0 -1
  222. package/dist/esm/sd-pagination.sd-tooltip.entry.js.map +0 -1
  223. package/dist/esm/sd-pagination_2.entry.js +0 -165
  224. package/dist/esm/sd-table.entry.js +0 -235
  225. package/dist/esm/sd-table.entry.js.map +0 -1
  226. /package/dist/design-system/{p-b537f724.entry.js.map → p-12134716.entry.js.map} +0 -0
  227. /package/dist/design-system/{p-691dc436.entry.js.map → p-871c8d66.entry.js.map} +0 -0
  228. /package/dist/design-system/{p-2aef624e.entry.js.map → p-a7ab1b43.entry.js.map} +0 -0
  229. /package/dist/design-system/{p-f015c024.entry.js.map → p-af3a1dbb.entry.js.map} +0 -0
  230. /package/dist/design-system/{p-9f5eed30.entry.js.map → p-d1aa75e7.entry.js.map} +0 -0
  231. /package/dist/design-system/{p-c4f5ed94.entry.js.map → p-e25d96e4.entry.js.map} +0 -0
@@ -1,82 +0,0 @@
1
- import { r as registerInstance, a as getElement, h, H as Host } from './index-CqOU6L62.js';
2
- import { c as colors } from './color-CgyTlXBV.js';
3
-
4
- 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}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}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}";
5
-
6
- const GUIDE_LABEL = {
7
- help: '활용 TIP',
8
- pdf: 'PDF Guide',
9
- youtube: 'Video Guide',
10
- notion: '사용 가이드',
11
- event: 'Event Button',
12
- };
13
- const GUIDE_ICON = {
14
- help: {
15
- name: 'helpOutline',
16
- size: 20,
17
- color: colors.green_65,
18
- },
19
- pdf: { name: 'pdf', size: 20, color: colors.red_75 },
20
- youtube: { name: 'youtube', size: 20, color: colors.red_75 },
21
- notion: { name: 'notion', size: 16, color: colors.black },
22
- event: { name: 'event', size: 16, color: colors.brilliantblue_70 },
23
- };
24
- const SdGuide = class {
25
- constructor(hostRef) {
26
- registerInstance(this, hostRef);
27
- }
28
- get el() { return getElement(this); }
29
- type = 'help';
30
- label = '';
31
- message = '';
32
- guideUrl = '';
33
- popupWidth;
34
- popupShow = false;
35
- guideRef;
36
- handleClickGuide = () => {
37
- if (this.type === 'help') {
38
- this.popupShow = !this.popupShow;
39
- return;
40
- }
41
- if (this.guideUrl) {
42
- window.open(this.guideUrl, '_blank');
43
- }
44
- };
45
- get guideClass() {
46
- const classes = ['sd-guide', `sd-guide--${this.type}`];
47
- if (this.popupShow)
48
- classes.push('sd-guide--active');
49
- return classes.join(' ');
50
- }
51
- closeDropdown = () => {
52
- this.popupShow = false;
53
- };
54
- render() {
55
- const { name: iconName, size: iconSize, color: iconColor } = GUIDE_ICON[this.type];
56
- return (h(Host, { key: '6cb7472ea6718a325174a57d4de427e5d4fa6c52', style: {
57
- '--sd-guide-color': GUIDE_ICON[this.type].color,
58
- } }, h("sd-button", { key: 'c4672172d4a2d1a24aea7876987bb28ac80fc374', 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: '5b5767e9faefef34f885f2625428c2ca8d439435', open: this.popupShow, parentRef: this.guideRef, onSdClose: this.closeDropdown, offset: [0, 4] }, h("div", { key: '9ebbf396ef0fe7a189285e5c71aec2a5293e6406', class: "sd-guide__popup", style: { width: this.popupWidth ? this.popupWidth + 'px' : '426px' } }, h("sd-button", { key: '8d68bd99088adaf1b572dd2fa03047c9fa3d5887', class: "sd-guide__popup__close", icon: "close", color: colors.grey_65, size: "md", variant: "ghost", noHover: true,
59
- // buttonStyle={{ padding: '0px', minHeight: '0px' }}
60
- onSdClick: this.closeDropdown }), h("div", { key: 'bb58bbdc336075e4ef65ef7f16a6320303b41c30', class: "sd-guide__popup__header" }, h("sd-icon", { key: 'fd631d6e0631fb59b81d50d458b97b2725c0fafb', name: "helpOutline", size: 24, color: colors.green_65 }), h("h3", { key: '0692203e362f4b6acb43c815a86d3ac64a8f036d', class: "sd-guide__popup__title" }, this.label || GUIDE_LABEL[this.type])), h("ul", { key: '9573043a5bd61ed040df3c09e42daca8a3f35b7a', class: "sd-guide__popup__list" }, this.renderListItem(this.message)))))));
61
- }
62
- // 현재 2depth까지만 스타일 적용
63
- renderListItem(message, depth = 0) {
64
- const listItems = [];
65
- if (Array.isArray(message)) {
66
- const depthMsg = message.map(msg => this.renderListItem(msg, depth + 1));
67
- listItems.push(...depthMsg.flat());
68
- }
69
- else {
70
- listItems.push(this.renderLi(message, depth));
71
- }
72
- return listItems;
73
- }
74
- renderLi = (message, depth) => {
75
- const listContent = message.replace(/ /gi, ' ');
76
- return (h("li", { class: `sd-guide__popup__list__item sd-guide__popup__list__item--depth-${depth}` }, h("p", { innerHTML: listContent })));
77
- };
78
- };
79
- SdGuide.style = sdGuideCss;
80
-
81
- export { SdGuide as sd_guide };
82
- //# sourceMappingURL=sd-guide.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-guide.entry.js","sources":["src/components/sd-guide/sd-guide.scss?tag=sd-guide","src/components/sd-guide/sd-guide.tsx"],"sourcesContent":["@import '../sd-button/sd-button.scss';\r\n\r\nsd-guide {\r\n display: inline-block;\r\n height: fit-content;\r\n .sd-guide {\r\n display: inline-block;\r\n .sd-button {\r\n padding: 0 16px 0 12px;\r\n border-radius: 16px;\r\n color: $grey_90 !important;\r\n display: flex;\r\n align-items: center;\r\n\r\n .sd-button__content {\r\n color: $grey_90 !important;\r\n\r\n .sd-button__label {\r\n color: $grey_90 !important;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &--active {\r\n .sd-button {\r\n .sd-button__content {\r\n .sd-button__label {\r\n color: white !important;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.sd-guide__popup {\r\n position: relative;\r\n padding: 20px 32px;\r\n border-radius: 8px;\r\n box-shadow: 4px 4px 24px 4px rgba(0, 0, 0, 0.1);\r\n background: white;\r\n\r\n > .sd-guide__popup__close {\r\n position: absolute;\r\n top: 12px;\r\n right: 12px;\r\n }\r\n\r\n &__header {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-bottom: 12px;\r\n\r\n .sd-guide__popup__title {\r\n margin-top: 0;\r\n font-size: 16px;\r\n font-weight: 700;\r\n line-height: 26px;\r\n color: $grey_90;\r\n }\r\n }\r\n\r\n &__list {\r\n width: 100%;\r\n padding: 0;\r\n margin: 0;\r\n\r\n &__item {\r\n display: flex;\r\n width: 100%;\r\n align-items: start;\r\n list-style: none;\r\n color: $grey_90;\r\n font-size: 12px;\r\n font-weight: 400;\r\n\r\n p {\r\n width: 100%;\r\n padding: 0;\r\n margin: 0;\r\n word-wrap: break-word;\r\n word-break: break-word;\r\n white-space: normal;\r\n overflow-wrap: break-word;\r\n min-width: 0;\r\n }\r\n\r\n &::before {\r\n display: block;\r\n content: '-';\r\n width: 6px;\r\n color: $grey_90;\r\n font-size: 12px;\r\n font-weight: 400;\r\n margin-left: 10px;\r\n margin-right: 12px;\r\n flex-shrink: 0;\r\n }\r\n\r\n &--depth-2 {\r\n &::before {\r\n content: '•';\r\n }\r\n padding-left: 26px;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, Element, Host, Prop, State, h } from '@stencil/core';\r\nimport colors from '../../styles/color.json';\r\n\r\ntype GuideType = 'help' | 'pdf' | 'youtube' | 'notion' | 'event';\r\n\r\nconst GUIDE_LABEL = {\r\n help: '활용 TIP',\r\n pdf: 'PDF Guide',\r\n youtube: 'Video Guide',\r\n notion: '사용 가이드',\r\n event: 'Event Button',\r\n};\r\n\r\nconst GUIDE_ICON = {\r\n help: {\r\n name: 'helpOutline',\r\n size: 20,\r\n color: colors.green_65,\r\n },\r\n pdf: { name: 'pdf', size: 20, color: colors.red_75 },\r\n youtube: { name: 'youtube', size: 20, color: colors.red_75 },\r\n notion: { name: 'notion', size: 16, color: colors.black },\r\n event: { name: 'event', size: 16, color: colors.brilliantblue_70 },\r\n} as const;\r\n\r\n@Component({\r\n tag: 'sd-guide',\r\n styleUrl: 'sd-guide.scss',\r\n})\r\nexport class SdGuide {\r\n @Element() el!: HTMLElement;\r\n\r\n @Prop() type: GuideType = 'help';\r\n @Prop() label: string = '';\r\n @Prop() message: string | string[] = '';\r\n @Prop() guideUrl: string = '';\r\n @Prop() popupWidth?: number;\r\n\r\n @State() popupShow: boolean = false;\r\n\r\n private guideRef?: HTMLElement;\r\n\r\n private handleClickGuide = () => {\r\n if (this.type === 'help') {\r\n this.popupShow = !this.popupShow;\r\n return;\r\n }\r\n\r\n if (this.guideUrl) {\r\n window.open(this.guideUrl, '_blank');\r\n }\r\n };\r\n\r\n private get guideClass(): string {\r\n const classes = ['sd-guide', `sd-guide--${this.type}`];\r\n\r\n if (this.popupShow) classes.push('sd-guide--active');\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n closeDropdown = () => {\r\n this.popupShow = false;\r\n };\r\n\r\n render() {\r\n const { name: iconName, size: iconSize, color: iconColor } = GUIDE_ICON[this.type];\r\n\r\n return (\r\n <Host\r\n style={{\r\n '--sd-guide-color': GUIDE_ICON[this.type].color,\r\n }}\r\n >\r\n <sd-button\r\n ref={el => (this.guideRef = el as unknown as HTMLElement)}\r\n class={this.guideClass}\r\n variant={this.popupShow ? 'primary' : 'outline'}\r\n label={GUIDE_LABEL[this.type]}\r\n size=\"sm\"\r\n color={this.popupShow ? GUIDE_ICON[this.type].color : 'grey_45'}\r\n icon={iconName}\r\n iconColor={this.popupShow ? 'white' : iconColor}\r\n iconSize={iconSize}\r\n noHover={this.popupShow}\r\n onSdClick={this.handleClickGuide}\r\n />\r\n {this.type === 'help' && this.popupShow && (\r\n <sd-portal\r\n open={this.popupShow}\r\n parentRef={this.guideRef}\r\n onSdClose={this.closeDropdown}\r\n offset={[0, 4]}\r\n >\r\n <div\r\n class=\"sd-guide__popup\"\r\n style={{ width: this.popupWidth ? this.popupWidth + 'px' : '426px' } as any}\r\n >\r\n <sd-button\r\n class=\"sd-guide__popup__close\"\r\n icon=\"close\"\r\n color={colors.grey_65}\r\n size=\"md\"\r\n variant=\"ghost\"\r\n noHover\r\n // buttonStyle={{ padding: '0px', minHeight: '0px' }}\r\n onSdClick={this.closeDropdown}\r\n />\r\n <div class=\"sd-guide__popup__header\">\r\n <sd-icon name=\"helpOutline\" size={24} color={colors.green_65} />\r\n <h3 class=\"sd-guide__popup__title\">{this.label || GUIDE_LABEL[this.type]}</h3>\r\n </div>\r\n <ul class=\"sd-guide__popup__list\">{this.renderListItem(this.message)}</ul>\r\n </div>\r\n </sd-portal>\r\n )}\r\n </Host>\r\n );\r\n }\r\n\r\n // 현재 2depth까지만 스타일 적용\r\n renderListItem(message: string | string[], depth: number = 0): HTMLElement[] {\r\n const listItems: HTMLElement[] = [];\r\n\r\n if (Array.isArray(message)) {\r\n const depthMsg = message.map(msg => this.renderListItem(msg, depth + 1));\r\n listItems.push(...depthMsg.flat());\r\n } else {\r\n listItems.push(this.renderLi(message, depth));\r\n }\r\n\r\n return listItems;\r\n }\r\n\r\n renderLi = (message: string, depth: number) => {\r\n const listContent = message.replace(/ /gi, '&nbsp;');\r\n return (\r\n <li class={`sd-guide__popup__list__item sd-guide__popup__list__item--depth-${depth}`}>\r\n <p innerHTML={listContent}></p>\r\n </li>\r\n );\r\n };\r\n}\r\n"],"names":[],"mappings":";;;AAAA,MAAM,UAAU,GAAG,4oHAA4oH;;ACK/pH,MAAM,WAAW,GAAG;AACnB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,cAAc;CACrB;AAED,MAAM,UAAU,GAAG;AAClB,IAAA,IAAI,EAAE;AACL,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,MAAM,CAAC,QAAQ;AACtB,KAAA;AACD,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;AACpD,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;AAC5D,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;AACzD,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE;CACzD;MAMG,OAAO,GAAA,MAAA;;;;;IAGX,IAAI,GAAc,MAAM;IACxB,KAAK,GAAW,EAAE;IAClB,OAAO,GAAsB,EAAE;IAC/B,QAAQ,GAAW,EAAE;AACrB,IAAA,UAAU;IAET,SAAS,GAAY,KAAK;AAE3B,IAAA,QAAQ;IAER,gBAAgB,GAAG,MAAK;AAC/B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;YAChC;;AAGD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;;AAEtC,KAAC;AAED,IAAA,IAAY,UAAU,GAAA;QACrB,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,CAAa,UAAA,EAAA,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC;QAEtD,IAAI,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAEpD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;IAGzB,aAAa,GAAG,MAAK;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACvB,KAAC;IAED,MAAM,GAAA;QACL,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAElF,QACC,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EACJ,KAAK,EAAE;gBACN,kBAAkB,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK;aAC/C,EAAA,EAED,CACC,CAAA,WAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,GAAG,EAA4B,CAAC,EACzD,KAAK,EAAE,IAAI,CAAC,UAAU,EACtB,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,EAC/C,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,IAAI,EAAC,IAAI,EACT,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,EAC/D,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,EAC/C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,CAAC,SAAS,EACvB,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAC/B,CAAA,EACD,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KACtC,CACC,CAAA,WAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,SAAS,EAAE,IAAI,CAAC,QAAQ,EACxB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAA,EAEd,CACC,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,EAAS,EAAA,EAE3E,CACC,CAAA,WAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,wBAAwB,EAC9B,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,MAAM,CAAC,OAAO,EACrB,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,OAAO,EACf,OAAO,EAAA,IAAA;;YAEP,SAAS,EAAE,IAAI,CAAC,aAAa,EAC5B,CAAA,EACF,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,yBAAyB,EAAA,EACnC,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,aAAa,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAI,CAAA,EAChE,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAI,KAAK,EAAC,wBAAwB,EAAA,EAAE,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAM,CACzE,EACN,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAI,KAAK,EAAC,uBAAuB,IAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAM,CACrE,CACK,CACZ,CACK;;;AAKT,IAAA,cAAc,CAAC,OAA0B,EAAE,KAAA,GAAgB,CAAC,EAAA;QAC3D,MAAM,SAAS,GAAkB,EAAE;AAEnC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACxE,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;;aAC5B;AACN,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;AAG9C,QAAA,OAAO,SAAS;;AAGjB,IAAA,QAAQ,GAAG,CAAC,OAAe,EAAE,KAAa,KAAI;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;QACpD,QACC,CAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAE,CAAkE,+DAAA,EAAA,KAAK,CAAE,CAAA,EAAA,EACnF,CAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,WAAW,EAAM,CAAA,CAC3B;AAEP,KAAC;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sd-pagination.sd-tooltip.entry.js","sources":["src/components/sd-pagination/sd-pagination.scss?tag=sd-pagination&encapsulation=shadow","src/components/sd-pagination/sd-pagination.tsx","src/components/sd-tooltip/sd-tooltip.scss?tag=sd-tooltip&encapsulation=shadow","src/components/sd-tooltip/sd-tooltip.tsx"],"sourcesContent":["@import 'variables';\r\n\r\n.sd-pagination {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 8px;\r\n color: $grey_80;\r\n width: 100%;\r\n font-size: 12px;\r\n\r\n .prepend-btns {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n gap: 8px;\r\n width: 60px;\r\n\r\n button {\r\n width: 26px;\r\n height: 26px;\r\n border: 0;\r\n background: none;\r\n\r\n &:hover {\r\n border: 1px solid $oceanblue_70;\r\n border-radius: 14px;\r\n }\r\n }\r\n }\r\n\r\n .append-btns {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n gap: 8px;\r\n width: 60px;\r\n\r\n button {\r\n width: 26px;\r\n height: 26px;\r\n border: 0;\r\n background: none;\r\n\r\n &:hover {\r\n border: 1px solid $oceanblue_70;\r\n border-radius: 14px;\r\n }\r\n }\r\n }\r\n\r\n .pagination-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 14px;\r\n outline: none;\r\n border: none;\r\n cursor: pointer;\r\n height: 26px;\r\n color: $grey_80;\r\n width: var(--pagination-btn-width, 26px);\r\n\r\n &--selected {\r\n background-color: $oceanblue_70;\r\n color: white;\r\n }\r\n\r\n &:hover {\r\n border: 1px solid $oceanblue_70;\r\n }\r\n }\r\n\r\n &--simple {\r\n .pagination-info {\r\n line-height: 26px;\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n gap: 8px;\r\n .current-page,\r\n .last-page {\r\n padding: 0 2px;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, Prop, Event, EventEmitter, h, Watch, Fragment } from '@stencil/core';\r\n\r\nconst BUTTON_WIDTH: Record<number, number> = {\r\n 1: 26,\r\n 2: 36,\r\n 3: 42,\r\n 4: 50,\r\n 5: 58,\r\n};\r\n\r\nconst PER_PAGE = 10;\r\n\r\n@Component({\r\n tag: 'sd-pagination',\r\n styleUrl: 'sd-pagination.scss',\r\n shadow: true,\r\n})\r\nexport class SdPagination {\r\n @Prop() currentPage: number = 1;\r\n @Prop() lastPage: number = 1;\r\n @Prop() simple: boolean = false;\r\n\r\n @Event() pageChange!: EventEmitter<number>;\r\n\r\n @Watch('currentPage')\r\n @Watch('lastPage')\r\n onPropChange() {\r\n console.log('Pagination props changed', {\r\n currentPage: this.currentPage,\r\n lastPage: this.lastPage,\r\n });\r\n }\r\n\r\n private get paginationClasses() {\r\n const classes = ['sd-pagination'];\r\n\r\n if (this.simple) {\r\n classes.push('sd-pagination--simple');\r\n }\r\n return classes.join(' ');\r\n }\r\n\r\n private get pageNumbers() {\r\n const start = Math.floor((this.currentPage - 1) / PER_PAGE) * PER_PAGE + 1;\r\n const end = Math.min(start + PER_PAGE - 1, this.lastPage);\r\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\r\n }\r\n\r\n private get buttonWidth() {\r\n const lastPageNum = this.pageNumbers.at(-1) ?? 1;\r\n const maxPageLength: number = lastPageNum.toString().length;\r\n return BUTTON_WIDTH[maxPageLength] || BUTTON_WIDTH[1];\r\n }\r\n\r\n private handlePageChange(page: number) {\r\n if (page < 1 || page > this.lastPage) return;\r\n this.pageChange.emit(page);\r\n }\r\n\r\n private handleGroupChange(direction: 'forward' | 'backward') {\r\n const delta = direction === 'forward' ? PER_PAGE : -PER_PAGE;\r\n const newPage = Math.min(Math.max(this.currentPage + delta, 1), this.lastPage);\r\n this.handlePageChange(newPage);\r\n }\r\n\r\n private get isFirstGroup() {\r\n return this.currentPage <= PER_PAGE;\r\n }\r\n\r\n private get isLastGroup() {\r\n const startPageGroup = Math.floor((this.currentPage - 1) / PER_PAGE) * PER_PAGE + 1;\r\n return startPageGroup + PER_PAGE - 1 >= this.lastPage;\r\n }\r\n\r\n private renderPrevButtons() {\r\n if (this.simple) {\r\n if (this.currentPage <= 1) return null;\r\n\r\n return (\r\n <Fragment>\r\n <button aria-label=\"Go to first page\" onClick={() => this.handlePageChange(1)}>\r\n <sd-icon name=\"arrowLeftEnd\" size=\"12\" color=\"#222222\" />\r\n </button>\r\n <button\r\n aria-label=\"Go to previous page\"\r\n onClick={() => this.handlePageChange(this.currentPage - 1)}\r\n >\r\n <sd-icon name=\"arrowLeft\" size=\"12\" color=\"#222222\" />\r\n </button>\r\n </Fragment>\r\n );\r\n }\r\n\r\n if (!this.isFirstGroup) {\r\n return (\r\n <Fragment>\r\n <button aria-label=\"Go to first page\" onClick={() => this.handlePageChange(1)}>\r\n <sd-icon name=\"arrowLeftEnd\" size=\"12\" color=\"#222222\" />\r\n </button>\r\n <button\r\n aria-label=\"Go to previous page group\"\r\n onClick={() => this.handleGroupChange('backward')}\r\n >\r\n <sd-icon name=\"arrowLeft\" size=\"12\" color=\"#222222\" />\r\n </button>\r\n </Fragment>\r\n );\r\n }\r\n }\r\n\r\n private renderNextButtons() {\r\n if (this.simple) {\r\n if (this.currentPage >= this.lastPage) return null;\r\n\r\n return (\r\n <Fragment>\r\n <button\r\n aria-label=\"Go to next page\"\r\n onClick={() => this.handlePageChange(this.currentPage + 1)}\r\n >\r\n <sd-icon name=\"arrowRight\" size=\"12\" color=\"#222222\" />\r\n </button>\r\n <button aria-label=\"Go to last page\" onClick={() => this.handlePageChange(this.lastPage)}>\r\n <sd-icon name=\"arrowRightEnd\" size=\"12\" color=\"#222222\" />\r\n </button>\r\n </Fragment>\r\n );\r\n }\r\n\r\n if (!this.isLastGroup) {\r\n return (\r\n <Fragment>\r\n <button aria-label=\"Go to next page group\" onClick={() => this.handleGroupChange('forward')}>\r\n <sd-icon name=\"arrowRight\" size=\"12\" color=\"#222222\" />\r\n </button>\r\n <button aria-label=\"Go to last page\" onClick={() => this.handlePageChange(this.lastPage)}>\r\n <sd-icon name=\"arrowRightEnd\" size=\"12\" color=\"#222222\" />\r\n </button>\r\n </Fragment>\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div class={this.paginationClasses}>\r\n <div class=\"prepend-btns\">{this.renderPrevButtons()}</div>\r\n\r\n {this.simple ? (\r\n <div class=\"pagination-info\">\r\n <span class=\"current-page\">{this.currentPage}</span>\r\n <span>/</span>\r\n <span class=\"last-page\">{this.lastPage}</span>\r\n </div>\r\n ) : (\r\n this.pageNumbers.map(n => (\r\n <button\r\n type=\"button\"\r\n aria-current={this.currentPage === n ? 'page' : undefined}\r\n class={{\r\n 'pagination-btn': true,\r\n 'pagination-btn--selected': this.currentPage === n,\r\n }}\r\n disabled={this.currentPage === n}\r\n style={{\r\n '--pagination-btn-width': `${this.buttonWidth}px`,\r\n }}\r\n onClick={() => this.handlePageChange(n)}\r\n >\r\n {n}\r\n </button>\r\n ))\r\n )}\r\n\r\n <div class=\"append-btns\">{this.renderNextButtons()}</div>\r\n </div>\r\n );\r\n }\r\n}\r\n",".sd-tooltip {\r\n position: relative;\r\n cursor: pointer;\r\n display: inline-block;\r\n}\r\n","import { Component, Element, Fragment, Prop, State, h } from '@stencil/core';\r\nimport { HTMLStencilElement } from '@stencil/core/internal';\r\nimport { ButtonSize, ButtonVariant } from '../sd-button/sd-button';\r\nimport { TooltipArrow } from '../assets/tooltipArrow';\r\n\r\n@Component({\r\n tag: 'sd-tooltip',\r\n styleUrl: 'sd-tooltip.scss',\r\n shadow: true,\r\n})\r\nexport class SdTooltip {\r\n @Element() el!: HTMLElement;\r\n\r\n @Prop() trigger: 'hover' | 'click' = 'hover';\r\n @Prop() placement: 'top' | 'bottom' | 'left' | 'right' = 'top';\r\n @Prop() color: string = '#01BB4B';\r\n @Prop() type: 'default' | 'caution' | 'notice' | 'accent' = 'default';\r\n\r\n @Prop() icon: IconName = 'helpOutline';\r\n @Prop() iconSize: number = 12;\r\n\r\n @Prop() label: string = '';\r\n @Prop() buttonSize: ButtonSize = 'sm';\r\n @Prop() buttonVariant: ButtonVariant = 'primary';\r\n\r\n @Prop() noHover: boolean = true;\r\n\r\n @Prop() useClose: boolean = false;\r\n\r\n @State() showTooltip: boolean = false;\r\n @State() slotContent: HTMLElement | null = null;\r\n\r\n private static readonly COLOR_OF_TYPE = {\r\n default: { background: 'oceanblue_85', text: 'white' },\r\n caution: { background: 'red_20', text: 'red_70' },\r\n notice: { background: 'orange_10', text: 'orange_65' },\r\n accent: { background: 'brilliantblue_20', text: 'brilliantblue_75' },\r\n };\r\n\r\n private buttonEl?: HTMLStencilElement;\r\n\r\n private handleClose = () => {\r\n this.showTooltip = false;\r\n };\r\n\r\n // 현재 tooltip popover가 조건부 렌더링이여서 초기 slot이 렌더링 되지 않은 시점에\r\n // 데이터 매핑에 실패 (light dom에 저장된 slot내용을 shadow dom을 찾지못해 매핑 실패)\r\n // 따라서 slot내용을 받은 후에 복제하여 state에 저장\r\n componentWillLoad() {\r\n const contentEl = this.el.querySelector('[slot=\"content\"]');\r\n if (contentEl) {\r\n this.slotContent = contentEl.cloneNode(true) as HTMLElement;\r\n }\r\n }\r\n\r\n render() {\r\n const handleTrigger =\r\n this.trigger === 'hover'\r\n ? {\r\n onMouseEnter: () => (this.showTooltip = true),\r\n onMouseLeave: () => (this.showTooltip = false),\r\n }\r\n : {\r\n onClick: () => (this.showTooltip = !this.showTooltip),\r\n };\r\n\r\n return (\r\n <Fragment>\r\n {this.label ? (\r\n <sd-button\r\n ref={el => (this.buttonEl = el)}\r\n label={this.label}\r\n icon={this.icon}\r\n size={this.buttonSize}\r\n color={this.color}\r\n variant={this.buttonVariant}\r\n class=\"sd-tooltip\"\r\n {...handleTrigger}\r\n ></sd-button>\r\n ) : (\r\n <sd-icon\r\n ref={el => (this.buttonEl = el)}\r\n name={this.icon}\r\n size={this.iconSize}\r\n color={this.color}\r\n class=\"sd-tooltip\"\r\n {...handleTrigger}\r\n ></sd-icon>\r\n )}\r\n\r\n {this.showTooltip && (\r\n <sd-tooltip-portal\r\n parentRef={this.buttonEl}\r\n onSdClose={() => this.handleClose()}\r\n placement={this.placement}\r\n >\r\n <div\r\n class={{\r\n 'sd-tooltip-menu': true,\r\n [`sd-tooltip-menu--${this.type}`]: true,\r\n [`sd-tooltip-menu--${this.placement}`]: true,\r\n 'sd-tooltip-menu--with-close': this.useClose,\r\n [`bg-${SdTooltip.COLOR_OF_TYPE[this.type].background}`]: true,\r\n [`text-${SdTooltip.COLOR_OF_TYPE[this.type].text}`]: true,\r\n }}\r\n >\r\n <i class={`sd-tooltip-menu__arrow sd-tooltip-menu__arrow--${this.placement}`}>\r\n <TooltipArrow\r\n class={{\r\n [`text-${SdTooltip.COLOR_OF_TYPE[this.type].background}`]: true,\r\n }}\r\n ></TooltipArrow>\r\n </i>\r\n\r\n <div\r\n class=\"sd-tooltip-menu__content\"\r\n ref={el => {\r\n if (el && this.slotContent && !el.hasChildNodes()) {\r\n el.appendChild(this.slotContent.cloneNode(true));\r\n }\r\n }}\r\n >\r\n {!this.slotContent && <span>{this.el.textContent}</span>}\r\n </div>\r\n\r\n {this.useClose && (\r\n <div class=\"sd-tooltip-menu__close-button\">\r\n <button\r\n type=\"button\"\r\n aria-label=\"Close tooltip\"\r\n title=\"Close tooltip\"\r\n onClick={() => this.handleClose()}\r\n >\r\n <sd-icon name=\"close\" size=\"12\" color=\"#AAAAAA\"></sd-icon>\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </sd-tooltip-portal>\r\n )}\r\n </Fragment>\r\n );\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,165 +0,0 @@
1
- import { r as registerInstance, c as createEvent, h, F as Fragment, a as getElement } from './index-CqOU6L62.js';
2
- import { T as TooltipArrow } from './tooltipArrow-hOEWkZyH.js';
3
-
4
- 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}";
5
-
6
- const BUTTON_WIDTH = {
7
- 1: 26,
8
- 2: 36,
9
- 3: 42,
10
- 4: 50,
11
- 5: 58,
12
- };
13
- const PER_PAGE = 10;
14
- const SdPagination = class {
15
- constructor(hostRef) {
16
- registerInstance(this, hostRef);
17
- this.pageChange = createEvent(this, "pageChange");
18
- }
19
- currentPage = 1;
20
- lastPage = 1;
21
- simple = false;
22
- pageChange;
23
- onPropChange() {
24
- console.log('Pagination props changed', {
25
- currentPage: this.currentPage,
26
- lastPage: this.lastPage,
27
- });
28
- }
29
- get paginationClasses() {
30
- const classes = ['sd-pagination'];
31
- if (this.simple) {
32
- classes.push('sd-pagination--simple');
33
- }
34
- return classes.join(' ');
35
- }
36
- get pageNumbers() {
37
- const start = Math.floor((this.currentPage - 1) / PER_PAGE) * PER_PAGE + 1;
38
- const end = Math.min(start + PER_PAGE - 1, this.lastPage);
39
- return Array.from({ length: end - start + 1 }, (_, i) => start + i);
40
- }
41
- get buttonWidth() {
42
- const lastPageNum = this.pageNumbers.at(-1) ?? 1;
43
- const maxPageLength = lastPageNum.toString().length;
44
- return BUTTON_WIDTH[maxPageLength] || BUTTON_WIDTH[1];
45
- }
46
- handlePageChange(page) {
47
- if (page < 1 || page > this.lastPage)
48
- return;
49
- this.pageChange.emit(page);
50
- }
51
- handleGroupChange(direction) {
52
- const delta = direction === 'forward' ? PER_PAGE : -10;
53
- const newPage = Math.min(Math.max(this.currentPage + delta, 1), this.lastPage);
54
- this.handlePageChange(newPage);
55
- }
56
- get isFirstGroup() {
57
- return this.currentPage <= PER_PAGE;
58
- }
59
- get isLastGroup() {
60
- const startPageGroup = Math.floor((this.currentPage - 1) / PER_PAGE) * PER_PAGE + 1;
61
- return startPageGroup + PER_PAGE - 1 >= this.lastPage;
62
- }
63
- renderPrevButtons() {
64
- if (this.simple) {
65
- if (this.currentPage <= 1)
66
- return null;
67
- return (h(Fragment, null, h("button", { "aria-label": "Go to first page", onClick: () => this.handlePageChange(1) }, h("sd-icon", { name: "arrowLeftEnd", size: "12", color: "#222222" })), h("button", { "aria-label": "Go to previous page", onClick: () => this.handlePageChange(this.currentPage - 1) }, h("sd-icon", { name: "arrowLeft", size: "12", color: "#222222" }))));
68
- }
69
- if (!this.isFirstGroup) {
70
- return (h(Fragment, null, h("button", { "aria-label": "Go to first page", onClick: () => this.handlePageChange(1) }, h("sd-icon", { name: "arrowLeftEnd", size: "12", color: "#222222" })), h("button", { "aria-label": "Go to previous page group", onClick: () => this.handleGroupChange('backward') }, h("sd-icon", { name: "arrowLeft", size: "12", color: "#222222" }))));
71
- }
72
- }
73
- renderNextButtons() {
74
- if (this.simple) {
75
- if (this.currentPage >= this.lastPage)
76
- return null;
77
- return (h(Fragment, null, h("button", { "aria-label": "Go to next page", onClick: () => this.handlePageChange(this.currentPage + 1) }, h("sd-icon", { name: "arrowRight", size: "12", color: "#222222" })), h("button", { "aria-label": "Go to last page", onClick: () => this.handlePageChange(this.lastPage) }, h("sd-icon", { name: "arrowRightEnd", size: "12", color: "#222222" }))));
78
- }
79
- if (!this.isLastGroup) {
80
- return (h(Fragment, null, h("button", { "aria-label": "Go to next page group", onClick: () => this.handleGroupChange('forward') }, h("sd-icon", { name: "arrowRight", size: "12", color: "#222222" })), h("button", { "aria-label": "Go to last page", onClick: () => this.handlePageChange(this.lastPage) }, h("sd-icon", { name: "arrowRightEnd", size: "12", color: "#222222" }))));
81
- }
82
- }
83
- render() {
84
- return (h("div", { key: 'c73e80cca3ae34331a653f40fcea9f21853729bc', class: this.paginationClasses }, h("div", { key: '0c1be2da1bbb9ca12ed44739c45c083da9b94657', 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: {
85
- 'pagination-btn': true,
86
- 'pagination-btn--selected': this.currentPage === n,
87
- }, disabled: this.currentPage === n, style: {
88
- '--pagination-btn-width': `${this.buttonWidth}px`,
89
- }, onClick: () => this.handlePageChange(n) }, n)))), h("div", { key: '866070b571aab944f6f7521b72479c5b26fca000', class: "append-btns" }, this.renderNextButtons())));
90
- }
91
- static get watchers() { return {
92
- "currentPage": ["onPropChange"],
93
- "lastPage": ["onPropChange"]
94
- }; }
95
- };
96
- SdPagination.style = sdPaginationCss;
97
-
98
- const sdTooltipCss = ".sd-tooltip{position:relative;cursor:pointer;display:inline-block}";
99
-
100
- const SdTooltip = class {
101
- constructor(hostRef) {
102
- registerInstance(this, hostRef);
103
- }
104
- get el() { return getElement(this); }
105
- trigger = 'hover';
106
- placement = 'top';
107
- color = '#01BB4B';
108
- type = 'default';
109
- icon = 'helpOutline';
110
- iconSize = 12;
111
- label = '';
112
- buttonSize = 'sm';
113
- buttonVariant = 'primary';
114
- noHover = true;
115
- useClose = false;
116
- showTooltip = false;
117
- slotContent = null;
118
- static COLOR_OF_TYPE = {
119
- default: { background: 'oceanblue_85', text: 'white' },
120
- caution: { background: 'red_20', text: 'red_70' },
121
- notice: { background: 'orange_10', text: 'orange_65' },
122
- accent: { background: 'brilliantblue_20', text: 'brilliantblue_75' },
123
- };
124
- buttonEl;
125
- handleClose = () => {
126
- this.showTooltip = false;
127
- };
128
- // 현재 tooltip popover가 조건부 렌더링이여서 초기 slot이 렌더링 되지 않은 시점에
129
- // 데이터 매핑에 실패 (light dom에 저장된 slot내용을 shadow dom을 찾지못해 매핑 실패)
130
- // 따라서 slot내용을 받은 후에 복제하여 state에 저장
131
- componentWillLoad() {
132
- const contentEl = this.el.querySelector('[slot="content"]');
133
- if (contentEl) {
134
- this.slotContent = contentEl.cloneNode(true);
135
- }
136
- }
137
- render() {
138
- const handleTrigger = this.trigger === 'hover'
139
- ? {
140
- onMouseEnter: () => (this.showTooltip = true),
141
- onMouseLeave: () => (this.showTooltip = false),
142
- }
143
- : {
144
- onClick: () => (this.showTooltip = !this.showTooltip),
145
- };
146
- return (h(Fragment, { key: '820aa8d0581cb29f16f314e788b522caebdbdcf1' }, 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: '9559af4cd1fff88704c56eba7bdd58d5faf98e86', parentRef: this.buttonEl, onSdClose: () => this.handleClose(), placement: this.placement }, h("div", { key: '115eea727a7932ce9e83a13a9191b414dd907f86', class: {
147
- 'sd-tooltip-menu': true,
148
- [`sd-tooltip-menu--${this.type}`]: true,
149
- [`sd-tooltip-menu--${this.placement}`]: true,
150
- 'sd-tooltip-menu--with-close': this.useClose,
151
- [`bg-${SdTooltip.COLOR_OF_TYPE[this.type].background}`]: true,
152
- [`text-${SdTooltip.COLOR_OF_TYPE[this.type].text}`]: true,
153
- } }, h("i", { key: 'fbc22ba22a33f73a1bb8d90cebd0a1564f92dc6f', class: `sd-tooltip-menu__arrow sd-tooltip-menu__arrow--${this.placement}` }, h(TooltipArrow, { key: '31dd8e255ef1cfadca9ac585d3d1e2eaf0406264', class: {
154
- [`text-${SdTooltip.COLOR_OF_TYPE[this.type].background}`]: true,
155
- } })), h("div", { key: '0d6390cb656a6ee25c11d91f0334911346d3f1a8', class: "sd-tooltip-menu__content", ref: el => {
156
- if (el && this.slotContent && !el.hasChildNodes()) {
157
- el.appendChild(this.slotContent.cloneNode(true));
158
- }
159
- } }, !this.slotContent && h("span", { key: '6a8ec7550e4c27c4a537bff66786782b34c5d05b' }, this.el.textContent)), this.useClose && (h("div", { key: '7e23537bf912b27cea2e995e170b9bb16de0b4e6', class: "sd-tooltip-menu__close-button" }, h("button", { key: 'abdc42f2dd4648b34db65650a4e6586f7170ab69', type: "button", "aria-label": "Close tooltip", title: "Close tooltip", onClick: () => this.handleClose() }, h("sd-icon", { key: '58d9c812b8abe440af11f1e259c4354c190dcdbe', name: "close", size: "12", color: "#AAAAAA" })))))))));
160
- }
161
- };
162
- SdTooltip.style = sdTooltipCss;
163
-
164
- export { SdPagination as sd_pagination, SdTooltip as sd_tooltip };
165
- //# sourceMappingURL=sd-pagination.sd-tooltip.entry.js.map
@@ -1,235 +0,0 @@
1
- import { r as registerInstance, c as createEvent, a as getElement, h, H as Host } from './index-CqOU6L62.js';
2
-
3
- const sdTableCss = ".bg-primary{background-color:var(--color-primary, #051d36)}.bg-secondary{background-color:var(--color-secondary, #555555)}.bg-accent{background-color:var(--color-accent, #9c27b0)}.bg-positive{background-color:var(--color-positive, #0075ff)}.bg-negative{background-color:var(--color-negative, #e30000)}.bg-info{background-color:var(--color-info, #00cd52)}.bg-warning{background-color:var(--color-warning, #f2c037)}.bg-red_99{background-color:var(--color-red_99, #220000)}.bg-red_95{background-color:var(--color-red_95, #440000)}.bg-red_90{background-color:var(--color-red_90, #5E0000)}.bg-red_85{background-color:var(--color-red_85, #820000)}.bg-red_80{background-color:var(--color-red_80, #AD0000)}.bg-red_75{background-color:var(--color-red_75, #E30000)}.bg-red_70{background-color:var(--color-red_70, #FB4444)}.bg-red_60{background-color:var(--color-red_60, #FF7C7C)}.bg-red_45{background-color:var(--color-red_45, #FFB5B5)}.bg-red_30{background-color:var(--color-red_30, #FFD3D3)}.bg-red_20{background-color:var(--color-red_20, #FCE6E6)}.bg-red_15{background-color:var(--color-red_15, #FCEFEF)}.bg-caution_bg{background-color:var(--color-caution_bg, #FEF1F1)}.bg-caution_icon{background-color:var(--color-caution_icon, #fd9595)}.bg-orange_99{background-color:var(--color-orange_99, #2F1100)}.bg-orange_95{background-color:var(--color-orange_95, #4D1B00)}.bg-orange_90{background-color:var(--color-orange_90, #752A00)}.bg-orange_85{background-color:var(--color-orange_85, #9B3700)}.bg-orange_75{background-color:var(--color-orange_75, #CE4900)}.bg-orange_65{background-color:var(--color-orange_65, #FF6B00)}.bg-orange_60{background-color:var(--color-orange_60, #FF7F22)}.bg-orange_55{background-color:var(--color-orange_55, #FFA452)}.bg-orange_45{background-color:var(--color-orange_45, #FFBC81)}.bg-orange_35{background-color:var(--color-orange_35, #FFD5AF)}.bg-orange_20{background-color:var(--color-orange_20, #FFEAD7)}.bg-orange_10{background-color:var(--color-orange_10, #FEF1EA)}.bg-header_alert{background-color:var(--color-header_alert, #FF7A00)}.bg-yellow_95{background-color:var(--color-yellow_95, #322700)}.bg-yellow_90{background-color:var(--color-yellow_90, #453702)}.bg-yellow_80{background-color:var(--color-yellow_80, #6C5602)}.bg-yellow_70{background-color:var(--color-yellow_70, #9C7A00)}.bg-yellow_60{background-color:var(--color-yellow_60, #C49900)}.bg-yellow_50{background-color:var(--color-yellow_50, #EBB800)}.bg-yellow_45{background-color:var(--color-yellow_45, #FFC700)}.bg-yellow_40{background-color:var(--color-yellow_40, #FFD643)}.bg-yellow_30{background-color:var(--color-yellow_30, #FEE17C)}.bg-yellow_25{background-color:var(--color-yellow_25, #FFE99E)}.bg-yellow_20{background-color:var(--color-yellow_20, #FEF1C4)}.bg-yellow_10{background-color:var(--color-yellow_10, #FFF7DD)}.bg-olive_95{background-color:var(--color-olive_95, #2C2C00)}.bg-olive_90{background-color:var(--color-olive_90, #454500)}.bg-olive_80{background-color:var(--color-olive_80, #636300)}.bg-olive_70{background-color:var(--color-olive_70, #838300)}.bg-olive_65{background-color:var(--color-olive_65, #A5A500)}.bg-olive_55{background-color:var(--color-olive_55, #C7C700)}.bg-olive_45{background-color:var(--color-olive_45, #DDDD12)}.bg-olive_30{background-color:var(--color-olive_30, #EEEE37)}.bg-olive_20{background-color:var(--color-olive_20, #F6F65F)}.bg-olive_15{background-color:var(--color-olive_15, #FAFAA1)}.bg-olive_10{background-color:var(--color-olive_10, #FBFBBF)}.bg-olive_05{background-color:var(--color-olive_05, #FEFED9)}.bg-green_99{background-color:var(--color-green_99, #001D0B)}.bg-green_95{background-color:var(--color-green_95, #003013)}.bg-green_90{background-color:var(--color-green_90, #00461C)}.bg-green_85{background-color:var(--color-green_85, #006629)}.bg-green_80{background-color:var(--color-green_80, #007B31)}.bg-green_75{background-color:var(--color-green_75, #00973C)}.bg-green_70{background-color:var(--color-green_70, #12B553)}.bg-green_65{background-color:var(--color-green_65, #2BCE6C)}.bg-green_55{background-color:var(--color-green_55, #6DE39C)}.bg-green_45{background-color:var(--color-green_45, #ACF4C9)}.bg-green_25{background-color:var(--color-green_25, #D4FAE3)}.bg-green_15{background-color:var(--color-green_15, #E8F9EF)}.bg-steelblue_99{background-color:var(--color-steelblue_99, #021a25)}.bg-steelblue_95{background-color:var(--color-steelblue_95, #02212f)}.bg-steelblue_90{background-color:var(--color-steelblue_90, #032d40)}.bg-steelblue_85{background-color:var(--color-steelblue_85, #033f59)}.bg-steelblue_80{background-color:var(--color-steelblue_80, #06587d)}.bg-steelblue_75{background-color:var(--color-steelblue_75, #066d9b)}.bg-steelblue_70{background-color:var(--color-steelblue_70, #128fc7)}.bg-steelblue_65{background-color:var(--color-steelblue_65, #229fd7)}.bg-steelblue_60{background-color:var(--color-steelblue_60, #50bff0)}.bg-steelblue_45{background-color:var(--color-steelblue_45, #a4e2fd)}.bg-steelblue_25{background-color:var(--color-steelblue_25, #d9f2fd)}.bg-steelblue_10{background-color:var(--color-steelblue_10, #ecf8fd)}.bg-oceanblue_99{background-color:var(--color-oceanblue_99, #011428)}.bg-oceanblue_95{background-color:var(--color-oceanblue_95, #03172d)}.bg-oceanblue_90{background-color:var(--color-oceanblue_90, #051d36)}.bg-oceanblue_85{background-color:var(--color-oceanblue_85, #07284a)}.bg-oceanblue_80{background-color:var(--color-oceanblue_80, #004177)}.bg-oceanblue_75{background-color:var(--color-oceanblue_75, #025497)}.bg-oceanblue_70{background-color:var(--color-oceanblue_70, #006ac1)}.bg-oceanblue_65{background-color:var(--color-oceanblue_65, #1f8ae1)}.bg-oceanblue_60{background-color:var(--color-oceanblue_60, #5cb0f3)}.bg-oceanblue_50{background-color:var(--color-oceanblue_50, #9cd1fc)}.bg-oceanblue_25{background-color:var(--color-oceanblue_25, #d5ebfe)}.bg-oceanblue_15{background-color:var(--color-oceanblue_15, #eaf5fe)}.bg-brilliantblue_99{background-color:var(--color-brilliantblue_99, #001226)}.bg-brilliantblue_95{background-color:var(--color-brilliantblue_95, #001b39)}.bg-brilliantblue_90{background-color:var(--color-brilliantblue_90, #002b5e)}.bg-brilliantblue_85{background-color:var(--color-brilliantblue_85, #004290)}.bg-brilliantblue_80{background-color:var(--color-brilliantblue_80, #005cc9)}.bg-brilliantblue_75{background-color:var(--color-brilliantblue_75, #0075ff)}.bg-brilliantblue_70{background-color:var(--color-brilliantblue_70, #2d8dff)}.bg-brilliantblue_60{background-color:var(--color-brilliantblue_60, #64abff)}.bg-brilliantblue_50{background-color:var(--color-brilliantblue_50, #93c4ff)}.bg-brilliantblue_40{background-color:var(--color-brilliantblue_40, #bbdaff)}.bg-brilliantblue_25{background-color:var(--color-brilliantblue_25, #d9eaff)}.bg-brilliantblue_20{background-color:var(--color-brilliantblue_20, #e6f1ff)}.bg-brilliantblue_10{background-color:var(--color-brilliantblue_10, #eff6ff)}.bg-brilliantblue_05{background-color:var(--color-brilliantblue_05, #f5faff)}.bg-grey_95{background-color:var(--color-grey_95, #222222)}.bg-grey_90{background-color:var(--color-grey_90, #333333)}.bg-grey_85{background-color:var(--color-grey_85, #444444)}.bg-grey_80{background-color:var(--color-grey_80, #555555)}.bg-grey_70{background-color:var(--color-grey_70, #737373)}.bg-grey_65{background-color:var(--color-grey_65, #888888)}.bg-grey_60{background-color:var(--color-grey_60, #999999)}.bg-grey_55{background-color:var(--color-grey_55, #aaaaaa)}.bg-grey_50{background-color:var(--color-grey_50, #bbbbbb)}.bg-grey_45{background-color:var(--color-grey_45, #cccccc)}.bg-grey_35{background-color:var(--color-grey_35, #D8D8D8)}.bg-grey_30{background-color:var(--color-grey_30, #e1e1e1)}.bg-grey_25{background-color:var(--color-grey_25, #E5E5E5)}.bg-grey_20{background-color:var(--color-grey_20, #eeeeee)}.bg-grey_10{background-color:var(--color-grey_10, #f6f6f6)}.bg-grey_05{background-color:var(--color-grey_05, #f9f9f9)}.bg-white{background-color:var(--color-white, #ffffff)}.bg-black{background-color:var(--color-black, #000000)}.text-primary{color:var(--color-primary, #051d36)}.text-secondary{color:var(--color-secondary, #555555)}.text-accent{color:var(--color-accent, #9c27b0)}.text-positive{color:var(--color-positive, #0075ff)}.text-negative{color:var(--color-negative, #e30000)}.text-info{color:var(--color-info, #00cd52)}.text-warning{color:var(--color-warning, #f2c037)}.text-red_99{color:var(--color-red_99, #220000)}.text-red_95{color:var(--color-red_95, #440000)}.text-red_90{color:var(--color-red_90, #5E0000)}.text-red_85{color:var(--color-red_85, #820000)}.text-red_80{color:var(--color-red_80, #AD0000)}.text-red_75{color:var(--color-red_75, #E30000)}.text-red_70{color:var(--color-red_70, #FB4444)}.text-red_60{color:var(--color-red_60, #FF7C7C)}.text-red_45{color:var(--color-red_45, #FFB5B5)}.text-red_30{color:var(--color-red_30, #FFD3D3)}.text-red_20{color:var(--color-red_20, #FCE6E6)}.text-red_15{color:var(--color-red_15, #FCEFEF)}.text-caution_bg{color:var(--color-caution_bg, #FEF1F1)}.text-caution_icon{color:var(--color-caution_icon, #fd9595)}.text-orange_99{color:var(--color-orange_99, #2F1100)}.text-orange_95{color:var(--color-orange_95, #4D1B00)}.text-orange_90{color:var(--color-orange_90, #752A00)}.text-orange_85{color:var(--color-orange_85, #9B3700)}.text-orange_75{color:var(--color-orange_75, #CE4900)}.text-orange_65{color:var(--color-orange_65, #FF6B00)}.text-orange_60{color:var(--color-orange_60, #FF7F22)}.text-orange_55{color:var(--color-orange_55, #FFA452)}.text-orange_45{color:var(--color-orange_45, #FFBC81)}.text-orange_35{color:var(--color-orange_35, #FFD5AF)}.text-orange_20{color:var(--color-orange_20, #FFEAD7)}.text-orange_10{color:var(--color-orange_10, #FEF1EA)}.text-header_alert{color:var(--color-header_alert, #FF7A00)}.text-yellow_95{color:var(--color-yellow_95, #322700)}.text-yellow_90{color:var(--color-yellow_90, #453702)}.text-yellow_80{color:var(--color-yellow_80, #6C5602)}.text-yellow_70{color:var(--color-yellow_70, #9C7A00)}.text-yellow_60{color:var(--color-yellow_60, #C49900)}.text-yellow_50{color:var(--color-yellow_50, #EBB800)}.text-yellow_45{color:var(--color-yellow_45, #FFC700)}.text-yellow_40{color:var(--color-yellow_40, #FFD643)}.text-yellow_30{color:var(--color-yellow_30, #FEE17C)}.text-yellow_25{color:var(--color-yellow_25, #FFE99E)}.text-yellow_20{color:var(--color-yellow_20, #FEF1C4)}.text-yellow_10{color:var(--color-yellow_10, #FFF7DD)}.text-olive_95{color:var(--color-olive_95, #2C2C00)}.text-olive_90{color:var(--color-olive_90, #454500)}.text-olive_80{color:var(--color-olive_80, #636300)}.text-olive_70{color:var(--color-olive_70, #838300)}.text-olive_65{color:var(--color-olive_65, #A5A500)}.text-olive_55{color:var(--color-olive_55, #C7C700)}.text-olive_45{color:var(--color-olive_45, #DDDD12)}.text-olive_30{color:var(--color-olive_30, #EEEE37)}.text-olive_20{color:var(--color-olive_20, #F6F65F)}.text-olive_15{color:var(--color-olive_15, #FAFAA1)}.text-olive_10{color:var(--color-olive_10, #FBFBBF)}.text-olive_05{color:var(--color-olive_05, #FEFED9)}.text-green_99{color:var(--color-green_99, #001D0B)}.text-green_95{color:var(--color-green_95, #003013)}.text-green_90{color:var(--color-green_90, #00461C)}.text-green_85{color:var(--color-green_85, #006629)}.text-green_80{color:var(--color-green_80, #007B31)}.text-green_75{color:var(--color-green_75, #00973C)}.text-green_70{color:var(--color-green_70, #12B553)}.text-green_65{color:var(--color-green_65, #2BCE6C)}.text-green_55{color:var(--color-green_55, #6DE39C)}.text-green_45{color:var(--color-green_45, #ACF4C9)}.text-green_25{color:var(--color-green_25, #D4FAE3)}.text-green_15{color:var(--color-green_15, #E8F9EF)}.text-steelblue_99{color:var(--color-steelblue_99, #021a25)}.text-steelblue_95{color:var(--color-steelblue_95, #02212f)}.text-steelblue_90{color:var(--color-steelblue_90, #032d40)}.text-steelblue_85{color:var(--color-steelblue_85, #033f59)}.text-steelblue_80{color:var(--color-steelblue_80, #06587d)}.text-steelblue_75{color:var(--color-steelblue_75, #066d9b)}.text-steelblue_70{color:var(--color-steelblue_70, #128fc7)}.text-steelblue_65{color:var(--color-steelblue_65, #229fd7)}.text-steelblue_60{color:var(--color-steelblue_60, #50bff0)}.text-steelblue_45{color:var(--color-steelblue_45, #a4e2fd)}.text-steelblue_25{color:var(--color-steelblue_25, #d9f2fd)}.text-steelblue_10{color:var(--color-steelblue_10, #ecf8fd)}.text-oceanblue_99{color:var(--color-oceanblue_99, #011428)}.text-oceanblue_95{color:var(--color-oceanblue_95, #03172d)}.text-oceanblue_90{color:var(--color-oceanblue_90, #051d36)}.text-oceanblue_85{color:var(--color-oceanblue_85, #07284a)}.text-oceanblue_80{color:var(--color-oceanblue_80, #004177)}.text-oceanblue_75{color:var(--color-oceanblue_75, #025497)}.text-oceanblue_70{color:var(--color-oceanblue_70, #006ac1)}.text-oceanblue_65{color:var(--color-oceanblue_65, #1f8ae1)}.text-oceanblue_60{color:var(--color-oceanblue_60, #5cb0f3)}.text-oceanblue_50{color:var(--color-oceanblue_50, #9cd1fc)}.text-oceanblue_25{color:var(--color-oceanblue_25, #d5ebfe)}.text-oceanblue_15{color:var(--color-oceanblue_15, #eaf5fe)}.text-brilliantblue_99{color:var(--color-brilliantblue_99, #001226)}.text-brilliantblue_95{color:var(--color-brilliantblue_95, #001b39)}.text-brilliantblue_90{color:var(--color-brilliantblue_90, #002b5e)}.text-brilliantblue_85{color:var(--color-brilliantblue_85, #004290)}.text-brilliantblue_80{color:var(--color-brilliantblue_80, #005cc9)}.text-brilliantblue_75{color:var(--color-brilliantblue_75, #0075ff)}.text-brilliantblue_70{color:var(--color-brilliantblue_70, #2d8dff)}.text-brilliantblue_60{color:var(--color-brilliantblue_60, #64abff)}.text-brilliantblue_50{color:var(--color-brilliantblue_50, #93c4ff)}.text-brilliantblue_40{color:var(--color-brilliantblue_40, #bbdaff)}.text-brilliantblue_25{color:var(--color-brilliantblue_25, #d9eaff)}.text-brilliantblue_20{color:var(--color-brilliantblue_20, #e6f1ff)}.text-brilliantblue_10{color:var(--color-brilliantblue_10, #eff6ff)}.text-brilliantblue_05{color:var(--color-brilliantblue_05, #f5faff)}.text-grey_95{color:var(--color-grey_95, #222222)}.text-grey_90{color:var(--color-grey_90, #333333)}.text-grey_85{color:var(--color-grey_85, #444444)}.text-grey_80{color:var(--color-grey_80, #555555)}.text-grey_70{color:var(--color-grey_70, #737373)}.text-grey_65{color:var(--color-grey_65, #888888)}.text-grey_60{color:var(--color-grey_60, #999999)}.text-grey_55{color:var(--color-grey_55, #aaaaaa)}.text-grey_50{color:var(--color-grey_50, #bbbbbb)}.text-grey_45{color:var(--color-grey_45, #cccccc)}.text-grey_35{color:var(--color-grey_35, #D8D8D8)}.text-grey_30{color:var(--color-grey_30, #e1e1e1)}.text-grey_25{color:var(--color-grey_25, #E5E5E5)}.text-grey_20{color:var(--color-grey_20, #eeeeee)}.text-grey_10{color:var(--color-grey_10, #f6f6f6)}.text-grey_05{color:var(--color-grey_05, #f9f9f9)}.text-white{color:var(--color-white, #ffffff)}.text-black{color:var(--color-black, #000000)}*,*::before,*::after{box-sizing:border-box}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin-block-end:0}ul[role=list],ol[role=list]{list-style:none}body{min-height:100vh;line-height:1.5}h1,h2,h3,h4,button,input,label{line-height:1}h1,h2,h3,h4{text-wrap:balance}a:not([class]){text-decoration-skip-ink:auto;color:currentColor}img,picture{max-width:100%;display:block}input,button,textarea,select{font-size:inherit}:target{scroll-margin-block:5ex}button{background:none;border:none;cursor:pointer;padding:0;outline:0}button:focus{outline:0 !important}.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-thumb:hover{background:#e5e5e5}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar-thumb:active{background:#e5e5e5}.sd-table__wrapper .sd-table__container .sd-table__middle::-webkit-scrollbar-track{background-color:transparent}:host{display:inline-block;height:fit-content;line-height:0}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}input[type=text],input[type=number],input[type=password],input[type=email],input[type=tel],textarea{padding-block:0px;padding-inline:0px}.sd-hoverable:hover>.sd-focus-helper{background:currentColor;opacity:0.15}.sd-hoverable:hover>.sd-focus-helper:before{opacity:0.1}.sd-hoverable:hover>.sd-focus-helper:after{opacity:0.4}.sd-focus-helper{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit;opacity:0;transition:background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.4s cubic-bezier(0.25, 0.8, 0.5, 1)}.sd-focus-helper:before,.sd-focus-helper:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;border-radius:inherit;transition:background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.6s cubic-bezier(0.25, 0.8, 0.5, 1)}.sd-focus-helper:before{background:#000000}.sd-focus-helper:after{background:#ffffff}.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}.sd-popover-menu{width:fit-content;padding:12px 20px;border-radius:4px;color:white;background:#07284a;font-size:12px;position:relative;box-sizing:border-box}.sd-popover-menu__arrow{position:absolute;display:flex;width:9.6px;height:7.2px}.sd-popover-menu__arrow svg{width:100%;height:100%}.sd-popover-menu__arrow--top{bottom:-7.2px;left:50%;transform:translateX(-50%)}.sd-popover-menu__arrow--bottom{top:-7.2px;left:50%;transform:translateX(-50%) rotate(180deg)}.sd-popover-menu__arrow--left{right:-7.2px;top:50%;transform:translateY(-50%) rotate(-90deg)}.sd-popover-menu__arrow--right{left:-7.2px;top:50%;transform:translateY(-50%) rotate(90deg)}.sd-popover-menu__content{font-size:12px;line-height:20px}.sd-popover-menu__content .sd-popover-menu__title{font-weight:700;margin-bottom:4px}.sd-popover-menu__content .sd-popover-menu__messages{font-weight:500}.sd-popover-menu__content .sd-popover-menu__buttons{margin-top:12px;display:flex;gap:8px;align-items:center}.sd-popover-menu__content .sd-popover-menu__buttons--1{justify-content:flex-end}.sd-popover-menu__content .sd-popover-menu__buttons--2{justify-content:space-between}.sd-popover-menu__close-button{position:absolute;top:16px;right:12px;padding:0;background:none;border:none;cursor:pointer}.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{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.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 td,.sd-table__wrapper .sd-table__container .sd-table__middle .sd-table 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 tr:last-of-type td{border-bottom:none}.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__pagination{background:#f9f9f9;height:48px;display:flex;align-items:center;justify-content:center;border:1px solid #e1e1e1;border-top:none;border-radius:8px}";
4
-
5
- const SdTable = class {
6
- constructor(hostRef) {
7
- registerInstance(this, hostRef);
8
- this.sdSelectChange = createEvent(this, "sdSelectChange");
9
- this.sdPageChange = createEvent(this, "sdPageChange");
10
- }
11
- get el() { return getElement(this); }
12
- columns;
13
- rows;
14
- selected = new Set();
15
- rowKey = 'id';
16
- selectable = false;
17
- resizable = false;
18
- width;
19
- height;
20
- stickyHeader = false;
21
- stickyColumn = { left: 0, right: 0 };
22
- noDataLabel = '데이터가 없습니다.';
23
- pagination;
24
- bodyCellRenderer;
25
- useInternalPagination = false;
26
- sdSelectChange;
27
- sdPageChange;
28
- currentPage = this.pagination?.page || 1;
29
- innerRows = [];
30
- innerSelected = new Set();
31
- columnWidths = [];
32
- scrolledLeft = false;
33
- scrolledRight = false;
34
- handleColumnsChange(newCols) {
35
- this.columnWidths = newCols.map(c => parseInt(c.width || '120', 10));
36
- }
37
- handleRowsChange(newRows) {
38
- this.innerRows = [...newRows];
39
- }
40
- handleSelectedChange(newSelected) {
41
- this.innerSelected = new Set(newSelected);
42
- }
43
- handlePaginationChange(newVal) {
44
- if (newVal?.page && newVal.page !== this.currentPage)
45
- this.currentPage = newVal.page;
46
- }
47
- componentWillLoad() {
48
- this.innerRows = [...this.rows];
49
- this.innerSelected = new Set(this.selected);
50
- this.columnWidths = this.columns.map(c => parseInt(c.width || '120', 10));
51
- }
52
- componentDidLoad() {
53
- // SSR 환경 체크
54
- if (typeof window === 'undefined')
55
- return;
56
- const middle = this.el.querySelector('.sd-table__middle');
57
- if (!middle)
58
- return;
59
- const onScroll = () => {
60
- const { scrollLeft, scrollWidth, clientWidth } = middle;
61
- this.scrolledLeft = scrollLeft > 0;
62
- this.scrolledRight = scrollLeft + clientWidth < scrollWidth;
63
- };
64
- middle.addEventListener('scroll', onScroll, { passive: true });
65
- onScroll();
66
- }
67
- // ----- Derived getters -----
68
- get visibleColumns() {
69
- return this.columns.filter(col => col.visible !== false);
70
- }
71
- get paginatedRows() {
72
- if (!this.pagination || !this.useInternalPagination)
73
- return this.innerRows;
74
- const { rowsPerPage = this.rows.length } = this.pagination || {};
75
- const result = this.innerRows.slice((this.currentPage - 1) * rowsPerPage, this.currentPage * rowsPerPage);
76
- return result;
77
- }
78
- get lastPageNumber() {
79
- const { lastPage, rowsPerPage = this.rows.length } = this.pagination || {};
80
- return lastPage ?? Math.max(1, Math.ceil(this.rows.length / rowsPerPage));
81
- }
82
- get sdTableClasses() {
83
- return [
84
- 'sd-table',
85
- this.stickyHeader && 'sd-table--sticky-header',
86
- this.selectable && 'sd-table--selectable',
87
- this.resizable && 'sd-table--resizable',
88
- !this.innerRows.length && 'sd-table--no-data',
89
- ((this.stickyColumn?.left ?? 0) > 0 || (this.stickyColumn?.right ?? 0) > 0) &&
90
- 'sd-table--sticky-column',
91
- this.scrolledLeft && 'sd-table--scrolled-left',
92
- this.scrolledRight && 'sd-table--scrolled-right',
93
- ]
94
- .filter(Boolean)
95
- .join(' ');
96
- }
97
- // ----- Selection -----
98
- isRowSelected(row) {
99
- return Array.from(this.innerSelected).some(r => r[this.rowKey] === row[this.rowKey]);
100
- }
101
- updateRowSelect(row) {
102
- const selectedArray = Array.from(this.innerSelected);
103
- const exists = this.isRowSelected(row);
104
- const newSelected = exists
105
- ? selectedArray.filter(r => r[this.rowKey] !== row[this.rowKey])
106
- : [...selectedArray, row];
107
- // 동일 상태면 set하지 않음 → 불필요 렌더 방지
108
- if (newSelected.length === selectedArray.length)
109
- return;
110
- this.innerSelected = new Set(newSelected);
111
- this.sdSelectChange.emit(Array.from(this.innerSelected));
112
- }
113
- toggleSelectAll(checked) {
114
- if (checked) {
115
- const pageRows = new Set([...this.paginatedRows]);
116
- this.innerSelected = new Set([...this.innerSelected, ...pageRows]);
117
- }
118
- else {
119
- const currentPageKeys = this.paginatedRows.map(r => r[this.rowKey]);
120
- this.innerSelected = new Set([...this.innerSelected].filter(r => !currentPageKeys.includes(r[this.rowKey])));
121
- }
122
- this.sdSelectChange.emit(Array.from(this.innerSelected));
123
- }
124
- get isAllChecked() {
125
- const total = this.paginatedRows.length;
126
- const selectedCount = this.paginatedRows.filter(row => Array.from(this.innerSelected).some(selectedRow => selectedRow[this.rowKey] === row[this.rowKey])).length;
127
- if (selectedCount === 0)
128
- return false; // 아무것도 안 선택됨
129
- if (selectedCount === total)
130
- return true; // 전부 선택됨
131
- return null; // 일부만 선택됨
132
- }
133
- // ----- Helpers -----
134
- getStickyStyle(colIdx) {
135
- const leftOffset = this.columnWidths.slice(0, colIdx).reduce((a, b) => a + b, 0) + (this.selectable ? 52 : 0);
136
- const rightOffset = this.columnWidths
137
- .filter((_, i) => i >= this.visibleColumns.length - (this.stickyColumn.right || 0) && i > colIdx)
138
- .reduce((a, b) => a + b, 0);
139
- return {
140
- '--sticky-left-offset': `${leftOffset}px`,
141
- '--sticky-right-offset': `${rightOffset}px`,
142
- 'width': `${this.columnWidths[colIdx]}px`,
143
- 'minWidth': `${this.columnWidths[colIdx]}px`,
144
- 'maxWidth': `${this.columnWidths[colIdx]}px`,
145
- };
146
- }
147
- handleResize(index, event) {
148
- // SSR 환경 체크
149
- if (typeof document === 'undefined')
150
- return;
151
- const startX = event.clientX;
152
- const startWidth = this.columnWidths[index];
153
- const handleMouseMove = (moveEvent) => {
154
- const newWidth = Math.max(startWidth + moveEvent.clientX - startX, 50);
155
- this.columnWidths = this.columnWidths.map((width, idx) => (idx === index ? newWidth : width));
156
- };
157
- const handleMouseUp = () => {
158
- document.removeEventListener('mousemove', handleMouseMove);
159
- document.removeEventListener('mouseup', handleMouseUp);
160
- };
161
- document.addEventListener('mousemove', handleMouseMove);
162
- document.addEventListener('mouseup', handleMouseUp);
163
- }
164
- getCellValue(column, row) {
165
- const { field, format, name } = column;
166
- const value = typeof field === 'function' ? field(row) : field ? row[field] : row[name];
167
- return format ? format(value, row) : value;
168
- }
169
- // ----- Render -----
170
- renderHeader() {
171
- return (h("thead", null, h("tr", null, this.selectable && (h("th", { class: {
172
- 'sd-th': true,
173
- 'sd-th--selected': true,
174
- 'sticky-left': Boolean(this.stickyColumn.left && this.stickyColumn.left > 0),
175
- }, style: {
176
- '--sticky-left-offset': '0px',
177
- } }, 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: {
178
- 'sd-th': true,
179
- [`${col.thClass}`]: Boolean(col.thClass),
180
- 'sticky-left': Boolean(this.stickyColumn.left && colIdx < this.stickyColumn.left),
181
- 'sticky-right': Boolean(this.stickyColumn.right && colIdx >= this.visibleColumns.length - this.stickyColumn.right),
182
- 'sticky-left-edge': Boolean(this.stickyColumn.left && colIdx === this.stickyColumn.left - 1),
183
- 'sticky-right-edge': Boolean(this.stickyColumn.right &&
184
- colIdx === this.visibleColumns.length - this.stickyColumn.right),
185
- }, 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) }))))))));
186
- }
187
- renderBody() {
188
- if (!this.paginatedRows.length)
189
- return (h("tbody", { part: "tbody-empty" }, h("tr", null, h("td", { colSpan: this.visibleColumns.length + (this.selectable ? 1 : 0) }, this.noDataLabel))));
190
- return (h("tbody", null, this.paginatedRows.map((row, rowIdx) => (h("tr", { key: row[this.rowKey], class: "hover:bg-Grey_Lighten-6" }, this.selectable && (h("td", { class: {
191
- 'sd-td': true,
192
- 'sd-td--selected': true,
193
- 'sticky-left': Boolean(this.stickyColumn.left && this.stickyColumn.left > 0),
194
- }, style: {
195
- '--sticky-left-offset': '0px',
196
- } }, h("sd-checkbox", { checked: this.isRowSelected(row), disabled: !this.paginatedRows.length, onSdChange: () => this.updateRowSelect(row) }))), this.visibleColumns.map((column, colIdx) => {
197
- const rendered = this.bodyCellRenderer?.(column, row);
198
- return (h("td", { key: column.name, part: `td-${column.name}`, class: {
199
- 'sd-td': true,
200
- [`sd-td--${column.align || 'left'}`]: true,
201
- 'sticky-left': Boolean(this.stickyColumn.left && colIdx < this.stickyColumn.left),
202
- 'sticky-right': Boolean(this.stickyColumn.right &&
203
- colIdx >= this.visibleColumns.length - this.stickyColumn.right),
204
- 'sticky-left-edge': Boolean(this.stickyColumn.left && colIdx === this.stickyColumn.left - 1),
205
- 'sticky-right-edge': Boolean(this.stickyColumn.right &&
206
- colIdx === this.visibleColumns.length - this.stickyColumn.right),
207
- [`${column.tdClass}`]: Boolean(column.tdClass),
208
- }, 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)))));
209
- }))))));
210
- }
211
- render() {
212
- return (h(Host, { key: 'b0e18a1fdb5a3291cc547c7c2afda88663d1eefc' }, h("div", { key: '177a2b0e58fb90e4c6cf9ae317865122ef23baa9', class: "sd-table__wrapper", style: {
213
- '--table-width': this.width,
214
- '--table-height': this.height,
215
- } }, h("div", { key: '328f160e9658060aca056408254527ab7fd396a7', class: "sd-table__container" }, h("div", { key: 'ac6f8f9d79c12a0eefad5163eeb281e991f4f131', class: "sd-table__middle" }, h("table", { key: 'dc5d902a48c50d3b4a8ffd7a07c2959afc14103c', part: "table", class: this.sdTableClasses }, this.renderHeader(), this.renderBody())), h("div", { key: '75326864a5d5df37d70ff4df073e48cfdb838d3c', class: "sd-table__bottom" })), this.pagination && this.innerRows.length > 0 && (h("div", { key: '25f6b105e40fb254b1ad8dcd642715c857c367ac', class: "sd-table__pagination" }, h("sd-pagination", { key: 'd1ade718dc3dc674e8acc3ab10236ab06f32c16c', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onPageChange: (e) => {
216
- if (!this.useInternalPagination) {
217
- this.sdPageChange.emit(e.detail);
218
- }
219
- else {
220
- this.currentPage = e.detail;
221
- this.sdPageChange.emit(this.currentPage);
222
- }
223
- } }))))));
224
- }
225
- static get watchers() { return {
226
- "columns": ["handleColumnsChange"],
227
- "rows": ["handleRowsChange"],
228
- "selected": ["handleSelectedChange"],
229
- "pagination": ["handlePaginationChange"]
230
- }; }
231
- };
232
- SdTable.style = sdTableCss;
233
-
234
- export { SdTable as sd_table };
235
- //# sourceMappingURL=sd-table.entry.js.map