@sellmate/design-system 1.0.76 → 1.0.78

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 (446) hide show
  1. package/dist/cjs/design-system.cjs.js +2 -2
  2. package/dist/cjs/{index-Dptupbm0.js → index--F2wGuAi.js} +1 -1
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/sd-action-modal.cjs.entry.js +2 -2
  5. package/dist/cjs/sd-badge.cjs.entry.js +2 -2
  6. package/dist/cjs/sd-barcode-input.cjs.entry.js +2 -2
  7. package/dist/cjs/sd-button-v2_2.cjs.entry.js +3 -3
  8. package/dist/cjs/sd-button_4.cjs.entry.js +10 -13
  9. package/dist/cjs/sd-calendar.cjs.entry.js +1 -1
  10. package/dist/cjs/sd-card.cjs.entry.js +2 -2
  11. package/dist/cjs/sd-checkbox.cjs.entry.js +7 -4
  12. package/dist/cjs/sd-chip.cjs.entry.js +2 -2
  13. package/dist/cjs/sd-circle-progress.cjs.entry.js +4 -4
  14. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +4 -4
  15. package/dist/cjs/sd-date-box.cjs.entry.js +1 -1
  16. package/dist/cjs/sd-date-picker-calendar.cjs.entry.js +3 -3
  17. package/dist/cjs/sd-date-picker-trigger.cjs.entry.js +4 -4
  18. package/dist/cjs/sd-date-picker.cjs.entry.js +4 -4
  19. package/dist/cjs/{sd-date-picker.config-B705zdZd.js → sd-date-picker.config-CRgCT5dn.js} +4 -2
  20. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +3 -3
  21. package/dist/cjs/sd-date-range-picker.cjs.entry.js +2 -2
  22. package/dist/cjs/sd-dropdown-button.cjs.entry.js +96 -9
  23. package/dist/cjs/sd-file-picker.cjs.entry.js +2 -2
  24. package/dist/cjs/sd-form.cjs.entry.js +1 -1
  25. package/dist/cjs/sd-ghost-button.cjs.entry.js +3 -3
  26. package/dist/cjs/sd-guide.cjs.entry.js +3 -3
  27. package/dist/cjs/{sd-input_2.cjs.entry.js → sd-input.cjs.entry.js} +3 -43
  28. package/dist/cjs/sd-linear-progress.cjs.entry.js +4 -4
  29. package/dist/cjs/sd-loading-container.cjs.entry.js +3 -3
  30. package/dist/cjs/sd-modal-container.cjs.entry.js +1 -1
  31. package/dist/cjs/sd-number-input.cjs.entry.js +4 -4
  32. package/dist/cjs/sd-pagination_5.cjs.entry.js +77 -33
  33. package/dist/cjs/sd-popover.cjs.entry.js +2 -2
  34. package/dist/cjs/sd-portal.cjs.entry.js +2 -2
  35. package/dist/cjs/sd-radio-button.cjs.entry.js +1 -1
  36. package/dist/cjs/sd-radio-group.cjs.entry.js +1 -1
  37. package/dist/cjs/sd-radio.cjs.entry.js +1 -1
  38. package/dist/cjs/{sd-select-v2-list-item_4.cjs.entry.js → sd-select-list-item_4.cjs.entry.js} +50 -50
  39. package/dist/cjs/sd-switch.cjs.entry.js +2 -2
  40. package/dist/cjs/sd-table.cjs.entry.js +91 -16
  41. package/dist/cjs/sd-table.config-Cb0Ot3C6.js +105 -0
  42. package/dist/cjs/sd-tabs.cjs.entry.js +2 -2
  43. package/dist/cjs/sd-tag.cjs.entry.js +3 -3
  44. package/dist/cjs/sd-td.cjs.entry.js +37 -6
  45. package/dist/cjs/sd-text-link.cjs.entry.js +4 -4
  46. package/dist/cjs/sd-textarea.cjs.entry.js +2 -2
  47. package/dist/cjs/sd-toast-container.cjs.entry.js +2 -2
  48. package/dist/cjs/sd-toast.cjs.entry.js +4 -5
  49. package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
  50. package/dist/cjs/{system-BbCUNhDJ.js → system-DpTN1vBC.js} +8 -2
  51. package/dist/cjs/{tooltipArrow-DuANjCfc.js → tooltipArrow-D1-wcNm1.js} +1 -1
  52. package/dist/collection/collection-manifest.json +11 -21
  53. package/dist/collection/components/sd-action-modal/sd-action-modal.js +1 -1
  54. package/dist/collection/components/sd-badge/sd-badge.js +1 -1
  55. package/dist/collection/components/sd-barcode-input/sd-barcode-input.js +1 -1
  56. package/dist/collection/components/sd-button-v2/sd-button-v2.js +2 -2
  57. package/dist/collection/components/sd-card/sd-card.js +1 -1
  58. package/dist/collection/components/sd-checkbox/sd-checkbox.js +6 -3
  59. package/dist/collection/components/sd-chip/sd-chip.js +1 -1
  60. package/dist/collection/components/sd-circle-progress/sd-circle-progress.config.js +1 -1
  61. package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +1 -1
  62. package/dist/collection/components/sd-confirm-modal/sd-confirm-modal.js +2 -2
  63. package/dist/collection/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.js +1 -1
  64. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +2 -2
  65. package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
  66. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +1 -1
  67. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.config.js +2 -2
  68. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +3 -3
  69. package/dist/collection/components/sd-field/sd-field.js +5 -8
  70. package/dist/collection/components/sd-file-picker/sd-file-picker.js +1 -1
  71. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +1 -1
  72. package/dist/collection/components/sd-ghost-button/sd-ghost-button.js +2 -2
  73. package/dist/collection/components/sd-guide/sd-guide.config.js +1 -1
  74. package/dist/collection/components/sd-input/sd-input.js +2 -2
  75. package/dist/collection/components/sd-linear-progress/sd-linear-progress.config.js +1 -1
  76. package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
  77. package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
  78. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +1 -1
  79. package/dist/collection/components/sd-number-input/sd-number-input.js +3 -3
  80. package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
  81. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  82. package/dist/collection/components/{sd-select-v2/sd-select-v2-list-item/sd-select-v2-list-item.css → sd-select/sd-select-list-item/sd-select-list-item.css} +13 -13
  83. package/dist/collection/components/{sd-select-v2/sd-select-v2-list-item/sd-select-v2-list-item.js → sd-select/sd-select-list-item/sd-select-list-item.js} +28 -28
  84. package/dist/collection/components/{sd-select-v2/sd-select-v2-list-item-search/sd-select-v2-list-item-search.css → sd-select/sd-select-list-item-search/sd-select-list-item-search.css} +11 -11
  85. package/dist/collection/components/{sd-select-v2/sd-select-v2-list-item-search/sd-select-v2-list-item-search.js → sd-select/sd-select-list-item-search/sd-select-list-item-search.js} +13 -13
  86. package/dist/collection/components/{sd-select-v2/sd-select-v2-listbox/sd-select-v2-listbox.css → sd-select/sd-select-listbox/sd-select-listbox.css} +3 -3
  87. package/dist/collection/components/{sd-select-v2/sd-select-v2-listbox/sd-select-v2-listbox.js → sd-select/sd-select-listbox/sd-select-listbox.js} +35 -35
  88. package/dist/collection/components/{sd-select-v2/sd-select-v2-trigger/sd-select-v2-trigger.css → sd-select/sd-select-trigger/sd-select-trigger.css} +7 -7
  89. package/dist/collection/components/{sd-select-v2/sd-select-v2-trigger/sd-select-v2-trigger.js → sd-select/sd-select-trigger/sd-select-trigger.js} +12 -12
  90. package/dist/collection/components/sd-select/sd-select.css +3 -47
  91. package/dist/collection/components/sd-select/sd-select.js +413 -294
  92. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  93. package/dist/collection/components/sd-table/sd-table.config.js +80 -0
  94. package/dist/collection/components/sd-table/sd-table.css +16 -8
  95. package/dist/collection/components/sd-table/sd-table.js +88 -14
  96. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.css +0 -8
  97. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +3 -4
  98. package/dist/collection/components/sd-table/sd-td/sd-td.js +55 -5
  99. package/dist/collection/components/sd-table/sd-thead/sd-thead.css +16 -12
  100. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +52 -8
  101. package/dist/collection/components/sd-table/sd-tr/sd-tr.css +3 -3
  102. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +27 -2
  103. package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
  104. package/dist/collection/components/sd-tag/sd-tag.js +2 -2
  105. package/dist/collection/components/sd-text-link/sd-text-link.js +3 -3
  106. package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
  107. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  108. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  109. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  110. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  111. package/dist/collection/utils/testing/index.js +2 -0
  112. package/dist/collection/utils/testing/mocks.js +35 -0
  113. package/dist/components/index.js +1 -1
  114. package/dist/components/{p-D5HLYqT-.js → p-B8jXOXtJ.js} +1 -1
  115. package/dist/components/p-BE6TxbtX.js +1 -0
  116. package/dist/components/{p-BBD_1E3n.js → p-BJsHakU2.js} +1 -1
  117. package/dist/components/{p-CgMyz4NQ.js → p-BStczlLa.js} +1 -1
  118. package/dist/components/{p-BM0sVq5Z.js → p-BcMNA89i.js} +1 -1
  119. package/dist/components/{p-6PsyRF61.js → p-BheX6lAy.js} +1 -1
  120. package/dist/components/p-BmYM7-4v.js +1 -0
  121. package/dist/components/{p-CUg9NH6y.js → p-BppjYHF6.js} +1 -1
  122. package/dist/components/{p-BLwIhCdO.js → p-Bvq0Vpln.js} +1 -1
  123. package/dist/components/{p-C7h8lwnU.js → p-BwWDMpJc.js} +1 -1
  124. package/dist/components/p-C5qZtNLl.js +1 -0
  125. package/dist/components/p-C7DajKYn.js +1 -0
  126. package/dist/components/p-CZ4ltUOw.js +1 -0
  127. package/dist/components/{p-d4UB2UF7.js → p-CeVMl_M9.js} +1 -1
  128. package/dist/components/p-D1DpOp6M.js +1 -0
  129. package/dist/components/p-D3gjBBCU.js +1 -0
  130. package/dist/components/{p-DQfNwvwx.js → p-DC-6inj0.js} +1 -1
  131. package/dist/components/p-DRF0He-x.js +1 -0
  132. package/dist/components/{p-B3xZdEDI.js → p-Dcc2Vm6z.js} +1 -1
  133. package/dist/components/p-DegvQLTF.js +1 -0
  134. package/dist/components/{p-Csfj4h1A.js → p-Dey-lS6x.js} +1 -1
  135. package/dist/components/p-DfH_fO01.js +1 -0
  136. package/dist/components/{p-DdJyzIYe.js → p-DkJqVXpD.js} +1 -1
  137. package/dist/components/{p-CZPR_5mk.js → p-DngV3MT1.js} +1 -1
  138. package/dist/components/{p-DaAhgdib.js → p-EbjZr2OA.js} +1 -1
  139. package/dist/components/p-LwWOleLJ.js +1 -0
  140. package/dist/components/p-Nvx13YlG.js +1 -0
  141. package/dist/components/{p-BXdEjuI_.js → p-TwGlKfsC.js} +1 -1
  142. package/dist/components/{p-6LtMeKKA.js → p-ZMpCZhXP.js} +1 -1
  143. package/dist/components/{p-BZm6KN1s.js → p-dNJIFthT.js} +1 -1
  144. package/dist/components/{p-iAWNMLXh.js → p-q0VWISKA.js} +1 -1
  145. package/dist/components/{p-BQvugXhH.js → p-xnLvZ-xn.js} +1 -1
  146. package/dist/components/sd-action-modal.js +1 -1
  147. package/dist/components/sd-badge.js +1 -1
  148. package/dist/components/sd-barcode-input.js +1 -1
  149. package/dist/components/sd-button-v2.js +1 -1
  150. package/dist/components/sd-button.js +1 -1
  151. package/dist/components/sd-calendar.js +1 -1
  152. package/dist/components/sd-card.js +1 -1
  153. package/dist/components/sd-checkbox.js +1 -1
  154. package/dist/components/sd-chip.js +1 -1
  155. package/dist/components/sd-circle-progress.js +1 -1
  156. package/dist/components/sd-confirm-modal.js +1 -1
  157. package/dist/components/sd-date-box.js +1 -1
  158. package/dist/components/sd-date-picker-calendar.js +1 -1
  159. package/dist/components/sd-date-picker-trigger.js +1 -1
  160. package/dist/components/sd-date-picker.js +1 -1
  161. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  162. package/dist/components/sd-date-range-picker.js +1 -1
  163. package/dist/components/sd-dropdown-button.js +1 -1
  164. package/dist/components/sd-field.js +1 -1
  165. package/dist/components/sd-file-picker.js +1 -1
  166. package/dist/components/sd-floating-portal.js +1 -1
  167. package/dist/components/sd-form.js +1 -1
  168. package/dist/components/sd-ghost-button.js +1 -1
  169. package/dist/components/sd-guide.js +1 -1
  170. package/dist/components/sd-icon.js +1 -1
  171. package/dist/components/sd-input.js +1 -1
  172. package/dist/components/sd-linear-progress.js +1 -1
  173. package/dist/components/sd-loading-container.js +1 -1
  174. package/dist/components/sd-loading-modal.js +1 -1
  175. package/dist/components/sd-modal-container.js +1 -1
  176. package/dist/components/sd-number-input.js +1 -1
  177. package/dist/components/sd-pagination.js +1 -1
  178. package/dist/components/sd-popover.js +1 -1
  179. package/dist/components/sd-portal.js +1 -1
  180. package/dist/components/sd-radio-button.js +1 -1
  181. package/dist/components/sd-radio-group.js +1 -1
  182. package/dist/components/sd-radio.js +1 -1
  183. package/dist/components/sd-select-list-item-search.d.ts +11 -0
  184. package/dist/components/sd-select-list-item-search.js +1 -0
  185. package/dist/components/{sd-select-multiple.d.ts → sd-select-list-item.d.ts} +4 -4
  186. package/dist/components/sd-select-list-item.js +1 -0
  187. package/dist/components/{sd-select-option.d.ts → sd-select-listbox.d.ts} +4 -4
  188. package/dist/components/sd-select-listbox.js +1 -0
  189. package/dist/components/{sd-select-group.d.ts → sd-select-trigger.d.ts} +4 -4
  190. package/dist/components/sd-select-trigger.js +1 -0
  191. package/dist/components/sd-select.js +1 -1
  192. package/dist/components/sd-switch.js +1 -1
  193. package/dist/components/sd-table.js +1 -1
  194. package/dist/components/sd-tabs.js +1 -1
  195. package/dist/components/sd-tag.js +1 -1
  196. package/dist/components/sd-tbody.js +1 -1
  197. package/dist/components/sd-td.js +1 -1
  198. package/dist/components/sd-text-link.js +1 -1
  199. package/dist/components/sd-textarea.js +1 -1
  200. package/dist/components/sd-thead.js +1 -1
  201. package/dist/components/sd-toast-container.js +1 -1
  202. package/dist/components/sd-toast.js +1 -1
  203. package/dist/components/sd-toggle.js +1 -1
  204. package/dist/components/sd-tooltip.js +1 -1
  205. package/dist/components/sd-tr.js +1 -1
  206. package/dist/design-system/design-system.css +1 -1
  207. package/dist/design-system/design-system.esm.js +1 -1
  208. package/dist/design-system/{p-6a3f8588.entry.js → p-0356c195.entry.js} +1 -1
  209. package/dist/design-system/{p-3a9559ee.entry.js → p-045bc426.entry.js} +1 -1
  210. package/dist/design-system/{p-c7bcb232.entry.js → p-12dfd239.entry.js} +1 -1
  211. package/dist/design-system/p-16d3a485.entry.js +1 -0
  212. package/dist/design-system/p-1706ed6f.entry.js +1 -0
  213. package/dist/design-system/{p-506f2b68.entry.js → p-182548f7.entry.js} +1 -1
  214. package/dist/design-system/p-1a79edce.entry.js +1 -0
  215. package/dist/design-system/{p-17cd3a33.entry.js → p-1cf87e87.entry.js} +1 -1
  216. package/dist/design-system/{p-dad07e1a.entry.js → p-25a08e98.entry.js} +1 -1
  217. package/dist/design-system/{p-b683f2fe.entry.js → p-2812b9ce.entry.js} +1 -1
  218. package/dist/design-system/{p-49f78122.entry.js → p-33bc3176.entry.js} +1 -1
  219. package/dist/design-system/p-38f661ea.entry.js +1 -0
  220. package/dist/design-system/{p-280dc548.entry.js → p-3f7bc660.entry.js} +1 -1
  221. package/dist/design-system/{p-eb29dc9f.entry.js → p-429dab5c.entry.js} +1 -1
  222. package/dist/design-system/p-455dccf5.entry.js +1 -0
  223. package/dist/design-system/{p-97ebf578.entry.js → p-59313838.entry.js} +1 -1
  224. package/dist/design-system/{p-5f6379e9.entry.js → p-6af01ab0.entry.js} +1 -1
  225. package/dist/design-system/{p-531a6a82.entry.js → p-6bfe3612.entry.js} +1 -1
  226. package/dist/design-system/{p-7fe3a466.entry.js → p-70d4903f.entry.js} +1 -1
  227. package/dist/design-system/p-767e99f9.entry.js +1 -0
  228. package/dist/design-system/{p-34f7345b.entry.js → p-797517b5.entry.js} +1 -1
  229. package/dist/design-system/p-7c370335.entry.js +1 -0
  230. package/dist/design-system/{p-a8bde8d9.entry.js → p-7fe8be6a.entry.js} +1 -1
  231. package/dist/design-system/{p-6af9e663.entry.js → p-83b262dc.entry.js} +1 -1
  232. package/dist/design-system/{p-11029f6e.entry.js → p-881adaa5.entry.js} +1 -1
  233. package/dist/design-system/{p-3ca5c303.entry.js → p-88d7303c.entry.js} +1 -1
  234. package/dist/design-system/{p-fdb52620.entry.js → p-8a601e0f.entry.js} +1 -1
  235. package/dist/design-system/p-C5qZtNLl.js +1 -0
  236. package/dist/design-system/p-CZ4ltUOw.js +1 -0
  237. package/dist/design-system/p-Cnwbjz1F.js +2 -0
  238. package/dist/design-system/p-DnCBBIoq.js +1 -0
  239. package/dist/design-system/{p-b745cd95.entry.js → p-a82be987.entry.js} +1 -1
  240. package/dist/design-system/p-b917c82a.entry.js +1 -0
  241. package/dist/design-system/{p-c9eb70f5.entry.js → p-b9f00eef.entry.js} +1 -1
  242. package/dist/design-system/{p-55b65a41.entry.js → p-bcb53788.entry.js} +1 -1
  243. package/dist/design-system/p-c24344ac.entry.js +1 -0
  244. package/dist/design-system/{p-2cd2f2dd.entry.js → p-d76192bd.entry.js} +1 -1
  245. package/dist/design-system/p-d9d8c51b.entry.js +1 -0
  246. package/dist/design-system/p-de67937d.entry.js +1 -0
  247. package/dist/design-system/{p-68d0d67e.entry.js → p-e5cebccd.entry.js} +1 -1
  248. package/dist/design-system/{p-a9fc2c21.entry.js → p-ea5e6c2c.entry.js} +1 -1
  249. package/dist/design-system/p-ead3e688.entry.js +1 -0
  250. package/dist/design-system/{p-f4a00276.entry.js → p-eeb1cac2.entry.js} +1 -1
  251. package/dist/design-system/{p-d6896893.entry.js → p-f1a74359.entry.js} +1 -1
  252. package/dist/design-system/{p-9466cd93.entry.js → p-f44786a9.entry.js} +1 -1
  253. package/dist/design-system/p-f522c91d.entry.js +1 -0
  254. package/dist/design-system/{p-bb492ba7.entry.js → p-f69c7539.entry.js} +1 -1
  255. package/dist/design-system/{p-ce3d0f9c.entry.js → p-fe9cef6a.entry.js} +1 -1
  256. package/dist/esm/design-system.js +3 -3
  257. package/dist/esm/{index-Bp7ytJz5.js → index-Cnwbjz1F.js} +1 -1
  258. package/dist/esm/loader.js +3 -3
  259. package/dist/esm/sd-action-modal.entry.js +2 -2
  260. package/dist/esm/sd-badge.entry.js +2 -2
  261. package/dist/esm/sd-barcode-input.entry.js +2 -2
  262. package/dist/esm/sd-button-v2_2.entry.js +3 -3
  263. package/dist/esm/sd-button_4.entry.js +10 -13
  264. package/dist/esm/sd-calendar.entry.js +1 -1
  265. package/dist/esm/sd-card.entry.js +2 -2
  266. package/dist/esm/sd-checkbox.entry.js +7 -4
  267. package/dist/esm/sd-chip.entry.js +2 -2
  268. package/dist/esm/sd-circle-progress.entry.js +4 -4
  269. package/dist/esm/sd-confirm-modal_2.entry.js +4 -4
  270. package/dist/esm/sd-date-box.entry.js +1 -1
  271. package/dist/esm/sd-date-picker-calendar.entry.js +3 -3
  272. package/dist/esm/sd-date-picker-trigger.entry.js +4 -4
  273. package/dist/esm/{sd-date-picker.config-DMbVR8K4.js → sd-date-picker.config-C2fDbE9d.js} +4 -2
  274. package/dist/esm/sd-date-picker.entry.js +4 -4
  275. package/dist/esm/sd-date-range-picker-calendar.entry.js +3 -3
  276. package/dist/esm/sd-date-range-picker.entry.js +2 -2
  277. package/dist/esm/sd-dropdown-button.entry.js +95 -8
  278. package/dist/esm/sd-file-picker.entry.js +2 -2
  279. package/dist/esm/sd-form.entry.js +1 -1
  280. package/dist/esm/sd-ghost-button.entry.js +3 -3
  281. package/dist/esm/sd-guide.entry.js +3 -3
  282. package/dist/esm/{sd-input_2.entry.js → sd-input.entry.js} +4 -43
  283. package/dist/esm/sd-linear-progress.entry.js +4 -4
  284. package/dist/esm/sd-loading-container.entry.js +3 -3
  285. package/dist/esm/sd-modal-container.entry.js +1 -1
  286. package/dist/esm/sd-number-input.entry.js +4 -4
  287. package/dist/esm/sd-pagination_5.entry.js +77 -33
  288. package/dist/esm/sd-popover.entry.js +2 -2
  289. package/dist/esm/sd-portal.entry.js +2 -2
  290. package/dist/esm/sd-radio-button.entry.js +1 -1
  291. package/dist/esm/sd-radio-group.entry.js +1 -1
  292. package/dist/esm/sd-radio.entry.js +1 -1
  293. package/dist/esm/{sd-select-v2-list-item_4.entry.js → sd-select-list-item_4.entry.js} +47 -47
  294. package/dist/esm/sd-switch.entry.js +2 -2
  295. package/dist/esm/sd-table.config-Bj-EEo7N.js +94 -0
  296. package/dist/esm/sd-table.entry.js +91 -16
  297. package/dist/esm/sd-tabs.entry.js +2 -2
  298. package/dist/esm/sd-tag.entry.js +3 -3
  299. package/dist/esm/sd-td.entry.js +37 -6
  300. package/dist/esm/sd-text-link.entry.js +4 -4
  301. package/dist/esm/sd-textarea.entry.js +2 -2
  302. package/dist/esm/sd-toast-container.entry.js +2 -2
  303. package/dist/esm/sd-toast.entry.js +4 -5
  304. package/dist/esm/sd-toggle.entry.js +2 -2
  305. package/dist/esm/{system-BgFLSKqC.js → system-CZ4ltUOw.js} +8 -2
  306. package/dist/esm/{tooltipArrow-BHRQVawd.js → tooltipArrow-D8sr81Xw.js} +1 -1
  307. package/dist/types/components/{sd-select-v2/sd-select-v2-list-item/sd-select-v2-list-item.d.ts → sd-select/sd-select-list-item/sd-select-list-item.d.ts} +4 -4
  308. package/dist/types/components/{sd-select-v2/sd-select-v2-list-item-search/sd-select-v2-list-item-search.d.ts → sd-select/sd-select-list-item-search/sd-select-list-item-search.d.ts} +1 -1
  309. package/dist/types/components/{sd-select-v2/sd-select-v2-listbox/sd-select-v2-listbox.d.ts → sd-select/sd-select-listbox/sd-select-listbox.d.ts} +6 -6
  310. package/dist/types/components/{sd-select-v2/sd-select-v2-trigger/sd-select-v2-trigger.d.ts → sd-select/sd-select-trigger/sd-select-trigger.d.ts} +1 -1
  311. package/dist/types/components/{sd-select-v2/sd-select-v2.config.d.ts → sd-select/sd-select.config.d.ts} +12 -12
  312. package/dist/types/components/sd-select/sd-select.d.ts +56 -84
  313. package/dist/types/components/sd-table/constants.d.ts +4 -1
  314. package/dist/types/components/sd-table/sd-table.config.d.ts +64 -0
  315. package/dist/types/components/sd-table/sd-table.d.ts +8 -0
  316. package/dist/types/components/sd-table/sd-td/sd-td.d.ts +5 -2
  317. package/dist/types/components/sd-table/sd-thead/sd-thead.d.ts +5 -0
  318. package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +1 -0
  319. package/dist/types/components.d.ts +943 -2382
  320. package/dist/types/utils/testing/index.d.ts +2 -0
  321. package/dist/types/utils/testing/mocks.d.ts +4 -0
  322. package/hydrate/index.js +533 -2214
  323. package/hydrate/index.mjs +533 -2214
  324. package/package.json +1 -1
  325. package/dist/cjs/base-dropdown-event-BTPlZ1KF.js +0 -91
  326. package/dist/cjs/sd-progress.cjs.entry.js +0 -63
  327. package/dist/cjs/sd-select-dropdown_2.cjs.entry.js +0 -231
  328. package/dist/cjs/sd-select-group.cjs.entry.js +0 -332
  329. package/dist/cjs/sd-select-multiple-group.cjs.entry.js +0 -458
  330. package/dist/cjs/sd-select-multiple.cjs.entry.js +0 -191
  331. package/dist/cjs/sd-select-option-group.cjs.entry.js +0 -68
  332. package/dist/cjs/sd-select.cjs.entry.js +0 -181
  333. package/dist/cjs/select-keyboard-navigation-CErfIrGV.js +0 -27
  334. package/dist/cjs/table-test.cjs.entry.js +0 -96
  335. package/dist/collection/components/sd-progress/sd-progress.css +0 -63
  336. package/dist/collection/components/sd-progress/sd-progress.js +0 -186
  337. package/dist/collection/components/sd-select/sd-select-dropdown/sd-select-dropdown.css +0 -30
  338. package/dist/collection/components/sd-select/sd-select-dropdown/sd-select-dropdown.js +0 -444
  339. package/dist/collection/components/sd-select/sd-select-option/sd-select-option.css +0 -36
  340. package/dist/collection/components/sd-select/sd-select-option/sd-select-option.js +0 -257
  341. package/dist/collection/components/sd-select/sd-select-search-input/sd-select-search-input.css +0 -23
  342. package/dist/collection/components/sd-select/sd-select-search-input/sd-select-search-input.js +0 -161
  343. package/dist/collection/components/sd-select-group/sd-select-group.css +0 -81
  344. package/dist/collection/components/sd-select-group/sd-select-group.js +0 -1061
  345. package/dist/collection/components/sd-select-multiple/sd-select-multiple.css +0 -54
  346. package/dist/collection/components/sd-select-multiple/sd-select-multiple.js +0 -770
  347. package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.css +0 -79
  348. package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.js +0 -1183
  349. package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.css +0 -75
  350. package/dist/collection/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.js +0 -305
  351. package/dist/collection/components/sd-select-v2/sd-select-v2.css +0 -11
  352. package/dist/collection/components/sd-select-v2/sd-select-v2.js +0 -897
  353. package/dist/collection/components/table-test/table-test.css +0 -59
  354. package/dist/collection/components/table-test/table-test.js +0 -316
  355. package/dist/components/p-6AvsuYqF.js +0 -1
  356. package/dist/components/p-7DKZPPev.js +0 -1
  357. package/dist/components/p-9ZtJl4s6.js +0 -1
  358. package/dist/components/p-BRfPoWUn.js +0 -1
  359. package/dist/components/p-BZc6lwGD.js +0 -1
  360. package/dist/components/p-BgFLSKqC.js +0 -1
  361. package/dist/components/p-Btx5sC7s.js +0 -1
  362. package/dist/components/p-C-BOe23n.js +0 -1
  363. package/dist/components/p-CNAzAL53.js +0 -1
  364. package/dist/components/p-CqghR1aS.js +0 -1
  365. package/dist/components/p-Cy6HMEsK.js +0 -1
  366. package/dist/components/p-DAC3TaZV.js +0 -1
  367. package/dist/components/p-DBex-RJU.js +0 -1
  368. package/dist/components/p-DWMY9O2B.js +0 -1
  369. package/dist/components/p-DfOYYI9m.js +0 -1
  370. package/dist/components/p-eEC3ITv0.js +0 -1
  371. package/dist/components/p-nVHDJc9g.js +0 -1
  372. package/dist/components/p-rnbt1m4L.js +0 -1
  373. package/dist/components/sd-progress.d.ts +0 -11
  374. package/dist/components/sd-progress.js +0 -1
  375. package/dist/components/sd-select-dropdown.d.ts +0 -11
  376. package/dist/components/sd-select-dropdown.js +0 -1
  377. package/dist/components/sd-select-group.js +0 -1
  378. package/dist/components/sd-select-multiple-group.d.ts +0 -11
  379. package/dist/components/sd-select-multiple-group.js +0 -1
  380. package/dist/components/sd-select-multiple.js +0 -1
  381. package/dist/components/sd-select-option-group.d.ts +0 -11
  382. package/dist/components/sd-select-option-group.js +0 -1
  383. package/dist/components/sd-select-option.js +0 -1
  384. package/dist/components/sd-select-search-input.d.ts +0 -11
  385. package/dist/components/sd-select-search-input.js +0 -1
  386. package/dist/components/sd-select-v2-list-item-search.d.ts +0 -11
  387. package/dist/components/sd-select-v2-list-item-search.js +0 -1
  388. package/dist/components/sd-select-v2-list-item.d.ts +0 -11
  389. package/dist/components/sd-select-v2-list-item.js +0 -1
  390. package/dist/components/sd-select-v2-listbox.d.ts +0 -11
  391. package/dist/components/sd-select-v2-listbox.js +0 -1
  392. package/dist/components/sd-select-v2-trigger.d.ts +0 -11
  393. package/dist/components/sd-select-v2-trigger.js +0 -1
  394. package/dist/components/sd-select-v2.d.ts +0 -11
  395. package/dist/components/sd-select-v2.js +0 -1
  396. package/dist/components/table-test.d.ts +0 -11
  397. package/dist/components/table-test.js +0 -1
  398. package/dist/design-system/p-00612047.entry.js +0 -1
  399. package/dist/design-system/p-07adda3c.entry.js +0 -1
  400. package/dist/design-system/p-0e1b27cc.entry.js +0 -1
  401. package/dist/design-system/p-140b40ab.entry.js +0 -1
  402. package/dist/design-system/p-1573f415.entry.js +0 -1
  403. package/dist/design-system/p-1b9f6cef.entry.js +0 -1
  404. package/dist/design-system/p-1cc7d81f.entry.js +0 -1
  405. package/dist/design-system/p-1fa6c17f.entry.js +0 -1
  406. package/dist/design-system/p-2eb910ec.entry.js +0 -1
  407. package/dist/design-system/p-363c9451.entry.js +0 -1
  408. package/dist/design-system/p-4114eea3.entry.js +0 -1
  409. package/dist/design-system/p-5e300b77.entry.js +0 -1
  410. package/dist/design-system/p-711c59fc.entry.js +0 -1
  411. package/dist/design-system/p-850de8d4.entry.js +0 -1
  412. package/dist/design-system/p-8ff967f7.entry.js +0 -1
  413. package/dist/design-system/p-9fee77f0.entry.js +0 -1
  414. package/dist/design-system/p-BPGLtKk5.js +0 -1
  415. package/dist/design-system/p-BgFLSKqC.js +0 -1
  416. package/dist/design-system/p-Bp7ytJz5.js +0 -2
  417. package/dist/design-system/p-CRdYeSBK.js +0 -1
  418. package/dist/design-system/p-Cy6HMEsK.js +0 -1
  419. package/dist/design-system/p-c521e731.entry.js +0 -1
  420. package/dist/design-system/p-ce2210ad.entry.js +0 -1
  421. package/dist/design-system/p-d1846df9.entry.js +0 -1
  422. package/dist/design-system/p-d52f25c6.entry.js +0 -1
  423. package/dist/design-system/p-dbcbbf1e.entry.js +0 -1
  424. package/dist/esm/base-dropdown-event-CRdYeSBK.js +0 -89
  425. package/dist/esm/sd-progress.entry.js +0 -61
  426. package/dist/esm/sd-select-dropdown_2.entry.js +0 -228
  427. package/dist/esm/sd-select-group.entry.js +0 -330
  428. package/dist/esm/sd-select-multiple-group.entry.js +0 -456
  429. package/dist/esm/sd-select-multiple.entry.js +0 -189
  430. package/dist/esm/sd-select-option-group.entry.js +0 -66
  431. package/dist/esm/sd-select.entry.js +0 -179
  432. package/dist/esm/select-keyboard-navigation-Cy6HMEsK.js +0 -25
  433. package/dist/esm/table-test.entry.js +0 -94
  434. package/dist/types/components/sd-progress/sd-progress.d.ts +0 -15
  435. package/dist/types/components/sd-select/sd-select-dropdown/sd-select-dropdown.d.ts +0 -41
  436. package/dist/types/components/sd-select/sd-select-option/sd-select-option.d.ts +0 -23
  437. package/dist/types/components/sd-select/sd-select-search-input/sd-select-search-input.d.ts +0 -11
  438. package/dist/types/components/sd-select-group/sd-select-group.d.ts +0 -86
  439. package/dist/types/components/sd-select-multiple/sd-select-multiple.d.ts +0 -64
  440. package/dist/types/components/sd-select-multiple-group/sd-select-multiple-group.d.ts +0 -110
  441. package/dist/types/components/sd-select-multiple-group/sd-select-option-group/sd-select-option-group.d.ts +0 -29
  442. package/dist/types/components/sd-select-v2/sd-select-v2.d.ts +0 -75
  443. package/dist/types/components/table-test/table-test.d.ts +0 -46
  444. /package/dist/collection/components/{sd-select-v2/sd-select-v2.config.js → sd-select/sd-select.config.js} +0 -0
  445. /package/dist/components/{p-DMbVR8K4.js → p-C2fDbE9d.js} +0 -0
  446. /package/dist/design-system/{p-DMbVR8K4.js → p-C2fDbE9d.js} +0 -0
