@sellmate/design-system 1.16.0 → 1.18.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 (298) hide show
  1. package/dist/cjs/component.listItem-Bnh0r_CA.js +53 -0
  2. package/dist/cjs/design-system.cjs.js +1 -1
  3. package/dist/cjs/index.cjs.js +11 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/sd-button_2.cjs.entry.js +54 -0
  6. package/dist/cjs/sd-calendar_2.cjs.entry.js +2 -2
  7. package/dist/cjs/sd-chip-input.cjs.entry.js +236 -18
  8. package/dist/cjs/sd-circle-progress.cjs.entry.js +2 -2
  9. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +3 -3
  10. package/dist/cjs/sd-date-picker_7.cjs.entry.js +9 -9
  11. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +1 -1
  12. package/dist/cjs/sd-divider.cjs.entry.js +2 -2
  13. package/dist/cjs/sd-dropdown-button.cjs.entry.js +17 -7
  14. package/dist/cjs/sd-field_3.cjs.entry.js +8 -8
  15. package/dist/cjs/sd-ghost-button_2.cjs.entry.js +2 -2
  16. package/dist/cjs/sd-guide.cjs.entry.js +1 -1
  17. package/dist/cjs/sd-key-value-table.cjs.entry.js +45 -9
  18. package/dist/cjs/sd-linear-progress.cjs.entry.js +2 -2
  19. package/dist/cjs/sd-loading-container.cjs.entry.js +2 -2
  20. package/dist/cjs/sd-modal-container.cjs.entry.js +8 -1
  21. package/dist/cjs/sd-pagination_4.cjs.entry.js +10 -10
  22. package/dist/cjs/sd-popup.cjs.entry.js +2 -2
  23. package/dist/cjs/sd-portal.cjs.entry.js +16 -12
  24. package/dist/cjs/sd-select-list-item_2.cjs.entry.js +8 -7
  25. package/dist/cjs/{sd-select.config-DrJ4LNVz.js → sd-select.config-C9Ohe1QA.js} +25 -71
  26. package/dist/cjs/sd-select_3.cjs.entry.js +12 -11
  27. package/dist/cjs/sd-switch.cjs.entry.js +1 -1
  28. package/dist/cjs/sd-table.cjs.entry.js +8 -8
  29. package/dist/cjs/{sd-table.config-BjJW74Zx.js → sd-table.config-B7MuRLoR.js} +1 -1
  30. package/dist/cjs/sd-tabs.cjs.entry.js +1 -1
  31. package/dist/cjs/sd-td.cjs.entry.js +1 -1
  32. package/dist/cjs/sd-text-link.cjs.entry.js +4 -4
  33. package/dist/cjs/sd-toast-container.cjs.entry.js +1 -1
  34. package/dist/cjs/sd-toast.cjs.entry.js +2 -2
  35. package/dist/cjs/sd-toggle.cjs.entry.js +1 -1
  36. package/dist/cjs/{system-CdAyz3ej.js → system-MjrAugX-.js} +7 -0
  37. package/dist/collection/collection-manifest.json +1 -1
  38. package/dist/collection/components/assets/Bill.js +5 -0
  39. package/dist/collection/components/assets/Coupon.js +5 -0
  40. package/dist/collection/components/assets/Delete.js +5 -0
  41. package/dist/collection/components/assets/Dot.js +5 -0
  42. package/dist/collection/components/assets/Launcher.js +5 -0
  43. package/dist/collection/components/assets/Monitor.js +5 -0
  44. package/dist/collection/components/assets/Shield.js +5 -0
  45. package/dist/collection/components/assets/Sidebar.js +5 -0
  46. package/dist/collection/components/assets/Store.js +5 -0
  47. package/dist/collection/components/assets/index.js +18 -0
  48. package/dist/collection/components/sd-button/sd-button.js +2 -2
  49. package/dist/collection/components/sd-chip-input/sd-chip-input.config.js +29 -0
  50. package/dist/collection/components/sd-chip-input/sd-chip-input.css +50 -0
  51. package/dist/collection/components/sd-chip-input/sd-chip-input.js +321 -19
  52. package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +1 -1
  53. package/dist/collection/components/sd-confirm-modal/sd-confirm-modal.js +2 -2
  54. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +2 -2
  55. package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
  56. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +1 -1
  57. package/dist/collection/components/sd-divider/sd-divider.js +1 -1
  58. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.config.js +7 -0
  59. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +10 -7
  60. package/dist/collection/components/sd-field/sd-field.js +5 -5
  61. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +1 -1
  62. package/dist/collection/components/sd-ghost-button/sd-ghost-button.js +1 -1
  63. package/dist/collection/components/sd-icon/sd-icon.js +1 -1
  64. package/dist/collection/components/sd-input/sd-input.js +2 -2
  65. package/dist/collection/components/sd-key-value-table/sd-key-value-table.config.js +2 -3
  66. package/dist/collection/components/sd-key-value-table/sd-key-value-table.css +2 -2
  67. package/dist/collection/components/sd-key-value-table/sd-key-value-table.js +41 -4
  68. package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
  69. package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
  70. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +1 -1
  71. package/dist/collection/components/sd-modal-container/sd-modal-container.js +8 -1
  72. package/dist/collection/components/sd-number-input/sd-number-input.js +4 -4
  73. package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
  74. package/dist/collection/components/sd-popover/sd-popover.js +2 -2
  75. package/dist/collection/components/sd-popup/sd-popup.js +1 -1
  76. package/dist/collection/components/sd-portal/sd-portal.js +16 -12
  77. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +2 -2
  78. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +4 -4
  79. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +4 -4
  80. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +2 -2
  81. package/dist/collection/components/sd-select/sd-select.config.js +2 -2
  82. package/dist/collection/components/sd-select/sd-select.js +4 -4
  83. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  84. package/dist/collection/components/sd-table/sd-table.js +6 -6
  85. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +2 -2
  86. package/dist/collection/components/sd-table/sd-td/sd-td.js +1 -1
  87. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +3 -3
  88. package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
  89. package/dist/collection/components/sd-tag/sd-tag.js +3 -3
  90. package/dist/collection/components/sd-text-link/sd-text-link.js +4 -4
  91. package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
  92. package/dist/collection/components/sd-toast/sd-toast.js +3 -3
  93. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  94. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  95. package/dist/collection/components/sd-tooltip/sd-tooltip.js +4 -4
  96. package/dist/collection/utils/modal.js +11 -0
  97. package/dist/components/index.js +1 -1
  98. package/dist/components/{p-DfZ8X4ly.js → p-4HPAPKne.js} +1 -1
  99. package/dist/components/{p-B57sOZvR.js → p-79DExV92.js} +1 -1
  100. package/dist/components/{p-RE577yb-.js → p-AI4YlQmL.js} +1 -1
  101. package/dist/components/{p-B4pLCd0_.js → p-B-4ulKJj.js} +1 -1
  102. package/dist/components/{p-G_N9xEDL.js → p-B3SKaQId.js} +1 -1
  103. package/dist/components/p-BD8OoYud.js +1 -0
  104. package/dist/components/p-BJfiMC9H.js +1 -0
  105. package/dist/components/{p-DknZgTo9.js → p-BLNc_TL-.js} +1 -1
  106. package/dist/components/{p-CLEAGFjW.js → p-BMIgVp9-.js} +1 -1
  107. package/dist/components/{p-vS0t7bWk.js → p-BX5uKVOt.js} +1 -1
  108. package/dist/components/p-BYTrIk62.js +1 -0
  109. package/dist/components/{p-_P21dOPl.js → p-B_5uwji5.js} +1 -1
  110. package/dist/components/{p-DUwrMHYa.js → p-Bzo51vnP.js} +1 -1
  111. package/dist/components/{p-DtG23tkr.js → p-C0tkFuhj.js} +1 -1
  112. package/dist/components/{p-YlaidN9T.js → p-C3wv8gVC.js} +1 -1
  113. package/dist/components/{p-YKESuy-p.js → p-CH6cVc2a.js} +1 -1
  114. package/dist/components/{p-Bfrg9lvO.js → p-CQWZv8vY.js} +1 -1
  115. package/dist/components/{p-BsQf9d7Q.js → p-CXRFEcE_.js} +1 -1
  116. package/dist/components/{p-B-61rIur.js → p-C_r3z9VA.js} +1 -1
  117. package/dist/components/{p-BvAJ_toQ.js → p-Cl5io5TH.js} +1 -1
  118. package/dist/components/p-ClKABgST.js +1 -0
  119. package/dist/components/{p-DGyTYauz.js → p-Cmg10jpN.js} +1 -1
  120. package/dist/components/{p-DeXO3mpJ.js → p-CtWfOIxb.js} +1 -1
  121. package/dist/components/{p-CIZpVJBx.js → p-CzCu_NDl.js} +1 -1
  122. package/dist/components/{p-FGvi8J2D.js → p-DAOeioSV.js} +1 -1
  123. package/dist/components/{p-iGvyLmbb.js → p-DDR0VcRU.js} +1 -1
  124. package/dist/components/{p-CnfnK5aj.js → p-DMS9mQsg.js} +1 -1
  125. package/dist/components/{p-B73U-Zw2.js → p-DTFXzlvq.js} +1 -1
  126. package/dist/components/{p-CHjF0mwj.js → p-DbLQoVx6.js} +1 -1
  127. package/dist/components/p-Dr5Q2ZKB.js +1 -0
  128. package/dist/components/{p-B4UxhQes.js → p-DrSHJYop.js} +1 -1
  129. package/dist/components/p-DvvGi4J_.js +1 -0
  130. package/dist/components/{p-BrzBnO1L.js → p-DyVh4pNL.js} +1 -1
  131. package/dist/components/{p-C_6HUUGg.js → p-Ng3JMPxb.js} +1 -1
  132. package/dist/components/p-U8VaRj9c.js +1 -0
  133. package/dist/components/{p-BY1ItC8N.js → p-hzCGj0On.js} +1 -1
  134. package/dist/components/{p-BMVHvEDw.js → p-qJeUUOyB.js} +1 -1
  135. package/dist/components/sd-action-modal.js +1 -1
  136. package/dist/components/sd-barcode-input.js +1 -1
  137. package/dist/components/sd-button.js +1 -1
  138. package/dist/components/sd-calendar.js +1 -1
  139. package/dist/components/sd-callout.js +1 -1
  140. package/dist/components/sd-checkbox.js +1 -1
  141. package/dist/components/sd-chip-input.js +1 -1
  142. package/dist/components/sd-chip.js +1 -1
  143. package/dist/components/sd-circle-progress.js +1 -1
  144. package/dist/components/sd-confirm-modal.js +1 -1
  145. package/dist/components/sd-date-picker-trigger.js +1 -1
  146. package/dist/components/sd-date-picker.js +1 -1
  147. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  148. package/dist/components/sd-date-range-picker.js +1 -1
  149. package/dist/components/sd-divider.js +1 -1
  150. package/dist/components/sd-dropdown-button.js +1 -1
  151. package/dist/components/sd-field.js +1 -1
  152. package/dist/components/sd-file-picker.js +1 -1
  153. package/dist/components/sd-floating-portal.js +1 -1
  154. package/dist/components/sd-ghost-button.js +1 -1
  155. package/dist/components/sd-guide.js +1 -1
  156. package/dist/components/sd-icon.js +1 -1
  157. package/dist/components/sd-input.js +1 -1
  158. package/dist/components/sd-key-value-table.js +1 -1
  159. package/dist/components/sd-linear-progress.js +1 -1
  160. package/dist/components/sd-loading-container.js +1 -1
  161. package/dist/components/sd-loading-modal.js +1 -1
  162. package/dist/components/sd-modal-container.js +1 -1
  163. package/dist/components/sd-number-input.js +1 -1
  164. package/dist/components/sd-pagination.js +1 -1
  165. package/dist/components/sd-popover.js +1 -1
  166. package/dist/components/sd-popup.js +1 -1
  167. package/dist/components/sd-portal.js +1 -1
  168. package/dist/components/sd-select-list-item-search.js +1 -1
  169. package/dist/components/sd-select-list-item.js +1 -1
  170. package/dist/components/sd-select-listbox.js +1 -1
  171. package/dist/components/sd-select-trigger.js +1 -1
  172. package/dist/components/sd-select.js +1 -1
  173. package/dist/components/sd-switch.js +1 -1
  174. package/dist/components/sd-table.js +1 -1
  175. package/dist/components/sd-tabs.js +1 -1
  176. package/dist/components/sd-tag.js +1 -1
  177. package/dist/components/sd-tbody.js +1 -1
  178. package/dist/components/sd-td.js +1 -1
  179. package/dist/components/sd-text-link.js +1 -1
  180. package/dist/components/sd-textarea.js +1 -1
  181. package/dist/components/sd-thead.js +1 -1
  182. package/dist/components/sd-toast-container.js +1 -1
  183. package/dist/components/sd-toast.js +1 -1
  184. package/dist/components/sd-toggle.js +1 -1
  185. package/dist/components/sd-tooltip.js +1 -1
  186. package/dist/components/sd-tr.js +1 -1
  187. package/dist/design-system/design-system.esm.js +1 -1
  188. package/dist/design-system/index.esm.js +1 -1
  189. package/dist/design-system/{p-13b0db59.entry.js → p-0a772d43.entry.js} +1 -1
  190. package/dist/design-system/p-12306783.entry.js +1 -0
  191. package/dist/design-system/{p-b457611c.entry.js → p-1602a5fa.entry.js} +1 -1
  192. package/dist/design-system/p-1f3c1cca.entry.js +1 -0
  193. package/dist/design-system/{p-3045ffe1.entry.js → p-22484d65.entry.js} +1 -1
  194. package/dist/design-system/p-3caf2c5b.entry.js +1 -0
  195. package/dist/design-system/p-3f7349ae.entry.js +1 -0
  196. package/dist/design-system/{p-b8ea656d.entry.js → p-43529bba.entry.js} +1 -1
  197. package/dist/design-system/p-46da89f2.entry.js +1 -0
  198. package/dist/design-system/{p-a1f756ab.entry.js → p-4e1d76b8.entry.js} +1 -1
  199. package/dist/design-system/{p-03bcd782.entry.js → p-683c3b91.entry.js} +1 -1
  200. package/dist/design-system/{p-99ffe505.entry.js → p-6ce68bf2.entry.js} +1 -1
  201. package/dist/design-system/{p-a5131a43.entry.js → p-80bde621.entry.js} +1 -1
  202. package/dist/design-system/{p-22883fe1.entry.js → p-81aa23d1.entry.js} +1 -1
  203. package/dist/design-system/{p-c78b8822.entry.js → p-827f067b.entry.js} +1 -1
  204. package/dist/design-system/p-8a025f91.entry.js +1 -0
  205. package/dist/design-system/{p-3e62a3ea.entry.js → p-8a84a4fe.entry.js} +1 -1
  206. package/dist/design-system/{p-d2833150.entry.js → p-8f90620b.entry.js} +1 -1
  207. package/dist/design-system/{p-a0775a0c.entry.js → p-9124a1af.entry.js} +1 -1
  208. package/dist/design-system/p-BJfiMC9H.js +1 -0
  209. package/dist/design-system/p-CAFz8W8_.js +1 -0
  210. package/dist/design-system/{p-DGyTYauz.js → p-Cmg10jpN.js} +1 -1
  211. package/dist/design-system/p-U8VaRj9c.js +1 -0
  212. package/dist/design-system/{p-c6307ba4.entry.js → p-a263af1b.entry.js} +1 -1
  213. package/dist/design-system/p-aa312937.entry.js +1 -0
  214. package/dist/design-system/p-b4b20a86.entry.js +1 -0
  215. package/dist/design-system/{p-7eb31041.entry.js → p-bbbc4b27.entry.js} +1 -1
  216. package/dist/design-system/p-bcd7d358.entry.js +1 -0
  217. package/dist/design-system/{p-14340e46.entry.js → p-cc5f5bff.entry.js} +1 -1
  218. package/dist/design-system/{p-8140a225.entry.js → p-d5032f31.entry.js} +1 -1
  219. package/dist/design-system/{p-6d765b25.entry.js → p-e93dda25.entry.js} +1 -1
  220. package/dist/design-system/{p-c4e1641b.entry.js → p-f5190934.entry.js} +1 -1
  221. package/dist/design-system/p-ff939fbd.entry.js +1 -0
  222. package/dist/esm/component.listItem-U8VaRj9c.js +50 -0
  223. package/dist/esm/design-system.js +1 -1
  224. package/dist/esm/index.js +11 -0
  225. package/dist/esm/loader.js +1 -1
  226. package/dist/esm/sd-button_2.entry.js +54 -0
  227. package/dist/esm/sd-calendar_2.entry.js +2 -2
  228. package/dist/esm/sd-chip-input.entry.js +236 -18
  229. package/dist/esm/sd-circle-progress.entry.js +2 -2
  230. package/dist/esm/sd-confirm-modal_2.entry.js +3 -3
  231. package/dist/esm/sd-date-picker_7.entry.js +9 -9
  232. package/dist/esm/sd-date-range-picker-calendar.entry.js +1 -1
  233. package/dist/esm/sd-divider.entry.js +2 -2
  234. package/dist/esm/sd-dropdown-button.entry.js +17 -7
  235. package/dist/esm/sd-field_3.entry.js +8 -8
  236. package/dist/esm/sd-ghost-button_2.entry.js +2 -2
  237. package/dist/esm/sd-guide.entry.js +1 -1
  238. package/dist/esm/sd-key-value-table.entry.js +45 -9
  239. package/dist/esm/sd-linear-progress.entry.js +2 -2
  240. package/dist/esm/sd-loading-container.entry.js +2 -2
  241. package/dist/esm/sd-modal-container.entry.js +8 -1
  242. package/dist/esm/sd-pagination_4.entry.js +10 -10
  243. package/dist/esm/sd-popup.entry.js +2 -2
  244. package/dist/esm/sd-portal.entry.js +16 -12
  245. package/dist/esm/sd-select-list-item_2.entry.js +8 -7
  246. package/dist/esm/{sd-select.config-DtrsLG0Z.js → sd-select.config-D6ktrl7E.js} +4 -50
  247. package/dist/esm/sd-select_3.entry.js +12 -11
  248. package/dist/esm/sd-switch.entry.js +1 -1
  249. package/dist/esm/{sd-table.config-D9meRqTx.js → sd-table.config-B3wuA5wX.js} +1 -1
  250. package/dist/esm/sd-table.entry.js +8 -8
  251. package/dist/esm/sd-tabs.entry.js +1 -1
  252. package/dist/esm/sd-td.entry.js +1 -1
  253. package/dist/esm/sd-text-link.entry.js +4 -4
  254. package/dist/esm/sd-toast-container.entry.js +1 -1
  255. package/dist/esm/sd-toast.entry.js +2 -2
  256. package/dist/esm/sd-toggle.entry.js +1 -1
  257. package/dist/esm/{system-j2khhcHY.js → system-BJfiMC9H.js} +7 -0
  258. package/dist/types/components/assets/Bill.d.ts +1 -0
  259. package/dist/types/components/assets/Coupon.d.ts +1 -0
  260. package/dist/types/components/assets/Delete.d.ts +1 -0
  261. package/dist/types/components/assets/Dot.d.ts +1 -0
  262. package/dist/types/components/assets/Launcher.d.ts +1 -0
  263. package/dist/types/components/assets/Monitor.d.ts +1 -0
  264. package/dist/types/components/assets/Shield.d.ts +1 -0
  265. package/dist/types/components/assets/Sidebar.d.ts +1 -0
  266. package/dist/types/components/assets/Store.d.ts +1 -0
  267. package/dist/types/components/assets/index.d.ts +9 -0
  268. package/dist/types/components/sd-chip-input/sd-chip-input.config.d.ts +24 -0
  269. package/dist/types/components/sd-chip-input/sd-chip-input.d.ts +15 -0
  270. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.config.d.ts +4 -0
  271. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.d.ts +1 -0
  272. package/dist/types/components/sd-key-value-table/sd-key-value-table.config.d.ts +3 -2
  273. package/dist/types/components/sd-key-value-table/sd-key-value-table.d.ts +5 -0
  274. package/dist/types/components/sd-modal-container/sd-modal-container.config.d.ts +2 -0
  275. package/dist/types/components/sd-portal/sd-portal.d.ts +1 -0
  276. package/dist/types/components.d.ts +39 -0
  277. package/dist/types/utils/modal.d.ts +6 -0
  278. package/hydrate/index.js +547 -204
  279. package/hydrate/index.mjs +547 -204
  280. package/package.json +1 -1
  281. package/dist/components/p-6oSCGUOo.js +0 -1
  282. package/dist/components/p-BWoC-hMr.js +0 -1
  283. package/dist/components/p-C5wgHjtx.js +0 -1
  284. package/dist/components/p-Cftyepf_.js +0 -1
  285. package/dist/components/p-IgBxAXyL.js +0 -1
  286. package/dist/components/p-j2khhcHY.js +0 -1
  287. package/dist/design-system/p-0c5192b8.entry.js +0 -1
  288. package/dist/design-system/p-1652ae55.entry.js +0 -1
  289. package/dist/design-system/p-21fa7f85.entry.js +0 -1
  290. package/dist/design-system/p-2753c6c9.entry.js +0 -1
  291. package/dist/design-system/p-5c6dd20b.entry.js +0 -1
  292. package/dist/design-system/p-71739336.entry.js +0 -1
  293. package/dist/design-system/p-DtrsLG0Z.js +0 -1
  294. package/dist/design-system/p-b22cb811.entry.js +0 -1
  295. package/dist/design-system/p-b576bc21.entry.js +0 -1
  296. package/dist/design-system/p-c1f71355.entry.js +0 -1
  297. package/dist/design-system/p-da90b448.entry.js +0 -1
  298. package/dist/design-system/p-j2khhcHY.js +0 -1
