@sellmate/design-system 1.31.0 → 1.32.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 (285) hide show
  1. package/dist/cjs/design-system.cjs.js +2 -2
  2. package/dist/cjs/{index-Jr8OU0y9.js → index-Cg7X15Hq.js} +1 -1
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/sd-action-modal.cjs.entry.js +1 -1
  5. package/dist/cjs/sd-badge.cjs.entry.js +1 -1
  6. package/dist/cjs/sd-barcode-input.cjs.entry.js +1 -1
  7. package/dist/cjs/sd-button_2.cjs.entry.js +1 -1
  8. package/dist/cjs/sd-calendar_2.cjs.entry.js +1 -1
  9. package/dist/cjs/sd-callout.cjs.entry.js +1 -1
  10. package/dist/cjs/sd-card.cjs.entry.js +1 -1
  11. package/dist/cjs/sd-checkbox.cjs.entry.js +1 -1
  12. package/dist/cjs/sd-chip-input.cjs.entry.js +2 -2
  13. package/dist/cjs/sd-chip.cjs.entry.js +1 -1
  14. package/dist/cjs/sd-circle-progress.cjs.entry.js +2 -2
  15. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +1 -1
  16. package/dist/cjs/sd-date-box.cjs.entry.js +1 -1
  17. package/dist/cjs/sd-date-picker_8.cjs.entry.js +6 -6
  18. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +1 -1
  19. package/dist/cjs/sd-divider.cjs.entry.js +2 -2
  20. package/dist/cjs/sd-dropdown-button.cjs.entry.js +2 -2
  21. package/dist/cjs/sd-field_3.cjs.entry.js +4 -4
  22. package/dist/cjs/sd-form.cjs.entry.js +1 -1
  23. package/dist/cjs/sd-ghost-button_3.cjs.entry.js +1 -1
  24. package/dist/cjs/sd-guide.cjs.entry.js +2 -2
  25. package/dist/cjs/sd-key-value-table.cjs.entry.js +2 -2
  26. package/dist/cjs/sd-linear-progress.cjs.entry.js +2 -2
  27. package/dist/cjs/sd-loading-container.cjs.entry.js +1 -1
  28. package/dist/cjs/sd-modal-container.cjs.entry.js +1 -1
  29. package/dist/cjs/sd-pagination.cjs.entry.js +1 -1
  30. package/dist/cjs/sd-popover.cjs.entry.js +2 -2
  31. package/dist/cjs/sd-popup.cjs.entry.js +3 -3
  32. package/dist/cjs/sd-radio-button.cjs.entry.js +1 -1
  33. package/dist/cjs/sd-radio.cjs.entry.js +1 -1
  34. package/dist/cjs/sd-scroll-area.cjs.entry.js +44 -0
  35. package/dist/cjs/sd-select-list-item_4.cjs.entry.js +12 -12
  36. package/dist/cjs/sd-stepper.cjs.entry.js +190 -0
  37. package/dist/cjs/sd-switch.cjs.entry.js +2 -2
  38. package/dist/cjs/sd-tabs.cjs.entry.js +2 -2
  39. package/dist/cjs/sd-text-link.cjs.entry.js +1 -1
  40. package/dist/cjs/sd-time-picker-selector.cjs.entry.js +2 -2
  41. package/dist/cjs/sd-time-picker-trigger.cjs.entry.js +3 -3
  42. package/dist/cjs/sd-time-picker.cjs.entry.js +3 -3
  43. package/dist/cjs/sd-time-range-picker-selector.cjs.entry.js +2 -2
  44. package/dist/cjs/sd-time-range-picker.cjs.entry.js +3 -3
  45. package/dist/cjs/sd-toast-container.cjs.entry.js +2 -2
  46. package/dist/cjs/sd-toast.cjs.entry.js +3 -3
  47. package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
  48. package/dist/cjs/{system-B4KkVpu2.js → system-BGCBFBcM.js} +3 -1
  49. package/dist/cjs/{tooltipArrow-BlrFItn5.js → tooltipArrow-CZff77W-.js} +1 -1
  50. package/dist/collection/collection-manifest.json +2 -0
  51. package/dist/collection/components/sd-popup/sd-popup.css +40 -0
  52. package/dist/collection/components/sd-scroll-area/sd-scroll-area.config.js +8 -0
  53. package/dist/collection/components/sd-scroll-area/sd-scroll-area.css +61 -0
  54. package/dist/collection/components/sd-scroll-area/sd-scroll-area.js +151 -0
  55. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +2 -2
  56. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +4 -4
  57. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.css +33 -9
  58. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +2 -2
  59. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +2 -2
  60. package/dist/collection/components/sd-select/sd-select.js +4 -4
  61. package/dist/collection/components/sd-stepper/sd-stepper.config.js +35 -0
  62. package/dist/collection/components/sd-stepper/sd-stepper.css +50 -0
  63. package/dist/collection/components/sd-stepper/sd-stepper.js +186 -0
  64. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  65. package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
  66. package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
  67. package/dist/collection/components/sd-time-picker/sd-time-picker-selector/sd-time-picker-selector.js +1 -1
  68. package/dist/collection/components/sd-time-picker/sd-time-picker-trigger/sd-time-picker-trigger.js +2 -2
  69. package/dist/collection/components/sd-time-picker/sd-time-picker.js +2 -2
  70. package/dist/collection/components/sd-time-range-picker/sd-time-range-picker-selector/sd-time-range-picker-selector.js +1 -1
  71. package/dist/collection/components/sd-time-range-picker/sd-time-range-picker.js +2 -2
  72. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  73. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  74. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  75. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  76. package/dist/components/index.js +1 -1
  77. package/dist/components/{p-1DsQj3tv.js → p--BJuy06e.js} +1 -1
  78. package/dist/components/{p-qZxAQy4p.js → p-22hyxPno.js} +1 -1
  79. package/dist/components/{p-Ckr9iuVb.js → p-7lGaExLM.js} +1 -1
  80. package/dist/components/{p-CKV2W-zU.js → p-B6BgOB_-.js} +1 -1
  81. package/dist/components/{p-DSWD8udu.js → p-BBAwMOGx.js} +1 -1
  82. package/dist/components/{p-C9IKm4j5.js → p-BDULNyBw.js} +1 -1
  83. package/dist/components/{p-CzJ9g73f.js → p-BI1iKxNN.js} +1 -1
  84. package/dist/components/{p-FGII920I.js → p-BU1DclrU.js} +1 -1
  85. package/dist/components/{p-DE8Ws9As.js → p-BhLF3gGb.js} +1 -1
  86. package/dist/components/p-Bk6mL1Ml.js +1 -0
  87. package/dist/components/{p-Bxv2AFOb.js → p-BkyM9ded.js} +1 -1
  88. package/dist/components/{p-DnlLqzGM.js → p-BoJ_gLp7.js} +1 -1
  89. package/dist/components/{p-DWnuCSqC.js → p-BpTKv3vN.js} +1 -1
  90. package/dist/components/{p-OnBLxJAP.js → p-C0IFrSzM.js} +1 -1
  91. package/dist/components/{p-D9qp3o5Y.js → p-C1KeTx0Z.js} +1 -1
  92. package/dist/components/{p-C6wuKkUq.js → p-C8x8VEb8.js} +1 -1
  93. package/dist/components/{p-ClbD4Gsr.js → p-CBx8KWmu.js} +1 -1
  94. package/dist/components/{p-CTCt17CE.js → p-CNNjhHTA.js} +1 -1
  95. package/dist/components/{p-Dc9g3-5z.js → p-CRDS2TOy.js} +1 -1
  96. package/dist/components/{p-Hjv7LqkN.js → p-CdeywvU6.js} +1 -1
  97. package/dist/components/{p-mcbwNjNT.js → p-CikPzSw-.js} +1 -1
  98. package/dist/components/{p-DasiqnrU.js → p-D0IDp-M3.js} +1 -1
  99. package/dist/components/{p-C6o10dl7.js → p-D2oNz1s-.js} +1 -1
  100. package/dist/components/{p-2g4jlJ3i.js → p-DApl37Qw.js} +1 -1
  101. package/dist/components/{p-In6mljvA.js → p-DGAzuK5C.js} +1 -1
  102. package/dist/components/{p-6U1qyU5A.js → p-DONA7SlO.js} +1 -1
  103. package/dist/components/{p-CwzkplrI.js → p-DVdDYnTl.js} +1 -1
  104. package/dist/components/{p-BvJ14GuJ.js → p-DdYWQ4Z5.js} +1 -1
  105. package/dist/components/{p-SYnTIeiO.js → p-DtadjLky.js} +1 -1
  106. package/dist/components/{p-D8yhjm54.js → p-DvlLDBO7.js} +1 -1
  107. package/dist/components/{p-CmCOLnc0.js → p-ETWwVYq6.js} +1 -1
  108. package/dist/components/{p-DOfLrOEu.js → p-ISXxxDfX.js} +1 -1
  109. package/dist/components/{p-B887QQl2.js → p-UFNg7rhE.js} +1 -1
  110. package/dist/components/{p-CH9dgzTr.js → p-irA7XFIS.js} +1 -1
  111. package/dist/components/{p-Bth2l1cy.js → p-rayWyWtG.js} +1 -1
  112. package/dist/components/{p-B-EV9bey.js → p-sLMSwbXi.js} +1 -1
  113. package/dist/components/{p-DsZwiWiU.js → p-vj3gimgB.js} +1 -1
  114. package/dist/components/sd-action-modal.js +1 -1
  115. package/dist/components/sd-badge.js +1 -1
  116. package/dist/components/sd-barcode-input.js +1 -1
  117. package/dist/components/sd-button.js +1 -1
  118. package/dist/components/sd-calendar.js +1 -1
  119. package/dist/components/sd-callout.js +1 -1
  120. package/dist/components/sd-card.js +1 -1
  121. package/dist/components/sd-checkbox.js +1 -1
  122. package/dist/components/sd-chip-input.js +1 -1
  123. package/dist/components/sd-chip.js +1 -1
  124. package/dist/components/sd-circle-progress.js +1 -1
  125. package/dist/components/sd-confirm-modal.js +1 -1
  126. package/dist/components/sd-date-box.js +1 -1
  127. package/dist/components/sd-date-picker-trigger.js +1 -1
  128. package/dist/components/sd-date-picker.js +1 -1
  129. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  130. package/dist/components/sd-date-range-picker.js +1 -1
  131. package/dist/components/sd-divider.js +1 -1
  132. package/dist/components/sd-dropdown-button.js +1 -1
  133. package/dist/components/sd-field.js +1 -1
  134. package/dist/components/sd-file-picker.js +1 -1
  135. package/dist/components/sd-floating-portal.js +1 -1
  136. package/dist/components/sd-form.js +1 -1
  137. package/dist/components/sd-ghost-button.js +1 -1
  138. package/dist/components/sd-guide.js +1 -1
  139. package/dist/components/sd-icon.js +1 -1
  140. package/dist/components/sd-input.js +1 -1
  141. package/dist/components/sd-key-value-table.js +1 -1
  142. package/dist/components/sd-linear-progress.js +1 -1
  143. package/dist/components/sd-loading-container.js +1 -1
  144. package/dist/components/sd-loading-modal.js +1 -1
  145. package/dist/components/sd-modal-container.js +1 -1
  146. package/dist/components/sd-number-input.js +1 -1
  147. package/dist/components/sd-pagination.js +1 -1
  148. package/dist/components/sd-popover.js +1 -1
  149. package/dist/components/sd-popup.js +1 -1
  150. package/dist/components/sd-portal.js +1 -1
  151. package/dist/components/sd-radio-button.js +1 -1
  152. package/dist/components/sd-radio-group.js +1 -1
  153. package/dist/components/sd-radio.js +1 -1
  154. package/dist/components/sd-scroll-area.d.ts +11 -0
  155. package/dist/components/sd-scroll-area.js +1 -0
  156. package/dist/components/sd-select-list-item-search.js +1 -1
  157. package/dist/components/sd-select-list-item.js +1 -1
  158. package/dist/components/sd-select-listbox.js +1 -1
  159. package/dist/components/sd-select-trigger.js +1 -1
  160. package/dist/components/sd-select.js +1 -1
  161. package/dist/components/sd-stepper.d.ts +11 -0
  162. package/dist/components/sd-stepper.js +1 -0
  163. package/dist/components/sd-switch.js +1 -1
  164. package/dist/components/sd-tabs.js +1 -1
  165. package/dist/components/sd-tag.js +1 -1
  166. package/dist/components/sd-text-link.js +1 -1
  167. package/dist/components/sd-textarea.js +1 -1
  168. package/dist/components/sd-time-picker-selector.js +1 -1
  169. package/dist/components/sd-time-picker-trigger.js +1 -1
  170. package/dist/components/sd-time-picker.js +1 -1
  171. package/dist/components/sd-time-range-picker-selector.js +1 -1
  172. package/dist/components/sd-time-range-picker.js +1 -1
  173. package/dist/components/sd-toast-container.js +1 -1
  174. package/dist/components/sd-toast.js +1 -1
  175. package/dist/components/sd-toggle.js +1 -1
  176. package/dist/components/sd-tooltip.js +1 -1
  177. package/dist/design-system/design-system.css +1 -1
  178. package/dist/design-system/design-system.esm.js +1 -1
  179. package/dist/design-system/{p-21672bb8.entry.js → p-0cdd05eb.entry.js} +1 -1
  180. package/dist/design-system/p-1c4ba7ae.entry.js +1 -0
  181. package/dist/design-system/{p-219288ef.entry.js → p-2a36028d.entry.js} +1 -1
  182. package/dist/design-system/{p-3859316f.entry.js → p-2e76157e.entry.js} +1 -1
  183. package/dist/design-system/{p-b97a6cf3.entry.js → p-336cb0c1.entry.js} +1 -1
  184. package/dist/design-system/{p-570b9e91.entry.js → p-34e8dda6.entry.js} +1 -1
  185. package/dist/design-system/{p-62ff77e4.entry.js → p-370b820e.entry.js} +1 -1
  186. package/dist/design-system/{p-22ac9e05.entry.js → p-39db3098.entry.js} +1 -1
  187. package/dist/design-system/{p-843d1a8a.entry.js → p-3a2be559.entry.js} +1 -1
  188. package/dist/design-system/{p-e387ec65.entry.js → p-405cb160.entry.js} +1 -1
  189. package/dist/design-system/{p-52b1be6f.entry.js → p-456479cc.entry.js} +1 -1
  190. package/dist/design-system/{p-b5229957.entry.js → p-4d845113.entry.js} +1 -1
  191. package/dist/design-system/{p-a6c292d1.entry.js → p-5761352f.entry.js} +1 -1
  192. package/dist/design-system/{p-c1e625e5.entry.js → p-5b725381.entry.js} +1 -1
  193. package/dist/design-system/p-5d7820f7.entry.js +1 -0
  194. package/dist/design-system/{p-56e7c87b.entry.js → p-5dd631fe.entry.js} +1 -1
  195. package/dist/design-system/p-66e3fba3.entry.js +1 -0
  196. package/dist/design-system/{p-1858636f.entry.js → p-6a5540d8.entry.js} +1 -1
  197. package/dist/design-system/{p-4ae0a64a.entry.js → p-703bb49a.entry.js} +1 -1
  198. package/dist/design-system/{p-6c4fa9d7.entry.js → p-71e7031e.entry.js} +1 -1
  199. package/dist/design-system/{p-cdb2433a.entry.js → p-7837f8f8.entry.js} +1 -1
  200. package/dist/design-system/{p-4a117dd6.entry.js → p-814ae5f1.entry.js} +1 -1
  201. package/dist/design-system/{p-9c131122.entry.js → p-8804e3f3.entry.js} +1 -1
  202. package/dist/design-system/{p-e0e4a451.entry.js → p-8ea038d7.entry.js} +1 -1
  203. package/dist/design-system/{p-129b6330.entry.js → p-937a30af.entry.js} +1 -1
  204. package/dist/design-system/{p-c7f03dea.entry.js → p-94d4c093.entry.js} +1 -1
  205. package/dist/design-system/{p-16b9eac4.entry.js → p-97a059b0.entry.js} +1 -1
  206. package/dist/design-system/{p-46da4e95.entry.js → p-9afada52.entry.js} +1 -1
  207. package/dist/design-system/{p-8af8e302.entry.js → p-9df0dd32.entry.js} +1 -1
  208. package/dist/design-system/{p-Cn8LZw1e.js → p-CHijmX_D.js} +1 -1
  209. package/dist/design-system/{p-C599jhDs.js → p-CdvQqvIe.js} +1 -1
  210. package/dist/design-system/{p-b2dc1202.entry.js → p-a05f4888.entry.js} +1 -1
  211. package/dist/design-system/{p-a9cc4697.entry.js → p-a81e4ae0.entry.js} +1 -1
  212. package/dist/design-system/{p-2534d3d4.entry.js → p-aaa551fa.entry.js} +1 -1
  213. package/dist/design-system/p-adc218f5.entry.js +1 -0
  214. package/dist/design-system/{p-809a0a71.entry.js → p-b7e913e7.entry.js} +1 -1
  215. package/dist/design-system/{p-a0c55a19.entry.js → p-b90eaebd.entry.js} +1 -1
  216. package/dist/design-system/{p-d5325895.entry.js → p-c5263a22.entry.js} +1 -1
  217. package/dist/design-system/{p-82cb62a9.entry.js → p-c5eea64c.entry.js} +1 -1
  218. package/dist/design-system/{p-8836d9ff.entry.js → p-c906d22d.entry.js} +1 -1
  219. package/dist/design-system/{p-655324cd.entry.js → p-defe65db.entry.js} +1 -1
  220. package/dist/design-system/{p-efe3601d.entry.js → p-e16725f7.entry.js} +1 -1
  221. package/dist/design-system/{p-5a113197.entry.js → p-e4096b72.entry.js} +1 -1
  222. package/dist/design-system/{p-46eb3421.entry.js → p-e72706ea.entry.js} +1 -1
  223. package/dist/design-system/{p-66cff123.entry.js → p-fb01f963.entry.js} +1 -1
  224. package/dist/design-system/{p-15f43b9b.entry.js → p-fc9577d9.entry.js} +1 -1
  225. package/dist/design-system/{p-Bth2l1cy.js → p-rayWyWtG.js} +1 -1
  226. package/dist/esm/design-system.js +3 -3
  227. package/dist/esm/{index-C599jhDs.js → index-CdvQqvIe.js} +1 -1
  228. package/dist/esm/loader.js +3 -3
  229. package/dist/esm/sd-action-modal.entry.js +1 -1
  230. package/dist/esm/sd-badge.entry.js +1 -1
  231. package/dist/esm/sd-barcode-input.entry.js +1 -1
  232. package/dist/esm/sd-button_2.entry.js +1 -1
  233. package/dist/esm/sd-calendar_2.entry.js +1 -1
  234. package/dist/esm/sd-callout.entry.js +1 -1
  235. package/dist/esm/sd-card.entry.js +1 -1
  236. package/dist/esm/sd-checkbox.entry.js +1 -1
  237. package/dist/esm/sd-chip-input.entry.js +2 -2
  238. package/dist/esm/sd-chip.entry.js +1 -1
  239. package/dist/esm/sd-circle-progress.entry.js +2 -2
  240. package/dist/esm/sd-confirm-modal_2.entry.js +1 -1
  241. package/dist/esm/sd-date-box.entry.js +1 -1
  242. package/dist/esm/sd-date-picker_8.entry.js +6 -6
  243. package/dist/esm/sd-date-range-picker-calendar.entry.js +1 -1
  244. package/dist/esm/sd-divider.entry.js +2 -2
  245. package/dist/esm/sd-dropdown-button.entry.js +2 -2
  246. package/dist/esm/sd-field_3.entry.js +4 -4
  247. package/dist/esm/sd-form.entry.js +1 -1
  248. package/dist/esm/sd-ghost-button_3.entry.js +1 -1
  249. package/dist/esm/sd-guide.entry.js +2 -2
  250. package/dist/esm/sd-key-value-table.entry.js +2 -2
  251. package/dist/esm/sd-linear-progress.entry.js +2 -2
  252. package/dist/esm/sd-loading-container.entry.js +1 -1
  253. package/dist/esm/sd-modal-container.entry.js +1 -1
  254. package/dist/esm/sd-pagination.entry.js +1 -1
  255. package/dist/esm/sd-popover.entry.js +2 -2
  256. package/dist/esm/sd-popup.entry.js +3 -3
  257. package/dist/esm/sd-radio-button.entry.js +1 -1
  258. package/dist/esm/sd-radio.entry.js +1 -1
  259. package/dist/esm/sd-scroll-area.entry.js +42 -0
  260. package/dist/esm/sd-select-list-item_4.entry.js +12 -12
  261. package/dist/esm/sd-stepper.entry.js +188 -0
  262. package/dist/esm/sd-switch.entry.js +2 -2
  263. package/dist/esm/sd-tabs.entry.js +2 -2
  264. package/dist/esm/sd-text-link.entry.js +1 -1
  265. package/dist/esm/sd-time-picker-selector.entry.js +2 -2
  266. package/dist/esm/sd-time-picker-trigger.entry.js +3 -3
  267. package/dist/esm/sd-time-picker.entry.js +3 -3
  268. package/dist/esm/sd-time-range-picker-selector.entry.js +2 -2
  269. package/dist/esm/sd-time-range-picker.entry.js +3 -3
  270. package/dist/esm/sd-toast-container.entry.js +2 -2
  271. package/dist/esm/sd-toast.entry.js +3 -3
  272. package/dist/esm/sd-toggle.entry.js +2 -2
  273. package/dist/esm/{system-Bth2l1cy.js → system-rayWyWtG.js} +3 -1
  274. package/dist/esm/{tooltipArrow-DbLihSLI.js → tooltipArrow-BsQ__AbZ.js} +1 -1
  275. package/dist/types/components/sd-scroll-area/sd-scroll-area.config.d.ts +5 -0
  276. package/dist/types/components/sd-scroll-area/sd-scroll-area.d.ts +14 -0
  277. package/dist/types/components/sd-stepper/sd-stepper.config.d.ts +43 -0
  278. package/dist/types/components/sd-stepper/sd-stepper.d.ts +18 -0
  279. package/dist/types/components.d.ts +132 -0
  280. package/hydrate/index.js +289 -35
  281. package/hydrate/index.mjs +289 -35
  282. package/package.json +1 -1
  283. package/dist/components/p-DYjaQs6e.js +0 -1
  284. package/dist/design-system/p-4782331f.entry.js +0 -1
  285. package/dist/design-system/p-b75cc0dd.entry.js +0 -1