@@ -40,7 +40,7 @@ export class SdSwitch {
40
40
  '--sd-switch-line-height': `${SWITCH_TYPOGRAPHY.lineHeight}px`,
41
41
  '--sd-switch-text-decoration': SWITCH_TYPOGRAPHY.textDecoration,
42
42
  };
43
- return (h("label", { key: '469c012285d3c8a33792a460e74d8566c384efe8', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, h("input", { key: '9678e3325339a47e3e2d81ce3cd752c86ed0f906', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), h("div", { key: '47348914869f5215957a652cfcf3a11807a0216f', class: "sd-switch__track" }, h("div", { key: '0676260c42e6b79acec710f0f9ba72f01a3a7c18', class: "sd-switch__knob" })), this.label && h("span", { key: 'b92597092795bff38d2acf0cff76f9c381435438', class: "sd-switch__label" }, this.label)));
43
+ return (h("label", { key: '54ebe92b29a80537e2e4380ffe096a252f883d10', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, h("input", { key: 'd18abbbf293434f07ae7dfa18b983b47cac1b774', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), h("div", { key: '76fef910e632b541c0b33c508e6001529df5614f', class: "sd-switch__track" }, h("div", { key: 'a66f4ecca5787f00febe19216a93ec62916e0541', class: "sd-switch__knob" })), this.label && h("span", { key: '948d2b7afc6e171ee329752cb85f8e361f6bbed8', class: "sd-switch__label" }, this.label)));
44
44
  }
45
45
  static get is() { return "sd-switch"; }
46
46
  static get originalStyleUrls() {
@@ -0,0 +1,80 @@
1
+ import tableTokens from "../../tokens/generated/component.table.json";
2
+ import systemTokens from "../../tokens/generated/system.json";
3
+ // ── Header Tokens ──
4
+ export const TABLE_HEADER_LAYOUT = {
5
+ height: tableTokens.table.header.height,
6
+ paddingX: tableTokens.table.header.paddingX,
7
+ gap: tableTokens.table.header.gap,
8
+ };
9
+ export const TABLE_HEADER_TYPOGRAPHY = {
10
+ fontFamily: tableTokens.table.header.typography.fontFamily,
11
+ fontWeight: tableTokens.table.header.typography.fontWeight,
12
+ fontSize: tableTokens.table.header.typography.fontSize,
13
+ lineHeight: tableTokens.table.header.typography.lineHeight,
14
+ textDecoration: tableTokens.table.header.typography.textDecoration,
15
+ };
16
+ export const TABLE_HEADER_COLORS = {
17
+ bg: tableTokens.table.header.bg,
18
+ };
19
+ export const TABLE_HEADER_RESIZING_BAR = {
20
+ color: tableTokens.table.header.resizingBar.color,
21
+ height: tableTokens.table.header.resizingBar.height,
22
+ };
23
+ // ── Body Tokens ──
24
+ export const TABLE_BODY_LAYOUT = {
25
+ default: {
26
+ height: tableTokens.table.body.default.height,
27
+ paddingY: tableTokens.table.body.default.paddingY,
28
+ },
29
+ dense: {
30
+ height: tableTokens.table.body.dense.height,
31
+ paddingY: tableTokens.table.body.dense.paddingY,
32
+ },
33
+ paddingX: tableTokens.table.body.paddingX,
34
+ framePadding: tableTokens.table.body.frame.padding,
35
+ };
36
+ export const TABLE_BODY_TYPOGRAPHY = {
37
+ fontFamily: tableTokens.table.body.typography.fontFamily,
38
+ fontWeight: tableTokens.table.body.typography.fontWeight,
39
+ fontSize: tableTokens.table.body.typography.fontSize,
40
+ lineHeight: tableTokens.table.body.typography.lineHeight,
41
+ textDecoration: tableTokens.table.body.typography.textDecoration,
42
+ };
43
+ // ── Frame / Border Tokens ──
44
+ export const TABLE_BORDER = {
45
+ color: tableTokens.table.border.default,
46
+ width: tableTokens.table.border.width.width,
47
+ };
48
+ export const TABLE_RADIUS = tableTokens.table.radius;
49
+ // ── Content Tokens ──
50
+ export const TABLE_CONTENT = {
51
+ gap: tableTokens.table.content.gap,
52
+ };
53
+ // ── Bar Tokens ──
54
+ export const TABLE_BAR_LAYOUT = {
55
+ height: tableTokens.table.bar.height,
56
+ sectionGap: tableTokens.table.bar.section.gap,
57
+ dividerHeight: tableTokens.table.bar.divider.height,
58
+ };
59
+ export const TABLE_BAR_COLORS = {
60
+ count: {
61
+ total: tableTokens.table.bar.count.total,
62
+ null: tableTokens.table.bar.count.null,
63
+ },
64
+ };
65
+ // ── KeyValue Tokens ──
66
+ export const TABLE_KEY_VALUE = {
67
+ bodyPadding: tableTokens.table.keyValue.body.padding,
68
+ height: tableTokens.table.keyValue.height,
69
+ };
70
+ // ── Header Icon Color Defaults ──
71
+ const ICON_DEFAULT_COLOR = {
72
+ pageEdit: systemTokens.color.darkblue.strong,
73
+ arrowDown: systemTokens.color.darkblue.strong,
74
+ arrowUp: systemTokens.color.darkblue.strong,
75
+ updown: systemTokens.color.grey.strong,
76
+ pageMove: systemTokens.color.darkblue.strong,
77
+ star: systemTokens.color.blue.strong,
78
+ };
79
+ export const resolveTableIconColor = (name, override) => override ?? ICON_DEFAULT_COLOR[name];
80
+ export const resolveSortIconName = (sort) => sort === 'asc' ? 'arrowDown' : sort === 'desc' ? 'arrowUp' : 'updown';
@@ -24,12 +24,12 @@ sd-table *,
24
24
  width: 100%;
25
25
  min-width: 0;
26
26
  height: var(--table-container-height, 400px);
27
- border: 1px solid #E1E1E1;
28
- border-radius: 8px;
27
+ border: var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);
28
+ border-radius: var(--table-radius, 8px);
29
29
  overflow: hidden;
30
30
  }
31
31
  .sd-table__clip--has-pagination {
32
- border-radius: 8px 8px 0 0;
32
+ border-radius: var(--table-radius, 8px) var(--table-radius, 8px) 0 0;
33
33
  }
34
34
 
35
35
  .sd-table__wrapper {
@@ -38,7 +38,11 @@ sd-table *,
38
38
  display: flex;
39
39
  flex-direction: column;
40
40
  position: relative;
41
- font-size: 12px;
41
+ font-family: var(--table-body-font-family, inherit);
42
+ font-weight: var(--table-body-font-weight, 400);
43
+ font-size: var(--table-body-font-size, 12px);
44
+ line-height: var(--table-body-line-height, 20px);
45
+ text-decoration: var(--table-body-text-decoration, none);
42
46
  overflow: auto;
43
47
  background: #FFFFFF;
44
48
  }
@@ -57,12 +61,16 @@ sd-table *,
57
61
  display: flex;
58
62
  align-items: center;
59
63
  justify-content: center;
60
- font-size: 12px;
64
+ font-size: var(--table-body-font-size, 12px);
61
65
  color: #888888;
62
66
  pointer-events: none;
63
67
  z-index: 200;
64
68
  background: rgba(255, 255, 255, 0.6);
65
69
  }
70
+ .sd-table__no-data ::slotted(*),
71
+ .sd-table__no-data span {
72
+ pointer-events: auto;
73
+ }
66
74
 
67
75
  .sd-table__loading {
68
76
  position: absolute;
@@ -121,11 +129,11 @@ sd-table *,
121
129
  display: flex;
122
130
  align-items: center;
123
131
  justify-content: center;
124
- border: 1px solid #E1E1E1;
132
+ border: var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);
125
133
  border-top: none;
126
- border-radius: 0 0 8px 8px;
134
+ border-radius: 0 0 var(--table-radius, 8px) var(--table-radius, 8px);
127
135
  }
