@sellmate/design-system 1.0.78 → 1.2.0

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 (483) hide show
  1. package/dist/cjs/component.table-CMqGfEui.js +66 -0
  2. package/dist/cjs/design-system.cjs.js +2 -2
  3. package/dist/cjs/{index--F2wGuAi.js → index-Cw-78mnC.js} +1 -1
  4. package/dist/cjs/index.cjs.js +5 -5
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/{resolveColor-LhfOKtTZ.js → resolveColor-B0hzQNLG.js} +2 -2
  7. package/dist/cjs/sd-action-modal.cjs.entry.js +3 -3
  8. package/dist/cjs/sd-badge.cjs.entry.js +2 -3
  9. package/dist/cjs/sd-barcode-input.cjs.entry.js +3 -3
  10. package/dist/cjs/{sd-button-v2.config-CnqCQQMi.js → sd-button.config-DH08UNfl.js} +114 -28
  11. package/dist/cjs/{sd-button-v2_2.cjs.entry.js → sd-button_2.cjs.entry.js} +102 -85
  12. package/dist/cjs/sd-calendar.cjs.entry.js +15 -15
  13. package/dist/cjs/sd-card.cjs.entry.js +2 -2
  14. package/dist/cjs/sd-checkbox.cjs.entry.js +4 -4
  15. package/dist/cjs/sd-chip.cjs.entry.js +4 -4
  16. package/dist/cjs/sd-circle-progress.cjs.entry.js +3 -3
  17. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +19 -11
  18. package/dist/cjs/sd-date-box.cjs.entry.js +9 -4
  19. package/dist/cjs/{sd-date-picker-calendar.cjs.entry.js → sd-date-picker-calendar_2.cjs.entry.js} +59 -6
  20. package/dist/cjs/{sd-date-picker.config-CRgCT5dn.js → sd-date-picker.config-CjvrFpYK.js} +1 -2
  21. package/dist/cjs/sd-date-picker_7.cjs.entry.js +1235 -0
  22. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +14 -14
  23. package/dist/cjs/sd-dropdown-button.cjs.entry.js +32 -27
  24. package/dist/cjs/{sd-button_4.cjs.entry.js → sd-field_3.cjs.entry.js} +47 -102
  25. package/dist/cjs/sd-form.cjs.entry.js +5 -5
  26. package/dist/cjs/sd-ghost-button.cjs.entry.js +12 -10
  27. package/dist/cjs/sd-guide.cjs.entry.js +11 -11
  28. package/dist/cjs/sd-key-value-table.cjs.entry.js +230 -0
  29. package/dist/cjs/sd-linear-progress.cjs.entry.js +3 -3
  30. package/dist/cjs/sd-loading-container.cjs.entry.js +3 -3
  31. package/dist/cjs/sd-modal-container.cjs.entry.js +3 -3
  32. package/dist/cjs/{sd-pagination_5.cjs.entry.js → sd-pagination_4.cjs.entry.js} +136 -325
  33. package/dist/cjs/sd-popover.cjs.entry.js +18 -11
  34. package/dist/cjs/sd-popup.cjs.entry.js +112 -0
  35. package/dist/cjs/sd-portal.cjs.entry.js +3 -3
  36. package/dist/cjs/sd-radio-button.cjs.entry.js +9 -6
  37. package/dist/cjs/sd-radio.cjs.entry.js +2 -2
  38. package/dist/cjs/sd-select-list-item_2.cjs.entry.js +159 -0
  39. package/dist/cjs/sd-select.config-B19ptCT2.js +178 -0
  40. package/dist/cjs/{sd-select-list-item_4.cjs.entry.js → sd-select_3.cjs.entry.js} +296 -323
  41. package/dist/cjs/sd-switch.cjs.entry.js +2 -2
  42. package/dist/cjs/sd-table.cjs.entry.js +188 -48
  43. package/dist/cjs/sd-table.config-BIpldZtw.js +76 -0
  44. package/dist/cjs/sd-tabs.cjs.entry.js +8 -3
  45. package/dist/cjs/sd-tag.cjs.entry.js +56 -21
  46. package/dist/cjs/sd-td.cjs.entry.js +52 -10
  47. package/dist/cjs/sd-text-link.cjs.entry.js +13 -5
  48. package/dist/cjs/sd-toast-container.cjs.entry.js +5 -5
  49. package/dist/cjs/sd-toast.cjs.entry.js +35 -5
  50. package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
  51. package/dist/cjs/{system-DpTN1vBC.js → system-VmZRYp6V.js} +4 -2
  52. package/dist/cjs/{tooltipArrow-D1-wcNm1.js → tooltipArrow-BjSFKIUq.js} +1 -1
  53. package/dist/collection/collection-manifest.json +4 -3
  54. package/dist/collection/components/assets/CheckboxCheck.js +5 -0
  55. package/dist/collection/components/assets/CheckboxIndeterminate.js +5 -0
  56. package/dist/collection/components/assets/index.js +4 -0
  57. package/dist/collection/components/sd-action-modal/sd-action-modal.css +1 -1
  58. package/dist/collection/components/sd-action-modal/sd-action-modal.js +7 -7
  59. package/dist/collection/components/sd-badge/sd-badge.config.js +10 -1
  60. package/dist/collection/components/sd-badge/sd-badge.js +1 -22
  61. package/dist/collection/components/sd-barcode-input/sd-barcode-input.js +4 -4
  62. package/dist/collection/components/{sd-button-v2/sd-button-v2.config.js → sd-button/sd-button.config.js} +1 -1
  63. package/dist/collection/components/sd-button/sd-button.css +47 -93
  64. package/dist/collection/components/sd-button/sd-button.js +100 -173
  65. package/dist/collection/components/sd-calendar/sd-calendar.js +14 -14
  66. package/dist/collection/components/sd-card/sd-card.js +1 -1
  67. package/dist/collection/components/sd-checkbox/sd-checkbox.js +3 -3
  68. package/dist/collection/components/sd-chip/sd-chip.js +4 -4
  69. package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +1 -1
  70. package/dist/collection/components/sd-confirm-modal/sd-confirm-modal.js +13 -8
  71. package/dist/collection/components/sd-date-box/sd-date-box.js +8 -3
  72. package/dist/collection/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.js +4 -4
  73. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.css +1 -1
  74. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +13 -6
  75. package/dist/collection/components/sd-date-picker/sd-date-picker.js +4 -4
  76. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +12 -12
  77. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +5 -5
  78. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.config.js +7 -3
  79. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +13 -11
  80. package/dist/collection/components/sd-field/sd-field.css +6 -2
  81. package/dist/collection/components/sd-field/sd-field.js +48 -22
  82. package/dist/collection/components/sd-file-picker/sd-file-picker.js +10 -5
  83. package/dist/collection/components/sd-floating-portal/sd-floating-portal.css +1 -3
  84. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +6 -6
  85. package/dist/collection/components/sd-form/sd-form.js +4 -4
  86. package/dist/collection/components/sd-ghost-button/sd-ghost-button.js +12 -10
  87. package/dist/collection/components/sd-guide/sd-guide.css +8 -172
  88. package/dist/collection/components/sd-guide/sd-guide.js +8 -6
  89. package/dist/collection/components/sd-icon/sd-icon.js +4 -4
  90. package/dist/collection/components/sd-input/sd-input.css +4 -2
  91. package/dist/collection/components/sd-input/sd-input.js +6 -6
  92. package/dist/collection/components/sd-key-value-table/sd-key-value-table.config.js +36 -0
  93. package/dist/collection/components/sd-key-value-table/sd-key-value-table.css +119 -0
  94. package/dist/collection/components/sd-key-value-table/sd-key-value-table.js +301 -0
  95. package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
  96. package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
  97. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +6 -3
  98. package/dist/collection/components/sd-modal-container/sd-modal-container.js +2 -2
  99. package/dist/collection/components/sd-number-input/sd-number-input.css +7 -0
  100. package/dist/collection/components/sd-number-input/sd-number-input.js +8 -5
  101. package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
  102. package/dist/collection/components/sd-popover/sd-popover.js +129 -36
  103. package/dist/collection/components/sd-popup/sd-popup.config.js +34 -0
  104. package/dist/collection/components/sd-popup/sd-popup.css +73 -0
  105. package/dist/collection/components/sd-popup/sd-popup.js +163 -0
  106. package/dist/collection/components/sd-portal/sd-portal.js +2 -2
  107. package/dist/collection/components/sd-radio/sd-radio.js +1 -1
  108. package/dist/collection/components/sd-radio-button/sd-radio-button.js +8 -5
  109. package/dist/collection/components/sd-radio-group/sd-radio-group.js +2 -2
  110. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +7 -3
  111. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.css +4 -4
  112. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +7 -7
  113. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +8 -8
  114. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +9 -4
  115. package/dist/collection/components/sd-select/sd-select.js +6 -6
  116. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  117. package/dist/collection/components/sd-table/sd-table.config.js +6 -2
  118. package/dist/collection/components/sd-table/sd-table.css +30 -11
  119. package/dist/collection/components/sd-table/sd-table.js +233 -50
  120. package/dist/collection/components/sd-table/sd-table.stories.helpers.js +2 -3
  121. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +5 -5
  122. package/dist/collection/components/sd-table/sd-td/sd-td.js +111 -9
  123. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +30 -16
  124. package/dist/collection/components/sd-table/sd-tr/sd-tr.css +24 -1
  125. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +116 -19
  126. package/dist/collection/components/sd-tabs/sd-tabs.js +7 -2
  127. package/dist/collection/components/sd-tag/sd-tag.config.js +43 -11
  128. package/dist/collection/components/sd-tag/sd-tag.js +13 -7
  129. package/dist/collection/components/sd-text-link/sd-text-link.css +1 -0
  130. package/dist/collection/components/sd-text-link/sd-text-link.js +10 -4
  131. package/dist/collection/components/sd-textarea/sd-textarea.css +3 -0
  132. package/dist/collection/components/sd-textarea/sd-textarea.js +2 -2
  133. package/dist/collection/components/sd-toast/sd-toast.config.js +14 -0
  134. package/dist/collection/components/sd-toast/sd-toast.css +3 -5
  135. package/dist/collection/components/sd-toast/sd-toast.js +52 -5
  136. package/dist/collection/components/sd-toast-container/sd-toast-container.js +4 -4
  137. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  138. package/dist/collection/components/sd-tooltip/sd-tooltip.js +77 -30
  139. package/dist/collection/utils/color/resolveColor.js +2 -2
  140. package/dist/collection/utils/dropdown-manager.js +1 -1
  141. package/dist/collection/utils/modal.js +1 -1
  142. package/dist/collection/utils/toast.js +4 -4
  143. package/dist/components/index.js +1 -1
  144. package/dist/components/p-2wB9cing.js +1 -0
  145. package/dist/components/p-B-sK7I83.js +1 -0
  146. package/dist/components/p-B3D43x7F.js +1 -0
  147. package/dist/components/p-B7mpdnNl.js +1 -0
  148. package/dist/components/{p-TwGlKfsC.js → p-BAcmO7w0.js} +1 -1
  149. package/dist/components/p-BL0ZcHK8.js +1 -0
  150. package/dist/components/p-BXCyVrle.js +1 -0
  151. package/dist/components/p-BY1LGlfc.js +1 -0
  152. package/dist/components/p-BjkROjjt.js +1 -0
  153. package/dist/components/p-Bm3W_eBv.js +1 -0
  154. package/dist/components/p-BnfUIhUj.js +1 -0
  155. package/dist/components/{p-Dcc2Vm6z.js → p-BorUSgEK.js} +1 -1
  156. package/dist/components/{p-Bvq0Vpln.js → p-BsM-fwYd.js} +1 -1
  157. package/dist/components/p-C5CH-s6a.js +1 -0
  158. package/dist/components/p-C7WLft_0.js +1 -0
  159. package/dist/components/p-CK9ciBIR.js +1 -0
  160. package/dist/components/p-CQI40kiY.js +1 -0
  161. package/dist/components/p-CRL7TjSB.js +1 -0
  162. package/dist/components/p-CdOHomUp.js +1 -0
  163. package/dist/components/p-Ch5Yu1qd.js +1 -0
  164. package/dist/components/p-Cktiasfd.js +1 -0
  165. package/dist/components/p-CsVAx6KV.js +1 -0
  166. package/dist/components/p-D0Jiw-Zk.js +1 -0
  167. package/dist/components/p-D5F7wCNo.js +1 -0
  168. package/dist/components/p-DBFgk0rX.js +1 -0
  169. package/dist/components/p-DFLCjX1a.js +1 -0
  170. package/dist/components/p-DL1ac1QS.js +1 -0
  171. package/dist/components/p-DdLntfiw.js +1 -0
  172. package/dist/components/p-DeQcDHpn.js +1 -0
  173. package/dist/components/p-DfK4DiDI.js +1 -0
  174. package/dist/components/p-DhTcn6jX.js +1 -0
  175. package/dist/components/p-Dl8TIEQu.js +1 -0
  176. package/dist/components/p-DyAnn9ea.js +1 -0
  177. package/dist/components/p-GBlVDmy4.js +1 -0
  178. package/dist/components/p-Jts7ueOa.js +1 -0
  179. package/dist/components/p-arZfxxPn.js +1 -0
  180. package/dist/components/p-mmdt-WnS.js +1 -0
  181. package/dist/components/p-nOCYbyW4.js +1 -0
  182. package/dist/components/p-teN3CfOr.js +1 -0
  183. package/dist/components/p-u8teDaMa.js +1 -0
  184. package/dist/components/p-wCNRlKLa.js +1 -0
  185. package/dist/components/sd-action-modal.js +1 -1
  186. package/dist/components/sd-badge.js +1 -1
  187. package/dist/components/sd-barcode-input.js +1 -1
  188. package/dist/components/sd-button.js +1 -1
  189. package/dist/components/sd-calendar.js +1 -1
  190. package/dist/components/sd-card.js +1 -1
  191. package/dist/components/sd-checkbox.js +1 -1
  192. package/dist/components/sd-chip.js +1 -1
  193. package/dist/components/sd-circle-progress.js +1 -1
  194. package/dist/components/sd-confirm-modal.js +1 -1
  195. package/dist/components/sd-date-box.js +1 -1
  196. package/dist/components/sd-date-picker-calendar.js +1 -1
  197. package/dist/components/sd-date-picker-trigger.js +1 -1
  198. package/dist/components/sd-date-picker.js +1 -1
  199. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  200. package/dist/components/sd-date-range-picker.js +1 -1
  201. package/dist/components/sd-dropdown-button.js +1 -1
  202. package/dist/components/sd-field.js +1 -1
  203. package/dist/components/sd-file-picker.js +1 -1
  204. package/dist/components/sd-floating-portal.js +1 -1
  205. package/dist/components/sd-form.js +1 -1
  206. package/dist/components/sd-ghost-button.js +1 -1
  207. package/dist/components/sd-guide.js +1 -1
  208. package/dist/components/sd-icon.js +1 -1
  209. package/dist/components/sd-input.js +1 -1
  210. package/dist/components/sd-key-value-table.d.ts +11 -0
  211. package/dist/components/sd-key-value-table.js +1 -0
  212. package/dist/components/sd-linear-progress.js +1 -1
  213. package/dist/components/sd-loading-container.js +1 -1
  214. package/dist/components/sd-loading-modal.js +1 -1
  215. package/dist/components/sd-modal-container.js +1 -1
  216. package/dist/components/sd-number-input.js +1 -1
  217. package/dist/components/sd-pagination.js +1 -1
  218. package/dist/components/sd-popover.js +1 -1
  219. package/dist/components/{sd-button-v2.d.ts → sd-popup.d.ts} +4 -4
  220. package/dist/components/sd-popup.js +1 -0
  221. package/dist/components/sd-portal.js +1 -1
  222. package/dist/components/sd-radio-button.js +1 -1
  223. package/dist/components/sd-radio-group.js +1 -1
  224. package/dist/components/sd-radio.js +1 -1
  225. package/dist/components/sd-select-list-item-search.js +1 -1
  226. package/dist/components/sd-select-list-item.js +1 -1
  227. package/dist/components/sd-select-listbox.js +1 -1
  228. package/dist/components/sd-select-trigger.js +1 -1
  229. package/dist/components/sd-select.js +1 -1
  230. package/dist/components/sd-switch.js +1 -1
  231. package/dist/components/sd-table.js +1 -1
  232. package/dist/components/sd-tabs.js +1 -1
  233. package/dist/components/sd-tag.js +1 -1
  234. package/dist/components/sd-tbody.js +1 -1
  235. package/dist/components/sd-td.js +1 -1
  236. package/dist/components/sd-text-link.js +1 -1
  237. package/dist/components/sd-textarea.js +1 -1
  238. package/dist/components/sd-thead.js +1 -1
  239. package/dist/components/sd-toast-container.js +1 -1
  240. package/dist/components/sd-toast.js +1 -1
  241. package/dist/components/sd-toggle.js +1 -1
  242. package/dist/components/sd-tooltip.js +1 -1
  243. package/dist/components/sd-tr.js +1 -1
  244. package/dist/design-system/design-system.css +1 -1
  245. package/dist/design-system/design-system.esm.js +1 -1
  246. package/dist/design-system/index.esm.js +1 -1
  247. package/dist/design-system/p-04fdb4b1.entry.js +1 -0
  248. package/dist/design-system/p-05611ff7.entry.js +1 -0
  249. package/dist/design-system/p-0U6dRjlq.js +2 -0
  250. package/dist/design-system/{p-fe9cef6a.entry.js → p-0fe603a4.entry.js} +1 -1
  251. package/dist/design-system/p-100f5887.entry.js +1 -0
  252. package/dist/design-system/p-18c5ae1a.entry.js +1 -0
  253. package/dist/design-system/p-1baa05ae.entry.js +1 -0
  254. package/dist/design-system/p-2a1ef965.entry.js +1 -0
  255. package/dist/design-system/p-2c63404f.entry.js +1 -0
  256. package/dist/design-system/{p-33bc3176.entry.js → p-435ae69e.entry.js} +1 -1
  257. package/dist/design-system/p-43e97572.entry.js +1 -0
  258. package/dist/design-system/p-44d05570.entry.js +1 -0
  259. package/dist/design-system/p-501fae20.entry.js +1 -0
  260. package/dist/design-system/{p-ead3e688.entry.js → p-5705e6d6.entry.js} +1 -1
  261. package/dist/design-system/p-5cbaf1db.entry.js +1 -0
  262. package/dist/design-system/p-5ed0becf.entry.js +1 -0
  263. package/dist/design-system/p-5f1c39b8.entry.js +1 -0
  264. package/dist/design-system/p-66af0ba0.entry.js +1 -0
  265. package/dist/design-system/p-77690440.entry.js +1 -0
  266. package/dist/design-system/p-78cc0289.entry.js +1 -0
  267. package/dist/design-system/p-790165f8.entry.js +1 -0
  268. package/dist/design-system/p-80466582.entry.js +1 -0
  269. package/dist/design-system/{p-e5cebccd.entry.js → p-857c44e8.entry.js} +1 -1
  270. package/dist/design-system/{p-f522c91d.entry.js → p-87c868c3.entry.js} +1 -1
  271. package/dist/design-system/p-8db7d8f2.entry.js +1 -0
  272. package/dist/design-system/p-8ee990bd.entry.js +1 -0
  273. package/dist/design-system/p-8f22106e.entry.js +1 -0
  274. package/dist/design-system/p-BDjErF_K.js +1 -0
  275. package/dist/design-system/p-BnfUIhUj.js +1 -0
  276. package/dist/{components/p-DkJqVXpD.js → design-system/p-C29HUShl.js} +1 -1
  277. package/dist/design-system/{p-BxPyZJaz.js → p-Ce0cmS4R.js} +1 -1
  278. package/dist/design-system/p-CxOCk_ge.js +1 -0
  279. package/dist/design-system/p-GBlVDmy4.js +1 -0
  280. package/dist/design-system/p-a6545130.entry.js +1 -0
  281. package/dist/design-system/p-ae2d45a2.entry.js +1 -0
  282. package/dist/design-system/{p-797517b5.entry.js → p-aeccfb2b.entry.js} +1 -1
  283. package/dist/design-system/p-b0aad445.entry.js +1 -0
  284. package/dist/design-system/p-b3c144ff.entry.js +1 -0
  285. package/dist/design-system/p-caee95b0.entry.js +1 -0
  286. package/dist/design-system/p-d30c823e.entry.js +1 -0
  287. package/dist/design-system/{p-3f7bc660.entry.js → p-d3212544.entry.js} +1 -1
  288. package/dist/design-system/p-d8c41313.entry.js +1 -0
  289. package/dist/design-system/{p-6bfe3612.entry.js → p-de8bb9ba.entry.js} +1 -1
  290. package/dist/design-system/p-e2334c1c.entry.js +1 -0
  291. package/dist/design-system/p-f4d73a0c.entry.js +1 -0
  292. package/dist/design-system/p-fc973500.entry.js +1 -0
  293. package/dist/design-system/p-fe0a5368.entry.js +1 -0
  294. package/dist/design-system/p-mmdt-WnS.js +1 -0
  295. package/dist/esm/component.table-BnfUIhUj.js +64 -0
  296. package/dist/esm/design-system.js +3 -3
  297. package/dist/esm/{index-Cnwbjz1F.js → index-0U6dRjlq.js} +1 -1
  298. package/dist/esm/index.js +5 -5
  299. package/dist/esm/loader.js +3 -3
  300. package/dist/esm/{resolveColor-BxPyZJaz.js → resolveColor-Ce0cmS4R.js} +2 -2
  301. package/dist/esm/sd-action-modal.entry.js +3 -3
  302. package/dist/esm/sd-badge.entry.js +2 -3
  303. package/dist/esm/sd-barcode-input.entry.js +3 -3
  304. package/dist/esm/{sd-button-v2.config-CV4xelxV.js → sd-button.config-BDjErF_K.js} +88 -3
  305. package/dist/esm/{sd-button-v2_2.entry.js → sd-button_2.entry.js} +102 -85
  306. package/dist/esm/sd-calendar.entry.js +15 -15
  307. package/dist/esm/sd-card.entry.js +2 -2
  308. package/dist/esm/sd-checkbox.entry.js +4 -4
  309. package/dist/esm/sd-chip.entry.js +4 -4
  310. package/dist/esm/sd-circle-progress.entry.js +3 -3
  311. package/dist/esm/sd-confirm-modal_2.entry.js +19 -11
  312. package/dist/esm/sd-date-box.entry.js +9 -4
  313. package/dist/esm/{sd-date-picker-calendar.entry.js → sd-date-picker-calendar_2.entry.js} +59 -7
  314. package/dist/esm/{sd-date-picker.config-C2fDbE9d.js → sd-date-picker.config-B6cqMQaM.js} +1 -2
  315. package/dist/esm/sd-date-picker_7.entry.js +1227 -0
  316. package/dist/esm/sd-date-range-picker-calendar.entry.js +14 -14
  317. package/dist/esm/sd-dropdown-button.entry.js +21 -16
  318. package/dist/esm/{sd-button_4.entry.js → sd-field_3.entry.js} +48 -102
  319. package/dist/esm/sd-form.entry.js +5 -5
  320. package/dist/esm/sd-ghost-button.entry.js +12 -10
  321. package/dist/esm/sd-guide.entry.js +11 -11
  322. package/dist/esm/sd-key-value-table.entry.js +228 -0
  323. package/dist/esm/sd-linear-progress.entry.js +3 -3
  324. package/dist/esm/sd-loading-container.entry.js +3 -3
  325. package/dist/esm/sd-modal-container.entry.js +3 -3
  326. package/dist/esm/{sd-pagination_5.entry.js → sd-pagination_4.entry.js} +137 -325
  327. package/dist/esm/sd-popover.entry.js +18 -11
  328. package/dist/esm/sd-popup.entry.js +110 -0
  329. package/dist/esm/sd-portal.entry.js +3 -3
  330. package/dist/esm/sd-radio-button.entry.js +9 -6
  331. package/dist/esm/sd-radio.entry.js +2 -2
  332. package/dist/esm/sd-select-list-item_2.entry.js +156 -0
  333. package/dist/esm/sd-select.config-CxOCk_ge.js +165 -0
  334. package/dist/esm/{sd-select-list-item_4.entry.js → sd-select_3.entry.js} +281 -307
  335. package/dist/esm/sd-switch.entry.js +2 -2
  336. package/dist/esm/{sd-table.config-Bj-EEo7N.js → sd-table.config-B-VgXXT7.js} +16 -46
  337. package/dist/esm/sd-table.entry.js +188 -48
  338. package/dist/esm/sd-tabs.entry.js +8 -3
  339. package/dist/esm/sd-tag.entry.js +56 -21
  340. package/dist/esm/sd-td.entry.js +52 -10
  341. package/dist/esm/sd-text-link.entry.js +13 -5
  342. package/dist/esm/sd-toast-container.entry.js +5 -5
  343. package/dist/esm/sd-toast.entry.js +35 -5
  344. package/dist/esm/sd-toggle.entry.js +2 -2
  345. package/dist/esm/{system-CZ4ltUOw.js → system-GBlVDmy4.js} +4 -2
  346. package/dist/esm/{tooltipArrow-D8sr81Xw.js → tooltipArrow-O5LOsHae.js} +1 -1
  347. package/dist/types/components/assets/CheckboxCheck.d.ts +1 -0
  348. package/dist/types/components/assets/CheckboxIndeterminate.d.ts +1 -0
  349. package/dist/types/components/assets/index.d.ts +2 -0
  350. package/dist/types/components/sd-action-modal/sd-action-modal.d.ts +2 -2
  351. package/dist/types/components/sd-badge/sd-badge.d.ts +0 -1
  352. package/dist/types/components/{sd-button-v2/sd-button-v2.config.d.ts → sd-button/sd-button.config.d.ts} +9 -15
  353. package/dist/types/components/sd-button/sd-button.d.ts +11 -13
  354. package/dist/types/components/sd-confirm-modal/sd-confirm-modal.config.d.ts +3 -3
  355. package/dist/types/components/sd-confirm-modal/sd-confirm-modal.d.ts +2 -1
  356. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.config.d.ts +6 -5
  357. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.d.ts +1 -0
  358. package/dist/types/components/sd-field/sd-field.d.ts +1 -0
  359. package/dist/types/components/sd-key-value-table/sd-key-value-table.config.d.ts +105 -0
  360. package/dist/types/components/sd-key-value-table/sd-key-value-table.d.ts +38 -0
  361. package/dist/types/components/sd-loading-modal/sd-loading-modal.config.d.ts +2 -2
  362. package/dist/types/components/sd-loading-modal/sd-loading-modal.d.ts +1 -0
  363. package/dist/types/components/sd-modal-container/sd-modal-container.config.d.ts +1 -1
  364. package/dist/types/components/sd-popover/sd-popover.d.ts +16 -10
  365. package/dist/types/components/sd-popup/sd-popup.config.d.ts +30 -0
  366. package/dist/types/components/sd-popup/sd-popup.d.ts +11 -0
  367. package/dist/types/components/sd-table/constants.d.ts +2 -0
  368. package/dist/types/components/sd-table/sd-table.config.d.ts +4 -0
  369. package/dist/types/components/sd-table/sd-table.d.ts +21 -15
  370. package/dist/types/components/sd-table/sd-td/sd-td.d.ts +6 -0
  371. package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +9 -0
  372. package/dist/types/components/sd-tag/sd-tag.d.ts +2 -0
  373. package/dist/types/components/sd-toast/sd-toast.config.d.ts +5 -1
  374. package/dist/types/components/sd-toast/sd-toast.d.ts +2 -0
  375. package/dist/types/components/sd-toast-container/sd-toast-container.config.d.ts +2 -0
  376. package/dist/types/components/sd-tooltip/sd-tooltip.config.d.ts +2 -13
  377. package/dist/types/components/sd-tooltip/sd-tooltip.d.ts +6 -4
  378. package/dist/types/components.d.ts +278 -192
  379. package/dist/types/index.d.ts +1 -1
  380. package/dist/types/types/form.d.ts +1 -1
  381. package/dist/types/types/global.d.ts +14 -13
  382. package/dist/types/utils/toast.d.ts +1 -1
  383. package/hydrate/index.js +5513 -4761
  384. package/hydrate/index.mjs +5513 -4761
  385. package/package.json +111 -97
  386. package/readme.md +13 -7
  387. package/dist/cjs/component.button-cqV-iCG5.js +0 -90
  388. package/dist/cjs/sd-date-picker-trigger.cjs.entry.js +0 -51
  389. package/dist/cjs/sd-date-picker.cjs.entry.js +0 -117
  390. package/dist/cjs/sd-date-range-picker.cjs.entry.js +0 -123
  391. package/dist/cjs/sd-file-picker.cjs.entry.js +0 -244
  392. package/dist/cjs/sd-input.cjs.entry.js +0 -175
  393. package/dist/cjs/sd-number-input.cjs.entry.js +0 -409
  394. package/dist/cjs/sd-radio-group.cjs.entry.js +0 -46
  395. package/dist/cjs/sd-table.config-Cb0Ot3C6.js +0 -105
  396. package/dist/cjs/sd-textarea.cjs.entry.js +0 -146
  397. package/dist/collection/components/sd-button-v2/sd-button-v2.css +0 -125
  398. package/dist/collection/components/sd-button-v2/sd-button-v2.js +0 -273
  399. package/dist/components/p-B1XBwjCW.js +0 -1
  400. package/dist/components/p-B8jXOXtJ.js +0 -1
  401. package/dist/components/p-BE6TxbtX.js +0 -1
  402. package/dist/components/p-BJsHakU2.js +0 -1
  403. package/dist/components/p-BStczlLa.js +0 -1
  404. package/dist/components/p-BcMNA89i.js +0 -1
  405. package/dist/components/p-BheX6lAy.js +0 -1
  406. package/dist/components/p-BmYM7-4v.js +0 -1
  407. package/dist/components/p-BppjYHF6.js +0 -1
  408. package/dist/components/p-BwWDMpJc.js +0 -1
  409. package/dist/components/p-C-kw2p2a.js +0 -1
  410. package/dist/components/p-C5qZtNLl.js +0 -1
  411. package/dist/components/p-C7DajKYn.js +0 -1
  412. package/dist/components/p-CZ4ltUOw.js +0 -1
  413. package/dist/components/p-CeVMl_M9.js +0 -1
  414. package/dist/components/p-D1DpOp6M.js +0 -1
  415. package/dist/components/p-D3gjBBCU.js +0 -1
  416. package/dist/components/p-DC-6inj0.js +0 -1
  417. package/dist/components/p-DRF0He-x.js +0 -1
  418. package/dist/components/p-DegvQLTF.js +0 -1
  419. package/dist/components/p-Dey-lS6x.js +0 -1
  420. package/dist/components/p-DfH_fO01.js +0 -1
  421. package/dist/components/p-DngV3MT1.js +0 -1
  422. package/dist/components/p-EbjZr2OA.js +0 -1
  423. package/dist/components/p-LwWOleLJ.js +0 -1
  424. package/dist/components/p-Nvx13YlG.js +0 -1
  425. package/dist/components/p-ZMpCZhXP.js +0 -1
  426. package/dist/components/p-dNJIFthT.js +0 -1
  427. package/dist/components/p-q0VWISKA.js +0 -1
  428. package/dist/components/p-xnLvZ-xn.js +0 -1
  429. package/dist/components/sd-button-v2.js +0 -1
  430. package/dist/design-system/p-0356c195.entry.js +0 -1
  431. package/dist/design-system/p-045bc426.entry.js +0 -1
  432. package/dist/design-system/p-12dfd239.entry.js +0 -1
  433. package/dist/design-system/p-16d3a485.entry.js +0 -1
  434. package/dist/design-system/p-1706ed6f.entry.js +0 -1
  435. package/dist/design-system/p-182548f7.entry.js +0 -1
  436. package/dist/design-system/p-1a79edce.entry.js +0 -1
  437. package/dist/design-system/p-1cf87e87.entry.js +0 -1
  438. package/dist/design-system/p-25a08e98.entry.js +0 -1
  439. package/dist/design-system/p-2812b9ce.entry.js +0 -1
  440. package/dist/design-system/p-38f661ea.entry.js +0 -1
  441. package/dist/design-system/p-429dab5c.entry.js +0 -1
  442. package/dist/design-system/p-455dccf5.entry.js +0 -1
  443. package/dist/design-system/p-59313838.entry.js +0 -1
  444. package/dist/design-system/p-6af01ab0.entry.js +0 -1
  445. package/dist/design-system/p-70d4903f.entry.js +0 -1
  446. package/dist/design-system/p-767e99f9.entry.js +0 -1
  447. package/dist/design-system/p-7c370335.entry.js +0 -1
  448. package/dist/design-system/p-7fe8be6a.entry.js +0 -1
  449. package/dist/design-system/p-83b262dc.entry.js +0 -1
  450. package/dist/design-system/p-881adaa5.entry.js +0 -1
  451. package/dist/design-system/p-88d7303c.entry.js +0 -1
  452. package/dist/design-system/p-8a601e0f.entry.js +0 -1
  453. package/dist/design-system/p-B1XBwjCW.js +0 -1
  454. package/dist/design-system/p-BsrEibf7.js +0 -1
  455. package/dist/design-system/p-C5qZtNLl.js +0 -1
  456. package/dist/design-system/p-CZ4ltUOw.js +0 -1
  457. package/dist/design-system/p-Cnwbjz1F.js +0 -2
  458. package/dist/design-system/p-DnCBBIoq.js +0 -1
  459. package/dist/design-system/p-a82be987.entry.js +0 -1
  460. package/dist/design-system/p-b917c82a.entry.js +0 -1
  461. package/dist/design-system/p-b9f00eef.entry.js +0 -1
  462. package/dist/design-system/p-bcb53788.entry.js +0 -1
  463. package/dist/design-system/p-c24344ac.entry.js +0 -1
  464. package/dist/design-system/p-d76192bd.entry.js +0 -1
  465. package/dist/design-system/p-d9d8c51b.entry.js +0 -1
  466. package/dist/design-system/p-de67937d.entry.js +0 -1
  467. package/dist/design-system/p-ea5e6c2c.entry.js +0 -1
  468. package/dist/design-system/p-eeb1cac2.entry.js +0 -1
  469. package/dist/design-system/p-f1a74359.entry.js +0 -1
  470. package/dist/design-system/p-f44786a9.entry.js +0 -1
  471. package/dist/design-system/p-f69c7539.entry.js +0 -1
  472. package/dist/esm/component.button-B1XBwjCW.js +0 -88
  473. package/dist/esm/sd-date-picker-trigger.entry.js +0 -49
  474. package/dist/esm/sd-date-picker.entry.js +0 -115
  475. package/dist/esm/sd-date-range-picker.entry.js +0 -121
  476. package/dist/esm/sd-file-picker.entry.js +0 -242
  477. package/dist/esm/sd-input.entry.js +0 -173
  478. package/dist/esm/sd-number-input.entry.js +0 -407
  479. package/dist/esm/sd-radio-group.entry.js +0 -44
  480. package/dist/esm/sd-textarea.entry.js +0 -144
  481. package/dist/types/components/sd-button-v2/sd-button-v2.d.ts +0 -19
  482. /package/dist/components/{p-C2fDbE9d.js → p-B6cqMQaM.js} +0 -0
  483. /package/dist/design-system/{p-C2fDbE9d.js → p-B6cqMQaM.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index--F2wGuAi.js');
3
+ var index = require('./index-Cw-78mnC.js');
4
4
 
5
5
  var switchTokens = {
6
6
  "switch": {
@@ -102,7 +102,7 @@ const SdSwitch = class {
102
102
  '--sd-switch-line-height': `${SWITCH_TYPOGRAPHY.lineHeight}px`,
103
103
  '--sd-switch-text-decoration': SWITCH_TYPOGRAPHY.textDecoration,
104
104
  };
105
- return (index.h("label", { key: '54ebe92b29a80537e2e4380ffe096a252f883d10', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, index.h("input", { key: 'd18abbbf293434f07ae7dfa18b983b47cac1b774', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), index.h("div", { key: '76fef910e632b541c0b33c508e6001529df5614f', class: "sd-switch__track" }, index.h("div", { key: 'a66f4ecca5787f00febe19216a93ec62916e0541', class: "sd-switch__knob" })), this.label && index.h("span", { key: '948d2b7afc6e171ee329752cb85f8e361f6bbed8', class: "sd-switch__label" }, this.label)));
105
+ return (index.h("label", { key: 'a37c1387905456007de46a6050616b025ad06b37', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, index.h("input", { key: '5fcc9f72e177956e015e4cb009936edc60c4c3ec', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), index.h("div", { key: 'bf1fa22a94b2b245a2ddf805df4cd1c204524710', class: "sd-switch__track" }, index.h("div", { key: '11dafcd812c560acb7a63f7267f40f8ed67da95b', class: "sd-switch__knob" })), this.label && index.h("span", { key: '6609d2e33e82e843ffd5bbb2d2010de3e299f081', class: "sd-switch__label" }, this.label)));
106
106
  }
107
107
  };
108
108
  SdSwitch.style = sdSwitchCss();
@@ -1,11 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index--F2wGuAi.js');
3
+ var index = require('./index-Cw-78mnC.js');
4
4
  var constants = require('./constants-DJRV1upE.js');
5
- var sdTable_config = require('./sd-table.config-Cb0Ot3C6.js');
6
- require('./system-DpTN1vBC.js');
5
+ var sdTable_config = require('./sd-table.config-BIpldZtw.js');
6
+ require('./component.table-CMqGfEui.js');
7
+ require('./system-VmZRYp6V.js');
7
8
 
8
- const urlAlphabet =
9
+ let urlAlphabet =
9
10
  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';
10
11
 
11
12
  /* @ts-self-types="./index.d.ts" */
@@ -18,7 +19,7 @@ let nanoid = (size = 21) => {
18
19
  return id
19
20
  };
20
21
 
21
- const sdTableCss = () => `sd-table,:host{display:block;width:100%;max-width:100%;min-width:0}sd-table *,:host *{box-sizing:border-box}.sd-table__container{height:var(--table-height, 100%);width:var(--table-width, 100%);max-width:100%;min-width:0;color:#222222;display:flex;flex-direction:column}.sd-table__clip{width:100%;min-width:0;height:var(--table-container-height, 400px);border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);border-radius:var(--table-radius, 8px);overflow:hidden}.sd-table__clip--has-pagination{border-radius:var(--table-radius, 8px) var(--table-radius, 8px) 0 0}.sd-table__wrapper{width:100%;height:100%;display:flex;flex-direction:column;position:relative;font-family:var(--table-body-font-family, inherit);font-weight:var(--table-body-font-weight, 400);font-size:var(--table-body-font-size, 12px);line-height:var(--table-body-line-height, 20px);text-decoration:var(--table-body-text-decoration, none);overflow:auto;background:#FFFFFF}.sd-table__wrapper--loading{overflow:hidden !important;pointer-events:none}.sd-table__wrapper--no-data{overflow:hidden;pointer-events:none}.sd-table__no-data{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--table-body-font-size, 12px);color:#888888;pointer-events:none;z-index:200;background:rgba(255, 255, 255, 0.6)}.sd-table__no-data ::slotted(*),.sd-table__no-data span{pointer-events:auto}.sd-table__loading{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255, 255, 255, 0.6);z-index:200;display:flex;align-items:center;justify-content:center;pointer-events:none}.sd-table{background-color:white;display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.sd-table--selectable sd-thead,.sd-table--selectable sd-tbody{--selectable:true}.sd-table--sticky-header sd-thead thead{position:sticky;top:0;z-index:120}.sd-table--sticky-column sd-thead,.sd-table--sticky-column sd-tbody{--sticky-column:true}.sd-table--scrolled-left sd-thead,.sd-table--scrolled-left sd-tbody{--scrolled-left:true}.sd-table--scrolled-right sd-thead,.sd-table--scrolled-right sd-tbody{--scrolled-right:true}.sd-table--resizable sd-thead{--resizable:true}.sd-table--no-data sd-thead{opacity:0.4}.sd-table__pagination{position:relative;background:#F9F9F9;height:48px;display:flex;align-items:center;justify-content:center;border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);border-top:none;border-radius:0 0 var(--table-radius, 8px) var(--table-radius, 8px)}.sd-table__pagination sd-select{position:absolute;right:10px;top:50%;transform:translateY(-50%)}`;
22
+ const sdTableCss = () => `sd-table,:host{display:block;width:100%;max-width:100%;min-width:0}sd-table *,:host *{box-sizing:border-box}.sd-table__container{height:var(--table-height, 100%);width:var(--table-width, 100%);max-width:100%;min-width:0;color:#222222;display:flex;flex-direction:column}.sd-table__wrapper{width:100%;min-width:0;height:var(--table-container-height, 400px);border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);border-radius:var(--table-radius, 8px);overflow:hidden}.sd-table__wrapper--radius-use-top{border-radius:0 0 var(--table-radius, 8px) var(--table-radius, 8px)}.sd-table__scroll-container{width:100%;height:100%;display:flex;flex-direction:column;position:relative;font-family:var(--table-body-font-family, inherit);font-weight:var(--table-body-font-weight, 400);font-size:var(--table-body-font-size, 12px);line-height:var(--table-body-line-height, 20px);text-decoration:var(--table-body-text-decoration, none);overflow:auto;background:#FFFFFF}.sd-table__scroll-container--loading{overflow:hidden !important;pointer-events:none}.sd-table__scroll-container--no-data{overflow:hidden;pointer-events:none}.sd-table__no-data{position:absolute;top:36px;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;font-size:var(--table-body-font-size, 12px);color:#888888;pointer-events:none;z-index:200;background:rgba(255, 255, 255, 0.6)}.sd-table__no-data-header-overlay{position:absolute;top:0;left:0;right:0;height:36px;background:rgba(255, 255, 255, 0.6);z-index:210;pointer-events:none}.sd-table__no-data-content{pointer-events:auto;min-height:60px;width:100%;display:flex;align-items:center;justify-content:center}.sd-table__loading{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255, 255, 255, 0.6);z-index:200;display:flex;align-items:center;justify-content:center;pointer-events:none}.sd-table{background-color:white;display:table;width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.sd-table--selectable sd-thead,.sd-table--selectable sd-tbody{--selectable:true}.sd-table--sticky-header sd-thead thead{position:sticky;top:0;z-index:120}.sd-table--sticky-column sd-thead,.sd-table--sticky-column sd-tbody{--sticky-column:true}.sd-table--scrolled-left sd-thead,.sd-table--scrolled-left sd-tbody{--scrolled-left:true}.sd-table--scrolled-right sd-thead,.sd-table--scrolled-right sd-tbody{--scrolled-right:true}.sd-table--resizable sd-thead{--resizable:true}.sd-table--no-data sd-thead{opacity:0.4}.sd-table__pagination{position:relative;background:#F9F9F9;height:48px;display:flex;align-items:center;justify-content:center;border:var(--table-border-width, 1px) solid var(--table-border-color, #E1E1E1);margin-top:-1px;border-radius:var(--table-radius, 8px)}.sd-table__pagination sd-select{position:absolute;right:10px;top:50%;transform:translateY(-50%)}`;
22
23
 
23
24
  const SdTable = class {
24
25
  constructor(hostRef) {
@@ -43,15 +44,22 @@ const SdTable = class {
43
44
  height;
44
45
  stickyHeader = false;
45
46
  stickyColumn = { left: 0, right: 0 };
47
+ radius = 'default';
46
48
  noDataLabel = SdTable.DEFAULT_NO_DATA_LABEL;
47
49
  resolvedNoDataLabel = SdTable.DEFAULT_NO_DATA_LABEL;
48
50
  isLoading = false;
49
51
  pagination;
50
52
  useInternalPagination = false;
51
53
  useRowsPerPageSelect = false;
54
+ dense = false;
52
55
  // ─── Virtual Scroll ───────────────────────────────────────────────
53
56
  useVirtualScroll = false;
54
- rowHeight = 40;
57
+ rowHeight;
58
+ get effectiveRowHeight() {
59
+ if (this.rowHeight != null)
60
+ return this.rowHeight;
61
+ return this.dense ? Number(sdTable_config.TABLE_BODY_LAYOUT.dense.height) : Number(sdTable_config.TABLE_BODY_LAYOUT.default.height);
62
+ }
55
63
  virtualBuffer = 5;
56
64
  virtualEndThreshold = 10;
57
65
  // ─────────────────────────────────────────────────────────────────
@@ -74,6 +82,7 @@ const SdTable = class {
74
82
  scrolledRight = false;
75
83
  rowCount = 0;
76
84
  loadingScrollTop = 0;
85
+ noDataBodyHeight = 60;
77
86
  // light DOM에 sd-thead / sd-tbody 자식이 없으면 sd-table이 직접 렌더해야 함을 알리는 플래그.
78
87
  // componentWillLoad에서 한 번 결정되며, 이후 동적 토글은 지원하지 않는다.
79
88
  autoThead = false;
@@ -82,12 +91,19 @@ const SdTable = class {
82
91
  vsEnd = 0;
83
92
  lastReachEndNotifiedRowCount = -1;
84
93
  scrollContainer = null;
94
+ noDataContentEl = null;
95
+ noDataContentResizeObserver;
85
96
  onScroll;
86
97
  // 키: `${rowKey}::${field}` → { rowspan, colspan }
87
98
  spanRegistry = new Map();
99
+ // rowKey → Set<field>: useFrame=true인 sd-td가 있는 행을 추적한다.
100
+ // 하나라도 등록되면 해당 행은 dense를 무시하고 default 레이아웃으로 렌더된다.
101
+ useFrameRegistry = new Map();
88
102
  // 키: `${rowKey}::${field}` → sd-td의 sdClass 문자열
89
103
  // sd-tr가 td를 그릴 때 머지해서 셀-단위 커스텀 클래스를 적용한다.
90
104
  cellClassRegistry = new Map();
105
+ // separator 직전 행의 시각적 인덱스 집합
106
+ separatorPrevIndices = new Set();
91
107
  // rowKey 문자열 → rows 배열에서의 visual index.
92
108
  // rowspan 위쪽 행 스캔에서 "내 위에 있느냐"를 판정하기 위한 시각적 순서 소스.
93
109
  // rows prop이 있으면 채워지고, 없으면 비어 있어 Number(rowKey) fallback이 사용된다.
@@ -146,6 +162,7 @@ const SdTable = class {
146
162
  if (newVal) {
147
163
  this.loadingScrollTop = this.scrollContainer?.scrollTop ?? 0;
148
164
  }
165
+ this.syncNoDataContentObserver();
149
166
  }
150
167
  handleUseVirtualScrollChange(newVal) {
151
168
  if (newVal) {
@@ -154,7 +171,7 @@ const SdTable = class {
154
171
  }
155
172
  }
156
173
  handleColumnsChange(newCols) {
157
- this.columnWidths = newCols.map(c => parseInt(c.width || '120', 10));
174
+ this.columnWidths = newCols.map(c => (c.autoWidth ? 0 : parseInt(c.width || '120', 10)));
158
175
  this.refreshChildrenConfig();
159
176
  }
160
177
  handleRowsChange(newRows) {
@@ -165,6 +182,7 @@ const SdTable = class {
165
182
  if (this.useVirtualScroll)
166
183
  this.propagateVirtualUpdate(true);
167
184
  this.pushRowsToChildren(newRows);
185
+ this.syncNoDataContentObserver();
168
186
  }
169
187
  handleRowKeyChange() {
170
188
  this.rebuildRowIndexMap();
@@ -190,10 +208,10 @@ const SdTable = class {
190
208
  this.innerSelected = new Set(newSelected);
191
209
  }
192
210
  handlePaginationChange(newVal) {
193
- if (newVal?.page && newVal.page !== this.currentPage) {
211
+ if (newVal?.page != null && newVal.page !== this.currentPage) {
194
212
  this.currentPage = newVal.page;
195
213
  }
196
- if (newVal?.rowsPerPage && newVal.rowsPerPage !== this.innerRowsPerPage) {
214
+ if (newVal?.rowsPerPage != null && newVal.rowsPerPage !== this.innerRowsPerPage) {
197
215
  this.innerRowsPerPage = newVal.rowsPerPage;
198
216
  }
199
217
  }
@@ -208,12 +226,12 @@ const SdTable = class {
208
226
  this.handleNoDataLabelChange(this.noDataLabel);
209
227
  this.detectChildren();
210
228
  this.innerSelected = new Set(this.selected || []);
211
- this.columnWidths = (this.columns || []).map(c => parseInt(c.width || '120', 10));
229
+ this.columnWidths = (this.columns || []).map(c => c.autoWidth ? 0 : parseInt(c.width || '120', 10));
212
230
  this.rebuildRowIndexMap();
213
- if (this.pagination?.page) {
231
+ if (this.pagination?.page != null) {
214
232
  this.currentPage = this.pagination.page;
215
233
  }
216
- if (this.pagination?.rowsPerPage) {
234
+ if (this.pagination?.rowsPerPage != null) {
217
235
  this.innerRowsPerPage = this.pagination.rowsPerPage;
218
236
  }
219
237
  const el = this.el;
@@ -234,10 +252,17 @@ const SdTable = class {
234
252
  el.unregisterSpanSync = this.unregisterSpanSync.bind(this);
235
253
  el.getSpanSync = this.getSpanSync.bind(this);
236
254
  el.isCoveredSync = this.isCoveredSync.bind(this);
255
+ el.isVisualLastRowSync = this.isVisualLastRowSync.bind(this);
256
+ el.registerSeparatorSync = this.registerSeparatorSync.bind(this);
257
+ el.unregisterSeparatorSync = this.unregisterSeparatorSync.bind(this);
258
+ el.isVisualLastRowBeforeSeparatorSync = this.isVisualLastRowBeforeSeparatorSync.bind(this);
237
259
  el.hasRowspanSync = this.hasRowspanSync.bind(this);
238
260
  el.registerCellClassSync = this.registerCellClassSync.bind(this);
239
261
  el.unregisterCellClassSync = this.unregisterCellClassSync.bind(this);
240
262
  el.getCellClassSync = this.getCellClassSync.bind(this);
263
+ el.registerUseFrameSync = this.registerUseFrameSync.bind(this);
264
+ el.unregisterUseFrameSync = this.unregisterUseFrameSync.bind(this);
265
+ el.hasUseFrameInRowSync = this.hasUseFrameInRowSync.bind(this);
241
266
  if (Array.isArray(this.rows)) {
242
267
  this.rowCount = this.rows.length;
243
268
  this.pushRowsToChildren(this.rows);
@@ -248,7 +273,7 @@ const SdTable = class {
248
273
  this.pushRowsToChildren(this.rows);
249
274
  }
250
275
  index.readTask(() => {
251
- const wrapper = this.el.shadowRoot?.querySelector('.sd-table__wrapper');
276
+ const wrapper = this.el.shadowRoot?.querySelector('.sd-table__scroll-container');
252
277
  if (!wrapper)
253
278
  return;
254
279
  let rafPending = false;
@@ -280,11 +305,43 @@ const SdTable = class {
280
305
  this.propagateVirtualUpdate(); // 초기 렌더
281
306
  }
282
307
  });
308
+ this.syncNoDataContentObserver();
283
309
  }
284
310
  disconnectedCallback() {
285
311
  if (this.scrollContainer && this.onScroll) {
286
312
  this.scrollContainer.removeEventListener('scroll', this.onScroll);
287
313
  }
314
+ this.noDataContentResizeObserver?.disconnect();
315
+ this.noDataContentResizeObserver = undefined;
316
+ }
317
+ syncNoDataContentObserver() {
318
+ const isNoData = this.rowCount === 0 && !this.isLoading;
319
+ if (!isNoData) {
320
+ this.noDataContentResizeObserver?.disconnect();
321
+ this.noDataContentResizeObserver = undefined;
322
+ this.noDataBodyHeight = 60;
323
+ return;
324
+ }
325
+ this.observeNoDataContentHeight();
326
+ }
327
+ // observer를 붙이고 콘텐츠 높이를 측정해 noDataBodyHeight를 갱신하는 함수
328
+ observeNoDataContentHeight() {
329
+ if (typeof ResizeObserver === 'undefined')
330
+ return;
331
+ const target = this.noDataContentEl;
332
+ if (!target)
333
+ return;
334
+ this.noDataContentResizeObserver?.disconnect();
335
+ this.noDataContentResizeObserver = new ResizeObserver(() => {
336
+ const measured = Math.ceil(target.scrollHeight);
337
+ const nextHeight = Math.max(60, measured);
338
+ if (nextHeight !== this.noDataBodyHeight) {
339
+ this.noDataBodyHeight = nextHeight;
340
+ }
341
+ });
342
+ this.noDataContentResizeObserver.observe(target);
343
+ const measured = Math.ceil(target.scrollHeight);
344
+ this.noDataBodyHeight = Math.max(60, measured);
288
345
  }
289
346
  // light DOM(manual mode 자식)과 shadow DOM(autoThead/autoTbody fallback) 양쪽 모두에서 자식을 찾는다.
290
347
  queryChildEl(selector) {
@@ -349,8 +406,8 @@ const SdTable = class {
349
406
  return;
350
407
  this.vsStart = start;
351
408
  this.vsEnd = end;
352
- const topHeight = start * this.rowHeight;
353
- const bottomHeight = Math.max(0, (this.rowCount - end) * this.rowHeight);
409
+ const topHeight = start * this.effectiveRowHeight;
410
+ const bottomHeight = Math.max(0, (this.rowCount - end) * this.effectiveRowHeight);
354
411
  const tbody = this.queryChildEl('sd-tbody');
355
412
  tbody?.setSpacersSync?.(topHeight, bottomHeight);
356
413
  if (rangeChanged) {
@@ -364,7 +421,7 @@ const SdTable = class {
364
421
  getVirtualScrollConfigSync() {
365
422
  return {
366
423
  useVirtualScroll: this.useVirtualScroll,
367
- rowHeight: this.rowHeight,
424
+ rowHeight: this.effectiveRowHeight,
368
425
  virtualBuffer: this.virtualBuffer,
369
426
  vsStart: this.vsStart,
370
427
  vsEnd: this.vsEnd,
@@ -381,10 +438,35 @@ const SdTable = class {
381
438
  scrolledLeft: this.scrolledLeft,
382
439
  scrolledRight: this.scrolledRight,
383
440
  columnWidths: this.columnWidths,
441
+ dense: this.dense,
384
442
  };
385
443
  }
444
+ registerUseFrameSync(rowKey, field) {
445
+ if (rowKey == null || field === '')
446
+ return;
447
+ let fields = this.useFrameRegistry.get(rowKey);
448
+ if (!fields) {
449
+ fields = new Set();
450
+ this.useFrameRegistry.set(rowKey, fields);
451
+ }
452
+ fields.add(field);
453
+ }
454
+ unregisterUseFrameSync(rowKey, field) {
455
+ if (rowKey == null || field === '')
456
+ return;
457
+ const fields = this.useFrameRegistry.get(rowKey);
458
+ if (!fields)
459
+ return;
460
+ fields.delete(field);
461
+ if (fields.size === 0)
462
+ this.useFrameRegistry.delete(rowKey);
463
+ }
464
+ hasUseFrameInRowSync(rowKey) {
465
+ const fields = this.useFrameRegistry.get(rowKey);
466
+ return fields != null && fields.size > 0;
467
+ }
386
468
  isRowSelectedSync(row) {
387
- return Array.from(this.innerSelected).some(r => r[this.rowKey] === row[this.rowKey]);
469
+ return Array.from(this.innerSelected).some(r => r[this.rowKey ?? 'id'] === row[this.rowKey ?? 'id']);
388
470
  }
389
471
  async isRowSelected(row) {
390
472
  return this.isRowSelectedSync(row);
@@ -393,7 +475,7 @@ const SdTable = class {
393
475
  const selectedArray = Array.from(this.innerSelected);
394
476
  const exists = this.isRowSelectedSync(row);
395
477
  const newSelected = exists
396
- ? selectedArray.filter(r => r[this.rowKey] !== row[this.rowKey])
478
+ ? selectedArray.filter(r => r[this.rowKey ?? 'id'] !== row[this.rowKey ?? 'id'])
397
479
  : [...selectedArray, row];
398
480
  if (newSelected.length === selectedArray.length)
399
481
  return;
@@ -411,8 +493,8 @@ const SdTable = class {
411
493
  this.innerSelected = new Set([...this.innerSelected, ...pageRows]);
412
494
  }
413
495
  else {
414
- const currentPageKeys = rows.map(r => r[this.rowKey]);
415
- this.innerSelected = new Set([...this.innerSelected].filter(r => !currentPageKeys.includes(r[this.rowKey])));
496
+ const currentPageKeys = rows.map(r => r[this.rowKey ?? 'id']);
497
+ this.innerSelected = new Set([...this.innerSelected].filter(r => !currentPageKeys.includes(r[this.rowKey ?? 'id'])));
416
498
  }
417
499
  this.selected = Array.from(this.innerSelected);
418
500
  this.sdSelectChange.emit(Array.from(this.innerSelected));
@@ -423,7 +505,7 @@ const SdTable = class {
423
505
  }
424
506
  getIsAllCheckedSync(rows) {
425
507
  const total = rows.length;
426
- const selectedCount = rows.filter(row => Array.from(this.innerSelected).some(selectedRow => selectedRow[this.rowKey] === row[this.rowKey])).length;
508
+ const selectedCount = rows.filter(row => Array.from(this.innerSelected).some(selectedRow => selectedRow[this.rowKey ?? 'id'] === row[this.rowKey ?? 'id'])).length;
427
509
  if (selectedCount === 0)
428
510
  return false;
429
511
  if (selectedCount === total)
@@ -446,7 +528,7 @@ const SdTable = class {
446
528
  this.queryAllTr().forEach(tr => tr?.updateVisibility?.());
447
529
  }
448
530
  changeRowsPerPage(perPage) {
449
- const changedRowsPerPage = perPage ? Number(perPage) : 0;
531
+ const changedRowsPerPage = perPage != null && perPage !== '' ? Number(perPage) : 0;
450
532
  if (!this.useInternalPagination) {
451
533
  this.sdRowsPerPageChange.emit(changedRowsPerPage);
452
534
  return;
@@ -473,7 +555,7 @@ const SdTable = class {
473
555
  const startWidth = this.columnWidths[index];
474
556
  const handleMouseMove = (moveEvent) => {
475
557
  const col = this.columns[index];
476
- if (!col)
558
+ if (col == null)
477
559
  return;
478
560
  const minWidth = col.minWidth || 50;
479
561
  const maxWidth = col.maxWidth || 9999;
@@ -508,13 +590,17 @@ const SdTable = class {
508
590
  this.columns.filter(c => c.visible !== false).length -
509
591
  (this.stickyColumn?.right || 0) && i > colIdx)
510
592
  .reduce((a, b) => a + b, 0);
511
- return {
593
+ const visibleCol = this.columns.filter(c => c.visible !== false)[colIdx];
594
+ const base = {
512
595
  '--sticky-left-offset': `${leftOffset}px`,
513
596
  '--sticky-right-offset': `${rightOffset}px`,
514
- 'width': `${this.columnWidths[colIdx]}px`,
515
- 'minWidth': `${this.columnWidths[colIdx]}px`,
516
- 'maxWidth': `${this.columnWidths[colIdx]}px`,
517
597
  };
598
+ if (!visibleCol?.autoWidth) {
599
+ base['width'] = `${this.columnWidths[colIdx]}px`;
600
+ base['minWidth'] = `${this.columnWidths[colIdx]}px`;
601
+ base['maxWidth'] = `${this.columnWidths[colIdx]}px`;
602
+ }
603
+ return base;
518
604
  }
519
605
  async getStickyStyle(colIdx) {
520
606
  return this.getStickyStyleSync(colIdx);
@@ -543,7 +629,7 @@ const SdTable = class {
543
629
  });
544
630
  }
545
631
  registerSpanSync(rowKey, field, rowspan, colspan) {
546
- if (rowKey == null || !field)
632
+ if (rowKey == null || field === '')
547
633
  return;
548
634
  const safeRowspan = Math.max(1, Math.floor(rowspan || 1));
549
635
  const safeColspan = Math.max(1, Math.floor(colspan || 1));
@@ -562,7 +648,7 @@ const SdTable = class {
562
648
  this.requestAllTrUpdate();
563
649
  }
564
650
  unregisterSpanSync(rowKey, field) {
565
- if (rowKey == null || !field)
651
+ if (rowKey == null || field === '')
566
652
  return;
567
653
  const key = this.spanKey(rowKey, field);
568
654
  if (!this.spanRegistry.has(key))
@@ -577,18 +663,18 @@ const SdTable = class {
577
663
  // span과 달리 다른 셀에 영향이 없으므로 형제 sd-tr 전체를 재렌더하지 않고,
578
664
  // sd-td 쪽에서 자기 부모 tr만 bumpSpansVersion으로 새로 그린다.
579
665
  registerCellClassSync(rowKey, field, cls) {
580
- if (rowKey == null || !field)
666
+ if (rowKey == null || field === '')
581
667
  return;
582
668
  const key = this.spanKey(rowKey, field);
583
669
  const safe = (cls ?? '').trim();
584
- if (!safe) {
670
+ if (safe === '') {
585
671
  this.cellClassRegistry.delete(key);
586
672
  return;
587
673
  }
588
674
  this.cellClassRegistry.set(key, safe);
589
675
  }
590
676
  unregisterCellClassSync(rowKey, field) {
591
- if (rowKey == null || !field)
677
+ if (rowKey == null || field === '')
592
678
  return;
593
679
  this.cellClassRegistry.delete(this.spanKey(rowKey, field));
594
680
  }
@@ -611,7 +697,7 @@ const SdTable = class {
611
697
  // 1. 같은 행 왼쪽 스캔 — colspan으로 이 위치를 덮는 셀이 있는가
612
698
  for (let i = 0; i < colIdx; i++) {
613
699
  const c = visibleCols[i];
614
- if (!c)
700
+ if (c == null)
615
701
  continue;
616
702
  const field = typeof c.field === 'string' ? c.field : c.name;
617
703
  const span = this.spanRegistry.get(this.spanKey(rowKey, field));
@@ -649,6 +735,50 @@ const SdTable = class {
649
735
  }
650
736
  return false;
651
737
  }
738
+ // rowspan을 반영한 셀의 시각적 하단 행 인덱스를 반환한다.
739
+ // isVisualLastRowSync·isVisualLastRowBeforeSeparatorSync 공통 헬퍼.
740
+ resolveVisualBottom(rowKey, field) {
741
+ const myRowIdx = this.resolveRowIndex(rowKey);
742
+ if (myRowIdx == null)
743
+ return null;
744
+ const span = this.spanRegistry.get(this.spanKey(rowKey, field));
745
+ const rs = Math.max(1, span?.rowspan ?? 1);
746
+ return myRowIdx + rs - 1;
747
+ }
748
+ // 셀의 시각적 하단이 테이블(또는 현재 페이지)의 마지막 행인지 판정.
749
+ // 마지막 행에 border-bottom: none을 적용하기 위함.
750
+ isVisualLastRowSync(rowKey, field) {
751
+ if (this.rowCount <= 0)
752
+ return false;
753
+ const visualBottom = this.resolveVisualBottom(rowKey, field);
754
+ if (visualBottom == null)
755
+ return false;
756
+ const pageInfo = this.getPaginationInfoSync();
757
+ const lastVisibleIdx = pageInfo
758
+ ? Math.min(pageInfo.endIndex - 1, this.rowCount - 1)
759
+ : this.rowCount - 1;
760
+ return visualBottom === lastVisibleIdx;
761
+ }
762
+ registerSeparatorSync(prevRowKey) {
763
+ const idx = this.resolveRowIndex(prevRowKey);
764
+ if (idx != null)
765
+ this.separatorPrevIndices.add(idx);
766
+ }
767
+ unregisterSeparatorSync(prevRowKey) {
768
+ const idx = this.resolveRowIndex(prevRowKey);
769
+ if (idx != null)
770
+ this.separatorPrevIndices.delete(idx);
771
+ }
772
+ // 셀의 시각적 하단이 separator 바로 앞 행인지 판정.
773
+ // 해당 셀에 border-bottom: none을 적용하기 위함.
774
+ isVisualLastRowBeforeSeparatorSync(rowKey, field) {
775
+ if (this.separatorPrevIndices.size === 0)
776
+ return false;
777
+ const visualBottom = this.resolveVisualBottom(rowKey, field);
778
+ if (visualBottom == null)
779
+ return false;
780
+ return this.separatorPrevIndices.has(visualBottom);
781
+ }
652
782
  setRowCountSync(count) {
653
783
  const safeCount = Math.max(0, Math.floor(this.toFiniteNumber(count, 0)));
654
784
  if (safeCount !== this.rowCount) {
@@ -663,7 +793,7 @@ const SdTable = class {
663
793
  this.setRowCountSync(count);
664
794
  }
665
795
  calculateVisibleRange(scrollTop, containerHeight) {
666
- const safeRowHeight = Math.max(1, this.toFiniteNumber(this.rowHeight, 40));
796
+ const safeRowHeight = Math.max(1, this.toFiniteNumber(this.effectiveRowHeight, 40));
667
797
  const safeBuffer = Math.max(0, Math.floor(this.toFiniteNumber(this.virtualBuffer, 5)));
668
798
  const safeScrollTop = Math.max(0, this.toFiniteNumber(scrollTop, 0));
669
799
  const safeContainerHeight = Math.max(0, this.toFiniteNumber(containerHeight, 0));
@@ -729,6 +859,12 @@ const SdTable = class {
729
859
  }
730
860
  render() {
731
861
  const resolvedTableId = this.getResolvedTableId();
862
+ const isNoData = this.rowCount === 0 && !this.isLoading;
863
+ const paginationHeight = this.pagination && this.rowCount > 0 && !this.useVirtualScroll ? 48 : 0;
864
+ const noDataTotalHeight = 36 + this.noDataBodyHeight;
865
+ const effectiveTableHeight = isNoData
866
+ ? `max(${this.height || '96px'}, ${noDataTotalHeight}px)`
867
+ : this.height || '100%';
732
868
  const hostStyle = {
733
869
  '--table-radius': `${sdTable_config.TABLE_RADIUS}px`,
734
870
  '--table-border-color': sdTable_config.TABLE_BORDER.color,
@@ -739,24 +875,25 @@ const SdTable = class {
739
875
  '--table-body-line-height': `${sdTable_config.TABLE_BODY_TYPOGRAPHY.lineHeight}px`,
740
876
  '--table-body-text-decoration': sdTable_config.TABLE_BODY_TYPOGRAPHY.textDecoration,
741
877
  };
742
- return (index.h(index.Host, { key: 'c20a7cc6d5917c9d09c699f2c40ac2b6d07747e1', style: hostStyle }, index.h("div", { key: '94f76e75da5c6ff9d0ef93b6c2aa3def4ec1766e', class: "sd-table__container", style: {
878
+ return (index.h(index.Host, { key: 'f7d92943fcb354f69d99c1e4fd37749cc06185c7', style: hostStyle }, index.h("div", { key: '53d6ac0eedc2c2a56c05bf5a751be43bc18f9fe7', class: "sd-table__container", style: {
743
879
  '--table-width': this.width,
744
- '--table-height': this.height,
745
- '--table-container-height': `calc(${this.height || '100%'} - ${this.pagination && this.rowCount > 0 && !this.useVirtualScroll ? 48 : 0}px)`,
746
- } }, index.h("div", { key: '3b98c828c7dc42de3d4f9bb645279b20d9079ac4', class: {
747
- 'sd-table__clip': true,
748
- 'sd-table__clip--has-pagination': !!(this.pagination &&
749
- this.pagination.rowsPerPage > 0 &&
750
- this.rowCount > 0 &&
751
- !this.useVirtualScroll),
752
- } }, index.h("div", { key: 'b6d04ec953d7b75fb8ad8bc32e2662550d38c5c7', class: {
880
+ '--table-height': effectiveTableHeight,
881
+ '--table-container-height': `calc(${effectiveTableHeight} - ${paginationHeight}px)`,
882
+ } }, index.h("div", { key: 'b85980b8307b2a50ee1554262d025b58bad42e87', class: {
753
883
  'sd-table__wrapper': true,
754
- 'sd-table__wrapper--loading': this.isLoading,
755
- 'sd-table__wrapper--no-data': this.rowCount === 0 && !this.isLoading,
756
- } }, this.isLoading && (index.h("div", { key: '3050275c7ecde0aeda3ec881257be4334ebd06fc', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, index.h("sd-circle-progress", { key: '7a26c4365e4e28a5ebce1c35bb52a302440542f7', indeterminate: true }))), this.rowCount === 0 && !this.isLoading && (index.h("div", { key: '31442f92321eb4aaf5c36c5995a1c25d8069b6ea', class: "sd-table__no-data" }, index.h("slot", { key: '42f3208fb1c86d118f50e8b1974bff3ede253032', name: "no-data" }, index.h("span", { key: 'ce7368c64b3502eee2fae7a28e0508d4d1622c25' }, this.resolvedNoDataLabel)))), index.h("table", { key: '170203f34b4bb11fce0a064622265d093ccbab2a', class: this.tableClasses }, this.autoThead ? (index.h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, index.h("sd-thead", { rows: this.rows ?? [] }))) : (index.h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (index.h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, index.h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (index.h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
884
+ 'sd-table__wrapper--radius-use-top': this.radius === 'useTop',
885
+ } }, index.h("div", { key: 'acf9816ceaaea06b807056606d684befebe9dcd0', class: {
886
+ 'sd-table__scroll-container': true,
887
+ 'sd-table__scroll-container--loading': this.isLoading,
888
+ 'sd-table__scroll-container--no-data': isNoData,
889
+ } }, this.isLoading && (index.h("div", { key: '8a1a18cbf500a8e9ad519438a59e084186d9f339', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, index.h("sd-circle-progress", { key: '443ffcfb06edbae8ac94be7e8e5a94c1e2b68588', indeterminate: true }))), isNoData && (index.h(index.h.Fragment, null, index.h("div", { key: '3aefe27935a816df9658ec89adf261d11c0e8e77', class: "sd-table__no-data-header-overlay" }), index.h("div", { key: 'db89a7d1cbbf041bdd30be9e0a205147073891e2', class: "sd-table__no-data" }, index.h("div", { key: 'a9bf47e80db21c30ffa651b03b203e5e205134c9', class: "sd-table__no-data-content", ref: el => {
890
+ this.noDataContentEl = el;
891
+ if (el)
892
+ this.syncNoDataContentObserver();
893
+ } }, index.h("slot", { key: '20f0c0b43534ef344864bf2450abb4c2a8fb704b', name: "no-data" }, index.h("span", { key: 'a19688e4da7961e7c828694124819c4e60a6700f' }, this.resolvedNoDataLabel)))))), index.h("table", { key: '2b03aa5c5d59e0ac85051f90a022b59b8dbb871a', class: this.tableClasses }, this.autoThead ? (index.h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, index.h("sd-thead", { rows: this.rows ?? [] }))) : (index.h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (index.h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, index.h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (index.h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
757
894
  this.pagination.rowsPerPage > 0 &&
758
895
  this.rowCount > 0 &&
759
- !this.useVirtualScroll && (index.h("div", { key: 'cfbd5ee8e706c9ef7a2b6a4be8901b7aae47249e', class: "sd-table__pagination" }, index.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 && (index.h("sd-select", { key: '1314e296ba913600436045b4af54eb0bc1d95d0d', value: this.useInternalPagination
896
+ !this.useVirtualScroll && (index.h("div", { key: 'dc4a0132898490ef7e87e26a75fca8e3b2056a49', class: "sd-table__pagination" }, index.h("sd-pagination", { key: '9030b0965e8d2c1a54fce07cfc4067f49edb2375', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (index.h("sd-select", { key: '0d95ba3138da081d6c15202748ff3db1e23def01', value: this.useInternalPagination
760
897
  ? this.innerRowsPerPage
761
898
  : this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", emitValue: true, onSdUpdate: e => {
762
899
  if (!this.isRowsPerPageValue(e.detail))
@@ -798,6 +935,9 @@ const SdTable = class {
798
935
  "stickyHeader": [{
799
936
  "handleConfigChange": 0
800
937
  }],
938
+ "dense": [{
939
+ "handleConfigChange": 0
940
+ }],
801
941
  "selected": [{
802
942
  "handleSelectedChange": 0
803
943
  }],
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var component_table = require('./component.table-CMqGfEui.js');
4
+ var system = require('./system-VmZRYp6V.js');
5
+
6
+ // ── Header Tokens ──
7
+ const TABLE_HEADER_LAYOUT = {
8
+ height: component_table.tableTokens.table.header.height,
9
+ paddingX: component_table.tableTokens.table.header.paddingX,
10
+ gap: component_table.tableTokens.table.header.gap,
11
+ };
12
+ const TABLE_HEADER_TYPOGRAPHY = {
13
+ fontFamily: component_table.tableTokens.table.header.typography.fontFamily,
14
+ fontWeight: component_table.tableTokens.table.header.typography.fontWeight,
15
+ fontSize: component_table.tableTokens.table.header.typography.fontSize,
16
+ lineHeight: component_table.tableTokens.table.header.typography.lineHeight,
17
+ textDecoration: component_table.tableTokens.table.header.typography.textDecoration,
18
+ };
19
+ const TABLE_HEADER_COLORS = {
20
+ bg: component_table.tableTokens.table.header.bg,
21
+ };
22
+ const TABLE_HEADER_RESIZING_BAR = {
23
+ color: component_table.tableTokens.table.header.resizingBar.color,
24
+ height: component_table.tableTokens.table.header.resizingBar.height,
25
+ };
26
+ // ── Body Tokens ──
27
+ const TABLE_BODY_LAYOUT = {
28
+ default: {
29
+ height: component_table.tableTokens.table.body.default.height,
30
+ paddingY: component_table.tableTokens.table.body.default.paddingY,
31
+ },
32
+ dense: {
33
+ height: component_table.tableTokens.table.body.dense.height,
34
+ paddingY: component_table.tableTokens.table.body.dense.paddingY,
35
+ },
36
+ paddingX: component_table.tableTokens.table.body.paddingX};
37
+ const TABLE_BODY_TYPOGRAPHY = {
38
+ fontFamily: component_table.tableTokens.table.body.typography.fontFamily,
39
+ fontWeight: component_table.tableTokens.table.body.typography.fontWeight,
40
+ fontSize: component_table.tableTokens.table.body.typography.fontSize,
41
+ lineHeight: component_table.tableTokens.table.body.typography.lineHeight,
42
+ textDecoration: component_table.tableTokens.table.body.typography.textDecoration,
43
+ };
44
+ // ── Frame / Border Tokens ──
45
+ const TABLE_BORDER = {
46
+ color: component_table.tableTokens.table.border.color,
47
+ width: component_table.tableTokens.table.border.width,
48
+ };
49
+ const TABLE_SEPARATOR = {
50
+ color: component_table.tableTokens.table.separator.color,
51
+ width: component_table.tableTokens.table.separator.Width,
52
+ };
53
+ const TABLE_RADIUS = component_table.tableTokens.table.radius;
54
+ // ── Header Icon Color Defaults ──
55
+ const ICON_DEFAULT_COLOR = {
56
+ pageEdit: system.systemTokens.color.darkblue.strong,
57
+ arrowDown: system.systemTokens.color.darkblue.strong,
58
+ arrowUp: system.systemTokens.color.darkblue.strong,
59
+ updown: system.systemTokens.color.grey.strong,
60
+ pageMove: system.systemTokens.color.darkblue.strong,
61
+ star: system.systemTokens.color.blue.strong,
62
+ };
63
+ const resolveTableIconColor = (name, override) => override ?? ICON_DEFAULT_COLOR[name];
64
+ const resolveSortIconName = (sort) => sort === 'asc' ? 'arrowDown' : sort === 'desc' ? 'arrowUp' : 'updown';
65
+
66
+ exports.TABLE_BODY_LAYOUT = TABLE_BODY_LAYOUT;
67
+ exports.TABLE_BODY_TYPOGRAPHY = TABLE_BODY_TYPOGRAPHY;
68
+ exports.TABLE_BORDER = TABLE_BORDER;
69
+ exports.TABLE_HEADER_COLORS = TABLE_HEADER_COLORS;
70
+ exports.TABLE_HEADER_LAYOUT = TABLE_HEADER_LAYOUT;
71
+ exports.TABLE_HEADER_RESIZING_BAR = TABLE_HEADER_RESIZING_BAR;
72
+ exports.TABLE_HEADER_TYPOGRAPHY = TABLE_HEADER_TYPOGRAPHY;
73
+ exports.TABLE_RADIUS = TABLE_RADIUS;
74
+ exports.TABLE_SEPARATOR = TABLE_SEPARATOR;
75
+ exports.resolveSortIconName = resolveSortIconName;
76
+ exports.resolveTableIconColor = resolveTableIconColor;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index--F2wGuAi.js');
3
+ var index = require('./index-Cw-78mnC.js');
4
4
 
5
5
  const tab = {
6
6
  main: {
@@ -188,9 +188,14 @@ const SdTabs = class {
188
188
  };
189
189
  }
190
190
  render() {
191
- return (index.h("div", { key: 'ff758fbab0a594c28968074a26ad92a28cd4850b', class: this.getContainerClasses(), style: this.buildCssVars() }, this.tabs.map((tab, index$1) => {
191
+ return (index.h("div", { key: 'dd4377850ef052d22b6eb790b7766a3521a41c1c', class: this.getContainerClasses(), style: this.buildCssVars() }, this.tabs.map((tab, index$1) => {
192
192
  const badgeName = this.getBadgeName(tab);
193
- return (index.h("div", { key: `tab-${index$1}`, class: this.getTabClasses(tab), "aria-label": tab.label || 'tab', onClick: () => this.handleTabClick(tab) }, index.h("span", { "data-label": tab.label, class: "sd-tabs__label" }, tab.label), tab.badge !== undefined && tab.badge !== null && tab.badge !== '' && (index.h("sd-tag", { name: badgeName, label: tab.badge.toString() }))));
193
+ return (index.h("div", { key: `tab-${index$1}`, role: "tab", tabindex: 0, "aria-selected": tab.value === this.value ? 'true' : 'false', class: this.getTabClasses(tab), "aria-label": tab.label || 'tab', onClick: () => this.handleTabClick(tab), onKeyDown: e => {
194
+ if (e.key === 'Enter' || e.key === ' ') {
195
+ e.preventDefault();
196
+ this.handleTabClick(tab);
197
+ }
198
+ } }, index.h("span", { "data-label": tab.label, class: "sd-tabs__label" }, tab.label), tab.badge !== undefined && tab.badge !== null && tab.badge !== '' && (index.h("sd-tag", { name: badgeName, label: tab.badge.toString() }))));
194
199
  })));
195
200
  }
196
201
  static get watchers() { return {