@@ -0,0 +1,61 @@
1
+ sd-scroll-area {
2
+ display: block;
3
+ min-width: 0;
4
+ min-height: 0;
5
+ }
6
+
7
+ .sd-scroll-area__viewport {
8
+ width: 100%;
9
+ height: 100%;
10
+ }
11
+ .sd-scroll-area__viewport::-webkit-scrollbar {
12
+ width: 12px;
13
+ height: 12px;
14
+ background: transparent;
15
+ }
16
+ .sd-scroll-area__viewport::-webkit-scrollbar-track {
17
+ background: transparent;
18
+ }
19
+ .sd-scroll-area__viewport::-webkit-scrollbar-thumb {
20
+ background-color: #CCCCCC;
21
+ border: 2px solid transparent;
22
+ border-radius: 8px;
23
+ background-clip: padding-box;
24
+ }
25
+ @supports not selector(::-webkit-scrollbar) {
26
+ .sd-scroll-area__viewport {
27
+ scrollbar-width: thin;
28
+ scrollbar-color: #CCCCCC transparent;
29
+ }
30
+ }
31
+ .sd-scroll-area__viewport--bg::-webkit-scrollbar, .sd-scroll-area__viewport--bg::-webkit-scrollbar-track {
32
+ background: #F6F6F6;
33
+ }
34
+ @supports not selector(::-webkit-scrollbar) {
35
+ .sd-scroll-area__viewport--bg {
36
+ scrollbar-color: #CCCCCC #F6F6F6;
37
+ }
38
+ }
39
+ .sd-scroll-area__viewport--bordered::-webkit-scrollbar-track:vertical {
40
+ border-left: 1px solid var(--sd-scroll-area-border-color);
41
+ }
42
+ .sd-scroll-area__viewport--bordered::-webkit-scrollbar-track:horizontal {
43
+ border-top: 1px solid var(--sd-scroll-area-border-color);
44
+ }
45
+ .sd-scroll-area__viewport--bordered::-webkit-scrollbar-thumb:vertical {
46
+ border-left-width: 3px;
47
+ }
48
+ .sd-scroll-area__viewport--bordered::-webkit-scrollbar-thumb:horizontal {
49
+ border-top-width: 3px;
50
+ }
51
+ .sd-scroll-area__viewport--vertical {
52
+ overflow-x: hidden;
53
+ overflow-y: auto;
54
+ }
55
+ .sd-scroll-area__viewport--horizontal {
56
+ overflow-x: auto;
57
+ overflow-y: hidden;
58
+ }
59
+ .sd-scroll-area__viewport--both {
60
+ overflow: auto;
61
+ }
@@ -0,0 +1,151 @@
1
+ import { Host, h } from "@stencil/core";
2
+ import { SCROLL_AREA_COLORS } from "./sd-scroll-area.config";
3
+ export class SdScrollArea {
4
+ /** 스크롤 방향. vertical=세로만, horizontal=가로만, both=양방향 */
5
+ axis = 'both';
6
+ /** true면 스크롤바 트랙 배경을 채운다. 콘텐츠 영역 배경은 바뀌지 않는다. */
7
+ background = false;
8
+ /** true면 스크롤바와 콘텐츠 사이에 1px 구분선을 그린다. 컨테이너 테두리가 아니다. */
9
+ bordered = false;
10
+ /** viewport 최대 높이 (예: '400px'). 비우면 호스트 크기를 따른다. */
11
+ maxHeight = '';
12
+ /** viewport 최대 너비 (예: '480px'). 비우면 호스트 크기를 따른다. */
13
+ maxWidth = '';
14
+ render() {
15
+ const viewportStyle = {
16
+ '--sd-scroll-area-border-color': SCROLL_AREA_COLORS.border,
17
+ };
18
+ if (this.maxHeight !== '')
19
+ viewportStyle.maxHeight = this.maxHeight;
20
+ if (this.maxWidth !== '')
21
+ viewportStyle.maxWidth = this.maxWidth;
22
+ return (h(Host, { key: '4b9b22910436388a2017af0bea5d1c55463a5f94' }, h("div", { key: '13d9301c1bd43dad765a6f18bb11482d7ae4788a', class: {
23
+ 'sd-scroll-area__viewport': true,
24
+ [`sd-scroll-area__viewport--${this.axis}`]: true,
25
+ 'sd-scroll-area__viewport--bg': this.background,
26
+ 'sd-scroll-area__viewport--bordered': this.bordered,
27
+ }, style: viewportStyle }, h("slot", { key: '1d28dd8bac0a3b40d8beca9553b061ae21be8342' }))));
28
+ }
29
+ static get is() { return "sd-scroll-area"; }
30
+ static get originalStyleUrls() {
31
+ return {
32
+ "$": ["sd-scroll-area.scss"]
33
+ };
34
+ }
35
+ static get styleUrls() {
36
+ return {
37
+ "$": ["sd-scroll-area.css"]
38
+ };
39
+ }
40
+ static get properties() {
41
+ return {
42
+ "axis": {
43
+ "type": "string",
44
+ "mutable": false,
45
+ "complexType": {
46
+ "original": "ScrollAreaAxis",
47
+ "resolved": "\"both\" | \"horizontal\" | \"vertical\"",
48
+ "references": {
49
+ "ScrollAreaAxis": {
50
+ "location": "import",
51
+ "path": "./sd-scroll-area.config",
52
+ "id": "src/components/sd-scroll-area/sd-scroll-area.config.ts::ScrollAreaAxis",
53
+ "referenceLocation": "ScrollAreaAxis"
54
+ }
55
+ }
56
+ },
57
+ "required": false,
58
+ "optional": false,
59
+ "docs": {
60
+ "tags": [],
61
+ "text": "\uC2A4\uD06C\uB864 \uBC29\uD5A5. vertical=\uC138\uB85C\uB9CC, horizontal=\uAC00\uB85C\uB9CC, both=\uC591\uBC29\uD5A5"
62
+ },
63
+ "getter": false,
64
+ "setter": false,
65
+ "reflect": true,
66
+ "attribute": "axis",
67
+ "defaultValue": "'both'"
68
+ },
69
+ "background": {
70
+ "type": "boolean",
71
+ "mutable": false,
72
+ "complexType": {
73
+ "original": "boolean",
74
+ "resolved": "boolean",
75
+ "references": {}
76
+ },
77
+ "required": false,
78
+ "optional": false,
79
+ "docs": {
80
+ "tags": [],
81
+ "text": "true\uBA74 \uC2A4\uD06C\uB864\uBC14 \uD2B8\uB799 \uBC30\uACBD\uC744 \uCC44\uC6B4\uB2E4. \uCF58\uD150\uCE20 \uC601\uC5ED \uBC30\uACBD\uC740 \uBC14\uB00C\uC9C0 \uC54A\uB294\uB2E4."
82
+ },
83
+ "getter": false,
84
+ "setter": false,
85
+ "reflect": true,
86
+ "attribute": "background",
87
+ "defaultValue": "false"
88
+ },
89
+ "bordered": {
90
+ "type": "boolean",
91
+ "mutable": false,
92
+ "complexType": {
93
+ "original": "boolean",
94
+ "resolved": "boolean",
95
+ "references": {}
96
+ },
97
+ "required": false,
98
+ "optional": false,
99
+ "docs": {
100
+ "tags": [],
101
+ "text": "true\uBA74 \uC2A4\uD06C\uB864\uBC14\uC640 \uCF58\uD150\uCE20 \uC0AC\uC774\uC5D0 1px \uAD6C\uBD84\uC120\uC744 \uADF8\uB9B0\uB2E4. \uCEE8\uD14C\uC774\uB108 \uD14C\uB450\uB9AC\uAC00 \uC544\uB2C8\uB2E4."
102
+ },
103
+ "getter": false,
104
+ "setter": false,
105
+ "reflect": true,
106
+ "attribute": "bordered",
107
+ "defaultValue": "false"
108
+ },
109
+ "maxHeight": {
110
+ "type": "string",
111
+ "mutable": false,
112
+ "complexType": {
113
+ "original": "string",
114
+ "resolved": "string",
115
+ "references": {}
116
+ },
117
+ "required": false,
118
+ "optional": false,
119
+ "docs": {
120
+ "tags": [],
121
+ "text": "viewport \uCD5C\uB300 \uB192\uC774 (\uC608: '400px'). \uBE44\uC6B0\uBA74 \uD638\uC2A4\uD2B8 \uD06C\uAE30\uB97C \uB530\uB978\uB2E4."
122
+ },
123
+ "getter": false,
124
+ "setter": false,
125
+ "reflect": false,
126
+ "attribute": "max-height",
127
+ "defaultValue": "''"
128
+ },
129
+ "maxWidth": {
130
+ "type": "string",
131
+ "mutable": false,
132
+ "complexType": {
133
+ "original": "string",
134
+ "resolved": "string",
135
+ "references": {}
136
+ },
137
+ "required": false,
138
+ "optional": false,
139
+ "docs": {
140
+ "tags": [],
141
+ "text": "viewport \uCD5C\uB300 \uB108\uBE44 (\uC608: '480px'). \uBE44\uC6B0\uBA74 \uD638\uC2A4\uD2B8 \uD06C\uAE30\uB97C \uB530\uB978\uB2E4."
142
+ },
143
+ "getter": false,
144
+ "setter": false,
145
+ "reflect": false,
146
+ "attribute": "max-width",
147
+ "defaultValue": "''"
148
+ }
149
+ };
150
+ }
151
+ }
@@ -78,7 +78,7 @@ export class SdSelectListItem {
78
78
  return (
79
79
  // 키보드 네비게이션은 부모 listbox 의 ArrowUp/Down + Enter 가 담당. 항목 자체는 role=option, tabindex=-1 으로 표시.
80
80
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events
81
- h("div", { key: '4fff470052d5d02cddf204f33df24247e087a55d', role: "option", tabindex: -1, "aria-selected": this.isSelected === true ? 'true' : 'false', class: {
81
+ h("div", { key: 'e4f8fc195a7231cd3218b91a26c77f51df14e6dc', role: "option", tabindex: -1, "aria-selected": this.isSelected === true ? 'true' : 'false', class: {
82
82
  'sd-select-list-item': true,
83
83
  'sd-select-list-item--group': isGroup,
84
84
  'sd-select-list-item--depth1-group': isDepth1Group,
@@ -88,7 +88,7 @@ export class SdSelectListItem {
88
88
  'sd-select-list-item--focused': this.isFocused,
89
89
  'sd-select-list-item--selectable': this.isSelectable && !this.option.disabled,
90
90
  'sd-select-list-item--disabled': !!this.option.disabled,
91
- }, style: cssVars, onClick: this.handleClick }, this.useCheckbox && (h("sd-checkbox", { key: '45649f31743eac574560399b07c9ba94d7185013', value: this.isSelected === null ? null : !!this.isSelected, disabled: this.option.disabled, inverse: this.isFocused && this.isSelected !== false, class: "sd-select-list-item__checkbox", onClick: this.handleCheckboxClick, onSdUpdate: this.handleCheckboxUpdate })), isHtmlLabel(this.option.label) ? (h("span", { class: "sd-select-list-item__label", ref: el => el && (el.innerHTML = sanitizeInlineHtml(this.option.label)) })) : (h("span", { class: "sd-select-list-item__label" }, this.option.label)), this.countInfo && (h("span", { key: '2e2c1dca85ed4be38cf8435df86f8ea4b7273673', class: "sd-select-list-item__count" }, "(", this.countInfo.selected, "/", this.countInfo.total, ")"))));
91
+ }, style: cssVars, onClick: this.handleClick }, this.useCheckbox && (h("sd-checkbox", { key: 'a9720067837860a8259b1a16b5eab111f02c7ac4', value: this.isSelected === null ? null : !!this.isSelected, disabled: this.option.disabled, inverse: this.isFocused && this.isSelected !== false, class: "sd-select-list-item__checkbox", onClick: this.handleCheckboxClick, onSdUpdate: this.handleCheckboxUpdate })), isHtmlLabel(this.option.label) ? (h("span", { class: "sd-select-list-item__label", ref: el => el && (el.innerHTML = sanitizeInlineHtml(this.option.label)) })) : (h("span", { class: "sd-select-list-item__label" }, this.option.label)), this.countInfo && (h("span", { key: '8ece77c44bea9aea99883efe099137bca7d89475', class: "sd-select-list-item__count" }, "(", this.countInfo.selected, "/", this.countInfo.total, ")"))));
92
92
  }
