@sellmate/design-system 1.0.78 → 1.1.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 (464) hide show
  1. package/dist/cjs/component.table-B7brIpIQ.js +56 -0
  2. package/dist/cjs/design-system.cjs.js +2 -2
  3. package/dist/cjs/{index--F2wGuAi.js → index-BlxrCRYi.js} +1 -1
  4. package/dist/cjs/index.cjs.js +4 -4
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/{resolveColor-LhfOKtTZ.js → resolveColor-B0hzQNLG.js} +2 -2
  7. package/dist/cjs/sd-action-modal.cjs.entry.js +3 -3
  8. package/dist/cjs/sd-badge.cjs.entry.js +2 -3
  9. package/dist/cjs/sd-barcode-input.cjs.entry.js +3 -3
  10. package/dist/cjs/{sd-button-v2.config-CnqCQQMi.js → sd-button.config-DH08UNfl.js} +114 -28
  11. package/dist/cjs/{sd-button-v2_2.cjs.entry.js → sd-button_2.cjs.entry.js} +101 -85
  12. package/dist/cjs/sd-calendar.cjs.entry.js +15 -15
  13. package/dist/cjs/sd-card.cjs.entry.js +2 -2
  14. package/dist/cjs/sd-checkbox.cjs.entry.js +4 -4
  15. package/dist/cjs/sd-chip.cjs.entry.js +2 -2
  16. package/dist/cjs/sd-circle-progress.cjs.entry.js +3 -3
  17. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +19 -11
  18. package/dist/cjs/sd-date-box.cjs.entry.js +4 -4
  19. package/dist/cjs/{sd-date-picker-calendar.cjs.entry.js → sd-date-picker-calendar_2.cjs.entry.js} +51 -3
  20. package/dist/cjs/{sd-date-picker.config-CRgCT5dn.js → sd-date-picker.config-CjvrFpYK.js} +1 -2
  21. package/dist/cjs/sd-date-picker_7.cjs.entry.js +1230 -0
  22. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +3 -3
  23. package/dist/cjs/sd-dropdown-button.cjs.entry.js +28 -27
  24. package/dist/cjs/{sd-button_4.cjs.entry.js → sd-field_3.cjs.entry.js} +26 -82
  25. package/dist/cjs/sd-form.cjs.entry.js +2 -2
  26. package/dist/cjs/sd-ghost-button.cjs.entry.js +12 -10
  27. package/dist/cjs/sd-guide.cjs.entry.js +9 -9
  28. package/dist/cjs/sd-key-value-table.cjs.entry.js +230 -0
  29. package/dist/cjs/sd-linear-progress.cjs.entry.js +3 -3
  30. package/dist/cjs/sd-loading-container.cjs.entry.js +3 -3
  31. package/dist/cjs/sd-modal-container.cjs.entry.js +1 -1
  32. package/dist/cjs/{sd-pagination_5.cjs.entry.js → sd-pagination_4.cjs.entry.js} +34 -296
  33. package/dist/cjs/sd-popover.cjs.entry.js +17 -10
  34. package/dist/cjs/sd-popup.cjs.entry.js +112 -0
  35. package/dist/cjs/sd-portal.cjs.entry.js +2 -2
  36. package/dist/cjs/sd-radio-button.cjs.entry.js +4 -4
  37. package/dist/cjs/sd-radio.cjs.entry.js +2 -2
  38. package/dist/cjs/sd-select-list-item_2.cjs.entry.js +155 -0
  39. package/dist/cjs/sd-select.config-B19ptCT2.js +178 -0
  40. package/dist/cjs/{sd-select-list-item_4.cjs.entry.js → sd-select_3.cjs.entry.js} +286 -318
  41. package/dist/cjs/sd-switch.cjs.entry.js +2 -2
  42. package/dist/cjs/sd-table.cjs.entry.js +40 -23
  43. package/dist/cjs/sd-table.config-CDyioyE2.js +65 -0
  44. package/dist/cjs/sd-tabs.cjs.entry.js +2 -2
  45. package/dist/cjs/sd-tag.cjs.entry.js +49 -14
  46. package/dist/cjs/sd-td.cjs.entry.js +2 -2
  47. package/dist/cjs/sd-text-link.cjs.entry.js +8 -5
  48. package/dist/cjs/sd-toast-container.cjs.entry.js +5 -5
  49. package/dist/cjs/sd-toast.cjs.entry.js +35 -5
  50. package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
  51. package/dist/cjs/{system-DpTN1vBC.js → system-VmZRYp6V.js} +4 -2
  52. package/dist/cjs/{tooltipArrow-D1-wcNm1.js → tooltipArrow-N6nQ1QT-.js} +1 -1
  53. package/dist/collection/collection-manifest.json +4 -3
  54. package/dist/collection/components/assets/CheckboxCheck.js +5 -0
  55. package/dist/collection/components/assets/CheckboxIndeterminate.js +5 -0
  56. package/dist/collection/components/assets/index.js +4 -0
  57. package/dist/collection/components/sd-action-modal/sd-action-modal.css +1 -1
  58. package/dist/collection/components/sd-action-modal/sd-action-modal.js +7 -7
  59. package/dist/collection/components/sd-badge/sd-badge.config.js +10 -1
  60. package/dist/collection/components/sd-badge/sd-badge.js +1 -22
  61. package/dist/collection/components/sd-barcode-input/sd-barcode-input.js +4 -4
  62. package/dist/collection/components/{sd-button-v2/sd-button-v2.config.js → sd-button/sd-button.config.js} +1 -1
  63. package/dist/collection/components/sd-button/sd-button.css +47 -93
  64. package/dist/collection/components/sd-button/sd-button.js +99 -173
  65. package/dist/collection/components/sd-calendar/sd-calendar.js +14 -14
  66. package/dist/collection/components/sd-card/sd-card.js +1 -1
  67. package/dist/collection/components/sd-checkbox/sd-checkbox.js +3 -3
  68. package/dist/collection/components/sd-chip/sd-chip.js +1 -1
  69. package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +1 -1
  70. package/dist/collection/components/sd-confirm-modal/sd-confirm-modal.js +13 -8
  71. package/dist/collection/components/sd-date-box/sd-date-box.js +3 -3
  72. package/dist/collection/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.js +1 -1
  73. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.css +1 -1
  74. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +7 -5
  75. package/dist/collection/components/sd-date-picker/sd-date-picker.js +4 -4
  76. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +1 -1
  77. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +4 -4
  78. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.config.js +1 -1
  79. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +13 -11
  80. package/dist/collection/components/sd-field/sd-field.css +6 -2
  81. package/dist/collection/components/sd-field/sd-field.js +30 -5
  82. package/dist/collection/components/sd-file-picker/sd-file-picker.js +4 -4
  83. package/dist/collection/components/sd-floating-portal/sd-floating-portal.css +1 -3
  84. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +3 -3
  85. package/dist/collection/components/sd-form/sd-form.js +1 -1
  86. package/dist/collection/components/sd-ghost-button/sd-ghost-button.js +12 -10
  87. package/dist/collection/components/sd-guide/sd-guide.css +8 -172
  88. package/dist/collection/components/sd-guide/sd-guide.js +6 -4
  89. package/dist/collection/components/sd-icon/sd-icon.js +4 -4
  90. package/dist/collection/components/sd-input/sd-input.css +4 -2
  91. package/dist/collection/components/sd-input/sd-input.js +5 -5
  92. package/dist/collection/components/sd-key-value-table/sd-key-value-table.config.js +36 -0
  93. package/dist/collection/components/sd-key-value-table/sd-key-value-table.css +119 -0
  94. package/dist/collection/components/sd-key-value-table/sd-key-value-table.js +301 -0
  95. package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
  96. package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
  97. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +6 -3
  98. package/dist/collection/components/sd-number-input/sd-number-input.css +7 -0
  99. package/dist/collection/components/sd-number-input/sd-number-input.js +6 -3
  100. package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
  101. package/dist/collection/components/sd-popover/sd-popover.js +128 -35
  102. package/dist/collection/components/sd-popup/sd-popup.config.js +34 -0
  103. package/dist/collection/components/sd-popup/sd-popup.css +73 -0
  104. package/dist/collection/components/sd-popup/sd-popup.js +163 -0
  105. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  106. package/dist/collection/components/sd-radio/sd-radio.js +1 -1
  107. package/dist/collection/components/sd-radio-button/sd-radio-button.js +3 -3
  108. package/dist/collection/components/sd-radio-group/sd-radio-group.js +2 -2
  109. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +2 -2
  110. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.css +4 -4
  111. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +4 -4
  112. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +5 -5
  113. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +2 -2
  114. package/dist/collection/components/sd-select/sd-select.js +5 -5
  115. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  116. package/dist/collection/components/sd-table/sd-table.config.js +2 -2
  117. package/dist/collection/components/sd-table/sd-table.css +8 -8
  118. package/dist/collection/components/sd-table/sd-table.js +54 -18
  119. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +2 -2
  120. package/dist/collection/components/sd-table/sd-td/sd-td.js +1 -1
  121. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +3 -3
  122. package/dist/collection/components/sd-table/sd-tr/sd-tr.css +4 -0
  123. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +21 -3
  124. package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
  125. package/dist/collection/components/sd-tag/sd-tag.config.js +40 -8
  126. package/dist/collection/components/sd-tag/sd-tag.js +9 -6
  127. package/dist/collection/components/sd-text-link/sd-text-link.css +1 -0
  128. package/dist/collection/components/sd-text-link/sd-text-link.js +5 -4
  129. package/dist/collection/components/sd-textarea/sd-textarea.css +3 -0
  130. package/dist/collection/components/sd-textarea/sd-textarea.js +2 -2
  131. package/dist/collection/components/sd-toast/sd-toast.config.js +14 -0
  132. package/dist/collection/components/sd-toast/sd-toast.css +3 -5
  133. package/dist/collection/components/sd-toast/sd-toast.js +52 -5
  134. package/dist/collection/components/sd-toast-container/sd-toast-container.js +4 -4
  135. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  136. package/dist/collection/components/sd-tooltip/sd-tooltip.js +77 -30
  137. package/dist/collection/utils/color/resolveColor.js +2 -2
  138. package/dist/collection/utils/dropdown-manager.js +1 -1
  139. package/dist/collection/utils/toast.js +4 -4
  140. package/dist/components/index.js +1 -1
  141. package/dist/components/p--t9jBTYS.js +1 -0
  142. package/dist/components/p-At6nBeyO.js +1 -0
  143. package/dist/components/p-B1MabGRR.js +1 -0
  144. package/dist/components/{p-CeVMl_M9.js → p-B73VhbYi.js} +1 -1
  145. package/dist/components/p-BDQQllAo.js +1 -0
  146. package/dist/components/p-BDr27lvk.js +1 -0
  147. package/dist/components/p-BPsOJlCP.js +1 -0
  148. package/dist/components/p-BQ6at17Y.js +1 -0
  149. package/dist/components/p-BW_sBt7X.js +1 -0
  150. package/dist/components/p-BX3TJuQY.js +1 -0
  151. package/dist/components/p-BeK8amzx.js +1 -0
  152. package/dist/components/{p-Bvq0Vpln.js → p-BfkuCNCI.js} +1 -1
  153. package/dist/components/p-Bm_T3qE0.js +1 -0
  154. package/dist/components/{p-DegvQLTF.js → p-BnzK4uU4.js} +1 -1
  155. package/dist/components/{p-q0VWISKA.js → p-BqkJ0rZv.js} +1 -1
  156. package/dist/components/p-C4PmGpW8.js +1 -0
  157. package/dist/components/{p-Nvx13YlG.js → p-C9CszVFl.js} +1 -1
  158. package/dist/components/p-CGBnxqG2.js +1 -0
  159. package/dist/components/p-CGQWERwE.js +1 -0
  160. package/dist/components/{p-DkJqVXpD.js → p-CT3dfy3K.js} +1 -1
  161. package/dist/components/p-CZmKBmKx.js +1 -0
  162. package/dist/components/p-CnarDyZi.js +1 -0
  163. package/dist/components/p-Cr2ghUra.js +1 -0
  164. package/dist/components/{p-BStczlLa.js → p-Cspm6LxP.js} +1 -1
  165. package/dist/components/p-Cx3jXw9J.js +1 -0
  166. package/dist/components/{p-Dcc2Vm6z.js → p-D5TRyquv.js} +1 -1
  167. package/dist/components/p-D8WAP9T3.js +1 -0
  168. package/dist/components/p-DG-4Ifco.js +1 -0
  169. package/dist/components/{p-TwGlKfsC.js → p-DG45uNxd.js} +1 -1
  170. package/dist/components/p-DdLntfiw.js +1 -0
  171. package/dist/components/{p-BJsHakU2.js → p-DfXAgw0E.js} +1 -1
  172. package/dist/components/p-Dr1AMbBj.js +1 -0
  173. package/dist/components/p-GBlVDmy4.js +1 -0
  174. package/dist/components/p-MMkRcTBd.js +1 -0
  175. package/dist/components/p-MQTl8fGT.js +1 -0
  176. package/dist/components/p-ZstG0XdT.js +1 -0
  177. package/dist/components/p-h7eBUL4i.js +1 -0
  178. package/dist/components/p-lyB7zSp-.js +1 -0
  179. package/dist/components/{p-D1DpOp6M.js → p-oIM6jNZe.js} +1 -1
  180. package/dist/components/p-oKHZl8yu.js +1 -0
  181. package/dist/components/p-ofkgu5aS.js +1 -0
  182. package/dist/components/sd-action-modal.js +1 -1
  183. package/dist/components/sd-badge.js +1 -1
  184. package/dist/components/sd-barcode-input.js +1 -1
  185. package/dist/components/sd-button.js +1 -1
  186. package/dist/components/sd-calendar.js +1 -1
  187. package/dist/components/sd-card.js +1 -1
  188. package/dist/components/sd-checkbox.js +1 -1
  189. package/dist/components/sd-chip.js +1 -1
  190. package/dist/components/sd-circle-progress.js +1 -1
  191. package/dist/components/sd-confirm-modal.js +1 -1
  192. package/dist/components/sd-date-box.js +1 -1
  193. package/dist/components/sd-date-picker-calendar.js +1 -1
  194. package/dist/components/sd-date-picker-trigger.js +1 -1
  195. package/dist/components/sd-date-picker.js +1 -1
  196. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  197. package/dist/components/sd-date-range-picker.js +1 -1
  198. package/dist/components/sd-dropdown-button.js +1 -1
  199. package/dist/components/sd-field.js +1 -1
  200. package/dist/components/sd-file-picker.js +1 -1
  201. package/dist/components/sd-floating-portal.js +1 -1
  202. package/dist/components/sd-form.js +1 -1
  203. package/dist/components/sd-ghost-button.js +1 -1
  204. package/dist/components/sd-guide.js +1 -1
  205. package/dist/components/sd-icon.js +1 -1
  206. package/dist/components/sd-input.js +1 -1
  207. package/dist/components/sd-key-value-table.d.ts +11 -0
  208. package/dist/components/sd-key-value-table.js +1 -0
  209. package/dist/components/sd-linear-progress.js +1 -1
  210. package/dist/components/sd-loading-container.js +1 -1
  211. package/dist/components/sd-loading-modal.js +1 -1
  212. package/dist/components/sd-modal-container.js +1 -1
  213. package/dist/components/sd-number-input.js +1 -1
  214. package/dist/components/sd-pagination.js +1 -1
  215. package/dist/components/sd-popover.js +1 -1
  216. package/dist/components/{sd-button-v2.d.ts → sd-popup.d.ts} +4 -4
  217. package/dist/components/sd-popup.js +1 -0
  218. package/dist/components/sd-portal.js +1 -1
  219. package/dist/components/sd-radio-button.js +1 -1
  220. package/dist/components/sd-radio-group.js +1 -1
  221. package/dist/components/sd-radio.js +1 -1
  222. package/dist/components/sd-select-list-item-search.js +1 -1
  223. package/dist/components/sd-select-list-item.js +1 -1
  224. package/dist/components/sd-select-listbox.js +1 -1
  225. package/dist/components/sd-select-trigger.js +1 -1
  226. package/dist/components/sd-select.js +1 -1
  227. package/dist/components/sd-switch.js +1 -1
  228. package/dist/components/sd-table.js +1 -1
  229. package/dist/components/sd-tabs.js +1 -1
  230. package/dist/components/sd-tag.js +1 -1
  231. package/dist/components/sd-tbody.js +1 -1
  232. package/dist/components/sd-td.js +1 -1
  233. package/dist/components/sd-text-link.js +1 -1
  234. package/dist/components/sd-textarea.js +1 -1
  235. package/dist/components/sd-thead.js +1 -1
  236. package/dist/components/sd-toast-container.js +1 -1
  237. package/dist/components/sd-toast.js +1 -1
  238. package/dist/components/sd-toggle.js +1 -1
  239. package/dist/components/sd-tooltip.js +1 -1
  240. package/dist/components/sd-tr.js +1 -1
  241. package/dist/design-system/design-system.css +1 -1
  242. package/dist/design-system/design-system.esm.js +1 -1
  243. package/dist/design-system/index.esm.js +1 -1
  244. package/dist/design-system/p-02289728.entry.js +1 -0
  245. package/dist/design-system/p-17d66d85.entry.js +1 -0
  246. package/dist/design-system/p-18466728.entry.js +1 -0
  247. package/dist/design-system/p-1bb86d69.entry.js +1 -0
  248. package/dist/design-system/p-20a50702.entry.js +1 -0
  249. package/dist/design-system/p-21874054.entry.js +1 -0
  250. package/dist/design-system/p-282cbefa.entry.js +1 -0
  251. package/dist/design-system/p-29ed11e5.entry.js +1 -0
  252. package/dist/design-system/p-328fae12.entry.js +1 -0
  253. package/dist/design-system/p-35dce399.entry.js +1 -0
  254. package/dist/design-system/{p-1cf87e87.entry.js → p-39ff56b4.entry.js} +1 -1
  255. package/dist/design-system/p-3cb712a6.entry.js +1 -0
  256. package/dist/design-system/{p-f522c91d.entry.js → p-4e2953eb.entry.js} +1 -1
  257. package/dist/design-system/p-7610153d.entry.js +1 -0
  258. package/dist/design-system/{p-25a08e98.entry.js → p-7722ddeb.entry.js} +1 -1
  259. package/dist/design-system/{p-6bfe3612.entry.js → p-7882e388.entry.js} +1 -1
  260. package/dist/design-system/p-7bfa0cf9.entry.js +1 -0
  261. package/dist/design-system/p-824ecfb5.entry.js +1 -0
  262. package/dist/design-system/p-9a04b341.entry.js +1 -0
  263. package/dist/design-system/p-BDjErF_K.js +1 -0
  264. package/dist/design-system/p-BQ6at17Y.js +1 -0
  265. package/dist/design-system/p-CGQWERwE.js +1 -0
  266. package/dist/design-system/p-CLCoul8o.js +2 -0
  267. package/dist/design-system/{p-BxPyZJaz.js → p-Ce0cmS4R.js} +1 -1
  268. package/dist/design-system/p-CxOCk_ge.js +1 -0
  269. package/dist/design-system/{p-DnCBBIoq.js → p-Dmf0PYdM.js} +1 -1
  270. package/dist/design-system/p-GBlVDmy4.js +1 -0
  271. package/dist/design-system/{p-455dccf5.entry.js → p-a7a0ca14.entry.js} +1 -1
  272. package/dist/design-system/{p-f44786a9.entry.js → p-a942dfbe.entry.js} +1 -1
  273. package/dist/design-system/p-b04b22c6.entry.js +1 -0
  274. package/dist/design-system/p-b1bb0d72.entry.js +1 -0
  275. package/dist/design-system/{p-ead3e688.entry.js → p-b6ca4461.entry.js} +1 -1
  276. package/dist/design-system/p-b96c694c.entry.js +1 -0
  277. package/dist/design-system/p-baed13e4.entry.js +1 -0
  278. package/dist/design-system/{p-045bc426.entry.js → p-bd45e65d.entry.js} +1 -1
  279. package/dist/design-system/p-bf4156d8.entry.js +1 -0
  280. package/dist/design-system/{p-e5cebccd.entry.js → p-c0f60b00.entry.js} +1 -1
  281. package/dist/design-system/p-c228c2c7.entry.js +1 -0
  282. package/dist/design-system/p-cbda9194.entry.js +1 -0
  283. package/dist/design-system/{p-fe9cef6a.entry.js → p-cd8e4dd6.entry.js} +1 -1
  284. package/dist/design-system/p-cf382479.entry.js +1 -0
  285. package/dist/design-system/p-d0de34fd.entry.js +1 -0
  286. package/dist/design-system/p-d78fbe16.entry.js +1 -0
  287. package/dist/design-system/p-e1c0a3c9.entry.js +1 -0
  288. package/dist/design-system/{p-797517b5.entry.js → p-f3cfff78.entry.js} +1 -1
  289. package/dist/design-system/{p-3f7bc660.entry.js → p-f5576a0d.entry.js} +1 -1
  290. package/dist/design-system/p-f60cc7be.entry.js +1 -0
  291. package/dist/design-system/{p-33bc3176.entry.js → p-feeb0cc5.entry.js} +1 -1
  292. package/dist/esm/component.table-BQ6at17Y.js +54 -0
  293. package/dist/esm/design-system.js +3 -3
  294. package/dist/esm/{index-Cnwbjz1F.js → index-CLCoul8o.js} +1 -1
  295. package/dist/esm/index.js +4 -4
  296. package/dist/esm/loader.js +3 -3
  297. package/dist/esm/{resolveColor-BxPyZJaz.js → resolveColor-Ce0cmS4R.js} +2 -2
  298. package/dist/esm/sd-action-modal.entry.js +3 -3
  299. package/dist/esm/sd-badge.entry.js +2 -3
  300. package/dist/esm/sd-barcode-input.entry.js +3 -3
  301. package/dist/esm/{sd-button-v2.config-CV4xelxV.js → sd-button.config-BDjErF_K.js} +88 -3
  302. package/dist/esm/{sd-button-v2_2.entry.js → sd-button_2.entry.js} +101 -85
  303. package/dist/esm/sd-calendar.entry.js +15 -15
  304. package/dist/esm/sd-card.entry.js +2 -2
  305. package/dist/esm/sd-checkbox.entry.js +4 -4
  306. package/dist/esm/sd-chip.entry.js +2 -2
  307. package/dist/esm/sd-circle-progress.entry.js +3 -3
  308. package/dist/esm/sd-confirm-modal_2.entry.js +19 -11
  309. package/dist/esm/sd-date-box.entry.js +4 -4
  310. package/dist/esm/{sd-date-picker-calendar.entry.js → sd-date-picker-calendar_2.entry.js} +51 -4
  311. package/dist/esm/{sd-date-picker.config-C2fDbE9d.js → sd-date-picker.config-B6cqMQaM.js} +1 -2
  312. package/dist/esm/sd-date-picker_7.entry.js +1222 -0
  313. package/dist/esm/sd-date-range-picker-calendar.entry.js +3 -3
  314. package/dist/esm/sd-dropdown-button.entry.js +15 -14
  315. package/dist/esm/{sd-button_4.entry.js → sd-field_3.entry.js} +27 -82
  316. package/dist/esm/sd-form.entry.js +2 -2
  317. package/dist/esm/sd-ghost-button.entry.js +12 -10
  318. package/dist/esm/sd-guide.entry.js +9 -9
  319. package/dist/esm/sd-key-value-table.entry.js +228 -0
  320. package/dist/esm/sd-linear-progress.entry.js +3 -3
  321. package/dist/esm/sd-loading-container.entry.js +3 -3
  322. package/dist/esm/sd-modal-container.entry.js +1 -1
  323. package/dist/esm/{sd-pagination_5.entry.js → sd-pagination_4.entry.js} +35 -296
  324. package/dist/esm/sd-popover.entry.js +17 -10
  325. package/dist/esm/sd-popup.entry.js +110 -0
  326. package/dist/esm/sd-portal.entry.js +2 -2
  327. package/dist/esm/sd-radio-button.entry.js +4 -4
  328. package/dist/esm/sd-radio.entry.js +2 -2
  329. package/dist/esm/sd-select-list-item_2.entry.js +152 -0
  330. package/dist/esm/sd-select.config-CxOCk_ge.js +165 -0
  331. package/dist/esm/{sd-select-list-item_4.entry.js → sd-select_3.entry.js} +271 -302
  332. package/dist/esm/sd-switch.entry.js +2 -2
  333. package/dist/esm/{sd-table.config-Bj-EEo7N.js → sd-table.config-0Te8GLCI.js} +4 -44
  334. package/dist/esm/sd-table.entry.js +40 -23
  335. package/dist/esm/sd-tabs.entry.js +2 -2
  336. package/dist/esm/sd-tag.entry.js +49 -14
  337. package/dist/esm/sd-td.entry.js +2 -2
  338. package/dist/esm/sd-text-link.entry.js +8 -5
  339. package/dist/esm/sd-toast-container.entry.js +5 -5
  340. package/dist/esm/sd-toast.entry.js +35 -5
  341. package/dist/esm/sd-toggle.entry.js +2 -2
  342. package/dist/esm/{system-CZ4ltUOw.js → system-GBlVDmy4.js} +4 -2
  343. package/dist/esm/{tooltipArrow-D8sr81Xw.js → tooltipArrow-Bc-yw2nt.js} +1 -1
  344. package/dist/types/components/assets/CheckboxCheck.d.ts +1 -0
  345. package/dist/types/components/assets/CheckboxIndeterminate.d.ts +1 -0
  346. package/dist/types/components/assets/index.d.ts +2 -0
  347. package/dist/types/components/sd-action-modal/sd-action-modal.d.ts +2 -2
  348. package/dist/types/components/sd-badge/sd-badge.d.ts +0 -1
  349. package/dist/types/components/{sd-button-v2/sd-button-v2.config.d.ts → sd-button/sd-button.config.d.ts} +9 -15
  350. package/dist/types/components/sd-button/sd-button.d.ts +11 -13
  351. package/dist/types/components/sd-confirm-modal/sd-confirm-modal.config.d.ts +3 -3
  352. package/dist/types/components/sd-confirm-modal/sd-confirm-modal.d.ts +2 -1
  353. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.config.d.ts +3 -3
  354. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.d.ts +1 -0
  355. package/dist/types/components/sd-field/sd-field.d.ts +1 -0
  356. package/dist/types/components/sd-key-value-table/sd-key-value-table.config.d.ts +105 -0
  357. package/dist/types/components/sd-key-value-table/sd-key-value-table.d.ts +38 -0
  358. package/dist/types/components/sd-loading-modal/sd-loading-modal.config.d.ts +2 -2
  359. package/dist/types/components/sd-loading-modal/sd-loading-modal.d.ts +1 -0
  360. package/dist/types/components/sd-modal-container/sd-modal-container.config.d.ts +1 -1
  361. package/dist/types/components/sd-popover/sd-popover.d.ts +16 -10
  362. package/dist/types/components/sd-popup/sd-popup.config.d.ts +30 -0
  363. package/dist/types/components/sd-popup/sd-popup.d.ts +11 -0
  364. package/dist/types/components/sd-table/sd-table.d.ts +2 -0
  365. package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +2 -0
  366. package/dist/types/components/sd-tag/sd-tag.d.ts +1 -0
  367. package/dist/types/components/sd-toast/sd-toast.config.d.ts +5 -1
  368. package/dist/types/components/sd-toast/sd-toast.d.ts +2 -0
  369. package/dist/types/components/sd-toast-container/sd-toast-container.config.d.ts +2 -0
  370. package/dist/types/components/sd-tooltip/sd-tooltip.config.d.ts +2 -13
  371. package/dist/types/components/sd-tooltip/sd-tooltip.d.ts +6 -4
  372. package/dist/types/components.d.ts +237 -184
  373. package/dist/types/index.d.ts +1 -1
  374. package/dist/types/types/form.d.ts +1 -1
  375. package/dist/types/types/global.d.ts +14 -13
  376. package/dist/types/utils/toast.d.ts +1 -1
  377. package/hydrate/index.js +5182 -4738
  378. package/hydrate/index.mjs +5182 -4738
  379. package/package.json +111 -97
  380. package/readme.md +13 -7
  381. package/dist/cjs/component.button-cqV-iCG5.js +0 -90
  382. package/dist/cjs/sd-date-picker-trigger.cjs.entry.js +0 -51
  383. package/dist/cjs/sd-date-picker.cjs.entry.js +0 -117
  384. package/dist/cjs/sd-date-range-picker.cjs.entry.js +0 -123
  385. package/dist/cjs/sd-file-picker.cjs.entry.js +0 -244
  386. package/dist/cjs/sd-input.cjs.entry.js +0 -175
  387. package/dist/cjs/sd-number-input.cjs.entry.js +0 -409
  388. package/dist/cjs/sd-radio-group.cjs.entry.js +0 -46
  389. package/dist/cjs/sd-table.config-Cb0Ot3C6.js +0 -105
  390. package/dist/cjs/sd-textarea.cjs.entry.js +0 -146
  391. package/dist/collection/components/sd-button-v2/sd-button-v2.css +0 -125
  392. package/dist/collection/components/sd-button-v2/sd-button-v2.js +0 -273
  393. package/dist/components/p-B1XBwjCW.js +0 -1
  394. package/dist/components/p-B8jXOXtJ.js +0 -1
  395. package/dist/components/p-BE6TxbtX.js +0 -1
  396. package/dist/components/p-BcMNA89i.js +0 -1
  397. package/dist/components/p-BheX6lAy.js +0 -1
  398. package/dist/components/p-BmYM7-4v.js +0 -1
  399. package/dist/components/p-BppjYHF6.js +0 -1
  400. package/dist/components/p-BwWDMpJc.js +0 -1
  401. package/dist/components/p-C-kw2p2a.js +0 -1
  402. package/dist/components/p-C5qZtNLl.js +0 -1
  403. package/dist/components/p-C7DajKYn.js +0 -1
  404. package/dist/components/p-CZ4ltUOw.js +0 -1
  405. package/dist/components/p-D3gjBBCU.js +0 -1
  406. package/dist/components/p-DC-6inj0.js +0 -1
  407. package/dist/components/p-DRF0He-x.js +0 -1
  408. package/dist/components/p-Dey-lS6x.js +0 -1
  409. package/dist/components/p-DfH_fO01.js +0 -1
  410. package/dist/components/p-DngV3MT1.js +0 -1
  411. package/dist/components/p-EbjZr2OA.js +0 -1
  412. package/dist/components/p-LwWOleLJ.js +0 -1
  413. package/dist/components/p-ZMpCZhXP.js +0 -1
  414. package/dist/components/p-dNJIFthT.js +0 -1
  415. package/dist/components/p-xnLvZ-xn.js +0 -1
  416. package/dist/components/sd-button-v2.js +0 -1
  417. package/dist/design-system/p-0356c195.entry.js +0 -1
  418. package/dist/design-system/p-12dfd239.entry.js +0 -1
  419. package/dist/design-system/p-16d3a485.entry.js +0 -1
  420. package/dist/design-system/p-1706ed6f.entry.js +0 -1
  421. package/dist/design-system/p-182548f7.entry.js +0 -1
  422. package/dist/design-system/p-1a79edce.entry.js +0 -1
  423. package/dist/design-system/p-2812b9ce.entry.js +0 -1
  424. package/dist/design-system/p-38f661ea.entry.js +0 -1
  425. package/dist/design-system/p-429dab5c.entry.js +0 -1
  426. package/dist/design-system/p-59313838.entry.js +0 -1
  427. package/dist/design-system/p-6af01ab0.entry.js +0 -1
  428. package/dist/design-system/p-70d4903f.entry.js +0 -1
  429. package/dist/design-system/p-767e99f9.entry.js +0 -1
  430. package/dist/design-system/p-7c370335.entry.js +0 -1
  431. package/dist/design-system/p-7fe8be6a.entry.js +0 -1
  432. package/dist/design-system/p-83b262dc.entry.js +0 -1
  433. package/dist/design-system/p-881adaa5.entry.js +0 -1
  434. package/dist/design-system/p-88d7303c.entry.js +0 -1
  435. package/dist/design-system/p-8a601e0f.entry.js +0 -1
  436. package/dist/design-system/p-B1XBwjCW.js +0 -1
  437. package/dist/design-system/p-BsrEibf7.js +0 -1
  438. package/dist/design-system/p-C5qZtNLl.js +0 -1
  439. package/dist/design-system/p-CZ4ltUOw.js +0 -1
  440. package/dist/design-system/p-Cnwbjz1F.js +0 -2
  441. package/dist/design-system/p-a82be987.entry.js +0 -1
  442. package/dist/design-system/p-b917c82a.entry.js +0 -1
  443. package/dist/design-system/p-b9f00eef.entry.js +0 -1
  444. package/dist/design-system/p-bcb53788.entry.js +0 -1
  445. package/dist/design-system/p-c24344ac.entry.js +0 -1
  446. package/dist/design-system/p-d76192bd.entry.js +0 -1
  447. package/dist/design-system/p-d9d8c51b.entry.js +0 -1
  448. package/dist/design-system/p-de67937d.entry.js +0 -1
  449. package/dist/design-system/p-ea5e6c2c.entry.js +0 -1
  450. package/dist/design-system/p-eeb1cac2.entry.js +0 -1
  451. package/dist/design-system/p-f1a74359.entry.js +0 -1
  452. package/dist/design-system/p-f69c7539.entry.js +0 -1
  453. package/dist/esm/component.button-B1XBwjCW.js +0 -88
  454. package/dist/esm/sd-date-picker-trigger.entry.js +0 -49
  455. package/dist/esm/sd-date-picker.entry.js +0 -115
  456. package/dist/esm/sd-date-range-picker.entry.js +0 -121
  457. package/dist/esm/sd-file-picker.entry.js +0 -242
  458. package/dist/esm/sd-input.entry.js +0 -173
  459. package/dist/esm/sd-number-input.entry.js +0 -407
  460. package/dist/esm/sd-radio-group.entry.js +0 -44
  461. package/dist/esm/sd-textarea.entry.js +0 -144
  462. package/dist/types/components/sd-button-v2/sd-button-v2.d.ts +0 -19
  463. /package/dist/components/{p-C2fDbE9d.js → p-B6cqMQaM.js} +0 -0
  464. /package/dist/design-system/{p-C2fDbE9d.js → p-B6cqMQaM.js} +0 -0