@@ -2,6 +2,8 @@
2
2
 
3
3
  var index = require('./index-DXm0PH2A.js');
4
4
  var index$1 = require('./index-BUvXpPc3.js');
5
+ var system = require('./system-MjrAugX-.js');
6
+ var component_listItem = require('./component.listItem-Bnh0r_CA.js');
5
7
  var sdChip_config = require('./sd-chip.config-DiLoRpct.js');
6
8
 
7
9
  const chipInput = {
@@ -76,8 +78,34 @@ const CHIP_INPUT_RESET = {
76
78
  iconColor: '#888888', // TODO: 토큰 반영 후 교체 (grey_65)
77
79
  labelColor: '#555555', // TODO: 토큰 반영 후 교체 (grey_70)
78
80
  };
81
+ const feedbackSm = system.systemTokens.typography.feedback.sm.regular;
82
+ const CHIP_INPUT_MAX_COUNT = {
83
+ fontSize: `${feedbackSm.fontSize}px`,
84
+ fontWeight: `${feedbackSm.fontWeight}`,
85
+ color: chipInputTokens.chipInput.text.placeholder,
86
+ };
87
+ const listItem = component_listItem.listItemTokens.listItem;
88
+ const CHIP_INPUT_SUGGESTIONS = {
89
+ radius: `${component_listItem.listBoxTokens.listBox.radius}px`,
90
+ maxHeight: '260px',
91
+ itemPaddingY: `${listItem.paddingY}px`,
92
+ itemPaddingX: `${listItem.paddingLeft.depth1}px`,
93
+ itemPaddingRight: `${listItem.paddingRight}px`,
94
+ itemGap: `${listItem.gap}px`,
95
+ itemFontSize: `${listItem.typography.default.fontSize}px`,
96
+ itemFontWeight: listItem.typography.default.fontWeight,
97
+ itemFontWeightSelected: listItem.typography.selected.fontWeight,
98
+ itemLineHeight: `${listItem.typography.default.lineHeight}px`,
99
+ itemFontFamily: listItem.typography.default.fontFamily,
100
+ itemColor: listItem.content.default,
101
+ itemColorHover: listItem.content.hover,
102
+ itemBgHover: listItem.bg.hover,
103
+ emptyColor: '#888888',
104
+ emptyFontSize: '12px',
105
+ emptyLineHeight: '20px',
106
+ };
79
107
 
80
- const sdChipInputCss = () => `sd-chip-input{display:inline-flex}sd-chip-input .sd-chip-input{position:relative;width:100%;min-height:var(--sd-chip-input-min-height);display:flex;flex-flow:row wrap;align-items:center;gap:var(--sd-chip-input-chip-gap);padding:var(--sd-chip-input-padding-y) var(--sd-chip-input-padding-x);cursor:text}sd-chip-input .sd-chip-input__reset{display:inline-flex;align-items:center;gap:var(--sd-chip-input-reset-gap);flex-shrink:0}sd-chip-input .sd-chip-input__divider{display:inline-block;width:1px;height:12px;background-color:var(--sd-chip-input-divider-color);flex-shrink:0}sd-chip-input .sd-chip-input__field{flex:0 0 auto;display:inline-grid;grid-template-columns:minmax(0, max-content);align-items:center;min-width:1ch;max-width:100%;height:var(--sd-chip-input-field-height);box-sizing:border-box;padding:0;border:none;border-radius:0;background:transparent;overflow:hidden}sd-chip-input .sd-chip-input__field::after{content:attr(data-value);grid-area:1/1;visibility:hidden;white-space:pre;font-size:var(--sd-chip-input-field-font-size);line-height:var(--sd-chip-input-field-line-height);font-weight:var(--sd-chip-input-field-font-weight);font-family:var(--sd-chip-input-field-font-family)}sd-chip-input .sd-chip-input__field--filled{padding:0 var(--sd-chip-input-field-padding-x);border:var(--sd-chip-input-field-border-width) solid var(--sd-chip-input-field-border-color);border-radius:var(--sd-chip-input-field-radius);background:var(--sd-chip-input-field-bg)}sd-chip-input .sd-chip-input__field--empty{position:absolute;top:0;left:0;width:0;height:0;min-width:0;overflow:hidden}sd-chip-input .sd-chip-input__input{grid-area:1/1;width:100%;min-width:1ch;height:var(--sd-chip-input-field-height);margin:0;padding:0;border:none;outline:none;overflow:hidden;text-overflow:ellipsis;background:transparent;font-size:var(--sd-chip-input-field-font-size);line-height:var(--sd-chip-input-field-line-height);font-weight:var(--sd-chip-input-field-font-weight);font-family:var(--sd-chip-input-field-font-family);color:var(--sd-chip-input-field-content)}sd-chip-input .sd-chip-input__input[disabled]{cursor:not-allowed;pointer-events:none}sd-chip-input .sd-chip-input__input::placeholder{color:var(--sd-chip-input-placeholder-color)}`;
108
+ const sdChipInputCss = () => `sd-chip-input{display:inline-flex}sd-chip-input .sd-chip-input{position:relative;width:100%;isolation:isolate;min-height:var(--sd-chip-input-min-height);display:flex;flex-flow:row wrap;align-items:center;gap:var(--sd-chip-input-chip-gap);padding:var(--sd-chip-input-padding-y) var(--sd-chip-input-padding-x);cursor:text}sd-chip-input .sd-chip-input__reset{display:inline-flex;align-items:center;gap:var(--sd-chip-input-reset-gap);flex-shrink:0}sd-chip-input .sd-chip-input__divider{display:inline-block;width:1px;height:12px;background-color:var(--sd-chip-input-divider-color);flex-shrink:0}sd-chip-input .sd-chip-input__max-count{font-size:var(--sd-chip-input-max-count-font-size);font-weight:var(--sd-chip-input-max-count-font-weight);color:var(--sd-chip-input-max-count-color);white-space:nowrap;flex-shrink:0}sd-chip-input .sd-chip-input__field{flex:0 0 auto;display:inline-grid;grid-template-columns:minmax(0, max-content);align-items:center;min-width:1ch;max-width:100%;height:var(--sd-chip-input-field-height);box-sizing:border-box;padding:0;border:none;border-radius:0;background:transparent;overflow:hidden}sd-chip-input .sd-chip-input__field::after{content:attr(data-value);grid-area:1/1;visibility:hidden;white-space:pre;font-size:var(--sd-chip-input-field-font-size);line-height:var(--sd-chip-input-field-line-height);font-weight:var(--sd-chip-input-field-font-weight);font-family:var(--sd-chip-input-field-font-family)}sd-chip-input .sd-chip-input__field--filled{padding:0 var(--sd-chip-input-field-padding-x);border:var(--sd-chip-input-field-border-width) solid var(--sd-chip-input-field-border-color);border-radius:var(--sd-chip-input-field-radius);background:var(--sd-chip-input-field-bg)}sd-chip-input .sd-chip-input__field--empty{position:absolute;top:0;left:0;width:0;height:0;min-width:0;overflow:hidden}sd-chip-input .sd-chip-input__input{grid-area:1/1;width:100%;min-width:1ch;height:var(--sd-chip-input-field-height);margin:0;padding:0;border:none;outline:none;overflow:hidden;text-overflow:ellipsis;background:transparent;font-size:var(--sd-chip-input-field-font-size);line-height:var(--sd-chip-input-field-line-height);font-weight:var(--sd-chip-input-field-font-weight);font-family:var(--sd-chip-input-field-font-family);color:var(--sd-chip-input-field-content)}sd-chip-input .sd-chip-input__input[disabled]{cursor:not-allowed;pointer-events:none}sd-chip-input .sd-chip-input__input::placeholder{color:var(--sd-chip-input-placeholder-color)}sd-chip-input .sd-chip-input__suggestions{display:flex;flex-direction:column;box-sizing:border-box;background:white;border-radius:var(--sd-chip-input-suggestions-radius);box-shadow:2px 2px 12px 2px rgba(0, 0, 0, 0.1);max-height:var(--sd-chip-input-suggestions-max-height);min-height:0;overflow-y:auto;overflow-x:hidden;outline:none}sd-chip-input .sd-chip-input__suggestion-item{display:flex;align-items:center;gap:var(--sd-chip-input-suggestion-gap);padding:var(--sd-chip-input-suggestion-padding-y) var(--sd-chip-input-suggestion-padding-right) var(--sd-chip-input-suggestion-padding-y) var(--sd-chip-input-suggestion-padding-x);font-size:var(--sd-chip-input-suggestion-font-size);line-height:var(--sd-chip-input-suggestion-line-height);font-weight:var(--sd-chip-input-suggestion-font-weight);font-family:var(--sd-chip-input-suggestion-font-family);color:var(--sd-chip-input-suggestion-color);cursor:pointer;user-select:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}sd-chip-input .sd-chip-input__suggestion-item--active{background:var(--sd-chip-input-suggestion-bg-hover);color:var(--sd-chip-input-suggestion-color-hover);font-weight:var(--sd-chip-input-suggestion-font-weight-selected)}sd-chip-input .sd-chip-input__suggestions-empty{padding:12px;text-align:center;font-size:var(--sd-chip-input-suggestions-empty-font-size);line-height:var(--sd-chip-input-suggestions-empty-line-height);font-family:var(--sd-chip-input-suggestion-font-family);color:var(--sd-chip-input-suggestions-empty-color)}`;
81
109
 
82
110
  const SdChipInput = class {
83
111
  constructor(hostRef) {
@@ -85,7 +113,9 @@ const SdChipInput = class {
85
113
  this.update = index.createEvent(this, "sdUpdate", 7);
86
114
  this.focusEvent = index.createEvent(this, "sdFocus", 7);
87
115
  this.blurEvent = index.createEvent(this, "sdBlur", 7);
116
+ this.inputEvent = index.createEvent(this, "sdInput", 7);
88
117
  }
118
+ static SUGGESTIONS_VIEWPORT_PADDING = 8;
89
119
  get host() { return index.getElement(this); }
90
120
  values = [];
91
121
  errors = [];
@@ -97,6 +127,11 @@ const SdChipInput = class {
97
127
  rules = [];
98
128
  error = false;
99
129
  useReset = false;
130
+ maxCount;
131
+ suggestions = [];
132
+ loadingSuggestions = false;
133
+ recommendedItems = [];
134
+ loadingRecommendedItems = false;
100
135
  // sd-field props
101
136
  label = '';
102
137
  labelWidth = '';
@@ -112,8 +147,12 @@ const SdChipInput = class {
112
147
  focused = false;
113
148
  hovered = false;
114
149
  inputValue = '';
150
+ activeSuggestionIndex = -1;
151
+ suppressSuggestions = false;
152
+ suppressRecommendations = false;
115
153
  inputEl;
116
154
  formField;
155
+ chipInputRef;
117
156
  get value() {
118
157
  return this.internalValues;
119
158
  }
@@ -125,6 +164,17 @@ const SdChipInput = class {
125
164
  this.internalErrors = [...newErrors];
126
165
  }
127
166
  }
167
+ suggestionsChanged(newVal) {
168
+ if (!Array.isArray(newVal))
169
+ this.suggestions = [];
170
+ this.activeSuggestionIndex = -1;
171
+ this.suppressSuggestions = false;
172
+ }
173
+ recommendedItemsChanged(newVal) {
174
+ if (!Array.isArray(newVal))
175
+ this.recommendedItems = [];
176
+ this.activeSuggestionIndex = -1;
177
+ }
128
178
  componentWillLoad() {
129
179
  this.internalValues = Array.isArray(this.values) ? [...this.values] : [];
130
180
  if (Array.isArray(this.errors)) {
@@ -149,6 +199,7 @@ const SdChipInput = class {
149
199
  update;
150
200
  focusEvent;
151
201
  blurEvent;
202
+ inputEvent;
152
203
  async sdValidate() {
153
204
  return this.formField?.sdValidate();
154
205
  }
@@ -161,6 +212,31 @@ const SdChipInput = class {
161
212
  async sdFocus() {
162
213
  return this.formField?.sdFocus();
163
214
  }
215
+ addChip = (value) => {
216
+ if (this.maxCount != null && this.internalValues.length >= this.maxCount)
217
+ return;
218
+ const next = [...this.internalValues, value];
219
+ this.internalValues = next;
220
+ this.values = next;
221
+ if (Array.isArray(this.errors)) {
222
+ const nextErrors = [...this.internalErrors, false];
223
+ this.internalErrors = nextErrors;
224
+ this.errors = nextErrors;
225
+ }
226
+ if (Array.isArray(this.disabledChips)) {
227
+ this.disabledChips = [...this.disabledChips, false];
228
+ }
229
+ if (this.inputEl != null) {
230
+ this.inputEl.value = '';
231
+ }
232
+ this.inputValue = '';
233
+ this.activeSuggestionIndex = -1;
234
+ this.suppressSuggestions = true;
235
+ this.update.emit(next);
236
+ this.inputEvent.emit('');
237
+ this.inputEl?.focus();
238
+ this.suppressRecommendations = true;
239
+ };
164
240
  handleChipRemove = (index) => {
165
241
  const next = this.internalValues.filter((_, i) => i !== index);
166
242
  this.internalValues = next;
@@ -174,26 +250,54 @@ const SdChipInput = class {
174
250
  this.disabledChips = this.disabledChips.filter((_, i) => i !== index);
175
251
  }
176
252
  this.update.emit(next);
253
+ // .focus()는 동기 실행 → handleFocus가 suppressRecommendations=false로 리셋하므로 이후 덮어씀
177
254
  this.inputEl?.focus();
255
+ this.suppressRecommendations = true;
178
256
  };
179
257
  handleKeyDown = (event) => {
180
258
  const input = event.target;
181
- if (event.key === 'Enter' && !event.isComposing && input.value.trim() !== '') {
182
- event.preventDefault();
183
- const next = [...this.internalValues, input.value.trim()];
184
- this.internalValues = next;
185
- this.values = next;
186
- if (Array.isArray(this.errors)) {
187
- const nextErrors = [...this.internalErrors, false];
188
- this.internalErrors = nextErrors;
189
- this.errors = nextErrors;
259
+ const suggestions = this.suggestions ?? [];
260
+ const recommendedItems = this.recommendedItems ?? [];
261
+ const showAutocomplete = this.focused &&
262
+ this.inputValue !== '' &&
263
+ !this.suppressSuggestions &&
264
+ (suggestions.length > 0 || this.loadingSuggestions);
265
+ const showRecommendations = this.focused &&
266
+ this.inputValue === '' &&
267
+ !this.suppressRecommendations &&
268
+ (recommendedItems.length > 0 || this.loadingRecommendedItems);
269
+ const showDropdown = showAutocomplete || showRecommendations;
270
+ const activeItems = showAutocomplete ? suggestions : recommendedItems;
271
+ if (showDropdown) {
272
+ if (event.key === 'ArrowDown') {
273
+ event.preventDefault();
274
+ this.activeSuggestionIndex = Math.min(this.activeSuggestionIndex + 1, activeItems.length - 1);
275
+ return;
190
276
  }
191
- if (Array.isArray(this.disabledChips)) {
192
- this.disabledChips = [...this.disabledChips, false];
277
+ if (event.key === 'ArrowUp') {
278
+ event.preventDefault();
279
+ this.activeSuggestionIndex = Math.max(this.activeSuggestionIndex - 1, -1);
280
+ return;
193
281
  }
194
- input.value = '';
195
- this.inputValue = '';
196
- this.update.emit(next);
282
+ if (event.key === 'Escape') {
283
+ if (showAutocomplete)
284
+ this.suppressSuggestions = true;
285
+ if (showRecommendations)
286
+ this.suppressRecommendations = true;
287
+ this.activeSuggestionIndex = -1;
288
+ return;
289
+ }
290
+ if (event.key === 'Enter' && this.activeSuggestionIndex >= 0) {
291
+ event.preventDefault();
292
+ this.addChip(activeItems[this.activeSuggestionIndex]);
293
+ return;
294
+ }
295
+ }
296
+ if (event.key === 'Enter' && !event.isComposing && input.value.trim() !== '') {
297
+ if (this.maxCount != null && this.internalValues.length >= this.maxCount)
298
+ return;
299
+ event.preventDefault();
300
+ this.addChip(input.value.trim());
197
301
  }
198
302
  else if (event.key === 'Backspace' && input.value === '' && this.internalValues.length > 0) {
199
303
  if (this.getChipDisabled(this.internalValues.length - 1))
@@ -214,16 +318,35 @@ const SdChipInput = class {
214
318
  }
215
319
  };
216
320
  handleInput = (event) => {
217
- this.inputValue = event.target.value;
321
+ const value = event.target.value;
322
+ const wasEmpty = this.inputValue === '';
323
+ const isEmpty = value === '';
324
+ if (wasEmpty !== isEmpty) {
325
+ this.activeSuggestionIndex = -1;
326
+ if (isEmpty) {
327
+ this.suppressRecommendations = false;
328
+ }
329
+ }
330
+ this.inputValue = value;
331
+ this.suppressSuggestions = false;
332
+ this.inputEvent.emit(value);
218
333
  };
219
334
  handleFocus = () => {
220
335
  this.focused = true;
336
+ this.suppressRecommendations = false;
221
337
  this.focusEvent.emit();
222
338
  };
223
339
  handleBlur = () => {
224
340
  this.focused = false;
341
+ this.activeSuggestionIndex = -1;
225
342
  this.blurEvent.emit();
226
343
  };
344
+ closeSuggestions = () => {
345
+ this.focused = false;
346
+ this.activeSuggestionIndex = -1;
347
+ this.suppressSuggestions = true;
348
+ this.suppressRecommendations = true;
349
+ };
227
350
  handleContainerClick = () => {
228
351
  if (!this.disabled) {
229
352
  this.inputEl?.focus();
@@ -280,8 +403,84 @@ const SdChipInput = class {
280
403
  '--sd-chip-input-field-font-weight': sdChip_config.CHIP_TYPOGRAPHY.focus.fontWeight,
281
404
  '--sd-chip-input-field-line-height': sdChip_config.CHIP_TYPOGRAPHY.focus.lineHeight,
282
405
  '--sd-chip-input-field-font-family': sdChip_config.CHIP_TYPOGRAPHY.focus.fontFamily,
406
+ '--sd-chip-input-max-count-font-size': CHIP_INPUT_MAX_COUNT.fontSize,
407
+ '--sd-chip-input-max-count-font-weight': CHIP_INPUT_MAX_COUNT.fontWeight,
408
+ '--sd-chip-input-max-count-color': CHIP_INPUT_MAX_COUNT.color,
409
+ '--sd-chip-input-suggestions-radius': CHIP_INPUT_SUGGESTIONS.radius,
410
+ '--sd-chip-input-suggestions-max-height': CHIP_INPUT_SUGGESTIONS.maxHeight,
411
+ '--sd-chip-input-suggestion-padding-y': CHIP_INPUT_SUGGESTIONS.itemPaddingY,
412
+ '--sd-chip-input-suggestion-padding-x': CHIP_INPUT_SUGGESTIONS.itemPaddingX,
413
+ '--sd-chip-input-suggestion-padding-right': CHIP_INPUT_SUGGESTIONS.itemPaddingRight,
414
+ '--sd-chip-input-suggestion-gap': CHIP_INPUT_SUGGESTIONS.itemGap,
415
+ '--sd-chip-input-suggestion-font-size': CHIP_INPUT_SUGGESTIONS.itemFontSize,
416
+ '--sd-chip-input-suggestion-font-weight': CHIP_INPUT_SUGGESTIONS.itemFontWeight,
417
+ '--sd-chip-input-suggestion-font-weight-selected': CHIP_INPUT_SUGGESTIONS.itemFontWeightSelected,
418
+ '--sd-chip-input-suggestion-line-height': CHIP_INPUT_SUGGESTIONS.itemLineHeight,
419
+ '--sd-chip-input-suggestion-font-family': CHIP_INPUT_SUGGESTIONS.itemFontFamily,
420
+ '--sd-chip-input-suggestion-color': CHIP_INPUT_SUGGESTIONS.itemColor,
421
+ '--sd-chip-input-suggestion-color-hover': CHIP_INPUT_SUGGESTIONS.itemColorHover,
422
+ '--sd-chip-input-suggestion-bg-hover': CHIP_INPUT_SUGGESTIONS.itemBgHover,
423
+ '--sd-chip-input-suggestions-empty-color': CHIP_INPUT_SUGGESTIONS.emptyColor,
424
+ '--sd-chip-input-suggestions-empty-font-size': CHIP_INPUT_SUGGESTIONS.emptyFontSize,
425
+ '--sd-chip-input-suggestions-empty-line-height': CHIP_INPUT_SUGGESTIONS.emptyLineHeight,
283
426
  };
284
- return (index.h("sd-field", { key: 'ea69cfd9fd589f3657f3dff1f73196f684d35d80', name: this.name, label: this.label, labelWidth: this.labelWidth, hint: this.hint, errorMessage: this.errorMessage, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, width: this.width, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), style: cssVars, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, index.h("div", { key: 'b4948c02ea157000002661ca9374b300af5e71a8', class: "sd-chip-input", onClick: this.handleContainerClick }, (this.internalValues ?? []).map((value, i) => (index.h("sd-chip", { key: i, value: value, error: this.getChipError(i), disabled: this.getChipDisabled(i), editable: false, onSdRemove: () => this.handleChipRemove(i) }))), index.h("div", { key: 'ad36a2c8dd5b8d8ad00d7130da75e92a1fb3b350', class: {
427
+ const isMaxReached = this.maxCount != null && this.internalValues.length >= this.maxCount;
428
+ const showResetArea = (this.useReset && this.internalValues.length > 0) || this.maxCount != null;
429
+ const suggestions = this.suggestions ?? [];
430
+ const recommendedItems = this.recommendedItems ?? [];
431
+ const showAutocomplete = this.focused &&
432
+ this.inputValue !== '' &&
433
+ !this.suppressSuggestions &&
434
+ (suggestions.length > 0 || this.loadingSuggestions);
435
+ const showRecommendations = this.focused &&
436
+ this.inputValue === '' &&
437
+ !this.suppressRecommendations &&
438
+ (recommendedItems.length > 0 || this.loadingRecommendedItems);
439
+ const showDropdown = showAutocomplete || showRecommendations;
440
+ const dropdownItems = showAutocomplete ? suggestions : recommendedItems;
441
+ const isDropdownLoading = showAutocomplete
442
+ ? this.loadingSuggestions && suggestions.length === 0
443
+ : this.loadingRecommendedItems && recommendedItems.length === 0;
444
+ const suggestionBoxStyle = {
445
+ width: `${this.chipInputRef?.offsetWidth ?? 0}px`,
446
+ display: 'flex',
447
+ flexDirection: 'column',
448
+ boxSizing: 'border-box',
449
+ background: '#FFFFFF',
450
+ borderRadius: CHIP_INPUT_SUGGESTIONS.radius,
451
+ boxShadow: '2px 2px 12px 2px rgba(0, 0, 0, 0.1)',
452
+ maxHeight: CHIP_INPUT_SUGGESTIONS.maxHeight,
453
+ minHeight: '0',
454
+ overflowY: 'auto',
455
+ overflowX: 'hidden',
456
+ outline: 'none',
457
+ };
458
+ const suggestionItemStyle = {
459
+ display: 'flex',
460
+ alignItems: 'center',
461
+ gap: CHIP_INPUT_SUGGESTIONS.itemGap,
462
+ padding: `${CHIP_INPUT_SUGGESTIONS.itemPaddingY} ${CHIP_INPUT_SUGGESTIONS.itemPaddingRight} ` +
463
+ `${CHIP_INPUT_SUGGESTIONS.itemPaddingY} ${CHIP_INPUT_SUGGESTIONS.itemPaddingX}`,
464
+ fontSize: CHIP_INPUT_SUGGESTIONS.itemFontSize,
465
+ lineHeight: CHIP_INPUT_SUGGESTIONS.itemLineHeight,
466
+ fontWeight: CHIP_INPUT_SUGGESTIONS.itemFontWeight,
467
+ fontFamily: CHIP_INPUT_SUGGESTIONS.itemFontFamily,
468
+ color: CHIP_INPUT_SUGGESTIONS.itemColor,
469
+ cursor: 'pointer',
470
+ userSelect: 'none',
471
+ whiteSpace: 'nowrap',
472
+ overflow: 'hidden',
473
+ textOverflow: 'ellipsis',
474
+ };
475
+ const suggestionEmptyStyle = {
476
+ padding: '12px',
477
+ textAlign: 'center',
478
+ fontSize: CHIP_INPUT_SUGGESTIONS.emptyFontSize,
479
+ lineHeight: CHIP_INPUT_SUGGESTIONS.emptyLineHeight,
480
+ fontFamily: CHIP_INPUT_SUGGESTIONS.itemFontFamily,
481
+ color: CHIP_INPUT_SUGGESTIONS.emptyColor,
482
+ };
483
+ return (index.h("sd-field", { key: '6ff0688cd9a076cd81693364bfeb6a98b5bf018e', name: this.name, label: this.label, labelWidth: this.labelWidth, hint: this.hint, errorMessage: this.errorMessage, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, width: this.width, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), style: cssVars, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, index.h("div", { key: '0c6ae92de4dcb44ed4fbcd12f1dddef93cec12db', class: "sd-chip-input", ref: el => (this.chipInputRef = el), onClick: this.handleContainerClick }, (this.internalValues ?? []).map((value, i) => (index.h("sd-chip", { key: i, value: value, error: this.getChipError(i), disabled: this.getChipDisabled(i), editable: false, onSdRemove: () => this.handleChipRemove(i) }))), !isMaxReached && (index.h("div", { key: 'df111f3110b444ed296db8c6b7f00d9209f858af', class: {
285
484
  'sd-chip-input__field': true,
286
485
  'sd-chip-input__field--filled': this.inputValue !== '',
287
486
  'sd-chip-input__field--empty': this.inputValue === '' && this.internalValues.length > 0 && !this.focused,
@@ -289,7 +488,20 @@ const SdChipInput = class {
289
488
  ? this.inputValue
290
489
  : this.internalValues.length === 0
291
490
  ? this.placeholder
292
- : '' }, index.h("input", { key: '6ea7cdaa1011543b6c7784561d3752e4ed4a9d7d', ref: el => (this.inputEl = el), class: "sd-chip-input__input", placeholder: this.internalValues.length === 0 ? this.placeholder : '', disabled: this.disabled, size: 1, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur })), this.useReset && this.internalValues.length > 0 && (index.h("div", { key: '65c366e84ba427704a9c89f6f5c6fdeeb5889554', class: "sd-chip-input__reset" }, this.inputValue === '' && index.h("span", { key: 'e78f17df8e2fd9a91cc5f0450d22542720adef1b', class: "sd-chip-input__divider" }), index.h("sd-text-link", { key: '298bd3ce40e0c0c4b91337548d6c6887d5239ccc', icon: "reset", iconColor: CHIP_INPUT_RESET.iconColor, label: "\uC785\uB825 \uCD08\uAE30\uD654", underline: true, disabled: this.disabled, style: { '--sd-text-link-color': CHIP_INPUT_RESET.labelColor }, onSdClick: this.handleResetInput }))))));
491
+ : '' }, index.h("input", { key: '8e170c84cedab36edbdd0a84e7e2e1ac0fba9632', ref: el => (this.inputEl = el), class: "sd-chip-input__input", placeholder: this.internalValues.length === 0 ? this.placeholder : '', disabled: this.disabled, size: 1, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur }))), showResetArea && (index.h("div", { key: '5b30bb4f89c9d3c9b18870acccad22bd97e1d748', class: "sd-chip-input__reset" }, this.inputValue === '' && index.h("span", { key: '6fbf74a5a77b70789a609d28f5c4b6dd2aab57ef', class: "sd-chip-input__divider" }), this.maxCount != null && (index.h("span", { key: 'fbb21a27bdd2aa38870cfd8d16b7e5293769eaf3', class: "sd-chip-input__max-count" }, "\uCD5C\uB300 ", this.maxCount, "\uAC1C")), this.useReset && this.internalValues.length > 0 && (index.h("sd-text-link", { key: '83626145602b13d7a00ef955a6db59f41c152529', icon: "reset", iconColor: CHIP_INPUT_RESET.iconColor, label: "\uC785\uB825 \uCD08\uAE30\uD654", underline: true, disabled: this.disabled, style: { '--sd-text-link-color': CHIP_INPUT_RESET.labelColor }, onSdClick: this.handleResetInput })))), showDropdown && (index.h("sd-portal", { key: '1682a89b513098f192f776af782aa9ee432574e8', open: showDropdown, parentRef: this.chipInputRef ?? null, viewportPadding: SdChipInput.SUGGESTIONS_VIEWPORT_PADDING, onSdClose: this.closeSuggestions }, index.h("div", { key: '3efb484bd5616e411824f7014a759a34a9e93d8b', class: "sd-chip-input__suggestions", role: "listbox", style: suggestionBoxStyle }, isDropdownLoading && (index.h("div", { key: 'b5b1d5e6db03f6fe60864b6c19e9b2c753468447', class: "sd-chip-input__suggestions-empty", style: suggestionEmptyStyle }, "\uBD88\uB7EC\uC624\uB294 \uC911...")), dropdownItems.map((item, i) => (index.h("div", { key: item, class: {
492
+ 'sd-chip-input__suggestion-item': true,
493
+ 'sd-chip-input__suggestion-item--active': i === this.activeSuggestionIndex,
494
+ }, role: "option", tabIndex: -1, "aria-selected": i === this.activeSuggestionIndex, style: i === this.activeSuggestionIndex
495
+ ? {
496
+ ...suggestionItemStyle,
497
+ background: CHIP_INPUT_SUGGESTIONS.itemBgHover,
498
+ color: CHIP_INPUT_SUGGESTIONS.itemColorHover,
499
+ fontWeight: CHIP_INPUT_SUGGESTIONS.itemFontWeightSelected,
500
+ }
501
+ : suggestionItemStyle, onMouseDown: e => {
502
+ e.preventDefault();
503
+ this.addChip(item);
504
+ } }, item)))))))));
293
505
  }
294
506
  static get watchers() { return {
295
507
  "values": [{
@@ -297,6 +509,12 @@ const SdChipInput = class {
297
509
  }],
298
510
  "errors": [{
299
511
  "errorsChanged": 0
512
+ }],
513
+ "suggestions": [{
514
+ "suggestionsChanged": 0
515
+ }],
516
+ "recommendedItems": [{
517
+ "recommendedItemsChanged": 0
300
518
  }]
301
519
  }; }
302
520
  };
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-DXm0PH2A.js');
4
4
  var component_progress = require('./component.progress-Bmg3vAAy.js');
5
- var system = require('./system-CdAyz3ej.js');
5
+ var system = require('./system-MjrAugX-.js');
6
6
 
7
7
  const spinner = {
8
8
  color: {
@@ -72,7 +72,7 @@ const SdCircleProgress = class {
72
72
  }
73
73
  const c = CIRCLE_PROGRESS_VIEWBOX_SIZE / 2;
74
74
  const showPercent = !this.indeterminate;
75
- return (index.h(index.Host, { key: '46d74c0edb5a5e8cd0472c83efc45a0efaf353b4', style: hostStyle }, index.h("svg", { key: '34117c89eb180370a215807e614ad08f4f72b517', class: "sd-circle-progress", viewBox: `0 0 ${CIRCLE_PROGRESS_VIEWBOX_SIZE} ${CIRCLE_PROGRESS_VIEWBOX_SIZE}`, xmlns: "http://www.w3.org/2000/svg" }, index.h("circle", { key: '08ac6f011b6a4b6744ddcf437b1e0a5b96abfc6e', class: "sd-circle-progress__track", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH }), index.h("circle", { key: '5ae0a53ce10bd5a8b2f316ebd00d3ee28c4336d6', class: "sd-circle-progress__arc", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH, "stroke-linecap": "round", style: arcStyle })), showPercent && (index.h("span", { key: 'fd52ee1947d41b2117c9ea6e4cc9a448799342e3', class: "sd-circle-progress__percent" }, Math.round(this.clampedValue), "%")), this.label && index.h("span", { key: 'a58776c4ef67eb900eba97ff4fed138c8f5e8452', class: "sd-circle-progress__label" }, this.label)));
75
+ return (index.h(index.Host, { key: '35b4dc433f5e2bbd02dc3422b286da179472082f', style: hostStyle }, index.h("svg", { key: 'de1d3e44eccf421491a1107ba234e1562917945b', class: "sd-circle-progress", viewBox: `0 0 ${CIRCLE_PROGRESS_VIEWBOX_SIZE} ${CIRCLE_PROGRESS_VIEWBOX_SIZE}`, xmlns: "http://www.w3.org/2000/svg" }, index.h("circle", { key: 'b0a54a2e155222a416a6bdcb75f4fe54d9de8270', class: "sd-circle-progress__track", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH }), index.h("circle", { key: '6bc314b3fce758d41a3499e9d87b7158b15777a5', class: "sd-circle-progress__arc", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH, "stroke-linecap": "round", style: arcStyle })), showPercent && (index.h("span", { key: '16ec46b178d5f2f2f5ad245703c2f4362b8df261', class: "sd-circle-progress__percent" }, Math.round(this.clampedValue), "%")), this.label && index.h("span", { key: 'c199799d2466c75f91f1bc1f20fdb7e71c64ba0e', class: "sd-circle-progress__label" }, this.label)));
76
76
  }
77
77
  };
78
78
  SdCircleProgress.style = sdCircleProgressCss();
@@ -102,9 +102,9 @@ const SdConfirmModal = class {
102
102
  const type = this.resolvedType;
103
103
  const iconName = CONFIRM_MODAL_ICON_MAP[type];
104
104
  const iconColor = CONFIRM_MODAL_ICON_COLOR[type];
105
- return (index.h("div", { key: '4d3ce0662b2d860a4ed6ae3c8177ae75dae4fb92', class: "sd-confirm-modal" }, index.h("sd-ghost-button", { key: '7c406d59c2470b610a187bf45aa5cd4ab5c6b26b', class: "sd-confirm-modal__close-button", icon: "close", ariaLabel: "close", onClick: () => this.close.emit() }), iconName && (index.h("sd-icon", { key: '10e3d2c8a87a728df4e3f3be7dfab96475738e2b', class: "sd-confirm-modal__icon", name: iconName, size: TITLE_ICON_SIZE, color: iconColor })), index.h("h2", { key: '9cc844c8cefb2fd0dc96871b55fc1c7c6e41c526', class: `sd-confirm-modal__title ${this.titleClass ?? ''}` }, this.modalTitle), index.h("div", { key: 'bbaa81a02c067d66c4cc19cf805b7a6939231311', class: "sd-confirm-modal__body" }, (this.topMessage ?? []).length > 0 && (index.h("div", { key: '31734f096eee6e6a9be770eafa43066c8e763608', class: "sd-confirm-modal__message" }, (this.topMessage ?? []).map(msg => (index.h("p", { class: "sd-confirm-modal__message-text", innerHTML: sanitizeInlineHtml.sanitizeInlineHtml(msg) }))))), this.showContentBox && (index.h("div", { key: 'a10838fb7c7081fdaa85cdaa33f92ef30c00a888', class: "sd-confirm-modal__content-box" }, this.tagContents ? (index.h("div", { class: "sd-confirm-modal__custom-content", ref: el => {
105
+ return (index.h("div", { key: '51fb051b436cc511aeac2f578832a267e12ef3c4', class: "sd-confirm-modal" }, index.h("sd-ghost-button", { key: 'dd9605e312eac8b0602ec558ad5439ea3daa7aa7', class: "sd-confirm-modal__close-button", icon: "close", ariaLabel: "close", onClick: () => this.close.emit() }), iconName && (index.h("sd-icon", { key: '5027ec2d03731338a9197f7b5b910d2adbf83f0e', class: "sd-confirm-modal__icon", name: iconName, size: TITLE_ICON_SIZE, color: iconColor })), index.h("h2", { key: '8456707355cc779c169b56abc16b0949909b829e', class: `sd-confirm-modal__title ${this.titleClass ?? ''}` }, this.modalTitle), index.h("div", { key: 'd11cb38e749f54ce5767ba9b5cca0129df742aca', class: "sd-confirm-modal__body" }, (this.topMessage ?? []).length > 0 && (index.h("div", { key: 'de653458605a9591d7c66d644a143d0f33738b28', class: "sd-confirm-modal__message" }, (this.topMessage ?? []).map(msg => (index.h("p", { class: "sd-confirm-modal__message-text", innerHTML: sanitizeInlineHtml.sanitizeInlineHtml(msg) }))))), this.showContentBox && (index.h("div", { key: '0517e400485551ab21f0f5452af764b5ede7a76d', class: "sd-confirm-modal__content-box" }, this.tagContents ? (index.h("div", { class: "sd-confirm-modal__custom-content", ref: el => {
106
106
  this.customContentRef = el;
107
- } })) : (index.h("slot", { onSlotchange: () => this.syncHasSlottedContent() }, this.tagLabel && (index.h("sd-tag", { name: this.tagPreset ?? 'square_sm_grey', label: this.tagLabel })), this.slotLabel && (index.h("span", { class: "sd-confirm-modal__slot-label" }, this.slotLabel)))))), (this.bottomMessage ?? []).length > 0 && (index.h("div", { key: '540f3bb73aa61a1a2a041eba9a22a198c7772914', class: "sd-confirm-modal__message" }, (this.bottomMessage ?? []).map(msg => (index.h("p", { class: "sd-confirm-modal__message-text", innerHTML: sanitizeInlineHtml.sanitizeInlineHtml(msg) })))))), index.h("div", { key: '1944aeb4d140c779d0af1304160a86c5056335a8', class: "sd-confirm-modal__button" }, this.subButtonLabel && (index.h("sd-button", { key: 'efd463686d98e9d2edc3e1cd7b4f54d8da4fef56', name: SUB_BUTTON_PRESET, label: this.subButtonLabel, onSdClick: () => this.cancel.emit() })), index.h("sd-button", { key: 'b9033fb98acf3de36b7fb3e1969ccf5a7becef39', name: this.resolvedMainButton, label: this.mainButtonLabel ?? '확인', onSdClick: () => this.ok.emit() }))));
107
+ } })) : (index.h("slot", { onSlotchange: () => this.syncHasSlottedContent() }, this.tagLabel && (index.h("sd-tag", { name: this.tagPreset ?? 'square_sm_grey', label: this.tagLabel })), this.slotLabel && (index.h("span", { class: "sd-confirm-modal__slot-label" }, this.slotLabel)))))), (this.bottomMessage ?? []).length > 0 && (index.h("div", { key: 'd542a08caee30ed7eb1d22ed85a51be6e1f6855e', class: "sd-confirm-modal__message" }, (this.bottomMessage ?? []).map(msg => (index.h("p", { class: "sd-confirm-modal__message-text", innerHTML: sanitizeInlineHtml.sanitizeInlineHtml(msg) })))))), index.h("div", { key: '02d012e899969ee55cba43c11d9caeaaff65a348', class: "sd-confirm-modal__button" }, this.subButtonLabel && (index.h("sd-button", { key: 'fd50d151e515646e5bef5658a1b05b2e26b21461', name: SUB_BUTTON_PRESET, label: this.subButtonLabel, onSdClick: () => this.cancel.emit() })), index.h("sd-button", { key: '0c2092edf0866a8b1f4f432b176d78eedd9655d6', name: this.resolvedMainButton, label: this.mainButtonLabel ?? '확인', onSdClick: () => this.ok.emit() }))));
108
108
  }
109
109
  };
110
110
  SdConfirmModal.style = sdConfirmModalCss();
@@ -188,7 +188,7 @@ const SdLoadingModal = class {
188
188
  '--sd-loading-modal-width': this.toCssSize(this.width) ?? `${LOADING_MODAL_LAYOUT.minWidth}px`,
189
189
  '--sd-loading-modal-height': this.toCssSize(this.height) ?? `${LOADING_MODAL_LAYOUT.minHeight}px`,
190
190
  };
191
- return (index.h(index.Host, { key: '17636253239532d90e596f20d84795fe2e65508d', style: hostStyle }, index.h("div", { key: '2f925afceca4102049d7876ab4d1e33fa1ef5ef7', class: "sd-loading-modal" }, index.h("div", { key: '0598cff340210ca9ec5e28fb1992cbbc1b8e5a06', class: "sd-loading-modal__content" }, this.resolvedState === 'loading' ? (this.progress !== undefined ? (index.h("sd-circle-progress", { value: this.progress })) : (index.h("sd-circle-progress", { indeterminate: true }))) : (index.h("sd-icon", { class: "sd-loading-modal__icon", name: "warningOutline", size: LOADING_MODAL_LAYOUT.contentSize, color: LOADING_MODAL_COLORS.errorIcon }))), index.h("div", { key: '3d699238c19ee66fd3afc72194133a865501cc08', class: "sd-loading-modal__message-wrapper" }, Array.isArray(this.resolvedMessage) ? (this.resolvedMessage.map(message => (index.h("p", { class: "sd-loading-modal__message" }, message)))) : (index.h("p", { class: "sd-loading-modal__message" }, this.resolvedMessage))), this.useButton && (index.h("div", { key: 'd454a168360cd23a3e71482d67ee81d8eabdec58', class: "sd-loading-modal__button" }, index.h("sd-button", { key: '0aa26dc830d1c4827f2ee0ca0bfdf4bb8cd2c9f5', name: LOADING_MODAL_BUTTON_PRESET, label: this.resolvedButtonLabel, onSdClick: this.handleClick }))))));
191
+ return (index.h(index.Host, { key: 'f40dcf4fa7e2ee7b4023be11be2b9361ec167610', style: hostStyle }, index.h("div", { key: '02bab8da4e09156340e8e9badef25755b57193d5', class: "sd-loading-modal" }, index.h("div", { key: '776833f7f85a5587dda59fe75e36ebb4b9109c3e', class: "sd-loading-modal__content" }, this.resolvedState === 'loading' ? (this.progress !== undefined ? (index.h("sd-circle-progress", { value: this.progress })) : (index.h("sd-circle-progress", { indeterminate: true }))) : (index.h("sd-icon", { class: "sd-loading-modal__icon", name: "warningOutline", size: LOADING_MODAL_LAYOUT.contentSize, color: LOADING_MODAL_COLORS.errorIcon }))), index.h("div", { key: '4bb9e434a4a2d6be6dbbe2ed4e89563bf7278c65', class: "sd-loading-modal__message-wrapper" }, Array.isArray(this.resolvedMessage) ? (this.resolvedMessage.map(message => (index.h("p", { class: "sd-loading-modal__message" }, message)))) : (index.h("p", { class: "sd-loading-modal__message" }, this.resolvedMessage))), this.useButton && (index.h("div", { key: '5da761513fdc38e5e646f72f75072e25d5313384', class: "sd-loading-modal__button" }, index.h("sd-button", { key: '2bf9beb84ab4a6c1e6793db453e04b947c432d13', name: LOADING_MODAL_BUTTON_PRESET, label: this.resolvedButtonLabel, onSdClick: this.handleClick }))))));
192
192
  }
193
193
  };
194
194
  SdLoadingModal.style = sdLoadingModalCss();
@@ -106,9 +106,9 @@ const SdDatePicker = class {
106
106
  '--sd-system-color-field-border-focus': sdDatePicker_config.DATEPICKER_COLORS.border.focus,
107
107
  '--sd-system-color-field-bg-default': sdDatePicker_config.DATEPICKER_COLORS.bg.default,
108
108
  };
109
- return (index.h("sd-field", { key: 'baa957e5534b6587da2ef067ecad4a0934693800', 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, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("div", { key: '652f9f5c6bd5c6ee58f3c89eee45325a98234ac0', class: "sd-date-picker", ref: el => {
109
+ return (index.h("sd-field", { key: '9e1e5cb7419027db803248a657d0d134be049637', 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, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("div", { key: 'fbd9adeaa08d19cac34b045aba2b3fbb8d4adc8c', class: "sd-date-picker", ref: el => {
110
110
  this.triggerRef = el;
111
- } }, index.h("sd-date-picker-trigger", { key: '7b0f81badbcf7ca283afd274b4572e4a6eaa590b', displayText: this.value ?? '', placeholder: this.placeholder, disabled: this.disabled, size: this.size, onSdTriggerClick: this.handleTriggerClick })), (this.isOpen || this.isAnimatingOut) && (index.h("sd-portal", { key: '65fbe892e4cdd9d643b5000d69220b5e28972902', open: this.isOpen, parentRef: this.triggerRef, onSdClose: () => this.closeDropdown() }, index.h("sd-calendar", { key: 'e9187264f336295907f1d5574810df4a07a0f114', elevated: true, value: this.value, selectable: this.selectable, onSdUpdate: this.handleSelect, onSdViewChange: this.handleViewChange })))));
111
+ } }, index.h("sd-date-picker-trigger", { key: 'd51161c4b1eedcfd90832c9b6d049559ff5df08b', displayText: this.value ?? '', placeholder: this.placeholder, disabled: this.disabled, size: this.size, onSdTriggerClick: this.handleTriggerClick })), (this.isOpen || this.isAnimatingOut) && (index.h("sd-portal", { key: 'd6588d3991eff39eb717d4211b38d68f093aace5', open: this.isOpen, parentRef: this.triggerRef, onSdClose: () => this.closeDropdown() }, index.h("sd-calendar", { key: '0dc6a8074fcfa63630aab7f0b126caa9f4c7b234', elevated: true, value: this.value, selectable: this.selectable, onSdUpdate: this.handleSelect, onSdViewChange: this.handleViewChange })))));
112
112
  }
113
113
  static get watchers() { return {
114
114
  "isOpen": [{
@@ -651,12 +651,12 @@ const SdInput = class {
651
651
  '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
652
652
  '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
653
653
  };
654
- return (index.h("sd-field", { key: 'fce402fae267b5700501e44935f23bebc28efb62', 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, readonly: this.readonly, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("label", { key: 'f7d8f95cf5ee38a7aa2e44940ba39b9eb001064c', class: "sd-input__content" }, index.h("slot", { key: '23f1f770a268a0798293420ce0df9e5cc94e07b2', name: "prefix" }), index.h("input", { key: 'b8c041cc4a8761cf1cf93a8d1af139cd7720d2d8', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : (this.type ?? 'text'), value: this.internalValue || '', placeholder: this.placeholder ?? '입력해 주세요.', disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, autocomplete: this.autocomplete || undefined, maxlength: this.maxlength, minlength: this.minlength, inputmode: this.inputmode, enterkeyhint: this.enterkeyhint, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), index.h("slot", { key: '5a288d50726b21c156da480937b9759e6c76d33a', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && !this.readonly && (index.h("sd-ghost-button", { key: 'b5315624a6fd5fdcb70526b1abea4fbac83641c1', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
654
+ return (index.h("sd-field", { key: '64e7a3ba5e223341336248ba31e621b4416987fd', 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, readonly: this.readonly, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("label", { key: 'b66e286c35cc14c1eb02badcaaff24b38ff0a7b3', class: "sd-input__content" }, index.h("slot", { key: 'dc8b900eb2b38c18b85663bc930e810be77bdbd7', name: "prefix" }), index.h("input", { key: '36d35464338838aaaeff6f728020241d33a493ec', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : (this.type ?? 'text'), value: this.internalValue || '', placeholder: this.placeholder ?? '입력해 주세요.', disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, autocomplete: this.autocomplete || undefined, maxlength: this.maxlength, minlength: this.minlength, inputmode: this.inputmode, enterkeyhint: this.enterkeyhint, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), index.h("slot", { key: '4f30d4a59794c0692f367d41af4311e191c5427b', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && !this.readonly && (index.h("sd-ghost-button", { key: '247da41512f20d8e562f345b08bd5bc13486734b', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
655
655
  if (this.disabled || this.readonly)
656
656
  return;
657
657
  this.internalValue = '';
658
658
  await this.formField?.sdValidate();
659
- } })), this.type === 'password' && (index.h("sd-ghost-button", { key: '5ae70d65c531db0bc57d17f85c328a275f7aab2b', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled || this.readonly, class: "sd-input__password-icon", onClick: () => {
659
+ } })), this.type === 'password' && (index.h("sd-ghost-button", { key: '70c596ef0072bf369bd59e2c58d0a6f8c6fd1b11', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled || this.readonly, class: "sd-input__password-icon", onClick: () => {
660
660
  if (this.disabled || this.readonly)
661
661
  return;
662
662
  this.passwordVisible = !this.passwordVisible;
@@ -1042,15 +1042,15 @@ const SdNumberInput = class {
1042
1042
  '--sd-textinput-input-hint-typography-line-height': `${NUMBER_INPUT_HINT.typography.lineHeight}px`,
1043
1043
  '--sd-textinput-input-contents-gap': `${NUMBER_INPUT_CONTENTS_GAP}px`,
1044
1044
  };
1045
- return (index.h("sd-field", { key: '53c6935bbf98ed1eb0f28d6bed675ea369b0b2bc', 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, readonly: this.readonly, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("div", { key: '8f0da8b179cd3946d625ab6b525a2ffd614a5333', class: {
1045
+ return (index.h("sd-field", { key: 'ad212dcbaf8e19cac070e6bdfa292ca614480fbc', 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, readonly: this.readonly, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("div", { key: 'b9c403df166e2f05f815ebf3851b6517b8afbd2a', class: {
1046
1046
  'sd-number-input__content': true,
1047
1047
  'sd-number-input__content--no-stepper': !this.useButton,
1048
- } }, this.useButton && (index.h("button", { key: '1be42c16d5e671c567d4768f505c2c17c50f1b60', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--decrement", disabled: this.isDecrementDisabled(), onClick: this.handleDecrement, tabindex: -1 }, index.h("sd-icon", { key: 'dc074328208c8da2ee43ea2cb03dbc838b7d46c9', name: "minus", size: iconSize, color: this.isDecrementDisabled()
1048
+ } }, this.useButton && (index.h("button", { key: '206f45b19bf8dd56b65ff55fb65d760e36d80ba7', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--decrement", disabled: this.isDecrementDisabled(), onClick: this.handleDecrement, tabindex: -1 }, index.h("sd-icon", { key: 'd39cadc9a83cf7a0170144b8734a90f71d7aa9d1', name: "minus", size: iconSize, color: this.isDecrementDisabled()
1049
1049
  ? NUMBER_INPUT_STEPPER.icon.disabled
1050
- : NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && index.h("span", { key: '84896d40d79e936480052ab45d618cd73550ee87', class: "sd-number-input__prefix" }, this.inputPrefix), index.h("input", { key: 'f2c8995b6c059c2a4130018b2ff0c7eabcd7abfb', name: this.name, ref: el => (this.nativeEl = el), class: `sd-number-input__native ${this.inputClass}`, type: "text", inputMode: "numeric", value: this.displayValue, placeholder: this.placeholder ?? '입력해 주세요.', disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, style: {
1050
+ : NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && index.h("span", { key: '0c97309540467d56ee3415001df7a027ba581a3d', class: "sd-number-input__prefix" }, this.inputPrefix), index.h("input", { key: '9462f0c7ac028c038894ad184c7cf052e366e48c', name: this.name, ref: el => (this.nativeEl = el), class: `sd-number-input__native ${this.inputClass}`, type: "text", inputMode: "numeric", value: this.displayValue, placeholder: this.placeholder ?? '입력해 주세요.', disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, style: {
1051
1051
  textAlign: this.useButton ? 'center' : 'right',
1052
1052
  ...this.inputStyle,
1053
- } }), this.inputSuffix && index.h("span", { key: 'd6b1ca9f5991f1b2382dd4a35ae4f20832192e3c', class: "sd-number-input__suffix" }, this.inputSuffix), this.useButton && (index.h("button", { key: '56a59f94ca27e8ef4255cabdd5fe003c602bb8d6', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--increment", disabled: this.isIncrementDisabled(), onClick: this.handleIncrement, tabindex: -1 }, index.h("sd-icon", { key: '1b8fca91e893b5ade47ed63db4d4d54933c94e53', name: "add", size: iconSize, color: this.isIncrementDisabled()
1053
+ } }), this.inputSuffix && index.h("span", { key: 'fdd4f4e680fe5de55cb68c848615ec6b00f00430', class: "sd-number-input__suffix" }, this.inputSuffix), this.useButton && (index.h("button", { key: '8cdfcc46a010fb0f503b48c34290fd096403524a', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--increment", disabled: this.isIncrementDisabled(), onClick: this.handleIncrement, tabindex: -1 }, index.h("sd-icon", { key: 'ec8826370cd9d8c6054ca6ab216de6baa62d90db', name: "add", size: iconSize, color: this.isIncrementDisabled()
1054
1054
  ? NUMBER_INPUT_STEPPER.icon.disabled
1055
1055
  : NUMBER_INPUT_STEPPER.icon.default }))))));
1056
1056
  }
@@ -1232,7 +1232,7 @@ const SdTextarea = class {
1232
1232
  '--sd-system-size-field-sm-height': 'auto',
1233
1233
  '--sd-system-radius-field-sm': `${TEXTAREA_TOKENS.radius}px`,
1234
1234
  };
1235
- return (index.h("sd-field", { key: '2a1cd03e4f0fa5457b3164f1b6b71d808633414c', 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, readonly: this.readonly, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("div", { key: 'b4e25ced8e583ed3d6e8a6026db0d3a2f198acb4', class: "sd-textarea__content" }, index.h("textarea", { key: '4faeceee380a7ab9a4ff337d16f46c4d7f42fa50', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder ?? '입력해 주세요.', disabled: this.disabled, readOnly: this.readonly, autofocus: this.autoFocus, maxLength: this.maxLength, rows: this.rows, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.textareaStyle }))));
1235
+ return (index.h("sd-field", { key: '526fc1a73f13e5170125a570c5a1c8459931aa25', 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, readonly: this.readonly, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("div", { key: 'e3c52fccc564a2488eb9e0d9399437b76e919c6a', class: "sd-textarea__content" }, index.h("textarea", { key: '3253873da3b9591e64a6dfd170c8d9ccb4861599', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder ?? '입력해 주세요.', disabled: this.disabled, readOnly: this.readonly, autofocus: this.autoFocus, maxLength: this.maxLength, rows: this.rows, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.textareaStyle }))));
1236
1236
  }
1237
1237
  static get watchers() { return {
1238
1238
  "value": [{
@@ -267,7 +267,7 @@ const SdDateRangePickerCalendar = class {
267
267
  '--range-panel-gap': `${RANGE_LAYOUT.panelGap}px`,
268
268
  '--range-divider': RANGE_LAYOUT.divider,
269
269
  };
270
- return (index.h(index.Fragment, { key: '91ba95cf0786d59363ac6b72e9c8f91d1802feee' }, index.h("div", { key: '98f66737a15e5c3129dd20f674736115a4fad42e', class: "sd-date-range-picker-calendar", style: cssVars }, this.renderYearNav(), index.h("div", { key: 'd9f326b485864484ed786cb172d3bd33136987ea', class: "sd-date-range-picker-calendar__panels" }, this.renderPanel(this.currentYear, this.currentMonth, true), index.h("span", { key: 'df7d835ac0da6788f08c7963ed04ed98b7fd6091', class: "sd-date-range-picker-calendar__divider", "aria-hidden": "true" }), this.renderPanel(this.rightYear, this.rightMonth, false)))));
270
+ return (index.h(index.Fragment, { key: '71f25effececd0b83d9b33201230dc615ba87a30' }, index.h("div", { key: 'f075474fb0be9f8e8562a013532b3cdbaadee069', class: "sd-date-range-picker-calendar", style: cssVars }, this.renderYearNav(), index.h("div", { key: '4dfa1d65b971f7d80f0799482c8ce41522200a94', class: "sd-date-range-picker-calendar__panels" }, this.renderPanel(this.currentYear, this.currentMonth, true), index.h("span", { key: '20149f97a5115115cc49894383ca7f989ba2b904', class: "sd-date-range-picker-calendar__divider", "aria-hidden": "true" }), this.renderPanel(this.rightYear, this.rightMonth, false)))));
271
271
  }
272
272
  static get watchers() { return {
273
273
  "value": [{
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-DXm0PH2A.js');
4
- var system = require('./system-CdAyz3ej.js');
4
+ var system = require('./system-MjrAugX-.js');
5
5
 
6
6
  const DIVIDER_COLORS = {
7
7
  default: system.systemTokens.color.divider.default,
@@ -19,7 +19,7 @@ const SdDivider = class {
19
19
  const hostStyle = {
20
20
  '--sd-divider-color': DIVIDER_COLORS.default,
21
21
  };
22
- return (index.h(index.Host, { key: '8282aae8e5cd26630c54f4347cd26f544672d15d', style: hostStyle }, index.h("hr", { key: '94df7dc7465b05ecad6527da2c008a4ff503f034', "aria-orientation": this.vertical ? 'vertical' : 'horizontal' })));
22
+ return (index.h(index.Host, { key: '886ca68599a925678d7c598daeff3bf653db513d', style: hostStyle }, index.h("hr", { key: 'e213413f041cda5d18a74f8c0225c840d92f7dac', "aria-orientation": this.vertical ? 'vertical' : 'horizontal' })));
23
23
  }
24
24
  };
25
25
  SdDivider.style = sdDividerCss();
@@ -3,7 +3,7 @@
3
3
  var index = require('./index-DXm0PH2A.js');
4
4
  var sanitizeInlineHtml = require('./sanitize-inline-html-CRCAeQ46.js');
5
5
  var sdButton_config = require('./sd-button.config-eTAJM2iW.js');
6
- var system = require('./system-CdAyz3ej.js');
6
+ var system = require('./system-MjrAugX-.js');
7
7
 
8
8
  class DropdownManager {
9
9
  static instance;
@@ -143,6 +143,13 @@ const DROPDOWN_CHEVRON_ICON_SIZE = {
143
143
  sm: 12,
144
144
  md: 16,
145
145
  };
146
+ // 버튼 자체의 min-width (px). split 여부에 따라 chevron 버튼이 추가되므로 별도 값을 지정.
147
+ // TODO: 디자인 토큰으로 관리될 때 대체 예정
148
+ const DROPDOWN_BUTTON_MIN_WIDTH = {
149
+ xs: { default: 44, split: 60 },
150
+ sm: { default: 70, split: 76 },
151
+ md: { default: 100, split: 106 },
152
+ };
146
153
  const DROPDOWN_DISABLED_BACKGROUND = sdButton_config.buttonTokens.button.bg.disabled;
147
154
  const DROPDOWN_DISABLED_TEXT = sdButton_config.buttonTokens.button.text.disabled;
148
155
  const DROPDOWN_DISABLED_ICON = sdButton_config.buttonTokens.button.icon.disabled;
@@ -171,6 +178,7 @@ const SdDropdownButton = class extends BaseDropdownEvent {
171
178
  isAnimatingOut = false;
172
179
  itemIndex = -1;
173
180
  triggerRef;
181
+ splitContainerRef;
174
182
  menuRef;
175
183
  closeAnimationTimer;
176
184
  click;
@@ -349,10 +357,11 @@ const SdDropdownButton = class extends BaseDropdownEvent {
349
357
  return classes.join(' ');
350
358
  }
351
359
  renderDropdown(preset) {
352
- if ((!this.isOpen && !this.isAnimatingOut) || !this.triggerRef)
360
+ const anchorRef = this.split ? this.splitContainerRef : this.triggerRef;
361
+ if ((!this.isOpen && !this.isAnimatingOut) || !anchorRef)
353
362
  return null;
354
- return (index.h("sd-portal", { open: this.isOpen, parentRef: this.triggerRef, onSdClose: this.closeDropdown }, index.h("div", { style: { position: 'absolute', width: '0px', height: '0px' } }, index.h("div", { class: "sd-dropdown-button__menu", role: "menu", ref: el => (this.menuRef = el), style: {
355
- '--sd-dropdown-button-menu-min-width': `${this.triggerRef.offsetWidth}px`,
363
+ return (index.h("sd-portal", { open: this.isOpen, parentRef: anchorRef, onSdClose: this.closeDropdown }, index.h("div", { class: "sd-dropdown-button__menu", role: "menu", ref: el => (this.menuRef = el), style: {
364
+ '--sd-dropdown-button-menu-min-width': `${anchorRef.offsetWidth}px`,
356
365
  '--sd-dropdown-button-menu-item-color': PRESET_MENU_ITEM_COLORS[preset],
357
366
  '--sd-dropdown-button-menu-item-active-bg': PRESET_MENU_ITEM_ACTIVE_BACKGROUNDS[preset],
358
367
  '--sd-dropdown-button-menu-item-active-color': PRESET_MENU_ITEM_ACTIVE_COLORS[preset],
@@ -366,7 +375,7 @@ const SdDropdownButton = class extends BaseDropdownEvent {
366
375
  this.itemIndex = index$1;
367
376
  }
368
377
  } }, item.icon && (index.h("sd-icon", { class: "sd-dropdown-button__menu-item-icon", name: item.icon, size: 12, color: "var(--sd-dropdown-button-menu-item-current-color)" })), index.h("span", { class: "sd-dropdown-button__menu-item-label", innerHTML: sanitizeInlineHtml.sanitizeInlineHtml(item.label) })));
369
- })))));
378
+ }))));
370
379
  }
371
380
  renderChevron(size) {
372
381
  const iconName = this.split ? 'etc' : 'caretDown';
@@ -378,10 +387,11 @@ const SdDropdownButton = class extends BaseDropdownEvent {
378
387
  render() {
379
388
  const { config, preset } = this.resolvedConfig;
380
389
  const triggerStyle = this.getTriggerStyle(config, preset);
390
+ const minWidth = DROPDOWN_BUTTON_MIN_WIDTH[config.size];
381
391
  if (this.split) {
382
- return (index.h("div", { class: "sd-dropdown-button sd-dropdown-button--split" }, index.h("button", { type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen, 'label'), disabled: this.disabled, onClick: this.handleButtonClick, style: triggerStyle }, index.h("span", { class: "sd-dropdown-button__trigger-label" }, this.label)), index.h("button", { type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen, 'chevron'), disabled: this.disabled, "aria-haspopup": "menu", "aria-expanded": String(this.isOpen), "aria-label": "dropdown toggle", onClick: this.toggleDropdown, ref: el => (this.triggerRef = el), style: triggerStyle }, this.renderChevron(config.size)), this.renderDropdown(preset)));
392
+ return (index.h("div", { class: "sd-dropdown-button sd-dropdown-button--split", ref: el => (this.splitContainerRef = el), style: { minWidth: `${minWidth.split}px` } }, index.h("button", { type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen, 'label'), disabled: this.disabled, onClick: this.handleButtonClick, style: triggerStyle }, index.h("span", { class: "sd-dropdown-button__trigger-label" }, this.label)), index.h("button", { type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen, 'chevron'), disabled: this.disabled, "aria-haspopup": "menu", "aria-expanded": String(this.isOpen), "aria-label": "dropdown toggle", onClick: this.toggleDropdown, ref: el => (this.triggerRef = el), style: triggerStyle }, this.renderChevron(config.size)), this.renderDropdown(preset)));
383
393
  }
384
- return (index.h("div", { class: "sd-dropdown-button" }, index.h("button", { type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen), disabled: this.disabled, "aria-haspopup": "menu", "aria-expanded": String(this.isOpen), onClick: this.toggleDropdown, ref: el => (this.triggerRef = el), style: triggerStyle }, index.h("span", { class: "sd-dropdown-button__trigger-label" }, this.label), this.renderChevron(config.size)), this.renderDropdown(preset)));
394
+ return (index.h("div", { class: "sd-dropdown-button" }, index.h("button", { type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen), disabled: this.disabled, "aria-haspopup": "menu", "aria-expanded": String(this.isOpen), onClick: this.toggleDropdown, ref: el => (this.triggerRef = el), style: { ...triggerStyle, minWidth: `${minWidth.default}px` } }, index.h("span", { class: "sd-dropdown-button__trigger-label" }, this.label), this.renderChevron(config.size)), this.renderDropdown(preset)));
385
395
  }
386
396
  static get watchers() { return {
387
397
  "isOpen": [{