93
93
  static get is() { return "sd-select-list-item"; }
94
94
  static get originalStyleUrls() {
@@ -45,15 +45,15 @@ export class SdSelectListItemSearch {
45
45
  clearTimeout(this.debounceTimer);
46
46
  }
47
47
  render() {
48
- return (h("div", { key: '3231c0ea91e678a71cac6a1c5805fa255a96deb2', class: {
48
+ return (h("div", { key: '5e1dc595bd89df5364d9a302dc917abb29fa2c7b', class: {
49
49
  'sd-select-list-item-search': true,
50
50
  'sd-select-list-item-search--scrolled': this.isScrolled,
51
- } }, h("div", { key: 'f25df864ea6bbe2db7c0ca8e1abc0645f11b12f3', class: "sd-select-list-item-search__inner" }, h("sd-icon", { key: '494d5b964543e3a595629c02ef7b61b492d26eed', name: "search", size: 16, color: "grey_70", class: "sd-select-list-item-search__icon" }), h("input", { key: '475b925b7987d98fb0a46d6b63a0a9edd2db00ae', ref: el => {
51
+ } }, h("div", { key: 'd07b293bf685652dcc965071f47c0492776f9d41', class: "sd-select-list-item-search__inner" }, h("sd-icon", { key: '065e1df3105048322ababd7237df83d045543fc3', name: "search", size: 16, color: "grey_70", class: "sd-select-list-item-search__icon" }), h("input", { key: '973977bfbd98f5430b1b53f1ad59128383481197', ref: el => {
52
52
  this.inputEl = el;
53
- }, type: "text", class: "sd-select-list-item-search__input", placeholder: "\uAC80\uC0C9\uC5B4 \uC785\uB825", value: this.searchText, onInput: this.handleInput, onFocus: () => this.searchFocus.emit() }), h("button", { key: '26fa161589df77bea51e4568bfd2d501008a0846', type: "button", class: {
53
+ }, type: "text", class: "sd-select-list-item-search__input", placeholder: "\uAC80\uC0C9\uC5B4 \uC785\uB825", value: this.searchText, onInput: this.handleInput, onFocus: () => this.searchFocus.emit() }), h("button", { key: '2a1386ef266f7398f97ff99adc89ee3cec4a594e', type: "button", class: {
54
54
  'sd-select-list-item-search__clear': true,
55
55
  'sd-select-list-item-search__clear--hidden': this.searchText === '',
56
- }, onClick: this.handleClear, tabindex: this.searchText !== '' ? 0 : -1, "aria-hidden": this.searchText !== '' ? 'false' : 'true' }, h("sd-icon", { key: 'aca5037c9dbc171f201cc02e7a2d00f49e6e6397', name: "close", size: 12, color: "#888888" })))));
56
+ }, onClick: this.handleClear, tabindex: this.searchText !== '' ? 0 : -1, "aria-hidden": this.searchText !== '' ? 'false' : 'true' }, h("sd-icon", { key: '1060c9fe4e3e6ce239800f04b382df9ce83e9d16', name: "close", size: 12, color: "#888888" })))));
57
57
  }
58
58
  static get is() { return "sd-select-list-item-search"; }
59
59
  static get originalStyleUrls() {
@@ -20,20 +20,44 @@
20
20
  padding-bottom: 0;
21
21
  }
22
22
  :host .sd-select-listbox__list::-webkit-scrollbar {
23
- opacity: 0;
24
- width: 8px;
25
- background: #E5E5E5;
23
+ width: 12px;
24
+ height: 12px;
25
+ background: transparent;
26
26
  }
27
- :host .sd-select-listbox__list::-webkit-scrollbar:horizontal {
28
- height: 8px;
27
+ :host .sd-select-listbox__list::-webkit-scrollbar-track {
28
+ background: transparent;
29
29
  }
30
30
  :host .sd-select-listbox__list::-webkit-scrollbar-thumb {
31
- height: 80px;
32
31
  background-color: #CCCCCC;
33
- border-radius: 4px;
32
+ border: 2px solid transparent;
33
+ border-radius: 8px;
34
+ background-clip: padding-box;
34
35
  }
35
- :host .sd-select-listbox__list::-webkit-scrollbar-track {
36
- background-color: #E5E5E5;
36
+ @supports not selector(::-webkit-scrollbar) {
37
+ :host .sd-select-listbox__list {
38
+ scrollbar-width: thin;
39
+ scrollbar-color: #CCCCCC transparent;
40
+ }
41
+ }
42
+ :host .sd-select-listbox__list::-webkit-scrollbar, :host .sd-select-listbox__list::-webkit-scrollbar-track {
43
+ background: #F6F6F6;
44
+ }
45
+ @supports not selector(::-webkit-scrollbar) {
46
+ :host .sd-select-listbox__list {
47
+ scrollbar-color: #CCCCCC #F6F6F6;
48
+ }
49
+ }
50
+ :host .sd-select-listbox__list::-webkit-scrollbar-track:vertical {
51
+ border-left: 1px solid #E1E1E1;
52
+ }
53
+ :host .sd-select-listbox__list::-webkit-scrollbar-track:horizontal {
54
+ border-top: 1px solid #E1E1E1;
55
+ }
56
+ :host .sd-select-listbox__list::-webkit-scrollbar-thumb:vertical {
57
+ border-left-width: 3px;
58
+ }
59
+ :host .sd-select-listbox__list::-webkit-scrollbar-thumb:horizontal {
60
+ border-top-width: 3px;
37
61
  }
38
62
  :host .sd-select-listbox__empty {
39
63
  padding: 12px;
@@ -361,9 +361,9 @@ export class SdSelectListbox {
361
361
  '--listbox-max-height': this.maxHeight ?? '260px',
362
362
  '--listbox-radius': `${LIST_BOX_LAYOUT.radius}px`,
363
363
  };
364
- return (h("div", { key: '1686c9749284be82edcf4eaf9c4741e1be3920d4', class: "sd-select-listbox", style: cssVars }, this.showSearch && (h("sd-select-list-item-search", { key: '934e1bf38324bda71e0c4c956fd8ad82eb9c4f46', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), h("div", { key: '33ec8b142a0f60b329fcd58bc8952d3577c92f83', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
364
+ return (h("div", { key: '060d455fa7eb31d50fb13251f352643460cc1232', class: "sd-select-listbox", style: cssVars }, this.showSearch && (h("sd-select-list-item-search", { key: '70543defd307911c3885b9ef3a0726465e9e4471', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), h("div", { key: '17aed7b1eb402f3b61044814cfad734e2cd4b922', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
365
365
  this.listEl = el;
366
- } }, this.showSelectAll && (h("sd-select-list-item", { key: '46d1f11884ed2fa9a55144fbf0633cb78f2f8ec3', option: SdSelectListbox.SELECT_ALL_OPTION, depth: 1, isSelected: this.selectAllState, isFocused: this.isOptionFocused(SdSelectListbox.SELECT_ALL_OPTION), useCheckbox: true, onSdListItemClick: this.handleSelectAllClick, onMouseEnter: () => this.handleOptionHover(SdSelectListbox.SELECT_ALL_OPTION) })), this.isEmpty ? (h("div", { class: "sd-select-listbox__empty" }, EMPTY_MESSAGE)) : this.isDepth ? (this.renderOptions(this.filteredOptions)) : (this.filteredOptions.map(option => (h("sd-select-list-item", { option: option, depth: 1, isSelected: this.isOptionSelected(option), isFocused: this.isOptionFocused(option), useCheckbox: this.isMulti, onSdListItemClick: this.handleOptionClick, onMouseEnter: () => this.handleOptionHover(option) })))))));
366
+ } }, this.showSelectAll && (h("sd-select-list-item", { key: '1f43ef353e470ebb0f70bfed5c495eb7de227c62', option: SdSelectListbox.SELECT_ALL_OPTION, depth: 1, isSelected: this.selectAllState, isFocused: this.isOptionFocused(SdSelectListbox.SELECT_ALL_OPTION), useCheckbox: true, onSdListItemClick: this.handleSelectAllClick, onMouseEnter: () => this.handleOptionHover(SdSelectListbox.SELECT_ALL_OPTION) })), this.isEmpty ? (h("div", { class: "sd-select-listbox__empty" }, EMPTY_MESSAGE)) : this.isDepth ? (this.renderOptions(this.filteredOptions)) : (this.filteredOptions.map(option => (h("sd-select-list-item", { option: option, depth: 1, isSelected: this.isOptionSelected(option), isFocused: this.isOptionFocused(option), useCheckbox: this.isMulti, onSdListItemClick: this.handleOptionClick, onMouseEnter: () => this.handleOptionHover(option) })))))));
367
367
  }
368
368
  static get is() { return "sd-select-listbox"; }
369
369
  static get encapsulation() { return "shadow"; }
@@ -51,7 +51,7 @@ export class SdSelectTrigger {
51
51
  ? SELECT_COLORS.icon.disabled
52
52
  : SELECT_COLORS.icon.default,
53
53
  };
54
- return (h("div", { key: '3e5b42da3a391f52f597594ccf9ebf9e9b236ccc', ref: el => {
54
+ return (h("div", { key: 'afda44bd2f8dcf0ab75d75b0178b067f96e61707', ref: el => {
55
55
  this.triggerEl = el;
56
56
  }, role: "button", "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', tabindex: this.disabled ? -1 : 0, class: {
57
57
  'sd-select-trigger': true,
@@ -62,7 +62,7 @@ export class SdSelectTrigger {
62
62
  e.preventDefault();
63
63
  this.handleClick();
64
64
  }
65
- }, onFocus: this.handleFocus, onBlur: this.handleBlur }, h("div", { key: '56938d493425d54b2c69840014b0354674fcf9d6', class: "sd-select-trigger__content" }, hasValue && isHtmlLabel(this.displayText) ? (h("span", { class: "sd-select-trigger__text", ref: el => el && (el.innerHTML = sanitizeInlineHtml(this.displayText)) })) : (h("span", { class: "sd-select-trigger__text" }, hasValue ? this.displayText : (this.placeholder ?? '선택'))), h("sd-icon", { key: '90e7df2f8bd416ccd1545c78c79f02746c119db3', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
65
+ }, onFocus: this.handleFocus, onBlur: this.handleBlur }, h("div", { key: '061acc7d557d222b2616538346d415a6f37a198e', class: "sd-select-trigger__content" }, hasValue && isHtmlLabel(this.displayText) ? (h("span", { class: "sd-select-trigger__text", ref: el => el && (el.innerHTML = sanitizeInlineHtml(this.displayText)) })) : (h("span", { class: "sd-select-trigger__text" }, hasValue ? this.displayText : (this.placeholder ?? '선택'))), h("sd-icon", { key: '6444177838d54360776bbbfa7f08da7a6f556a16', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
66
66
  'sd-select-trigger__icon': true,
67
67
  'sd-select-trigger__icon--open': this.isOpen,
68
68
  } }))));
@@ -283,15 +283,15 @@ export class SdSelect {
283
283
  this.closeDropdown();
284
284
  },
285
285
  };
286
- return (h("sd-field", { key: 'a8107af7c63f38eee519b44e33021f3d650c97a4', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, onMouseEnter: () => {
286
+ return (h("sd-field", { key: '5a224160fc18dff8deb4c3a2a9d1bc024c3ebd5b', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, onMouseEnter: () => {
287
287
  this.hovered = true;
288
288
  }, onMouseLeave: () => {
289
289
  this.hovered = false;
290
- } }, h("div", { key: 'd1b3c4d6f1da7ca9eeb31a19db7dd7b28a94103d', class: "sd-select", ref: el => {
290
+ } }, h("div", { key: '575ece02e659c99154598ad4ab416e26a7217e52', class: "sd-select", ref: el => {
291
291
  this.triggerRef = el;
292
- } }, h("sd-select-trigger", { key: 'c2ce229c398cf35aa1cdc58a12eb7ed81f316d0d', ref: el => {
292
+ } }, h("sd-select-trigger", { key: '39f1dc9bbb7e2e94e0ccf3a3b2f339b48f5e0b84', ref: el => {
293
293
  this.triggerComponentRef = el;
294
- }, displayText: this.displayText, placeholder: this.placeholder ?? '선택', disabled: this.disabled, isOpen: this.isOpen, onSdTriggerClick: this.handleTriggerClick, onSdTriggerFocus: this.handleTriggerFocus, onSdTriggerBlur: this.handleTriggerBlur })), (this.isOpen || this.isAnimatingOut) && (h("sd-portal", { key: '1f67ba5abb693d49b2e332edb991bf89edbc2456', ...portalProps }, h("sd-select-listbox", { key: '108acb8763dc0cf4bd7e807643140a9f41381248', type: this.type, options: this.options, value: this.value, emitValue: this.emitValue, useSearch: this.useSearch, useSelectAll: this.useSelectAll, triggerWidth: this.dropdownWidth || this.triggerWidth, maxWidth: this.resolvedMaxDropdownWidth, maxHeight: this.resolvedDropdownHeight, onSdOptionSelect: event => this.handleOptionSelect(event.detail) })))));
294
+ }, displayText: this.displayText, placeholder: this.placeholder ?? '선택', disabled: this.disabled, isOpen: this.isOpen, onSdTriggerClick: this.handleTriggerClick, onSdTriggerFocus: this.handleTriggerFocus, onSdTriggerBlur: this.handleTriggerBlur })), (this.isOpen || this.isAnimatingOut) && (h("sd-portal", { key: 'c1ec4d1f8f5aebeff2427e8323a3eb74f7c02ebb', ...portalProps }, h("sd-select-listbox", { key: 'd74641151357b007a7293d5a2a0dabb625a5e55b', type: this.type, options: this.options, value: this.value, emitValue: this.emitValue, useSearch: this.useSearch, useSelectAll: this.useSelectAll, triggerWidth: this.dropdownWidth || this.triggerWidth, maxWidth: this.resolvedMaxDropdownWidth, maxHeight: this.resolvedDropdownHeight, onSdOptionSelect: event => this.handleOptionSelect(event.detail) })))));
295
295
  }
296
296
  static get is() { return "sd-select"; }
297
297
  static get originalStyleUrls() {
@@ -0,0 +1,35 @@
1
+ import stepperTokens from "../../tokens/generated/component.stepper.json";
2
+ const stepper = stepperTokens.stepper;
3
+ export const STEPPER_SIZES = {
4
+ sm: {
5
+ sequenceSize: stepper.sm.sequence.size,
6
+ fontFamily: stepper.sm.typography.default.fontFamily,
7
+ fontSize: stepper.sm.typography.default.fontSize,
8
+ lineHeight: stepper.sm.typography.default.lineHeight,
9
+ fontWeightActive: stepper.sm.typography.active.fontWeight,
10
+ fontWeightDefault: stepper.sm.typography.default.fontWeight,
11
+ },
12
+ lg: {
13
+ sequenceSize: stepper.lg.sequence.size,
14
+ fontFamily: stepper.lg.typography.default.fontFamily,
15
+ fontSize: stepper.lg.typography.default.fontSize,
16
+ lineHeight: stepper.lg.typography.default.lineHeight,
17
+ fontWeightActive: stepper.lg.typography.active.fontWeight,
18
+ fontWeightDefault: stepper.lg.typography.default.fontWeight,
19
+ },
20
+ };
21
+ export const STEPPER_LAYOUT = {
22
+ containerGap: stepper.container.gap,
23
+ itemGap: stepper.item.gap,
24
+ dashWidth: stepper.dash.width,
25
+ radius: stepper.sequence.radius,
26
+ borderWidth: stepper.sequence.border.witdh,
27
+ iconSize: stepper.sequence.icon,
28
+ };
29
+ export const STEPPER_COLORS = {
30
+ dash: stepper.dash.color,
31
+ sequenceBorder: stepper.sequence.border,
32
+ sequenceBg: stepper.sequence.bg,
33
+ sequenceText: stepper.sequence.text,
34
+ text: stepper.text,
35
+ };
@@ -0,0 +1,50 @@
1
+ sd-stepper {
2
+ display: inline-flex;
3
+ }
4
+ sd-stepper .sd-stepper {
5
+ display: inline-flex;
6
+ align-items: center;
7
+ gap: var(--sd-stepper-container-gap);
8
+ font-family: var(--sd-stepper-font-family);
9
+ font-size: var(--sd-stepper-font-size);
10
+ line-height: var(--sd-stepper-line-height);
11
+ }
12
+ sd-stepper .sd-stepper__item {
13
+ display: inline-flex;
14
+ align-items: center;
15
+ gap: var(--sd-stepper-item-gap);
16
+ color: var(--sd-stepper-text-default);
17
+ font-weight: var(--sd-stepper-font-weight-default);
18
+ white-space: nowrap;
19
+ }
20
+ sd-stepper .sd-stepper__item--active {
21
+ color: var(--sd-stepper-text-active);
22
+ font-weight: var(--sd-stepper-font-weight-active);
23
+ }
24
+ sd-stepper .sd-stepper__sequence {
25
+ box-sizing: border-box;
26
+ display: inline-flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ width: var(--sd-stepper-sequence-size);
30
+ height: var(--sd-stepper-sequence-size);
31
+ flex: 0 0 var(--sd-stepper-sequence-size);
32
+ border-radius: var(--sd-stepper-sequence-radius);
33
+ border: var(--sd-stepper-sequence-border-width) solid var(--sd-stepper-sequence-border);
34
+ background: var(--sd-stepper-sequence-bg);
35
+ color: var(--sd-stepper-sequence-text);
36
+ font-size: 12px;
37
+ line-height: 20px;
38
+ font-weight: 700;
39
+ }
40
+ sd-stepper .sd-stepper__label {
41
+ color: inherit;
42
+ }
43
+ sd-stepper .sd-stepper__dash {
44
+ display: inline-flex;
45
+ align-items: center;
46
+ width: var(--sd-stepper-dash-width);
47
+ height: 1px;
48
+ flex: 0 0 var(--sd-stepper-dash-width);
49
+ color: var(--sd-stepper-dash-color);
50
+ }
@@ -0,0 +1,186 @@
1
+ import { h } from "@stencil/core";
2
+ import { STEPPER_COLORS, STEPPER_LAYOUT, STEPPER_SIZES, } from "./sd-stepper.config";
3
+ export class SdStepper {
4
+ /** 단계 목록 */
5
+ items = [];
6
+ /** 현재 활성 단계 value */
7
+ value = '';
8
+ /** 크기 */
9
+ size = 'sm';
10
+ /** 접근성 레이블 */
11
+ ariaLabel = '진행 단계';
12
+ valueChanged(newValue) {
13
+ this.value = newValue;
14
+ }
15
+ getItemValue(item, index) {
16
+ return item.value ?? String(index + 1);
17
+ }
18
+ getActiveIndex() {
19
+ const found = this.items.findIndex((item, index) => this.getItemValue(item, index) === this.value);
20
+ return found >= 0 ? found : 0;
21
+ }
22
+ getState(index) {
23
+ const activeIndex = this.getActiveIndex();
24
+ if (index < activeIndex)
25
+ return 'completed';
26
+ if (index === activeIndex)
27
+ return 'active';
28
+ return 'default';
29
+ }
30
+ buildCssVars() {
31
+ const size = STEPPER_SIZES[this.size];
32
+ return {
33
+ '--sd-stepper-sequence-size': `${size.sequenceSize}px`,
34
+ '--sd-stepper-font-family': size.fontFamily,
35
+ '--sd-stepper-font-size': `${size.fontSize}px`,
36
+ '--sd-stepper-line-height': `${size.lineHeight}px`,
37
+ '--sd-stepper-font-weight-active': size.fontWeightActive,
38
+ '--sd-stepper-font-weight-default': size.fontWeightDefault,
39
+ '--sd-stepper-container-gap': `${STEPPER_LAYOUT.containerGap}px`,
40
+ '--sd-stepper-item-gap': `${STEPPER_LAYOUT.itemGap}px`,
41
+ '--sd-stepper-dash-width': `${STEPPER_LAYOUT.dashWidth}px`,
42
+ '--sd-stepper-dash-color': STEPPER_COLORS.dash,
43
+ '--sd-stepper-sequence-radius': `${STEPPER_LAYOUT.radius}px`,
44
+ '--sd-stepper-sequence-border-width': `${STEPPER_LAYOUT.borderWidth}px`,
45
+ };
46
+ }
47
+ getStateVars(state) {
48
+ return {
49
+ '--sd-stepper-sequence-border': STEPPER_COLORS.sequenceBorder[state],
50
+ '--sd-stepper-sequence-bg': STEPPER_COLORS.sequenceBg[state],
51
+ '--sd-stepper-sequence-text': state === 'completed'
52
+ ? STEPPER_COLORS.text.default
53
+ : STEPPER_COLORS.sequenceText[state],
54
+ '--sd-stepper-text-active': STEPPER_COLORS.text.active,
55
+ '--sd-stepper-text-default': STEPPER_COLORS.text.default,
56
+ };
57
+ }
58
+ render() {
59
+ return (h("div", { key: '0255899ce447c38d44a618acc72692d2c746ebc3', class: "sd-stepper", role: "list", "aria-label": this.ariaLabel, style: this.buildCssVars() }, this.items.map((item, index) => {
60
+ const state = this.getState(index);
61
+ const className = [
62
+ 'sd-stepper__item',
63
+ `sd-stepper__item--${state}`,
64
+ ]
65
+ .filter(Boolean)
66
+ .join(' ');
67
+ return [
68
+ h("span", { class: className, role: "listitem", "aria-current": state === 'active' ? 'step' : undefined, style: this.getStateVars(state) }, h("span", { class: "sd-stepper__sequence", "aria-hidden": "true" }, state === 'completed' ? (h("sd-icon", { name: "check", size: STEPPER_LAYOUT.iconSize, color: "currentColor" })) : (index + 1)), h("span", { class: "sd-stepper__label" }, item.label)),
69
+ index < this.items.length - 1 && (h("span", { class: "sd-stepper__dash", "aria-hidden": "true" }, h("svg", { width: STEPPER_LAYOUT.dashWidth, height: "1", viewBox: `0 0 ${STEPPER_LAYOUT.dashWidth} 1`, fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("rect", { width: "1.6", height: "1", fill: "#888888" }), h("rect", { x: "5", width: "3.3", height: "1", fill: "#888888" }), h("rect", { x: "11.7", width: "3.3", height: "1", fill: "#888888" }), h("rect", { x: "18.4", width: "1.6", height: "1", fill: "#888888" })))),
70
+ ];
71
+ })));
72
+ }
73
+ static get is() { return "sd-stepper"; }
74
+ static get originalStyleUrls() {
75
+ return {
76
+ "$": ["sd-stepper.scss"]
77
+ };
78
+ }
79
+ static get styleUrls() {
80
+ return {
81
+ "$": ["sd-stepper.css"]
82
+ };
83
+ }
84
+ static get properties() {
85
+ return {
86
+ "items": {
87
+ "type": "unknown",
88
+ "mutable": true,
89
+ "complexType": {
90
+ "original": "StepperItem[]",
91
+ "resolved": "StepperItem[]",
92
+ "references": {
93
+ "StepperItem": {
94
+ "location": "import",
95
+ "path": "./sd-stepper.config",
96
+ "id": "src/components/sd-stepper/sd-stepper.config.ts::StepperItem",
97
+ "referenceLocation": "StepperItem"
98
+ }
99
+ }
100
+ },
101
+ "required": false,
102
+ "optional": false,
103
+ "docs": {
104
+ "tags": [],
105
+ "text": "\uB2E8\uACC4 \uBAA9\uB85D"
106
+ },
107
+ "getter": false,
108
+ "setter": false,
109
+ "defaultValue": "[]"
110
+ },
111
+ "value": {
112
+ "type": "string",
113
+ "mutable": true,
114
+ "complexType": {
115
+ "original": "string",
116
+ "resolved": "string",
117
+ "references": {}
118
+ },
119
+ "required": false,
120
+ "optional": false,
121
+ "docs": {
122
+ "tags": [],
123
+ "text": "\uD604\uC7AC \uD65C\uC131 \uB2E8\uACC4 value"
124
+ },
125
+ "getter": false,
126
+ "setter": false,
127
+ "reflect": true,
128
+ "attribute": "value",
129
+ "defaultValue": "''"
130
+ },
131
+ "size": {
132
+ "type": "string",
133
+ "mutable": false,
134
+ "complexType": {
135
+ "original": "StepperSize",
136
+ "resolved": "\"lg\" | \"sm\"",
137
+ "references": {
138
+ "StepperSize": {
139
+ "location": "import",
140
+ "path": "./sd-stepper.config",
141
+ "id": "src/components/sd-stepper/sd-stepper.config.ts::StepperSize",
142
+ "referenceLocation": "StepperSize"
143
+ }
144
+ }
145
+ },
146
+ "required": false,
147
+ "optional": false,
148
+ "docs": {
149
+ "tags": [],
150
+ "text": "\uD06C\uAE30"
151
+ },
152
+ "getter": false,
153
+ "setter": false,
154
+ "reflect": true,
155
+ "attribute": "size",
156
+ "defaultValue": "'sm'"
157
+ },
158
+ "ariaLabel": {
159
+ "type": "string",
160
+ "mutable": false,
161
+ "complexType": {
162
+ "original": "string",
163
+ "resolved": "string",
164
+ "references": {}
165
+ },
166
+ "required": false,
167
+ "optional": false,
168
+ "docs": {
169
+ "tags": [],
170
+ "text": "\uC811\uADFC\uC131 \uB808\uC774\uBE14"
171
+ },
172
+ "getter": false,
173
+ "setter": false,
174
+ "reflect": false,
175
+ "attribute": "aria-label",
176
+ "defaultValue": "'\uC9C4\uD589 \uB2E8\uACC4'"
177
+ }
178
+ };
179
+ }
180
+ static get watchers() {
181
+ return [{
182
+ "propName": "value",
183
+ "methodName": "valueChanged"
184
+ }];
185
+ }
186
+ }