128
- .sd-table__pagination sd-select-v2 {
136
+ .sd-table__pagination sd-select {
129
137
  position: absolute;
130
138
  right: 10px;
131
139
  top: 50%;
@@ -1,6 +1,7 @@
1
1
  import { h, Host, readTask, forceUpdate, } from "@stencil/core";
2
2
  import { nanoid } from "nanoid";
3
3
  import { TABLE_ID_ATTR, } from "./constants";
4
+ import { TABLE_RADIUS, TABLE_BORDER, TABLE_BODY_TYPOGRAPHY } from "./sd-table.config";
4
5
  export class SdTable {
5
6
  static DEFAULT_NO_DATA_LABEL = '데이터가 없습니다.';
6
7
  el;
@@ -58,6 +59,36 @@ export class SdTable {
58
59
  onScroll;
59
60
  // 키: `${rowKey}::${field}` → { rowspan, colspan }
60
61
  spanRegistry = new Map();
62
+ // 키: `${rowKey}::${field}` → sd-td의 sdClass 문자열
63
+ // sd-tr가 td를 그릴 때 머지해서 셀-단위 커스텀 클래스를 적용한다.
64
+ cellClassRegistry = new Map();
65
+ // rowKey 문자열 → rows 배열에서의 visual index.
66
+ // rowspan 위쪽 행 스캔에서 "내 위에 있느냐"를 판정하기 위한 시각적 순서 소스.
67
+ // rows prop이 있으면 채워지고, 없으면 비어 있어 Number(rowKey) fallback이 사용된다.
68
+ rowIndexMap = new Map();
69
+ rebuildRowIndexMap() {
70
+ this.rowIndexMap.clear();
71
+ if (!Array.isArray(this.rows))
72
+ return;
73
+ const field = this.rowKey;
74
+ this.rows.forEach((r, i) => {
75
+ const k = r?.[field];
76
+ if (k == null)
77
+ return;
78
+ this.rowIndexMap.set(String(k), i);
79
+ });
80
+ }
81
+ // rowKey의 시각적 행 인덱스를 돌려준다.
82
+ // 1) rows 기반 맵에 있으면 그 값 (임의 문자열 rowKey 지원)
83
+ // 2) 없으면 Number(rowKey) fallback (rows prop 없이 슬롯-온리 + 숫자 rowKey 사용 패턴)
84
+ // 3) 둘 다 안 되면 null — rowspan 평가 스킵
85
+ resolveRowIndex(rowKey) {
86
+ const fromMap = this.rowIndexMap.get(rowKey);
87
+ if (fromMap !== undefined)
88
+ return fromMap;
89
+ const n = Number(rowKey);
90
+ return Number.isFinite(n) ? n : null;
91
+ }
61
92
  toFiniteNumber(value, fallback) {
62
93
  const n = typeof value === 'number' ? value : Number(value);
63
94
  return Number.isFinite(n) ? n : fallback;
@@ -104,10 +135,14 @@ export class SdTable {
104
135
  if (!Array.isArray(newRows))
105
136
  return;
106
137
  this.rowCount = newRows.length;
138
+ this.rebuildRowIndexMap();
107
139
  if (this.useVirtualScroll)
108
140
  this.propagateVirtualUpdate(true);
109
141
  this.pushRowsToChildren(newRows);
110
142
  }
143
+ handleRowKeyChange() {
144
+ this.rebuildRowIndexMap();
145
+ }
111
146
  handleTableIdChange() {
112
147
  this.syncTableIdAttribute();
113
148
  }
@@ -148,6 +183,7 @@ export class SdTable {
148
183
  this.detectChildren();
149
184
  this.innerSelected = new Set(this.selected || []);
150
185
  this.columnWidths = (this.columns || []).map(c => parseInt(c.width || '120', 10));
186
+ this.rebuildRowIndexMap();
151
187
  if (this.pagination?.page) {
152
188
  this.currentPage = this.pagination.page;
153
189
  }
@@ -173,6 +209,9 @@ export class SdTable {
173
209
  el.getSpanSync = this.getSpanSync.bind(this);
174
210
  el.isCoveredSync = this.isCoveredSync.bind(this);
175
211
  el.hasRowspanSync = this.hasRowspanSync.bind(this);
212
+ el.registerCellClassSync = this.registerCellClassSync.bind(this);
213
+ el.unregisterCellClassSync = this.unregisterCellClassSync.bind(this);
214
+ el.getCellClassSync = this.getCellClassSync.bind(this);
176
215
  if (Array.isArray(this.rows)) {
177
216
  this.rowCount = this.rows.length;
178
217
  this.pushRowsToChildren(this.rows);
@@ -508,6 +547,28 @@ export class SdTable {
508
547
  getSpanSync(rowKey, field) {
509
548
  return this.spanRegistry.get(this.spanKey(rowKey, field));
510
549
  }
550
+ // sd-td의 sdClass 등록. 빈/공백만 있는 값은 해제로 취급.
551
+ // span과 달리 다른 셀에 영향이 없으므로 형제 sd-tr 전체를 재렌더하지 않고,
552
+ // sd-td 쪽에서 자기 부모 tr만 bumpSpansVersion으로 새로 그린다.
553
+ registerCellClassSync(rowKey, field, cls) {
554
+ if (rowKey == null || !field)
555
+ return;
556
+ const key = this.spanKey(rowKey, field);
557
+ const safe = (cls ?? '').trim();
558
+ if (!safe) {
559
+ this.cellClassRegistry.delete(key);
560
+ return;
561
+ }
562
+ this.cellClassRegistry.set(key, safe);
563
+ }
564
+ unregisterCellClassSync(rowKey, field) {
565
+ if (rowKey == null || !field)
566
+ return;
567
+ this.cellClassRegistry.delete(this.spanKey(rowKey, field));
568
+ }
569
+ getCellClassSync(rowKey, field) {
570
+ return this.cellClassRegistry.get(this.spanKey(rowKey, field));
571
+ }
511
572
  // 레지스트리에 rowspan>1 항목이 하나라도 있으면 true.
512
573
  // hover 동작을 끌지 결정하는 데 사용 — colspan만 있는 경우는 그대로 hover 유지.
513
574
  hasRowspanSync() {
@@ -533,9 +594,11 @@ export class SdTable {
533
594
  if (i + span.colspan > colIdx)
534
595
  return true;
535
596
  }
536
- // 2. 위쪽 행 스캔 — 숫자 변환 가능한 rowKey만 rowspan 평가
537
- const myRowIdx = Number(rowKey);
538
- if (!Number.isFinite(myRowIdx))
597
+ // 2. 위쪽 행 스캔 — rows 기반 visual index로 "내 위에 있느냐" 판정
598
+ // rows prop이 있으면 rowIndexMap로 임의 문자열 rowKey 지원,
599
+ // 없으면 Number(rowKey) fallback (resolveRowIndex가 처리)
600
+ const myRowIdx = this.resolveRowIndex(rowKey);
601
+ if (myRowIdx == null)
539
602
  return false;
540
603
  for (const [key, span] of this.spanRegistry) {
541
604
  if (span.rowspan <= 1)
@@ -545,8 +608,8 @@ export class SdTable {
545
608
  continue;
546
609
  const otherRowKey = key.slice(0, sepIdx);
547
610
  const otherField = key.slice(sepIdx + 2);
548
- const otherRowIdx = Number(otherRowKey);
549
- if (!Number.isFinite(otherRowIdx))
611
+ const otherRowIdx = this.resolveRowIndex(otherRowKey);
612
+ if (otherRowIdx == null)
550
613
  continue;
551
614
  if (otherRowIdx >= myRowIdx)
552
615
  continue;
@@ -615,12 +678,10 @@ export class SdTable {
615
678
  const allRows = this.rows ?? [];
616
679
  const pageInfo = this.getPaginationInfoSync();
617
680
  const startIdx = pageInfo?.startIndex ?? 0;
618
- const displayed = pageInfo
619
- ? allRows.slice(pageInfo.startIndex, pageInfo.endIndex)
620
- : allRows;
681
+ const displayed = pageInfo ? allRows.slice(pageInfo.startIndex, pageInfo.endIndex) : allRows;
621
682
  return displayed.map((row, i) => {
622
683
  const absoluteIdx = startIdx + i;
623
- return (h("sd-tr", { key: absoluteIdx, "row-key": String(absoluteIdx), row: row }));
684
+ return h("sd-tr", { key: absoluteIdx, "row-key": String(absoluteIdx), row: row });
624
685
  });
625
686
  }
626
687
  get tableClasses() {
@@ -642,24 +703,34 @@ export class SdTable {
642
703
  }
643
704
  render() {
644
705
  const resolvedTableId = this.getResolvedTableId();
645
- return (h(Host, { key: 'd73cd690ad11ce92af37b6f32374f6f891c5b677' }, h("div", { key: 'f51d23212885ad8121b9a4e895fb854f1e142bc4', class: "sd-table__container", style: {
706
+ const hostStyle = {
707
+ '--table-radius': `${TABLE_RADIUS}px`,
708
+ '--table-border-color': TABLE_BORDER.color,
709
+ '--table-border-width': `${TABLE_BORDER.width}px`,
710
+ '--table-body-font-family': TABLE_BODY_TYPOGRAPHY.fontFamily,
711
+ '--table-body-font-weight': TABLE_BODY_TYPOGRAPHY.fontWeight,
712
+ '--table-body-font-size': `${TABLE_BODY_TYPOGRAPHY.fontSize}px`,
713
+ '--table-body-line-height': `${TABLE_BODY_TYPOGRAPHY.lineHeight}px`,
714
+ '--table-body-text-decoration': TABLE_BODY_TYPOGRAPHY.textDecoration,
715
+ };
716
+ return (h(Host, { key: 'c20a7cc6d5917c9d09c699f2c40ac2b6d07747e1', style: hostStyle }, h("div", { key: '94f76e75da5c6ff9d0ef93b6c2aa3def4ec1766e', class: "sd-table__container", style: {
646
717
  '--table-width': this.width,
647
718
  '--table-height': this.height,
648
719
  '--table-container-height': `calc(${this.height || '100%'} - ${this.pagination && this.rowCount > 0 && !this.useVirtualScroll ? 48 : 0}px)`,
649
- } }, h("div", { key: '84b1ba7b2220ff55304b9c19e59304ca2257cff0', class: {
720
+ } }, h("div", { key: '3b98c828c7dc42de3d4f9bb645279b20d9079ac4', class: {
650
721
  'sd-table__clip': true,
651
722
  'sd-table__clip--has-pagination': !!(this.pagination &&
652
723
  this.pagination.rowsPerPage > 0 &&
653
724
  this.rowCount > 0 &&
654
725
  !this.useVirtualScroll),
655
- } }, h("div", { key: 'c901eba67eae29515bf0b3edcc6632b2aacf0f80', class: {
726
+ } }, h("div", { key: 'b6d04ec953d7b75fb8ad8bc32e2662550d38c5c7', class: {
656
727
  'sd-table__wrapper': true,
657
728
  'sd-table__wrapper--loading': this.isLoading,
658
729
  'sd-table__wrapper--no-data': this.rowCount === 0 && !this.isLoading,
659
- } }, this.isLoading && (h("div", { key: '35a237d0203b2479dbdb77ac42c918a9375bdfd3', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, h("sd-circle-progress", { key: '21a29981c1cdbd679f46abd2e7de7794c9ebbca9', indeterminate: true }))), this.rowCount === 0 && !this.isLoading && (h("div", { key: '07ad28bc6e7556cfe229fc1e952410f388424a7f', class: "sd-table__no-data" }, h("slot", { key: 'bf21e60f5b86614587b704bea2965b9467c7f467', name: "no-data" }, h("span", { key: 'f3d012d12e9189545b0cef52250502d46cb9a764' }, this.resolvedNoDataLabel)))), h("table", { key: '655d3dc017c6445ec454faef0e5e9837b7ee0013', class: this.tableClasses }, this.autoThead ? (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, h("sd-thead", { rows: this.rows ?? [] }))) : (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
730
+ } }, this.isLoading && (h("div", { key: '3050275c7ecde0aeda3ec881257be4334ebd06fc', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, h("sd-circle-progress", { key: '7a26c4365e4e28a5ebce1c35bb52a302440542f7', indeterminate: true }))), this.rowCount === 0 && !this.isLoading && (h("div", { key: '31442f92321eb4aaf5c36c5995a1c25d8069b6ea', class: "sd-table__no-data" }, h("slot", { key: '42f3208fb1c86d118f50e8b1974bff3ede253032', name: "no-data" }, h("span", { key: 'ce7368c64b3502eee2fae7a28e0508d4d1622c25' }, this.resolvedNoDataLabel)))), h("table", { key: '170203f34b4bb11fce0a064622265d093ccbab2a', class: this.tableClasses }, this.autoThead ? (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, h("sd-thead", { rows: this.rows ?? [] }))) : (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
660
731
  this.pagination.rowsPerPage > 0 &&
661
732
  this.rowCount > 0 &&
662
- !this.useVirtualScroll && (h("div", { key: '7ab0b30a0c0e0a197b0f79c6b07ef5614d5d2879', class: "sd-table__pagination" }, h("sd-pagination", { key: '71d44bba5a82f4d8f7c067e525db15fe9a36c305', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (h("sd-select-v2", { key: 'a9ab33347db0714da188f658a2ca1902502db690', value: this.useInternalPagination
733
+ !this.useVirtualScroll && (h("div", { key: 'cfbd5ee8e706c9ef7a2b6a4be8901b7aae47249e', class: "sd-table__pagination" }, h("sd-pagination", { key: '57dad16199d9145fcec0c5ed46beeeac1f08af02', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (h("sd-select", { key: '1314e296ba913600436045b4af54eb0bc1d95d0d', value: this.useInternalPagination
663
734
  ? this.innerRowsPerPage
664
735
  : this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", emitValue: true, onSdUpdate: e => {
665
736
  if (!this.isRowsPerPageValue(e.detail))
@@ -1418,6 +1489,9 @@ export class SdTable {
1418
1489
  }, {
1419
1490
  "propName": "rows",
1420
1491
  "methodName": "handleRowsChange"
1492
+ }, {
1493
+ "propName": "rowKey",
1494
+ "methodName": "handleRowKeyChange"
1421
1495
  }, {
1422
1496
  "propName": "tableId",
1423
1497
  "methodName": "handleTableIdChange"
@@ -7,12 +7,4 @@
7
7
 
8
8
  .tbody {
9
9
  display: table-row-group;
10
- }
11
- .tbody--empty .tbody__no-data-row {
12
- display: table-row;
13
- }
14
- .tbody--empty .tbody__no-data-cell {
15
- display: table-cell;
16
- padding: 0;
17
- border-bottom: none;
18
10
  }
@@ -45,12 +45,11 @@ export class SdTbody {
45
45
  }
46
46
  }
47
47
  render() {
48
- const hasRows = this.rows.length > 0;
49
- return (h(Host, { key: 'bc9fbd4f08f4d77da60b083dceef4e24e2fb5532', slot: `${this.tableId}-body` }, h("tbody", { key: '81ef875cbc39f988021a211ede716a98d3ea30cd', class: { 'tbody': true, 'tbody--empty': !hasRows } }, hasRows ? ([
48
+ return (h(Host, { key: 'e474bc09fdec9d48d978ec87620b161220b5236c', slot: `${this.tableId}-body` }, h("tbody", { key: 'c74261b3f30c43e8ac8c3bdea1180f17bfc7dbc8', class: { tbody: true } }, [
50
49
  this.topSpacerHeight > 0 && (h("tr", { key: "spacer-top", class: "tbody__spacer", style: { height: `${this.topSpacerHeight}px`, display: 'block' } })),
51
- h("slot", null),
50
+ h("slot", { key: 'f686e7e8fa81e725a32592a58267d0b5cd7551e6' }),
52
51
  this.bottomSpacerHeight > 0 && (h("tr", { key: "spacer-bottom", class: "tbody__spacer", style: { height: `${this.bottomSpacerHeight}px`, display: 'block' } })),
53
- ]) : (h("tr", { class: "tbody__no-data-row" }, h("td", { class: "tbody__no-data-cell", colSpan: 100 }, h("slot", { name: "no-data" })))))));
52
+ ])));
54
53
  }
55
54
  static get is() { return "sd-tbody"; }
56
55
  static get encapsulation() { return "shadow"; }
@@ -7,20 +7,30 @@ export class SdTd {
7
7
  align;
8
8
  rowspan;
9
9
  colspan;
10
- handleFieldChange() {
10
+ // sd-tr가 그리는 실제 <td>에 머지될 사용자 클래스.
11
+ // <sd-td> 호스트는 display:contents라 호스트의 class는 시각 효과가 없기 때문에,
12
+ // 이 prop을 통해 sd-table 레지스트리에 등록 → sd-tr가 td 렌더 시 합쳐 사용한다.
13
+ sdClass;
14
+ handleFieldChange(_newField, oldField) {
11
15
  this.syncSlotName();
12
16
  this.syncSpanRegistration();
17
+ this.syncCellClassRegistration(oldField);
13
18
  }
14
- handleRowKeyChange() {
19
+ handleRowKeyChange(_newKey, oldKey) {
15
20
  this.syncSlotName();
16
21
  this.syncSpanRegistration();
22
+ this.syncCellClassRegistration(undefined, oldKey);
17
23
  }
18
24
  handleSpanChange() {
19
25
  this.syncSpanRegistration();
20
26
  }
27
+ handleSdClassChange() {
28
+ this.syncCellClassRegistration();
29
+ }
21
30
  componentWillLoad() {
22
31
  this.syncSlotName();
23
32
  this.syncSpanRegistration();
33
+ this.syncCellClassRegistration();
24
34
  // slot 타이밍 엇갈림 대응: 부모 sd-tr forceUpdate로 슬롯 재매칭
25
35
  const parentTr = this.el.parentElement;
26
36
  if (parentTr?.tagName?.toLowerCase() === 'sd-tr') {
@@ -30,17 +40,20 @@ export class SdTd {
30
40
  componentDidLoad() {
31
41
  this.syncSlotName();
32
42
  this.syncSpanRegistration();
43
+ this.syncCellClassRegistration();
33
44
  }
34
45
  // React StrictMode에서는 disconnect/reconnect 사이클이 일어나면서
35
46
  // 동일 인스턴스의 componentWillLoad는 더 이상 호출되지 않는다.
36
47
  // 재연결 시점에도 등록 상태를 복구해야 rowspan/colspan이 유지된다.
37
48
  connectedCallback() {
38
49
  this.syncSpanRegistration();
50
+ this.syncCellClassRegistration();
39
51
  }
40
52
  disconnectedCallback() {
41
53
  const table = this.findTable();
42
- if (table?.unregisterSpanSync && this.field && this.rowKey != null) {
43
- table.unregisterSpanSync(String(this.rowKey), this.field);
54
+ if (table && this.field && this.rowKey != null) {
55
+ table.unregisterSpanSync?.(String(this.rowKey), this.field);
56
+ table.unregisterCellClassSync?.(String(this.rowKey), this.field);
44
57
  this.requestParentTrUpdate();
45
58
  }
46
59
  }
@@ -68,6 +81,21 @@ export class SdTd {
68
81
  table.registerSpanSync(String(this.rowKey), this.field, rs, cs);
69
82
  this.requestParentTrUpdate();
70
83
  }
84
+ // field/rowKey가 바뀌면 이전 키에 등록된 클래스가 남으므로 먼저 해제하고 새 키로 등록한다.
85
+ syncCellClassRegistration(prevField, prevRowKey) {
86
+ const table = this.findTable();
87
+ if (!table)
88
+ return;
89
+ const oldField = prevField ?? this.field;
90
+ const oldRowKey = prevRowKey ?? (this.rowKey != null ? String(this.rowKey) : undefined);
91
+ if (oldField && oldRowKey != null) {
92
+ table.unregisterCellClassSync?.(oldRowKey, oldField);
93
+ }
94
+ if (!table.registerCellClassSync || !this.field || this.rowKey == null)
95
+ return;
96
+ table.registerCellClassSync(String(this.rowKey), this.field, this.sdClass);
97
+ this.requestParentTrUpdate();
98
+ }
71
99
  syncSlotName() {
72
100
  const table = this.el.closest('sd-table');
73
101
  const fromMethod = table?.getTableIdSync?.();
@@ -80,7 +108,7 @@ export class SdTd {
80
108
  }
81
109
  }
82
110
  render() {
83
- return (h(Host, { key: 'da9ce2edb986d4b3cf1a6e5f59030009f1288250', class: { [`align-${this.align}`]: Boolean(this.align) } }, h("slot", { key: '8514071bd38c4f5b1997ae7239b8585a25f97ce0' })));
111
+ return (h(Host, { key: '84ce2fe2ea8ccb3eaf09e4d2559fc917bdb1077a', class: { [`align-${this.align}`]: Boolean(this.align) } }, h("slot", { key: '9b8164a2eac53b927bf59638cb53c35998a75cfe' })));
84
112
  }
85
113
  static get is() { return "sd-td"; }
86
114
  static get originalStyleUrls() {
@@ -189,6 +217,25 @@ export class SdTd {
189
217
  "setter": false,
190
218
  "reflect": false,
191
219
  "attribute": "colspan"
220
+ },
221
+ "sdClass": {
222
+ "type": "string",
223
+ "mutable": false,
224
+ "complexType": {
225
+ "original": "string",
226
+ "resolved": "string | undefined",
227
+ "references": {}
228
+ },
229
+ "required": false,
230
+ "optional": true,
231
+ "docs": {
232
+ "tags": [],
233
+ "text": ""
234
+ },
235
+ "getter": false,
236
+ "setter": false,
237
+ "reflect": false,
238
+ "attribute": "sd-class"
192
239
  }
193
240
  };
194
241
  }
@@ -206,6 +253,9 @@ export class SdTd {
206
253
  }, {
207
254
  "propName": "colspan",
208
255
  "methodName": "handleSpanChange"
256
+ }, {
257
+ "propName": "sdClass",
258
+ "methodName": "handleSdClassChange"
209
259
  }];
210
260
  }
211
261
  }
@@ -7,7 +7,7 @@ sd-thead * {
7
7
 
8
8
  .thead {
9
9
  display: table-header-group;
10
- height: 36px;
10
+ height: var(--table-header-height, 36px);
11
11
  }
12
12
  .thead--sticky {
13
13
  position: sticky;
@@ -22,12 +22,16 @@ sd-thead * {
22
22
 
23
23
  .th {
24
24
  display: table-cell;
25
- background: #F5FAFF;
26
- height: 36px;
27
- padding: 0 16px;
28
- font-weight: 500;
25
+ background: var(--table-header-bg, #F5FAFF);
26
+ height: var(--table-header-height, 36px);
27
+ padding: 0 var(--table-header-padding-x, 16px);
28
+ font-family: var(--table-header-font-family, inherit);
29
+ font-weight: var(--table-header-font-weight, 500);
30
+ font-size: var(--table-header-font-size, 12px);
31
+ line-height: var(--table-header-line-height, 20px);
32
+ text-decoration: var(--table-header-text-decoration, none);
29
33
  vertical-align: middle;
30
- border-bottom: 1px solid #E1E1E1;
34
+ border-bottom: var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);
31
35
  -webkit-user-select: none;
32
36
  user-select: none;
33
37
  position: relative;
@@ -54,13 +58,13 @@ sd-thead * {
54
58
  }
55
59
  .th.sticky-left {
56
60
  position: sticky;
57
- background-color: #F5FAFF;
61
+ background-color: var(--table-header-bg, #F5FAFF);
58
62
  z-index: 110 !important;
59
63
  left: var(--sticky-left-offset, 0);
60
64
  }
61
65
  .th.sticky-right {
62
66
  position: sticky;
63
- background-color: #F5FAFF;
67
+ background-color: var(--table-header-bg, #F5FAFF);
64
68
  z-index: 110 !important;
65
69
  right: var(--sticky-right-offset, 0);
66
70
  }
@@ -112,7 +116,7 @@ sd-thead * {
112
116
  display: flex;
113
117
  flex-flow: row nowrap;
114
118
  align-items: center;
115
- gap: 4px;
119
+ gap: var(--table-header-gap, 4px);
116
120
  }
117
121
  .th__content--left {
118
122
  justify-content: flex-start;
@@ -135,11 +139,11 @@ sd-thead * {
135
139
  right: 0;
136
140
  transform: translateY(-50%);
137
141
  width: 4px;
138
- height: 16px;
142
+ height: var(--table-header-resizer-height, 16px);
139
143
  cursor: col-resize;
140
144
  z-index: 3;
141
- border-left: 1px solid #CCCCCC;
142
- border-right: 1px solid #CCCCCC;
145
+ border-left: var(--table-border-width, 1px) solid var(--table-header-resizer-color, #CCCCCC);
146
+ border-right: var(--table-border-width, 1px) solid var(--table-header-resizer-color, #CCCCCC);
143
147
  }
144
148
  .th__resizer--left {
145
149
  right: auto;