@@ -0,0 +1,1230 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-BlxrCRYi.js');
4
+ var index$1 = require('./index-BUvXpPc3.js');
5
+ var sdDatePicker_config = require('./sd-date-picker.config-CjvrFpYK.js');
6
+ var component_textinput = require('./component.textinput-BpXDeZPD.js');
7
+
8
+ const sdDatePickerCss = () => `sd-date-picker{display:inline-flex}sd-date-picker sd-portal{display:none}sd-date-picker .sd-date-picker{position:relative;width:100%;height:100%}`;
9
+
10
+ const SdDatePicker = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ this.update = index.createEvent(this, "sdUpdate", 7);
14
+ this.viewChange = index.createEvent(this, "sdViewChange", 7);
15
+ }
16
+ static CLOSE_ANIMATION_DURATION = 150;
17
+ get el() { return index.getElement(this); }
18
+ value = null;
19
+ size = 'sm';
20
+ placeholder = 'YYYY-MM-DD';
21
+ selectable;
22
+ disabled = false;
23
+ width = '';
24
+ // sd-field 공통 props
25
+ label = '';
26
+ labelWidth = '';
27
+ addonLabel = '';
28
+ addonAlign = 'start';
29
+ hint = '';
30
+ errorMessage = '';
31
+ rules = [];
32
+ error = false;
33
+ icon = undefined;
34
+ labelTooltip = '';
35
+ labelTooltipProps = null;
36
+ isOpen = false;
37
+ isAnimatingOut = false;
38
+ focused = false;
39
+ hovered = false;
40
+ update;
41
+ viewChange;
42
+ triggerRef;
43
+ formField;
44
+ closeAnimationTimer;
45
+ name = index$1.nanoid();
46
+ watchIsOpen(newValue) {
47
+ this.focused = newValue;
48
+ }
49
+ async sdValidate() {
50
+ return this.formField?.sdValidate();
51
+ }
52
+ async sdReset() {
53
+ return this.formField?.sdReset();
54
+ }
55
+ async sdResetValidate() {
56
+ return this.formField?.sdResetValidation();
57
+ }
58
+ closeDropdown() {
59
+ if (!this.isOpen)
60
+ return;
61
+ this.isOpen = false;
62
+ this.isAnimatingOut = true;
63
+ if (this.closeAnimationTimer)
64
+ clearTimeout(this.closeAnimationTimer);
65
+ this.closeAnimationTimer = setTimeout(() => {
66
+ this.isAnimatingOut = false;
67
+ }, SdDatePicker.CLOSE_ANIMATION_DURATION);
68
+ }
69
+ handleTriggerClick = () => {
70
+ if (this.disabled)
71
+ return;
72
+ if (this.isOpen) {
73
+ this.closeDropdown();
74
+ }
75
+ else {
76
+ if (this.closeAnimationTimer)
77
+ clearTimeout(this.closeAnimationTimer);
78
+ this.isAnimatingOut = false;
79
+ this.isOpen = true;
80
+ }
81
+ };
82
+ handleSelect = (e) => {
83
+ this.closeDropdown();
84
+ this.value = e.detail;
85
+ const nextValue = this.value;
86
+ requestAnimationFrame(() => {
87
+ this.update.emit(nextValue);
88
+ });
89
+ };
90
+ handleViewChange = (e) => {
91
+ this.viewChange.emit(e.detail);
92
+ };
93
+ disconnectedCallback() {
94
+ if (this.closeAnimationTimer)
95
+ clearTimeout(this.closeAnimationTimer);
96
+ }
97
+ render() {
98
+ const sizeTokens = sdDatePicker_config.DATEPICKER_SIZE_MAP[this.size] ?? sdDatePicker_config.DATEPICKER_SIZE_MAP.sm;
99
+ const cssVars = {
100
+ '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
101
+ '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
102
+ '--sd-system-color-field-border-default': sdDatePicker_config.DATEPICKER_COLORS.border.default,
103
+ '--sd-system-color-field-border-focus': sdDatePicker_config.DATEPICKER_COLORS.border.focus,
104
+ '--sd-system-color-field-bg-default': sdDatePicker_config.DATEPICKER_COLORS.bg.default,
105
+ };
106
+ return (index.h("sd-field", { key: '7678d58f741276e9848e05759f5c41f576e7fe66', 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: '8b3d615b241860ec1fb314fa0eeef5f51ea32f43', class: "sd-date-picker", ref: el => {
107
+ this.triggerRef = el;
108
+ } }, index.h("sd-date-picker-trigger", { key: '43185c67462cf0cb559c918e5f709723bf4d5aee', displayText: this.value ?? '', placeholder: this.placeholder, disabled: this.disabled, size: this.size, onSdTriggerClick: this.handleTriggerClick })), (this.isOpen || this.isAnimatingOut) && (index.h("sd-portal", { key: '2cf151b52b3117de9c4d55bbc3c045b0a7b614e9', open: this.isOpen, parentRef: this.triggerRef, onSdClose: () => this.closeDropdown() }, index.h("sd-date-picker-calendar", { key: '9f77742d034dcb462eb1c4546b2c2a367544f97e', value: this.value, selectable: this.selectable, onSdSelect: this.handleSelect, onSdViewChange: this.handleViewChange })))));
109
+ }
110
+ static get watchers() { return {
111
+ "isOpen": [{
112
+ "watchIsOpen": 0
113
+ }]
114
+ }; }
115
+ };
116
+ SdDatePicker.style = sdDatePickerCss();
117
+
118
+ const sdDateRangePickerCss = () => `sd-date-range-picker{display:inline-flex}sd-date-range-picker sd-portal{display:none}sd-date-range-picker .sd-date-range-picker{position:relative;width:100%;height:100%}`;
119
+
120
+ const SdDateRangePicker = class {
121
+ constructor(hostRef) {
122
+ index.registerInstance(this, hostRef);
123
+ this.update = index.createEvent(this, "sdUpdate", 7);
124
+ this.viewChange = index.createEvent(this, "sdViewChange", 7);
125
+ }
126
+ static CLOSE_ANIMATION_DURATION = 150;
127
+ get el() { return index.getElement(this); }
128
+ value = null;
129
+ size = 'sm';
130
+ placeholder = 'YYYY-MM-DD ~ YYYY-MM-DD';
131
+ selectable;
132
+ maxRange;
133
+ disabled = false;
134
+ width = '';
135
+ // sd-field 공통 props
136
+ label = '';
137
+ labelWidth = '';
138
+ addonLabel = '';
139
+ addonAlign = 'start';
140
+ hint = '';
141
+ errorMessage = '';
142
+ rules = [];
143
+ error = false;
144
+ icon = undefined;
145
+ labelTooltip = '';
146
+ labelTooltipProps = null;
147
+ isOpen = false;
148
+ isAnimatingOut = false;
149
+ focused = false;
150
+ hovered = false;
151
+ update;
152
+ viewChange;
153
+ triggerRef;
154
+ formField;
155
+ closeAnimationTimer;
156
+ name = index$1.nanoid();
157
+ watchIsOpen(newValue) {
158
+ this.focused = newValue;
159
+ }
160
+ async sdValidate() {
161
+ return this.formField?.sdValidate();
162
+ }
163
+ async sdReset() {
164
+ return this.formField?.sdReset();
165
+ }
166
+ async sdResetValidate() {
167
+ return this.formField?.sdResetValidation();
168
+ }
169
+ closeDropdown() {
170
+ if (!this.isOpen)
171
+ return;
172
+ this.isOpen = false;
173
+ this.isAnimatingOut = true;
174
+ if (this.closeAnimationTimer)
175
+ clearTimeout(this.closeAnimationTimer);
176
+ this.closeAnimationTimer = setTimeout(() => {
177
+ this.isAnimatingOut = false;
178
+ }, SdDateRangePicker.CLOSE_ANIMATION_DURATION);
179
+ }
180
+ handleTriggerClick = () => {
181
+ if (this.disabled)
182
+ return;
183
+ if (this.isOpen) {
184
+ this.closeDropdown();
185
+ }
186
+ else {
187
+ if (this.closeAnimationTimer)
188
+ clearTimeout(this.closeAnimationTimer);
189
+ this.isAnimatingOut = false;
190
+ this.isOpen = true;
191
+ }
192
+ };
193
+ handleSelect = (e) => {
194
+ this.closeDropdown();
195
+ this.value = e.detail;
196
+ const nextValue = this.value;
197
+ requestAnimationFrame(() => {
198
+ this.update.emit(nextValue);
199
+ });
200
+ };
201
+ handleViewChange = (e) => {
202
+ this.viewChange.emit(e.detail);
203
+ };
204
+ get displayText() {
205
+ if (!this.value || !this.value[0] || !this.value[1])
206
+ return '';
207
+ return `${this.value[0]} ~ ${this.value[1]}`;
208
+ }
209
+ disconnectedCallback() {
210
+ if (this.closeAnimationTimer)
211
+ clearTimeout(this.closeAnimationTimer);
212
+ }
213
+ render() {
214
+ const sizeTokens = sdDatePicker_config.DATEPICKER_SIZE_MAP[this.size] ?? sdDatePicker_config.DATEPICKER_SIZE_MAP.sm;
215
+ const cssVars = {
216
+ '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
217
+ '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
218
+ '--sd-system-color-field-border-default': sdDatePicker_config.DATEPICKER_COLORS.border.default,
219
+ '--sd-system-color-field-border-focus': sdDatePicker_config.DATEPICKER_COLORS.border.focus,
220
+ '--sd-system-color-field-bg-default': sdDatePicker_config.DATEPICKER_COLORS.bg.default,
221
+ };
222
+ return (index.h("sd-field", { key: 'e44e9a2cf5c610c20c419215bd3b14494cea2980', 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: '29951ae2a98d2a44c2b01a735291dd2ec6d7e5a2', class: "sd-date-range-picker", ref: el => {
223
+ this.triggerRef = el;
224
+ } }, index.h("sd-date-picker-trigger", { key: '37d379cf054838e5005b00812401a8d7c6d4daa9', displayText: this.displayText, placeholder: this.placeholder, disabled: this.disabled, size: this.size, onSdTriggerClick: this.handleTriggerClick })), (this.isOpen || this.isAnimatingOut) && (index.h("sd-portal", { key: '1fbc3c2a16c845486e942b0a71ff799a9d1a98c6', open: this.isOpen, parentRef: this.triggerRef, onSdClose: () => this.closeDropdown() }, index.h("sd-date-range-picker-calendar", { key: '6e53bfaa550c93e6b2c08a2311bc415f359bc2da', value: this.value, selectable: this.selectable, maxRange: this.maxRange, onSdSelect: this.handleSelect, onSdViewChange: this.handleViewChange })))));
225
+ }
226
+ static get watchers() { return {
227
+ "isOpen": [{
228
+ "watchIsOpen": 0
229
+ }]
230
+ }; }
231
+ };
232
+ SdDateRangePicker.style = sdDateRangePickerCss();
233
+
234
+ const filepicker = {
235
+ height: "28",
236
+ paddingX: "12",
237
+ gap: "8",
238
+ radius: "4",
239
+ typography: {
240
+ fontWeight: "400",
241
+ fontSize: "12",
242
+ lineHeight: "20"},
243
+ size: {
244
+ icon: "16"
245
+ },
246
+ text: {
247
+ "default": "#222222",
248
+ placeholder: "#AAAAAA",
249
+ disabled: "#888888"
250
+ },
251
+ icon: {
252
+ disabled: "#BBBBBB"
253
+ }
254
+ };
255
+ var filePickerTokens = {
256
+ filepicker: filepicker
257
+ };
258
+
259
+ const fp = filePickerTokens.filepicker;
260
+ const FILE_PICKER_LAYOUT = {
261
+ height: fp.height,
262
+ paddingX: fp.paddingX,
263
+ gap: fp.gap,
264
+ radius: fp.radius,
265
+ fontSize: fp.typography.fontSize,
266
+ lineHeight: fp.typography.lineHeight,
267
+ fontWeight: fp.typography.fontWeight,
268
+ iconSize: fp.size.icon};
269
+ const FILE_PICKER_COLORS = {
270
+ text: fp.text,
271
+ icon: {
272
+ default: '#888888', // TODO: 토큰 반영 후 교체
273
+ disabled: fp.icon.disabled,
274
+ },
275
+ };
276
+
277
+ const sdFilePickerCss = () => `sd-file-picker{display:inline-flex;width:100%}.sd-file-picker__content{width:100%;height:100%;display:flex;align-items:center;padding:0 var(--sd-file-picker-padding-x);gap:var(--sd-file-picker-gap);cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;vertical-align:middle}.sd-file-picker__text{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--sd-file-picker-font-weight);font-size:var(--sd-file-picker-font-size);line-height:var(--sd-file-picker-line-height);color:var(--sd-file-picker-placeholder-color)}.sd-file-picker__text--active{color:var(--sd-file-picker-text-color)}.sd-file-picker__text--placeholder{color:var(--sd-file-picker-placeholder-color)}.sd-file-picker__icon{flex-shrink:0}.sd-file-picker__clear-icon{flex-shrink:0;cursor:pointer;transition:opacity 0.2s ease}.sd-file-picker__clear-icon:hover{opacity:0.7}.sd-file-picker__input{display:none}.sd-file-picker__tooltip{position:absolute;top:calc(100% - 4px);left:50%;transform:translate(-50%);z-index:998;white-space:nowrap;padding:8px 12px;background:rgba(0, 0, 0, 0.8);color:white;font-size:12px;line-height:18px;border-radius:4px;pointer-events:none}.sd-field--disabled .sd-file-picker__content{cursor:not-allowed}.sd-field--disabled .sd-file-picker__text{color:var(--sd-file-picker-disabled-color)}.sd-file-picker--inline .sd-file-picker__content{border:none;background-color:transparent;padding:0;height:auto}.sd-file-picker--inline .sd-file-picker__text{color:var(--sd-file-picker-placeholder-color)}.sd-file-picker--inline:hover:not(.sd-file-picker--inline-disabled) .sd-file-picker__text{color:var(--sd-file-picker-text-color)}.sd-file-picker--inline .sd-file-picker__text--active{color:var(--sd-file-picker-text-color)}.sd-file-picker--inline.sd-file-picker--inline-disabled .sd-file-picker__content{cursor:not-allowed}.sd-file-picker--inline.sd-file-picker--inline-disabled .sd-file-picker__text{color:var(--sd-file-picker-disabled-color)}`;
278
+
279
+ const SdFilePicker = class {
280
+ constructor(hostRef) {
281
+ index.registerInstance(this, hostRef);
282
+ this.update = index.createEvent(this, "sdUpdate", 7);
283
+ this.reject = index.createEvent(this, "sdReject", 7);
284
+ }
285
+ get el() { return index.getElement(this); }
286
+ value = null;
287
+ placeholder = 'Click to upload';
288
+ disabled = false;
289
+ inline = false;
290
+ multiple = false;
291
+ accept;
292
+ maxFileSize;
293
+ maxTotalSize;
294
+ maxFiles;
295
+ // sd-field 패스스루 props
296
+ name = index$1.nanoid();
297
+ label = '';
298
+ labelWidth = '';
299
+ addonLabel = '';
300
+ addonAlign = 'start';
301
+ hint = '';
302
+ errorMessage = '';
303
+ width = '';
304
+ rules;
305
+ error = false;
306
+ status;
307
+ icon = undefined;
308
+ labelTooltip = '';
309
+ labelTooltipProps = null;
310
+ focused = false;
311
+ hovered = false;
312
+ internalValue = null;
313
+ showTooltip = false;
314
+ fileInputRef;
315
+ fileNamesRef;
316
+ formField;
317
+ update;
318
+ reject;
319
+ valueChanged(newValue) {
320
+ this.internalValue = newValue;
321
+ }
322
+ componentDidLoad() {
323
+ this.checkOverflow();
324
+ }
325
+ componentDidUpdate() {
326
+ this.checkOverflow();
327
+ }
328
+ async sdValidate() {
329
+ return this.formField?.sdValidate() ?? Promise.resolve(true);
330
+ }
331
+ async sdReset() {
332
+ const clearedValue = this.multiple ? [] : null;
333
+ this.value = clearedValue;
334
+ this.internalValue = clearedValue;
335
+ if (this.fileInputRef) {
336
+ this.fileInputRef.value = '';
337
+ }
338
+ await this.formField?.sdResetValidation();
339
+ }
340
+ async sdResetValidate() {
341
+ await this.formField?.sdResetValidation();
342
+ }
343
+ toBytes(value) {
344
+ if (value == null)
345
+ return undefined;
346
+ return typeof value === 'string' ? Number(value) : value;
347
+ }
348
+ validateFiles(files) {
349
+ const maxFileSize = this.toBytes(this.maxFileSize);
350
+ const maxTotalSize = this.toBytes(this.maxTotalSize);
351
+ const maxFiles = this.maxFiles != null ? Number(this.maxFiles) : undefined;
352
+ if (maxFiles != null && files.length > maxFiles) {
353
+ return { accepted: [], rejected: files, reason: 'max-files' };
354
+ }
355
+ if (maxFileSize != null) {
356
+ const oversized = files.filter(f => f.size > maxFileSize);
357
+ if (oversized.length > 0) {
358
+ return { accepted: [], rejected: oversized, reason: 'max-file-size' };
359
+ }
360
+ }
361
+ if (maxTotalSize != null) {
362
+ const totalSize = files.reduce((sum, f) => sum + f.size, 0);
363
+ if (totalSize > maxTotalSize) {
364
+ return { accepted: [], rejected: files, reason: 'max-total-size' };
365
+ }
366
+ }
367
+ return { accepted: files, rejected: [] };
368
+ }
369
+ handleFileChange = (event) => {
370
+ const input = event.target;
371
+ const files = input.files;
372
+ if (!files || files.length === 0) {
373
+ return;
374
+ }
375
+ const fileArray = Array.from(files);
376
+ const { accepted, rejected, reason } = this.validateFiles(fileArray);
377
+ if (reason) {
378
+ this.reject?.emit({ files: rejected, reason });
379
+ if (this.fileInputRef) {
380
+ this.fileInputRef.value = '';
381
+ }
382
+ return;
383
+ }
384
+ if (this.multiple) {
385
+ this.internalValue = accepted;
386
+ }
387
+ else {
388
+ this.internalValue = accepted[0];
389
+ }
390
+ this.value = this.internalValue;
391
+ this.update?.emit(this.value);
392
+ };
393
+ handleClear = (event) => {
394
+ if (this.disabled)
395
+ return;
396
+ event.stopPropagation();
397
+ const clearedValue = this.multiple ? [] : null;
398
+ this.value = clearedValue;
399
+ this.internalValue = clearedValue;
400
+ this.update?.emit(clearedValue);
401
+ if (this.fileInputRef) {
402
+ this.fileInputRef.value = '';
403
+ }
404
+ };
405
+ handleClick = () => {
406
+ if (this.disabled)
407
+ return;
408
+ this.fileInputRef?.click();
409
+ };
410
+ hasFiles() {
411
+ if (!this.internalValue)
412
+ return false;
413
+ if (Array.isArray(this.internalValue)) {
414
+ return this.internalValue.length > 0;
415
+ }
416
+ return true;
417
+ }
418
+ getDisplayText() {
419
+ if (!this.hasFiles())
420
+ return this.placeholder ?? 'Click to upload';
421
+ if (Array.isArray(this.internalValue)) {
422
+ return this.internalValue.map(f => f.name).join(', ');
423
+ }
424
+ return this.internalValue?.name || (this.placeholder ?? 'Click to upload');
425
+ }
426
+ checkOverflow() {
427
+ if (!this.fileNamesRef)
428
+ return;
429
+ const isOverflowing = this.fileNamesRef.scrollWidth > this.fileNamesRef.clientWidth;
430
+ this.showTooltip = isOverflowing;
431
+ }
432
+ getIconColor() {
433
+ return this.disabled ? FILE_PICKER_COLORS.icon.disabled : FILE_PICKER_COLORS.icon.default;
434
+ }
435
+ render() {
436
+ const hasFiles = this.hasFiles();
437
+ const displayText = this.getDisplayText();
438
+ const cssVars = {
439
+ '--sd-file-picker-font-size': `${FILE_PICKER_LAYOUT.fontSize}px`,
440
+ '--sd-file-picker-line-height': `${FILE_PICKER_LAYOUT.lineHeight}px`,
441
+ '--sd-file-picker-font-weight': FILE_PICKER_LAYOUT.fontWeight,
442
+ '--sd-file-picker-padding-x': `${FILE_PICKER_LAYOUT.paddingX}px`,
443
+ '--sd-file-picker-gap': `${FILE_PICKER_LAYOUT.gap}px`,
444
+ '--sd-file-picker-text-color': FILE_PICKER_COLORS.text.default,
445
+ '--sd-file-picker-placeholder-color': FILE_PICKER_COLORS.text.placeholder,
446
+ '--sd-file-picker-disabled-color': FILE_PICKER_COLORS.text.disabled,
447
+ // sd-field 시스템 변수 override
448
+ '--sd-system-size-field-sm-height': `${FILE_PICKER_LAYOUT.height}px`,
449
+ '--sd-system-radius-field-sm': `${FILE_PICKER_LAYOUT.radius}px`,
450
+ };
451
+ const content = (index.h("div", { class: "sd-file-picker__content", onClick: this.handleClick }, index.h("input", { ref: el => (this.fileInputRef = el), type: "file", class: "sd-file-picker__input", disabled: this.disabled, multiple: this.multiple, accept: this.accept, onInput: this.handleFileChange, "aria-label": this.placeholder ?? 'Click to upload' }), index.h("sd-icon", { name: "attachFile", size: Number(FILE_PICKER_LAYOUT.iconSize), color: this.getIconColor(), class: "sd-file-picker__icon" }), index.h("div", { ref: el => (this.fileNamesRef = el), class: {
452
+ 'sd-file-picker__text': true,
453
+ 'sd-file-picker__text--placeholder': !hasFiles,
454
+ 'sd-file-picker__text--active': hasFiles,
455
+ } }, displayText), !this.disabled && hasFiles && (index.h("sd-ghost-button", { icon: "close", size: "xxs", ariaLabel: "clear", disabled: this.disabled, class: "sd-file-picker__clear-icon", onClick: this.handleClear })), this.showTooltip && hasFiles && this.hovered && (index.h("div", { class: "sd-file-picker__tooltip" }, displayText))));
456
+ if (this.inline) {
457
+ return (index.h("div", { class: {
458
+ 'sd-file-picker--inline': true,
459
+ 'sd-file-picker--inline-disabled': this.disabled,
460
+ }, style: cssVars, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, content));
461
+ }
462
+ return (index.h("sd-field", { 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, 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 }, content));
463
+ }
464
+ static get watchers() { return {
465
+ "value": [{
466
+ "valueChanged": 0
467
+ }]
468
+ }; }
469
+ };
470
+ SdFilePicker.style = sdFilePickerCss();
471
+
472
+ const sm$1 = component_textinput.inputTokens.textinput.sm;
473
+ const md$1 = component_textinput.inputTokens.textinput.md;
474
+ const INPUT_SIZE_MAP = {
475
+ sm: {
476
+ height: sm$1.height,
477
+ paddingX: sm$1.paddingX,
478
+ gap: sm$1.gap,
479
+ radius: sm$1.radius,
480
+ fontSize: sm$1.typography.fontSize,
481
+ lineHeight: sm$1.typography.lineHeight,
482
+ fontWeight: sm$1.typography.fontWeight,
483
+ },
484
+ md: {
485
+ height: md$1.height,
486
+ paddingX: md$1.paddingX,
487
+ gap: md$1.gap,
488
+ radius: md$1.radius,
489
+ fontSize: md$1.typography.fontSize,
490
+ lineHeight: md$1.typography.lineHeight,
491
+ fontWeight: md$1.typography.fontWeight,
492
+ },
493
+ };
494
+ const INPUT_COLORS = {
495
+ text: component_textinput.inputTokens.textinput.text,
496
+ icon: component_textinput.inputTokens.textinput.icon,
497
+ };
498
+
499
+ const sdInputCss = () => `sd-icon{display:inline-block;line-height:0}sd-icon .sd-icon--rotate-90{transform:rotate(90deg)}sd-icon .sd-icon--rotate-180{transform:rotate(180deg)}sd-icon .sd-icon--rotate-270{transform:rotate(270deg)}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-text-fill-color:#000;-webkit-box-shadow:0 0 0px 1000px #fff inset;box-shadow:0 0 0px 1000px #fff inset;transition:background-color 5000s ease-in-out 0s}input:autofill,input:autofill:hover,input:autofill:focus,input:autofill:active{-webkit-text-fill-color:#000;-webkit-box-shadow:0 0 0px 1000px #fff inset;box-shadow:0 0 0px 1000px #fff inset;transition:background-color 5000s ease-in-out 0s}sd-input{display:inline-flex}sd-input .sd-input__content{width:100%;height:100%;display:flex;flex-flow:row nowrap;align-items:center;color:var(--sd-input-text-color);font-size:var(--sd-input-font-size);line-height:var(--sd-input-line-height);font-weight:var(--sd-input-font-weight);padding:0 var(--sd-input-padding-x);gap:var(--sd-input-gap)}sd-input .sd-input__content .sd-input__native{width:100%;height:100%;border:none;outline:none;background:transparent;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit}sd-input .sd-input__content .sd-input__native[disabled]{cursor:not-allowed;color:var(--sd-input-disabled-color)}sd-input .sd-input__content .sd-input__native[readonly]{color:var(--sd-system-color-field-text-read-only)}sd-input .sd-input__content .sd-input__native::placeholder{color:var(--sd-input-placeholder-color)}sd-input .sd-input__content .sd-input__clear-icon,sd-input .sd-input__content .sd-input__password-icon{flex-shrink:0}sd-input .sd-input__content .sd-input__native[disabled]~.sd-input__clear-icon,sd-input .sd-input__content .sd-input__native[disabled]~.sd-input__password-icon,sd-input .sd-input__content .sd-input__native[readonly]~.sd-input__clear-icon,sd-input .sd-input__content .sd-input__native[readonly]~.sd-input__password-icon{cursor:not-allowed;pointer-events:none}`;
500
+
501
+ const SdInput = class {
502
+ constructor(hostRef) {
503
+ index.registerInstance(this, hostRef);
504
+ this.input = index.createEvent(this, "sdUpdate", 7);
505
+ this.focus = index.createEvent(this, "sdFocus", 7);
506
+ this.blur = index.createEvent(this, "sdBlur", 7);
507
+ }
508
+ get host() { return index.getElement(this); }
509
+ value = null;
510
+ type = 'text';
511
+ size = 'sm';
512
+ addonLabel = '';
513
+ addonAlign = 'start';
514
+ placeholder = '입력해 주세요.';
515
+ disabled = false;
516
+ clearable = false;
517
+ width = '';
518
+ rules = [];
519
+ autoFocus = false;
520
+ autocomplete = '';
521
+ maxlength;
522
+ minlength;
523
+ inputmode;
524
+ enterkeyhint;
525
+ spellcheck = false;
526
+ status;
527
+ hint = '';
528
+ errorMessage = '';
529
+ inputClass = '';
530
+ readonly = false;
531
+ error = false;
532
+ focused = false;
533
+ hovered = false;
534
+ // props - label
535
+ label = '';
536
+ labelWidth = '';
537
+ icon = undefined;
538
+ labelTooltip = '';
539
+ labelTooltipProps = null;
540
+ // props - custom styles
541
+ inputStyle = {};
542
+ internalValue = null;
543
+ passwordVisible = false;
544
+ nativeEl = undefined;
545
+ formField;
546
+ name = index$1.nanoid();
547
+ input;
548
+ focus;
549
+ blur;
550
+ valueChanged(newValue) {
551
+ this.internalValue = newValue;
552
+ }
553
+ internalValueChanged(newValue) {
554
+ if (newValue !== this.value) {
555
+ this.value = newValue;
556
+ this.input?.emit(this.value);
557
+ }
558
+ }
559
+ async sdGetNativeElement() {
560
+ return this.nativeEl || null;
561
+ }
562
+ async sdValidate() {
563
+ this.formField?.sdValidate();
564
+ }
565
+ async sdReset() {
566
+ this.formField?.sdReset();
567
+ }
568
+ async sdResetValidate() {
569
+ this.formField?.sdResetValidation();
570
+ }
571
+ async sdFocus() {
572
+ this.formField?.sdFocus();
573
+ }
574
+ componentWillLoad() {
575
+ if (this.value) {
576
+ this.internalValue = this.value;
577
+ }
578
+ }
579
+ componentDidLoad() {
580
+ if (this.autoFocus) {
581
+ this.nativeEl?.focus();
582
+ }
583
+ }
584
+ handleInput = (event) => {
585
+ const target = event.target;
586
+ this.internalValue = target.value;
587
+ };
588
+ handleFocus = async (type, event) => {
589
+ this.focused = type === 'focus';
590
+ if (type === 'blur') {
591
+ // Auto-validate on blur if rules exist
592
+ if (this.rules && this.rules.length > 0) {
593
+ await this.formField?.sdValidate();
594
+ }
595
+ this.blur?.emit(event);
596
+ }
597
+ else {
598
+ this.focus?.emit(event);
599
+ }
600
+ };
601
+ render() {
602
+ const sizeTokens = INPUT_SIZE_MAP[this.size] ?? INPUT_SIZE_MAP.sm;
603
+ const cssVars = {
604
+ // sd-input 자체 토큰
605
+ '--sd-input-font-size': `${sizeTokens.fontSize}px`,
606
+ '--sd-input-line-height': `${sizeTokens.lineHeight}px`,
607
+ '--sd-input-font-weight': sizeTokens.fontWeight,
608
+ '--sd-input-padding-x': `${sizeTokens.paddingX}px`,
609
+ '--sd-input-gap': `${sizeTokens.gap}px`,
610
+ '--sd-input-text-color': INPUT_COLORS.text.default,
611
+ '--sd-input-placeholder-color': INPUT_COLORS.text.placeholder,
612
+ '--sd-input-disabled-color': INPUT_COLORS.text.disabled,
613
+ '--sd-input-icon-color': INPUT_COLORS.icon.default,
614
+ // sd-field 시스템 변수 override (size별 높이/반경)
615
+ '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
616
+ '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
617
+ };
618
+ return (index.h("sd-field", { key: 'a94dfffaad91682d63a4c0f8e2428aee0f2dc909', 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: '44a55878936edbe36726b0cd607b607ee2921155', class: "sd-input__content" }, index.h("slot", { key: 'c3566240fc270059c4a7b4ccd7907a27141fd57e', name: "prefix" }), index.h("input", { key: '0df6f4eea75f1d5c0ed174902eb2c072dc81c23f', 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: '685051959a063e6c2465a01aaa77b0f84c4bb570', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && !this.readonly && (index.h("sd-ghost-button", { key: '382c86fe50a702b84a7dbc82b2e19d9e534af36a', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
619
+ if (this.disabled || this.readonly)
620
+ return;
621
+ this.internalValue = '';
622
+ await this.formField?.sdValidate();
623
+ } })), this.type === 'password' && (index.h("sd-ghost-button", { key: '2ae4ddc84bc8969ff4939d224b56ca7a05ea9115', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled || this.readonly, class: "sd-input__password-icon", onClick: () => {
624
+ if (this.disabled || this.readonly)
625
+ return;
626
+ this.passwordVisible = !this.passwordVisible;
627
+ } })))));
628
+ }
629
+ static get watchers() { return {
630
+ "value": [{
631
+ "valueChanged": 0
632
+ }],
633
+ "internalValue": [{
634
+ "internalValueChanged": 0
635
+ }]
636
+ }; }
637
+ };
638
+ SdInput.style = sdInputCss();
639
+
640
+ const numberInput = {
641
+ sm: {
642
+ height: "28",
643
+ paddingX: "6",
644
+ radius: "4",
645
+ typography: {
646
+ fontWeight: "400",
647
+ fontSize: "12",
648
+ lineHeight: "20"}},
649
+ md: {
650
+ height: "36",
651
+ paddingX: "8",
652
+ radius: "6",
653
+ typography: {
654
+ fontWeight: "400",
655
+ fontSize: "14",
656
+ lineHeight: "24"
657
+ }},
658
+ contents: {
659
+ gap: "4"
660
+ },
661
+ border: {
662
+ "default": "#AAAAAA",
663
+ focus: "#0075FF",
664
+ danger: "#FB4444"},
665
+ bg: {
666
+ "default": "#FFFFFF"},
667
+ text: {
668
+ "default": "#222222",
669
+ placeholder: "#AAAAAA",
670
+ disabled: "#888888"
671
+ },
672
+ hint: {
673
+ color: "#555555",
674
+ typography: {
675
+ fontSize: "12",
676
+ lineHeight: "20"}
677
+ },
678
+ errorMessage: {
679
+ color: "#E30000",
680
+ typography: {
681
+ fontSize: "12",
682
+ lineHeight: "20"}
683
+ },
684
+ stepper: {
685
+ sm: {
686
+ size: "20"
687
+ },
688
+ md: {
689
+ size: "24"
690
+ },
691
+ radius: "4",
692
+ bg: {
693
+ "default": "#EFF6FF",
694
+ disabled: "#EEEEEE"
695
+ },
696
+ icon: {
697
+ "default": "#0075FF",
698
+ disabled: "#BBBBBB"
699
+ }
700
+ }
701
+ };
702
+ var numberInputTokens = {
703
+ numberInput: numberInput
704
+ };
705
+
706
+ const sm = numberInputTokens.numberInput.sm;
707
+ const md = numberInputTokens.numberInput.md;
708
+ const NUMBER_INPUT_SIZE_MAP = {
709
+ sm: {
710
+ height: sm.height,
711
+ paddingX: sm.paddingX,
712
+ radius: sm.radius,
713
+ fontSize: sm.typography.fontSize,
714
+ lineHeight: sm.typography.lineHeight,
715
+ fontWeight: sm.typography.fontWeight,
716
+ },
717
+ md: {
718
+ height: md.height,
719
+ paddingX: md.paddingX,
720
+ radius: md.radius,
721
+ fontSize: md.typography.fontSize,
722
+ lineHeight: md.typography.lineHeight,
723
+ fontWeight: md.typography.fontWeight,
724
+ },
725
+ };
726
+ const NUMBER_INPUT_COLORS = {
727
+ border: numberInputTokens.numberInput.border,
728
+ bg: numberInputTokens.numberInput.bg,
729
+ text: numberInputTokens.numberInput.text,
730
+ };
731
+ const NUMBER_INPUT_STEPPER = {
732
+ sm: { size: numberInputTokens.numberInput.stepper.sm.size },
733
+ md: { size: numberInputTokens.numberInput.stepper.md.size },
734
+ radius: numberInputTokens.numberInput.stepper.radius,
735
+ bg: numberInputTokens.numberInput.stepper.bg,
736
+ icon: numberInputTokens.numberInput.stepper.icon,
737
+ };
738
+ const NUMBER_INPUT_HINT = numberInputTokens.numberInput.hint;
739
+ const NUMBER_INPUT_ERROR_MESSAGE = numberInputTokens.numberInput.errorMessage;
740
+ const NUMBER_INPUT_CONTENTS_GAP = numberInputTokens.numberInput.contents.gap;
741
+
742
+ const sdNumberInputCss = () => `sd-number-input{display:inline-flex}sd-number-input .sd-number-input__content{width:100%;height:100%;display:flex;flex-flow:row nowrap;align-items:center;gap:var(--sd-number-input-padding-x);color:var(--sd-number-input-text-color);font-size:var(--sd-number-input-font-size);line-height:var(--sd-number-input-line-height);font-weight:var(--sd-number-input-font-weight);padding:0 var(--sd-number-input-padding-x)}sd-number-input .sd-number-input__content--no-stepper{padding:0 calc(var(--sd-number-input-padding-x) * 2)}sd-number-input .sd-number-input__content .sd-number-input__native{width:100%;height:100%;min-width:0;border:none;outline:none;background:transparent;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;padding-block:0;padding-inline:0}sd-number-input .sd-number-input__content .sd-number-input__native[disabled]{cursor:not-allowed;color:var(--sd-number-input-disabled-color)}sd-number-input .sd-number-input__content .sd-number-input__native[readonly]{color:var(--sd-system-color-field-text-read-only)}sd-number-input .sd-number-input__content .sd-number-input__native::placeholder{color:var(--sd-number-input-placeholder-color)}sd-number-input .sd-number-input__content .sd-number-input__prefix,sd-number-input .sd-number-input__content .sd-number-input__suffix{flex-shrink:0;white-space:nowrap;color:var(--sd-number-input-placeholder-color);font-size:inherit;line-height:inherit}sd-number-input .sd-number-input__content .sd-number-input__stepper{flex-shrink:0;width:var(--sd-number-input-stepper-size);height:var(--sd-number-input-stepper-size);border:none;border-radius:var(--sd-number-input-stepper-radius);background-color:var(--sd-number-input-stepper-bg);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin:0;transition:background-color 0.15s ease}sd-number-input .sd-number-input__content .sd-number-input__stepper:hover:not(:disabled){filter:brightness(0.95)}sd-number-input .sd-number-input__content .sd-number-input__stepper:disabled{background-color:var(--sd-number-input-stepper-bg-disabled);cursor:not-allowed}`;
743
+
744
+ const SdNumberInput = class {
745
+ constructor(hostRef) {
746
+ index.registerInstance(this, hostRef);
747
+ this.update = index.createEvent(this, "sdUpdate", 7);
748
+ this.focus = index.createEvent(this, "sdFocus", 7);
749
+ this.blur = index.createEvent(this, "sdBlur", 7);
750
+ }
751
+ get el() { return index.getElement(this); }
752
+ size = 'sm';
753
+ min = Number.NEGATIVE_INFINITY;
754
+ max = Number.POSITIVE_INFINITY;
755
+ step = 1;
756
+ useButton = false;
757
+ useDecimal = false;
758
+ value = null;
759
+ label;
760
+ labelWidth = '';
761
+ addonLabel = '';
762
+ addonAlign = 'start';
763
+ placeholder = '입력해 주세요.';
764
+ disabled = false;
765
+ width;
766
+ rules = [];
767
+ autoFocus = false;
768
+ status;
769
+ hint = '';
770
+ errorMessage = '';
771
+ inputPrefix = '';
772
+ inputSuffix = '';
773
+ inputClass = '';
774
+ readonly = false;
775
+ inputStyle = {};
776
+ error = false;
777
+ focused = false;
778
+ hovered = false;
779
+ internalValue = null;
780
+ displayValue = '';
781
+ nativeEl = undefined;
782
+ formField;
783
+ name = index$1.nanoid();
784
+ update;
785
+ focus;
786
+ blur;
787
+ toNumber(val) {
788
+ if (val === null || val === undefined || val === '')
789
+ return null;
790
+ if (typeof val === 'number')
791
+ return isNaN(val) ? null : val;
792
+ if (typeof val === 'string')
793
+ return this.parseInput(val);
794
+ const num = Number(val);
795
+ return isNaN(num) ? null : num;
796
+ }
797
+ formatWithCommas(value) {
798
+ if (value === null || value === undefined || isNaN(value))
799
+ return '';
800
+ const isNegative = value < 0;
801
+ const absValue = Math.abs(value);
802
+ const [intPart, decPart] = absValue.toString().split('.');
803
+ const formatted = (+intPart).toLocaleString();
804
+ const result = isNegative ? '-' + formatted : formatted;
805
+ return decPart ? result + '.' + decPart : String(result);
806
+ }
807
+ parseInput(input) {
808
+ if (!input || input.trim() === '')
809
+ return null;
810
+ const cleaned = input.replace(/,/g, '').trim();
811
+ if (!/^-?(\d+\.?\d*|\d*\.\d+)$/.test(cleaned)) {
812
+ return null;
813
+ }
814
+ const parsed = parseFloat(cleaned);
815
+ if (isNaN(parsed))
816
+ return null;
817
+ if (!this.useDecimal && cleaned.includes('.')) {
818
+ return null;
819
+ }
820
+ return parsed;
821
+ }
822
+ clampMinMax(value) {
823
+ if (isNaN(value))
824
+ return 0;
825
+ return Math.min(Math.max(value, this.min), this.max);
826
+ }
827
+ updateDisplay() {
828
+ this.displayValue = this.formatWithCommas(this.internalValue);
829
+ }
830
+ isIncrementDisabled() {
831
+ if (this.disabled || this.readonly)
832
+ return true;
833
+ if (this.internalValue !== null) {
834
+ return this.internalValue >= this.max;
835
+ }
836
+ return false;
837
+ }
838
+ isDecrementDisabled() {
839
+ if (this.disabled || this.readonly)
840
+ return true;
841
+ if (this.internalValue !== null) {
842
+ return this.internalValue <= this.min;
843
+ }
844
+ return false;
845
+ }
846
+ valueChanged(newValue) {
847
+ const parsed = this.toNumber(newValue);
848
+ if (parsed !== null) {
849
+ this.internalValue = this.clampMinMax(parsed);
850
+ }
851
+ else {
852
+ this.internalValue = null;
853
+ }
854
+ this.updateDisplay();
855
+ }
856
+ internalValueChanged(newValue) {
857
+ this.updateDisplay();
858
+ if (newValue !== this.value) {
859
+ this.value = newValue;
860
+ this.update?.emit(newValue);
861
+ }
862
+ }
863
+ async sdValidate() {
864
+ this.formField?.sdValidate();
865
+ }
866
+ async sdReset() {
867
+ this.formField?.sdReset();
868
+ }
869
+ async sdResetValidate() {
870
+ this.formField?.sdResetValidation();
871
+ }
872
+ async sdFocus() {
873
+ this.formField?.sdFocus();
874
+ }
875
+ async sdGetNativeElement() {
876
+ return this.nativeEl || null;
877
+ }
878
+ componentWillLoad() {
879
+ const parsed = this.toNumber(this.value);
880
+ if (parsed !== null) {
881
+ this.internalValue = this.clampMinMax(parsed);
882
+ }
883
+ this.updateDisplay();
884
+ }
885
+ componentDidLoad() {
886
+ if (this.autoFocus) {
887
+ this.nativeEl?.focus();
888
+ }
889
+ }
890
+ // TODO: 현재 숫자를 크게 넣어서 숫자e+21등의 형식으로 변환되면 값이 바뀌지않음 수정 필요
891
+ handleInput = (event) => {
892
+ const target = event.target;
893
+ const inputValue = target.value;
894
+ if (inputValue === '') {
895
+ this.internalValue = null;
896
+ this.displayValue = '';
897
+ return;
898
+ }
899
+ const commasRemoved = inputValue.replace(/,/g, '');
900
+ const decimalCount = (commasRemoved.match(/\./g) || []).length;
901
+ if (decimalCount > 1) {
902
+ target.value = this.displayValue;
903
+ return;
904
+ }
905
+ if (commasRemoved === '-' || commasRemoved === '.' || commasRemoved === '-.') {
906
+ target.value = commasRemoved;
907
+ return;
908
+ }
909
+ if (commasRemoved.endsWith('.') && decimalCount === 1) {
910
+ const numberPart = commasRemoved.slice(0, -1);
911
+ const parsed = this.parseInput(numberPart);
912
+ if (parsed !== null) {
913
+ const formatted = this.formatWithCommas(parsed);
914
+ target.value = formatted + '.';
915
+ return;
916
+ }
917
+ }
918
+ const parsed = this.parseInput(commasRemoved);
919
+ if (parsed !== null) {
920
+ if (parsed < this.min) {
921
+ target.value = this.displayValue;
922
+ return;
923
+ }
924
+ if (parsed > this.max) {
925
+ target.value = this.displayValue;
926
+ return;
927
+ }
928
+ this.internalValue = parsed;
929
+ this.displayValue = this.formatWithCommas(parsed);
930
+ target.value = this.displayValue;
931
+ }
932
+ else {
933
+ target.value = this.displayValue;
934
+ }
935
+ };
936
+ handleFocus = (event) => {
937
+ this.focused = true;
938
+ this.focus?.emit(event);
939
+ };
940
+ handleBlur = async (event) => {
941
+ this.updateDisplay();
942
+ if (this.nativeEl) {
943
+ this.nativeEl.value = this.displayValue;
944
+ }
945
+ if (this.rules && this.rules.length > 0) {
946
+ await this.formField?.sdValidate();
947
+ }
948
+ this.focused = false;
949
+ this.blur?.emit(event);
950
+ };
951
+ handleKeyDown = (event) => {
952
+ if (event.key === 'ArrowUp') {
953
+ event.preventDefault();
954
+ this.handleIncrement();
955
+ }
956
+ else if (event.key === 'ArrowDown') {
957
+ event.preventDefault();
958
+ this.handleDecrement();
959
+ }
960
+ };
961
+ handleIncrement = () => {
962
+ if (this.isIncrementDisabled())
963
+ return;
964
+ const currentVal = this.internalValue ?? this.min ?? 0;
965
+ let nextVal = currentVal + this.step;
966
+ if (nextVal > this.max) {
967
+ nextVal = this.max;
968
+ }
969
+ if (nextVal === currentVal)
970
+ return;
971
+ this.internalValue = nextVal;
972
+ };
973
+ handleDecrement = () => {
974
+ if (this.isDecrementDisabled())
975
+ return;
976
+ const currentVal = this.internalValue ?? this.min ?? 0;
977
+ let nextVal = currentVal - this.step;
978
+ if (nextVal < this.min) {
979
+ nextVal = this.min;
980
+ }
981
+ if (nextVal === currentVal)
982
+ return;
983
+ this.internalValue = nextVal;
984
+ };
985
+ render() {
986
+ const sizeTokens = NUMBER_INPUT_SIZE_MAP[this.size] ?? NUMBER_INPUT_SIZE_MAP.sm;
987
+ const stepperSize = NUMBER_INPUT_STEPPER[this.size]?.size ?? NUMBER_INPUT_STEPPER.sm.size;
988
+ const iconSize = this.size === 'md' ? 14 : 12;
989
+ const cssVars = {
990
+ // 컴포넌트 로컬 토큰
991
+ '--sd-number-input-font-size': `${sizeTokens.fontSize}px`,
992
+ '--sd-number-input-line-height': `${sizeTokens.lineHeight}px`,
993
+ '--sd-number-input-font-weight': sizeTokens.fontWeight,
994
+ '--sd-number-input-padding-x': `${sizeTokens.paddingX}px`,
995
+ '--sd-number-input-text-color': NUMBER_INPUT_COLORS.text.default,
996
+ '--sd-number-input-placeholder-color': NUMBER_INPUT_COLORS.text.placeholder,
997
+ '--sd-number-input-disabled-color': NUMBER_INPUT_COLORS.text.disabled,
998
+ // 스테퍼 토큰
999
+ '--sd-number-input-stepper-size': `${stepperSize}px`,
1000
+ '--sd-number-input-stepper-radius': `${NUMBER_INPUT_STEPPER.radius}px`,
1001
+ '--sd-number-input-stepper-bg': NUMBER_INPUT_STEPPER.bg.default,
1002
+ '--sd-number-input-stepper-bg-disabled': NUMBER_INPUT_STEPPER.bg.disabled,
1003
+ '--sd-number-input-stepper-icon-color': NUMBER_INPUT_STEPPER.icon.default,
1004
+ '--sd-number-input-stepper-icon-disabled': NUMBER_INPUT_STEPPER.icon.disabled,
1005
+ // sd-field 시스템 변수 오버라이드
1006
+ '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
1007
+ '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
1008
+ '--sd-system-color-field-border-default': NUMBER_INPUT_COLORS.border.default,
1009
+ '--sd-system-color-field-border-focus': NUMBER_INPUT_COLORS.border.focus,
1010
+ '--sd-system-color-field-border-danger': NUMBER_INPUT_COLORS.border.danger,
1011
+ '--sd-system-color-field-bg-default': NUMBER_INPUT_COLORS.bg.default,
1012
+ // 힌트/에러 메시지 오버라이드
1013
+ '--sd-textinput-input-text-error-message': NUMBER_INPUT_ERROR_MESSAGE.color,
1014
+ '--sd-textinput-input-error-message-typography-font-size': `${NUMBER_INPUT_ERROR_MESSAGE.typography.fontSize}px`,
1015
+ '--sd-textinput-input-error-message-typography-line-height': `${NUMBER_INPUT_ERROR_MESSAGE.typography.lineHeight}px`,
1016
+ '--sd-textinput-input-text-hint': NUMBER_INPUT_HINT.color,
1017
+ '--sd-textinput-input-hint-typography-font-size': `${NUMBER_INPUT_HINT.typography.fontSize}px`,
1018
+ '--sd-textinput-input-hint-typography-line-height': `${NUMBER_INPUT_HINT.typography.lineHeight}px`,
1019
+ '--sd-textinput-input-contents-gap': `${NUMBER_INPUT_CONTENTS_GAP}px`,
1020
+ };
1021
+ return (index.h("sd-field", { key: 'ea9194c50e91def94838d1e886e934944a1fd78d', 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, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("div", { key: '4e65dcfe630b21a7683afebf595f66aca04f5c8c', class: {
1022
+ 'sd-number-input__content': true,
1023
+ 'sd-number-input__content--no-stepper': !this.useButton,
1024
+ } }, this.useButton && (index.h("button", { key: 'ee387b4a602007b98e1ebd8cb1ab9a0dd11dfc9d', 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: 'a98dd85c4a0c160e8668731d79b4718d8acb989f', name: "minus", size: iconSize, color: this.isDecrementDisabled()
1025
+ ? NUMBER_INPUT_STEPPER.icon.disabled
1026
+ : NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && (index.h("span", { key: 'b49392e692e2349fd9620d39b15c8531bc5ae240', class: "sd-number-input__prefix" }, this.inputPrefix)), index.h("input", { key: '7128b540d479d6500cfa05782c49b0e06cd999e7', 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: {
1027
+ textAlign: this.useButton ? 'center' : 'right',
1028
+ ...this.inputStyle,
1029
+ } }), this.inputSuffix && (index.h("span", { key: 'e9902ba6872e4a10bcd1106c588e231973632f51', class: "sd-number-input__suffix" }, this.inputSuffix)), this.useButton && (index.h("button", { key: '297ad8b506e904ba27f3f19beebe7fa503950f7b', 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: '2f74f2a161d6700981f33b3d1df3bad76b3df87b', name: "add", size: iconSize, color: this.isIncrementDisabled()
1030
+ ? NUMBER_INPUT_STEPPER.icon.disabled
1031
+ : NUMBER_INPUT_STEPPER.icon.default }))))));
1032
+ }
1033
+ static get watchers() { return {
1034
+ "value": [{
1035
+ "valueChanged": 0
1036
+ }],
1037
+ "internalValue": [{
1038
+ "internalValueChanged": 0
1039
+ }]
1040
+ }; }
1041
+ };
1042
+ SdNumberInput.style = sdNumberInputCss();
1043
+
1044
+ const sdRadioGroupCss = () => `sd-radio{display:inline-flex;width:fit-content;height:var(--sd-radio-line-height);line-height:0}sd-radio .sd-radio{cursor:pointer;display:inline-flex;align-items:center;gap:var(--sd-radio-gap);height:var(--sd-radio-line-height);max-height:var(--sd-radio-line-height)}sd-radio .sd-radio>input{position:absolute;width:0;height:0;opacity:0;pointer-events:none}sd-radio .sd-radio>input:focus-visible+.sd-radio__circle{box-shadow:0 0 0 2px white, 0 0 0 4px var(--sd-radio-checked-border);outline:none}sd-radio .sd-radio__circle{position:relative;width:var(--sd-radio-size);height:var(--sd-radio-size);border-radius:50%;border:var(--sd-radio-border-width) solid var(--sd-radio-unchecked-border);box-sizing:border-box;background:var(--sd-radio-unchecked-bg);display:inline-flex;flex-shrink:0}sd-radio .sd-radio__label{font-size:var(--sd-radio-font-size);font-weight:var(--sd-radio-font-weight);color:var(--sd-radio-label-color);line-height:var(--sd-radio-line-height)}sd-radio .sd-radio:hover:not(.sd-radio--disabled) .sd-radio__circle{background:var(--sd-radio-unchecked-bg-hover);border-color:var(--sd-radio-unchecked-border-hover)}sd-radio .sd-radio--checked .sd-radio__circle{border-color:var(--sd-radio-checked-border)}sd-radio .sd-radio--checked .sd-radio__circle::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:var(--sd-radio-dot-size);height:var(--sd-radio-dot-size);border-radius:50%;background:var(--sd-radio-checked-dot)}sd-radio .sd-radio--disabled{cursor:not-allowed}sd-radio .sd-radio--disabled .sd-radio__circle{background:var(--sd-radio-disabled-bg);border-color:var(--sd-radio-disabled-border)}sd-radio .sd-radio--disabled.sd-radio--checked .sd-radio__circle::after{background:var(--sd-radio-disabled-dot)}sd-radio-group{display:inline-block}sd-radio-group .sd-radio-group{display:flex}sd-radio-group .sd-radio-group--vertical{flex-direction:column;gap:8px}sd-radio-group .sd-radio-group--horizontal{flex-direction:row;align-items:center;gap:20px}`;
1045
+
1046
+ const SdRadioGroup = class {
1047
+ constructor(hostRef) {
1048
+ index.registerInstance(this, hostRef);
1049
+ this.change = index.createEvent(this, "sdUpdate", 7);
1050
+ }
1051
+ value;
1052
+ options = [];
1053
+ direction = 'vertical';
1054
+ disabled = false;
1055
+ groupName;
1056
+ change;
1057
+ valueChanged(newValue) {
1058
+ this.value = newValue;
1059
+ }
1060
+ handleRadioChange = (optionValue) => {
1061
+ if (this.disabled)
1062
+ return;
1063
+ const matched = this.options.find(o => String(o.value) === String(optionValue));
1064
+ const resolved = matched ? matched.value : optionValue;
1065
+ this.value = resolved;
1066
+ this.change?.emit(resolved);
1067
+ };
1068
+ getGroupClasses() {
1069
+ const classes = ['sd-radio-group', `sd-radio-group--${this.direction ?? 'vertical'}`];
1070
+ return classes.join(' ');
1071
+ }
1072
+ render() {
1073
+ return (index.h("div", { key: '464497f4968167f9a89e5abdd9f23e4567dc56b3', class: this.getGroupClasses(), role: "radiogroup" }, this.options.map(option => {
1074
+ return (index.h("sd-radio", { key: `radio-${option.value}`, val: String(option.value), value: String(this.value), label: option.label, disabled: this.disabled || !!option.disabled, onSdUpdate: ({ detail }) => this.handleRadioChange(detail) }));
1075
+ })));
1076
+ }
1077
+ static get watchers() { return {
1078
+ "value": [{
1079
+ "valueChanged": 0
1080
+ }]
1081
+ }; }
1082
+ };
1083
+ SdRadioGroup.style = sdRadioGroupCss();
1084
+
1085
+ const TEXTAREA_TOKENS = {
1086
+ paddingX: component_textinput.inputTokens.textinput.sm.paddingX,
1087
+ paddingY: component_textinput.inputTokens.textinput.sm.paddingY,
1088
+ radius: component_textinput.inputTokens.textinput.sm.radius,
1089
+ fontSize: component_textinput.inputTokens.textinput.sm.typography.fontSize,
1090
+ lineHeight: component_textinput.inputTokens.textinput.sm.typography.lineHeight,
1091
+ fontWeight: component_textinput.inputTokens.textinput.sm.typography.fontWeight};
1092
+ const TEXTAREA_COLORS = {
1093
+ text: component_textinput.inputTokens.textinput.text,
1094
+ bg: component_textinput.inputTokens.textinput.bg,
1095
+ border: component_textinput.inputTokens.textinput.border,
1096
+ resizer: component_textinput.inputTokens.textinput.resizer,
1097
+ };
1098
+
1099
+ const sdTextareaCss = () => `sd-textarea{display:inline-flex}sd-textarea .sd-textarea__content{width:100%;display:flex}sd-textarea .sd-textarea__content .sd-textarea__native{width:100%;min-height:100px;border:none;outline:none;background:transparent;padding:var(--sd-textarea-padding-y) var(--sd-textarea-padding-x);font-family:inherit;font-size:var(--sd-textarea-font-size);line-height:var(--sd-textarea-line-height);font-weight:var(--sd-textarea-font-weight);color:var(--sd-textarea-text-color);resize:vertical}sd-textarea .sd-textarea__content .sd-textarea__native::placeholder{color:var(--sd-textarea-placeholder-color)}sd-textarea .sd-textarea__content .sd-textarea__native:disabled{cursor:not-allowed;color:var(--sd-textarea-disabled-color)}sd-textarea .sd-textarea__content .sd-textarea__native[readonly]{color:var(--sd-system-color-field-text-read-only)}`;
1100
+
1101
+ const SdTextarea = class {
1102
+ constructor(hostRef) {
1103
+ index.registerInstance(this, hostRef);
1104
+ this.input = index.createEvent(this, "sdUpdate", 7);
1105
+ this.focus = index.createEvent(this, "sdFocus", 7);
1106
+ this.blur = index.createEvent(this, "sdBlur", 7);
1107
+ }
1108
+ get host() { return index.getElement(this); }
1109
+ value = null;
1110
+ placeholder = '입력해 주세요.';
1111
+ disabled = false;
1112
+ readonly = false;
1113
+ autoFocus = false;
1114
+ textareaClass = '';
1115
+ textareaStyle = {};
1116
+ maxLength;
1117
+ rows;
1118
+ spellcheck = false;
1119
+ width = '';
1120
+ // props - sd-field
1121
+ label = '';
1122
+ labelWidth = '';
1123
+ addonLabel = '';
1124
+ addonAlign = 'start';
1125
+ hint = '';
1126
+ errorMessage = '';
1127
+ icon = undefined;
1128
+ labelTooltip = '';
1129
+ labelTooltipProps = null;
1130
+ rules = [];
1131
+ error = false;
1132
+ status;
1133
+ focused = false;
1134
+ hovered = false;
1135
+ internalValue = null;
1136
+ nativeEl = undefined;
1137
+ formField;
1138
+ name = index$1.nanoid();
1139
+ input;
1140
+ focus;
1141
+ blur;
1142
+ valueChanged(newValue) {
1143
+ this.internalValue = newValue;
1144
+ }
1145
+ internalValueChanged(newValue) {
1146
+ if (newValue !== this.value) {
1147
+ this.value = newValue;
1148
+ this.input?.emit(this.value);
1149
+ }
1150
+ }
1151
+ async sdGetNativeElement() {
1152
+ return this.nativeEl || null;
1153
+ }
1154
+ async sdValidate() {
1155
+ this.formField?.sdValidate();
1156
+ }
1157
+ async sdReset() {
1158
+ this.formField?.sdReset();
1159
+ }
1160
+ async sdResetValidate() {
1161
+ this.formField?.sdResetValidation();
1162
+ }
1163
+ async sdFocus() {
1164
+ this.formField?.sdFocus();
1165
+ }
1166
+ componentWillLoad() {
1167
+ if (this.value !== null && this.value !== undefined) {
1168
+ this.internalValue = this.value;
1169
+ }
1170
+ }
1171
+ componentDidLoad() {
1172
+ if (this.autoFocus) {
1173
+ this.nativeEl?.focus();
1174
+ }
1175
+ }
1176
+ handleInput = (event) => {
1177
+ const target = event.target;
1178
+ this.internalValue = target.value;
1179
+ };
1180
+ handleFocus = async (type, event) => {
1181
+ this.focused = type === 'focus';
1182
+ if (type === 'blur') {
1183
+ if (this.rules && this.rules.length > 0) {
1184
+ await this.formField?.sdValidate();
1185
+ }
1186
+ this.blur?.emit(event);
1187
+ }
1188
+ else {
1189
+ this.focus?.emit(event);
1190
+ }
1191
+ };
1192
+ render() {
1193
+ const cssVars = {
1194
+ '--sd-textarea-font-size': `${TEXTAREA_TOKENS.fontSize}px`,
1195
+ '--sd-textarea-line-height': `${TEXTAREA_TOKENS.lineHeight}px`,
1196
+ '--sd-textarea-font-weight': TEXTAREA_TOKENS.fontWeight,
1197
+ '--sd-textarea-padding-x': `${TEXTAREA_TOKENS.paddingX}px`,
1198
+ '--sd-textarea-padding-y': `${TEXTAREA_TOKENS.paddingY}px`,
1199
+ '--sd-textarea-radius': `${TEXTAREA_TOKENS.radius}px`,
1200
+ '--sd-textarea-text-color': TEXTAREA_COLORS.text.default,
1201
+ '--sd-textarea-placeholder-color': TEXTAREA_COLORS.text.placeholder,
1202
+ '--sd-textarea-disabled-color': TEXTAREA_COLORS.text.disabled,
1203
+ '--sd-textarea-bg-color': TEXTAREA_COLORS.bg.default,
1204
+ '--sd-textarea-disabled-bg-color': TEXTAREA_COLORS.bg.disabled,
1205
+ '--sd-textarea-border-color': TEXTAREA_COLORS.border.default,
1206
+ '--sd-textarea-resizer-color': TEXTAREA_COLORS.resizer.color,
1207
+ // sd-field 시스템 변수 override (textarea는 고정 높이가 아닌 auto)
1208
+ '--sd-system-size-field-sm-height': 'auto',
1209
+ '--sd-system-radius-field-sm': `${TEXTAREA_TOKENS.radius}px`,
1210
+ };
1211
+ return (index.h("sd-field", { key: '3c5bd837d531d12fb0c7c4a80845752f9708f633', 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: '4bc1c0dad520d30f6758c057eecb25027aaa6615', class: "sd-textarea__content" }, index.h("textarea", { key: 'cfe1004e8d765bd047f72642eb03b239059d7234', 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 }))));
1212
+ }
1213
+ static get watchers() { return {
1214
+ "value": [{
1215
+ "valueChanged": 0
1216
+ }],
1217
+ "internalValue": [{
1218
+ "internalValueChanged": 0
1219
+ }]
1220
+ }; }
1221
+ };
1222
+ SdTextarea.style = sdTextareaCss();
1223
+
1224
+ exports.sd_date_picker = SdDatePicker;
1225
+ exports.sd_date_range_picker = SdDateRangePicker;
1226
+ exports.sd_file_picker = SdFilePicker;
1227
+ exports.sd_input = SdInput;
1228
+ exports.sd_number_input = SdNumberInput;
1229
+ exports.sd_radio_group = SdRadioGroup;
1230
+ exports.sd_textarea = SdTextarea;